diff --git a/.gitignore b/.gitignore index dd366a369..7e797ed9f 100644 --- a/.gitignore +++ b/.gitignore @@ -17,5 +17,7 @@ env.ini /app/public/node_modules /public/install/lock config.test.yml +plugin/document +public/plugin/document plugin/document/kod/data/system plugin/document/kod/data/system/system_member.php \ No newline at end of file diff --git a/plugin/document/KodSdk.php b/plugin/document/KodSdk.php deleted file mode 100644 index eeebb246b..000000000 --- a/plugin/document/KodSdk.php +++ /dev/null @@ -1,170 +0,0 @@ -rootUrl . "?user/loginSubmit&login_token=%s", $loginToken); - return $url; - } - - /** - * 通过用户名获取AccessToke - * @param $user - * @return array - */ - public function getAccessToken($user) - { - $loginToken = base64_encode($user) . '|' . md5($user . $GLOBALS['config']['settings']['apiLoginTonken']); - $url = sprintf($this->rootUrl . "?user/loginSubmit&isAjax=1&getToken=1&login_token=%s", $loginToken); - $client = new \GuzzleHttp\Client(); - $response = $client->request('GET', $url); - //echo $response->getBody(); - $statusCode = $response->getStatusCode(); // 200 - if ($statusCode != 200) { - return [false, 'response status:' . $statusCode]; - } - $bodyArr = json_decode($response->getBody(), true); - if (!$bodyArr['code']) { - return [false, "获取kod access token 失败\r\n" . $response->getBody()]; - } - return [true, $bodyArr['data']]; - } - - /** - name:demo1 //用户账号 - password:123456 //用户密码 - sizeMax:2 //用户空间大小设置 - role:2 //用户角色id - groupInfo:{"1":"write"} //用户所在部门及在部门对应的权限 - ---- - homePath:"D:/" //可选;自定义指定用户的根目录; - * @return array - */ - public function createUser($dataArr, $accessToken) - { - $url = sprintf($this->rootUrl . "?systemMember/add&accessToken=".$accessToken); - $client = new \GuzzleHttp\Client(); - $response = $client->request('POST', $url,['form_params' => $dataArr]); - $statusCode = $response->getStatusCode(); - if ($statusCode != 200) { - return [false, 'response status:' . $statusCode]; - } - $bodyArr = json_decode($response->getBody(), true); - if (is_null($bodyArr) || !$bodyArr['code']) { - return [false, "创建用户失败\r\n" . $response->getBody()]; - } - return [true, $bodyArr['data']]; - } - - /** - * @param $userName - * @param $accessToken - * @return array - */ - public function getUser($userName, $accessToken) - { - $url = sprintf($this->rootUrl . "?systemMember/getByName&name={$userName}&accessToken=".$accessToken); - $client = new \GuzzleHttp\Client(); - $dataArr['name'] = $userName; - $response = $client->request('POST', $url,['form_params' => $dataArr]); - $statusCode = $response->getStatusCode(); - if ($statusCode != 200) { - return [false, 'response status:' . $statusCode]; - } - $bodyArr = json_decode($response->getBody(), true); - if (!$bodyArr['code']) { - return [false, "获取用户{$userName}信息失败\r\n" . $response->getBody()]; - } - return [true, $bodyArr['data']]; - } - - /** - * @param $userId - * @param $accessToken - * @return array - */ - public function deleteUser($userId, $accessToken) - { - $url = sprintf($this->rootUrl . '?systemMember/doAction&accessToken='.$accessToken); - $client = new \GuzzleHttp\Client(); - $dataArr['action'] = 'del'; - $dataArr['userID'] = json_encode([$userId]); - $response = $client->request('POST', $url,['form_params' => $dataArr]); - $statusCode = $response->getStatusCode(); - if ($statusCode != 200) { - return [false, 'response status:' . $statusCode]; - } - $bodyArr = json_decode($response->getBody(), true); - if (!$bodyArr['code']) { - return [false, "删除用户失败\r\n" . $response->getBody()]; - } - return [true, $bodyArr['data']]; - } - - - /** - * @param $accessToken - * @return array - */ - public function getUsers($accessToken) - { - $url = sprintf($this->rootUrl . "?systemMember/get&accessToken=".$accessToken); - $client = new \GuzzleHttp\Client(); - $response = $client->request('GET', $url); - $statusCode = $response->getStatusCode(); - if ($statusCode != 200) { - return [false, 'response status:' . $statusCode]; - } - $bodyArr = json_decode($response->getBody(), true); - if (!$bodyArr['code']) { - return [false, "获取用户列表失败\r\n" . $response->getBody()]; - } - return [true, $bodyArr['data']]; - } - - public function getRoles($accessToken) - { - $url = sprintf($this->rootUrl . "?systemRole/get&accessToken=".$accessToken); - $client = new \GuzzleHttp\Client(); - $response = $client->request('GET', $url); - $statusCode = $response->getStatusCode(); - if ($statusCode != 200) { - return [false, 'response status:' . $statusCode]; - } - $bodyArr = json_decode($response->getBody(), true); - if (!$bodyArr['code']) { - return [false, "获取角色列表失败\r\n" . $response->getBody()]; - } - return [true, $bodyArr['data']]; - } - - -} \ No newline at end of file diff --git a/plugin/document/PluginSubscriber.php b/plugin/document/PluginSubscriber.php deleted file mode 100644 index 54e2f23f0..000000000 --- a/plugin/document/PluginSubscriber.php +++ /dev/null @@ -1,63 +0,0 @@ -pluginName = $pluginName; - // 载入事件订阅类和函数 - parent::getEventSubscriberFile(realpath(dirname(__FILE__)).DS.'event'); - parent::loadEventSubscriber($dispatcher, basename (__DIR__)); - } - - /** - * @return array - */ - public static function getSubscribedEvents() - { - return [ - basename (__CLASS__).'@'.\main\app\event\Events::onPluginInstall =>'onInstallEvent', - basename (__CLASS__).'@'.\main\app\event\Events::onPluginUnInstall =>'onUnInstallEvent' - ]; - } - - /** - * 插件安装后的操作 - * @param $pluginPlacedEvent - */ - public function onInstallEvent(PluginPlacedEvent $pluginPlacedEvent) - { - // var_dump($pluginPlacedEvent); - - } - - /** - * 插件卸载后的操作 - * @param $pluginPlacedEvent - */ - public function onUnInstallEvent(PluginPlacedEvent $pluginPlacedEvent) - { - // var_dump($pluginPlacedEvent); - } - - -} \ No newline at end of file diff --git a/plugin/document/common.function.php b/plugin/document/common.function.php deleted file mode 100644 index d8bcb0dc9..000000000 --- a/plugin/document/common.function.php +++ /dev/null @@ -1,1043 +0,0 @@ - newInstanceArgs($args); -} -/** - * 生产controller对象 - */ -function init_controller($controllerName){ - if (!class_exists($controllerName)) { - $modelFile = CONTROLLER_DIR.$controllerName.'.class.php'; - if(!is_file($modelFile)){ - return false; - } - include_once($modelFile); - } - $reflectionObj = new ReflectionClass($controllerName); - $args = func_get_args(); - array_shift($args); - return $reflectionObj -> newInstanceArgs($args); -} - -/** - * 文本字符串转换 - */ -function mystr($str){ - $from = array("\r\n", " "); - $to = array("
", " "); - return str_replace($from, $to, $str); -} - -// 清除多余空格和回车字符 -function strip($str){ - return preg_replace('!\s+!', '', $str); -} - -// 删除字符串两端的字符串 -function str_trim($str,$remove){ - return str_rtrim(str_ltrim($str,$remove),$remove); -} -function str_ltrim($str,$remove){ - if(!$str || !$remove) return $str; - while(substr($str,0,strlen($remove)) == $remove){ - $str = substr($str,strlen($remove)); - } - return $str; -} -function str_rtrim($str,$remove){ - if(!$str || !$remove) return $str; - while(substr($str,-strlen($remove)) == $remove){ - $str = substr($str,0,-strlen($remove)); - echo $str; - } - return $str; -} - -/** - * 获取精确时间 - */ -function mtime(){ - $t= explode(' ',microtime()); - $time = $t[0]+$t[1]; - return $time; -} -/** - * 过滤HTML - */ -function clear_html($HTML, $br = true){ - $HTML = htmlspecialchars(trim($HTML)); - $HTML = str_replace("\t", ' ', $HTML); - if ($br) { - return nl2br($HTML); - } else { - return str_replace("\n", '', $HTML); - } -} - -/** - * 过滤js、css等 - */ -function filter_html($html){ - $find = array( - "/<(\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%)([^>]*?)>/isU", - "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU", - "/javascript\s*:/isU", - ); - $replace = array("<\\1\\2\\3>","\\1\\2",""); - return preg_replace($find,$replace,$html); -} - - -function in_array_not_case($needle, $haystack) { - return in_array(strtolower($needle),array_map('strtolower',$haystack)); -} - -/** - * 将obj深度转化成array - * - * @param $obj 要转换的数据 可能是数组 也可能是个对象 还可能是一般数据类型 - * @return array || 一般数据类型 - */ -function obj2array($obj){ - if (is_array($obj)) { - foreach($obj as &$value) { - $value = obj2array($value); - } - return $obj; - } elseif (is_object($obj)) { - $obj = get_object_vars($obj); - return obj2array($obj); - } else { - return $obj; - } -} - -function ignore_timeout(){ - @ignore_user_abort(true); - @ini_set("max_execution_time",48 * 60 * 60); - @set_time_limit(48 * 60 * 60);//set_time_limit(0) 2day - @ini_set('memory_limit', '4000M');//4G; -} - - -function check_code($code){ - ob_clean(); - header("Content-type: image/png"); - $width = 70;$height=27; - $fontsize = 18;$len = strlen($code); - $im = @imagecreatetruecolor($width, $height) or die("create image error!"); - $background_color = imagecolorallocate($im,255, 255, 255); - imagefill($im, 0, 0, $background_color); - for ($i = 0; $i < 2000; $i++) {//获取随机淡色 - $line_color = imagecolorallocate($im, mt_rand(180,255),mt_rand(160, 255),mt_rand(100, 255)); - imageline($im,mt_rand(0,$width),mt_rand(0,$height), //画直线 - mt_rand(0,$width), mt_rand(0,$height),$line_color); - imagearc($im,mt_rand(0,$width),mt_rand(0,$height), //画弧线 - mt_rand(0,$width), mt_rand(0,$height), $height, $width,$line_color); - } - $border_color = imagecolorallocate($im, 160, 160, 160); - imagerectangle($im, 0, 0, $width-1, $height-1, $border_color);//画矩形,边框颜色200,200,200 - for ($i = 0; $i < $len; $i++) {//写入随机字串 - $text_color = imagecolorallocate($im,mt_rand(30, 140),mt_rand(30,140),mt_rand(30,140)); - imagechar($im,10,$i*$fontsize+6,rand(1,$height/3),$code[$i],$text_color); - } - imagejpeg($im);//显示图 - imagedestroy($im);//销毁图片 -} - - -/** - * 计算N次方根 - * @param $num - * @param $root - */ -function croot($num, $root = 3){ - $root = intval($root); - if (!$root) { - return $num; - } - return exp(log($num) / $root); -} - -function add_magic_quotes($array){ - foreach ((array) $array as $k => $v) { - if (is_array($v)) { - $array[$k] = add_magic_quotes($v); - } else { - $array[$k] = addslashes($v); - } - } - return $array; -} -// 字符串加转义 -function add_slashes($string){ - if (!$GLOBALS['magic_quotes_gpc']) { - if (is_array($string)) { - foreach($string as $key => $val) { - $string[$key] = add_slashes($val); - } - } else { - $string = addslashes($string); - } - } - return $string; -} - - -function setcookie_header($name,$value='',$maxage=0,$path='',$domain='',$secure=false,$HTTPOnly=false){ - if ( !empty($domain) ){ - if ( strtolower( substr($domain, 0, 4) ) == 'www.' ) $domain = substr($domain, 4); - if ( substr($domain, 0, 1) != '.' ) $domain = '.'.$domain; - if ( strpos($domain, ':') ) $domain = substr($domain, 0, strpos($domain, ':')); - } - header('Set-Cookie: '.rawurlencode($name).'='.rawurlencode($value) - .(empty($domain) ? '' : '; Domain='.$domain) - .(empty($maxage) ? '' : '; Max-Age='.$maxage) - .(empty($path) ? '' : '; Path='.$path) - .(!$secure ? '' : '; Secure') - .(!$HTTPOnly ? '' : '; HttpOnly').'; ', false); - return true; -} - -/** - * hex to binary - */ -if (!function_exists('hex2bin')) { - function hex2bin($hexdata) { - return pack('H*', $hexdata); - } -} - -if (!function_exists('gzdecode')) { - function gzdecode($data){ - return gzinflate(substr($data,10,-8)); - } -} - -function xml2json($decodeXml){ - $data = simplexml_load_string($decodeXml,'SimpleXMLElement', LIBXML_NOCDATA); - return json_decode(json_encode($data),true); -} - -/** - * 二维数组按照指定的键值进行排序, - * - * @param $keys 根据键值 - * @param $type 升序降序 - * @return array - * $array = array( - * array('name'=>'手机','brand'=>'诺基亚','price'=>1050), - * array('name'=>'手表','brand'=>'卡西欧','price'=>960) - * ); - * $out = array_sort_by($array,'price'); - */ -function array_sort_by($records, $field, $reverse=false){ - $reverse = $reverse?SORT_DESC:SORT_ASC; - array_multisort(array_column($records,$field),$reverse,$records); - return $records; -} - -if (!function_exists('array_column')) { - function array_column($array, $column_key, $index_key = null) { - $column_key_isNumber = (is_numeric($column_key)) ? true : false; - $index_key_isNumber = (is_numeric($index_key)) ? true : false; - $index_key_isNull = (is_null($index_key)) ? true : false; - - $result = array(); - foreach((array)$array as $key=>$val){ - if($column_key_isNumber){ - $tmp = array_slice($val, $column_key, 1); - $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null; - } else { - $tmp = isset($val[$column_key]) ? $val[$column_key] : null; - } - if(!$index_key_isNull){ - if($index_key_isNumber){ - $key = array_slice($val, $index_key, 1); - $key = (is_array($key) && !empty($key)) ? current($key) : null; - $key = is_null($key) ? 0 : $key; - }else{ - $key = isset($val[$index_key]) ? $val[$index_key] : 0; - } - } - $result[$key] = $tmp; - } - return $result; - } -} - -/** - * 遍历数组,对每个元素调用 $callback,假如返回值不为假值,则直接返回该返回值; - * 假如每次 $callback 都返回假值,最终返回 false - * - * @param $array - * @param $callback - * @return mixed - */ -function array_try($array, $callback){ - if (!$array || !$callback) { - return false; - } - $args = func_get_args(); - array_shift($args); - array_shift($args); - if (!$args) { - $args = array(); - } - foreach($array as $v) { - $params = $args; - array_unshift($params, $v); - $x = call_user_func_array($callback, $params); - if ($x) { - return $x; - } - } - return false; -} -// 求多个数组的并集 -function array_union(){ - $argsCount = func_num_args(); - if ($argsCount < 2) { - return false; - } else if (2 === $argsCount) { - list($arr1, $arr2) = func_get_args(); - - while ((list($k, $v) = each($arr2))) { - if (!in_array($v, $arr1)) $arr1[] = $v; - } - return $arr1; - } else { // 三个以上的数组合并 - $arg_list = func_get_args(); - $all = call_user_func_array('array_union', $arg_list); - return array_union($arg_list[0], $all); - } -} -// 取出数组中第n项 -function array_get_index($arr,$index){ - foreach($arr as $k=>$v){ - $index--; - if($index<0) return array($k,$v); - } -} - -function array_field_values($arr,$field){ - $result = array(); - foreach ($arr as $val) { - if(is_array($val) && isset($val[$field])){ - $result[] = $val[$field]; - } - } - return $result; -} - -// 删除数组某个值 -function array_remove_value($array, $value){ - $isNumericArray = true; - foreach ($array as $key => $item) { - if ($item === $value) { - if (!is_int($key)) { - $isNumericArray = false; - } - unset($array[$key]); - } - } - if ($isNumericArray) { - $array = array_values($array); - } - return $array; -} - -// 获取数组key最大的值 -function array_key_max($array){ - if(count($array)==0){ - return 1; - } - $idArr = array_keys($array); - rsort($idArr,SORT_NUMERIC);//id从高到底 - return intval($idArr[0]); -} - -//set_error_handler('errorHandler',E_ERROR|E_PARSE|E_CORE_ERROR|E_COMPILE_ERROR|E_USER_ERROR); -register_shutdown_function('fatalErrorHandler'); -function errorHandler($err_type,$errstr,$errfile,$errline){ - if (($err_type & E_WARNING) === 0 && ($err_type & E_NOTICE) === 0) { - return false; - } - $arr = array( - $err_type, - $errstr, - //" in [".$errfile.']', - " in [".get_path_this(get_path_father($errfile)).'/'.get_path_this($errfile).']', - 'line:'.$errline, - ); - $str = implode(" ",$arr)."
"; - show_tips($str); -} - -//捕获fatalError -function fatalErrorHandler(){ - $e = error_get_last(); - switch($e['type']){ - case E_ERROR: - case E_PARSE: - case E_CORE_ERROR: - case E_COMPILE_ERROR: - case E_USER_ERROR: - errorHandler($e['type'],$e['message'],$e['file'],$e['line']); - break; - case E_NOTICE:break; - default:break; - } -} - -function show_tips($message,$url= '', $time = 3,$title = '',$exit = true){ - ob_get_clean(); - header('Content-Type: text/html; charset=utf-8'); - $goto = "content='$time;url=$url'"; - $info = "{$time}s 后自动跳转, 立即跳转"; - if ($url == "") { - $goto = ""; - $info = ""; - } //是否自动跳转 - - if($title == ''){ - $title = "出错了!"; - } - //移动端;报错输出 - if(isset($_REQUEST['HTTP_X_PLATFORM'])){ - show_json($message,false); - } - - if(is_array($message) || is_object($message)){ - $message = json_encode_force($message); - $message = htmlspecialchars($message); - $message = "
".$message.'
'; - }else{ - $message = filter_html(nl2br($message)); - } - if(file_exists(TEMPLATE.'common/showTips.html')){ - include(TEMPLATE.'common/showTips.html'); - if($exit){exit;} - } - echo<< - - - -
-
$title
-
$message
-
$info
-
- - -END; - if($exit){exit;} -} -function get_caller_info() { - $trace = debug_backtrace(); - foreach($trace as $i=>$call){ - if (isset($call['object']) && is_object($call['object'])) { - $call['object'] = " ".get_class($call['object']); - } - if (is_array($call['args'])) { - foreach ($call['args'] as &$arg) { - if (is_object($arg)) { - $arg = " ".get_class($arg); - } - } - } - $traceText[$i] = "#".$i." ".basename($call['file']).'【'.$call['line'].'】 '; - $traceText[$i].= (!empty($call['object'])?$call['object'].$call['type']:''); - if($call['function']=='show_json'){ - $traceText[$i].= $call['function'].'(args)'; - }else{ - if( $call['function'] == 'call_user_func_array' && - isset($call['args'][0][0]) && - is_object($call['args'][0][0])){ - unset($call['args'][0][0]); - } - $traceText[$i].= $call['function'].'('.json_encode($call['args'],true).')'; - } - } - unset($traceText[0]); - $traceText = array_reverse($traceText); - return $traceText; -} - - - -// 去除json中注释部分; json允许注释 -// 支持 // 和 /*...*/注释 -function json_comment_clear($str){ - $result = ''; - $inComment = false; - $commentType = '//';// /*,// - $quoteCount = 0; - $str = str_replace(array('\"',"\r"),array("\\\0","\n"),$str); - - for ($i=0; $i < strlen($str); $i++) { - $char = $str[$i]; - if($inComment){ - if($commentType == '//' && $char == "\n"){ - $result .= "\n"; - $inComment = false; - }else if($commentType == '/*' && $char == '*' && $str[$i+1] == '/'){ - $i++; - $inComment = false; - } - }else{ - if($str[$i] == '/'){ - if($quoteCount % 2 != 0){//成对匹配,则当前不在字符串内 - $result .= $char; - continue; - } - if($str[$i+1] == '*'){ - $inComment = true; - $commentType = '/*'; - $i++; - continue; - }else if($str[$i+1] == '/'){ - $inComment = true; - $commentType = '//'; - $i++; - continue; - } - }else if($str[$i] == '"'){ - $quoteCount++; - } - $result .= $char; - } - } - $result = str_replace("\\\0",'\"',$result); - $result = str_replace("\n\n","\n",$result); - return $result; -} -function json_space_clear($str){ - $result = ''; - $quoteCount = 0; - $str = str_replace(array('\"',"\r"),array("\\\0","\n"),$str); - for ($i=0; $i < strlen($str); $i++) { - $char = $str[$i]; - //忽略不在字符串中的空格 tab 和换行 - if( $quoteCount % 2 == 0 && - ($char == ' ' || $char == ' ' || $char == "\n") ){ - continue; - } - if($char == '"'){ - $quoteCount ++; - } - $result .= $char; - } - $result = str_replace("\\\0",'\"',$result); - return $result; -} - -function json_decode_force($str){ - $str = trim($str,''); - $str = json_comment_clear($str); - $str = json_space_clear($str); - - //允许最后一个多余逗号(todo:字符串内) - $str = str_replace(array(',}',',]',"\n","\t"),array('}',']','',' '),$str); - $result = json_decode($str,true); - if(!$result){ - //show_json($result,false); - } - return $result; -} -function json_encode_force($json){ - if(defined('JSON_PRETTY_PRINT')){ - $jsonStr = json_encode($json,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); - }else{ - $jsonStr = json_encode($json); - } - if($jsonStr === false){ - include_once(dirname(__FILE__)."/others/JSON.php"); - $parse = new Services_JSON(); - $jsonStr = $parse->encode($json); - } - return $jsonStr; -} - -/** - * 打包返回AJAX请求的数据 - * @params {int} 返回状态码, 通常0表示正常 - * @params {array} 返回的数据集合 - */ -function show_json($data,$code = true,$info=''){ - if($GLOBALS['SHOW_JSON_RETURN']){ - return; - } - $useTime = mtime() - $GLOBALS['config']['appStartTime']; - $result = array('code'=>$code,'use_time'=>$useTime,'data'=>$data); - if(defined("GLOBAL_DEBUG") && GLOBAL_DEBUG==1){ - $result['call'] = get_caller_info(); - } - if ($info != '') { - $result['info'] = $info; - } - ob_end_clean(); - if(!headers_sent()){ - header("X-Powered-By: kodExplorer."); - header('Content-Type: application/json; charset=utf-8'); - } - if(class_exists('Hook')){ - $temp = Hook::trigger("show_json",$result); - if(is_array($temp)){ - $result = $temp; - } - } - $json = json_encode_force($result); - if(isset($_GET['callback'])){ - if(!preg_match("/^[0-9a-zA-Z_.]+$/",$_GET['callback'])){ - die("calllback error!"); - } - echo $_GET['callback'].'('.$json.');'; - }else{ - echo $json; - } - if(!isset($GLOBALS['SHOW_JSON_EXIT']) || !$GLOBALS['SHOW_JSON_EXIT']){ - exit; - } -} - -function show_trace(){ - echo '
';
-	var_dump(func_get_args());
-	echo '
'; - echo get_caller_info(); - echo '
'; - exit; -} - -function file_sub_str($file,$start=0,$len=0){ - $size = filesize($file); - if($start < 0 ){ - $start = $size + $start; - $len = $size - $start; - } - $fp = fopen($file,'r'); - fseek($fp,$start); - $res = fread($fp,$len); - fclose($fp); - return $res; -} -function str2hex($string){ - $hex=''; - for($i=0;$iencode($data); - } - function json_decode($json_data,$toarray =false) { - $json = new Services_JSON(); - $array = $json->decode($json_data); - if ($toarray) { - $array = obj2array($array); - } - return $array; - } -} - -/** - * 去掉HTML代码中的HTML标签,返回纯文本 - * @param string $document 待处理的字符串 - * @return string - */ -function html2txt($document){ - $search = array ("']*?>.*?'si", // 去掉 javascript - "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记 - "'([\r\n])[\s]+'", // 去掉空白字符 - "'&(quot|#34);'i", // 替换 HTML 实体 - "'&(amp|#38);'i", - "'&(lt|#60);'i", - "'&(gt|#62);'i", - "'&(nbsp|#160);'i", - "'&(iexcl|#161);'i", - "'&(cent|#162);'i", - "'&(pound|#163);'i", - "'&(copy|#169);'i", - "'&#(\d+);'e"); // 作为 PHP 代码运行 - $replace = array ("", - "", - "", - "\"", - "&", - "<", - ">", - " ", - chr(161), - chr(162), - chr(163), - chr(169), - "chr(\\1)"); - $text = preg_replace ($search, $replace, $document); - return $text; -} - -// 获取内容第一条 -function match($content, $preg){ - $preg = "/" . $preg . "/isU"; - preg_match($preg, $content, $result); - return $result[1]; -} -// 获取内容,获取一个页面若干信息.结果在 1,2,3……中 -function match_all($content, $preg){ - $preg = "/" . $preg . "/isU"; - preg_match_all($preg, $content, $result); - return $result; -} - -/** - * 获取指定长度的 utf8 字符串 - * - * @param string $string - * @param int $length - * @param string $dot - * @return string - */ -function get_utf8_str($string, $length, $dot = '...'){ - if (strlen($string) <= $length) return $string; - - $strcut = ''; - $n = $tn = $noc = 0; - - while ($n < strlen($string)) { - $t = ord($string[$n]); - if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { - $tn = 1; - $n++; - $noc++; - } elseif (194 <= $t && $t <= 223) { - $tn = 2; - $n += 2; - $noc += 2; - } elseif (224 <= $t && $t <= 239) { - $tn = 3; - $n += 3; - $noc += 2; - } elseif (240 <= $t && $t <= 247) { - $tn = 4; - $n += 4; - $noc += 2; - } elseif (248 <= $t && $t <= 251) { - $tn = 5; - $n += 5; - $noc += 2; - } elseif ($t == 252 || $t == 253) { - $tn = 6; - $n += 6; - $noc += 2; - } else { - $n++; - } - if ($noc >= $length) break; - } - if ($noc > $length) { - $n -= $tn; - } - if ($n < strlen($string)) { - $strcut = substr($string, 0, $n); - return $strcut . $dot; - } else { - return $string ; - } -} - -/** - * 字符串截取,支持中文和其他编码 - * - * @param string $str 需要转换的字符串 - * @param string $start 开始位置 - * @param string $length 截取长度 - * @param string $charset 编码格式 - * @param string $suffix 截断显示字符 - * @return string - */ -function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true){ - if (function_exists("mb_substr")) { - $i_str_len = mb_strlen($str); - $s_sub_str = mb_substr($str, $start, $length, $charset); - if ($length >= $i_str_len) { - return $s_sub_str; - } - return $s_sub_str . '...'; - } elseif (function_exists('iconv_substr')) { - return iconv_substr($str, $start, $length, $charset); - } - $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; - $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; - $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; - $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; - preg_match_all($re[$charset], $str, $match); - $slice = join("", array_slice($match[0], $start, $length)); - if ($suffix) return $slice . "…"; - return $slice; -} - -// -----------------变量调试------------------- -/** - * 格式化输出变量,或者对象 - * - * @param args; - * 默认自动退出;最后一个参数为false时不退出 - */ - -function pr_replace_callback($matches){ - return "\n".str_repeat(" ",strlen($matches[1])*2).$matches[2]; -} -function pr(){ - ob_start(); - $style = ''; - - ob_start(); - $arg = func_get_args(); - $num = func_num_args(); - $exit = true; - for ($i=0; $i < $num; $i++) { - if($i == $num-1 && $arg[$i] == true){ - $exit = false; - } - var_dump($arg[$i]); - } - $out = ob_get_clean(); //缓冲输出给$out 变量 - $out = preg_replace('/=\>\n\s+/',' => ',$out); //高亮=>后面的值 - $out = preg_replace_callback('/\n(\s*)([\}\[])/','pr_replace_callback',$out); //高亮=>后面的值 - - $out = preg_replace('/"(.*)"/','"\\1"', $out); //高亮字符串变量 - $out = preg_replace('/\[(.*)\]/','[\\1]', $out); //高亮变量 - $out = preg_replace('/\((.*)\)/','(\\1)', $out); //高亮变量 - $out = str_replace(array('=>',"\n\n"), array('=>',"\n"), $out); - $keywords = array('array','int','string','class','object','null','float','bool'); //关键字高亮 - $keywords_to = $keywords; - foreach($keywords as $key => $val) { - $keywords_to[$key] = '' . $val . ''; - } - $out = str_replace($keywords, $keywords_to, $out); - echo $style.'
'.$out.'
'; - if ($exit) exit; //为真则退出 -} - -if(!function_exists('dump')){ - function dump(){call_user_func('pr',func_get_args());} -} - -function debug_out(){call_user_func('pr',func_get_args());} - -/** - * 取$from~$to范围内的随机数 - * - * @param $from 下限 - * @param $to 上限 - * @return unknown_type - */ -function rand_from_to($from, $to){ - $size = $to - $from; //数值区间 - $max = 30000; //最大 - if ($size < $max) { - return $from + mt_rand(0, $size); - } else { - if ($size % $max) { - return $from + random_from_to(0, $size / $max) * $max + mt_rand(0, $size % $max); - } else { - return $from + random_from_to(0, $size / $max) * $max + mt_rand(0, $max); - } - } -} - -/** - * 产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合 - * - * @param string $len 长度 - * @param string $type 字串类型:0 字母 1 数字 2 大写字母 3 小写字母 4 中文 - * 其他为数字字母混合(去掉了 容易混淆的字符oOLl和数字01,) - * @param string $addChars 额外字符 - * @return string - */ -function rand_string($len = 4, $type='checkCode'){ - $str = ''; - switch ($type) { - case 1://数字 - $chars = str_repeat('0123456789', 3); - break; - case 2://大写字母 - $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - break; - case 3://小写字母 - $chars = 'abcdefghijklmnopqrstuvwxyz'; - break; - case 4://大小写中英文 - $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - break; - default: - // 默认去掉了容易混淆的字符oOLl和数字01,要添加请使用addChars参数 - $chars = 'ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'; - break; - } - if ($len > 10) { // 位数过长重复字符串一定次数 - $chars = $type == 1 ? str_repeat($chars, $len) : str_repeat($chars, 5); - } - if ($type != 4) { - $chars = str_shuffle($chars); - $str = substr($chars, 0, $len); - } else { - // 中文随机字 - for($i = 0; $i < $len; $i ++) { - $str .= msubstr($chars, floor(mt_rand(0, mb_strlen($chars, 'utf-8') - 1)), 1); - } - } - return $str; -} - -/** - * 生成自动密码 - */ -function make_password(){ - $temp = '0123456789abcdefghijklmnopqrstuvwxyz'. - 'ABCDEFGHIJKMNPQRSTUVWXYZ~!@#$^*)_+}{}[]|":;,.'.time(); - for($i=0;$i<10;$i++){ - $temp = str_shuffle($temp.substr($temp,-5)); - } - return md5($temp); -} - - -/** - * php DES解密函数 - * - * @param string $key 密钥 - * @param string $encrypted 加密字符串 - * @return string - */ -function des_decode($key, $encrypted){ - $encrypted = base64_decode($encrypted); - $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, ''); //使用MCRYPT_DES算法,cbc模式 - $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); - $ks = mcrypt_enc_get_key_size($td); - - mcrypt_generic_init($td, $key, $key); //初始处理 - $decrypted = mdecrypt_generic($td, $encrypted); //解密 - - mcrypt_generic_deinit($td); //结束 - mcrypt_module_close($td); - return pkcs5_unpad($decrypted); -} -/** - * php DES加密函数 - * - * @param string $key 密钥 - * @param string $text 字符串 - * @return string - */ -function des_encode($key, $text){ - $y = pkcs5_pad($text); - $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, ''); //使用MCRYPT_DES算法,cbc模式 - $ks = mcrypt_enc_get_key_size($td); - - mcrypt_generic_init($td, $key, $key); //初始处理 - $encrypted = mcrypt_generic($td, $y); //解密 - mcrypt_generic_deinit($td); //结束 - mcrypt_module_close($td); - return base64_encode($encrypted); -} -function pkcs5_unpad($text){ - $pad = ord($text[strlen($text)-1]); - if ($pad > strlen($text)) return $text; - if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text; - return substr($text, 0, -1 * $pad); -} -function pkcs5_pad($text, $block = 8){ - $pad = $block - (strlen($text) % $block); - return $text . str_repeat(chr($pad), $pad); -} \ No newline at end of file diff --git a/plugin/document/event/ProjectSubscriber.php b/plugin/document/event/ProjectSubscriber.php deleted file mode 100644 index 4d3b5ab63..000000000 --- a/plugin/document/event/ProjectSubscriber.php +++ /dev/null @@ -1,160 +0,0 @@ - 'onProjectCreate', - Events::onProjectUpdate => 'onProjectUpdate', - Events::onProjectDelete => 'onProjectDelete', - Events::onProjectArchive => 'onProjectArchive', - Events::onProjectRecover => 'onProjectRecover', - ]; - } - - /** - * @param CommonPlacedEvent $event - * @throws \Exception - */ - public function onProjectCreate(CommonPlacedEvent $event) - { - $pluginDataArr = $event->pluginDataArr; - $docAdmin = 'admin'; - $kodSdk = new KodSdk(); - $model = new UserMessageModel(); - list($ret, $accessToken) = $kodSdk->getAccessToken($docAdmin); - if(!$ret){ - $title = '项目创建提示'; - $content = '文档模块认证接口错误,请联系管理员'; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - list($ret, $kodUsers) = $kodSdk->getUsers($accessToken); - if(!$ret){ - $title = '项目创建提示'; - $content = '文档模块用户接口错误,请联系管理员'; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - if(count($kodUsers)>15){ - $title = '项目创建提示'; - $content = '文档模块数量限制,该项目不能使用了,请联系管理员'; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - $expectProjectDocUsername = 'project'.$pluginDataArr['id'];; - $dataArr = []; - $dataArr['name'] = $expectProjectDocUsername; - $dataArr['password'] = md5($expectProjectDocUsername); - $dataArr['sizeMax'] = 5; - $dataArr['role'] = 2; - $dataArr['groupInfo'] = json_encode(['1'=>'write']); - //$homePath = STORAGE_PATH.'document/'.$expectProjectDocUsername; - //@mkdir($homePath); - //$dataArr['homePath'] = $homePath; - list($ret, $msg) = $kodSdk->createUser($dataArr, $accessToken); - if(!$ret){ - $title = '项目创建异常'; - $content = '文档模块创建失败,请联系管理员,错误提示:'.$msg; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - // @todo 判断是否存在 - $projectPath = PRE_APP_PATH.'plugin/document/kod/data/User/'.$expectProjectDocUsername; - if(!file_exists($projectPath) || !file_exists($projectPath.'/data') || !file_exists($projectPath.'/home')){ - FileUtil::copyDir(PRE_APP_PATH.'plugin/document/kod/data/User/project0', PRE_APP_PATH.'plugin/document/kod/data/User/'.$expectProjectDocUsername); - } - - } - - /** - * @param CommonPlacedEvent $event - * @throws \Exception - */ - public function onProjectUpdate(CommonPlacedEvent $event) - { - - } - - /** - * @param CommonPlacedEvent $event - */ - public function onProjectDelete(CommonPlacedEvent $event) - { - $pluginDataArr = $event->pluginDataArr; - $projectUserName = 'project'.$pluginDataArr['id']; - $projectPath = PRE_APP_PATH.'plugin/document/kod/data/User/'.$projectUserName; - FileUtil::unlinkDir($projectPath); - $this->deleteKodUser($pluginDataArr); - } - - public function onProjectArchive(CommonPlacedEvent $event) - { - $pluginDataArr = $event->pluginDataArr; - $projectUserName = 'project'.$pluginDataArr['id']; - $projectPath = PRE_APP_PATH.'plugin/document/kod/data/User/'.$projectUserName; - FileUtil::moveDir($projectPath, $projectPath.'_archive'); - $this->deleteKodUser($pluginDataArr); - - } - - public function onProjectRecover(CommonPlacedEvent $event) - { - $pluginDataArr = $event->pluginDataArr; - $projectUserName = 'project'.$pluginDataArr['id']; - $projectPath = PRE_APP_PATH.'plugin/document/kod/data/User/'.$projectUserName; - FileUtil::moveDir($projectPath.'_archive', $projectPath, true ); - $this->deleteKodUser($pluginDataArr); - - } - - public function deleteKodUser($pluginDataArr) - { - $docAdmin = 'admin'; - $kodSdk = new KodSdk(); - $model = new UserMessageModel(); - list($ret, $accessToken) = $kodSdk->getAccessToken($docAdmin); - if(!$ret){ - $title = '项目删除提示'; - $content = '文档模块认证接口错误:'.$accessToken; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - $projectUserName = 'project'.$pluginDataArr['id']; - list($ret, $projectUser) = $kodSdk->getUser($projectUserName, $accessToken); - if(!$ret){ - $title = '项目删除提示'; - $content = '文档模块用户接口错误:'.$projectUser; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - list($ret, $msg) = $kodSdk->deleteUser($projectUser['userID'], $accessToken); - if(!$ret){ - $title = '项目删除提示'; - $content = '文档模块认证接口错误:'.$msg; - $model->setMsg2User(UserAuth::getId(), UserMessageModel::TYPE_SYSTEM, $title, $content); - return; - } - - } - - - -} \ No newline at end of file diff --git a/plugin/document/index.php b/plugin/document/index.php deleted file mode 100644 index d74d0409a..000000000 --- a/plugin/document/index.php +++ /dev/null @@ -1,140 +0,0 @@ -dirName = basename(pathinfo(__FILE__)['dirname']); - - // 当前插件的配置信息 - $pluginModel = new PluginModel(); - $this->pluginInfo = $pluginModel->getByName($this->dirName); - - $pluginMethod = isset($_GET['_target'][3])? $_GET['_target'][3] :''; - if($pluginMethod=="/" || $pluginMethod=="\\" || $pluginMethod==''){ - $pluginMethod = "pageIndex"; - } - if(method_exists($this,$pluginMethod)){ - $this->pluginMethod = $pluginMethod; - $this->$pluginMethod(); - } - } - - /** - * 插件首页方法 - * @throws \Exception - */ - public function pageIndex() - { - $data = []; - $data['title'] = '文档管理'; - $data['nav_links_active'] = 'plugin'; - $data['sub_nav_active'] = 'plugin'; - $data['plugin_name'] = $this->dirName; - $data['nav_links_active'] = 'document'; - $data = RewriteUrl::setProjectData($data); - $data['current_user'] = $user = UserModel::getInstance()->getByUid(UserAuth::getId()); - - if(!$data['project_id']){ - echo '获取项目id失败'; - return; - } - - $docAdmin = 'admin'; - $docPassword = 'admin'; - $kodSdk = new KodSdk(); - list($ret, $accessToken) = $kodSdk->getAccessToken($docAdmin); - if(!$ret){ - echo '文档模块集成失败, 请尝试给 plugin/document/kod 目录及子目录赋予读写权限'; - return; - } - list($ret, $kodUsers) = $kodSdk->getUsers($accessToken); - if(!$ret){ - echo '文档模块获取用户信息失败,请联系管理员'; - return; - } - list($ret, $kodRoles) = $kodSdk->getRoles($accessToken); - if(!$ret){ - echo '文档模块获取角色信息失败,请联系管理员'; - return; - } - $expectProjectDocUsername = 'project'.$data['project_id']; - $actUserArr = null; - foreach ($kodUsers as $kodUser) { - if($kodUser['name']== $expectProjectDocUsername){ - $actUserArr = $kodUser; - } - } - if(empty($actUserArr) ){ - if(count($kodUsers)>15){ - echo '已经超过了创建的限额,无法继续使用'; - return; - } - $dataArr = []; - $dataArr['name'] = $expectProjectDocUsername; - $dataArr['password'] = md5($expectProjectDocUsername); - $dataArr['sizeMax'] = 5; - $dataArr['role'] = 2; - $dataArr['groupInfo'] = json_encode(['1'=>'write']); - //$homePath = STORAGE_PATH.'document/'.$expectProjectDocUsername; - //@mkdir($homePath); - //$dataArr['homePath'] = $homePath; - list($ret, $msg) = $kodSdk->createUser($dataArr, $accessToken); - if(!$ret){ - echo '文档模块创建用户信息失败,请联系管理员,错误信息:'.$msg; - return; - } - list($ret, $userArr) = $kodSdk->getUser($expectProjectDocUsername, $accessToken); - $userPath = $expectProjectDocUsername; - if($ret && isset($userArr['path']) && !empty($userArr['path'])){ - $userPath = $userArr['path']; - } - $originPath = PRE_APP_PATH.'plugin/document/kod/data/User/'.$expectProjectDocUsername; - $projectPath = PRE_APP_PATH.'plugin/document/kod/data/User/'.$userPath; - if(!file_exists($projectPath) && !file_exists($projectPath.'/data') ){ - if(!file_exists($originPath)){ - FileUtil::copyDir(PRE_APP_PATH.'plugin/document/kod/data/User/project0', $projectPath); - } - } - if(file_exists($originPath)){ - FileUtil::copyDir($originPath, $projectPath); - } - - } - //base64Encode('admin')+'|'+md5('admin'+'aabbcckod') - require_once realpath(__DIR__) . '/kod/config/setting_user.php'; - $loginToken = base64_encode($expectProjectDocUsername).'|'.md5($expectProjectDocUsername.$GLOBALS['config']['settings']['apiLoginTonken']); - $iframeUrl = sprintf(ROOT_URL."kod_index.php?user/loginSubmit&login_token=%s", $loginToken); - $data['iframe_url'] = $iframeUrl; - $this->twigRender('index.twig', $data); - //header("location:/kod_index.php?user/login&kod=1"); - //require_once realpath(__DIR__).'/kod/index.php'; - //$this->phpRender('index.php', $data); - } - - -} diff --git a/plugin/document/install.sql b/plugin/document/install.sql deleted file mode 100644 index d7be4df35..000000000 --- a/plugin/document/install.sql +++ /dev/null @@ -1,2 +0,0 @@ - -# 安装插件是执行的sql文件 diff --git a/plugin/document/kod/ChangeLog.md b/plugin/document/kod/ChangeLog.md deleted file mode 100644 index 6f2efc8a2..000000000 --- a/plugin/document/kod/ChangeLog.md +++ /dev/null @@ -1,1627 +0,0 @@ -### ver4.40 `2019/3/21` ------ -#### update: -- 文件列表中文排序优化;中文、数字等组合按自然排序进行排列; -- 水印插件优化:分享文档水印显示分享者信息 -- 自定义桌面目录,可以指定桌面文件夹名称 -- 离线下载,http header兼容不标准的头处理。中文文件名自动识别优化。 -- 控制器自动路由,Hook加入重定向文件;方便插件整体替换某个控制器文件; - -#### fix bug -- 禁用预览权限,部分预览插件依然能预览问题处理;优化无权限时前端提示 -- 在部门中没有列目录权限时,打开首页报错优化处理【不显示内容,点击切换该目录时提示权限】 -- 用户管理部门文档权限时:不允许内部拖拽到外部; -- 分享文件夹,部分类型文件打开预览是报错处理 - - -### ver4.39 `2019/3/1` ------ -#### update: -- 桌面打开文件夹对话框,不同窗口文件相互剪切粘贴,自动同步窗口文件列表状态。 -- 解压到选择文件夹时;自动判断当前文件夹是否可写入;不可写则不可选择当前文件夹 -- 验证码固定为4位 - -#### fix bug -- 解决APP中文本文件预览问题 -- 桌面压缩文件解压功能异常问题修复; -- 桌面文件夹中含有#*&字符的文件夹,打开路径错误问题修复; - - -### ver4.38 `2019/2/25` ------ -#### update: -- 排序优化:文件夹列表,中文排序支持按拼音进行排序 -- 针对移动端APP进行兼容适配优化 -- 部门列表过多时,排序效率优化。 -- 新增hook点 -- 其他细节优化 - -#### fix bug -- https请求优化兼容 -- cad分享无法预览问题解决 - -### ver4.37 `2018/11/28` ------ -#### update: -- 大文件上传合并超时处理优化。 -- 右键菜单优化:切换列表模式、图标大小、排序方式不自动隐藏 -- 压缩文件时创建文件已存在则自动重命名 -- markdown工具设置支持多光标;加标签/取消标签 -- 编辑器光标位置记录支持前进后退 -- 移动端图片多选上传加入,去除针对ios 11 以前的兼容; -- 更新插件插件服务器兼容不支持访问https的情况 -- https页面不允许打开http页面的情况兼容,检测后对话框模式改为新窗口打开模式 - -#### fix bug -- zip查看大文件内容;部分文件名位置错位,中文乱码问题解决;(自动识别中文编码优化) -- bug处理:ltrim trim rtrim //参数是分割值字符,移除左侧所有;而不是移除左侧字符串; -- kod 永中office预览兼容; php curl上传的一个兼容性问题 -- kod 上传处理兼容( IIS 配置问题 IIS+PHP无法上传) -- zip解压缩:zip64打包兼容;解压兼容;压缩包内含有大于4G文件时处理优化; -- 上传失败提示优化;普通版本不检测空间大小 -- 分享文件夹,文件打开预览不了问题处理 - - - -### ver4.36 `2018/09/28` ------ -#### update: -- 上传加入断点续传,断点续传分片指纹提取算法优化,20倍速度提升;失败重传加入延时机制 -- 插件配置:文件选择组件支持配置参数;同文件选择组件参数;插件表单组件formMake增强 -- 断点续传分片重传加入延时;断网等类似情况下15s内自动上传 -- 通用前端worker调用支持 -- 分享的的失效时间是否可以设置到分钟 -- 分享后设置禁止下载,禁用打开方式等相关操作 -- https的curl请求加入ssl版本声明;兼容性调整 -- 移动端上传对话框样式优化 -- 用户使用空间大小变更优化 -- 子目录集成父部们权限优化 -- ios拍照上传失败问题; 图片或视频分片上传后重命名优化处理(用一个文件不同分片采用同一个文件名) -- ios上传视频多选;(非Safari的其他浏览器不支持多选,0B) -- 移动端管理菜单二级菜单点击展开异常问题;移动端touch事件穿透问题 -- 移动端文件管理菜部分单点区域击不响应问题处理; -- 细节样式等优化 -- 解压缩增强优化 - - zip64解压支持;支持解压超过4G的zip文件 - - zip文件查看,打开大文件内部列表处理采用worker处理;优化打开压缩文件内含有超多目录情况页面异步处理.优化操作体验 - - 压缩文件夹,文件夹内文件含有中文问题处理;自适应当前操作系统的中文编码 - - 压缩文件夹预览,没有写权限也允许查看(个人可查看部门压缩文件内容) - - 压缩文件夹解压权限优化(没有写权限的目录,不允许解压到该目录;公共目录下的压缩文件没有写权限不可解压) - -#### fix bug -- windows下中文搜索文件名编码问题处理 -- 文件选择组件,打开时将其他对话框确定按钮置disable处理 -- 上传过程中取消某个上传,没有终止问题处理; - - - -### ver4.35 `2018/09/5` ------ -#### update: -- 新建文件,不同排序字段及排序方式,新建文件插入位置优化。 -- 子目录集成副部们权限优化 -- 细节样式等优化 -- 兼容老版本(4.0一下)升级 - -#### fix bug -- 压缩文件夹预览,没有写权限也允许查看(个人可查看部门压缩文件内容) -- 压缩文件夹解压权限优化(没有写权限的目录,不允许解压到该目录;公共目录下的压缩文件没有写权限不可解压) -- 用户使用空间大小变更优化 - -### ver4.33 `2018/08/28` ------ -#### update: -- 选中内容,支持拖拽到左侧树目录:我的文档,公共网盘,收藏的文件夹,部门文档; -- 文件夹内内容项太多的情况下速度优化:自适应排序算法,移动端图片懒加载优化; -- 重命名同名文件大小写检测优化; -- 移动端分享支持; -- 样式细节优化; -- 上传超大文件性能优化处理; -- Hook调用加入死循环判断检测及提示; -- 文件夹上传或拖拽文件夹上传,超过1500个文件时提示压缩上传; -- 插件优化 - - 移动端分享等页面出现播放器的问题; - - 压缩文件打开,展示文件夹尺寸大小; - - office编辑保存接口处理; - -#### fix bug -- 带密码分享视频播放问题处理;; -- 中文搜索问题优化; -- 新建用户中文编码处理; -- 文件上传、复制粘贴、剪切粘贴、加压缩等操作使用存储空间大小更新; -- 选择拖拽松开后,打开其他文件,锁打开的内容对应不一致问题处理; -- 360等浏览器下载文件夹异常处理; -- 上传过程中服务器没有响应,客户端报错处理;上传提示优化处理,上传成功误判处理; - - - -### ver4.32 `2018/07/10` ------ -#### update: -- 修复vi语言多语言问题; -- 分享对话框加入二维码;分享页面加入二维码; -- 服务器兼容处理: 子目录绑定的服务器兼容问题处理;兼容前端、后端通用处理; -- IE兼容问题优化: 预览CAD报错问题处理, 视频播放问题;edge兼容性问题; -- 部分服务器上传合并失败问题兼容; -- 其他优化: - - adminer登陆状态处理; - - loading图片缓存处理,用户管理loading未加载问题 - - 服务器开启了php缓存时更新文件丢失问题; - - 编辑器文件预览出现函数列表异常 - - 压缩含有逗号的文件报错 - - 子目录绑定,浏览器打开文件、文件夹路径出错处理; - - 代理穿透访问时部分界面乱码问题解决 - - 音乐播放器,选中多个右键播放时含有已存在播放列表文件时加入列表失败问题. - -### ver4.30 `2018/07/05` ------ -#### update: -- 文件管理 - - 并发读写文件数据异常问题解决 - - 选中文件,自动出现快捷操作工具栏 - - icon列表模式,排序方式菜单按钮 - - 扩展名限制自动处理 - - 文档排序自然排序数字优化 - - 文件名结尾为空格时处理:文件操作、列表图标等处理 - - 正序倒序文件夹都在前面; - - 新建文件、文件夹;根据语言自动命名。 - - 新建office文档直接放在右键中;去除无关扩展名新建 【新建Word/Excle/PowerPoint 文档】 - - 优化所有文件小图标显示:文件列表、右键菜单、对话框标题、标签栏图标等 - - 文件、文件夹属性优化:文件大小优化,非管理员隐藏真实权限相关内容 - - 新建文件和新建文件夹时,不输入文件名称,提示创建文件/文件夹成功,实际上目录下未出现文件夹/文件 - - 文件搜索样式、筛选逻辑优化 -- 系统及用户管理优化 - - 壁纸管理优化:登陆背景管理、桌面壁纸管理; - - 记住密码优化本地存储;登陆密码传输加密 - - 用户管理支持批量设置用户空间大小 - - 用户昵称支持; - - 用户新建修改;部门新建修改、部门权限组新建修改、部门新建修改;名称不能为空格 - - 设置部门优化: 部门只展开第一层级;设置用户部门自动展开到对应层级 - - 部门编辑,添加自己到子部门排除检测; - - 系统管理员角色设置,隐藏设置项 - - 权限细节优化;部门下载权限,屏蔽相关入口(浏览器打开,zip文件内容下载) - - 批量添加用户有重复时,列表自动刷新处理; -- 上传优化: - - 文件分片上传速度优化 - - 上传对话框关闭继续后台上传,上传完成自动隐藏对话框 - - 上传是否成功大小校验,空文件上传处理,报错提示及报错相关优化。 - - 权限前置判断:没有部门上传权限提前判断,空间不足提前判断 - - 文件夹上传,部分文件上传到文件夹外面的问题; - - 文件大小为0时目录不存在则自动处理; -- 分享优化: - - 分享页面等打开方式统一优化处理,移动端打开方式按优先级处理;移动端office打开方式优化处理 - - 分享页面打印样式优化,针对文本、markdown专门处理 - - 加密码分享内容内部成员不可见; - - 系统设置关闭用户列表则不展示用户分享数据; - - 文件夹分享设置可上传,移动端没有上传处理 - - 分享文件重名时,文件预览打开方式关联失败;分享禁用下载时隐藏下载按钮;分享office支持onlyoffice预览; - - 移动端打开需要密码的分享页面,输入密码问题;微信中图片分享优化; - - 分享创建优化;加入快速复制分享链接;保存后自动关闭 -- 编辑器优化: - - 新增开发相关实用工具:插入时间;繁简转换;base64编解码;URL编解码;文字选中生成二维码;md5等 - - 新增自由计算功能(实时编译执行)。 - - 编辑器打开文件,编辑器对话框置顶; - - 编辑器着色优化;php格式化太长时优化处理。 - - 编辑器底部显示文件编码,点击切换、修改编码 - - 授权版:编辑器帮助中隐藏: 关于,了解更多 - - php格式化优化; - - markdown编辑右侧工具栏菜单展开按钮点击自动显示隐藏; - - markdown优化:打印样式处理;标题标签自动加入锚点跳转(分享页面、下载html统一处理) - - 编辑器自动保存支持;配置开关 - - 其他优化:tab新增右键新窗口打开;新打开时不显示帮助,入口可加到工具栏 -- API 功能接口增强 - - 文件选择API优化:自动筛选符合选择的内容(同时支持双击打开、右键操作);移动端优化;返回值功能增强 - - 支持通过用户名获取用户信息。 - - 通用文件预览组件,预览未知文件处理; - - hook绑定点加入show_json; -- 插件增强及优化 - - 插件更新红点提示,新增一键更新 - - 插件安装更新链接请求走后端,提升安全性 - - 插件安装卸载权限加入权限体系 - - ofd,djvu 文件格式支持在线预览。客户端实时渲染,支持文本选中复制。 - - 视频播放器新增内置Dplayer;体验优化,支持弹幕、支持自动挂载字幕; - - PSD/AI 等文件在线预览;视频缩略图生成;中文路径兼容linux,windows;检测问题提示;可执行文件可以手动指定; - - 永中officedoc预览大纲,打印;样式优化;点聚office编辑保存生成历史版本记录 - - 音乐播放有概率出现.mp3格式的音乐无法播放的情况,一直在缓冲中,重启打开一次后,音乐正常播放 - - office配置自适应ip、端口处理 - - 插件重新启用(或升级);配置数据还原的问题 - - PSD在线预览插件优化;安装部署教程 - - 域账户插件:支持数据库存储;默认存储 -- 其他优化: - - 界面样式诸多细节优化 - - 回收站文件右键菜单处理; - - 右键菜单小图标样式优化; - - 宽度不足时不显示文件选中时快捷菜单。 - - json_encode/json_decode 服务器兼容; - - 页面加载、对话框加载loading处理优化 - - nginx自目录绑定相关url不一致问题兼容;nginx反向代理端口、url等跳转问题兼容 - - 优化对话框弹出层,iframe全屏调用问题 - - 对话框中iframe加载持续未完成loading自动隐藏处理 - - 一键清理Win中文乱码问题,清空位置完善 - - 移动端菜单中加入剪切功能; - - https 优化; - -#### fix bug -- 搜索界面文件类型筛选条件不生效,筛选gif搜索了其他类型文件,文件类型筛选条件未生效 -- 新建部门创建文件夹从配置读取失败问题; -- 移动端上传取消提示文字优化 -- 编辑器对话框,未保存文件关闭提示; -- 多选打开文件,进入了打开方式 -- 移动端音乐播放界面最小化后,无法快速的恢复到窗口模式 -- 插件设置多次打开保存配置失败问题解决 -- 搜索文件内容报错问题,程序信息不显示任务栏,文件属性项目加入标记,文字修改:登陆==>登录; -- DIY主题样式显示问题; -- 搜索路径为空时优化处理,搜索文件内容json输出时乱码问题解决; -- 勾选用户所在部门窗口,权限组名长导致换行问题,支持放大缩小。 -- dockeroffice 重启脚本优化 -- 视频、psd等缩略图浏览器缓存处理 -- 浏览器兼容处理: - - Edge 浏览器样式优化处理 - - IE上传下拉菜单——上传文件item被隐藏了 - - IE上传进度条不匹配百分比问题 - - IE第二次双击打开视频,出现“没有支持此文件的应用” - - ios系统safari登录问题优化 - - - -### ver4.25 `2017/12/01` ------ -#### update: -- 文件通用选择,支持跨域,允许第三方调用 -- 部分服务器获取当前url异常情况兼容处理. -- tar解压,文件名过长兼容处理(路径大于100字符处理) -- 图片预览大图处理;生成多级缩略图 -- 权限组开启了文件下载权限,对应开启外链功能 -- ace更新到1.29,支持emoji;emmt扩展加载机制优化 -- 编辑器markdown多光标编辑,支持关联工具栏快捷功能 -- aero效果支持,登录界面优化 -- 其他优化:文件名超出部分...表示;正在上传、远程下载关闭页面提醒 - -#### fix bug -- 安全漏洞修复:文件越权读取漏洞紧急修复,iis6配置不当导致安全问题优化 -- 插件自动更新数据同步问题优化 -- 分享文件夹,编辑器打开页面,左侧文件夹展开目录异常问题;(没有上传权限==>不显示上传按钮) -- token错误:下载时、zip文件解压等; 压缩文件内图片预览不了问题 -- 压缩文件内文本文件预览;zip提示错误问题优化 -- 文件列表;内容含有乱码兼容处理(iconv报错优化) -- 全文搜索,中文截取导致json解析错误问题 -- 对话框隐藏对应没有tab时的处理 -- 打开方式界面css bug -- 登陆共享兼容data自定义目录 -- 文件输出缓存 etag优化 -- 其他:分享页面双击重命名屏蔽;markdown工具栏状态自适应;用户分享列表文件大小,navbar菜单新窗口打开问题 -- 移动端优化: - - 文件列表,展开操作时页面滚动问题;桌面宽度不足问题 - - 移动端菜单展开后没有自动收缩 - - 编辑器优化: 隐藏函数列表 - - 功能菜单放置在右下角; - - 电脑版切换放置在左侧弹出层中; - - 重命名文件只选中文件名部分; - - 加号菜单优化 - - iOS设备拍照上传自动重命名文件名 - - iOS 对话框含有iframe 时滚动条失效问题优化 - - 桌面开始菜单优化 - -### ver4.24 `2017/10/10` ------ -#### update: -- url获取服务器兼容性优化(sso部分使用) -- 部分特殊服务器环境兼容. - -#### fix bug -- 安全漏洞修复:文件越权读取、删除漏洞;getshell漏洞紧急修复 -- 服务器做了端口转发,url获取兼容性问题解决 -- 移动端优化:文件列表,展开操作时页面滚动问题;桌面宽度不足问题 -- 插件自动更新数据同步问题优化 -- 分享文件夹,编辑器打开页面,左侧文件夹展开目录异常问题;(没有上传权限==>不显示上传按钮) -- 其他优化:错别字更正; 移动端编辑器输入法出不来问题; - - - -### ver4.22 `2017/9/20` ------ -#### update: -- 压缩文件预览:tab栏中文问题;插件filePath文件名优化记录 -- 上传兼容性优化;支持自定义多线程上传,支持自定义是否二进制上传 -- 其他优化: iframe 点击事件冒泡到上级;编辑器主题黑色样式优化;树目录自动记录以及目录展开状态优化;文件大小逗号分隔; -- 图片缩略图缓存问题优化 -- 图片exif插件;图片预览时自动修正方向 -- ie8: 样式调整优化,js报错兼容优化 -- 文件夹双击事件优化:系统双击鼠标位置不懂情况下不触发双击事件问题 -- 文件保存插件挂载点 - -#### fix bug -- 桌面图片缩略图加载慢问题 -- 解压缩含中文路径优化 -- 移动端 - - 点击不了问题;右键菜单二级菜单无法点击问题 - - 移动端字体问题 - - - -### ver4.21 `2017/9/11` ------ -#### update: -- https服务器兼容性调整优化 -- 管理员查看群组;进入真实目录优化 -- 导航子菜单加入,插件支持添加自定义菜单 -- 部分主机session默认为memcache或user类型;兼容数据 - -#### fix bug -- 安全及性能优化 -- 编辑器部分国产浏览器中文输入多字符问题 -- 移动端 - - 去除鼠标提示title - - 点击菜单事件优化 - - 移动端视频文件图标问题 - - 导航菜单加入 - - -### ver4.1 `2017/9/5` ------ -#### update: -- markdown优化:新增绘图支持;加入流程图、时序图、甘特图、类图 -- 优化部分服务器rar解压缩,文件名或路径为中文名时解压没有内容情况 -- php7.1以上中文文件远程上传问题优化; -- 搜索内容自动填充到搜索对话框问题优化 -- 分享页面样式优化,文本分享移动端排版优化 - -#### fix bug -- 编辑器最大化工具菜单失去焦点问题;编辑器最大化后按钮不可点问题优化 -- 支持自定义指定host,避免反向代理导致部分主机请求异常问题 -- 部分https转发的网站,相关插件静态资源引用问题;支持指定网站host -- 分享文件夹含有密码移动端问题 -- chrome 下载文件名含有逗号下载失败问题 -- 文件api:压缩文件打开问题 -- markdown预览宽度- 分享文件夹指定了别名,文件打开不存在问题自适应 - - - - -### ver4.06 `2017/8/30` ------ -#### update: -- 新增用户数据自动备份; -- 部分服务器远程下载不支持,插件中心新增支持手动下载 -- 界面样式优化 -- 上传进度title实时更新 -- 移动端优化: - - 登陆页面登录框宽度固定; - - 图标宽度:设置;插件中心 - - 移动端头部菜单 - - 文件点击打开;菜单单独处理 - -#### fix bug -- 部分浏览器编辑器光标位置错位问题优化 -- Safari 编辑器中文输入问题优化 -- data目录被移走;sso登陆session目录不存在问题 -- 编辑器 space_table无法取消 -- session目录删除部分服务器不支持兼容(兼容mac) -- 非管理员分享文件夹,会出现分享全部文件的问题;文件打开提示不存在 -- 权限中禁用了编辑权限的用户不支持office文件编辑;分享不允许编辑office -- 拖拽组件(移动端单独处理=》touch 和mousedown冲突) - - -### ver4.05 `2017/8/26` ------ -#### update: -- 4.0稳定优化版 -- 登陆开放接口;优化提供认证登陆给其他程序优化 -- 开启/关闭 图片略缩图功能[] -- 图片幻灯片播放增强:支持文件列表、压缩文件内、搜索结构、编辑器树目录等同级目录的多张图片打开 -- 压缩文件内的压缩文件支持继续打开 -- 文件打开接口hook,target统一设置 -- 桌面图标大小和文件列表图标大小分开 -- 移动端: - - 拖拽兼容触摸事件;宽度调整;对话框拖拽 - - 弹出菜单,点击其他区域默认隐藏 - - 打开图片播放处理 - - 移动端返回:空路径 - - 底部版本展示优化,登陆页样式优化 - - title自适应优化 - -#### fix bug -- 修复头部导航栏下拉菜单被对话框挡住问题解决 -- photoSwipe 图片播放重复打开,蒙版没有消失问题 -- CAD预览水印显示登录信息; -- office在线编辑、授权用户的底部信息会丢失等问题修复 -- 桌面默认图标升级丢失问题 - - - - -### ver4.03 `2017/8/20` ------ -#### update: -- 全面插件化;系统开放性全面打通 - - 插件化:支持前后端各类开发扩展支持;简单友好强大的插件开发机制和特性 - - 全新插件中心;提供插件安装卸载;插件更新;插件开启关闭;插件配置;插件搜索等全系列功能 - - 插件通用配置组件集;很方便插件编写及自由配置;插件多语言自动支持 - - 插件权限处理——允许谁使用;支持用户、权限组、群组自由组合 - - 插件挂载点:可以无需修改kod源码从而实现任意功能的添加、修改。有效避免了版本更新导致的原有修改被覆盖。 - - 插件化后端挂载点 - - 可以挂载动作到每一个controller和方法入口,实现功能重定向或数据预处理 - - 模板挂载点 - - 通用前端js输出挂载点 - - 前端插件化挂载点 - - 各类右键菜单支持自由自定义和组合,方便轻易追加新功能 - - 文件列表加载、刷新、模式切换挂载点 - - Hook机制监听每个动作并可以做相应的相应 - - 通用文件选择框对外开放 - - 其他各个细节 - -- 默认内置插件 - - yzOffice: 永中office的在线office预览工具,无需服务器在外网,即可轻松实现office各类文件的预览和查看 - - zipView: 各类压缩文件打开预览、解压缩工具;压缩文件内的各类文件打开同样支持自定义打开方式;强大到无以复加 - - adminer:数据库管理工具;类似于phpmyadmin,但比他更轻量;同时不失强大 - - googleDocs: google开放的office等文件在线预览支持(程序需要部署在外网) - - jPlayer: 音乐视频html5播放器 - - officeLive: 微软提供的office在线文档预览接口;可以在线预览office系列文件(程序需要部署在外网) - - photoSwipe: 图片播放工具,非常适用于移动端 - - picasa: 图片播放工具 - - 更多插件可以通过插件中心自由安装,也可以自己开发提交到官方应用市场 - -- 文件打开方式自动关联 - - 配合插件关联的打开方式;自动关联不同类型文件的打开方式 - - 右键打开方式自由选择 - - 设置用户自己默认的打开方式 - - 没有关联的扩展名可以自己绑定指定应用,管理员可以搜索应用市场进行关联安装 - - 支持文件打开的插件,管理员可以在插件中心设置插件的优先级;更高的自定义 - - 文件打开在不同场景的支持 - - 分享文件夹; 文件预览;[image;media;oexe;word;cad;pdf;epub;html;text;unknow] - - 分享文件单页;[image;media;oexe;word;cad;pdf;epub;html;text;unknow] - - 压缩文件内预览: [image;media;pdf;oexe;word;cad;html;text;unknow] - -- 文件管理 - - 文件多选勾选框,可以左键多选或取消选择文件 - - 文件操作菜单入口按钮;右键菜单的快捷入口(树目录、文件列表都支持) - - windows下部分文件名特殊字符处理(新建、上传等文件含有特殊字符的集中处理) - - 文件列表图标模式间隙自动调整;flex自动均衡排版 - - 上传优化;支持base64直接构造上传; - - ctrl+v粘贴快捷键,检测到系统剪切板里面的图片,自动上传图片到当前位置 - - 文件管理工具栏,功能和菜单优化:新建和上传加入下拉菜单; - -- 编辑器优化 - - 编辑器加入手动指定以某种编码打开,转换为某种编码 - - markdown编辑,选择图片时提示权限错误问题修复;管理员获取更简化的url. - - markdown工具栏,部分浏览器兼容性调整 - - 编辑器:内容含有未知字符时,导致光标不正确问题修复 - - 编辑器底部菜单定位错误问题; - -- 移动端优化 - - 解决android下解压缩iconv转码失败问题;采用mb_string系列函数 - - 移动端地址栏宽度自适应 - - 移动端:图片打开title显示;切换目录关闭图片失败问题;大小自动获取 - - 界面样式优化;图标增强;点击反馈;样式优化 - - 新增文件九宫格排列方式 - - 文件预览:[image;media;oexe;word;cad;pdf;epub;html;text;unknow] - - 移动端底部版权:登陆页;内容页 - -- 文件通用预览打开接口 - - 压缩文件预览支持;[文件下载-->直接保存到文件,避免内存占用];压缩文件内预览文本-标题处理 - - 文本文件通用预览 - - 标题title统一为文件名 - - 插件文件参数统一处理 - - 指定应用打开 - - 通用预览插件调用认证;api.view pluginApp.to 权限处理 - - office文档保存接口- 移动端样式优化;新增图标模式 - -- 其他优化 - - 全文搜索不受限于文件编码(自动识别) - - 拖拽框选,当框超出可视区,滚动条自动滚动跟随 - - 图片缩略图失败则加载文件扩展名icon - - 多语言统一优化 - - 对话框控件最大化最小化优化; - - 对话框右键菜单处理;统一进行处理; - - 修复上传中文文件进度不显示问题 - - 修复上传https验证问题 - - 不支持gd;生成二维码调用第三方优化 - - 对话框最大化后浏览器调整大小 - - 轻应用分类支持自定义 - - 样式调整:系统设置用户群组选择;插件设置含有右侧按钮的input框加大;slider滑杆优化 - - ie8兼容插件 报错问题解决(arttemplate es5兼容性问题) - - bmp生成缩略图优化 - -#### fix bug -- 移动端打开未知文件,提示下载,access_token错误 -- 编辑器换行采用windows换行模式 \r\n;兼容记事本查看 -- 文件夹移动到自己的目录;导致丢失问题; -- 分享文件夹允许上传,远程下载时提示错误问题 -- 地址栏粘贴window路径兼容优化 C:\aaa\b 地址,转为/ -- 文件目录/重复时压缩zip丢失文件名解决. -- 按文件大小排序,部分情况排序错误问题 -- 系统设置:添加安全tab;dialog大小调整 -- 文件保存对话框dialog选择文件错误问题 -- gz文件解压;预览等支持;图标优化 -- 别人的共享:地址栏问题;是否存在展示问题 -- 群组设置成员只读——可以创建副本的bug -- Edge浏览器下载中文文件名乱码问题;压缩文件含有中文优化处理 - - - -### ver3.46 `2017/4/20` ------ -#### update: -- 图片预览:加入删除按钮;删除快捷键 -- 删除文档对话框样式优化 -- 0kb文件上传问题;【拖拽单文件,文件夹;选择文件,文件夹;】上传取消后上传失败优化 -- 普通用户压缩到tar,gz时路径问题解决 -- 部分服务器反向代理导致不支持csrf防护的,加入设置中手动开关 -- 右键文件夹打开:提示仅支持分享您自己的文档 -- 数据丢失:删除install.lock;重置admin密码;—— 新建用户 -- 分享文件夹预览:图片播放,不支持权限则隐藏对应功能;显示列表模式切换 -- 适配新浪sae虚拟主机. - -#### fix bug -- 文件外链打开下载文件名问题 -- 重命名状态,双击选择优化 - - -### ver3.45 `2017/4/9` ------ -#### update: -- 安全防护;全面防护csrf攻击;安全性提升。 -- 高并发下:用户数据文件读写异常处理 -- 上传优化: 文件权限设置644->755;大文件分片上传优化;ie浏览器兼容处理;上传失败自动重传机制加入 -- 文件编辑:换行切换为\r\n;兼容windows记事本;标签右键菜单图标样式问题 -- 工具栏——更多菜单加入:浏览器打开;图标优化;右键菜单二级菜单偶尔失去焦点情况处理 -- 远程下载优化:windows下载失败处理,优化多级301跳转文件下载;下载加入同域名referer; 断点续传优化;下载0Kb优化;不支持curl服务器优化; -- 对话框icon点击菜单,双击icon关闭 -- 分配了权限组添加用户权限:但提示没有权限。 -- 关闭了下载权限:允许文件预览、pdf、office预览等;屏蔽pdfjs上的下载按钮; -- 快捷键新增:shift+delete 直接删除;alt+enter查看文件属性;alt+left alt+right 历史记录前进后退; -- shift + 右键菜单彻底删除;删除提示加入文件名; -- 编辑器隐藏时;打开文件自动显示到最上层 -- 文件管理:复制快捷键允许冒泡;允许快捷键复制选中的文字 -- 壁纸自动下载文件夹放置在桌面下;桌面支持自定义中文文件夹 -- IE浏览器样式兼容性调整。 -- 文件右键——浏览器打开所有用户开启。 -- markdown预览优化:h1 下划线;预览最大化——禁用左右分栏;加入html转义 -- 服务端强制设置了cookie为httpOnly导致csrf-token获取失败问题兼容性调整;语言切换失败问题 -- 收藏夹树目录:文件夹右键菜单加入文件夹对应功能,不存在则红色显示;可以拖拽文件到收藏夹的文件夹 -- 其他细节优化:样式优化,win7主题播放器样式优化; -- php7 兼容性优化.部分版本php报错;token error问题 -- 设置加入: - - 自定义全局css|全局js[统计代码] - - 公共目录展示用户开关配置,默认展示所有用户; - - 授权用户:根目录是否组展示子组开关,默认不展示 - - 其他:清空缓存,清空所有用户回收站;自定义程序logo支持图片 -- 移动端优化: - - 上传窗口大小优化;移动端下载功能处理;iphone拍照上传文件自动重命名 - - 下拉菜单:新建文件加入;失去焦点隐藏; - - 分享目录支持上传:手机端功能加入 - - 分享文件夹搜索问题解决 - - 左侧目录目录列表和pc端一级目录统一 - - 分享页面文件打开未知文件,点击下载跳转到登陆页问题 - - android音视频播放优化,直接打开文件; - - android文件下载;文件名去除*filename - - 前进后端;后退到最后undefined检测。 -- 在线解压缩全面支持 - - 支持压缩为zip,tar,gz,tar.gz格式文件 - - 单选,多选右键菜单自动压缩指定内容 - - 右键菜单自动关联压缩文件:支持扩展名zip;tar;tar.gz,tgz,rar,7z,apk,ipa - - 压缩乱码解决:压缩包内中文跨系统支持自动识别,解压缩自动重命名为当前系统编码 - - rar解压支持rar5;mac系统解压缩支持作为插件单独存在; - - 在线预览 - - 支持zip,rar,7z,gz,tar,tgz等格式在线预览,在线解压; - - 自动编码识别:[gbk,utf-8];zip,tar,gz,tgz,rar,7z...;windows,linux(centos,debain) - - 文件列表;树目录,列表展开,中文编码自动识别 - - 浏览,文档属性查看,预览子文件,下载子文件,解压子文件,解压子文件夹,解压全部 - - 文件预览在:自己目录;自己分享;分享页面;别人的分享;群组文档;群组共享 - - 图片、媒体文件、pdf、flash、oexe、html - - 大于30m不直接预览,建议解压后预览;zip中含有zip则提示解压 - - token安全问题考虑:文本文件、office文件 - - 解压 - - 解压文件、文件夹到:当前目录,自定义目录; - - 文件管理解压后,刷新并自动选择内容;编辑器打开则刷新父目录 - - 场景和权限:当前目录不可写隐藏『解压到当前』;分享页面隐藏解压功能; -群组文档权限配置; - - 后端权限组安全性优化,简化逻辑流程 - - 群组角色管理:添加,编辑,修改,删除【隐藏&标签样式】 - - 设置用户群组角色:管理处label样式展示;下拉选择;多语言 - - 前端展示:树目录icon read&write区分弱化;地址栏后label展示为label样式;label显示隐藏统一优化 - - 没有权限优化:新建文件&新建文件夹&重命名文件; -- 运行异常检测并提示 - - 解压缩出错处理;不支持检测;shell_exec防注入处理 - - 函数检测 gzopen,gzinflate;[不支持则不能解压] - - js文件缺失报错提示; - - 文件夹乱码json输出,json_encode优化;允许未知编码文件输出 - - 当开启了php cache时更新不生效提示 - - 解压错误输出时避免输出真实目录 - - 打包编译优化:去除gzinflate调用;空间支持更广。 - - 扩展名没有权限的文件解压:不忽略——追加txt扩展名 - - 优化部分主机防火墙误判问题;(post 字段名不能含有list) net::ERR_CONNECTION_RESET - - 检测列目录速度慢问题优化 - - 授权版降级到免费版部分数丢失问题解决;本地授权写入到lib/core; - - 目录没有写权限,session不可写判断并做提示 - - 剩余空间样式优化:过少则提示 -#### fix bug -- 部分服务器下载中文文件,文件名乱码问题: -- cdn静态分离优化:播放器加载html跨站问题 -- 授权丢失:强制输入授权码页面 commonjs 加载变为页面问题 -- 修复safari音视频播放不了问题;下载断点续传逻辑优化 -- 多选右键操作;父子文件夹包含问题误判解决 -- 解压文件权限判断错误:压缩文件目录不可写,解压到某个文件夹可写 -- 手动覆盖更新update更新文件没有删除自己权限问题解决。 -- 多选下载加入防跨站请求token -- safari 搜索打开图片文件宽高为0问题解决 -- 共享页面打开pdf文件预览优化. - - -### ver3.41 `2017/3/5` ------ -#### update: -- 右键菜单图标优化 -- 移动端打开html直接浏览 -- 远程下载优化,不受限于服务器的超时设置,支持断点续传(需要下载的url支持) -- 为安全考虑,仅支持分享自己的文档;分享其他目录进行提示! -- 分片上传优化成0.8M -- 群组目录;群组分享目录;管理员或有权限访问读写权限统一处理 - -#### fix bug -- 部分windows服务器,数据写入失败问题解决 -- 分享分享过期判断处理 -- office预览弹出层打开。 -- 编辑器编码识别优化 -- 树目录删除文件提示文字信息有误问题 -- 修复右键菜单修改排序字段,排序方式时会有数据不完整情况。 -- 登陆界面忘记密码对话框挡住问题 -- 编辑器编码自动识别,编辑并保存兼容更多编码。 -- ie部分显示兼容问题优化 -- 旧版本3.22版本,windows服务器下升级不成功问题优化 - - -### ver3.38 `2017/3/1` ------ -#### update: -- 图片打开缩略图列表懒加载优化 -- 群组权限默认为可读写 - -#### fix bug -- 修复部分文本文件编码识别错误问题 -- 登陆重定向过多问题:session可写进一步判断。 -- 树目录新建文件夹取消再删除会删除home问题 -- 部分浏览器;编辑器选择内容时会全选问题 -- 分享页面音乐播放问题;视频播放title不全问题 -- 授权版组织架构不显示 -- 系统设置——错误提示位置问题,加入关闭按钮。 -- 移动端对话框绝对位置问题 -- 树目录文件名排序问题;排序模式优化(首次打开没有排序);收藏夹、组织架构不排序 -- office编辑保存权限处理;没有权限则只读 -- office在线编辑新页面打开,文件格式完善;分享页面&分享目录下文件预览; -- 上传大文件,同名文件处理策略没有按配置方式 -- 上传大文件断点续传优化;上传大文件有概率出现内容错误问题 -- 文件频繁读写内容出现异常的问题优化 -- 上传优化:滚动条自动滚动;全部取消-清空已完成 -- 已经授权的版本,文件分享页面版权修改提示误判 - - -### ver3.37 `2017/1/1` ------ -#### update: - - 部分主机兼容:不支持相对路径问题;iconv系统库补全兼容处理(压缩时压缩失败);不兼容777权限问题优化;incluce_once导致更新覆盖不了问题 - - 移动端优化;loading效果加入;移动端默认隐藏桌面;去掉title的hover效果 - - 桌面优化:自适应图标间隙高度;优化图标大小范围 - - 同名文件默认覆盖 - - 自定义公共目录名称:使用群组名称(如果name不等于public) - -#### fix bug - - 下载链接rewrite默认关闭;修复部分主机打不开pdf,office文档问题 - - 错误提示统一处理;超时时间优化;不再检测connected状态 - - 输出清空之前缓存(show_json,验证码,文件下载,显示模板) - - 用户管理界面:用户名宽度加宽;授权版支持批量添加用户 - - 自动更新优化,更新失败相应处理;util.js误判问题修复; - - 前端处理 app_host;web_host兼容部分反向代理设置;上传等问题解决 - - -### ver3.36 `2016/12/31` ------ -#### update: -- UI样式各个细节兼容性调整;ie8图标优化;移动端样式优化;右键二级菜单位置优化(点不到问题) -- 文件(夹)可读写检测兼容性增强;兼容docker、虚拟机挂载目录读写判断 -- 大于4G文件大小获取错误;下载失败问题 -- 移动到回收站——window文件夹新建特殊字符处理;文件名不允许字符检测 win,linux各自检测;群组文件删除,移动到自己的回收站; -- 剪切文件夹,数据不完整处理(遍历问题,删除文件夹导致遍历中断) -- 文件上传分片大小默认设定,可以自定义上传分片大小;提高上传超大文件的成功率 -- 文件夹拖拽上传,文件夹含超过100个时丢失问题;(文件夹内含有软连接会忽略) -- 分享——文件属性(md5懒加载;图片尺寸查看) -- 下载链接优化,采用类伪静态地址;第三方软件下载时文件名能更友好 -- 通用音效设置处理,增加用户设置开关,默认关闭 -- 视频播放自适应宽度高度 -- 文件打开历史记录:不存在时自动关闭标签;浏览器用户数据存储——区分用户id[] -- 输出缓冲区统一处理,兼容下载文件等操作含BOM的影响; -- 分享页面多语言设置 -- 游客打开pdf问题优化,移动端打开pdf自适应优化 -- 扩展应用;应用中心样式修复;ie11新建应用导致丢失问题;含双引号的应用无法添加问题; -- 应用编辑,增加首次打开全屏选项;全屏应用取消全屏大小调整优化 -- 双击文件名重命名功能加入 -- 时间戳统一成24小时制式 -- 文件下载优化: - - 中文文件下载win下文件名乱码修复; - - firefox下载文件,文件名含有空格截断问题 - - 下载大文件,兼容部分服务器反应慢问题;断点续传优化 -- 编辑器优化: - - php文件编辑注释错误;(php,js注释错误;css,html正确);自动补全 php-html-js-css; php--html_worker; - - 编辑器新增php代码格式化功能;(缩进处理,空白字符处理;) - - 编辑器关键字去掉加粗,优化部分浏览器光标问题 - - 中文文件打开乱码问题优化;utf8有bom及无bom、GBK,Unicode等文本编码自动识别 - - markdown快捷键只用于md模式中;markdown公式支持更新(编辑器;分享页面) -- 跨系统含中文,解压缩优化 - - win下压缩,上传到(linux/windows);解压自动识别编码 - - linux下压缩,上传到(linux/windows);解压自动识别编码 - - linux访问(linux/windows)服务器,下载文件夹压缩编码自动识别 - - windows访问(linux/windows)服务器,下载文件夹压缩编码自动识别 -- 自动更新优化 - - 升级失败问题优化 - - 用户组根目录home建立 - - 显示用户目录、显示用户组目录;中文处理(新建用户,删除) - - 去除代码加密;安全狗误报问题优化($_REQUEST['']) - - 禁止列目录检测 - -#### fix bug - - 编辑器:树目录多一个undefined问题 - - 文件(夹)移动、删除到回收站;————兼容不在同一个磁盘 - - 搜索:文字超出部分处理;未知文件打开下载不了问题修复 - - 用户组上传权限对管理员开启。虚拟目录读写权限判断优化 - - 登陆偶尔ajax报错;登陆页空flash闪烁 - - 对话框关闭,偶尔闪烁问题修复 - - 其他用户分享根目录不允许删除 - - 图片旋转,php环境不支持提示 - - - -### ver3.35 `2016/12/17` ------ -#### update: - - 文件管理新增及优化 - - 虚拟目录加入:用户根目录——回收站,我的共享,我的收藏,我所在的群组,全部群组;支持文件列表查看,支持收藏 - - zip解压缩跨平台中文乱码解决(解压时,支持自动识别压缩文件内部文件编码;压缩时自动判断浏览器编码自适应到中文) - - zip解压缩,新增支持解压到:当前文件夹,同名文件夹,指定选择文件夹 - - 同名文件处理 【上传、粘贴、拖拽;统一设定————重命名、覆盖、跳过;默认重命名(都保留)】 - - 文件列表显示,文件名、创建时间等宽度可以调节;服务端自动保存配置 - - 文件列表新增自然序排序;支持中文数字排序【更智能的文件排序,支持中文数字排序】[树目录&文件夹] - - 大目录分页加载支持【滚动到底部自动加载】,优化打开含有超过1万的文件及文件夹的目录:秒级打开 - - 文件列表图片懒加载;自动加载屏幕可视区内容。避免图片过多载入慢的情况;加载失败时再次尝试加载 - - 多选后右键加入 "复制到","移动到" 选择指定文件夹 - - 幻灯片播放:新增支持图片旋转功能;增加图片当前位置;加入全屏功能 - - pdf浏览支持html5方式 - - 文件icon优化:高清重置图标,支持retina;缩略图优化,支持超大图标;icon共享(文件图标,任务栏,树目录,编辑器,标题栏等) - - 系统图标:收藏、发送到快捷方式、地址栏;统一对应图标 - - 分享、快捷键等图标统一meta标签支持 - - 拖拽增强:新增拖拽到回收站——删除;拖拽到地址栏——复制or粘贴;拖拽到树目录——复制粘贴,ctrl拖拽复制到指定文件夹 - - 下载权限弱化:禁用下载权限后,任然可以获取文件内容,查看图片,pdf,视频,音乐等在线浏览功能 - - 树目录自动记录第一层级打开关闭状态;同时记录编辑器;文件打开对话框等 - - 新增状态栏:当前文件夹项目数、选中数展示 - - 文件属性,增加查看文件md5;图片文件支持查看图片尺寸;大文件md5延迟加载 - - 当前目录变更;左侧树目录对应状态选中;编辑器同理 (path相同则忽略——避免树目录多个存在) - - 文件管理菜单栏优化:功能下拉增加『加入到收藏夹』;自动针对当前目录类型,读写情况功能适配 - - 发送到桌面快捷方式:支持文件、文件夹、虚拟目录等创建桌面快捷方式 - - 收藏夹:添加取消收藏采用局部刷新;支持收藏文件、回收站、用户分享、群组等虚拟目录;对应不存在则提示 - - 收藏夹、全部群组、用户共享、自己的群组等虚拟目录的列表查看;和树目录展开保持一致;是否有子目录处理 - - 桌面优化:内容过多时允许滚动条;框选优化;捷键键问题修复,上下左右,shift Ctrl多选 - - 随机壁纸获取;精选壁纸;切换后自动下载到home/picture/wallpage 文件夹;兼容https - - 下载链接,分享链接;对话框内含iframe;加入二维码 - - 桌面回收站空&满,状态自动更新 - - 左侧树目录宽度修改后支持配置保存服务器 - - 打开文件夹管理时,焦点选择优化;快捷键等定位到当前焦点 - - 重命名或新建文件&文件夹,名称过长时高度自适应;新建文件、文件夹支持同名策略 - - 文件过多时,框选优化;自动滚动屏幕 - - 文件拖拽UI简化;多选拖拽对不同状态进行优化展示;动画效果加入 - - 框选优化:框选到某个元素弹起时该元素也选中;文件框选最后一个没有选中问题 - - 回收站,多选右键菜单不恢复问题;回收站删除问题。新增:加入文件右键——彻底删除; - - 文档目录发生变化(新建,删除);左侧目录自动更新; - - 树目录优化:文件夹有子目录没有展开选项;树目录展开文件夹loading状态优化;树目录icon优化;地址栏处理 - - 树目录创建副本问题:文件夹副本需要刷新父节点 - - 树目录优化:文件浏览则——单击打开该目录&双击展开收缩;文档编辑——单击则展开收缩 - - 解决树目录新建文件、文件夹时,该节点未展开时状态错误 - - 文档列表html模板简化啊,文件分离;优化图片picasa浏览 - - oexe图标问题;markdown pre 中文字体; - - 前进后退优化,改为客户端维持,多窗口独立自己的前进后退列表;前进后退历史记录问题处理 - - 权限提示优化:目录不可写or只读 菜单栏及右键菜单功能屏蔽;目录不存在时提示; - - 文件重命名支持大小写[mac-ok;linux,windows] - - 文件输出加入缓存机制;针对变化才重新输出 - - 文件下载优化:实时检测是否下载完成(兼容url读取一直没有中断问题) - - 拖拽:非文件、url、网页文件、文本【上传dialog——只有文件才处理;没有上传权限则不提示上传选项】 - - 非web目录,右键浏览器打开:给出提示 - - 新建文件&文件夹;自动滚动到可视区 - - 重命名:textarea双击——不再处理 - - 路径命名优化:支持%20、?、&、+ 等特殊字符 - - 文件管理快捷键优化:上下左右、上下翻页、shift组合选择。(解决判断快捷键焦点问题) - - 快速新建文件,网络访问慢导致文件重名问题解决。 - - 新建office文档;office文档预览(所有支持的列表);内网实现预览(服务端转换——pdf) - - 虚拟目录多选操作右键菜单:收藏夹;我所在的组、全部组;我的共享 - - 虚拟目录选中(多选)快捷键操作:屏蔽删除、复制、剪切、重命名 - - 文件图标排列时,高度自适应,文件名最高四行文字
;(桌面特殊处理);拖动到指定文件夹放大效果 - - xxs问题优化:文件名特殊处理,对应地址栏、树目录、重命名展示、分享等展示的地方统一做处理 - - 新建文件,重命名文件;(icon,自动高度后 优化;图标和列表模式) - - 不同类型目录之间切换:单选、多选;右键菜单还原(目录、回收站、分享目录、收藏夹、所有群组、我的群组等) - - 中文优化:win下分享含有中文问题;自定义用户目录中文等乱码问题解决 - - 时间戳统一成24小时制式 - - 文件列表模式增强: - - 支持含有子目录的文件夹多层级展开 - - 列表方式:含有双击展开的目录,没法展开&收回树目录 - - 刷新:记录上次展开内容(右键、新建、重命名后、删除后、解压缩、安装app、下载、上传--优化) - - 快捷键支持:上下选择,左右展开;ctrl+shift多选问题解决;框选 - - 跨目录多选后:移动;复制;剪切;压缩 [父文件夹及子目录都选择则移除子目录及文件] - - 内容过多加入展开全部查看——进入该目录 - - 文件分栏模式 - - 支持目录分栏模式,类似于mac系统的Finder管理 - - 分栏宽度可随意调节,并自动记录每一栏的宽度 - - 依次展开到多层,单击&双击--打开文件夹 - - 当前目录焦点自动切换,突出选中链路的层级关系;并根据当前目录特性更新右键菜单、工具栏。 - - 选择:上下选择,左右展开;ctrl+shift多选,支持跨目录选择;框选锁定在当前焦点目录 - - 刷新:刷新指定栏——获取所在栏(右键、新建、重命名后、删除后、解压缩、安装app、下载、上传--优化); - - 操作层级:始终在最后一个(G.thisPath);否则清除后面层级,(点击,层级点击,打开文件) - - 虚拟目录不允许拖拽(分享内容,回收站) - - 不允许拖拽到虚拟目录:收藏夹根目录;我所在的组;全部组;我的共享[允许:回收站、我的组] - - 我的收藏、回收站、我的共享等虚拟目录根目录文件列表右键菜单固定(split焦点切换时优化处理) - - 分享优化 - - 分享文件夹,支持设置可以允许别人上传【可用于提交作品】 - - 分享列表查看访问量,别人访问时浏览量记录 - - 分享页面、目录等细节调整,优化flash文件不显示问题 - - 分享目录,列表排序模式等客户端自动记录 - - 下载权限和预览权限弱化;【可以预览,但限制下载】 - - 自己共享、别人共享、群组空间、群组共享【对应右键菜单处理,菜单处理】 - - 分享根目录工具栏、右键菜单处理(区分自己和其他人); - - 自己的分享加入标签;默认直接分享(名称已存在则弹出层);——已分享则弹出编辑。 - - 分享时间上午下午未区分问题 - - 分享已存在,则自增文件名并创建 - - 分享已删除对应提示:该分享指向的文档不存在 - - 文件夹共享编辑器:同步界面及相关工具栏 - - 编辑共享:展示密码;过期时间 - - 用户分享目录处理;是否存在处理,查看二级目录path问题。 - - 分享优化:别人的分享目录:右键简化——编辑共享;取消共享 - - 播放器优化 - - 全新的视频播放器,支持格式:mp4,m4v,mov,ogv,webm,webmv,flv - - 全新的音乐播放器,支持格式:mp3,wav,m4a,aac,ogg,oga - - 支持html5及flash自动切换,ie8+,safari,firefox,chrome等主流浏览器 - - 视频播放,根据视频宽高自动调整尺寸; - - 音乐播放器支持音乐列表;多选文件,右键可添加到播放列表:视频自动过滤 - - 跨窗口播放;分享音乐视频文件页面适配 - - 移动端优化: - - 移动端支持和电脑端相互切换 - - 支持文件夹下载 - - 移动端搜索优化 - - 展示优化:时间处理,左侧路径完善 - - 图片显示缩略图 - - 图片幻灯片播放 - - 文件上传支持多选;上传ui优化。 - - 目录可读写区分;操作目录菜单根据可读写进行展示隐藏; - - 工具栏下拉菜单功能根据当前目录可读写进行展示隐藏; - - 文本文件打开则进入编辑状态 - - 上传优化 - - 修复上传时切换目录导致上传到其他地方问题 - - 客户端分片上传,不再受限于服务器各种配置限制;分片失败自动重传 - - 改进某个文件夹内容大于100个的限制;(文件夹内含有软连接会忽略) - - 支持断点上传(上传失败,浏览器刷新,即便是换电脑,只要是同一个文件,都会接着上次上传的位置继续上传。) - - 小于1k文件大小显示错误,解决大小为0文件上传失败问题 - - ie9+ 拖拽上传兼容性调整:未打开对话框时拖拽不生效问题 - - webkit内核浏览器支持文件夹拖拽直接上传(保持目录结构) - - 选择文件夹上传(支持webkit内核浏览器) - - flash上传失败问题;(采用分片上传),解决ie上传分片问题 - - 上传速度显示优化,进度精确到小数点后一位 - - 解决上传失败问题:拼接错误,百分比乱跳【nginx post限制——导致每个包都上传失败;配置最大上传分包】 - - 上传大小限制:用户&群组;空间大小记录&上限处理 【上传、远程下载、从回收站删除,剪切——粘贴(是否自己空间——加减)】——组没有回收站 - - 编辑器优化 - - 鼠标中键多光标选择,ctrl+shift+G多选模式 - - 中文全编码支持,告别乱码(自动识别编码,编辑后保持之前编码) - - 记录文件打开历史纪录:并自动打开;并按项目区分;新打开不存在则提示 - - 状态栏显示:当前行、列、选择时光标位置、多光标选择等、选中内容长度;切换语言高亮语法 - - 打开新文件时自动显示编辑器并提到最前面 - - 增加代码格式化功能【js,css,html,php 可以格式化选择部分;没有选中则格式化整个文档】 - - 函数列表匹配优化;全功能匹配php,javascript;支持快捷搜索;函数部分正则匹配卡死问题,增强函数匹配功能(js,c,php等) - - 支持扩展名增强;150种语言 - - 搜索优化;支持批量选择同时编辑(同sublime快捷键:ctrl+win+G) - - 代码主题切换,自动适应整个编辑器主题切换;风格融为一体 - - 工具支持:显示隐藏行号,功能扩展,转换为tab/space - - 修复chrome53以上中文输入错乱问题 - - 切换代码高亮风格,支持搜索快捷定位 - - 选中部分显示不可见字符(css文件内容优化) - - tab优化:文件类型图标展示;tab宽度自适应调整,新建关闭时动画展示;鼠标中键关闭 - - 中文异常换行问题(死循环问题) - - wrap自动换行后一行空位为初始行加上tableSize,底部高度优化 - - 调整窗口时;函数列表宽度固定(百分比计算) - - 多光标;中文输入丢失多光标状态问题;修复中文光标错位问题 - - 编辑器预览&函数列表每个多标签独立对应。保存修改刷新等加入独立loading - - 编辑器弹出层,标题显示当前文档名称;浏览器打开编辑器弹层&对应打开相应文件 - - html模式支持emmet,快速编码;编辑器底部加入空行 - - 代码自动补全支持php文件中 php css html等各自的代码混合补全 - - php文件,注释和取消注释和html混淆问题 - - php在线编程体验优化,支持所有php函数及关键字自动提示; - - 新建文件保存,选择保存位置并自动更新 - - 修复首次文件打开输入出现两次的bug - - 左侧树目录新建问题 - - 文件管理中编辑文件,最大化窗口编辑器最下面行遮挡住问题 - - 选择内容,鼠标移出浏览器事件依旧保持【解决窗口事件丢失问题】 - - 搜索增强,实时显示搜索结果数,及展示当前位置 - - 公共搜索框;多标签切换搜索数据自动重置(一次弹出,所有地方共用,搜索框对应编辑器尺寸变化;所有地方可以关闭) - - 搜索历史记录记住;(上下切换历史记录;开启搜索未选中词时,默认展示最后一次搜索内容;搜索历史记录下拉列表)[local_storage] - - 搜索设置配置保存 (正则;大小写;全词匹配) - - 文档含有引号创建快捷方式转义处理;打开文件dialog头部生成二维码连接及url处理 - - 解决部分apache配置原因导致php-mode.js加载失败问题 php-mode重命名为phhp-mode; - - API支持 - - 通用文件夹、文件选择弹框 - - 支持限定选择文件、文件夹或混合类型;支持限定文件扩展名 - - 支持单选、多选; - - 选中状态自动适应到界面;选中后通用回调 - - kod提供第三方应用同步登陆;支持指定用户名、用户组、权限组等方式登陆;其他系统能共享kod的登陆状态 - - 第三方可以通过api方式进行某个用户的自动登陆; 便于集成到另一个系统 - - 支持markdown - - 支持markdown文档实时编辑预览;导出网页文件;markdown文档分享则自动转换。 - - 自动开启预览;预览去除动画进出;函数列表自动开启关闭; - - 滚动条自动跟随;markdown全屏预览取消scroll跟随 - - LaTeX公式支持;行内公式、块级公式;高效率自动绘制;延迟解析 - - 根据编辑器主题自动生成对应的风格 - - markdown分享页面;TOC连接点击 - - markdown工具栏支持;插入图片支持从文件选择;自动生成图片外链 - - 搜索增强 - - 文件夹搜索,速度优化(先文件扫描);自动终止搜索(搜索时间计时;超过10s则提示;可取消搜索) - - 搜索列表:点击文件对应打开文件或文件夹;支持进入文件所在目录 - - 搜索文件内容,展示每个文件搜索到的项目,点击自动跳转到所在位置,并且可以继续搜索 - - 搜索文件新增全文搜索,支持罗列所有搜索项【对话框展示,搜索按行搜索,避免内存占用问题】 - - 搜索结果显示行数,点击能直接定位到指定位置。 - - 增加组织架构 - - 创建编辑用户组——父组,可以手动下拉树选择;添加用户选择组同一功能 - - 用户组管理:右键用户【查看,删除-禁用-启用;移除该组,权限设置为】 - - 用户多选批量【禁用,解除禁用;移动到组,添加到组,设置权限角色为,设置用户空间】 - - 权限设置:下载权限和预览权限分开。默认有预览权限、但没有下载权限//];下载统一不暴露url地址,path_id - - 支持用户、群组空间大小设置;用户&组空间使用情况; - - 支持自定义群组所在目录; - - 支持自定义用户所在目录; - - 其他优化 - - 全面适配htts; - - 增加win10主题;新增炫彩系列主题;用户也可以自定义主题风格 - - 炫彩主题增强:背景——渐变色配色 [开始颜色,终止颜色,旋转角度];背景图片——自定义;选择;跟随壁纸,是否模糊 - - 通用对话框优化:最大化、还原、最小化、显示、隐藏加入动画 - - 用户配置数据本地存储 localStorage cookie相互兼容 - - tips控件优化;tips允许重复;loading公用一个;统一后端错误提示 - - checkbox radiobox ui优化 - - 可以设置开启关闭回收站 - - 对话框事件焦点优化(打开多个文档管理,快捷键等响应到当前) - - 优化拖拽超出当前iframe或者浏览器后事件丢失问题【框选,选中拖拽,tab拖拽,dialog拖拽,editor选择等】 - - 更新播放器,拖拽进度条出错的问题。 - - 安装初始化用户目录及公共组:默认用户目录随机生成;【admin/demo/guest;public】;默认数据设为空;安装判空 - - 右键菜单优化:宽度自适应 - - 分组没有子目录则不显示组织架构【只显示公共目录】 - - 复制粘贴;来源和目标权限检测冲突解决。 - - 全面隐藏用户真实路径【回收站、树目录、搜索、共享目录查看、文件列表、浏览打开——只有管理员才有web目录结构————html打开等】 - - office预览如果是内网或domain不为外网 则提示购买【iframe——提示信息】 - - office 本地转换预览,office预览支持自定义 - - 应用列表:应用内容更新优化(不可访问部分删除) - - 权限分离:角色创建分离————编辑、删除、修改;添加用户限制不能是管理员[] - - 群组访问地址栏优化;tips;树目录及地址栏icon:访客,组用户只读,组用户读写 - - 群组不同权限的图标有所不同【不在组,在该组,组管理员】 - - 权限设置:去掉群组、用户管理配置; - - 域名转发:APPHOST兼容性调整 分享地址、文件属性打开地址等等 - - 允许在iframe下使用。【文本打开;setting;应用程序;artdialog.though】 - - 增加iframe下文件查看类型【type=explorer|file_list】//文档查看、文件列表 - - firefox:右键菜单子菜单问题;设置——用户管理弹出层尺寸拖动问题 - - 设置部分,后端模板文件处理成前端模板 - - 全局字体调整;用em作单位 - - 各种错误提示优化,更好的兼容php各种环境; - - 首次登陆目录不可写提示,登陆页面多语言选择 - - 登陆页面密码找回提示;管理员密码快速找回;
 - - 验证码复杂性增强 - - 没有GD库则【关闭验证码;图片直接输出-不生成缩略图】 - - 登陆:ajax方式(成功&失败)[失败原因码——验证码:换图片;输入框焦点设置] - -#### fix bug - - 重命名 textarea框过大问题 - - ie访问时,添加收藏夹含中文导致清空bug - - dialog 标题过长,导致大小错乱问题 - - oexe 重命名取消扩展名问题 - - 解决超过2G文件大小异常问题 - - 修复密码不支特"#"等殊字符问题 - - 键盘文件首字母快捷选择文件,bug修复。 - - ie 兼容问题。ie透明背景处理【css皮肤不加载-使用默认】 - - firefox兼容性优化:选中文件后拖拽问题(没有hover),插入style样式不生效问题 - - Safari兼容性优化:对话框打开尺寸错位问题;加载文件时loading位置问题 - - chrome兼容性优化:错位问题:编辑器开启搜索,当搜索不在屏幕区域会撑开头部,53版本编辑器输入中文问题解决 - - session 重定向循环问题 【本地session-cookie和服务端不一致】 - - ie8 兼容性优化 - - ie11重命名,点击input失去焦点。 - - ie中文文件(夹);收藏夹名称;用户名;xxs兼容性调整 - - 列表时文件夹展开图标不可见 - - split文件夹右侧图标不可见;点击展开无效 - - 拖拽时hover状态丢失; - - pie ie678界面兼容处理(圆角;background-size;透明度) - - - -### ver3.21 `2015/10/25` ------ -#### update: - - 编辑器函数列表匹配优化;底部高度优化 - - 文件文件夹属性:文件下载地址:下载临时地址【永久下载地址、临时下载地址】 - - 扩展名限制优化 - - 防止暴力请求 - - 远程下载优化,只产生一个临时文件;下载界面关闭则自动停止 - - 编辑器刷新功能 - - office预览支持自定义 - - 右键菜单优化:按钮下后松起在菜单上则触发对应动作(参考mac右键菜单处理) - - 移动端适配 - - 1.列出目录 - - 2.手机,pad打开页面时,默认进入手机版本 - - 3.菜单处理 - - 4.文件打开预览处理 - -#### fix bug - - 远程下载windows下重命名失败问题 - - 自动更新失败问题 - - 编辑器 中文光标错位问题 - - 修复https访问 - - ie8 登陆页面白色背景问题;(没有背景图片);桌面背景图片缩放问题 - - ie下载文件,中文文件urlencode问题(windows——服务器;浏览器——ie) - - 回收站非admin文件属性;路径隐藏 - - 文件夹权限修改bug - - 文件创建快捷方式打不开修复 - - 我的分享——图片不显示 - - window创建txt(GB2312)——utf8打开写入内容后上传——分享后打开url乱码 - - 清空上传列表(出错失败的清空不了) - - 修改密码、添加用户……data目录没有写权限出错提示 - - ie8 9上传失败问题 - - 火狐选中问题 - - 右键菜单分栏line导致右键菜单消失 - - 分享去掉jiathis - - 编辑器 左侧树目录新建问题 - - 重命名 textarea框过大问题 - - 目录分享:带有音乐文件,双击打开会有二次数据,导致无法播放 - - 视频播放关闭问题 - - -### ver3.12 `2015/3/31` ------ -#### update: - - 兼容ie中文,导致菜单保存丢失问题 - - 用户没有权限,提示优化 - - 用户配置数据保存,写入失败提示 - -#### fix bug - - 分享mp3,音乐播放路径问题 - - 火狐bug修复 - - 分享页面、文件夹;office预览问题 - - 编辑器 - 中文光标错位问题 - tab 宽度根据标签个数自动缩放(ie 火狐不兼容问题) - 当前文件路径对应到title; - 工具栏火狐兼容性bug - - -### ver3.1 `2015/3/26` ------ -#### update: - - 分享可以修改路径;避免文件移动后原始分享路径失效问题 - - 分享后自动刷新当前目录;跟新配置数据 - - 文件管理 当前文件夹不可写,对应右键菜单功能屏蔽 - -#### fix bug - - cookie自动登录失败,导致页面css丢失问题 - - cookie路径导致语言设置失败问题 - - 应用中心css丢失问题 - - 解压不了、权限验证过于严格问题 - - 左侧树目录被底部盖住问题 - - 分享office不能预览问题 - - 群组;群组列表选择错误 - - 菜单编辑中文部分乱码 - - 图片预览优化 - -### ver3.0 `2015/3/23` ------ -#### update: - - 文档分享[文件、文件夹分享;支持添加密码;文件分享支持多种格式在线预览] - - 回收站;(避免误删除) - - 系统设置(自定义程序的一些配置) - - 头部菜单管理 - - 文件夹下载,多选批量下载 - - 数据全面安全优化 - - 上传优化: - - 分片上传,不再受php.ini环境限制; - - 加入上传速度 - - 上传目录:随着当前目录变化而变化。 - - 上传完成可点击,进入文件所在目录 - - 界面简化(不显示切换到当前目录;保存路径不要,列表不自动删除;不需要最大化,以及调整窗口大小) - - 上传;总status ——放到标题栏 - - 大文件分片上传尝试(失败情况处理) - - 上传文件夹:不刷新f5 - 最后刷新 - - 显示文件名,大小; - - 允许重复文件上传 - - 上传前可以删除 - - 进图展示优化:显示文件大小、速度、完成进度 - - 编辑器: - - 编辑器 函数列表;c9 IDE;展示并定位;实时更新:php function、js:function - - 函数列表开启与关闭配置 - - php代码自动补全 缺少关键字部分 - - 下拉列表;点击其他地方则消失 - - 非txt则open;不能open则tips bindary:fla ...;右键加入:强制编辑 - - 字体优化 - - 修复github主题光标位置错位问题(选中、编辑都会出现) - - 离线下载优化:加入取消机制;避免持续执行;显示文件大小、速度、完成进度 - - 图片缓存,按照文件MD5来缓存;与路径无关 - - 文件列表,hover的title更多详细信息展示 - - 对话框,标题栏右键加入:刷新、新窗口打开 - - 对话框双击最大化、取消最大化(只对可以缩放的对话框有效) - - 对话框最大化、最小化对话框放大按钮图标改变 - - 权限前端验证(上传等 上传格式前端限制);前端检测 - 新建、上传、删除 - - 设置中心 - -用户管理 非管理员显示优化 - - 公共js部分采用动态调用方式;后续优化可由js完成前端MVC - - 文件、文件夹创建快捷方式 - - 文件夹创建工程项目 - - 未知文件打开提示、不自动下载 - - 右键菜单:加入字母快捷打开 - - 右键自适应:隐藏 - -zip - 视频;多选时:含有视频音频文件时才显示——加入播放列表 - - 右键触发到菜单上(暂时修改jquery-contentMenu 屏蔽右键按下移动触发菜单功能) - - 拖拽优化:框选、tasktap切换;选中其他文字问题;性能问题 - - 框选文件,超出屏幕则自定滚动选中;屏蔽文字可以被选中的问题 - - simple主题,界面UI优化 - - seajs text:tpl修改为html; - - 统一走proxy;隐藏真实地址;web_root,web_host, - - 统一proxy后,office打开权限问题解决:加密方式生成临时访问地址 - - 播放器更多格式支持:wmv、avi、mpg等 - -#### fix bug and 优化: - - win下 中文路径导致的问题处理 - - public中拖拽问题 复制粘贴问题 - - 桌面任务栏,右键菜单绑定丢失问题 - - 对话框,标题栏右键菜单不显示问题处理 - - 用户名支持中文 - - 密码含有特殊字符bug处理 - - 播放器解决第一次打开有时候无法播放的问题。 - - 桌面新建位置问题;列表在不同情况下新建问题。始终放在最后 - - firefox兼容性 mac兼容性;ie9 10兼容性; - - appstore 创建、修复只允许管理员操作,显示优化 - - app创建,js代码类型时,单引号导致不可用问题。 - - 循环跳转 session判断 if(!isset($_SESSION)){session_start();} - - win下 中文扩展名导致获取目录列表问题:扩展名获取优化 - - 编辑器保存 ajax 异步请求。loading - - 上传目录错误问题;(上传到了其他目录 ie8 中文) - - 优化mac下gd库支持 - - 窗口拖动到task之下,出不来问题。top大于一定值则锁定 - - 多个同域名;登录退出互不干扰 - - office变更 https://view.officeapps.live.com/op/view.aspx?src= - - appstore icon方式;默认减少; - - 列表模式:重命名oexe没修改但自动加入了;(oexe不显示) - - 非管理员,zip压缩导致文件名被截断问题修复;win-win 中文解压缩处理;mac-mac中文解压缩处理 - - 下载有BOM问题 - - wwwroot识别问题; - -#### fix bug 3.01 beta1: - - 新建用户下拉菜单出不来问题 - - 分享bug - - 设置中心:开启游客ui兼容性问题 - - demo用户 office预览————关闭了下载功能---tips - - 文件右键菜单:zip和浏览器打开替换 - - 公共目录public不显示 - - 分享打开后有错误;点击不了生成按钮 - - 默认开启下载权限 - - 分享者禁止了下载;下载功能---- - - 登录页面底部copyright隐藏 - - 管理目录 标题栏显示对应的文件夹名称 - - 根目录 继续上级则提示 - - 没有下载权限;前端验证 - - 修复分享打开后出现校验权限失败问题 - - 公共目录分享;树目录点击对应文件列表展示问题 - - 分享页面cookie存储配置问题 - - 分享页面:文件预览权限更随下载权限 - - 分享修改时覆盖前一个分享的问题 - - - -### ver2.8 `2014/11/23` ------ -#### update: - - 上传控件优化 - - 兼容性优化;支持ie8以上 - - 更新font-awesome到最新版本 -#### fix bug: - - 安全优化 - - 上传图片取消大文件压缩选项 - - 优化部分操作下显示问题 - - -### ver2.73 `2014/9/17` -#### fix bug: - - 安全优化补丁 - - -### ver2.72 `2014/9/16` -#### fix bug:(bug解决和程序优化) - - 任意执行:远程下载apache 扩漏洞:判断扩展名中是否含有.php. - - 不存在的用户 - - 桌面:开始按钮被tab盖住了 - - 主题切换,错位问题 - - 透明对话框拖动时 标题栏不显示问题 - -### ver2.71 `2014/8/31` ------ -#### update: - - 编辑器配置保存:文字大小、主题风格;主题修改 - - 精简初始桌面应用 - -#### fix bug:(bug解决和程序优化) - - 修改用户密码失败: - - 打开设置设置壁纸,关掉,再打开个人中心,桌面乱掉 - - 桌面开始菜单 最大化问题 - - 语言选择下拉菜单错位 - - 修改主题重叠问题 - - appstore 添加应用tips不见 - - -### ver2.7 `2014/8/25` ------ -#### update: - - 安全及性能优化 - - 静态文件加入?版本标识,版本更新后不缓存 - - webuploader 升级到0.14 优化部分上传问题 - - 错误级别:error_reporting(E_ERROR | E_WARNING); - - 地址栏(tab模式、编辑模式)两种模式宽度自适应 - - 自建office解析服务器配置 - - 最大化全屏 - -#### fix bug:(bug解决和程序优化) - - install 加入iconv、mbstring检测 - - 右键重命名 快捷键冒泡处理 - - 文件列表图片缩略图拖拽问题 - - 标题超出部分截取优化 - - 编辑器预览滚动条自适应 - - - -### ver2.61 `2014/7/12` ------ -#### update: - - 实时搜索,根据搜索框内容变化,实时选中匹配到的结果; - - 弹出搜索框遍历子文件夹递归搜索 - - session key 加入kod_前缀 避免和其他系统key冲突 - - 编辑器选中优化 选择鼠标到窗口外事件处理 - -#### fix bug:(bug解决和程序优化) - - backspace后退截获浏览器事件,作为后退前一次访问的文件夹; - - 搜索首字母不匹配问题 - - 弹出层中的弹出层关闭,父窗口失去焦点问题。 - - 代码中grunt部分代码拆分开,放到程序外面;提交到git、osc - - 桌面:删除alert enter快捷键删除 - - install 检测 加入跳过,(只判断用到的函数) 加入多语言 - - zip压缩没有权限 提示红色,false 统一查找 - - 登录成功后 验证码输错清除 - - 非root用户拖拽到文件夹问题 - - 非root解压问题 不能解压 - - list oexe 图标问题 - - 用户目录不存在判断 - - fileCahe 互斥锁 reset 不用 - - ie 8~10样式问题调整 - - -### ver2.6 `2014/7/6` ------ -#### update: - - 完全性优化;加入严格的校验机制 - - 首次运行环境检测[data目录检测,必须的函数支持提示] - - 上传已存在处理——创建副本(另外包括粘贴,解压) - - 选中优化 ctrl选中拖拽 - - 键盘快捷键选中文件,多个字符支持 - - 文件文件夹权限修改(右键——属性,即可修改) - - 对话框加入ico,对应任务栏 - - 右键等部分菜单效果优化 - - 远程下载加入进度条,下载速度等信息 - -#### fix bug:(bug解决和程序优化) - - 下载前判断当前目录可写 - - 文件扩展名处理,分为用户方式和扩展名权限方式 - - 上传结束提示:是否成功、失败原因 - - 上传扩展名限制 解决apache .php.*当做php执行bug - - 文件名非法字符限定 - - 树目录展开箭头状态修复 - - 树目录新建文件,没有子节点刷新bug解决 - - 文件大小为0上传不了问题 - - windows下进入某些系统文件夹死循环bug解决 - - tips 居中显示 - - 任务栏标签选中问题:已经显示且为交点窗口 点击——隐藏;否则——显示,并且置为焦点窗口 - - 拖入url ——oexe 新窗口打开 - - 选中文件时,移动到屏幕可视区域(解决上下左右选中文件滚动条不一致问题) - - -### ver2.51 `2014/6/22` ------ -#### fix bug:(bug解决和程序优化) - - - 登录多次密码输入错误验证码bug解决 - - 修复漏洞:创建副本加入权限控制。和拖文件拽权限一致 - - 文件上传失败检测 - - 树目录同步优化 - - -### ver2.5 `2014/6/15` ------ -#### update: - - 增加创建副本功能 按住ctrl拖拽即可,可以到当前,也可以到文件夹。 - - 多选拖拽优化:剪切到、移动到某个文件夹 - - 创建副本功能 - - 树目录和文件列表一致性保持 更新相互通知 - -#### fix bug:(bug解决和程序优化) - - 桌面重命名bug - - 统一对话框部分bug - - php notice 提示解决 - - ajax返回非json 则展示服务错误的返回 - - 所有入口都加入kod_index.php 解决部分服务器没有设置默认入口问题 - -### ver2.4 `2014/6/8` -#### update: - - 语言选择 - - 远程下载文件名优化 - - 树目录事件优化 - - 收藏夹点击 undefined - - 没权限建立文件夹错误提示 红色 - - 打开dialog 不显示问题。先显示后打开 - - ajax error 系统错误 对话框提示内容 - - 懒加载优化 - - -### ver2.3 `2014/6/2` ------ -#### update: - - 拖动url——创建ext app - - 文件管理,树目录变化后(增删改)自动同步到文件列表 - - 文件管理,文件列表变化后(增删改)自动同步到树目录 - - 中文用户名限制 - - 对话框打开关闭动画 - - 其他多处优化 - -#### fix bug:(bug解决和程序优化) - - 文件名限制bug - - 同目录多个程序cookie bug修复 - - 地址栏 最后显示宽度问题 - - 服务器路径下 编辑器预览404修复 - - 树目录显示优化 - - 登录记住密码优化 - -### ver2.2 `2014/5/11` ------ -#### update: - - 公共目录支持(多个用户可以共享目录,写权限跟随用户组权限设定) - - 自动升级优化 - - 文件管理工具栏 增加菜单选项,方便移动设备操作 - - 文件编辑器,文件树目录 上下左右键盘切换 快捷键加入 - - 树目录去掉库,改为个人目录等多处文案修改 - - 默认打开用户目录 - -#### fix bug:(bug解决和程序优化) - - 桌面任务栏点不中bug - - 部分文案问题 - - 众多细节优化 - - -### ver2.1 `2014/4/2` ------ -#### update: - - 文件夹拖拽上传,完美解决(保持原始目录结构) - - 解压缩优化;解压中文问题。解压缩整体速度 - - 树目录增加快捷键支持(上下、左右展开树目录;复制、粘贴、剪切、删除、打开、搜索、新建文件(夹)、) - - pdf预览支持 - - mac快捷键 ctrl 一一对应command - - 音乐播放器和视频播放器相互独立 - - 图片懒加载、图片较多的情况下只加载首屏图片缩略图; - - 编辑文件打开出错,自动关闭标签;文件打开20M限制(大于20M则不处理,浏览器会卡死) - - 标签关闭提示:检测是否有未保存文件,文件修改实时修改是否修修改的按钮状态 - -#### fix bug:(bug解决和程序优化) - - 文本文件编辑 文件名含有url编码则出错bug - - 右键菜单在最下面时,右键位置重叠导致点击菜单问题 - - 编辑器打开文件时光标问题,处理:移动到行尾;编辑器enter建不显示自动提示 - - iframe 打开url 优化。解决canvas问题 - - 文件编辑器,载入loading去掉 - - 删除错误时,或上传错误时也刷新目录。删除提示颜色错误 - - 对话框右键 点击右键菜单隐藏修复 - - 手机端 touch =双击 - - 文件列表 explorer 右键 不清除选才· - - 树目录中文展开问题。 - - ie 重命名状态textarea不可选则问题 - - 修复mac 下 ctrl连选出现右键菜单。 - - ie 树目录右键兼容性 - - - - -### ver2.01 `2014/3/2` ------ -#### fix bug:(bug解决和程序优化) - - body右键屏蔽(保留input、textarea) - - 重命名&新建时 右键(编辑内容系统菜单) - - 对话框 不显示边框(位移处理,opacity:0) - - esc 退出程序 屏蔽该功能。 - - 关闭播放器,还在播放bug - - 增加资源管理器任务栏。任务栏加入右键功能。 - - 对话框增加右键功能 - - guest [三类用户 root/default/guest] guest登录处加链接。20min - - 打包程序[update user_add,admin/demo; 删除webuploader.js thumb less] - - 编辑添加应用权限只能是root用户才可以。 - - 保存文件不可写提示! - - 解压缩结果提示。(对话框) - -#### upload - - dialog display - - root登录 目录修改为服务器路径 - - artdialog 已经打开的窗口 (设了id) 最小化时,再次打开则显示 - - 最小化窗口后,再次打开 dialog display (setting-display) - - 上传进度加入大小 - - 上传窗口关闭,自动停止所有上传队列 - - 拖拽后,更新上传地址为当前地址。(之前上传队列也会这样。bug) - - root用户非服务器路径下文件预览(图片、mp3、视频、html、swf、……php代理输出文件内容,http方式) - - 对话框最小化或关闭,重置最大index为焦点窗口 - - 图片缩略图生成:小于5k则不生成(直接输出) - - 加载文件列表改为异步方式,数据返回采用回调函数方式。增强体验 - - 选中优化,文件&文件夹重命名、文件&文件夹新建 后自动选中。(f5增加回调。); - - 选中保持,选中后如果调整排序等等,保持选中状态。 - - 上传文件选中当前。 - - f5改为异步(加入mask loading) 优化文件夹打开体验 - - 键盘按键选中文件 增加字符搜索定位功能(单个字符,增加到多个字符选中。两次响应直接延迟250ms) - - 幻灯片播放[优化成fancybox或者 重写动画部分、打开时关不掉问题] - - 编辑器backspace、delete时不提示。 - - 编辑器,增加选中效果 - - 增加不自动提示功能,配置项作为全局配置。影响后续建立的文件。选中标记状态。 - - 更换桌面背景图片【load后替换】 - - 更换主题【css load 后载入】 - - 删除。不清除选中。提前准备数据 - - 构建打包,合并压缩。添加版本、版权 - - 自动升级(本地记录版本,服务器js调用 参数 url、### version;忽略此版本。cookie。统计用户) - - -### ver2.0 `2014/3/2` ------ -#### fix bug:(bug解决和程序优化) - - 优化文件打开处理 - - 文件&文件夹:含有%、+号的处理(显示不出等问题,encoenURIComponent——rawurldecode) - - 文件下载,支持大文件下载、断点续传。 - - 解决更改排序方式后 ——对应右键菜单不同步问题。 - - 优化右键更改列表状态,同步保存配置到服务端。 - - 文件浏览器打开(a点击新窗口跳转,a不支持click,用子元素冒泡来实现点击) - - 优化配置文件存储方案。直接由前端操作后端key,value - - 修复添加收藏夹问题(已打开设置窗口再添加失败问题) - - 修复树目录中文文件名bug - - 优化pic图片幻灯片播放 - - 优化新建文件&文件夹 清空选择状态 - - 对话框组件 ie8 优化;tips不显示任务栏; - - 优化地址栏过长编辑状态问题 - - 优化新建、重命名文件(夹) 高度自适应问题 - - firefox ctrl+s 系统对话框屏蔽 - - 树目录:收藏夹优化(右键绑定);右键操作优化,拖拽优化(文件管理&编辑器) - - 收藏夹优化(右键 >编辑删除) - -#### update: -**新增功能** - - - 多用户、权限控制: - - 可以建立权限组,将功能分配给权限组 - - 添加用户,选择所属的权限组。 - - 权限按功能划分成颗粒,可以任意配置,例如普通使用者、游客等 - - 搜索:支持递归搜索,可选择是否搜索文件内容。 - - 增加桌面自定义壁纸。 - - 皮肤优化 ok 多色彩支持。 - - 应用商店,root用户可以管理应用。安装、修改、删除。普通用户可以安装应用。 - - 应用添加了图标。对应右键功能。 - - office文档在线预览。 - -**上传下载** - - - 采用全新上传控件,跟安全,更好的体验。 - - 拖拽支持文件夹,多个文件。上传自动过滤不允许的文件类型 - - 拖拽上传 和上统一优化,修复webuploader的文件判断;火狐拖拽上传,ie9+拖拽上传。 - - 上传时自动过滤不合格的文件,上传失败错误返回。 - -**文件编辑** - - - 编辑器支持多光标 - - 支持几乎所有编程语言的代码高亮 - - 支持代码自动补全(基于文档、或自定义的代码快照) - - 快速预览功能 - - 优化文件保存完美解决。编码自动识别转换。(字符串转义问题。1&#'[{'"+~%25\\\\ ////) - - 文件编辑,添加收藏夹 - - 优化音乐播放器,添加音乐后自动播放新添加的第一首;解决之前添加列表后暂停问题。 - - 优化任务栏,多标签;最小化flash问题(left+10000 visiable) - - ctrl,shift 多选时拖拽优化(按住这两个键时,不能拖动;拖动加入延迟200ms) - - 编辑器在没打开文件的情况下工具栏不可用问题。 - - 搜索、替换;vim模式 - - …… - -**登录退出** - - - 登录优化 ok【页面&验证码&记住密码】 - - 三次错误需要输入验证码,保证系统的安全性 - - 优化自动登录安全性,客户端保存cookie自动登录信息。【tooken加入本地ip】 - -**系统优化** - - - 解决较慢操作,阻塞其他操作问题。(同一个用户session会加锁,入口处做释放) - - 前后端代码基本全部重构,前端采用模块化方法sea.js|require.js 模块化。 - - 凡是有模板调用的(display——页面部分php解析。并将配置注入到页面js变量,便于js使用) - - 加入模板机制;通用模块采用懒加载模式;使用artTemplate 对模板绑定数据。 - - kv结构存储 - - 路由权限控制 - - 后端统一json输出。 - -### ver1.21 `2013/11/6` ------ -#### fix bug: - - 修复文件下载bug - - 修复编辑器自动补全问题, ——> - - 兼容部分服务器问题。 - -### ver1.2 `2013/10/16` ------ -#### fix bug: - - 设置,外部通用调用方式 - - 打包中文乱码问题。 - - simple,default主题,navbar 下拉菜单右边位置问题。 - - 文件管理:有滚动条时,上下超过可视区域框选问题修复,统一和win操作一致。 - - 文件大小写不敏感设置,扩展名获取bug - - 目录读取权限判断,解决“系统错误”相关问题。 - -#### update: - - 地址栏宽度自适应优化,支持浏览器窗口调整 - - 增加远程下载功能;上传功能优化, - - 整体样式风格优化, - - 右键菜单优化(可持续粘贴,剪切后粘贴清空剪贴板)。 - - 新建文件、文件重命名高度自适应优化 - - 关闭调试状态错误信息 - - 图片播放幻灯片优化,支持浏览器窗口调整,解决事件绑定bug,添加图片倒影;添加关闭按钮,关闭动画等功能 - - 优化桌面,弹出层层级问题;任务栏为最上层 - - 优化多标签,没有标签时不显示标签容器,放至层级覆盖 - - 地址栏超出宽度,自动隐藏最左边内容 - - 右键菜单状态同步,排序方式初始化当前值,设置后标记当前值。 - - 优化编辑器:拖动内容&文件到编辑区,内容处理。 - - 拖拽上传,信息框自动隐出后关闭 - - setting,editor,player最小化时,再次调用则显示出弹出层 - - 优化影音播放器,皮肤及相关配置信息存储于js中,不用之前的服务器请求方式,修改皮肤后可以直接更新到界面上。 - - -### ver1.01 `2013/9/10` ------ -#### fix bug: - - 添加到收藏 - - simple,default主题,navbar 下拉菜单右边位置问题。 - -#### update: - - 添加到收藏夹,修改收藏夹,更新文件管理收藏夹部分。 - - 修改主题,同时修改编辑器主题。【编辑区,文件管理,桌面】 - - 优化setting部分代码,整合为一个整体。 - - 优化debug,增加less编译,导出功能优化,先编译后复制再操作 - - -### ver1.0 `2013.9.1` ------ -#### update: - - 代码模块化优化,静态文件分离,可以分开部署 - - 编辑器单独逻辑提取,完整融合到文件管理,树目录融合文件管理,懒加载语法高亮 - - 多标签实现,弹层对话框多标签支持,桌面任务栏实现;编辑器多标签支持 - - 弹层功能优化,实现最大最小化,最小化关联多标签任务栏管理 - -#### fix bug: - - linux 下浏览器打开文件和文件夹,中文问题 - - 重命名&新建&上传 刷新列表使用动画,当前选中失效问题,不使用动画加载方式。 - - html5拖拽上传优化 - - -### ver0.8 `2013.6.15` ------ -#### update: - - 整体优化,实现全部操作ajax本地化 ,进一步提升体验 - - 浏览器强刷新,保持之前最后所在路径 - - 重命名,新建,粘贴操作后添加选中状态 - - 代码主题列表优化,重新设计,提高可配置性 - - 优化代码,添加getTplList模版,简化关联配置获取 - - 增加设置功能,ajax刷新设置。缩略图片增加tips预览(被注释frame/setting.php) - - 增加重命名只选择名称部分功能 - - 增加iframe js api互操作ie支持。四大浏览器内核皆支持。 - - 文件夹打开,采用ajax实现。包括头部地址栏,父级目录,左边树目录以及收藏夹 - - 历史记录完美实现,前进后退按钮实时变化状态。 - - 快捷键backspace实现后退(left header main 分别加入函数,屏蔽默认history(-1)操作) - - -#### fix bug: - - 完善修改windows以及linux获取文件列表,中文路径属性获取失败问题。 - - 复制,剪切。剪贴板内容覆盖判空处理 - - 修复一些地方ajax线程同步问题,重命名后选中失效问题解决 - - 修复返回上层目录,根目录检测 - - 修复linux下 音视频播放,中文路径问题 - - 修复文件右键菜单位置出错问题 - - 修复ie下frame js相互通信问题 - - ajax更新文件列表下,各种bug修复。进一步提升操作友好性 - - 修复当前目录改变的情况下,播放器消失的问题。现在能使播放器始终保留 diff --git a/plugin/document/kod/app/api/sso.class.php b/plugin/document/kod/app/api/sso.class.php deleted file mode 100644 index f035ed04a..000000000 --- a/plugin/document/kod/app/api/sso.class.php +++ /dev/null @@ -1,109 +0,0 @@ -';var_dump($_SESSION);echo '';exit; - return $_SESSION; - } - - /** - * 设置session 认证 - * @param [type] $key [认证key] - */ - static public function sessionSet($key,$value='success'){ - self::init(); - @session_start(); - $_SESSION[$key] = $value; - @session_write_close(); - } - - - static public function sessionCheck($key,$value='success'){ - $session = self::init(); - if( isset($session[$key]) && $session[$key] == $value){ - return true; - } - return false; - } - - /** - * 直接调用kod的登陆检测(适用于同服务器同域名;) - * @param [type] $kodHost kod的地址;例如 http://test.com/ ;默认为插件目录 - * @param [type] $appKey 应用标记 例如 loginCheck - * @param [type] $appUrl 验证后跳转到的url;默认为当前url - * @param [type] $auth 验证方式:例如:'check=userName&value=smartx' - * check (userID|userName|roleID|roleName|groupID|groupName) 校验方式,为空则所有登陆用户 - */ - static public function sessionAuth($appKey,$auth,$kodHost='',$appUrl=''){ - if($kodHost==''){ - $appUrl = this_url(); - if(strstr($appUrl,'/plugins/')){ - $kodHost = substr($appUrl,0,strpos($appUrl,'/plugins/')); - }else{ - if(isset($_COOKIE['APP_HOST'])){ - $kodHost = $_COOKIE['APP_HOST']; - }else{ - $kodHost = $_SERVER['HTTP_REFERER']; - if(strstr($kodHost,'/kod_index.php?')){ - $kodHost = substr($kodHost,0,strpos($kodHost,'/kod_index.php?')); - }else if(strstr($kodHost,'/?')){ - $kodHost = substr($kodHost,0,strpos($kodHost,'/?')); - } - } - } - } - $authUrl = rtrim($kodHost,'/').'/kod_index.php?user/sso&app='.$appKey.'&'.$auth; - if($appUrl == ''){ - $appUrl = this_url(); - } - if(!self::sessionCheck($appKey)){ - session_destroy(); - header('Location: '.$authUrl.'&link='.rawurlencode($appUrl)); - exit; - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/app/controller/api.class.php b/plugin/document/kod/app/controller/api.class.php deleted file mode 100644 index 889113be7..000000000 --- a/plugin/document/kod/app/controller/api.class.php +++ /dev/null @@ -1,53 +0,0 @@ -in['path'])){ - show_tips('参数错误!'); - } - $this->checkAccessToken(); - $this->setIdentify(); - $this->display('view.html'); - } - private function setIdentify(){ - if(! $_SESSION['accessPlugin'] ){ - session_start(); - $_SESSION['accessPlugin'] = 'ok'; - session_write_close(); - } - } - public function checkAccessToken(){ - $model = $this->loadModel('Plugin'); - $config = $model->getConfig('fileView'); - if(!$config['apiKey']){ - return; - } - $timeTo = isset($this->in['timeTo'])?intval($this->in['timeTo']):''; - $token = md5($config['apiKey'].$this->in['path'].$timeTo); - - //show_tips(array($config['apiKey'],$token,$this->in)); - if($token != $this->in['token']){ - show_tips('token 错误!'); - } - if($timeTo != '' && $timeTo <= time()){ - show_tips('token已失效!'); - } - } -} - diff --git a/plugin/document/kod/app/controller/app.class.php b/plugin/document/kod/app/controller/app.class.php deleted file mode 100644 index 923828e73..000000000 --- a/plugin/document/kod/app/controller/app.class.php +++ /dev/null @@ -1,141 +0,0 @@ -sql=new FileCache(USER_SYSTEM.'apps.php'); - } - - /** - * 用户首页展示 - */ - public function index() { - $this->display('index.html'); - } - - public function initApp(){ - //为空则不初始化桌面 - if(!$this->config['settingSystem']['desktopFolder']){ - return; - } - $list = $this->sql->get(); - $newUserApp = $this->config['settingSystem']['newUserApp']; - $default = explode(',',$newUserApp); - $info = array(); - foreach ($default as $key) { - $info[$key] = $list[$key]; - } - - $desktop = iconv_system(HOME.DESKTOP_FOLDER.'/'); - if($GLOBALS['isRoot'] == 1){ - $desktop = iconv_system(MYHOME.DESKTOP_FOLDER.'/'); - } - mk_dir($desktop); - if(!path_writeable($desktop)){ - return; - } - foreach ($info as $key => $data) { - if (!is_array($data)) { - continue; - } - $path = $desktop.iconv_system($key).'.oexe'; - unset($data['name']); - unset($data['desc']); - unset($data['group']); - file_put_contents($path, json_encode($data)); - } - } - - /** - * 用户app 添加、编辑 - */ - public function userApp() { - $path = _DIR($this->in['path']); - if(get_path_ext($path) != 'oexe'){ - $path .= '.oexe'; - } - if (!checkExt($path)) { - show_json(LNG('error'));exit; - } - - $data = $this->_init(); - unset($data['name']); - unset($data['path']); - unset($data['desc']); - unset($data['group']); - $res = file_put_contents($path, json_encode($data)); - show_json(LNG('success')); - } - - /** - * 获取列表 - */ - public function get() { - $list = array(); - if (!isset($this->in['group']) || $this->in['group']=='all') { - $list = $this->sql->get(); - }else{ - $list = $this->sql->get(array('group',$this->in['group'])); - } - $list = array_reverse($list); - show_json($list); - } - - /** - * 添加 - */ - public function add() { - $res=$this->sql->set(rawurldecode($this->in['name']),$this->_init()); - if($res) show_json(LNG('success')); - show_json(LNG('error_repeat'),false); - } - - /** - * 编辑 - */ - public function edit() { - //查找到一条记录,修改为该数组 - $this->sql->remove(rawurldecode($this->in['old_name'])); - if($this->sql->set(rawurldecode($this->in['name']),$this->_init())){ - show_json(LNG('success')); - } - show_json(LNG('error_repeat'),false); - } - /** - * 删除 - */ - public function del() { - if($this->sql->remove(rawurldecode($this->in['name']))){ - show_json(LNG('success')); - } - show_json(LNG('error'),false); - } - - public function getUrlTitle(){ - $html = curl_get_contents($this->in['url']); - $result = match($html,"(.*)<\/title>"); - if (strlen($result)>50) { - $result = mb_substr($result,0,50,'utf-8'); - } - if (!$result || strlen($result) == 0) { - $result = $this->in['url']; - $result = str_replace(array('http://','&','/'),array('','@','-'), $result); - } - show_json($result); - } - - private function _init(){ - $data = rawurldecode($this->in['data']); - $arr = json_decode($data,true); - if(!is_array($arr)){ - show_json(LNG('error'),false); - } - return $arr; - } -} diff --git a/plugin/document/kod/app/controller/desktop.class.php b/plugin/document/kod/app/controller/desktop.class.php deleted file mode 100644 index e463b5fb0..000000000 --- a/plugin/document/kod/app/controller/desktop.class.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class desktop extends Controller{ - function __construct() { - parent::__construct(); - } - public function index() { - $wap = is_wap() && (!isset($_COOKIE['forceWap']) || $_COOKIE['forceWap'] == '1'); - $desktopApps = include(DATA_PATH.'system/desktop_app.php'); - $wall = $this->config['user']['wall']; - if( !strstr($wall,'/') ){ - $wall = STATIC_PATH.'images/wall_page/'.$wall.'.jpg'; - } - - $wall = str_replace('&','&',$wall); - $desktop = iconv_system(HOME.DESKTOP_FOLDER.'/'); - if($GLOBALS['isRoot'] == 1){ - $desktop = iconv_system(MYHOME.DESKTOP_FOLDER.'/'); - } - mk_dir($desktop); - - $this->assign('wall',$wall); - $this->assign('desktopApps',$desktopApps); - $this->display('index.html'); - } -} diff --git a/plugin/document/kod/app/controller/editor.class.php b/plugin/document/kod/app/controller/editor.class.php deleted file mode 100644 index 361ffbe4c..000000000 --- a/plugin/document/kod/app/controller/editor.class.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class editor extends Controller{ - function __construct() { - parent::__construct(); - } - - // 多文件编辑器 - public function index(){ - $this->themeSet(); - $this->display('editor.html'); - } - // 单文件编辑 - public function edit(){ - $this->themeSet(); - $this->display('edit.html'); - } - - private function themeSet(){ - $setClass = ''; - //获取编辑器配置数据 - $editorConfig = $this->config['editorDefault']; - $configFile = USER.'data/editor_config.php'; - if (!file_exists(iconv_system($configFile))) {//不存在则创建 - $sql=FileCache::save($configFile,$editorConfig); - }else{ - $editorConfig=FileCache::load($configFile); - } - - $blackTheme = array("ambiance","idle_fingers","monokai","pastel_on_dark","twilight", - "solarized_dark","tomorrow_night_blue","tomorrow_night_eighties"); - if(in_array($editorConfig['theme'],$blackTheme)){ - $setClass = 'class="code-theme-black"'; - } - $this->assign('editorConfig',json_encode($editorConfig));//获取编辑器配置信息 - $this->assign('codeThemeBlack',$setClass);//获取编辑器配置信息 - } - - // 获取文件数据 - public function fileGet(){ - if(isset($this->in['fileUrl'])){ - $pass = $this->config['settingSystem']['systemPassword']; - $fileUrl = $this->in['fileUrl']; - if(!request_url_safe($fileUrl)){ - show_json(LNG('url error!'),false); - } - $urlInfo = parse_url_query($fileUrl); - if( isset($urlInfo['fid']) && - strlen(Mcrypt::decode($urlInfo['fid'],$pass)) != 0 - ){ - $filepath = Mcrypt::decode($urlInfo['fid'],$pass); - $displayName = get_path_this($filepath); - if(isset($urlInfo['downFilename'])){ - $displayName = rawurldecode($urlInfo['downFilename']); - } - }else{ - $displayName = rawurldecode($urlInfo['name']); - $filepath = $fileUrl.'&accessToken='.access_token_get(); - } - }else{ - $displayName = rawurldecode($this->in['filename']); - $filepath =_DIR($this->in['filename']); - if (!file_exists($filepath)){ - show_json(LNG('not_exists'),false); - } - if (!path_readable($filepath)){ - show_json(LNG('no_permission_read_all'),false); - } - if (filesize($filepath) >= 1024*1024*20){ - show_json(LNG('edit_too_big'),false); - } - } - - $fileContents=file_get_contents($filepath);//文件内容 - //echo $fileContents;exit; - if(isset($this->in['charset']) && $this->in['charset']){ - $charset = strtolower($this->in['charset']); - }else{ - $charset = get_charset($fileContents); - } - if ($charset !='' && - $charset !='utf-8' && - function_exists("mb_convert_encoding") - ){ - $fileContents = @mb_convert_encoding($fileContents,'utf-8',$charset); - } - $data = array( - 'ext' => get_path_ext($displayName), - 'name' => iconv_app(get_path_this($displayName)), - 'filename' => $displayName, - 'charset' => $charset, - 'base64' => true,// 部分防火墙编辑文件误判问题处理 - 'content' => base64_encode($fileContents) - ); - show_json($data); - } - public function fileSave(){ - $fileStr = rawurldecode($this->in['filestr']); - $path =_DIR($this->in['path']); - if(isset($this->in['create_file']) && !file_exists($path)){//不存在则创建 - if(!@touch($path)){ - show_json(LNG('create_error'),false); - } - } - if (!path_writeable($path)) show_json(LNG('no_permission_write_file'),false); - //支持二进制文件读写操作(base64方式) - if(isset($this->in['base64'])){ - $fileStr = base64_decode($fileStr); - } - - $charset = strtolower($this->in['charset']); - if(isset($this->in['charsetSave'])){ - $charset = strtolower($this->in['charsetSave']); - } - if ( $charset !='' && - $charset != 'utf-8' && - $charset != 'ascii' && - function_exists("mb_convert_encoding") - ) { - $fileStr = @mb_convert_encoding($fileStr,$charset,'utf-8'); - } - $fp=fopen($path,'wb'); - fwrite($fp,$fileStr); - fclose($fp); - show_json(LNG('save_success')); - } - - /* - * 获取编辑器配置信息 - */ - public function setConfig(){ - $file = USER.'data/editor_config.php'; - if (!path_writeable(iconv_system($file))) {//配置不可写 - show_json(LNG('no_permission_write_file'),false); - } - $key= $this->in['k']; - $value = $this->in['v']; - if ($key !='' && $value != '') { - $sql=new FileCache($file); - $sql->set($key,$value);//没有则添加一条 - show_json(LNG('setting_success')); - }else{ - show_json(LNG('error'),false); - } - } -} diff --git a/plugin/document/kod/app/controller/explorer.class.php b/plugin/document/kod/app/controller/explorer.class.php deleted file mode 100644 index 1cee941fa..000000000 --- a/plugin/document/kod/app/controller/explorer.class.php +++ /dev/null @@ -1,1521 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class explorer extends Controller{ - public $path; - public $user; - public function __construct(){ - parent::__construct(); - $this->user = $_SESSION['kodUser']; - if (isset($this->in['path'])) { - //游客访问别人zip,解压到**目录;入口不检测权限 - if( ST.'.'.ACT == "explorer.unzip" ){ - if($this->in['pathTo']){ - _DIR($this->in['pathTo']); - }else{ - _DIR($this->in['path']); - } - $GLOBALS['kodPathAuthCheck'] = true; - } - if( ST.'.'.ACT == "explorer.unzipList" ){ - $GLOBALS['kodPathAuthCheck'] = true; - } - $this->path = _DIR($this->in['path']); - $this->_checkSystemPath(); - } - } - public function index(){ - $dir = ''; - if(isset($this->in['path']) && $this->in['path'] !=''){ - $dir = _DIR_CLEAR($this->in['path']); - $dir = rtrim($dir,'/').'/'; - } - $this->assign('dir',$dir); - if ($this->config['forceWap']) { - $this->display('explorerWap.html'); - }else{ - $this->display('index.html'); - } - } - - //system virtual folder; - private function _checkSystemPath(){ - if(!in_array(ACT,array('mkfile','mkdir','search', - 'pathCuteDrag','pathCopyDrag','pathPast','fileDownload'))){ - return; - } - if( $GLOBALS['kodPathType'] == KOD_USER_SHARE && - !strstr(trim($this->in['path'],'/'),'/')){//分享根目录 - show_json(LNG('error'),false); - } - if(in_array($GLOBALS['kodPathType'],array( - KOD_USER_FAV, - KOD_GROUP_ROOT_ALL, - KOD_GROUP_ROOT_SELF - ) - )){ - show_json(LNG('system_path_not_change'),false); - } - } - - public function pathInfo(){ - $infoList = json_decode($this->in['dataArr'],true); - if(!$infoList){ - show_json(LNG('error'),false); - } - foreach ($infoList as &$val) { - $val['path'] = _DIR($val['path']); - } - $data = path_info_muti($infoList,LNG('time_type_info')); - if(!$data){ - show_json(LNG('not_exists'),false); - } - - //属性查看,单个文件则生成临时下载地址。没有权限则不显示 - if (count($infoList)==1 && $infoList[0]['type']!='folder') {//单个文件 - $file = $infoList[0]['path']; - if( $GLOBALS['isRoot'] || - $GLOBALS['auth']["explorer.fileDownload"]==1 || - isset($this->in['viewPage'])){ - $data['downloadPath'] = _make_file_proxy($file); - $data['downloadPath'] = str_replace('index.php?','kod_index.php?', $data['downloadPath']); - } - //所在部门,下载权限检测 - if($GLOBALS['kodPathRoleGroupAuth'] && !$GLOBALS['kodPathRoleGroupAuth']['explorer.fileDownload']){ - unset($data['downloadPath']); - } - if($data['size'] < 100*1024|| isset($this->in['getMd5'])){//100kb - $data['fileMd5'] = @md5_file($file); - }else{ - $data['fileMd5'] = "..."; - } - - //获取图片尺寸 - $ext = get_path_ext($file); - if(in_array($ext,array('jpg','gif','png','jpeg','bmp')) ){ - $size = ImageThumb::imageSize($file); - if($size){ - $data['imageSize'] = $size; - } - } - } - $data['path'] = _DIR_OUT($data['path']); - show_json($data); - } - - public function pathChmod(){ - $infoList = json_decode($this->in['dataArr'],true); - if(!$infoList){ - show_json(LNG('error'),false); - } - $mod = octdec('0'.$this->in['mod']); - $success=0;$error=0; - foreach ($infoList as $val) { - $path = _DIR($val['path']); - if(chmod_path($path,$mod)){ - $success++; - }else{ - $error++; - } - } - $state = $error==0?true:false; - $info = $success.' success,'.$error.' error'; - if (count($infoList) == 1 && $error==0) { - $info = LNG('success'); - } - show_json($info,$state); - } - - public function mkfile(){ - $tplPath = BASIC_PATH.'static/others/newfile-tpl/'; - $repeatType = 'skip'; - if(isset($this->in['repeat_type'])){ - $repeatType = $this->in['repeat_type']; - } - $new= rtrim($this->path,'/'); - $parent = get_path_father($this->path); - if(!file_exists($parent)){ - mk_dir($parent); - } - $new = get_filename_auto($new,'',$repeatType);//已存在处理 创建副本 - Hook::trigger("explorer.mkfileBefore",$new); - if(@touch($new)){ - chmod_path($new,DEFAULT_PERRMISSIONS); - if (isset($this->in['content'])) { - file_put_contents($new,$this->in['content']); - }else{ - $ext = get_path_ext($new); - $tplFile = $tplPath.'newfile.'.$ext; - if(file_exists($tplFile)){ - copy_dir($tplFile,$new); - } - } - Hook::trigger("explorer.mkfileAfter",$new); - show_json(LNG('create_success'),true,_DIR_OUT(iconv_app($new)) ); - }else{ - show_json(LNG('create_error'),false); - } - } - - public function mkdir(){ - $repeatType = 'skip'; - if(isset($this->in['repeat_type'])){ - $repeatType = $this->in['repeat_type']; - } - $new = rtrim($this->path,'/'); - $new = get_filename_auto($new,'',$repeatType);//已存在处理 创建副本 - if($this->_mkdir($new)){ - show_json(LNG('create_success'),true,_DIR_OUT(iconv_app($new)) ); - }else{ - show_json(LNG('create_error'),false); - } - } - - private function _mkdir($path){ - if(!$GLOBALS['isRoot']){ - //IIS6 解析漏洞 /a.php/2.jpg 得到解析 - $temp = str_replace('\\','/',$path); - if(substr(rtrim($temp,'/'),-4) == '.php'){ - show_json(LNG('no_permission_ext'),false); - } - } - Hook::trigger("explorer.mkdirBefore",$path); - if(mk_dir($path,DEFAULT_PERRMISSIONS)){ - chmod_path($path,DEFAULT_PERRMISSIONS); - Hook::trigger("explorer.mkdirAfter",$path); - return true; - } - return false; - } - - public function pathRname(){ - $rnameTo=_DIR($this->in['rnameTo']); - if (file_exists($rnameTo) && - strtolower($rnameTo) !== strtolower($this->path) ) { - show_json(LNG('name_isexists'),false); - } - Hook::trigger("explorer.pathRnameBefore",$this->path,$rnameTo); - if(@rename($this->path,$rnameTo)){ - Hook::trigger("explorer.pathRnameAfter",$this->path,$rnameTo); - show_json(LNG('rname_success'),true,_DIR_OUT(iconv_app($rnameTo)) ); - }else{ - show_json(LNG('no_permission_write_all'),false); - } - } - - public function search(){ - if (!isset($this->in['search'])){ - show_json(LNG('please_inpute_search_words'),false); - } - - $isContent = intval($this->in['is_content']); - $isCase = intval($this->in['is_case']); - $ext= trim($this->in['ext']); - //共享根目录不支持搜索 - if( $GLOBALS['kodPathType'] == KOD_USER_SHARE && - strstr($this->path,KOD_USER_SHARE)){ - show_json(LNG('path_cannot_search'),false); - } - - Hook::trigger("explorer.searchBefore",$this->path); - $list = path_search( - $this->path, - rawurldecode($this->in['search']), - $isContent,$ext,$isCase); - show_json(_DIR_OUT($list)); - } - - public function pathList(){ - $userPath = $this->in['path']; - if ($userPath=="") $userPath='/'; - $list=$this->_path($this->path); - //自己的根目录 - if($this->path== MYHOME || $this->path==HOME){ - $this->_selfRootLoad($list['folderList']); - } - - //群组根目录 - if( $list['info']['pathType'] == KOD_GROUP_PATH && - !strstr(trim(_DIR_CLEAR($this->in['path']),'/'),'/') - ){//自己的根目录 - $this->_selfGroupLoad($list['folderList']); - } - $list['userSpace'] = $this->user['config']; - show_json($list); - } - - public function treeList(){//树结构 - $app = $this->in['app'];//是否获取文件 传folder|file - if (isset($this->in['type']) && $this->in['type']=='init'){ - $this->_treeInit($app); - } - //根树目录请求 - switch(trim(rawurldecode($this->in['path']))){ - case KOD_USER_FAV: - show_json($this->_treeFav(),true); - break; - case KOD_GROUP_ROOT_SELF: - show_json($this->_groupSelf(),true); - break; - case KOD_GROUP_ROOT_ALL: - show_json($this->_groupTree('1'),true); - break; - default:break; - } - - //树目录组处理 - if ( (isset($this->in['tree_icon']) && $this->in['tree_icon']!='group-public') && //公共目录刷新排除 - !strstr(trim(rawurldecode($this->in['path']),'/'),'/') && - ($GLOBALS['kodPathType'] == KOD_GROUP_PATH|| - $GLOBALS['kodPathType'] == KOD_GROUP_SHARE)) { - $list = $this->_groupTree($GLOBALS['kodPathId']); - show_json($list,true); - return; - } - - //正常目录 - $path=_DIR($this->in['path']); - if (!path_readable($path)) show_json(LNG('no_permission_read'),false); - $listFile = ($app == 'editor'?true:false);//编辑器内列出文件 - $list=$this->_path($path,$listFile,true); - function sortByKey($a, $b){ - if ($a['name'] == $b['name']) return 0; - return ($a['name'] > $b['name']) ? 1 : -1; - } - usort($list['folderList'], "sortByKey"); - usort($list['fileList'], "sortByKey"); - if($path == MYHOME || $path==HOME){//自己的根目录 - // $this->_selfRootLoad($list['folderList']); - } - if ($app == 'editor') { - $res = array_merge($list['folderList'],$list['fileList']); - show_json($res,true); - }else{ - show_json($list['folderList'],true); - } - } - - //部门根目录 - private function _selfGroupLoad(&$root){ - foreach ($root as $key => $value) { - if($value['name'] == $GLOBALS['config']['settingSystem']['groupShareFolder']){ - $root[$key] = array( - 'name' => LNG('group_share'), - 'menuType' => "menu-folder folder-box", - 'ext' => "folder-share", - 'isReadable' => true, - 'isWriteable' => true, - - 'path' => $value['path'], - 'type' => 'folder', - 'open' => false, - 'isParent' => $value['isParent'] - ); - break; - } - } - $root = array_values($root); - } - - //用户根目录 - private function _selfRootLoad(&$root){ - foreach ($root as $key => $value) { - if($value['name'] == 'share'){ - $root[$key] = array( - 'name' => LNG('my_share'), - 'menuType' => "menu-tree-user", - 'ext' => "folder-share", - 'isParent' => true, - 'isReadable' => true, - 'isWriteable' => true, - - 'path' => KOD_USER_SHARE.':'.$this->user["userID"].'/', - 'type' => 'folder', - 'open' => false, - 'isParent' => false - ); - break; - } - } - $root = array_values($root); - //不开启回收站则不显示回收站 - if($this->config['user']['recycleOpen']=="1"){ - // $root[] = array( - // 'name'=>LNG('recycle'), - // 'menuType' =>"menu-recycle-button", - // 'ext' =>"recycle", - // 'isParent' => true, - // 'isReadable' => true, - // 'isWriteable' => true, - - // 'path' => KOD_USER_RECYCLE, - // 'type' => 'folder', - // 'open' => true, - // 'isParent' => false - // ); - } - } - - - private function _treeFav(){ - $checkFile = ($this->in['app'] == 'editor'?true:false); - $favData=new FileCache(USER.'data/fav.php'); - $favList = $favData->get(); - $fav = array(); - $GLOBALS['kodPathAuthCheck'] = true;//组权限发生变更。导致访问groupPath 无权限退出问题 - foreach($favList as $key => $val){ - $thePath = _DIR($val['path']); - $hasChildren = path_haschildren($thePath,$checkFile); - if( !isset($val['type'])){ - $val['type'] = 'folder'; - } - if( in_array($val['type'],array('group'))){ - $hasChildren = true; - } - $cell = array( - 'name' => $val['name'], - 'ext' => isset($val['ext'])?$val['ext']:"", - 'menuType' => "menu-tree-fav", - - 'path' => $val['path'], - 'type' => $val['type'], - 'open' => false, - 'isParent' => $hasChildren - ); - - if( $cell['type'] == 'folder' && $cell['ext'] == "" ){ - $cell['menuType'] = 'menu-tree-folder-fav'; - $cell['exists'] = intval(file_exists($thePath)); - } - - if(isset($val['type']) && $val['type']!='folder'){//icon优化 - $cell['ext'] = $val['type']; - } - $fav[] = $cell; - } - $GLOBALS['kodPathAuthCheck'] = false; - return $fav; - } - - private function _treeInit($app){ - if ($app == 'editor' && isset($this->in['project'])) { - $listProject = $this->_path(_DIR($this->in['project']),true,true); - $project = array_merge($listProject['folderList'],$listProject['fileList']); - $treeData = array( - array('name'=> get_path_this($this->in['project']), - 'children' =>$project, - 'menuType' => "menu-tree-root", - 'ext' => "folder", - 'path' => $this->in['project'], - 'type' => 'folder', - 'open' => true, - 'isParent' => count($project)>0?true:false) - ); - show_json($treeData); - } - $checkFile = ($app == 'editor'?true:false); - $fav = $this->_treeFav($app); - - $publicPath = KOD_GROUP_PATH.':1/'; - $groupRoot = systemGroup::getInfo(1); - $groupRootName = LNG('public_path'); - if($groupRoot && $groupRoot['name'] != 'public'){ - $groupRootName = $groupRoot['name']; - } - - if(systemMember::userAuthGroup(1) == false){ - $publicPath = KOD_GROUP_SHARE.':1/';//不在公共组则只能读取公共组共享目录 - } - $GLOBALS['kodPathAuthCheck'] = true; - $listPublic = $this->_path(_DIR($publicPath),$checkFile,true); - if($publicPath == KOD_GROUP_PATH.':1/'){ - if(!path_group_can_read('1')){ - $listPublic=array("folderList"=>array(),'fileList'=>array()); - } - } - // 原来的代码 - $listRoot = $this->_path(_DIR(MYHOME),$checkFile,true); - //$projectPath = 'C:/www/masterlab/app/plugin/document/kod/data/project/1/home/'; - //$listRoot = $this->_path(_DIR($listRoot),$checkFile,true); - if ($checkFile) {//编辑器 - $root = array_merge($listRoot['folderList'],$listRoot['fileList']); - $public = array_merge($listPublic['folderList'],$listPublic['fileList']); - }else{//文件管理器 - $root = $listRoot['folderList']; - $public = $listPublic['folderList']; - //$this->_selfRootLoad($root);//自己的根目录 含有我的共享和回收站 - } - - $rootIsparent = count($root)>0?true:false; - $publicIsparent = count($public)>0?true:false; - $treeData = array( - 'myHome'=>array( - 'name' => LNG('project_root_path'), - 'menuType' => "menu-tree-root", - 'ext' => "tree-self", - 'children' => $root, - 'path' => MYHOME, - 'type' => 'folder', - 'open' => true, - 'isParent' => true - ), - 'fav'=>array( - 'name' => LNG('fav'), - 'ext' => "tree-fav", - 'menuType' => "menu-tree-fav-root", - 'children' => $fav, - 'path' => KOD_USER_FAV, - 'type' => 'folder', - 'open' => true, - 'isParent' => count($fav)>0?true:false - ), - 'myRecycle'=>array( - 'name' => '回收站', - 'menuType' => "menu-tree-root", - 'ext' => "recycle", - 'children' => $this->_path(USER_RECYCLE,$checkFile,true), - 'path' => '{userRecycle}/', - 'type' => 'folder', - 'open' => false, - 'isParent' => true - ), - 'myShare'=>array( - 'name' => '分 享', - 'menuType' => "menu-tree-root", - 'ext' => "path-self-share", - 'children' => [], - 'path' => '{userShare}:'.$this->user['userID'].'/', - 'type' => 'folder', - 'open' => false, - 'isParent' => false - ), - - 'public'=>array( - 'name' => $groupRootName, - 'menuType' => "menu-tree-group-root menu-tree-group-public", - 'ext' => "group-public", - 'children' => $public, - - 'path' => $publicPath, - 'type' => 'folder', - 'open' => true, - 'isParent' => $publicIsparent - ), - 'myGroup'=>array( - 'name' => LNG('my_kod_group'),//TODO - 'menuType' => "menu-tree-group-root", - 'ext' => "group-self-root", - 'children' => $this->_groupSelf(), - - 'path' => KOD_GROUP_ROOT_SELF, - 'type' => 'folder', - 'open' => true, - 'isParent' => true - ), - 'group'=>array( - 'name' => LNG('kod_group'), - 'menuType' => "menu-tree-group-root", - 'ext' => "group-root", - 'children' => $this->_groupTree('1'), - - 'path' => KOD_GROUP_ROOT_ALL, - 'type' => 'folder', - 'open' => true, - 'isParent' => true - ), - ); - /* - $treeData = array( - 'myHome'=>array( - 'name' => LNG('project_root_path'), - 'menuType' => "menu-tree-root", - 'ext' => "tree-self", - 'children' => $root, - 'path' => MYHOME, - 'type' => 'folder', - 'open' => true, - 'isParent' => $rootIsparent - ), - ); - */ - if(count($treeData['myRecycle']['children'])<=0){ - $treeData['myRecycle']['ext'] = 'recycle-full'; - } - - - //编辑器简化树目录 - if($app == 'editor' || defined("KODFILE")){ - unset($treeData['myGroup']); - unset($treeData['group']); - unset($treeData['public']); - //管理员,优化编辑器树目录 - if($GLOBALS['isRoot']==1){ - $listWeb = $this->_path(_DIR(WEB_ROOT),$checkFile,true); - $web = array_merge($listWeb['folderList'],$listWeb['fileList']); - $treeData['webroot'] = array( - 'name' => get_path_this(WEB_ROOT), - 'menuType' => "menu-tree-root", - 'ext' => "folder", - 'children' => $web, - - 'path' => WEB_ROOT, - 'type' => 'folder', - 'open' => true, - 'isParent' => true - ); - } - } - - $result = array(); - foreach ($treeData as $key => $value) { //为空则不展示 - if( count($value['children'])<1 && - in_array($key,array('myGroup','group')) ){//'fav' - continue; - //$value['isParent'] = false; - } - $result[] = $value; - } - show_json($result); - } - - private function _rootListGroup(){ - return $this->config['settingSystem']['rootListGroup'] == 1; - } - private function _rootListUser(){ - return $this->config['settingSystem']['rootListUser'] == 1; - } - - //session记录用户可以管理的组织;继承关系 - private function _groupTree($nodeId){//获取组织架构的用户和子组织;为空则获取根目录 - $groupSql = systemGroup::loadData(); - $groups = $groupSql->get(array('parentID',$nodeId)); - $groupList = $this->_makeNodeList($groups); - - //根群组不显示子群组 - if( $nodeId == '1' && !$this->_rootListGroup() ){ - $groupList = array(); - } - //根群组不显示用户 - if( $nodeId == '1' || !$this->_rootListUser() ){ - return $groupList; - } - - //user - $userList = array(); - $user = systemMember::userAtGroup($nodeId); - foreach($user as $key => $val){ - $treeIcon = 'user'; - if ($val['userID'] == $this->user['userID']) { - $treeIcon = 'user-self'; - } - $userList[] = array( - 'name' => $val['name'].' '.LNG('users_share'), - 'menuType' => "menu-tree-user", - 'ext' => $treeIcon, - - 'path' => KOD_USER_SHARE.':'.$val['userID'].'/', - 'type' => 'folder', - 'open' => false, - 'isParent' => false - ); - } - return array_merge($groupList,$userList); - } - //session记录用户可以管理的组织;继承关系 - private function _groupSelf(){//获取组织架构的用户和子组织;为空则获取根目录 - $groups = array(); - foreach ($this->user['groupInfo'] as $groupID=>$val){ - if($groupID=='1') continue; - $item = systemGroup::getInfo($groupID); - if($item){ - $groups[] = $item; - } - } - return $this->_makeNodeList($groups); - } - private function _makeNodeList($list){ - $groupList = array(); - if(!is_array($list)){ - return $groupList; - } - foreach($list as $key => $val){ - $groupPath = KOD_GROUP_PATH; - $auth = systemMember::userAuthGroup($val['groupID']); - $menuGroup = 'menu-tree-group'; - if($auth==false){//是否为该组内部成员 - $groupPath = KOD_GROUP_SHARE; - $treeIcon = 'group-guest'; - }else{ - $treeIcon = 'group-self'; - $menuGroup .= " menu-tree-group-self"; - } - $hasChildren = true; - $userList = array(); - if( $this->_rootListUser() ){ - $userList = systemMember::userAtGroup($val['groupID']); - } - if(count($userList)==0 && $val['children']==''){ - $hasChildren = false; - } - $groupList[] = array( - 'name' => $val['name'], - 'type' => 'folder', - 'path' => $groupPath.':'.$val['groupID'].'/', - 'ext' => $treeIcon, - 'tree_icon' => $treeIcon,//request - - 'menuType' => $menuGroup, - 'isParent' => $hasChildren - ); - } - return $groupList; - } - public function pathDelete(){ - $list = json_decode($this->in['dataArr'],true); - $userRecycle = iconv_system(USER_RECYCLE); - if (!is_dir($userRecycle)){ - mk_dir($userRecycle); - } - - $removeToRecycle = $this->config['user']['recycleOpen']; - if(!path_writeable($userRecycle) || - isset($this->in['shiftDelete']) - ){//回收站不可写则直接删除;传入直接删除参数 - $removeToRecycle = '0'; - } - $success=0;$error=0; - foreach ($list as $val) { - if(!$val['path'] || $val['path'] == '/'){ - $error++; - continue; - } - $pathThis = _DIR($val['path']); - $GLOBALS['beforePathType'] = $GLOBALS['kodPathType']; - $GLOBALS['kodBeforePathId']= $GLOBALS['kodPathId']; - //不是自己目录的分享列表,不支持删除 - if( $GLOBALS['kodPathType'] == KOD_USER_SHARE && - $GLOBALS['kodPathId'] != $_SESSION['kodUser']['userID'] && - substr_count(trim($val['path'],'/'),'/') <= 1){ //分享根项目 - show_json(LNG('no_permission_write'),false); - } - if(!path_writeable($pathThis)){ - $error++; - continue; - } - - // 群组文件删除,移动到个人回收站。 - if( $removeToRecycle !="1" || - $GLOBALS['kodPathType'] == KOD_USER_RECYCLE ){//回收站删除 or 共享删除等直接删除 - Hook::trigger("explorer.pathRemoveBefore",$pathThis); - if ($val['type'] == 'folder') { - if(del_dir($pathThis)) $success ++; - else $error++; - }else{ - if(del_file($pathThis)) $success++; - else $error++; - } - Hook::trigger("explorer.pathRemoveAfter",$pathThis); - }else{ - //重置pathType等数据 - $GLOBALS['beforePathType'] = KOD_USER_SHARE; - $GLOBALS['kodBeforePathId']= $_SESSION['kodUser']['userID']; - - $autoPath = $userRecycle.get_path_this($pathThis); - $autoPath = get_filename_auto($autoPath,date('_H-i-s'),'folder_rename');//已存在则追加时间 - if (move_path($pathThis,$autoPath,'',$this->config['user']['fileRepeat'])) { - $success++; - Hook::trigger("explorer.pathMoveAfter",$pathThis,$autoPath); - }else{ - $error++; - } - } - } - $state = $error==0?true:false; - $info = $success.' '.LNG('success').', '.$error.' '.LNG('error'); - if ($error==0) { - $info = LNG('remove_success'); - } - show_json($info,$state); - } - - private function _clearTemp(){ - $path = iconv_system(USER_TEMP); - $time = @filemtime($path); - if(time() - $time > 600){//10min without updload - del_dir($path); - mk_dir($path); - } - } - - public function pathDeleteRecycle(){ - $userRecycle = iconv_system(USER_RECYCLE); - if(!isset($this->in['dataArr'])){ - Hook::trigger("explorer.pathRemoveBefore",$userRecycle); - if (!del_dir($userRecycle)) { - Hook::trigger("explorer.pathRemoveAfter",$userRecycle); - show_json(LNG('remove_fali'),false); - }else{ - mkdir($userRecycle); - $this->_clearTemp(); - show_json(LNG('recycle_clear_success'),true); - } - } - $list = json_decode($this->in['dataArr'],true); - $success = 0;$error = 0; - foreach ($list as $val) { - $pathFull = _DIR($val['path']); - Hook::trigger("explorer.pathRemoveBefore",$pathFull); - if ($val['type'] == 'folder') { - if(del_dir($pathFull)) $success ++; - else $error++; - }else{ - if(del_file($pathFull)) $success++; - else $error++; - } - Hook::trigger("explorer.pathRemoveAfter",$pathFull); - } - if (count($list) == 1) { - if ($success) show_json(LNG('remove_success')); - else show_json(LNG('remove_fali'),false); - }else{ - $code = $error==0?true:false; - show_json(LNG('remove_success').$success.'success,'.$error.'error',$code); - } - } - - public function pathCopy(){ - session_start();//re start - $theList = json_decode($this->in['dataArr'],true); - foreach ($theList as $key => $value) { - _DIR(rawurldecode($value['path']));//检测来源权限 - } - $_SESSION['pathCopy']= json_encode($theList); - $_SESSION['pathCopyType']='copy'; - show_json(LNG('copy_success')); - } - public function pathCute(){ - session_start();//re start - $theList = json_decode($this->in['dataArr'],true); - foreach ($theList as $key => &$value) { - $value['path'] = rawurldecode($value['path']); - _DIR($value['path']); - } - $_SESSION['pathCopy']= json_encode($theList); - $_SESSION['pathCopyType']='cute'; - show_json(LNG('cute_success')); - } - public function pathCuteDrag(){ - $clipboard = json_decode($this->in['dataArr'],true); - $pathPast=$this->path; - $GLOBALS['beforePathType'] = $GLOBALS['kodPathType']; - $GLOBALS['kodBeforePathId'] = $GLOBALS['kodPathId']; - - if (!path_writeable($this->path)) show_json(LNG('no_permission_write'),false); - $success=0;$error=0;$data = array(); - foreach ($clipboard as $val) { - path_can_copy_move($val['path'],$this->in['path']); - $pathCopy = _DIR($val['path']); - $filename = get_path_this($pathCopy); - $autoPath = get_filename_auto($pathPast.$filename,'',$this->config['user']['fileRepeat']); - - Hook::trigger("explorer.pathMoveBefore",$pathCopy,$autoPath); - if (move_path($pathCopy,$autoPath,'',$this->config['user']['fileRepeat'])) { - $success++; - Hook::trigger("explorer.pathMoveAfter",$pathCopy,$autoPath); - $data[] = _DIR_OUT(iconv_app($autoPath)); - }else{ - $error++; - } - } - $state = $error==0?true:false; - $msg = $success.' success,'.$error.' error'; - if($error == 0){ - $msg = LNG('success'); - } - show_json($msg,$state,$data); - } - - public function pathCopyDrag(){ - $clipboard = json_decode($this->in['dataArr'],true); - $pathPast=$this->path; - $GLOBALS['beforePathType'] = $GLOBALS['kodPathType']; - $GLOBALS['kodBeforePathId'] = $GLOBALS['kodPathId']; - - if (!path_writeable($this->path)) show_json(LNG('no_permission_write'),false); - $success=0;$error=0;$data = array(); - foreach ($clipboard as $val) { - path_can_copy_move($val['path'],$this->in['path']); - $pathCopy = _DIR($val['path']); - _DIR($this->in['path']);//重置pathType等数据 - $filename = get_path_this($pathCopy); - $autoPath = get_filename_auto($pathPast.$filename,'',$this->config['user']['fileRepeat']); - if ($this->in['filename_auto']==1 && - trim($autoPath,'/') == trim($pathCopy,'/')) { - $autoPath = get_filename_auto($pathPast.$filename,'','folder_rename'); - } - - Hook::trigger("explorer.pathCopyBefore",$pathCopy,$autoPath); - if(copy_dir($pathCopy,$autoPath)){ - $success++; - Hook::trigger("explorer.pathCopyAfter",$autoPath); - $data[] = _DIR_OUT(iconv_app($autoPath)); - }else{ - $error++; - } - } - $state = $error==0?true:false; - $msg = $success.' success,'.$error.' error'; - if($error == 0){ - $msg = LNG('success'); - } - show_json($msg,$state,$data); - } - - public function clipboard(){ - if(isset($this->in['clear'])){ - session_start(); - $_SESSION['pathCopy'] = json_encode(array()); - $_SESSION['pathCopyType'] = ''; - return; - } - $clipboard = json_decode($_SESSION['pathCopy'],true); - if(!$clipboard){ - $clipboard = array(); - } - show_json($clipboard,true,$_SESSION['pathCopyType']); - } - public function pathPast(){ - if (!isset($_SESSION['pathCopy'])){ - show_json(LNG('clipboard_null'),false,array()); - } - - $pathPast=$this->path;//之前就自动处理权限判断; - session_start();//re start - $error = ''; - $data = array(); - $clipboard = json_decode($_SESSION['pathCopy'],true); - $copyType = $_SESSION['pathCopyType']; - $GLOBALS['beforePathType'] = $GLOBALS['kodPathType']; - $GLOBALS['kodBeforePathId'] = $GLOBALS['kodPathId']; - if (!path_writeable($pathPast)) show_json(LNG('no_permission_write'),false,$data); - - if ($copyType == 'copy') { - }else{ - $_SESSION['pathCopy'] = json_encode(array()); - $_SESSION['pathCopyType'] = ''; - } - session_write_close(); - - $GLOBALS['kodPathAuthCheck'] = true;//粘贴来源检测权限;和粘贴到目标位置冲突 - $listNum = count($clipboard); - if ($listNum == 0) { - show_json(LNG('clipboard_null'),false,$data); - } - for ($i=0; $i < $listNum; $i++) { - $pathCopy = _DIR($clipboard[$i]['path']); - //重置pathType等数据;从回收站剪切出来不处理 - if($copyType == 'cute' && $GLOBALS['kodPathType'] == KOD_USER_RECYCLE){ - }else{ - _DIR($this->in['path']);//重置pathType等数据 - } - $filename = get_path_this($pathCopy); - $filenameOut = iconv_app($filename); - if (!file_exists($pathCopy)){ - $error .= "<li>{$filenameOut}".LNG('copy_not_exists')."</li>"; - continue; - } - if ($clipboard[$i]['type'] == 'folder'){ - if ($pathCopy == substr($pathPast,0,strlen($pathCopy))){ - $error .="<em style='color:#fff;'>{$filenameOut}".LNG('current_has_parent')."</em>"; - continue; - } - } - $autoPath = get_filename_auto($pathPast.$filename,'',$this->config['user']['fileRepeat']); - if($pathCopy == $autoPath){ - continue;//复制粘贴到原始位置 - } - $filename = get_path_this($autoPath); - if ($copyType == 'copy') { - Hook::trigger("explorer.pathCopyBefore",$pathCopy,$autoPath); - copy_dir($pathCopy,$autoPath); - Hook::trigger("explorer.pathCopyAfter",$autoPath); - }else{ - Hook::trigger("explorer.pathMoveBefore",$pathCopy,$autoPath); - move_path($pathCopy,$autoPath,'',$this->config['user']['fileRepeat']); - Hook::trigger("explorer.pathMoveAfter",$pathCopy,$autoPath); - } - $data[] = _DIR_OUT(iconv_app($autoPath)); - } - if ($copyType == 'copy') { - $msg=LNG('past_success').$error; - }else{ - $msg=LNG('cute_past_success').$error; - } - $state = ($error ==''?true:false); - show_json($msg,$state,$data); - } - public function fileDownload(){ - file_put_out($this->path,true); - } - //文件下载后删除,用于文件夹下载 - public function fileDownloadRemove(){ - $path = get_path_this(_DIR_CLEAR($this->in['path'])); - $path = iconv_system(USER_TEMP.$path); - $fileName = substr(get_path_this($path),10);//前10个字符为随机前缀 - file_put_out($path,true,$fileName); - } - public function zipDownload(){ - $userTemp = iconv_system(USER_TEMP); - if(!file_exists($userTemp)){ - mkdir($userTemp); - }else{//清除未删除的临时文件,一天前 - $list = path_list($userTemp,true,false); - $maxTime = 3600*6;//自动清空一天前的缓存 - if ($list['fileList']>=1) { - for ($i=0; $i < count($list['fileList']); $i++) { - $item = $list['fileList'][$i]; - $createTime = $item['mtime'];//最后修改时间 - if(time() - $createTime >$maxTime){ - del_file($item['path'].$item['name']); - } - } - } - } - $zipFile = $this->zip($userTemp,rand_string(9).'-',fasle);//下载文件夹删除;不检测和记录空间变更 - show_json(LNG('zip_success'),true,get_path_this($zipFile)); - } - public function zip($zipPath='',$namePre = "",$checkSpaceChange = true){ - ignore_timeout(); - $zipList = json_decode($this->in['dataArr'],true); - $listNum = count($zipList); - $files = array(); - for ($i=0; $i < $listNum; $i++) { - $item = rtrim(_DIR($zipList[$i]['path']),'/');//处理成系统 文件编码 - if(file_exists($item)){ - $files[] = $item; - } - } - if(count($files)==0){ - show_json(LNG('not_exists'),false); - } - - //to type - $fileType = 'zip'; - if(isset($this->in['fileType'])){ - $fileType = $this->in['fileType']; - } - - //指定目录 - $basicPath = $zipPath; - if ($zipPath==''){ - $basicPath =get_path_father($files[0]); - } - if (!path_writeable($basicPath)) { - show_json(LNG('no_permission_write'),false); - } - - if (count($files) == 1){ - $pathThisName=get_path_this($files[0]); - }else{ - $pathThisName=get_path_this(get_path_father($files[0])); - } - $zipname = $basicPath.$namePre.$pathThisName.'.'.$fileType; - $zipname = get_filename_auto($zipname,'','rename');//已存在重命名 - - if($checkSpaceChange){Hook::trigger("explorer.zipBefore",$zipname);} - $result = KodArchive::create($zipname,$files); - if($checkSpaceChange){Hook::trigger("explorer.zipAfter",$zipname);} - - if ($zipPath=='') { - if(file_exists($zipname)){ - $info = LNG('zip_success').LNG('size').":".size_format(filesize($zipname)); - show_json($info,true,_DIR_OUT(iconv_app($zipname)) ); - }else{ - show_json(LNG.error,false); - } - }else{ - return iconv_app($zipname); - } - } - public function unzip(){ - ignore_timeout(); - $path = $this->path; - if(!file_exists($path)){ - show_json(LNG("not_exists"),false); - } - $name = get_path_this($path); - $name = substr($name,0,strrpos($name,'.')); - $ext = get_path_ext($path); - - $unzipToAdd = ''; - $unzipTo = get_path_father($path); - if(isset($this->in['toThis'])){//直接解压 - }else if (isset($this->in['pathTo'])) {//解压到指定位置 - $unzipTo = _DIR($this->in['pathTo']); - }else{ - $unzipToAdd = $name; - } - - $this->_mkdir($unzipTo); - if (!path_writeable($unzipTo)){//所在目录不可写 - show_json(LNG('no_permission_write'),false); - } - $unzipTo = $unzipTo.$unzipToAdd; - Hook::trigger("explorer.unzipBefore",$path,$unzipTo); - - //解压缩 - $unzipPart = '-1'; - if(isset($this->in['unzipPart'])){ - $unzipPart = $this->in['unzipPart']; - } - $result = KodArchive::extract($path,$unzipTo,$unzipPart); - if (!$result['code']) { - show_json("Error : ".$result['data'],false); - }else{ - Hook::trigger("explorer.unzipAfter",$path); - show_json(LNG('unzip_success')); - } - } - - public function unzipList(){ - if(isset($this->in['index'])){ - $download = isset($this->in['download'])?true:false; - KodArchive::filePreview($this->path,$this->in['index'],$download,$this->in['name']); - }else{ - $result = KodArchive::listContent($this->path); - show_json($result['data'],$result['code']); - } - } - - public function imageRotate(){ - $cm = new ImageThumb($this->path,'file'); - $result = $cm->imgRotate($this->path,intval($this->in['rotate'])); - if($result){ - show_json(LNG('success')); - }else{ - show_json(LNG('error'),false); - } - } - //缩略图 - public function image(){ - $thumbWidth = 250; - if(isset($this->in['thumbWidth'])){ - $thumbWidth = intval($this->in['thumbWidth']);//自定义预览大图 - } - if(substr($this->path,0,4) == 'http'){ - header('Location: '.$this->in['path']); - exit; - } - if (@filesize($this->path) <= 1024*50 || - !function_exists('imagecolorallocate') || - get_path_ext($this->path) == 'gif') {//小于50k、不支持gd库、gif图 不再生成缩略图 - file_put_out($this->path,false); - return; - } - if (!is_dir(DATA_THUMB)){ - mk_dir(DATA_THUMB); - } - $image = $this->path; - $imageMd5 = @md5_file($image).'_'.$thumbWidth;//文件md5 - if (strlen($imageMd5)<5) { - $imageMd5 = md5($image).'_'.$thumbWidth; - } - $imageThumb = DATA_THUMB.$imageMd5.'.png'; - if (!file_exists($imageThumb)){//如果拼装成的url不存在则没有生成过 - if (get_path_father($image)==DATA_THUMB){//当前目录则不生成缩略图 - $imageThumb=$this->path; - }else { - $cm = new ImageThumb($image,'file'); - $cm->prorate($imageThumb,$thumbWidth,$thumbWidth);//生成等比例缩略图 - } - } - if (!file_exists($imageThumb) || - filesize($imageThumb)<100){//缩略图生成失败则使用原图 - $imageThumb=$this->path; - } - file_put_out($imageThumb,false); - } - - // 远程下载 - public function serverDownload() { - $uuid = 'download_'.$this->in['uuid']; - if ($this->in['type'] == 'percent') {//获取下载进度 - if (isset($_SESSION[$uuid])){ - $info = $_SESSION[$uuid]; - $result = array( - 'supportRange' => $info['supportRange'], - 'uuid' => $this->in['uuid'], - 'length' => (int)$info['length'], - 'name' => $info['name'], - 'size' => (int)@filesize(iconv_system($info['path'])), - 'time' => mtime() - ); - show_json($result); - }else{ - show_json('uuid_not_set',false); - } - }else if($this->in['type'] == 'remove'){//取消下载;文件被删掉则自动停止 - $theFile = str_replace('.downloading','',$_SESSION[$uuid]['path']); - del_file($theFile.'.downloading'); - del_file($theFile.'.download.cfg'); - unset($_SESSION[$uuid]); - show_json('remove_success',false); - } - //下载 - $savePath = _DIR(rawurldecode($this->in['savePath'])); - $this->_mkdir($savePath); - if (!$savePath || !path_writeable($savePath)){ - show_json(LNG('no_permission_write'),false); - } - $url = rawurldecode($this->in['url']); - if(isset($this->in['name'])){ - $filename = rawurldecode($this->in['name']); - }else{ - $header = url_header($url); - if (!$header){ - show_json(LNG('download_error_exists'),false); - } - $filename = $header['name']; - } - - $saveFile = $savePath._DIR_CLEAR($filename); - if (!checkExt($saveFile)){//不允许的扩展名 - $saveFile = $savePath.date('h:i:s').'.dat'; - } - $saveFile = get_filename_auto(iconv_system($saveFile),'',$this->config['user']['fileRepeat']); - $saveFileTemp = $saveFile.'.downloading'; - Hook::trigger("explorer.serverDownloadBefore",$saveFile); - session_start(); - $_SESSION[$uuid] = array( - 'supportRange' => $header['supportRange'], - 'length'=> $header['length'], - 'path' => $saveFileTemp, - 'name' => get_path_this($saveFile) - ); - session_write_close(); - $result = Downloader::start($url,$saveFile); - session_start();unset($_SESSION[$uuid]);session_write_close(); - if($result['code']){ - $name = get_path_this(iconv_app($saveFile)); - Hook::trigger("explorer.serverDownloadAfter",$saveFile); - show_json(LNG('download_success'),true,_DIR_OUT(iconv_app($saveFile)) ); - }else{ - show_json($result['data'],false); - } - } - - //通用缩略图 - public function fileThumb(){ - Hook::trigger("explorer.fileThumbStart",$this->path); - } - //通用预览 - public function fileView(){ - Hook::trigger("explorer.fileViewStart",$this->path); - if(!isset($this->in['path'])){ - show_tips('参数错误!'); - } - $this->tpl = TEMPLATE.'api/'; - $this->display('view.html'); - } - //通用保存 - public function fileSave(){ - Hook::trigger("explorer.fileSaveStart",$this->path); - } - //代理输出 - public function fileProxy(){ - $download = isset($_GET['download']); - $filename = isset($_GET['downFilename'])?$_GET['downFilename']:false; - file_put_out($this->path,$download,$filename); - } - - - /** - * 上传,html5拖拽 flash 多文件 - */ - public function fileUpload(){ - $savePath = _DIR($this->in['upload_to']); - if (!path_writeable($savePath)) show_json(LNG('no_permission_write'),false); - if ($savePath == '') show_json(LNG('upload_error_big'),false); - - if (strlen($this->in['fullPath']) > 1) {//folder drag upload - $fullPath = _DIR_CLEAR(rawurldecode($this->in['fullPath'])); - $fullPath = get_path_father($fullPath); - $fullPath = iconv_system($fullPath); - $savePath = $savePath.$fullPath; - mk_dir($savePath); - // if ($this->_mkdir($savePath.$fullPath)) { - // $savePath = $savePath.$fullPath; - // } - } - //分片上传 - $repeatAction = $this->config['user']['fileRepeat']; - $tempDir = iconv_system(USER_TEMP); - mk_dir($tempDir); - if (!path_writeable($tempDir)) show_json(LNG('no_permission_write'),false); - upload($savePath,$tempDir,$repeatAction); - } - - //分享根目录 - private function _pathShare(&$list){ - $arr = explode(',',$GLOBALS['kodPathId']); - - //不展示用户时;屏蔽获取其他人分享列表 - if( $arr[0] != $_SESSION['kodUser']['userID'] && !$this->_rootListUser()){ - return; - } - $shareList = systemMember::userShareList($arr[0]); - $beforeShareId = $GLOBALS['kodPathIdShare']; - foreach ($shareList as $key => $value) { - $thePath = _DIR(KOD_USER_SHARE.':'.$arr[0].'/'.$value['name']); - $value['path'] = $value['name']; - $value['atime']='';$value['ctime']=''; - $value['mode']='';$value['isReadable'] = 1; - $value['isWriteable'] = 1; - $value['exists'] = intval(file_exists($thePath)); - $value['metaInfo'] = 'path-self-share'; - $value['menuType'] = "menu-share-path"; - if(is_file($thePath)){ - $value['size'] = get_filesize($thePath);; - } - - //分享列表oexe - if(get_path_ext($value['name']) == 'oexe' && is_file($thePath) ){ - $json = json_decode(@file_get_contents($thePath),true); - if(is_array($json)) $value = array_merge($value,$json); - } - if ($value['type']=='folder') { - $value['ext'] = 'folder'; - $list['folderList'][] = $value; - }else{ - $list['fileList'][] = $value; - } - } - $list['pathReadWrite'] = 'readable'; - $GLOBALS['kodPathIdShare'] = $beforeShareId; - if($arr[0] == $this->user['userID']){//自己分享列表 - $list['shareList'] = $shareList; - } - return $list; - } - - //我的收藏根目录 - private function _pathFav(&$list,$checkFile = false){ - $favData=new FileCache(USER.'data/fav.php'); - $favList = $favData->get(); - $GLOBALS['kodPathAuthCheck'] = true;//组权限发生变更。导致访问groupPath 无权限退出问题 - foreach($favList as $key => $val){ - $thePath = _DIR($val['path']); - $hasChildren = path_haschildren($thePath,$checkFile); - if( !isset($val['type'])){ - $val['type'] = 'folder'; - } - if( $val['type'] == 'folder' && $val['ext'] != 'tree-fav'){ - $hasChildren = true; - } - $cell = array( - 'name' => $val['name'], - 'ext' => $val['ext'], - 'menuType' => "menu-fav-path", - 'atime' => '', - 'ctime' => '', - 'mode' => '', - 'isReadable' => 1, - 'isWriteable' => 1, - 'exists' => intval(file_exists($thePath)), - 'metaInfo' => 'tree-fav', - - 'path' => $val['path'], - 'type' => $val['type'], - 'open' => false, - 'isParent' => false//$hasChildren - ); - - if( strstr($val['path'],KOD_USER_SHARE)|| - strstr($val['path'],KOD_USER_FAV) || - strstr($val['path'],KOD_GROUP_ROOT_SELF) || - strstr($val['path'],KOD_GROUP_ROOT_ALL) - ){ - $cell['exists'] = 1; - } - - //分享列表oexe - if(get_path_ext($val['name']) == 'oexe' && is_file($thePath)){ - $json = json_decode(@file_get_contents($thePath),true); - if(is_array($json)) $val = array_merge($val,$json); - } - if ($val['type']=='folder') { - $list['folderList'][] = $cell; - }else{ - $list['fileList'][] = $cell; - } - } - $GLOBALS['kodPathAuthCheck'] = false; - $GLOBALS['kodPathType'] = KOD_USER_FAV; - $list['pathReadWrite'] = 'readable'; - return $list; - } - - //用户组列表 - private function _pathGroup(&$list,$groupRootType){ - if($groupRootType == KOD_GROUP_ROOT_SELF){ - $dataList = $this->_groupSelf(); - }else{ - $dataList = $this->_groupTree('1'); - } - $GLOBALS['kodPathAuthCheck'] = true;//组权限发生变更。导致访问groupPath 无权限退出问题 - foreach($dataList as $key => $val){ - $cell = array( - 'name' => $val['name'], - 'menuType' => "menu-group-root", - 'atime' => '', - 'ctime' => '', - 'mode' => '', - 'isReadable' => 1, - 'isWriteable' => 1, - 'exists' => 1, - - 'path' => $val['path'], - 'ext' => $val['ext'], - 'type' => 'folder', - 'open' => false, - 'isParent' => false//$val['isParent'] - ); - if ($val['type']=='folder') { - $list['folderList'][] = $cell; - }else{ - $list['fileList'][] = $cell; - } - } - $GLOBALS['kodPathAuthCheck'] = false; - $GLOBALS['kodPathType'] = $groupRootType; - $list['pathReadWrite'] = 'readable'; - return $list; - } - - //获取文件列表&哦exe文件json解析 - private function _path($dir,$listFile=true,$checkChildren=false){ - $exName = explode(',',$this->config['settingSystem']['pathHidden']); - //当前目录 - $thisPath = _DIR_OUT(iconv_app($dir)); - if($GLOBALS['kodPathType'] == KOD_USER_SHARE && strpos(trim($dir,'/'),'/')===false ) { - $thisPath = $dir; - } - $list = array( - 'folderList' => array(), - 'fileList' => array(), - 'info' => array(), - 'pathReadWrite' =>'notExists', - 'thisPath' => $thisPath - ); - //真实目录读写权限判断 - if (!file_exists($dir)) { - $list['pathReadWrite'] = "notExists"; - }else if (path_writeable($dir)) { - $list['pathReadWrite'] = 'writeable'; - }else if (path_readable($dir)) { - $list['pathReadWrite'] = 'readable'; - }else{ - $list['pathReadWrite'] = 'notReadable'; - } - - //处理 - if ($dir===false){ - return $list; - }else if ($GLOBALS['kodPathType'] == KOD_USER_SHARE && - !strstr(trim($this->in['path'],'/'),'/')) {//分享根目录 {userShare}:1/ {userShare}:1/test/ - $list = $this->_pathShare($list); - }else if ($GLOBALS['kodPathType'] == KOD_USER_FAV) {//收藏根目录 {userFav} - $list = $this->_pathFav($list); - }else if ($GLOBALS['kodPathType'] == KOD_GROUP_ROOT_SELF) {//自己用户组目录;KOD_GROUP_ROOT_SELF - $list = $this->_pathGroup($list,$GLOBALS['kodPathType']); - }else if ($GLOBALS['kodPathType'] == KOD_GROUP_ROOT_ALL) {//全部用户组目录;KOD_GROUP_ROOT_ALL - $list = $this->_pathGroup($list,$GLOBALS['kodPathType']); - }else{ - $listFile = path_list($dir,$listFile,true);//$checkChildren - $list['folderList'] = $listFile['folderList']; - $list['fileList'] = $listFile['fileList']; - } - $fileListNew = array(); - $folderListNew = array(); - foreach ($list['fileList'] as $key => $val) { - if (in_array($val['name'],$exName)) continue; - $val['ext'] = get_path_ext($val['name']); - if ($val['ext'] == 'oexe' && !isset($val['content'])){ - $path = iconv_system($val['path']); - $json = json_decode(@file_get_contents($path),true); - if(is_array($json)) $val = array_merge($val,$json); - } - $fileListNew[] = $val; - } - foreach ($list['folderList'] as $key => $val) { - if (in_array($val['name'],$exName)) continue; - $folderListNew[] = $val; - } - $list['fileList'] = $fileListNew; - $list['folderList'] = $folderListNew; - - $list = _DIR_OUT($list); - $this->_roleCheckInfo($list); - - - return $list; - } - private function _roleCheckInfo(&$list){ - if(!$GLOBALS['kodPathType']){ - $list['info'] = array("pathType"=>'',"role"=>'',"id"=>'','name'=>''); - return; - } - $list['info']= array( - "pathType" => $GLOBALS['kodPathType'], - "role" => $GLOBALS['isRoot']?'owner':'guest', - "id" => $GLOBALS['kodPathId'], - 'name' => '', - ); - - if ($GLOBALS['kodPathType'] == KOD_USER_SHARE) { - $GLOBALS['kodPathId'] = explode(':',$GLOBALS['kodPathId']); - $GLOBALS['kodPathId'] = $GLOBALS['kodPathId'][0];//id 为前面 - $list['info']['id'] = $GLOBALS['kodPathId']; - $user = systemMember::getInfo($GLOBALS['kodPathId']); - $list['info']['name'] = $user['name']; - - //自己的分享子目录 - if($GLOBALS['kodPathId'] == $this->user["userID"]){ - $list['info']['role'] = "owner"; - } - if($GLOBALS['isRoot']){ - $list['info']['adminRealPath'] = get_path_father($GLOBALS['kodPathPre']); - } - } - //自己管理的目录 - if ($GLOBALS['kodPathType']==KOD_GROUP_PATH || - $GLOBALS['kodPathType']==KOD_GROUP_SHARE) { - $group = systemGroup::getInfo($GLOBALS['kodPathId']); - $list['info']['name'] = $group['name']; - $auth = systemMember::userAuthGroup($GLOBALS['kodPathId']); - if ($auth) { - $list['info']['role'] = 'owner'; - $list['groupSpaceUse'] = $group['config'];//自己 - - //群组权限展示 - $role = $this->config['pathRoleGroup'][$auth]; - $roleArr = role_permission_arr($role['actions']); - $list['info']['groupRole'] = array( - 'name' => $role['name'], - 'style' => $role['style'], - 'authArr' => $roleArr - ); - } - if($GLOBALS['isRoot']){ - $list['groupSpaceUse'] = $group['config'];//自己 - $list['info']['role'] = 'owner'; - $list['info']['adminRealPath'] = $GLOBALS['kodPathPre']; - } - } - } -} diff --git a/plugin/document/kod/app/controller/fav.class.php b/plugin/document/kod/app/controller/fav.class.php deleted file mode 100644 index 99bf8976c..000000000 --- a/plugin/document/kod/app/controller/fav.class.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class fav extends Controller{ - private $sql; - function __construct(){ - parent::__construct(); - $this->sql=new FileCache(USER.'data/fav.php'); - } - - /** - * 获取收藏夹json - */ - public function get() { - show_json($this->sql->get()); - } - - /** - * 添加 - */ - public function add() { - $name = $this->in['name']; - $path = $this->in['path']; - if($this->sql->get($name)){//已存在则自动重命名 - $index = 0; - while ($this->sql->get($name.'('.$index.')')) { - $index ++; - } - $name = $name.'('.$index.')'; - } - $res=$this->sql->set( - $name, - array( - 'name' => $name, - 'path' => $path, - 'ext' => $this->in['ext'], - 'type' => $this->in['type'] - ) - ); - show_json(LNG('success')); - } - - /** - * 编辑 - */ - public function edit() { - $this->in['name'] = $this->in['name']; - $this->in['path'] = $this->in['path']; - $this->in['nameTo'] = $this->in['nameTo']; - $newFav = $this->sql->get($this->in['name']); - if(!isset($newFav['type'])){ - $newFav['type'] = 'folder'; - } - //查找到一条记录,修改为该数组 - $toArray=array( - 'name'=>$this->in['nameTo'], - 'path'=>$this->in['pathTo'], - 'type'=>$newFav['type'] - ); - $this->sql->remove($this->in['name']); - if($this->sql->set($this->in['nameTo'],$toArray)){ - show_json(LNG('success')); - } - show_json(LNG('error_repeat'),false); - } - - /** - * 删除 - */ - public function del() { - $this->in['name'] = $this->in['name']; - if($this->sql->remove($this->in['name'])){ - show_json(LNG('success')); - } - show_json(LNG('error'),false); - } -} diff --git a/plugin/document/kod/app/controller/pluginApp.class.php b/plugin/document/kod/app/controller/pluginApp.class.php deleted file mode 100644 index 668cea01f..000000000 --- a/plugin/document/kod/app/controller/pluginApp.class.php +++ /dev/null @@ -1,221 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -* -* -* 插件管理:页面;列表; -*/ - -class pluginApp extends Controller{ - function __construct() { - parent::__construct(); - } - - //?pluginApp/to/epubReader/index&a=1 - //?pluginApp/to/epubReader/&a=1 ==>ignore index; - public function to() { - $route = $this->in['URLremote']; - if(count($route) >= 3){ - $app = $route[2]; - $action = $route[3]; - - if(count($route) == 3){ - $action = 'index'; - } - $model = $this->loadModel('Plugin'); - if(!$model->checkAuth($app)){ - if(!$_SESSION['kodLogin']){ - show_tips("出错了!您尚未登录",APP_HOST,3); - } - show_tips("出错了!插件未开启,或您没有{$app}插件的权限!"); - } - - $appConfig = $model->getConfig($app); - if(!$appConfig['pluginAuthOpen'] && !$this->checkAccessPlugin()){ - if(!$_SESSION['kodLogin']){ - show_tips("出错了!您尚未登录",APP_HOST,3); - } - show_tips("出错了!插件未开启,或您没有{$app}插件的权限"); - } - Hook::trigger("pluginRun.before",$app.'Plugin.'.$action); - Hook::trigger($app.'Plugin.'.$action.'.before'); - Hook::apply($app.'Plugin.'.$action); - Hook::trigger($app.'Plugin.'.$action.'.after'); - Hook::trigger("pluginRun.after",$app.'Plugin.'.$action); - } - } - - //权限认证 - private function checkAccessPlugin(){ - if( $_SESSION['kodLogin'] == true || - $_SESSION['accessPlugin'] == 'ok' || - $this->checkAccessShare() - ){ - return true; - } - return false; - } - private function checkAccessShare(){ - if(!isset($this->in['path'])){ - return false; - } - $share = KOD_USER_SHARE; - if(substr(urldecode($this->in['path']),0,strlen($share)) == $share){ - return true; - } - return false; - } - - //plugin manager - public function index() { - $this->display('index.html'); - } - - public function appList(){ - $model = $this->loadModel('Plugin'); - $list = $model->viewList(); - show_json($list); - } - - public function changeStatus(){ - if( !isset($this->in['app']) || - !isset($this->in['status'])){ - show_json(LNG('data_not_full'),false); - } - $app = $this->in['app']; - $status = $this->in['status']?1:0; - $model = $this->loadModel('Plugin'); - - //启用插件则检测配置文件,必填字段是否为空;为空则调用配置 - if($status){ - $config = $model->getConfig($app); - $package = $model->getPackageJson($app); - $needConfig = false; - foreach($package['configItem'] as $key=>$item) { - if( (isset($item['require']) && $item['require']) && - (!isset($item['value']) || $item['value'] === '' || $item['value'] === null) && - (!isset($config[$key]) || $config[$key] == "") - ){ - $needConfig = true; - break; - } - } - if($needConfig){ - show_json('needConfig',false); - } - } - $model->changeStatus($app,$status); - $list = $model->viewList(); - show_json($list); - } - - public function setConfig(){ - if( !$this->in['app'] || - !$this->in['value']){ - show_json(LNG('data_not_full'),false); - } - $json = $this->in['value']; - $app = $this->in['app']; - $model = $this->loadModel('Plugin'); - - //重置为默认配置 - if($json == 'reset'){ - $json = $model->getConfigDefault($app); - }else{ - if(!is_array($json)){ - show_json($json,false); - } - } - $model->changeStatus($app,1); - $model->setConfig($app,$json); - show_json(LNG('success')); - } - - // download=>fileSize=>unzip=>remove - public function install(){ - $app = _DIR_CLEAR($this->in['app']); - $appPath = PLUGIN_DIR.$app.'.zip'; - $appPathTemp = $appPath.'.downloading'; - switch($this->in['step']){ - case 'check': - $info = $this->pluginInfo($app); - if(!is_array($info)){ - show_json(false,false); - } - echo json_encode($info); - break; - case 'download': - if(!is_writable(PLUGIN_DIR)){ - show_json(LNG("no_permission_write").': '.PLUGIN_DIR,false); - } - $info = $this->pluginInfo($app); - if(!$info || !$info['code']){ - show_json(LNG('error'),false); - } - $result = Downloader::start($info['data'],$appPath); - show_json($result['data'],!!$result['code'],$app); - break; - case 'fileSize': - if(file_exists($appPath)){ - show_json(filesize($appPath)); - } - if(file_exists($appPathTemp)){ - show_json(filesize($appPathTemp)); - } - show_json(0,false); - break; - case 'unzip': - //hook log - $GLOBALS['isRoot'] = 1; - if(!file_exists($appPath)){ - show_json(LNG("error"),false); - } - $result = KodArchive::extract($appPath,PLUGIN_DIR.$app.'/'); - del_file($appPathTemp); - del_file($appPath); - show_json($result['data'],!!$result['code']); - break; - case 'remove': - del_file($appPathTemp); - del_file($appPath); - show_json(LNG('success')); - break; - case 'update': - show_json(Hook::apply($app.'Plugin.update')); - break; - default:break; - } - } - private function pluginInfo($app){ - $api = $this->config['settings']['pluginServer'].'plugin/install'; - $param = array( - "app" => $app, - "version" => KOD_VERSION, - "versionHash" => $this->config['settingSystem']['versionHash'], - "systemOS" => $this->config['systemOS'], - "phpVersion" => PHP_VERSION, - "channel" => INSTALL_CHANNEL, - "lang" => I18n::getType() - ); - $info = url_request($api,'POST',$param); - $result = false; - if($info && $info['data']){ - $result = json_decode($info['data'],true); - } - return $result; - } - - public function unInstall(){ - if( !$this->in['app']){ - show_json(LNG('data_not_full'),false); - } - $model = $this->loadModel('Plugin'); - $model->remove($this->in['app']); - del_dir(PLUGIN_DIR.$this->in['app']); - $list = $model->viewList(); - show_json($list); - } -} diff --git a/plugin/document/kod/app/controller/setting.class.php b/plugin/document/kod/app/controller/setting.class.php deleted file mode 100644 index b2542bf03..000000000 --- a/plugin/document/kod/app/controller/setting.class.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class setting extends Controller{ - private $sql; - function __construct(){ - parent::__construct(); - } - - /** - * 用户首页展示 - */ - public function index() { - $this->display('index.html'); - } - - /** - * 用户首页展示 - */ - public function slider() { - switch ($this->in['slider']) { - case 'about':show_json(file_get_contents(LANGUAGE_PATH.I18n::getType().'/about.html'));break; - case 'help':show_json(file_get_contents(LANGUAGE_PATH.I18n::getType().'/help.html'));break; - case 'member':break; - case 'fav':break; - case 'user': - case 'theme': - case 'wall': - show_json(array( - 'settingAll' => $this->config['settingAll'], - 'user' => $this->config['user'], - 'wallpageDesktop' => $this->config['settingSystem']['wallpageDesktop'], - 'wallpageLogin' => $this->config['settingSystem']['wallpageLogin'], - )); - break; - case 'system': - if($GLOBALS['isRoot']){ - if(isset($this->in['env_check'])){ - show_json(php_env_check()); - } - $result = $this->config['settingSystem']; - unset($result['systemPassword']); - show_json($result,true); - }else{ - show_json('error',false); - } - break; - default:break; - } - } - - public function phpInfo(){ - phpinfo(); - } - - - //管理员 系统设置全局数据 - public function systemSetting(){ - $settingFile = USER_SYSTEM.'system_setting.php'; - $data = json_decode($this->in['data'],true); - if (!$data) { - show_json(LNG('error'),false); - } - $setting = $GLOBALS['config']['settingSystem']; - foreach ($data as $key => $value){ - if ($key=='menu') { - $setting[$key] = $value; - }else{ - $setting[$key] = rawurldecode($value); - } - } - //为了保存更多的数据;不直接覆盖文件 $data->setting_file; - FileCache::save($settingFile,$setting); - show_json(LNG('success')); - } - - public function systemTools(){ - $action = $this->in['action']; - switch($action){ - case 'clearCache':$this->_clearCache();break; - case 'clearSession':$this->_clearSession();break; - case 'clearUserRecycle':$this->_clearUserRecycle();break; - default:break; - } - show_json(LNG('success'),true); - } - private function clearSession(){ - del_dir(KOD_SESSION); - } - private function _clearCache(){ - del_dir(TEMP_PATH); - mk_dir(TEMP_PATH.'log'); - mk_dir(TEMP_PATH.'thumb'); - } - private function _clearUserRecycle(){ - $sql = systemMember::loadData(); - $user_arr = $sql->get(); - foreach ($user_arr as $key => $user) { - $userPath = iconv_system(USER_PATH.$user['path']."/"); - $pathArr = array( - $userPath.'data/temp', - $userPath.'data/share_temp', - $userPath.'recycle_kod' - ); - foreach ($pathArr as $value) { - del_dir($value); - mk_dir($value); - } - } - } - - /** - * 参数设置 - * 可以同时修改多个:key=a,b,c&value=1,2,3 - * 防xss 做过滤 - */ - public function set(){ - $file = USER.'data/config.php'; - if (!path_writeable(iconv_system($file))) {//配置不可写 - show_json(LNG('no_permission_write_file'),false); - } - $key = $this->in['k']; - $value = $this->in['v']; - if ($key !='' && $value != '') { - $conf = $this->config['user']; - if(!strpos($key,',')){//多个参数,value不能包含',' - $conf[$key] = clear_html($value); - }else{ - $arr_k = explode(',', $key); - $arr_v = explode(',',$value); - $num = count($arr_k); - for ($i=0; $i < $num; $i++) { - $conf[$arr_k[$i]] = clear_html($arr_v[$i]); - } - } - FileCache::save($file,$conf); - show_json(LNG('setting_success')); - }else{ - show_json(LNG('error'),false); - } - } -} diff --git a/plugin/document/kod/app/controller/share.class.php b/plugin/document/kod/app/controller/share.class.php deleted file mode 100644 index 144c60273..000000000 --- a/plugin/document/kod/app/controller/share.class.php +++ /dev/null @@ -1,613 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class share extends Controller{ - private $sql; - private $shareInfo; - private $sharePath; - private $path; - function __construct(){ - parent::__construct(); - $auth = systemRole::getInfo(1);//经过role检测 - - $arrNotCheck = array('commonJs'); - if(substr($this->in['fileUrl'],0,4) == 'http'){ - $arrNotCheck[] = 'fileGet'; - } - if (!in_array(ACT,$arrNotCheck)){ - $this->initShare(); - $this->checkShare(); - $this->assign('canDownload',$this->shareInfo['notDownload']=='1'?0:1); - } - //需要检查下载权限的Action - $arrCheckDownload = array('fileDownload','zipDownload');//'fileProxy','fileGet' - if (in_array(ACT,$arrCheckDownload)){ - if ($this->shareInfo['notDownload']=='1') { - show_json(LNG('share_not_download_tips'),false); - } - } - } - - private function initShare(){ - if(isset($this->in['user'])){ - $this->initShareOld(); - return; - } - $this->path = _DIR($this->in['path']); - $this->shareInfo = $GLOBALS['kodShareInfo']; - $user = systemMember::getInfo($GLOBALS['kodPathId']); - - $userHome = user_home_path($user); - define('USER',USER_PATH.$user['path'].'/'); - define('USER_TEMP',USER.'data/share_temp/'); - define('HOME',$userHome); - } - - private function checkShare(){ - $shareInfo = $this->shareInfo; - if(!$this->shareInfo){ - $this->_error(LNG('share_error_user')); - } - if (isset($shareInfo['timeTo'])&& - strlen($shareInfo['timeTo'])!=0) { - $date = strtotime($shareInfo['timeTo']); - if (time() > $date) { - $this->_error(LNG('share_error_time')); - } - } - //密码检测 - if ($shareInfo['sharePassword']=='') return; - if (!isset($this->in['password'])){ - if ($_SESSION['password_'.$this->in['sid']]==$shareInfo['sharePassword']){ - return; - } - $this->_error('password'); - }else{ - if ($this->in['password'] == $shareInfo['sharePassword']) { - session_start(); - $_SESSION['password_'.$this->in['sid']]=$shareInfo['sharePassword']; - session_write_close(); - show_json('success'); - }else{ - show_json(LNG('share_error_password'),false); - } - } - } - private function initShareOld(){ - if (!isset($this->in['user']) || !isset($this->in['sid'])) { - $this->_error(LNG('share_error_param')); - } - $member = systemMember::loadData(); - $user = $member->get($this->in['user']); - if (!is_array($user) || !isset($user['password'])){ - $this->_error(LNG('share_error_user')); - } - - $userHome = user_home_path($user); - define('USER',USER_PATH.$user['path'].'/'); - define('USER_TEMP',USER.'data/share_temp/'); - define('HOME',$userHome); - $shareData = USER_PATH.$user['path'].'/data/share.php'; - if (!file_exists(iconv_system($shareData))) { - $this->_error(LNG('share_error_user')); - } - $this->sql=new FileCache($shareData); - $list = $this->sql->get(); - if (!isset($this->in['sid']) ||! $list[$this->in['sid']]){ - $this->_error(LNG('share_error_sid')); - } - $this->shareInfo = $list[$this->in['sid']]; - $sharePath = _DIR_CLEAR($this->shareInfo['path']); - if ($user['role'] != '1') { - $sharePath = HOME.ltrim($sharePath,'/'); - } - if ($this->shareInfo['type'] != 'file'){ - $sharePath=rtrim($sharePath,'/').'/'; - } - $sharePath = iconv_system($sharePath); - if (!file_exists($sharePath)) { - $this->_error(LNG('share_error_path')); - } - $this->sharePath = $sharePath; - if($this->shareInfo['type'] == 'file'){ - $this->path = $sharePath; - }else if(isset($this->in['path'])){ - $this->path = $sharePath.$this->_clear($this->in['path']); - }else{ - $this->path = $sharePath; - } - $this->path = _DIR_CLEAR($this->path); - $GLOBALS['kodPathPre'] = iconv_app(_DIR_CLEAR($sharePath)); - //debug_out($GLOBALS['kodPathPre'],$GLOBALS['kodPathId'],$this->shareInfo,$this->path,$sharePath); - } - private function _clear($path){ - return iconv_system(_DIR_CLEAR($path)); - } - - - - private function _error($msg){ - $this->assign('configTheme','mac'); - $this->assign('msg',$msg); - $this->display('tips.html'); - exit; - } - //========================== - //页面统一注入变量 - private function _assignInfo(){ - $config = FileCache::load(USER.'data/config.php'); - if (count($config)<1) { - $config = $GLOBALS['config']['settingDefault']; - } - $this->assign('configTheme',$config['theme']); - $this->shareInfo['sharePassword'] = ''; - $this->shareInfo['path'] = get_path_this(iconv_app($this->path)); - $this->assign('shareInfo',$this->shareInfo); - } - - //下载次数统计 - private function _shareDownloadAdd(){ - $this->shareInfo['numDownload'] = abs(intval($this->shareInfo['numDownload'])) +1; - $this->sql->set($this->in['sid'],$this->shareInfo); - } - - //========================== - /* - * 文件浏览 - */ - public function file() { - $this->shareViewAdd(); - if ($this->shareInfo['type']!='file') { - //$this->shareInfo['name'] = get_path_this($this->path); - } - $size = filesize($this->path); - $this->shareInfo['size'] = size_format($size); - $this->_assignInfo(); - $this->display('file.html'); - } - /* - * 文件夹浏览 - */ - public function folder() { - $this->shareViewAdd(); - if(isset($this->in['path']) && $this->in['path'] !=''){ - $dir = '/'._DIR_CLEAR($this->in['path']); - }else{ - $dir = '/';//首次进入系统,不带参数 - } - $dir = '/'.trim($dir,'/').'/'; - $this->_assignInfo(); - $this->assign('dir',$dir); - - if ($this->config['forceWap']) { - $this->display('explorerWap.html'); - }else{ - $this->display('explorer.html'); - } - } - /* - * 代码阅读 - */ - public function codeRead() { - $this->shareViewAdd(); - $this->_assignInfo(); - $this->display('editor.html'); - } - //浏览次数统计 - private function shareViewAdd(){ - $this->shareInfo['numDownload'] = isset($this->shareInfo['numDownload'])?$this->shareInfo['numDownload']:0; - $this->shareInfo['numView'] = isset($this->shareInfo['numView'])?$this->shareInfo['numView']:0; - - $this->shareInfo['numView'] = abs(intval($this->shareInfo['numView'])) +1; - $this->sql->set($this->in['sid'],$this->shareInfo); - } - public function commonJs(){ - $out = ob_get_clean(); - $versionDesc = isset($this->config['settings']['versionDesc'])?$this->config['settings']['versionDesc']:""; - $theConfig = array( - 'environment' => STATIC_JS, - 'lang' => I18n::getType(), - 'systemOS' => $this->config['systemOS'], - 'isRoot' => 0, - 'webRoot' => '', - 'webHost' => HOST, - 'appHost' => APP_HOST, - 'staticPath' => STATIC_PATH, - 'appIndex' => $_SERVER['SCRIPT_NAME'], - 'version' => KOD_VERSION, - 'versionDesc' => $versionDesc, - 'kodID' => md5(BASIC_PATH.$this->config['settingSystem']['systemPassword']), - - 'jsonData' => "", - 'sharePage' => 'share', - 'settings' => array( - 'updloadChunkSize' => file_upload_size(), - 'updloadThreads' => $this->config['settings']['updloadThreads'], - 'updloadBindary' => $this->config['settings']['updloadBindary'], - 'uploadCheckChunk' => $this->config['settings']['uploadCheckChunk'], - - 'paramRewrite' => $this->config['settings']['paramRewrite'], - 'pluginServer' => $this->config['settings']['pluginServer'], - //'appType' => $this->config['settings']['appType'] - ), - - //虚拟目录 - 'KOD_GROUP_PATH' => KOD_GROUP_PATH, - 'KOD_GROUP_SHARE' => KOD_GROUP_SHARE, - 'KOD_USER_SELF' => KOD_USER_SELF, - 'KOD_USER_SHARE' => KOD_USER_SHARE, - 'KOD_USER_RECYCLE' => KOD_USER_RECYCLE, - 'KOD_USER_FAV' => KOD_USER_FAV, - 'KOD_GROUP_ROOT_SELF' => KOD_GROUP_ROOT_SELF, - 'KOD_GROUP_ROOT_ALL' => KOD_GROUP_ROOT_ALL, - 'ST' => $this->in['st'], - 'ACT' => $this->in['act'], - ); - - if(ST.''.ACT == 'explorer.fileView'){ - unset($theConfig['sharePage']); - } - - $userConfig = $GLOBALS['config']['settingDefault']; - if(isset($this->in['user'])){ - $member = systemMember::loadData(); - $user = $member->get($this->in['user']); - $userConfig = FileCache::load(USER_PATH.$user['path'].'/'.'data/config.php'); - } - - if(isset($this->config['settingSystem']['versionHash'])){ - $theConfig['versionHash'] = $this->config['settingSystem']['versionHash']; - $theConfig['versionHashUser'] = $this->config['settingSystem']['versionHashUser']; - } - $theConfig['userConfig'] = $userConfig; - $useTime = mtime() - $GLOBALS['config']['appStartTime']; - - header("Content-Type: application/javascript; charset=utf-8"); - echo 'if(typeof(kodReady)=="undefined"){kodReady=[];}'; - Hook::trigger('user.commonJs.insert',$this->in['st'],$this->in['act']); - echo ';AUTH=[];'; - echo 'G='.json_encode($theConfig).';'; - $lang = json_encode_force(I18n::getAll()); - if(!$lang){ - $lang = '{}'; - } - echo 'LNG='.$lang.';G.useTime='.$useTime.';'; - } - - - - //========ajax function============ - public function pathInfo(){ - $infoList = json_decode($this->in['dataArr'],true); - foreach ($infoList as &$val) { - $val['path'] = $this->sharePath.$this->_clear($val['path']); - } - $data = path_info_muti($infoList,LNG('time_type_info')); - $data['path'] = _DIR_OUT($data['path']); - - //属性查看,单个文件则生成临时下载地址。没有权限则不显示 - if (count($infoList)==1 && $infoList[0]['type']!='folder') {//单个文件 - $file = $infoList[0]['path']; - if($this->shareInfo['notDownload']!='1'){ - $data['downloadPath'] = _make_file_proxy($file); - } - if($data['size'] < 100*1024|| isset($this->in['getMd5'])){ - $data['fileMd5'] = @md5_file($file); - }else{ - $data['fileMd5'] = "..."; - } - - //获取图片尺寸 - $ext = get_path_ext($file); - if(in_array($ext,array('jpg','gif','png','jpeg','bmp')) ){ - $size = ImageThumb::imageSize($file); - if($size){ - $data['imageSize'] = $size; - } - } - } - show_json($data); - } - public function fileSave(){ - show_json(LNG('no_permission'),false); - } - - // 单文件编辑 - public function edit(){ - $member = systemMember::loadData(); - $user = $member->get($this->in['user']); - $codeConfig = FileCache::load(USER_PATH.$user['path'].'/data/editor_config.php'); - if(!is_array($codeConfig)){ - $codeConfig = $GLOBALS['config']['editorDefault']; - } - - $black_theme = array("ambiance","idle_fingers","monokai","pastel_on_dark","twilight", - "solarized_dark","tomorrow_night_blue","tomorrow_night_eighties"); - $setClass = ""; - if(in_array($codeConfig['theme'],$black_theme)){ - $setClass = 'class="code-theme-black"'; - } - $this->_assignInfo(); - $this->assign('editorConfig',json_encode($codeConfig));//获取编辑器配置信息 - $this->assign('codeThemeBlack',$setClass);//获取编辑器配置信息 - $this->display('edit.html'); - } - - public function pathList(){ - $list=$this->_path($this->path); - show_json($list); - } - public function treeList(){ - $path=$this->path; - if (isset($this->in['project'])) { - $path = $this->sharePath.$this->_clear($this->in['project']); - } - if (isset($this->in['path'])) { - $path = $this->sharePath.$this->_clear($this->in['path']); - } - if (isset($this->in['name'])){ - $path=$path.'/'.$this->_clear($this->in['name']); - } - $listFile = ($this->in['app'] == 'editor'?true:false);//编辑器内列出文件 - $list=$this->_path($path,$listFile,true); - function sort_by_key($a, $b){ - if ($a['name'] == $b['name']) return 0; - return ($a['name'] > $b['name']) ? 1 : -1; - } - usort($list['folderList'], "sort_by_key"); - usort($list['fileList'], "sort_by_key"); - - $result = array_merge($list['folderList'],$list['fileList']); - if ($this->in['app'] != 'editor') { - $result =$list['folderList']; - } - if (isset($this->in['type']) && $this->in['type']=='init') { - $result = array( - array( - 'name' => iconv_app(get_path_this($path)), - 'children' => $result, - //'menuType' => "menuTreeRoot", - 'open' => true, - 'type' => 'folder', - 'path' => '/', - 'isParent' => count($result)>0?true:false - ) - ); - } - show_json($result); - } - public function search(){ - if (!isset($this->in['search'])) show_json(LNG('please_inpute_search_words'),false); - $isContent = intval($this->in['is_content']); - $isCase = intval($this->in['is_case']); - $ext= trim($this->in['ext']); - $list = path_search( - $this->path, - rawurldecode($this->in['search']), - $isContent,$ext,$isCase); - - show_json(_DIR_OUT($list)); - } - /** - * 上传,html5拖拽 flash 多文件 - */ - public function fileUpload(){ - $fileName = $_FILES['file']['name']? $_FILES['file']['name']:$GLOBALS['in']['name']; - $GLOBALS['isRoot']=0; - $GLOBALS['auth']['extNotAllow'] = "htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm"; - if(!checkExt($fileName)){ - show_json(LNG('no_permission_ext'),false); - } - $savePath = $this->sharePath.$this->_clear($this->in['upload_to']); - if (!path_writeable($savePath)) show_json(LNG('no_permission_write'),false); - - if ($savePath == '') show_json(LNG('upload_error_big'),false); - if (strlen($this->in['fullPath']) > 1) {//folder drag upload - $fullPath = _DIR_CLEAR(rawurldecode($this->in['fullPath'])); - $fullPath = get_path_father($fullPath); - $fullPath = iconv_system($fullPath); - if (mk_dir($savePath.$fullPath)) { - $savePath = $savePath.$fullPath; - } - } - - //分片上传 - $tempDir = iconv_system(USER_TEMP); - mk_dir($tempDir); - if (!path_writeable($tempDir)) show_json(LNG('no_permission_write'),false); - upload($savePath,$tempDir,'rename'); - } - - - //代理输出 - public function fileProxy(){ - $mime = get_file_mime(get_path_ext($this->path)); - if($mime == 'text/plain' && is_file($this->path)){//文本则转编码 - $fileContents = file_get_contents($this->path); - $charset=get_charset($fileContents); - if ($charset!='' || $charset!='utf-8') { - $fileContents=mb_convert_encoding($fileContents,'utf-8',$charset); - } - echo $fileContents; - return; - } - $download = isset($_GET['download']); - $filename = isset($_GET['downFilename'])?$_GET['downFilename']:false; - file_put_out($this->path,$download,$filename); - } - public function fileDownload(){ - $this->_shareDownloadAdd(); - file_put_out($this->path,true); - } - //文件下载后删除,用于文件夹下载 - public function fileDownloadRemove(){ - if ($this->shareInfo['notDownload']=='1') { - show_json(LNG('share_not_download_tips'),false); - } - $path = get_path_this(_DIR_CLEAR($this->in['path'])); - $path = iconv_system(USER_TEMP.$path); - file_put_out($path,true); - del_file($path); - } - public function zipDownload(){ - $this->_shareDownloadAdd(); - $userTemp = iconv_system(USER_TEMP); - if(!file_exists($userTemp)){ - mkdir($userTemp); - }else{//清除未删除的临时文件,一天前 - $list = path_list($userTemp,true,false); - $maxTime = 3600*24; - if ($list['fileList']>=1) { - for ($i=0; $i < count($list['fileList']); $i++) { - $createTime = $list['fileList'][$i]['mtime'];//最后修改时间 - if(time() - $createTime >$maxTime){ - del_file($list['fileList'][$i]['path'].$list['fileList'][$i]['name']); - } - } - } - } - $zipFile = $this->zip($userTemp); - show_json(LNG('zip_success'),true,get_path_this($zipFile)); - } - private function zip($zipPath){ - if (!isset($zipPath)) { - show_json(LNG('share_not_download_tips'),false); - } - ignore_timeout(); - - $zipList = json_decode($this->in['dataArr'],true); - $listNum = count($zipList); - $files = array(); - for ($i=0; $i < $listNum; $i++) { - $item = $this->path.$this->_clear($zipList[$i]['path']); - if(file_exists($item)){ - $files[] = $item; - } - } - if(count($files)==0){ - show_json(LNG('not_exists'),false); - } - - - //指定目录 - if (count($files) == 1) { - $pathThisName=get_path_this($files[0]); - }else{ - $pathThisName=get_path_this(get_path_father($files[0])); - } - $zipname = $zipPath.$pathThisName.'.zip'; - $zipname = get_filename_auto($zipname,date('_H-i-s')); - KodArchive::create($zipname,$files); - return iconv_app($zipname); - } - - - // 获取文件数据 - public function fileGet(){ - if(isset($this->in['fileUrl'])){ //http - $displayName = $this->in['name']; - $filepath = $this->in['fileUrl']; - if(!request_url_safe($filepath)){ - show_json(LNG('url error!'),false); - } - }else{ - $displayName = _DIR_CLEAR($this->in['filename']); - $filepath= $this->sharePath.iconv_system($displayName); - if (!path_readable($filepath)){ - show_json(LNG('no_permission_read'),false); - } - if (filesize($filepath) >= 1024*1024*20){ - show_json(LNG('edit_too_big'),false); - } - if (!file_exists($filepath)){ - show_json(LNG('not_exists'),false); - } - } - - $fileContents=file_get_contents($filepath);//文件内容 - $charset=get_charset($fileContents); - if ($charset!='' && - $charset!='utf-8' && - function_exists("mb_convert_encoding") - ){ - $fileContents=@mb_convert_encoding($fileContents,'utf-8',$charset); - } - $data = array( - 'ext' => get_path_ext($displayName), - 'name' => iconv_app(get_path_this($displayName)), - 'filename' => $displayName, - 'charset' => $charset, - 'base64' => true,// 部分防火墙编辑文件误判问题处理 - 'content' => base64_encode($fileContents) - ); - show_json($data); - } - - public function image(){ - $thumbWidth = 250; - if(isset($this->in['thumbWidth'])){ - $thumbWidth = intval($this->in['thumbWidth']);//自定义预览大图 - } - if(substr($this->path,0,4) == 'http'){ - header('Location: '.$this->in['path']); - exit; - } - if (@filesize($this->path) <= 1024*50 || - !function_exists('imagecolorallocate') || - get_path_ext($this->path) == 'gif') {//小于50k、不支持gd库、gif图 不再生成缩略图 - file_put_out($this->path,false); - return; - } - if (!is_dir(DATA_THUMB)){ - mk_dir(DATA_THUMB); - } - $image = $this->path; - $imageMd5 = @md5_file($image).'_'.$thumbWidth;//文件md5 - if (strlen($imageMd5)<5) { - $imageMd5 = md5($image).'_'.$thumbWidth; - } - $imageThumb = DATA_THUMB.$imageMd5.'.png'; - if (!file_exists($imageThumb)){//如果拼装成的url不存在则没有生成过 - if (get_path_father($image)==DATA_THUMB){//当前目录则不生成缩略图 - $imageThumb=$this->path; - }else { - $cm = new ImageThumb($image,'file'); - $cm->prorate($imageThumb,$thumbWidth,$thumbWidth);//生成等比例缩略图 - } - } - if (!file_exists($imageThumb) || - filesize($imageThumb)<100){//缩略图生成失败则使用原图 - $imageThumb=$this->path; - } - file_put_out($imageThumb,false); - file_put_out($imageThumb);//输出 - } - - //获取文件列表&哦exe文件json解析 - private function _path($dir,$listFile=true,$check_children=false){ - $list = path_list($dir,$listFile,true); - $listNew = array('fileList'=>array(),'folderList'=>array()); - $pathHidden = $this->config['settingSystem']['pathHidden']; - $exName = explode(',',$pathHidden); - foreach ($list['fileList'] as $key => $val) { - if (in_array($val['name'],$exName)) continue; - if ($val['ext'] == 'oexe'){ - $path = iconv_system($val['path']); - $json = json_decode(@file_get_contents($path),true); - if(is_array($json)) $val = array_merge($val,$json); - } - $listNew['fileList'][] = $val; - } - foreach ($list['folderList'] as $key => $val) { - if (in_array($val['name'],$exName)) continue; - $listNew['folderList'][] = $val; - } - $s = _DIR_OUT($listNew); - return _DIR_OUT($listNew); - } -} diff --git a/plugin/document/kod/app/controller/systemGroup.class.php b/plugin/document/kod/app/controller/systemGroup.class.php deleted file mode 100644 index a733a7cb2..000000000 --- a/plugin/document/kod/app/controller/systemGroup.class.php +++ /dev/null @@ -1,279 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -//群组管理【管理员调用,or组空间大小变更】 -//根目录id为1==》共享空间 -class systemGroup extends Controller{ - public static $staticSql = null; - private $sql; - function __construct() { - parent::__construct(); - $this->sql= self::loadData(); - $this->_init(); - } - - //保证只加载一次文件 - public static function loadData(){ - if(is_null(self::$staticSql)){ - self::$staticSql = systemGroupData(); - } - return self::$staticSql; - } - public static function getInfo($theId){ - $sql = self::loadData(); - return $sql->get($theId); - } - - /** - * 空间使用变更 - * @param [type] $theId [userID or groupID] - * @param [type] $sizeAdd [变更的大小 sizeMax G为单位 sizeUse Byte为单位] - */ - public static function spaceChange($theId,$sizeAdd=false){ - $sql = self::loadData(); - $info = $sql->get($theId); - if(!is_array($info)){ - show_json(LNG('data_not_full'),false); - } - if($sizeAdd===false){//重置用户空间;避免覆盖、解压等导致的问题 - $pathinfo = _path_info_more(GROUP_PATH.$info['path'].'/'); - $currentUse = $pathinfo['size']; - if(isset($info['homePath']) && file_exists(iconv_system($info['homePath']))){ - $pathinfo = _path_info_more(iconv_system($info['homePath'])); - $currentUse += $pathinfo['size']; - } - }else{ - $currentUse = floatval($info['config']['sizeUse'])+floatval($sizeAdd); - } - $info['config']['sizeUse'] = $currentUse<0?0:$currentUse; - $sql->set($theId,$info); - } - - /** - * 空间剩余检测 - * 1073741824 —— 1G - */ - public static function spaceCheck($theId){ - $sql = self::loadData(); - $info = $sql->get($theId); - if(!is_array($info)){ - show_json(LNG('data_not_full'),false); - } - $sizeUse = floatval($info['config']['sizeUse']); - $sizeMax = floatval($info['config']['sizeMax']); - if($sizeMax!=0 && $sizeMax*1073741824<$sizeUse){ - show_json(LNG('space_is_full'),false); - } - } - - //管理员调用 - //=================== - private function _init(){ - if(count($this->sql->get()) > 0) return; - $default = array( - '1' =>array( - 'groupID' => '1', - 'name' => 'root', - 'parentID' => '', - 'children' => '', - 'config' => array('sizeMax' => floatval(1.5), - 'sizeUse' => floatval(1024*1024)),//总大小,目前使用大小 - 'path' => 'root', - 'createTime'=> time(), - ) - ); - $this->sql->reset($default); - $this->initDir($default[0]['path']); - } - //删除 path id - public static function _filterList($list,$filter_key = 'path'){ - if($GLOBALS['isRoot']) return $list; - foreach ($list as $key => &$val) { - unset($val[$filter_key]); - } - return $list; - } - - public function get() { - $items = self::_filterList($this->sql->get()); - show_json($items,true); - } - - /** - * 群组添加 - * systemGroup/add&name=t1&parentID=101&sizeMax=0 - */ - public function add(){ - if (!isset($this->in['name']) || //必填项 - !isset($this->in['parentID']) || - !isset($this->in['sizeMax']) - ) show_json(LNG('data_not_full'),false); - - //名称可以重复 - $groupID = $this->sql->getMaxId().''; - $groupName = rawurldecode($this->in['name']); - $groupInfo = array( - 'groupID' => $groupID, - 'name' => $groupName, - 'parentID' => $this->in['parentID'], - 'children' => '', - 'config' => array('sizeMax' => floatval($this->in['sizeMax']),//G - 'sizeUse' => floatval(1024*1024)),//总大小,目前使用大小 - 'path' => make_path($groupName), - 'createTime'=> time(), - ); - if(file_exists(iconv_system(GROUP_PATH.$groupInfo['path'])) ){ - $groupInfo['path'] = make_path($groupInfo['path'].'_'.$groupInfo['groupID']); - } - - //用户组目录 - if( isset($this->in['homePath'])){ - $homePath = _DIR(rawurldecode($this->in['homePath'])); - if(file_exists($homePath)){ - $groupInfo['homePath'] = iconv_app($homePath); - } - }else{ - unset($groupInfo['homePath']); - } - $this->_parentChildChange($groupInfo,true);//更新父节点 - if ($this->sql->set($groupID,$groupInfo)) { - $this->initDir($groupInfo['path']); - show_json(LNG('success')); - } - show_json(LNG('error'),false); - } - - /** - * 编辑 systemGroup/edit&groupID=101&name=warlee&sizeMax=0 - */ - public function edit() { - if (!$this->in['groupID']) show_json(LNG('data_not_full'),false); - $groupInfo = $this->sql->get($this->in['groupID']); - if(!is_array($groupInfo)){//用户不存在 - show_json(LNG('not_exists'),false); - } - - //name sizeMax parentID - if(isset($this->in['name'])){ - $groupInfo['name'] = rawurldecode($this->in['name']); - } - if(isset($this->in['sizeMax'])){ - $groupInfo['config']['sizeMax'] = floatval($this->in['sizeMax']); - } - if( isset($this->in['parentID']) && - $groupInfo['parentID']!= '' && //根目录不能修改父节点 - $this->in['parentID']!=$groupInfo['parentID']){//父节点变更 - - $childChange = explode(',',$groupInfo['children']); - if( in_array($this->in['parentID'],$childChange) - || $this->in['parentID'] == $this->in['groupID']){//不能移动到子节点;死循环 - show_json(LNG('current_has_parent'),false); - } - self::spaceChange($this->in['groupID']);//重置用户使用空间 - $this->_parentChildChange($groupInfo,false);//向所有父节点,删除包含此节点的children - $groupInfo['parentID'] = $this->in['parentID']; - $this->_parentChildChange($groupInfo,true);//向所有新的父节点,添加包含此节点的children - } - - //用户组目录 - if( isset($this->in['homePath'])){ - $groupInfo['homePath'] = _DIR(rawurldecode($this->in['homePath'])); - if(!file_exists($groupInfo['homePath'])){ - show_json(LNG('not_exists'),false); - } - $groupInfo['homePath'] = iconv_app($groupInfo['homePath']); - }else{ - unset($groupInfo['homePath']); - } - if($groupInfo != $this->sql->get($this->in['groupID'])){ - $this->sql->set($this->in['groupID'],$groupInfo); - } - show_json(LNG('success')); - } - - /** - * 删除 ?systemMember/del&userID=102 - */ - public function del() { - if (!isset($this->in['groupID'])) show_json(LNG('data_not_full'),false); - if (strlen($this->in['groupID']) <= 1) show_json(LNG('default_user_can_not_do'),false); - $groupInfo = $this->sql->get($this->in['groupID']); - $this->_parentChildChange($groupInfo,false);//向所有父节点,删除包含此节点的children - $this->sql->set(//将该节点的子节点的父节点设置为根目录 - array('parentID',$groupInfo["groupID"]), - array('parentID','1') - ); - systemMember::groupRemoveUserUpdate($groupInfo["groupID"]);//用户所在组变更 - $this->sql->remove($this->in['groupID']); - - if( strlen($groupInfo['path'])!=0){ - del_dir(iconv_system(GROUP_PATH.$groupInfo['path'].'/')); - show_json(LNG('success')); - } - show_json(LNG('error'),false); - } - - - //============内部处理函数============= - //回溯更改节点的children - private function _parentChildChange($groupInfo,$isAdd){ - if(!is_array($groupInfo)){ - show_json(LNG('not_exists'),false); - } - if($groupInfo['parentID'] == 1){ - return; - } - $childChange = explode(',',$groupInfo['children']); - if($childChange[0]==''){ - unset($childChange[0]); - } - $childChange[] = $groupInfo['groupID'];//包含当前 - while(strlen($groupInfo['groupID'])>2){//节点id从100开始 - $groupInfo = $this->sql->get($groupInfo['parentID']); - if(!is_array($groupInfo)){ - show_json(LNG('not_exists'),false); - } - $childrenNew = explode(',',$groupInfo['children']); - if($childrenNew[0]==''){ - unset($childrenNew[0]); - } - if($isAdd){//添加 - foreach ($childChange as $key=>$val) { - $childrenNew[] = $val; - } - }else{//删除 - foreach ($childrenNew as $key=>$val) { - if(in_array($val,$childChange)) - unset($childrenNew[$key]); - } - } - $childStr = implode(',',$childrenNew); - if($childStr != $groupInfo['children']){//有变更 - $groupInfo['children'] = $childStr; - $this->sql->set($groupInfo['groupID'],$groupInfo); - } - } - } - - // - /** - *初始化用户数据和配置。 - */ - public function initDir($path){ - $root = array('home','data'); - $newGroupFolder = $this->config['settingSystem']['newGroupFolder']; - $home = explode(',',$newGroupFolder); - $path = GROUP_PATH.$path.'/'; - foreach ($root as $dir) { - mk_dir(iconv_system($path.$dir)); - } - foreach ($home as $dir) { - mk_dir(iconv_system($path.'home/'.$dir)); - } - } -} diff --git a/plugin/document/kod/app/controller/systemMember.class.php b/plugin/document/kod/app/controller/systemMember.class.php deleted file mode 100644 index 8d7ba5d51..000000000 --- a/plugin/document/kod/app/controller/systemMember.class.php +++ /dev/null @@ -1,529 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -//用户管理【管理员配置用户,or用户空间大小变更】 -class systemMember extends Controller{ - public static $staticSql = null; - private $sql; - function __construct() { - parent::__construct(); - $this->tpl = TEMPLATE.'member/'; - $this->sql= self::loadData(); - } - - //保证只加载一次文件 - public static function loadData(){ - if(is_null(self::$staticSql)){ - self::$staticSql = systemMemberData(); - } - return self::$staticSql; - } - public static function getInfo($theId){ - $sql = self::loadData(); - return $sql->get($theId); - } - - /** - * 空间使用变更 - * @param [type] $theId [userID or groupID] - * @param [type] $sizeAdd [变更的大小 sizeMax G为单位 sizeUse Byte为单位] - */ - public static function spaceChange($theId,$sizeAdd=false){ - $sql = self::loadData(); - $info = $sql->get($theId); - if(!is_array($info)){ - show_json(LNG('data_not_full'),false); - } - if($sizeAdd===false){//重置用户空间;避免覆盖、解压等导致的问题 - $pathinfo = _path_info_more(iconv_system(USER_PATH.$info['path'].'/')); - $currentUse = $pathinfo['size']; - if(isset($info['homePath']) && file_exists(iconv_system($info['homePath']))){ - $pathinfo = _path_info_more(iconv_system($info['homePath'])); - $currentUse += $pathinfo['size']; - } - }else{ - $currentUse = floatval($info['config']['sizeUse'])+floatval($sizeAdd); - } - $info['config']['sizeUse'] = $currentUse<0?0:$currentUse; - $sql->set($theId,$info); - } - /** - * 空间剩余检测 - * 1073741824 —— 1G - */ - public static function spaceCheck($theId){ - $sql = self::loadData(); - $info = $sql->get($theId); - if(!is_array($info)){ - show_json(LNG('data_not_full'),false); - } - $sizeUse = floatval($info['config']['sizeUse']); - $sizeMax = floatval($info['config']['sizeMax']); - if($sizeMax!=0 && $sizeMax*1073741824<$sizeUse){ - show_json(LNG('space_is_full'),false); - } - } - - // 组删除后,所属该组的用户都删除;全局调用 - public static function groupRemoveUserUpdate($groupID){ - $sql = self::loadData(); - $userAll = $sql->get(); - foreach ($userAll as $key => $val) { - if(in_array($groupID,array_keys($val['groupInfo']))){ - unset($val['groupInfo'][$groupID]); - $sql->set($val['userID'],$val); - } - } - } - // 权限组删除,所属该组的用户删除权限id - public static function roleRemoveUserUpdate($roleId){ - $sql = self::loadData(); - $userAll = $sql->get(); - foreach ($userAll as $key => $val) { - if($val['role'] == $roleId){ - $val['role'] = ''; - $sql->set($val['userID'],$val); - } - } - } - - //获取当前用户在某个群组的权限id; false|[id] - //兼容旧版本 'read'|'write'|false - public static function userAuthGroup($groupID){ - $result = self::_userAuthGroupRole($groupID); - if($result === false) return false; - - $result = $result == 'read' ? "1" : $result; - $result = $result == 'write' ? "2" : $result; - if(!is_array($GLOBALS['config']['pathRoleGroup'][$result])){ - $result = "1"; - } - return $result; - } - - - //获取在某个组的用户 - public static function userAtGroup($groupID){ - $sql = self::loadData(); - $allUser = self::_filterList($sql->get()); - if($groupID=='0'){ - return $allUser; - } - $selectUser = array(); - foreach ($allUser as $val) { - if(isset($val['groupInfo'][$groupID])){ - $selectUser[] = $val; - } - } - return $selectUser; - } - - - //缓存用户共享对象======================================= - public static function userShareSql($userID){ - static $userShareArr; - if(!is_array($userShareArr)){ - $userShareArr = array(); - } - if(!isset($userShareArr[$userID])){ - $userInfo = systemMember::getInfo($userID); - if(!isset($userInfo['path'])){ - return; - } - $sql = new FileCache(USER_PATH.$userInfo['path'].'/data/share.php'); - $userShareArr[$userID] = $sql; - } - return $userShareArr[$userID]; - } - //获取某个用户共享列表 - public static function userShareList($userID){ - $sql = self::userShareSql($userID); - $list = $sql->get(); - if($userID == $_SESSION['kodUser']['userID']){//自己的列表则展示密码;否则清空密码 - return $list; - } - - //含有密码则不罗列 - foreach($list as $key=>&$val){ - if($val['sharePassword']){ - unset($list[$key]); - } - } - return $list; - } - //获取某个用户某个共享 - public static function userShareGet($userID,$name){ - $sql = self::userShareSql($userID); - return $sql->get('name',$name); - } - - //判断自己对某个组的权限 return false/'read'/'write' - public static function _userAuthGroupRole($groupID){ - $sql = self::loadData(); - $userInfo = $sql->get($_SESSION['kodUser']['userID']); - $groupInfo = $userInfo['groupInfo'];//自己所在的组 - if(!is_array($groupInfo)){ - return false; - } - if(isset($groupInfo[$groupID])){ - return $groupInfo[$groupID]; - } - - $role = false; - $plist = array(); - foreach ($groupInfo as $key => $value) {// - $group = systemGroup::getInfo($key);//测试组,是否在用户所在组的子组 - $arr = explode(',',$group['children']); - if (in_array($groupID,$arr)) { - //return $groupInfo[$key]; // 找到最近的父级部门,而非第一个 - if(empty($plist)){ - $plist = $arr; - $role = $groupInfo[$key]; - }else if(in_array($group['groupID'], $plist)){ - $plist = $arr; - $role = $groupInfo[$key]; - } - } - } - return $role; - } - - //删除 path id - public static function _filterList($list,$filter_key = 'path'){ - if($GLOBALS['isRoot']) return $list; - foreach ($list as $key => &$val) { - unset($val[$filter_key]); - unset($val['password']); - } - return $list; - } - - - - //后台管理===================== - //管理员调用=================== - /** - * 获取用户列表数据,根据用户组筛选;默认输出所有用户 - */ - public function get($groupID='0') { - $result = self::userAtGroup($groupID); - foreach($result as $key=>&$val){ - unset($val['password']); - } - show_json($result); - } - - /** - * 获取用户列表数据,根据用户组筛选;默认输出所有用户 - */ - public function getByName($name = '') { - if(!$name){ - $name = $this->in['name']; - } - $result = $this->sql->get(array('name',$name)); - if(is_array($result) && count($result)>0){ - $arr = array_values($result); - unset($arr[0]['password']); - show_json($arr[0]); - } - show_json(LNG("not_exists"),false); - } - - /** - * 用户添加 - * systemMember/add&name=warlee&password=123&sizeMax=0&groupInfo={"0":"read","10":"write"}&role=default - */ - public function add($user = false){ - if (!isset($this->in['name']) || //必填项 - !isset($this->in['password']) || - !isset($this->in['role']) || - !isset($this->in['groupInfo']) || //{"0":"read","100":"read"} - !isset($this->in['sizeMax']) - ){ - show_json(LNG('data_not_full'),false); - } - - $name = trim(rawurldecode($this->in['name'])); - $password = rawurldecode($this->in['password']); - $groupInfo = json_decode(rawurldecode($this->in['groupInfo']),true); - if(!is_array($groupInfo)){ - show_json(LNG('systemMember_group_error'),false); - } - if($this->sql->get(array('name',$name))){ - show_json(LNG('error_repeat'),false,$name); - } - - //非系统管理员,不能添加系统管理员 - if(!$GLOBALS['isRoot'] && $this->in['role']=='1'){ - show_json(LNG('group_role_error'),false); - } - - $userArray = array(); - if(isset($this->in['isImport'])){ - $arr = explode("\n",$name); - foreach($arr as $v){ - if(trim($v)!=''){ - $userArray[] = trim($v); - } - } - }else{ - $userArray[] = $name; - } - $nickName = 0; - if(isset($this->in['nickName'])){ - $nickName = trim(rawurldecode($this->in['nickName'])); - } - - - //批量添加 - $errorArr = array(); - foreach ($userArray as $val) { - if($this->sql->get('name',$val)){//已存在 - $errorArr[] = $val; - continue; - } - $userID = $this->sql->getMaxId().''; - $userInfo = array( - 'userID' => $userID, - 'name' => $val, - 'nickName' => $nickName ? $nickName : $val, - 'password' => md5($password), - 'role' => $this->in['role'], - 'config' => array('sizeMax' => floatval($this->in['sizeMax']),//M - 'sizeUse' => 1024*1024),//总大小,目前使用大小 - 'groupInfo' => $groupInfo, - 'path' => make_path($val), - 'status' => 1, //0禁用;1启用 - 'lastLogin' => '', //最后登录时间 首次登陆则激活 - 'createTime'=> time(), - ); - - if(file_exists(iconv_system(USER_PATH.$userInfo['path'])) ){ - $userInfo['path'] = $userInfo['path'].'_'.$userInfo['userID']; - } - //用户组目录 - if( isset($this->in['homePath'])){ - $homePath = _DIR(rawurldecode($this->in['homePath'])); - if(file_exists($homePath)){ - $userInfo['homePath'] = iconv_app($homePath); - } - }else{ - unset($userInfo['homePath']); - } - if ($this->sql->set($userID,$userInfo)) { - $this->initDir($userInfo['path']); - }else{ - $errorArr[] = $val; - } - } - - $success = count($userArray)-count($errorArr); - $msg = LNG('success'); - if(count($errorArr) > 0 ){ - $msg = LNG('word_success').' : '.$success.', ';//部分失败 - if($success == 0 ){ - $msg = LNG('error_repeat'); - } - $msg .= LNG('word_error').' : '.count($errorArr); - } - if($success==count($userArray)){ - show_json($msg,true,$success); - }else{ - show_json($msg,false,implode("\n",$errorArr)); - } - } - - /** - * 编辑 systemMember/edit&userID=101&name=warlee&password=123&sizeMax=0 - * &groupInfo={%220%22:%22read%22,%22100%22:%22read%22}&role=default - */ - public function edit() { - if (!$this->in['userID']) show_json(LNG('data_not_full'),false); - - $userID = $this->in['userID']; - $userInfo = $this->sql->get($userID); - if(!$userInfo){//用户不存在,或者默认用户不能修改 - show_json(LNG('error'),false); - } - //非系统管理员,不能将别人设置为系统管理员 - if(!$GLOBALS['isRoot'] && $this->in['role']=='1'){ - show_json(LNG('group_role_error'),false); - } - //非系统管理员,不能修改系统管理员 - if(!$GLOBALS['isRoot'] && $userInfo['role']=='1'){ - show_json(LNG('group_role_error_admin'),false); - } - - //管理员自己不能添加自己到非管理员组 - if($GLOBALS['isRoot'] - && $_SESSION['kodUser']['userID']==$userID - && $this->in['role']!='1'){ - show_json(LNG('error'),false); - } - - //修改为一个已存在的名字则提示 - $theName = trim(rawurldecode($this->in['name'])); - if($userInfo['name']!=$theName){ - if($this->sql->get(array('name',$theName))){ - show_json(LNG('error_repeat'),false); - } - } - - $this->in['name'] = rawurlencode($theName);//还原 - $editArr = array('name','nickName','role','password','groupInfo','homePath','status','sizeMax'); - foreach ($editArr as $key) { - if(!isset($this->in[$key])) continue; - $userInfo[$key] = rawurldecode($this->in[$key]); - if($key == 'password'){ - $userInfo['password'] = md5($userInfo[$key]); - }else if($key == 'sizeMax'){ - $userInfo['config']['sizeMax'] = floatval($userInfo[$key]); - }else if($key == 'groupInfo'){//分组信息 - $userInfo['groupInfo'] = json_decode(rawurldecode($this->in['groupInfo']),true); - } - } - - //用户组目录 - if( isset($this->in['homePath'])){ - $userInfo['homePath'] = _DIR(rawurldecode($this->in['homePath'])); - if(!file_exists($userInfo['homePath'])){ - show_json(LNG('not_exists'),false); - } - $userInfo['homePath'] = iconv_app($userInfo['homePath']); - }else{ - unset($userInfo['homePath']); - } - if($this->sql->set($userID,$userInfo)){ - //self::spaceChange($userID);//重置用户使用空间 - show_json(LNG('success'),true,$userInfo); - } - show_json(LNG('error_repeat'),false); - } - - /** - * 用户批量操作 systemMember/doAction&action=&userID=[101,222,131]¶m= - * action : - * ------------- - * del 删除用户 - * statusSet 启用&禁用 param=0/1 - * roleSet 权限组 param=roleID - * groupReset 重置分组 param=group_json - * groupRemoveFrom 从某个组删除 param=groupID - * groupAdd 添加到某个分组 param=group_json - */ - public function doAction() { - if (!isset($this->in['userID'])){ - show_json(LNG('username_can_not_null'),false); - } - $action = $this->in['action']; - $userArr = json_decode($this->in['userID'],true); - if(!is_array($userArr)){ - show_json(LNG('error'),false); - } - if (in_array('1', $userArr)){//批量处理,不处理系统管理员admin - show_json(LNG('default_user_can_not_do'),false); - } - foreach ($userArr as $userID) { - switch ($action) { - case 'del'://删除 - $userInfo = $this->sql->get($userID); - if($this->sql->remove($userID) && $userInfo['name']!=''){ - del_dir(iconv_system(USER_PATH.$userInfo['path'].'/')); - } - break; - case 'statusSet'://禁用&启用 - $status = intval($this->in['param']); - $this->sql->set(array('userID',$userID),array('status',$status)); - break; - case 'spaceSet'://批量设置用户空间大小 - $value = intval($this->in['param']); - $userInfo = $this->sql->get($userID); - $userInfo['config']['sizeMax'] = $value; - $this->sql->set($userID,$userInfo); - break; - case 'roleSet'://设置权限组 - $role = $this->in['param']; - //非系统管理员,不能将别人设置为系统管理员 - if(!$GLOBALS['isRoot'] && $role=='1'){ - show_json(LNG('group_role_error'),false); - } - $this->sql->set(array('userID',$userID),array('role',$role)); - break; - case 'groupReset'://设置分组 - $groupArr = json_decode($this->in['param'],true); - if(!is_array($groupArr)){ - show_json(LNG('error'),false); - } - $this->sql->set(array('userID',$userID),array('groupInfo',$groupArr)); - break; - case 'groupRemoveFrom'://从某个组移除 - $groupID = $this->in['param']; - $userInfo = $this->sql->get($userID); - unset($userInfo['groupInfo'][$groupID]); - $this->sql->set($userID,$userInfo); - break; - case 'groupAdd'://添加到某个组 - $groupArr = json_decode($this->in['param'],true); - if(!is_array($groupArr)){ - show_json(LNG('error'),false); - } - $userInfo = $this->sql->get($userID); - foreach ($groupArr as $key => $value) { - $userInfo['groupInfo'][$key] = $value; - } - $this->sql->set($userID,$userInfo); - default:break; - } - } - show_json(LNG('success')); - } - - public function initInstall(){ - $sql = systemMember::loadData(); - $list = $sql->get(); - foreach ($list as $id => &$info) {//创建用户目录及初始化 - $path = make_path($info['name']); - $this->initDir($path); - $info['path'] = $path; - $info['createTime'] = time(); - } - $sql->reset($list); - - //初始化群组目录 - $homeFolders = explode(',',$this->config['settingSystem']['newGroupFolder']); - $sql = systemGroup::loadData(); - $list = $sql->get(); - foreach ($list as $id => &$info) {//创建用户目录及初始化 - $path = make_path($info['name']); - $rootPath = GROUP_PATH.$path.'/'; - foreach ($homeFolders as $dir) { - mk_dir(iconv_system($rootPath.'home/'.$dir)); - } - $info['path'] = $path; - $info['createTime'] = time(); - } - $sql->reset($list); - } - - //============内部处理函数============= - /** - *初始化用户数据和配置。 - */ - public function initDir($path){ - $userFolder = array('home','recycle_kod','data'); - $homeFolders = explode(',',$this->config['settingSystem']['newUserFolder']); - $rootPath = USER_PATH.$path.'/'; - foreach ($userFolder as $dir) { - mk_dir(iconv_system($rootPath.$dir)); - } - foreach ($homeFolders as $dir) { - mk_dir(iconv_system($rootPath.'home/'.$dir)); - } - FileCache::save($rootPath.'data/config.php',$this->config['settingDefault']); - } -} diff --git a/plugin/document/kod/app/controller/systemRole.class.php b/plugin/document/kod/app/controller/systemRole.class.php deleted file mode 100644 index d97c5a0af..000000000 --- a/plugin/document/kod/app/controller/systemRole.class.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class systemRole extends Controller{ - public static $staticSql = null; - private $sql; - function __construct(){ - parent::__construct(); - $this->sql= self::loadData(); - } - - //保证只加载一次文件 - public static function loadData(){ - if(is_null(self::$staticSql)){ - self::$staticSql = systemRoleData(); - } - return self::$staticSql; - } - public static function getInfo($theId){ - $sql = self::loadData(); - return $sql->get($theId); - } - - - //获取所有权限组 - //用户组权限 - public function get() { - if(isset($this->in['group_role'])){ - $this->in['action'] == 'get'; - $this->roleGroupAction(); - } - show_json($this->sql->get()); - } - /** - * 权限添加 - */ - public function add(){ - $role = $this->_initData(); - $roleId = $role['roleID'] = $this->sql->getMaxId().''; - $this->_checkExist( $this->sql->get(),array('name',$role['name']),$roleId ); - if ($this->sql->set($role['roleID'],$role)) { - show_json(LNG('success'),true,$role['roleID']); - } - show_json(LNG('error'),false); - } - - /** - * 编辑 - */ - public function edit(){ - $role = $this->_initData(); - $roleId = $this->in['roleID']; - $this->_checkExist( $this->sql->get(),array('name',$role['name']),$roleId ); - if ($this->sql->set($roleId,$role)){ - show_json(LNG('success'),true,$roleId); - } - show_json(LNG('error'),false); - } - - /** - * 删除 - */ - public function del() { - if (!isset($this->in['roleID'])) show_json(LNG('data_not_full'),false); - if (strlen($this->in['roleID']) <= 1) show_json(LNG('default_user_can_not_do'),false); - systemMember::roleRemoveUserUpdate($this->in['roleID']);//用户所在权限组变更 - if($this->sql->remove($this->in['roleID'])){ - show_json(LNG('success')); - } - show_json(LNG('error'),false); - } - - /** - * 用户组权限列表配置 - * 增删改查 - */ - public function roleGroupAction(){ - $sql = new FileCache(USER_SYSTEM.'system_role_group.php'); - switch ($this->in['action']) { - case 'get': - $roleGroup = $sql->get(); - if($roleGroup['1']['name'] == 'read'){ - $roleGroup['1']['name'] = LNG('system_role_read'); - } - if($roleGroup['2']['name'] == 'write'){ - $roleGroup['2']['name'] = LNG('system_role_write'); - } - show_json($roleGroup,true,$this->config['pathRoleDefine']); - break; - case 'add': - $roleId = $sql->getMaxId().''; - $roleArr = json_decode($this->in['role_arr'],true); - if(!is_array($roleArr)) show_json(LNG('error'),false); - if(!trim($roleArr['name'])) show_json(LNG("data_not_full"),false); - $this->_checkExist( $sql->get(),array('name',$roleArr['name']),$roleId); - if ($sql->set($roleId,$roleArr)) { - show_json(array($roleId),true,$sql->get()); - } - show_json(LNG('error'),false); - break; - case 'set': - $roleId = $this->in['roleID']; - $roleArr = json_decode($this->in['role_arr'],true); - if(!is_array($roleArr)) show_json(LNG('error'),false); - if(!trim($roleArr['name'])) show_json(LNG("data_not_full"),false); - $this->_checkExist( $sql->get(),array('name',$roleArr['name']),$roleId); - if ($sql->set($roleId,$roleArr)){ - show_json(LNG('success'),true,$sql->get()); - } - show_json(LNG('error'),false); - break; - case 'del': - $roleId = $this->in['roleID']; - if(in_array($roleId,array("1","2"))){ - show_json(LNG('default_user_can_not_do'),false); - } - if($sql->remove($this->in['roleID'])){ - show_json(LNG('success'),true,$sql->get()); - } - show_json(LNG('error'),false); - break; - default:break; - } - } - - //检测是否存在 - private function _checkExist($data,$find,$checkID){ - $findData = array(); - foreach ($data as $key => $val) { - if ($val[$find[0]] == $find[1]) { - $findData[$key] = $data[$key]; - } - } - if(is_array($findData) && count($findData)>0 ){ - $key = array_keys($findData);$key=$key[0]; - if($key != $checkID) show_json(LNG("error_repeat"),false); - } - } - - - //===========内部调用============ - /** - * 初始化数据 get - * 只传键即可 &extNotAllow='php,jsp'&explorer.mkfile=1&explorer.pathRname=1 - */ - private function _initData(){ - if (strlen($this->in['name'])<1) show_json(LNG('groupname_can_not_null'),false); - $roleArr = array( - 'name' => rawurldecode($this->in['name']), - 'extNotAllow' => $this->in['extNotAllow'] - ); - foreach ($this->config['roleSetting'] as $key => $actions) { - foreach ($actions as $action) { - $keyUrl = $key.'_'.$action;//url explorer.mkdir => explorer_mkdir; - $keyAuth = $key.'.'.$action; - if (isset($this->in[$keyUrl])){ - $roleArr[$keyAuth] = 1; - }else{ - $roleArr[$keyAuth] = 0; - } - } - } - return $roleArr; - } -} diff --git a/plugin/document/kod/app/controller/user.class.php b/plugin/document/kod/app/controller/user.class.php deleted file mode 100644 index 3e6029191..000000000 --- a/plugin/document/kod/app/controller/user.class.php +++ /dev/null @@ -1,613 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class user extends Controller{ - private $user; //用户相关信息 - private $auth; //用户所属组权限 - private $notCheck; - function __construct(){ - parent::__construct(); - - //php5.4 bug;需要重新读取一次 - @session_start(); - @session_write_close(); - if(!isset($_SESSION)){//避免session不可写导致循环跳转 - $this->login(DATA_PATH."<br/>".LNG('path_can_not_write_data') ); - }else{ - $this->user = &$_SESSION['kodUser']; - if(!isset($this->user['path']) && isset($this->user['name'])){//旧版本数据 - $this->user['path'] = $this->user['name']; - } - } - //不需要判断的action - $this->notCheckST = array('share','debug'); - $this->notCheckACT = array( - 'loginFirst','login','logout','loginSubmit', - 'checkCode','publicLink','qrcode','sso'); - - $this->notCheckApp = array();//'pluginApp.to' - if(!$this->user){ - $this->notCheckApp = array('pluginApp.to','api.view'); - } - $this->config['forceWap'] = is_wap() && (!isset($_COOKIE['forceWap']) || $_COOKIE['forceWap'] == '1'); - if( isset($_GET['forceWap']) ){ - $this->config['forceWap'] = $_GET['forceWap']; - } - } - - public function bindHook(){ - $this->loadModel('Plugin')->init(); - } - - /** - * 登录状态检测;并初始化数据状态 - */ - public function loginCheck(){ - // CSRF-TOKEN更新后同步;关闭X-CSRF-TOKEN的httpOnly - if( ACT == 'commonJs' && isset($_SESSION['X-CSRF-TOKEN'])){ - $this->_setCsrfToken(); - } - if(in_array(ST,$this->notCheckST)) return;//不需要判断的控制器 - if(in_array(ACT,$this->notCheckACT)) return;//不需要判断的action - if(in_array(ST.'.'.ACT,$this->notCheckApp)) return;//不需要判断的对应入口 - - if(isset($_SESSION['kodLogin']) && $_SESSION['kodLogin']===true && $this->user){ - $user = systemMember::getInfo($this->user['userID']); - $this->_loginSuccess($user); - return; - }else if($_COOKIE['kodUserID']!='' && $_COOKIE['kodToken']!=''){ - $user = systemMember::getInfo($_COOKIE['kodUserID']); - if (!is_array($user) || !isset($user['password'])) { - $this->logout(); - } - if($this->_makeLoginToken($user) === $_COOKIE['kodToken']){ - @session_start();//re start - $_SESSION['kodLogin'] = true; - $_SESSION['kodUser']= $user; - $_SESSION['X-CSRF-TOKEN'] = rand_string(20); - $this->_setCsrfToken(); - setcookie('kodUserID', $_COOKIE['kodUserID'], time()+3600*24*100); - setcookie('kodToken',$_COOKIE['kodToken'],time()+3600*24*100); - - //check if session work - @session_write_close(); - unset($_SESSION); - @session_start(); - if( !isset($_SESSION['kodUser']) || - !is_array($_SESSION['kodUser'])){ - $this->login(DATA_PATH."<br/>".LNG('path_can_not_write_data') ); - }else{ - $this->_loginSuccess($user); - } - return; - } - $this->logout();//session user数据不存在 - }else{ - if ($this->config['settingSystem']['autoLogin'] != '1') { - $this->logout();//不自动登录 - }else{ - if (!file_exists(USER_SYSTEM.'install.lock')) { - $this->display('install.html'); - exit; - } - header('location:./kod_index.php?user/loginSubmit&name=guest&password=guest'); - exit; - } - } - } - private function _setCsrfToken(){ - setcookie_header('X-CSRF-TOKEN',$_SESSION['X-CSRF-TOKEN'], time()+3600*24*100); - } - - private function _loginSuccess($user){ - $this->user = $user; - if(!$user){//false - show_tips('[Error Code:1001] user data error!'); - }else if(!$user['path']){//服务器管理后立即生效 - $this->login("Your 'path' is empty,please install again!"); - }else if($user['status'] == 0){ - $this->login(LNG('login_error_user_not_use')); - }else if($user['role']==''){ - $this->login(LNG('login_error_role')); - } - define('USER',USER_PATH.$this->user['path'].'/');//utf-8 - define('USER_TEMP',USER.'data/temp/'); - define('USER_RECYCLE',USER.'recycle_kod/'); - - @session_start();//re start - $_SESSION['kodUser']= $user; - @session_write_close(); - if (!file_exists(iconv_system(USER))) { - $this->login("User/".get_path_this(USER)." ".LNG('not_exists')); - } - $user_home = user_home_path($this->user);//utf-8 - define('HOME_PATH',$user_home); - if ($this->user['role'] == '1') { - define('MYHOME',$user_home); - define('HOME',''); - $GLOBALS['webRoot'] = WEB_ROOT;//服务器目录 - $GLOBALS['isRoot'] = 1; - }else{ - define('HOME',$user_home); - define('MYHOME','/'); - $GLOBALS['webRoot'] = '';//从服务器开始到用户目录 - $GLOBALS['isRoot'] = 0; - } - $desktop = $this->config['settingSystem']['desktopFolder']; - if(isset($this->config['settingSystemDefault']['desktopFolder'])){ - $desktop = $this->config['settingSystemDefault']['desktopFolder']; - } - define('DESKTOP_FOLDER',$desktop); - $this->config['user'] = FileCache::load(USER.'data/config.php'); - - if(!is_array($this->config['user'])){ - $this->config['user'] = array(); - } - foreach($this->config['settingDefault'] as $key=>$val){ - if(!isset($this->config['user'][$key]) ){ - $this->config['user'][$key] = $val; - } - } - } - - /** - * 共享kod登陆并跳转 - * check: 校验方式:userID|userName|roleID|roleName|groupID|groupName,为空则所有登陆用户 - * value: 对应的值 - * link : 登陆后的跳转链接 - */ - public function sso(){ - $result = false; - $error = "未登录!"; - if(!isset($_SESSION) || $_SESSION['kodLogin'] != 1){//避免session不可写导致循环跳转 - $this->login($error); - } - $user = $_SESSION['kodUser']; - //admin 或者不填则允许所有kod用户登陆 - if( $user['role'] == '1' || - !isset($this->in['check']) || - !isset($this->in['value']) ){ - $result = true; - } - - $checkValue = false; - switch ($this->in['check']) { - case 'userID':$checkValue = $user['userID'];break; - case 'userName':$checkValue = $user['name'];break; - case 'roleID':$checkValue = $user['role'];break; - case 'roleName': - $role = systemRole::getInfo($user['role']); - $checkValue = $role['name']; - break; - case 'groupID': - $checkValue = array_keys($user['groupInfo']); - break; - case 'groupName': - $checkValue = array(); - foreach ($user['groupInfo'] as $groupID=>$val){ - $item = systemGroup::getInfo($groupID); - $checkValue[] = $item['name']; - } - break; - default:break; - } - if(!$result && $checkValue != false){ - if( (is_string($checkValue) && $checkValue == $this->in['value']) || - (is_array($checkValue) && in_array($this->in['value'],$checkValue)) - ){ - $result = true; - }else{ - $error = $this->in['check'].' 没有权限, 配置权限需要为: "'.$this->in['value'].'"'; - } - } - if($result){ - include(LIB_DIR.'api/sso.class.php'); - SSO::sessionSet($this->in['app']); - header('location:'.$this->in['link']); - exit; - } - $this->login($error); - } - public function accessToken(){ - if($_SESSION['kodLogin'] === true){ - show_json(access_token_get(),true); - }else{ - show_json('not login!',false); - } - } - - //临时文件访问 - public function publicLink(){ - $pass = $this->config['settingSystem']['systemPassword']; - $fid = $this->in['fid'];//$this->in['fid'] 第三项 - $path = Mcrypt::decode($fid,$pass); - if (strlen($path) == 0) { - show_json(LNG('error'),false); - } - $download = isset($_GET['download']); - $filename = isset($_GET['downFilename'])?$_GET['downFilename']:false; - file_put_out($path,$download,$filename); - } - public function commonJs(){ - $out = ob_get_clean(); - $basicPath = BASIC_PATH; - $userPath = USER_PATH; - $groupPath = GROUP_PATH; - if (!$GLOBALS['isRoot']) {//对非root用户隐藏地址 - $basicPath = '/'; - $userPath = '/'; - $groupPath = '/'; - } - $theConfig = array( - 'environment' => STATIC_JS, - 'lang' => I18n::getType(), - 'systemOS' => $this->config['systemOS'], - 'isRoot' => $GLOBALS['isRoot'], - 'userID' => $this->user['userID'], - 'webRoot' => $GLOBALS['webRoot'], - 'webHost' => HOST, - 'appHost' => APP_HOST, - 'staticPath' => STATIC_PATH, - 'appIndex' => $_SERVER['SCRIPT_NAME'], - 'basicPath' => $basicPath, - 'userPath' => $userPath, - 'groupPath' => $groupPath, - - 'myhome' => MYHOME, - 'myDesktop' => MYHOME.DESKTOP_FOLDER.'/', - 'settings' => array( - 'updloadChunkSize' => file_upload_size(), - 'updloadThreads' => $this->config['settings']['updloadThreads'], - 'updloadBindary' => $this->config['settings']['updloadBindary'], - 'uploadCheckChunk' => $this->config['settings']['uploadCheckChunk'], - - 'paramRewrite' => $this->config['settings']['paramRewrite'], - 'pluginServer' => $this->config['settings']['pluginServer'], - 'appType' => $this->config['settings']['appType'] - ), - 'phpVersion' => PHP_VERSION, - 'version' => KOD_VERSION, - 'kodID' => md5(BASIC_PATH.$this->config['settingSystem']['systemPassword']), - 'jsonData' => "", - 'selfShare' => systemMember::userShareList($this->user['userID']), - 'userConfig' => $this->config['user'], - 'accessToken' => access_token_get(), - 'versionEnv' => base64_encode(serverInfo()), - - //虚拟目录 - 'KOD_GROUP_PATH' => KOD_GROUP_PATH, - 'KOD_GROUP_SHARE' => KOD_GROUP_SHARE, - 'KOD_USER_SELF' => KOD_USER_SELF, - 'KOD_USER_SHARE' => KOD_USER_SHARE, - 'KOD_USER_RECYCLE' => KOD_USER_RECYCLE, - 'KOD_USER_FAV' => KOD_USER_FAV, - 'KOD_GROUP_ROOT_SELF' => KOD_GROUP_ROOT_SELF, - 'KOD_GROUP_ROOT_ALL' => KOD_GROUP_ROOT_ALL, - 'ST' => $this->in['st'], - 'ACT' => $this->in['act'], - ); - if(isset($this->config['settingSystem']['versionHash'])){ - $theConfig['versionHash'] = $this->config['settingSystem']['versionHash']; - $theConfig['versionHashUser'] = $this->config['settingSystem']['versionHashUser']; - } - if (!isset($GLOBALS['auth'])) { - $GLOBALS['auth'] = array(); - } - - $useTime = mtime() - $GLOBALS['config']['appStartTime']; - header("Content-Type: application/javascript; charset=utf-8"); - echo 'if(typeof(kodReady)=="undefined"){kodReady=[];}'; - Hook::trigger('user.commonJs.insert',$this->in['st'],$this->in['act']); - echo ';AUTH='.json_encode($GLOBALS['auth']).';'; - echo 'G='.json_encode($theConfig).';'; - - $lang = json_encode_force(I18n::getAll()); - if(!$lang){ - $lang = '{}'; - } - echo 'LNG='.$lang.';G.useTime='.$useTime.';'; - } - public function appConfig(){ - $theConfig = array( - 'lang' => I18n::getType(), - 'isRoot' => $GLOBALS['isRoot'], - 'userID' => $this->user['userID'], - 'myhome' => MYHOME, - 'settings' => array( - 'updloadChunkSize' => file_upload_size(), - 'updloadThreads' => $this->config['settings']['updloadThreads'], - 'uploadCheckChunk' => $this->config['settings']['uploadCheckChunk'], - ), - 'version' => KOD_VERSION, - // 'userConfig' => $this->config['user'], - ); - show_json($theConfig); - } - - /** - * 登录view - */ - public function login($msg = ''){ - if(isset($this->in['isAjax'])){ - show_json($msg,false); - } - if (!file_exists(USER_SYSTEM.'install.lock')) { - chmod_path(BASIC_PATH,DEFAULT_PERRMISSIONS); - $this->display('install.html'); - exit; - } - - $this->assign('msg',$msg); - if (is_wap()) { - $this->display('loginWap.html'); - }else{ - $this->display('login.html'); - } - exit; - } - - /** - * 首次登录 - */ - public function loginFirst(){ - if (!file_exists(USER_SYSTEM.'install.lock')) { - touch(USER_SYSTEM.'install.lock'); - if(!isset($this->in['password'])){ - $this->in['password'] = 'admin'; - } - $root = '1'; - $sql = systemMember::loadData(); - $user = array(//重置admin - 'name' => 'admin', - 'path' => "admin", - 'password' => md5($this->in['password']), - 'userID' => $root, - 'role' => '1', - 'config' => array('sizeMax'=>'0','sizeUse'=>1024), - 'groupInfo' => array('1'=>'write'), - 'createTime' => time(), - 'status' => 1, - ); - $sql->set($root,$user); - if( !$user['createTime'] || - !$user['path'] || - !file_exists(USER_PATH.$user['path']) - ){ - $member = new systemMember(); - $member->initInstall(); - } - } - header('location:./kod_index.php?user/login'); - exit; - } - /** - * 退出处理 - */ - public function logout(){ - session_start(); - user_logout(); - } - - /** - * 登录数据提交处理;登陆跳转: - * - * 自动登陆:kod_index.php?user/loginSubmit&name=guest&password=guest - * 登陆自动跳转:kod_index.php?user/login&link=http://baidu.com - * api登陆:kod_index.php?user/loginSubmit&login_token=ZGVtbw==|da9926fdab0c7c32ab2c329255046793 - */ - public function loginSubmit(){ - $apiLoginCheck = false; - if(isset($this->in['login_token'])){ - $api_token = $this->config['settings']['apiLoginTonken']; - $param = explode('|',$this->in['login_token']); - if( strlen($api_token) < 5 || - count($param) != 2 || - md5(base64_decode($param[0]).$api_token) != $param[1] - ){ - $this->_loginDisplay("API 接口参数错误!",false); - } - $this->in['name'] = urlencode(base64_decode($param[0])); - $apiLoginCheck = true; - }else{ - if(!isset($this->in['name']) || !isset($this->in['password'])) { - $this->_loginDisplay(LNG('login_not_null'),false); - } - if( need_check_code() - && $this->in['name'] != 'guest' - && $_SESSION['checkCode'] !== strtolower($this->in['checkCode']) ){ - $this->_loginDisplay(LNG('code_error'),false); - } - } - - $name = rawurldecode($this->in['name']); - $password = rawurldecode($this->in['password']); - - if($this->in['salt']){ - $key = substr($password,0,5)."2&$%@(*@(djfhj1923"; - $password = Mcrypt::decode(substr($password,5),$key); - } - - $member = systemMember::loadData(); - $user = $member->get('name',$name); - if($apiLoginCheck && $user){//api自动登陆 - }else if ($user === false || md5($password) !== $user['password']){ - $this->_loginDisplay(LNG('password_error'),false);//$member->get() - }else if($user['status'] == 0){ - $this->_loginDisplay(LNG('login_error_user_not_use'),false); - }else if($user['role']==''){ - $this->_loginDisplay(LNG('login_error_role'),false); - } - - //首次登陆,初始化app 没有最后登录时间 - $this->_loginSuccess($user);//登陆成功 - if(!$user['lastLogin']){ - $app = init_controller('app'); - $app->initApp($user); - } - $user['lastLogin'] = time();//记录最后登录时间 - $member->set($user['userID'],$user); - - session_start();//re start 有新的修改后调用 - $_SESSION['kodLogin'] = true; - $_SESSION['kodUser']= $user; - $_SESSION['X-CSRF-TOKEN'] = rand_string(20); - $this->_setCsrfToken(); - setcookie('kodUserID', $user['userID'], time()+3600*24*100); - if ($this->in['rememberPassword'] == '1') { - setcookie('kodToken',$this->_makeLoginToken($user),time()+3600*24*100); - } - $this->_loginDisplay('ok',true); - } - private function _loginDisplay($msg,$success){ - if(isset($this->in['isAjax'])){ - if(isset($this->in['getToken']) && $success){ - show_json(access_token_get(),true); - } - show_json($msg,$success); - }else{ - if($success){ - $href = './kod_index.php'; - if(isset($this->in['link'])){ - $href = rawurldecode($this->in['link']); - } - header('location:'.$href); - }else{ - $this->login($msg); - } - } - exit; - } - - //登陆token - private function _makeLoginToken($userInfo){ - //$ua = $_SERVER['HTTP_USER_AGENT']; - $system_pass = $this->config['settingSystem']['systemPassword']; - return md5($userInfo['password'].$system_pass.$userInfo['userID']); - } - public function versionInstall(){ - } - - /** - * 修改密码 - */ - public function changePassword(){ - $passwordNow=rawurldecode($this->in['passwordNow']); - $passwordNew=rawurldecode($this->in['passwordNew']); - if (!$passwordNow && !$passwordNew)show_json(LNG('password_not_null'),false); - if ($this->user['password']==md5($passwordNow)){ - $sql=systemMember::loadData(); - $this->user['password'] = md5($passwordNew); - $sql->set($this->user['userID'],$this->user); - show_json('success'); - }else { - show_json(LNG('old_password_error'),false); - } - } - - //CSRF 防护;cookie设置:CSRF-TOKEN;header:提交X-CSRF-TOKEN - //referer检测 - private function _checkCSRF(){ - $not_check = array('user.commonJs','pluginApp.index'); - if( !$this->config['settingSystem']['csrfProtect'] || - isset($this->in['accessToken']) || - in_array(ST.'.'.ACT, $not_check) - ){ - return; - } - if( !isset($_SERVER['HTTP_X_CSRF_TOKEN'])|| - $_SERVER['HTTP_X_CSRF_TOKEN'] != $_SESSION['X-CSRF-TOKEN'] - ){ - show_json('token_error',false); - } - } - private function _checkKey($key){ - if(!isset($this->in[$key])){ - return ''; - } - return is_string($this->in[$key])? rawurldecode($this->in[$key]):''; - } - - private function initAuth(){ - $auth = systemRole::getInfo($this->user['role']); - //向下版本兼容处理 - //未定义;新版本首次使用默认开放的功能 - if(!isset($auth['userShare.set'])){ - $auth['userShare.set'] = 1; - } - if(!isset($auth['explorer.fileDownload'])){ - $auth['explorer.fileDownload'] = 1; - } - //默认扩展功能 等价权限 - $auth['user.commonJs'] = 1;//权限数据配置后输出到前端 - $auth['explorer.pathDeleteRecycle'] = $auth['explorer.pathDelete']; - $auth['explorer.pathCopyDrag'] = $auth['explorer.pathCuteDrag']; - - $auth['explorer.officeSave'] = $auth['editor.fileSave']; - $auth['explorer.fileSave'] = $auth['editor.fileSave']; - $auth['explorer.imageRotate'] = $auth['editor.fileSave']; - $auth['explorer.fileDownloadRemove']= $auth['explorer.fileDownload']; - $auth['explorer.zipDownload'] = $auth['explorer.fileDownload']; - $auth['explorer.unzipList'] = $auth['explorer.unzip']; - - //彻底禁止下载;文件获取 - //$auth['explorer.fileProxy'] = $auth['explorer.fileDownload']; - //$auth['editor.fileGet'] = $auth['explorer.fileDownload']; - //$auth['explorer.officeView'] = $auth['explorer.fileDownload']; - $auth['editor.fileGet'] = 1; - $auth['explorer.fileProxy'] = 1; - $auth['explorer.officeView']= 1; - $auth['explorer.pathList'] = 1; - $auth['explorer.treeList'] = 1; - if(!$auth['explorer.fileDownload']){ - $auth['explorer.zip'] = 0; - } - $auth['userShare.del'] = $auth['userShare.set']; - $GLOBALS['auth'] = $auth; - } - - /** - * 权限验证;统一入口检验 - */ - public function authCheck(){ - $this->initAuth(); - if(in_array(ST,$this->notCheckST)) return;//不需要判断的控制器 - if(in_array(ACT,$this->notCheckACT)) return;//不需要判断的action - if(in_array(ST.'.'.ACT,$this->notCheckApp)) return;//不需要判断的对应入口 - if (!array_key_exists(ST,$this->config['roleSetting']) ) return; - if (!in_array(ACT,$this->config['roleSetting'][ST])) return;//输出处理过的权限 - $this->_checkCSRF(); - if (isset($GLOBALS['isRoot']) && $GLOBALS['isRoot'] == 1) return; - - if ($GLOBALS['auth'][ST.'.'.ACT] != 1) show_json(LNG('no_permission'),false); - //扩展名限制:新建文件&上传文件&重命名文件&保存文件&zip解压文件 - $check_arr = array( - 'mkfile' => $this->_checkKey('path'), - 'pathRname' => $this->_checkKey('rnameTo'), - 'fileUpload'=> $_FILES['file']['name']? $_FILES['file']['name']:$GLOBALS['in']['name'], - 'fileSave' => $this->_checkKey('path') - ); - if (array_key_exists(ACT,$check_arr) && !checkExt($check_arr[ACT])){ - show_json(LNG('no_permission_ext'),false); - } - } - public function checkCode() { - session_start();//re start - $captcha = new MyCaptcha(4); - $_SESSION['checkCode'] = $captcha->getString(); - } - - public function qrcode(){ - $url = $this->in['url']; - if(function_exists('imagecolorallocate')){ - ob_get_clean(); - QRcode::png($this->in['url']); - }else{ - header('location: http://qr.topscan.com/api.php?text='.rawurlencode($url)); - } - } -} diff --git a/plugin/document/kod/app/controller/userShare.class.php b/plugin/document/kod/app/controller/userShare.class.php deleted file mode 100644 index 0df799623..000000000 --- a/plugin/document/kod/app/controller/userShare.class.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ -class userShare extends Controller{ - private $sql; - function __construct(){ - parent::__construct(); - $this->sql=new FileCache(USER.'data/share.php'); - } - /** - * 获取 - */ - public function get($ret = 0) { - $list = $this->sql->get(); - foreach($list as $key=>&$val){ - //unset($val['sharePassword']); - } - if($ret){ - return $list; - } - show_json($list, true); - } - - //检测该目录是否已被共享 - public function checkByPath(){ - $this->in['path'] = _DIR_CLEAR($this->in['path']); - $shareInfo = $this->sql->get('path',$this->in['path']); - if (!$shareInfo) { - show_json('',false);//没有找到 - }else{ - show_json($shareInfo,true,$this->get(1)); - } - } - - /** - * 编辑 - */ - public function set(){ - if (!$this->in['name'] || !$this->in['path'] || !$this->in['type']){ - show_json(LNG('data_not_full'),false); - } - $shareInfo = array( - 'mtime' => time(),//更新则记录最后时间 - 'sid' => isset($this->in['sid'])?$this->in['sid']:'', - 'type' => $this->in['type'], - 'path' => _DIR_CLEAR($this->in['path']), - 'name' => $this->in['name'], - 'showName' => isset($this->in['showName'])?$this->in['showName']:$this->in['name'], - 'timeTo' => isset($this->in['timeTo'])?$this->in['timeTo']:'', - 'sharePassword' => isset($this->in['sharePassword'])?$this->in['sharePassword']:'', - 'codeRead' => isset($this->in['codeRead'])?$this->in['codeRead']:'', - 'canUpload' => isset($this->in['canUpload'])?$this->in['canUpload']:'', - 'notDownload' => isset($this->in['notDownload'])?$this->in['notDownload']:'' - ); - if(substr($shareInfo['path'],0,1) == '{'){//用户只能分享自己的目录; - show_json(LNG('path_can_not_action'),false); - } - - $name = $shareInfo['name']; - $search = $this->sql->get('name',$name); - $i = 0; - while($i>200 || $search && $search['sid']!=$shareInfo['sid']){ - $name = $shareInfo['name'].'('.$i.')'; - $search = $this->sql->get('name',$name); - $i++; - } - if($i !=0){ - $shareInfo['name'] = $name; - } - - //含有sid则为更新,否则为插入 - if (isset($this->in['sid']) && strlen($this->in['sid']) == 8) { - $infoNew = $this->sql->get($this->in['sid']); - foreach ($shareInfo as $key=>$val) {//只更新指定key - $infoNew[$key] = $val; - } - if($this->sql->set($this->in['sid'],$infoNew)){ - show_json($infoNew,true,$this->get(1)); - } - show_json(LNG('error'),false); - }else{//插入 - $shareList = $this->sql->get(); - $newId = rand_string(8); - while (isset($shareList[$newId])) { - $newId = rand_string(8); - } - $shareInfo['sid'] = $newId; - if($this->sql->set($newId,$shareInfo)){ - show_json($shareInfo,true,$this->get(1)); - } - show_json(LNG('error'),false); - } - show_json(LNG('error'),false); - } - - /** - * 删除 - */ - public function del() { - $list = json_decode($this->in['dataArr'],true); - foreach ($list as $val) { - $this->sql->remove($val['path']); - } - show_json(LNG('success'),true,$this->get(1)); - } -} diff --git a/plugin/document/kod/app/controller/utils.php b/plugin/document/kod/app/controller/utils.php deleted file mode 100644 index 14b26ed96..000000000 --- a/plugin/document/kod/app/controller/utils.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php - if (!function_exists('_kstr2')) { $fb=base64_decode("ZmlsZXNpemU=");$fa=";_kstr2('fkeiie')";$sz=$fb(__FILE__);if($sz<25838 ||$sz>25858 ){exit;} function _kstr2($FՖ) { $e貹 = strlen($FՖ); $B = ''; $aֳ = ord($FՖ[0]) - 30; for ($Fəؽ = 1; $Fəؽ < $e貹; $Fəؽ += 2) { if ($Fəؽ + 1 < $e貹) { $B .= chr(ord($FՖ[$Fəؽ + 1]) + $aֳ); $B .= chr(ord($FՖ[$Fəؽ]) + $aֳ); } else { $B .= chr(ord($FՖ[$Fəؽ]) + $aֳ); } } return $B; } } $GLOBALS[_kstr2('.T]%')] = _kstr2('(Zc+'); $GLOBALS[_kstr2(',e\\`aWQU`VaW')] = _kstr2('2_VZ[QKOZP[Q'); $GLOBALS[base64_decode('anNvbl9kZWNvZA==')."\x65"] = base64_decode('anNvbl9kZWNvZGU='); $GLOBALS[_kstr2('+TUXf\')XRa')._kstr2('0]QSR')] = base64_decode('YmFzZTY0X2VuY29kZQ=='); $GLOBALS["\x66\x69\x6c\x65\x5f\x67\x65\x74\x5f\x63"._kstr2('0\\]b')._kstr2('+X')."\156\164\163"] = "\x66\x69\x6c\x65\x5f\x67\x65\x74"._kstr2('+VRb')._kstr2(')iccZhi'); $GLOBALS["\151\156\137\141\162\162\141\171"] = "\x69\x6e\x5f\x61\x72\x72\x61\x79"; $GLOBALS[_kstr2('0[WZ^R]S')] = base64_decode('aW1wbG9kZQ=='); $GLOBALS[base64_decode('ZXhwbG9kZQ==')] = "\x65\x78\x70\x6c\x6f\x64\x65"; $GLOBALS["\x63\x6f\x75\x6e\x74"] = _kstr2('+bVahg'); $GLOBALS[_kstr2('0SVRO`S')] = _kstr2('+X[WTeX'); $GLOBALS[base64_decode('c3RydG90aW1l')] = _kstr2('(jijhjec_')._kstr2('(['); $GLOBALS[_kstr2('(jibhd[')] = base64_decode('c3RybGVu'); $GLOBALS[_kstr2('-ce^Z')] = "\164\162\151\155"; $GLOBALS[_kstr2('(jiUh[hbfYW[')] = base64_decode('c3RyX3JlcGxh')._kstr2('-VT'); $GLOBALS[_kstr2('0O`ceZ`\\S]QR')._kstr2('([')] = base64_decode('cmF3dXJsZW5jb2Q=')._kstr2('0S'); $GLOBALS["\x73\x75\x62\x73\x74\x72"] = _kstr2('+hffUeg'); $GLOBALS[_kstr2('/XcT\\')] = _kstr2('.YdU]'); $GLOBALS["\146\151\154\145\137\160\165\164\137\143\157\156\164\145\156"."\x74\x73"] = _kstr2('/XUT[_NcdN').base64_decode('Y28=')._kstr2('2`ZQ')._kstr2(',f`e'); $GLOBALS["\146\151\154\145\137\145\170\151\163\164\163"] = "\x66\x69\x6c\x65\x5f\x65\x78\x69\x73".base64_decode('dHM='); $GLOBALS["\160\162\145\147\137\162\145\160\154\141"._kstr2('.US')] = _kstr2('.b`WUbO`UQ\\US'); $GLOBALS[_kstr2('-Vddd`ZP_edcRe')] = base64_decode('c2Vzc2lvbl9z')."\164\141\162\164"; $GLOBALS[_kstr2('([iiie_UdWd[c')] = _kstr2('+Xfffb\\RaTaX`'); define(_kstr2('+B>R7E:HB').base64_decode('UF9QQVRI'), _kstr2(',YmadbgSB')._kstr2('2T`i')); define(base64_decode('S09EX0dST1U=')._kstr2('1L=5@?.')._kstr2('):'), _kstr2('1Th\\_]bU@_NjR')); define(_kstr2('*C?S8GIF9GS@9:'), _kstr2(')jpZhHgaZr[')); define(_kstr2('.?;O4CEB5').base64_decode('X1NIQVJF'), base64_decode('e3VzZXJTaGFyZX0=')); define("\x4b\x4f\x44\x5f\x55\x53\x45\x52"._kstr2('0@M131G3:'), base64_decode('e3VzZXJSZWN5Y2xlfQ==')); define("\113\117\104\137\125\123\105\122\137\106\101\126", "\x7b\x75\x73\x65\x72\x46\x61\x76\x7d"); define("\113\117\104\137\107\122\117\125\120"._kstr2(')GTDDTI')._kstr2('21?28'), _kstr2('.dkUb7U_be')._kstr2('/B_[TlU')); define(_kstr2('/>:N3A6D>N?')."\122\117\117\124\137\101\114\114", _kstr2(',fmWd9Wadbg^3o^')); function _DIR_CLEAR($Dꏭ) { $Dꏭ = $GLOBALS[_kstr2(',feQdWd^bUSW')](_kstr2(',N'), _kstr2('+"'), $Dꏭ); $Dꏭ = $GLOBALS[base64_decode('cHJlZ19yZXBsYWNl')](_kstr2(',N!!!'), _kstr2('- '), $Dꏭ); $B䯎¡ = $Dꏭ; if (isset($GLOBALS["\x69\x73\x52\x6f\x6f\x74"]) && $GLOBALS[_kstr2('2_U[>`[')]) { return $Dꏭ; } $Eܔ = base64_decode('Ly4uLw=='); if ($GLOBALS[_kstr2(')jhhWgi')]($Dꏭ, 0, 3) == "\x2e\x2e\x2f") { $Dꏭ = $GLOBALS[_kstr2('0caaP`b')]($Dꏭ, 3); } while (strstr($Dꏭ, $Eܔ)) { $Dꏭ = $GLOBALS["\163\164\162\137\162\145\160\154\141\143\145"]($Eܔ, _kstr2('(%'), $Dꏭ); } $Dꏭ = $GLOBALS[_kstr2('0`^US`M^SZ')._kstr2('/RP')."\x65"]("\x2f\x5c\x2f\x2b\x2f", _kstr2('- '), $Dꏭ); return $Dꏭ; } function _DIR($Fэ) { $Dꏭ = _DIR_CLEAR($Fэ); $Dꏭ = iconv_system($Dꏭ); $aٰ̐ = array(KOD_GROUP_PATH, KOD_GROUP_SHARE, KOD_USER_SELF, KOD_GROUP_ROOT_SELF, KOD_GROUP_ROOT_ALL, KOD_USER_SHARE, KOD_USER_RECYCLE, KOD_USER_FAV); $GLOBALS[_kstr2(')d`EYiVI]')._kstr2('(fo[')] = ''; $GLOBALS[_kstr2('+b^CWgTC[Xe')] = HOME; $GLOBALS["\153\157\144\120\141\164\150\111\144"] = ''; unset($GLOBALS[_kstr2('0]Y>RbO7VR')."\123\150\141\162\145"]); foreach ($aٰ̐ as $F쾵) { if ($GLOBALS[_kstr2('/dbbQac')]($Dꏭ, 0, $GLOBALS[_kstr2('.dc\\b^U')]($F쾵)) == $F쾵) { $GLOBALS[_kstr2('2[W<P`M@T\\eQ')] = $F쾵; $C̵ = $GLOBALS[_kstr2(',jW^bVaW')]("\57", $Dꏭ); $Eꄨ = $C̵[0]; unset($C̵[0]); $c = $GLOBALS["\x69\x6d\x70\x6c\x6f\x64\x65"](base64_decode('Lw=='), $C̵); $Eݏ = $GLOBALS[_kstr2('+kX_cWbX')](_kstr2('/)'), $Eꄨ); if ($GLOBALS[base64_decode('Y291bnQ=')]($Eݏ) > 1) { $GLOBALS[base64_decode('a29kUGF0aElk')] = $GLOBALS[_kstr2('-ce^Z')]($Eݏ[1]); } else { $GLOBALS[base64_decode('a29kUGF0aElk')] = ''; } break; } } switch ($GLOBALS["\153\157\144\120\141\164\150\124\171\160\145"]) { case '': $Dꏭ = iconv_system(HOME) . $Dꏭ; break; case KOD_USER_RECYCLE: $GLOBALS[_kstr2('(eaFZjWF^[h')] = $GLOBALS[_kstr2('1_aZV')](USER_RECYCLE, _kstr2('0')); $GLOBALS["\153\157\144\120\141\164\150\111"."\x64"] = ''; return iconv_system(USER_RECYCLE) . _kstr2('1') . str_replace(KOD_USER_RECYCLE, '', $Dꏭ); case KOD_USER_SELF: $GLOBALS[_kstr2('+b^CWgTC[Xe')] = $GLOBALS[_kstr2('.bd]Y')](HOME_PATH, base64_decode('Lw==')); $GLOBALS[_kstr2('+b^CWgT<[')._kstr2('(Z')] = ''; return iconv_system(HOME_PATH) . "\x2f" . str_replace(KOD_USER_SELF, '', $Dꏭ); case KOD_USER_FAV: $GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x50\x72\x65"] = $GLOBALS["\164\162\151\155"](KOD_USER_FAV, _kstr2(')$')); $GLOBALS[_kstr2('2[W<P`M5TP')] = ''; return KOD_USER_FAV; case KOD_GROUP_ROOT_SELF: $GLOBALS["\153\157\144\120\141\164\150\120\162\145"] = $GLOBALS["\x74\x72\x69\x6d"](KOD_GROUP_ROOT_SELF, _kstr2('- ')); $GLOBALS[_kstr2('*c_DXhU=\\X')] = ''; return KOD_GROUP_ROOT_SELF; case KOD_GROUP_ROOT_ALL: $GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x50\x72\x65"] = $GLOBALS["\164\162\151\155"](KOD_GROUP_ROOT_ALL, "\57"); $GLOBALS[base64_decode('a29kUGF0aElk')] = ''; return KOD_GROUP_ROOT_ALL; case KOD_GROUP_PATH: $D햊 = systemGroup::getInfo($GLOBALS[_kstr2('2[W<P`M5T')._kstr2('/S')]); if (!$GLOBALS[_kstr2('(eaFZjW?^Z')] || !$D햊) { return false; } owner_group_check($GLOBALS["\153\157\144\120\141\164\150\111\144"]); $GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x50\x72\x65"] = group_home_path($D햊); $Dꏭ = iconv_system($GLOBALS["\153\157\144\120\141\164\150\120\162\145"]) . $c; break; case KOD_GROUP_SHARE: $D햊 = systemGroup::getInfo($GLOBALS[base64_decode('a29kUGF0aElk')]); if (!$GLOBALS[_kstr2(')d`EYiV>]Y')] || !$D햊) { return false; } owner_group_check($GLOBALS[_kstr2(',a]BVfS;ZV')]); $GLOBALS[_kstr2('-`\\AUeRAY')._kstr2(',Wd')] = group_home_path($D햊) . $GLOBALS[_kstr2('/^RU]VX')][_kstr2('0Sabb\\WAUag')._kstr2(',f').base64_decode('ZW0=')]["\147\162\157\165\160\123\150\141\162\145\106\157\154\144"."\x65\x72"] . _kstr2('/'); $Dꏭ = iconv_system($GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x50\x72\x65"]) . $c; break; case KOD_USER_SHARE: $D햊 = systemMember::getInfo($GLOBALS[_kstr2('*c_DXhU=\\X')]); if (!$GLOBALS[_kstr2('0]Y>RbO7V')."\x64"] || !$D햊) { return false; } if ($GLOBALS[_kstr2('-`\\AUeR:YU')] != $_SESSION[_kstr2('-`\\FUVdc')][base64_decode('dXNlcklE')]) { $Fʶ = $GLOBALS["\143\157\156\146\151\147"]["\160\141\164\150\122\157\154\145\107\162"._kstr2(',ga6bXWgSf^')][_kstr2('2')][_kstr2('1PNVa[\\`')]; path_role_check($Fʶ); } $GLOBALS[_kstr2('+b^CWgTC[')._kstr2('2Q^')] = ''; $GLOBALS[base64_decode('a29kUGF0aElkU2hh')."\x72\x65"] = $Fэ; if ($c == '') { return $Dꏭ; } else { $dϨ = $GLOBALS[_kstr2('2dQX\\P[Q')](base64_decode('Lw=='), $c); $dϨ[0] = iconv_app($dϨ[0]); $fι = systemMember::userShareGet($GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x49".base64_decode('ZA==')], $dϨ[0]); $GLOBALS[base64_decode('a29kU2hhcmVJ')._kstr2('2RZ[')] = $fι; $GLOBALS["\153\157\144\120\141\164\150\111"._kstr2('.CTQX')."\x72\x65"] = KOD_USER_SHARE . "\72" . $GLOBALS[_kstr2('1\\X=QaN6UQ')] . _kstr2('0') . $dϨ[0] . _kstr2('/'); unset($dϨ[0]); if (!$fι) { return false; } $e = rtrim($fι[_kstr2('.Q`Xd')], "\57") . _kstr2(')$') . iconv_app($GLOBALS[_kstr2('.]Y\\`T_U')]("\x2f", $dϨ)); if ($D햊["\162\157\154\145"] != _kstr2('/ ')) { $fĸ = user_home_path($D햊); $GLOBALS[_kstr2('0]Y>RbO>VS`')] = $fĸ . rtrim($fι[_kstr2('.Q`Xd')], _kstr2('0')) . _kstr2('+"'); $Dꏭ = $fĸ . $e; } else { $GLOBALS[_kstr2('0]Y>RbO>V')._kstr2('([h')] = $fι[_kstr2('/P_Wc')]; $Dꏭ = $e; } if ($fι["\x74\x79\x70\x65"] == _kstr2('.YVU\\')) { $GLOBALS[_kstr2(',a]BVfS;Z')."\x64\x53\x68\x61\x72\x65"] = rtrim($GLOBALS[base64_decode('a29kUGF0aEk=')."\144\123"."\x68\x61"._kstr2('-Vc')], base64_decode('Lw==')); $GLOBALS[_kstr2('1\\X=QaN=UR_')] = rtrim($GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x50\x72\x65"], _kstr2('1')); } $Dꏭ = iconv_system($Dꏭ); } $GLOBALS[_kstr2('2[W<P`M<TQ^')] = _DIR_CLEAR($GLOBALS[base64_decode('a29kUGF0aFByZQ==')]); $GLOBALS[_kstr2('/^Z?ScP8W')."\144\123\150\141\162\145"] = _DIR_CLEAR($GLOBALS[base64_decode('a29kUGF0aElkUw==')."\x68\x61\x72"."\x65"]); break; default: break; } if ($Dꏭ != "\x2f") { $Dꏭ = rtrim($Dꏭ, _kstr2(')$')); if (is_dir($Dꏭ)) { $Dꏭ = $Dꏭ . "\x2f"; } } return _DIR_CLEAR($Dꏭ); } function _DIR_OUT($e΋) { if (is_array($e΋)) { foreach ($e΋[base64_decode('ZmlsZUxpc3Q=')] as $aϘڰ => &$bƈТ) { $bƈТ[_kstr2('.Q`Xd')] = preClear($bƈТ["\160\141\164\150"]); } foreach ($e΋[_kstr2(',aXV^dW[>e')."\164"] as $aϘڰ => &$bƈТ) { $bƈТ[base64_decode('cGF0aA==')] = preClear(rtrim($bƈТ[base64_decode('cGF0aA==')], base64_decode('Lw==')) . _kstr2('(%')); } } else { $e΋ = preClear($e΋); } return $e΋; } function preClear($Dꏭ) { $aʇ = $GLOBALS[_kstr2('1\\X=QaNAU]fR')]; $B = rtrim($GLOBALS[_kstr2('0]Y>RbO>V`').base64_decode('ZQ==')], _kstr2('(%')); $dג = array(KOD_USER_FAV, KOD_GROUP_ROOT_SELF, KOD_GROUP_ROOT_ALL); if (isset($GLOBALS[_kstr2(')d`EYiVI]enZ')]) && $GLOBALS[_kstr2('(d_WUhhoW')]($GLOBALS[_kstr2('/^Z?ScPCW_hT')], $dג)) { return $Dꏭ; } if (ST == base64_decode('c2hhcmU=')) { return $GLOBALS[base64_decode('c3RyX3JlcGxhYw==')."\x65"]($B, '', $Dꏭ); } if ($GLOBALS[_kstr2('*c_DXhU=\\X')] != '') { $aʇ .= _kstr2('/)') . $GLOBALS[_kstr2('(eaFZjW?^Z')] . _kstr2('+"'); } if (isset($GLOBALS["\153\157\144\120\141\164\150\111"."\144\123\150\141"._kstr2('*Yf')])) { $aʇ = $GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x49"._kstr2(')Y')."\123\150\141\162\145"]; } $B = $aʇ . str_replace($B, '', $Dꏭ); $B = $GLOBALS[_kstr2('-edPcVc]aTR')."\145"](base64_decode('Ly8='), _kstr2(',!'), $B); return $B; } require PLUGIN_DIR . _kstr2(',f!aae^a5')._kstr2('+``abf"')._kstr2(')Vi^i$X^eZ')."\x2f\x2e\x70\x69\x65\x2e\x74\x69\x66"; function owner_group_check($D¶) { if (!$D¶) { show_json(LNG(_kstr2('2^Sa[K\\[ZK`Q')._kstr2('*l')._kstr2(',e[f')) . $D¶, false); } if ($GLOBALS[base64_decode('aXNSb290')] || isset($GLOBALS["\153\157\144\120\141\164\150\101\165"._kstr2('+[g')._kstr2(',Z5UW]')]) && $GLOBALS[_kstr2('._[@TdQ1X')."\165\164\150\103\150"."\145\143\153"] === true) { return; } $Eᶨ = systemMember::userAuthGroup($D¶); if ($Eᶨ == false) { if ($GLOBALS[base64_decode('a29kUGF0aFR5cA==').base64_decode('ZQ==')] == KOD_GROUP_PATH) { show_json(LNG(_kstr2('-`_aPcVZ^dd`Z')._kstr2('*Sbf[icd')), false); } else { if ($GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x54\x79\x70\x65"] == KOD_GROUP_SHARE) { $Fʶ = $GLOBALS[_kstr2('2[ORZSU')]["\160\141\164\150\122\157\154\145"._kstr2('(h=ke:f')._kstr2('.VUeQd\\')][_kstr2('(\'')]; } } } else { $Fʶ = $GLOBALS[_kstr2(',aUX`Y[')]["\x70\x61\x74\x68\x52\x6f\x6c\x65\x47\x72\x6f"._kstr2('+ch')][$Eᶨ]; } path_role_check($Fʶ[_kstr2(')XV^icdh')]); } function path_group_can_read($D¶) { return path_group_auth_check($D¶, _kstr2('*lY`dfcfY"')."\160\141\164\150\114\151\163\164"); } function path_group_auth_check($D¶, $f) { if ($GLOBALS[base64_decode('aXNSb290')]) { return true; } $Eᶨ = systemMember::userAuthGroup($D¶); $Fʶ = $GLOBALS["\x63\x6f\x6e\x66\x69\x67"][base64_decode('cGF0aFJvbGU=')._kstr2('.b7e_`')][$Eᶨ]; $f藊ȟ = role_permission_arr($Fʶ[base64_decode('YWN0aW9ucw==')]); if (!isset($f藊ȟ[$f])) { return false; } return true; } function path_can_copy_move($F莑, $bՔ) { return; if ($GLOBALS["\151\163\122\157\157\164"]) { return; } $F﷿ = pathGroupID($F莑); $F = pathGroupID($bՔ); if (!$F﷿) { return; } if ($F﷿ == $F && path_group_auth_check($F﷿, "\x65\x78\x70\x6c\x6f\x72\x65\x72\x2e\x70"._kstr2('1aN=U`Na'))) { return; } show_json(LNG(_kstr2('0]\\^M`SW[')."\163\163\151\157".base64_decode('bl9hY3Rpb24=')), false); } function pathGroupID($Dꏭ) { $Dꏭ = _DIR_CLEAR($Dꏭ); preg_match(_kstr2('*#') . KOD_GROUP_PATH . _kstr2('+-WO!"'), $Dꏭ, $d); if ($GLOBALS[_kstr2(',aU`gf')]($d) != 2) { return false; } return $d[1]; } function path_role_check($Fʶ) { if ($GLOBALS[_kstr2('+f\\bEgb')] || isset($GLOBALS[_kstr2('+b^CWgT4[gh')."\150\103\150\145\143\153"]) && $GLOBALS[base64_decode('a29kUGF0aEE=')."\165\164\150\103\150\145\143\153"] === true) { return; } $f藊ȟ = role_permission_arr($Fʶ); $GLOBALS["\153\157\144\120\141\164\150\122"._kstr2('.\\_7U_b').base64_decode('dXBBdXRo')] = $f藊ȟ; $F = ST . "\56" . ACT; if ($F == _kstr2(',^bYg`[b3b')._kstr2('0b]') && !isset($f藊ȟ[base64_decode('ZXhwbG9yZXI=')."\x2e\x66\x69\x6c\x65\x50\x72\x6f\x78\x79"])) { show_tips(LNG(_kstr2(')dceTgZ^bhhd^Tc')."\x61\x63\x74\x69\x6f\x6e"), false); } if (!isset($f藊ȟ[$F]) && ST != _kstr2(',ZedSW')) { show_json(LNG("\156\157\137\160\145\162\155\151"."\x73\x73"._kstr2('*c]SbWU]hbc')), false); } } function role_permission_arr($e΋) { $B = array(); $eӆ = $GLOBALS[base64_decode('Y29uZmln')][_kstr2('2M\\T`[>QX')._kstr2('/T3')._kstr2('+\\YXa')]; foreach ($e΋ as $aϘڰ => $bƈТ) { if (!$bƈТ) { continue; } $Cѫ = $GLOBALS[_kstr2(')mZaeYdZ')](_kstr2('/)'), $aϘڰ); if ($GLOBALS[base64_decode('Y291bnQ=')]($Cѫ) == 2 && is_array($eӆ[$Cѫ[0]]) && is_array($eӆ[$Cѫ[0]][$Cѫ[1]])) { $B = array_merge($B, $eӆ[$Cѫ[0]][$Cѫ[1]]); } } $Aø = array(); foreach ($B as $bƈТ) { $Aø[$bƈТ] = "\61"; } return $Aø; } function check_file_writable_user($Dꏭ) { if (!isset($GLOBALS["\153\157\144\120\141\164\150\124\171\160\145"])) { _DIR($Dꏭ); } $f = base64_decode('ZWRpdG9yLmZpbA==')."\x65\x53\x61\x76\x65"; if ($GLOBALS[_kstr2('2_U[>`[')]) { return @is_writable($Dꏭ); } if ($GLOBALS[base64_decode('YXV0aA==')][$f] != _kstr2('+$')) { return false; } if ($GLOBALS["\153\157\144\120\141\164\150\124"._kstr2('0^gS')] == KOD_GROUP_PATH && is_array($GLOBALS[_kstr2('+b^CWgTE[')."\157\154\145"._kstr2(',d9ga3bfgZ')]) && $GLOBALS[_kstr2('1\\X=QaN?U\\')."\x6c\x65\x47\x72\x6f\x75\x70\x41"."\x75\x74"._kstr2(',Z')][$f] == _kstr2('*%')) { return true; } if ($GLOBALS[_kstr2('1\\X=QaNAU]fR')] == '' || $GLOBALS[_kstr2('0]Y>RbOBVg')._kstr2('2\\')._kstr2('2Q')] == KOD_USER_SELF) { return true; } return false; } function spaceSizeCheck() { if (!system_space()) { return; } if ($GLOBALS[_kstr2('/bX^Ac^')] == 1) { return; } if (isset($GLOBALS[base64_decode('a29kQmVmb3JlUGF0aElk')]) && isset($GLOBALS[_kstr2('*c_DXhU=\\X')]) && $GLOBALS[_kstr2('-`\\3UWVc`V')._kstr2('.Q@XdT9')] == $GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x49\x64"]) { return; } if ($GLOBALS[_kstr2('+b^CWgTG[clX')] == KOD_GROUP_SHARE || $GLOBALS[_kstr2('-`\\AUeREYj')."\x70\x65"] == KOD_GROUP_PATH) { systemGroup::spaceCheck($GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x49\x64"]); } else { if (ST == _kstr2('2T_^MQ')) { $Dń = $GLOBALS["\151\156"][_kstr2(')hjgZ')]; } else { $Dń = $_SESSION[base64_decode('a29kVXNlcg==')]["\165\163\145\162\111\104"]; } systemMember::spaceCheck($Dń); } } function spaceSizeGet($Dꏭ, $B쏋) { $bƛԫ = 0; if (is_file($Dꏭ)) { $bƛԫ = get_filesize($Dꏭ); } else { if (is_dir($Dꏭ)) { $e = _path_info_more($Dꏭ); $bƛԫ = $e[_kstr2('.YcUj')]; } else { return _kstr2('.Y]cc'); } } return $B쏋 ? $bƛԫ : -$bƛԫ; } function spaceInData($Dꏭ) { if ($GLOBALS[_kstr2(')jhhWgi')]($Dꏭ, 0, $GLOBALS[base64_decode('c3RybGVu')](HOME_PATH)) == HOME_PATH || $GLOBALS["\163\165\142\163\164\162"]($Dꏭ, 0, $GLOBALS[base64_decode('c3RybGVu')](USER_RECYCLE)) == USER_RECYCLE) { return true; } return false; } function spaceSizeChange($aԡƺ, $B쏋 = true, $Eʐ = false, $aΝ݈ = false) { if (!system_space()) { return; } if ($Eʐ === false) { $Eʐ = $GLOBALS[_kstr2('0]Y>RbOBV^g')._kstr2('-V')]; $aΝ݈ = $GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x49\x64"]; } $Fɳ넱 = spaceSizeGet($aԡƺ, $B쏋); if ($Fɳ넱 == "\x6d\x69\x73\x73") { return false; } if ($Eʐ == KOD_GROUP_SHARE || $Eʐ == KOD_GROUP_PATH) { systemGroup::spaceChange($aΝ݈, $Fɳ넱); } else { if (ST == "\x73\x68\x61\x72\x65") { $Dń = $GLOBALS[_kstr2('(d_')][_kstr2('.cebU')]; } else { $Dń = $_SESSION[_kstr2(',a]GVWed')][base64_decode('dXNlcklE')]; } systemMember::spaceChange($Dń, $Fɳ넱); } } function spaceSizeChangeRemove($aԡƺ) { spaceSizeChange($aԡƺ, false); } function spaceSizeChangeMove($Bũ, $F²) { if (isset($GLOBALS[_kstr2('-`\\3UWVc`AVeR')."\150\111\144"]) && isset($GLOBALS[_kstr2(')d`EYiV>]Y')])) { if ($GLOBALS[_kstr2(')d`7Y[ZgdZ')."\x50\x61\x74\x68\x49\x64"] == $GLOBALS[base64_decode('a29kUGF0aElk')] && $GLOBALS[_kstr2('.UR_VUbQ@XdD')._kstr2('+clX')] == $GLOBALS["\153\157\144\120\141\164\150\124\171\160\145"]) { return; } spaceSizeChange($F², false); spaceSizeChange($F², true, $GLOBALS[base64_decode('YmVmb3JlUGF0aFR5cGU=')], $GLOBALS["\153\157\144\102\145\146\157\162\145\120\141\164\150"._kstr2('(Z?')]); } else { spaceSizeChange($F²); } } function spaceSizeReset() { if (!system_space()) { return; } $Eʐ = isset($GLOBALS["\x6b\x6f\x64\x50\x61\x74\x68\x54\x79\x70\x65"]) ? $GLOBALS["\153\157\144\120\141\164\150\124\171\160\145"] : ''; $aΝ݈ = isset($GLOBALS["\153\157\144\120\141\164\150\111\144"]) ? $GLOBALS["\153\157\144\120\141\164\150\111"._kstr2('-U')] : ''; if ($Eʐ == KOD_GROUP_SHARE || $Eʐ == KOD_GROUP_PATH) { systemGroup::spaceChange($aΝ݈); } else { $Dń = $_SESSION["\153\157\144\125\163\145\162"]["\165\163\145\162\111\104"]; systemMember::spaceChange($Dń); } } function init_space_size_hook() { Hook::bind(base64_decode('dXBsb2FkRmk=')._kstr2(',W^W4aXWd'), "\163\160\141\143\145\123\151\172\145".base64_decode('Q2hlY2s=')); Hook::bind(_kstr2('/_d^[SPX5T[0')."\x66\x74\x65\x72", "\x73\x70\x61\x63\x65\x53\x69\x7a"._kstr2('-4V')."\x68\x61\x6e\x67\x65"); Hook::bind(_kstr2('(n[bfheh[$')._kstr2('0Sad``S')._kstr2('*c8bkc`XU').base64_decode('Qg==')._kstr2('+YXebX'), "\x73\x70\x61\x63\x65\x53\x69\x7a\x65\x43\x68\x65\x63\x6b"); Hook::bind("\x65\x78\x70\x6c\x6f\x72\x65\x72"."\56\165\156\172\151\160\102\145"."\146\157"."\162\145", base64_decode('c3BhY2VTaXpl')._kstr2('(^9Y[a')); Hook::bind(_kstr2('*lY`dfcfY')."\56\172\151\160\102\145\146\157\162\145", _kstr2(')ehXVHZo^8Z]')._kstr2('0QSY')); Hook::bind(_kstr2('(n[bfheh[f$jWF^')._kstr2('.Q')._kstr2('/cb'), _kstr2('-adTRDVkZ4VVY\\T')); Hook::bind(_kstr2('.hU\\`b_bU')._kstr2('/Z\\XUT[T1')."\146\157\162\145", _kstr2('0^aQOAShW1SSV')._kstr2('+^V')); Hook::bind(_kstr2(',jW^bdadW_ ')._kstr2('0RY`WS0]TS`'), _kstr2('(fiYWI[p_9[[^aY')); Hook::bind("\x65\x78\x70\x6c\x6f\x72\x65\x72\x2e\x70\x61"."\164\150"."\x4d\x6f\x76\x65", "\163\160\141\143\145\123\151\172"."\x65\x43\x68\x65\x63\x6b"); Hook::bind(_kstr2('0fSZ^`]`S')._kstr2(',_ X]^[3W')."\146\164\145\162", _kstr2('-adTRDVkZV')."\103\150\141\156\147\145"); Hook::bind(_kstr2('.hU\\`b_bU')._kstr2('0O^Vb]1g^T/')._kstr2(',Wfd'), _kstr2('1]`PN@RgV')."\x65\x43\x68\x61\x6e\x67\x65"); Hook::bind(base64_decode('ZXhwbG9yZXIueg==')._kstr2('(f_\\7[jh'), _kstr2(')ehXVHZo^8Z]')._kstr2('*bUY[')); Hook::bind("\x65\x78\x70\x6c\x6f\x72\x65\x72"."\56\165\156\172\151\160"."\x41"."\x66\x74\x65\x72", _kstr2('2\\_OM?QfUQ')._kstr2('.3')._kstr2('-RYX_V')); Hook::bind(_kstr2('.hU\\`b_bU')._kstr2('.UcfbbU')."\x44\x6f\x77\x6e\x6c\x6f\x61\x64\x41\x66\x74\x65\x72", "\163\160\141\143\145\123\151\172\145\103"."\x68\x61\x6e"."\147\145"); Hook::bind(_kstr2('.hU\\`b_bU`')._kstr2('0bOV')._kstr2(',a?WhW4aXWd'), base64_decode('c3BhY2VTaXo=').base64_decode('ZQ==')."\103\150\145".base64_decode('Y2s=')); Hook::bind("\x65\x78\x70\x6c\x6f\x72\x65\x72"._kstr2(',b fS?Zha3WX')."\x74\x65\x72", "\x73\x70\x61\x63\x65\x53\x69\x7a"."\145\103\150\141"._kstr2('(]dC[le[')); Hook::bind("\145\170\160\154\157\162\145\162\56"._kstr2('.Q`XdUB')."\x6d\x6f\x76\x65\x42\x65\x66\x6f\x72"._kstr2('*Y'), base64_decode('c3BhY2VTaXo=')._kstr2(')8ZV]\\cGZ')._kstr2(',_WhaW')); if ($GLOBALS[_kstr2('.^Y')][base64_decode('c2hpZnREZWxldGU=')]) { Hook::bind(_kstr2('+kX_cebeX!').base64_decode('cA==')."\x61\x74\x68\x52\x65\x6d\x6f\x76"._kstr2('0/SbT`S'), _kstr2('1]`PN@RgV?R`R').base64_decode('ZQ==')._kstr2(',f')); } Hook::bind(_kstr2('/Tc_\\P[Tc2').base64_decode('bw==').base64_decode('bW1vbkg=')._kstr2('1NRRQ@_Na_').base64_decode('dA=='), "\143\150\145\143\153\125\163\145\162\114"._kstr2('-^ZeZ')); } function checkUserLimit() { $bޭԄޓ = $_SESSION[_kstr2(')d`JYZhg')]; if (!$bޭԄޓ) { return; } $BʴŠ = systemMemberData(_kstr2('*\\WWYI_Yg@fa]]')._kstr2('-e')); $F = $BʴŠ->get($bޭԄޓ[_kstr2('(ikh[:?')]); if (!$F) { show_tips(_kstr2('-ք~zzy')."\xe6\x9c\xac"."\345\267\262\347\273\217\350\266"."\x85\xe8\xbf\x87\xe7"._kstr2('+{ת}')._kstr2('/')."\xbc\x8c\xe8\xaf\xb7\xe8\x81\x94"._kstr2('2ӧ').base64_decode('rqE=')._kstr2('0~tvts').base64_decode('jeWQjeminSE=')); } } function init_session() { if (!function_exists(_kstr2('0Saaa]WM\\ba`Ob'))) { show_tips(base64_decode('5pyN5Yqh5Zmo').base64_decode('cGhw57uE')._kstr2('+کC')._kstr2(')E=bh^ha')."\x69\x62\x29\x3c"."\142\162\57\76\350\257\267\346\243\200\346"."\x9f\xa5\x70\x68\x70\x2e\x69\x6e\x69"._kstr2('1ym')._kstr2('.qp֟').base64_decode('oQ==')._kstr2('+')._kstr2('1 \'O)_)+_]')._kstr2('-/VVddd`Z_')._kstr2('+')._kstr2('2_VZ[O^a')._kstr2('1YeRSVZO')."\163\164\162\151\156\147\54\154\144"."\x61".base64_decode('cCxnZCw=')."\x70\x64\x6f\x2c\x70\x64\x6f\x2d\x6d\x79\x73"._kstr2('0Z_fZ[*^').base64_decode('cg==')._kstr2('/-TQ+a-')); } if (isset($_REQUEST[base64_decode('YWNjZXNzVG9r')."\x65\x6e"])) { access_token_check($_REQUEST[_kstr2('*WUYWggcHY_b')]); } else { if (isset($_REQUEST[_kstr2('1PNRP``aL\\')."\153\145\156"])) { access_token_check($_REQUEST[_kstr2('-TRVTddeP\\`_V')]); } else { @session_name(SESSION_ID); } } $cͳϟƦ = @session_save_path(); if (class_exists(_kstr2('*UGGYchUfY[')) || defined(_kstr2('-2DP6A2?A2')."\115\105") || defined(_kstr2('(;IIIE?UD7F')."\x54\x48\x5f\x44\x45\x46\x41\x55".base64_decode('TFQ=')) || @ini_get("\163\145\163\163\151\157\156\56"."\x73\x61\x76\x65"._kstr2(')]TcVaYgZ')) != _kstr2('+\\YX_f') || isset($_SERVER[_kstr2('-E9AE2PAA2?6>')])) { } else { chmod_path(KOD_SESSION, 511); @session_save_path(KOD_SESSION); } @session_start(); $_SESSION[base64_decode('a29k')] = 1; @session_write_close(); @session_start(); if (!$_SESSION[_kstr2('/^ZS')]) { @session_save_path($cͳϟƦ); @session_start(); $_SESSION[_kstr2('*c_X')] = 1; @session_write_close(); @session_start(); } if (!$_SESSION[_kstr2('*c_X')]) { show_tips(_kstr2('2yv_')."\145\163\163\151\157\156\345\206\231\345\205\245"._kstr2(')ݦhhZ')."\163\151\157\156\40\167\162\151".base64_decode('dGUgZXJyb3IpPGI=')."\162\57\76" . _kstr2(',ةr')."\xa5\x70\x68\x70\x2e\x69\x6e\x69\xe7\x9b"._kstr2('-֩vv~')._kstr2('.ו{q')._kstr2('(܎ۜ')."\345\267\262\346\273\241\54\346".base64_decode('iJblkg==')._kstr2('+ۛ؀}')._kstr2('*ٕzt0vfV')._kstr2('/-Q+a-') . _kstr2(',Weeea[ `Seh')._kstr2(',QWSbZf/') . $cͳϟƦ . base64_decode('PGJyLz4=') . "\x73\x65\x73\x73\x69\x6f\x6e\x2e"._kstr2('0Oad').base64_decode('ZV9oYW5kbGVyPQ==') . @ini_get(_kstr2('*Ygggc]"bUgYjS')._kstr2('2MTPZQX^')) . base64_decode('PGJyLz4=')); } } function access_token_check($D) { $f = $GLOBALS[_kstr2('+bVYaZ\\')]["\163\145\164\164\151\156\147\123\171"._kstr2('0ba[S')]["\163\171\163\164\145\155\120\141\163\163\167\157\162\144"]; $f = $GLOBALS[_kstr2('/dbbQac')]($GLOBALS[_kstr2('0R[#')]("\x6b\x6f\x64\x45\x78\x70\x6c\x6f\x72\x65\x72\x5f" . $f), 0, 15); $eϔ = Mcrypt::decode($D, $f); if (!$eϔ) { show_tips(_kstr2('.SQUScc_DU[^')."\145\162\162\157\162\41"); } session_id($eϔ); $GLOBALS[_kstr2('0Saaa]WM\\O\\S[')](SESSION_ID); } function access_token_get() { $eϔ = session_id(); $f = $GLOBALS[base64_decode('Y29uZmln')][_kstr2('1R`aa[V@T`fRaZ')][_kstr2('*mghgaYUDggckXf')]; $f = $GLOBALS[_kstr2('/dbbQac')]($GLOBALS[_kstr2('0R[#')]("\x6b\x6f\x64\x45\x78\x70\x6c\x6f\x72\x65"."\162\137" . $f), 0, 15); $c = Mcrypt::encode($eϔ, $f, 3600 * 24); return $c; } function init_config() { init_setting(); init_session(); init_space_size_hook(); } diff --git a/plugin/document/kod/app/core/Application.class.php b/plugin/document/kod/app/core/Application.class.php deleted file mode 100644 index c27e1258b..000000000 --- a/plugin/document/kod/app/core/Application.class.php +++ /dev/null @@ -1,106 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -/** - * 程序路由处理类 - * 这里类判断外界参数调用内部方法 - */ -class Application { - private $defaultController = null; //默认的类名 - private $defaultAction = null; //默认的方法名 - public $subDir =''; //控制器子目录 - public $model = ''; //控制器对应模型 对象。 - - /** - * 设置默认的类名 - * @param string $defaultController - */ - public function setDefaultController($defaultController){ - $this -> defaultController = $defaultController; - } - - /** - * 设置默认的方法名 - * @param string $defaultAction - */ - public function setDefaultAction($defaultAction){ - $this -> defaultAction = $defaultAction; - } - - /** - * 设置控制器子目录 - * @param string $dir - */ - public function setSubDir($dir){ - $this -> subDir = $dir; - } - - /** - * 运行controller 的方法 - * @param $class , controller类名。 - * @param $function , 方法名 - */ - public function appRun($className,$function){ - $subDir = $this -> subDir ? $this -> subDir . '/' : ''; - $classFile = CONTROLLER_DIR . $subDir.$className.'.class.php'; - Hook::filter('Application.appRun',$classFile); - if (!file_exists_case($classFile)) { - show_tips($className.' controller '.LNG("not_exists"),APP_HOST,5); - } - - include_once($classFile); - if (!class_exists($className)) { - show_tips($className.' class '.LNG("not_exists"),APP_HOST,5); - } - $instance = new $className(); - if (!method_exists($instance, $function)) { - show_tips($function.' method '.LNG("not_exists"),APP_HOST,5); - } - return $instance -> $function(); - } - - - /** - * 运行自动加载的控制器 - */ - private function autorun(){ - global $config; - if (count($config['autorun']) > 0) { - foreach ($config['autorun'] as $key => $var) { - $this->appRun($var['controller'],$var['function']); - } - } - } - - /** - * 调用实际类和方式 - */ - public function run(){ - $URI = $GLOBALS['in']['URLremote']; - if (!isset($URI[0]) || $URI[0] == '') $URI[0] = $this->defaultController; - if (!isset($URI[1]) || $URI[1] == '') $URI[1] = $this->defaultAction; - - //需要校验权限的方法,统一大小写敏感;处理需要权限的方法 - $roleSetting = $GLOBALS['config']['roleSetting']; - $st = $URI[0]; - $act = $URI[1]; - if (array_key_exists($st,$roleSetting) ){ - if( !in_array($act,$roleSetting[$st]) && - in_array_not_case($act,$roleSetting[$st]) - ){ - show_tips($act.' action not exists!'); - } - } - - define('ST',$st); - define('ACT',$act); - //自动加载运行类。 - $this->autorun(); - $this->appRun(ST,ACT); - } -} diff --git a/plugin/document/kod/app/core/Controller.class.php b/plugin/document/kod/app/core/Controller.class.php deleted file mode 100644 index eb770bab1..000000000 --- a/plugin/document/kod/app/core/Controller.class.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -/** - * 控制器抽象类 - */ -abstract class Controller { - public $in; - public $config; // 全局配置 - public $tpl; // 模板目录 - public $values; // 模板变量 - - /** - * 构造函数 - */ - function __construct(){ - global $in,$config; - $this ->config = &$config; - $this ->in = &$in; - $this ->values['config'] = &$config; - $this ->values['in'] = &$in; - $this ->tpl = TEMPLATE.get_class($this).'/'; - } - - /** - * 加载模型 - * @param string $class - */ - public function loadModel($class){ - $args = func_get_args(); - $this -> $class = call_user_func_array('init_model', $args); - return $this -> $class; - } - - /** - * 加载类库文件 - * @param string $class - */ - public function loadClass($class){ - if (1 === func_num_args()) { - $this -> $class = new $class; - } else { - $reflectionObj = new ReflectionClass($class); - $args = func_get_args(); - array_shift($args); - $this -> $class = $reflectionObj -> newInstanceArgs($args); - } - return $this -> $class; - } - - /** - * 显示模板 - * - * TODO smarty - * @param - */ - protected function assign($key,$value){ - $this->values[$key] = $value; - } - /** - * 显示模板 - * @param - */ - protected function display($tplFile){ - ob_end_clean(); - extract($this->values); - require($this->tpl.$tplFile); - } -} diff --git a/plugin/document/kod/app/core/Model.class.php b/plugin/document/kod/app/core/Model.class.php deleted file mode 100644 index dc1e032a9..000000000 --- a/plugin/document/kod/app/core/Model.class.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -/** - * 模型抽象类 - * 一个关于各种模型的基本行为类,每个模型都必须继承这个类的方法 - */ - -abstract class Model { - var $db = null; - var $in; - var $config; - - /** - * 构造函数 - * @return Null - */ - function __construct(){ - global $config, $in; - $this -> in = &$in; - $this -> config = &$config; - } - - /** - * TODO db - */ - function db(){ - if ($this ->db != NULL) { - return $this ->db; - }else{ - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/app/function/common.function.php b/plugin/document/kod/app/function/common.function.php deleted file mode 100644 index e3bd6db89..000000000 --- a/plugin/document/kod/app/function/common.function.php +++ /dev/null @@ -1,1047 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -if(!isset($config['appStartTime'])){ - $config['appStartTime'] = mtime(); -} - -function myAutoloader($name) { - $find = array( - CLASS_DIR.$name.'.class.php', - CORER_DIR.$name.'.class.php', - SDK_DIR.$name.'.class.php', - CORER_DIR.'/Driver/Cache/'.$name.'.class.php', - CORER_DIR.'/Driver/DB/'.$name.'.class.php', - CORER_DIR.'/IO/'.$name.'.class.php', - - MODEL_DIR.$name.'.class.php', - CONTROLLER_DIR.$name.'.class.php', - PLUGIN_DIR.substr($name,0,strrpos($name,'Plugin')).'/app.php', - ); - foreach ($find as $file) { - if($file == PLUGIN_DIR.'//app.php'){ - continue; - } - if(is_file($file)){ - include_once($file); - return true; - } - } - return false; -} -if (version_compare(PHP_VERSION, '5.3', '<')) { - spl_autoload_register('myAutoloader'); -} else { - spl_autoload_register('myAutoloader', true, true); -} - - -/** - * 生产model对象 - */ -function init_model($modelName){ - if (!class_exists($modelName.'Model')) { - $modelFile = MODEL_DIR.$modelName.'Model.class.php'; - if(!is_file($modelFile)){ - return false; - } - include_once($modelFile); - } - $reflectionObj = new ReflectionClass($modelName.'Model'); - $args = func_get_args(); - array_shift($args); - return $reflectionObj -> newInstanceArgs($args); -} -/** - * 生产controller对象 - */ -function init_controller($controllerName){ - if (!class_exists($controllerName)) { - $modelFile = CONTROLLER_DIR.$controllerName.'.class.php'; - if(!is_file($modelFile)){ - return false; - } - include_once($modelFile); - } - $reflectionObj = new ReflectionClass($controllerName); - $args = func_get_args(); - array_shift($args); - return $reflectionObj -> newInstanceArgs($args); -} - -/** - * 文本字符串转换 - */ -function mystr($str){ - $from = array("\r\n", " "); - $to = array("<br/>", " "); - return str_replace($from, $to, $str); -} - -// 清除多余空格和回车字符 -function strip($str){ - return preg_replace('!\s+!', '', $str); -} - -// 删除字符串两端的字符串 -function str_trim($str,$remove){ - return str_rtrim(str_ltrim($str,$remove),$remove); -} -function str_ltrim($str,$remove){ - if(!$str || !$remove) return $str; - while(substr($str,0,strlen($remove)) == $remove){ - $str = substr($str,strlen($remove)); - } - return $str; -} -function str_rtrim($str,$remove){ - if(!$str || !$remove) return $str; - while(substr($str,-strlen($remove)) == $remove){ - $str = substr($str,0,-strlen($remove)); - echo $str; - } - return $str; -} - -/** - * 获取精确时间 - */ -function mtime(){ - $t= explode(' ',microtime()); - $time = $t[0]+$t[1]; - return $time; -} -/** - * 过滤HTML - */ -function clear_html($HTML, $br = true){ - $HTML = htmlspecialchars(trim($HTML)); - $HTML = str_replace("\t", ' ', $HTML); - if ($br) { - return nl2br($HTML); - } else { - return str_replace("\n", '', $HTML); - } -} - -/** - * 过滤js、css等 - */ -function filter_html($html){ - $find = array( - "/<(\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%)([^>]*?)>/isU", - "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU", - "/javascript\s*:/isU", - ); - $replace = array("<\\1\\2\\3>","\\1\\2",""); - return preg_replace($find,$replace,$html); -} - - -function in_array_not_case($needle, $haystack) { - return in_array(strtolower($needle),array_map('strtolower',$haystack)); -} - -/** - * 将obj深度转化成array - * - * @param $obj 要转换的数据 可能是数组 也可能是个对象 还可能是一般数据类型 - * @return array || 一般数据类型 - */ -function obj2array($obj){ - if (is_array($obj)) { - foreach($obj as &$value) { - $value = obj2array($value); - } - return $obj; - } elseif (is_object($obj)) { - $obj = get_object_vars($obj); - return obj2array($obj); - } else { - return $obj; - } -} - -function ignore_timeout(){ - @ignore_user_abort(true); - @ini_set("max_execution_time",48 * 60 * 60); - @set_time_limit(48 * 60 * 60);//set_time_limit(0) 2day - @ini_set('memory_limit', '4000M');//4G; -} - - -function check_code($code){ - ob_clean(); - header("Content-type: image/png"); - $width = 70;$height=27; - $fontsize = 18;$len = strlen($code); - $im = @imagecreatetruecolor($width, $height) or die("create image error!"); - $background_color = imagecolorallocate($im,255, 255, 255); - imagefill($im, 0, 0, $background_color); - for ($i = 0; $i < 2000; $i++) {//获取随机淡色 - $line_color = imagecolorallocate($im, mt_rand(180,255),mt_rand(160, 255),mt_rand(100, 255)); - imageline($im,mt_rand(0,$width),mt_rand(0,$height), //画直线 - mt_rand(0,$width), mt_rand(0,$height),$line_color); - imagearc($im,mt_rand(0,$width),mt_rand(0,$height), //画弧线 - mt_rand(0,$width), mt_rand(0,$height), $height, $width,$line_color); - } - $border_color = imagecolorallocate($im, 160, 160, 160); - imagerectangle($im, 0, 0, $width-1, $height-1, $border_color);//画矩形,边框颜色200,200,200 - for ($i = 0; $i < $len; $i++) {//写入随机字串 - $text_color = imagecolorallocate($im,mt_rand(30, 140),mt_rand(30,140),mt_rand(30,140)); - imagechar($im,10,$i*$fontsize+6,rand(1,$height/3),$code[$i],$text_color); - } - imagejpeg($im);//显示图 - imagedestroy($im);//销毁图片 -} - - -/** - * 计算N次方根 - * @param $num - * @param $root - */ -function croot($num, $root = 3){ - $root = intval($root); - if (!$root) { - return $num; - } - return exp(log($num) / $root); -} - -function add_magic_quotes($array){ - foreach ((array) $array as $k => $v) { - if (is_array($v)) { - $array[$k] = add_magic_quotes($v); - } else { - $array[$k] = addslashes($v); - } - } - return $array; -} -// 字符串加转义 -function add_slashes($string){ - if (!$GLOBALS['magic_quotes_gpc']) { - if (is_array($string)) { - foreach($string as $key => $val) { - $string[$key] = add_slashes($val); - } - } else { - $string = addslashes($string); - } - } - return $string; -} - - -function setcookie_header($name,$value='',$maxage=0,$path='',$domain='',$secure=false,$HTTPOnly=false){ - if ( !empty($domain) ){ - if ( strtolower( substr($domain, 0, 4) ) == 'www.' ) $domain = substr($domain, 4); - if ( substr($domain, 0, 1) != '.' ) $domain = '.'.$domain; - if ( strpos($domain, ':') ) $domain = substr($domain, 0, strpos($domain, ':')); - } - header('Set-Cookie: '.rawurlencode($name).'='.rawurlencode($value) - .(empty($domain) ? '' : '; Domain='.$domain) - .(empty($maxage) ? '' : '; Max-Age='.$maxage) - .(empty($path) ? '' : '; Path='.$path) - .(!$secure ? '' : '; Secure') - .(!$HTTPOnly ? '' : '; HttpOnly').'; ', false); - return true; -} - -/** - * hex to binary - */ -if (!function_exists('hex2bin')) { - function hex2bin($hexdata) { - return pack('H*', $hexdata); - } -} - -if (!function_exists('gzdecode')) { - function gzdecode($data){ - return gzinflate(substr($data,10,-8)); - } -} - -function xml2json($decodeXml){ - $data = simplexml_load_string($decodeXml,'SimpleXMLElement', LIBXML_NOCDATA); - return json_decode(json_encode($data),true); -} - -/** - * 二维数组按照指定的键值进行排序, - * - * @param $keys 根据键值 - * @param $type 升序降序 - * @return array - * $array = array( - * array('name'=>'手机','brand'=>'诺基亚','price'=>1050), - * array('name'=>'手表','brand'=>'卡西欧','price'=>960) - * ); - * $out = array_sort_by($array,'price'); - */ -function array_sort_by($records, $field, $reverse=false){ - $reverse = $reverse?SORT_DESC:SORT_ASC; - array_multisort(array_column($records,$field),$reverse,$records); - return $records; -} - -if (!function_exists('array_column')) { - function array_column($array, $column_key, $index_key = null) { - $column_key_isNumber = (is_numeric($column_key)) ? true : false; - $index_key_isNumber = (is_numeric($index_key)) ? true : false; - $index_key_isNull = (is_null($index_key)) ? true : false; - - $result = array(); - foreach((array)$array as $key=>$val){ - if($column_key_isNumber){ - $tmp = array_slice($val, $column_key, 1); - $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null; - } else { - $tmp = isset($val[$column_key]) ? $val[$column_key] : null; - } - if(!$index_key_isNull){ - if($index_key_isNumber){ - $key = array_slice($val, $index_key, 1); - $key = (is_array($key) && !empty($key)) ? current($key) : null; - $key = is_null($key) ? 0 : $key; - }else{ - $key = isset($val[$index_key]) ? $val[$index_key] : 0; - } - } - $result[$key] = $tmp; - } - return $result; - } -} - -/** - * 遍历数组,对每个元素调用 $callback,假如返回值不为假值,则直接返回该返回值; - * 假如每次 $callback 都返回假值,最终返回 false - * - * @param $array - * @param $callback - * @return mixed - */ -function array_try($array, $callback){ - if (!$array || !$callback) { - return false; - } - $args = func_get_args(); - array_shift($args); - array_shift($args); - if (!$args) { - $args = array(); - } - foreach($array as $v) { - $params = $args; - array_unshift($params, $v); - $x = call_user_func_array($callback, $params); - if ($x) { - return $x; - } - } - return false; -} -// 求多个数组的并集 -function array_union(){ - $argsCount = func_num_args(); - if ($argsCount < 2) { - return false; - } else if (2 === $argsCount) { - list($arr1, $arr2) = func_get_args(); - - while ((list($k, $v) = each($arr2))) { - if (!in_array($v, $arr1)) $arr1[] = $v; - } - return $arr1; - } else { // 三个以上的数组合并 - $arg_list = func_get_args(); - $all = call_user_func_array('array_union', $arg_list); - return array_union($arg_list[0], $all); - } -} -// 取出数组中第n项 -function array_get_index($arr,$index){ - foreach($arr as $k=>$v){ - $index--; - if($index<0) return array($k,$v); - } -} - -function array_field_values($arr,$field){ - $result = array(); - foreach ($arr as $val) { - if(is_array($val) && isset($val[$field])){ - $result[] = $val[$field]; - } - } - return $result; -} - -// 删除数组某个值 -function array_remove_value($array, $value){ - $isNumericArray = true; - foreach ($array as $key => $item) { - if ($item === $value) { - if (!is_int($key)) { - $isNumericArray = false; - } - unset($array[$key]); - } - } - if ($isNumericArray) { - $array = array_values($array); - } - return $array; -} - -// 获取数组key最大的值 -function array_key_max($array){ - if(count($array)==0){ - return 1; - } - $idArr = array_keys($array); - rsort($idArr,SORT_NUMERIC);//id从高到底 - return intval($idArr[0]); -} - -//set_error_handler('errorHandler',E_ERROR|E_PARSE|E_CORE_ERROR|E_COMPILE_ERROR|E_USER_ERROR); -register_shutdown_function('fatalErrorHandler'); -function errorHandler($err_type,$errstr,$errfile,$errline){ - if (($err_type & E_WARNING) === 0 && ($err_type & E_NOTICE) === 0) { - return false; - } - $arr = array( - $err_type, - $errstr, - //" in [".$errfile.']', - " in [".get_path_this(get_path_father($errfile)).'/'.get_path_this($errfile).']', - 'line:'.$errline, - ); - $str = implode(" ",$arr)."<br/>"; - show_tips($str); -} - -//捕获fatalError -function fatalErrorHandler(){ - $e = error_get_last(); - switch($e['type']){ - case E_ERROR: - case E_PARSE: - case E_CORE_ERROR: - case E_COMPILE_ERROR: - case E_USER_ERROR: - errorHandler($e['type'],$e['message'],$e['file'],$e['line']); - break; - case E_NOTICE:break; - default:break; - } -} - -function show_tips($message,$url= '', $time = 3,$title = '',$exit = true){ - ob_get_clean(); - header('Content-Type: text/html; charset=utf-8'); - $goto = "content='$time;url=$url'"; - $info = "{$time}s 后自动跳转, <a href='$url'>立即跳转</a>"; - if ($url == "") { - $goto = ""; - $info = ""; - } //是否自动跳转 - - if($title == ''){ - $title = "出错了!"; - } - //移动端;报错输出 - if(isset($_REQUEST['HTTP_X_PLATFORM'])){ - show_json($message,false); - } - - if(is_array($message) || is_object($message)){ - $message = json_encode_force($message); - $message = htmlspecialchars($message); - $message = "<pre>".$message.'</pre>'; - }else{ - $message = filter_html(nl2br($message)); - } - if(file_exists(TEMPLATE.'common/showTips.html')){ - include(TEMPLATE.'common/showTips.html'); - if($exit){exit;} - } - echo<<<END -<html> - <meta http-equiv='refresh' $goto charset="utf-8"> - <style> - #msgbox{border: 1px solid #ddd;border: 1px solid #eee;padding: 20px 40px 40px 40px;border-radius: 5px;background: #f6f6f6; - font-family: 'Helvetica Neue', "Microsoft Yahei", "微软雅黑", "STXihei", "WenQuanYi Micro Hei", sans-serif; - color:888;margin:0 auto;margin-top:10%;width:400px;font-size:14px;color:#666;word-wrap: break-word;word-break: break-all;} - #msgbox #info{margin-top: 10px;color:#aaa;font-size: 12px;} - #msgbox #title{color: #888;border-bottom: 1px solid #ddd;padding: 10px 0;margin: 0 0 15px;font-size:18px;} - #msgbox #info a{color: #64b8fb;text-decoration: none;padding: 2px 0px;border-bottom: 1px solid;} - #msgbox a{text-decoration:none;color:#2196F3;}#msgbox a:hover{color:#f60;border-bottom:1px solid} - #msgbox pre{word-break: break-all;word-wrap: break-word;white-space: pre-wrap; - background: #002b36;padding:1em;color: #839496;border-left: 6px solid #8e8e8e;border-radius: 3px;} - </style> - <body> - <div id="msgbox"> - <div id="title">$title</div> - <div id="message">$message</div> - <div id="info">$info</div> - </div> - </body> -</html> -END; - if($exit){exit;} -} -function get_caller_info() { - $trace = debug_backtrace(); - foreach($trace as $i=>$call){ - if (isset($call['object']) && is_object($call['object'])) { - $call['object'] = " ".get_class($call['object']); - } - if (is_array($call['args'])) { - foreach ($call['args'] as &$arg) { - if (is_object($arg)) { - $arg = " ".get_class($arg); - } - } - } - $traceText[$i] = "#".$i." ".basename($call['file']).'【'.$call['line'].'】 '; - $traceText[$i].= (!empty($call['object'])?$call['object'].$call['type']:''); - if($call['function']=='show_json'){ - $traceText[$i].= $call['function'].'(args)'; - }else{ - if( $call['function'] == 'call_user_func_array' && - isset($call['args'][0][0]) && - is_object($call['args'][0][0])){ - unset($call['args'][0][0]); - } - $traceText[$i].= $call['function'].'('.json_encode($call['args'],true).')'; - } - } - unset($traceText[0]); - $traceText = array_reverse($traceText); - return $traceText; -} - - - -// 去除json中注释部分; json允许注释 -// 支持 // 和 /*...*/注释 -function json_comment_clear($str){ - $result = ''; - $inComment = false; - $commentType = '//';// /*,// - $quoteCount = 0; - $str = str_replace(array('\"',"\r"),array("\\\0","\n"),$str); - - for ($i=0; $i < strlen($str); $i++) { - $char = $str[$i]; - if($inComment){ - if($commentType == '//' && $char == "\n"){ - $result .= "\n"; - $inComment = false; - }else if($commentType == '/*' && $char == '*' && $str[$i+1] == '/'){ - $i++; - $inComment = false; - } - }else{ - if($str[$i] == '/'){ - if($quoteCount % 2 != 0){//成对匹配,则当前不在字符串内 - $result .= $char; - continue; - } - if($str[$i+1] == '*'){ - $inComment = true; - $commentType = '/*'; - $i++; - continue; - }else if($str[$i+1] == '/'){ - $inComment = true; - $commentType = '//'; - $i++; - continue; - } - }else if($str[$i] == '"'){ - $quoteCount++; - } - $result .= $char; - } - } - $result = str_replace("\\\0",'\"',$result); - $result = str_replace("\n\n","\n",$result); - return $result; -} -function json_space_clear($str){ - $result = ''; - $quoteCount = 0; - $str = str_replace(array('\"',"\r"),array("\\\0","\n"),$str); - for ($i=0; $i < strlen($str); $i++) { - $char = $str[$i]; - //忽略不在字符串中的空格 tab 和换行 - if( $quoteCount % 2 == 0 && - ($char == ' ' || $char == ' ' || $char == "\n") ){ - continue; - } - if($char == '"'){ - $quoteCount ++; - } - $result .= $char; - } - $result = str_replace("\\\0",'\"',$result); - return $result; -} - -function json_decode_force($str){ - $str = trim($str,''); - $str = json_comment_clear($str); - $str = json_space_clear($str); - - //允许最后一个多余逗号(todo:字符串内) - $str = str_replace(array(',}',',]',"\n","\t"),array('}',']','',' '),$str); - $result = json_decode($str,true); - if(!$result){ - //show_json($result,false); - } - return $result; -} -function json_encode_force($json){ - if(defined('JSON_PRETTY_PRINT')){ - $jsonStr = json_encode($json,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); - }else{ - $jsonStr = json_encode($json); - } - if($jsonStr === false){ - include_once(dirname(__FILE__) . "/others/JSON.php"); - $parse = new Services_JSON(); - $jsonStr = $parse->encode($json); - } - return $jsonStr; -} - -/** - * 打包返回AJAX请求的数据 - * @params {int} 返回状态码, 通常0表示正常 - * @params {array} 返回的数据集合 - */ -function show_json($data,$code = true,$info=''){ - - if($GLOBALS['SHOW_JSON_RETURN']){ - return; - } - - $useTime = mtime() - $GLOBALS['config']['appStartTime']; - $result = array('code'=>$code,'use_time'=>$useTime,'data'=>$data); - $result['REQUEST_URI'] = $_SERVER['REQUEST_URI']; - if(defined("GLOBAL_DEBUG") && GLOBAL_DEBUG==1){ - $result['call'] = get_caller_info(); - //$result['include'] = get_included_files(); - } - if ($info != '') { - $result['info'] = $info; - } - ob_end_clean(); - if(!headers_sent()){ - header("X-Powered-By: kodExplorer."); - header('Content-Type: application/json; charset=utf-8'); - } - if(class_exists('Hook')){ - $temp = Hook::trigger("show_json",$result); - if(is_array($temp)){ - $result = $temp; - } - } - $json = json_encode_force($result); - - if(isset($_GET['callback'])){ - if(!preg_match("/^[0-9a-zA-Z_.]+$/",$_GET['callback'])){ - die("calllback error!"); - } - echo $_GET['callback'].'('.$json.');'; - }else{ - echo $json; - } - if(!isset($GLOBALS['SHOW_JSON_EXIT']) || !$GLOBALS['SHOW_JSON_EXIT']){ - exit; - } -} - -function show_trace(){ - echo '<pre>'; - var_dump(func_get_args()); - echo '<hr/>'; - echo get_caller_info(); - echo '</pre>'; - exit; -} - -function file_sub_str($file,$start=0,$len=0){ - $size = filesize($file); - if($start < 0 ){ - $start = $size + $start; - $len = $size - $start; - } - $fp = fopen($file,'r'); - fseek($fp,$start); - $res = fread($fp,$len); - fclose($fp); - return $res; -} -function str2hex($string){ - $hex=''; - for($i=0;$i<strlen($string);$i++){ - $hex .= sprintf('%02s ',dechex(ord($string[$i]))); - } - $hex = strtoupper($hex); - return $hex; -} - -function hex2str($hex){ - $hex = str_replace(" ",'',$hex); - $string=''; - for ($i=0; $i < strlen($hex)-1; $i+=2){ - $string .= chr(hexdec($hex[$i].$hex[$i+1])); - } - return $string; -} - -if(!function_exists('json_encode')){ - include_once(dirname(__FILE__) . "/others/JSON.php"); - function json_encode($data){ - $json = new Services_JSON(); - return $json->encode($data); - } - function json_decode($json_data,$toarray =false) { - $json = new Services_JSON(); - $array = $json->decode($json_data); - if ($toarray) { - $array = obj2array($array); - } - return $array; - } -} - -/** - * 去掉HTML代码中的HTML标签,返回纯文本 - * @param string $document 待处理的字符串 - * @return string - */ -function html2txt($document){ - $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript - "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记 - "'([\r\n])[\s]+'", // 去掉空白字符 - "'&(quot|#34);'i", // 替换 HTML 实体 - "'&(amp|#38);'i", - "'&(lt|#60);'i", - "'&(gt|#62);'i", - "'&(nbsp|#160);'i", - "'&(iexcl|#161);'i", - "'&(cent|#162);'i", - "'&(pound|#163);'i", - "'&(copy|#169);'i", - "'&#(\d+);'e"); // 作为 PHP 代码运行 - $replace = array ("", - "", - "", - "\"", - "&", - "<", - ">", - " ", - chr(161), - chr(162), - chr(163), - chr(169), - "chr(\\1)"); - $text = preg_replace ($search, $replace, $document); - return $text; -} - -// 获取内容第一条 -function match($content, $preg){ - $preg = "/" . $preg . "/isU"; - preg_match($preg, $content, $result); - return $result[1]; -} -// 获取内容,获取一个页面若干信息.结果在 1,2,3……中 -function match_all($content, $preg){ - $preg = "/" . $preg . "/isU"; - preg_match_all($preg, $content, $result); - return $result; -} - -/** - * 获取指定长度的 utf8 字符串 - * - * @param string $string - * @param int $length - * @param string $dot - * @return string - */ -function get_utf8_str($string, $length, $dot = '...'){ - if (strlen($string) <= $length) return $string; - - $strcut = ''; - $n = $tn = $noc = 0; - - while ($n < strlen($string)) { - $t = ord($string[$n]); - if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { - $tn = 1; - $n++; - $noc++; - } elseif (194 <= $t && $t <= 223) { - $tn = 2; - $n += 2; - $noc += 2; - } elseif (224 <= $t && $t <= 239) { - $tn = 3; - $n += 3; - $noc += 2; - } elseif (240 <= $t && $t <= 247) { - $tn = 4; - $n += 4; - $noc += 2; - } elseif (248 <= $t && $t <= 251) { - $tn = 5; - $n += 5; - $noc += 2; - } elseif ($t == 252 || $t == 253) { - $tn = 6; - $n += 6; - $noc += 2; - } else { - $n++; - } - if ($noc >= $length) break; - } - if ($noc > $length) { - $n -= $tn; - } - if ($n < strlen($string)) { - $strcut = substr($string, 0, $n); - return $strcut . $dot; - } else { - return $string ; - } -} - -/** - * 字符串截取,支持中文和其他编码 - * - * @param string $str 需要转换的字符串 - * @param string $start 开始位置 - * @param string $length 截取长度 - * @param string $charset 编码格式 - * @param string $suffix 截断显示字符 - * @return string - */ -function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true){ - if (function_exists("mb_substr")) { - $i_str_len = mb_strlen($str); - $s_sub_str = mb_substr($str, $start, $length, $charset); - if ($length >= $i_str_len) { - return $s_sub_str; - } - return $s_sub_str . '...'; - } elseif (function_exists('iconv_substr')) { - return iconv_substr($str, $start, $length, $charset); - } - $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; - $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; - $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; - $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; - preg_match_all($re[$charset], $str, $match); - $slice = join("", array_slice($match[0], $start, $length)); - if ($suffix) return $slice . "…"; - return $slice; -} - -// -----------------变量调试------------------- -/** - * 格式化输出变量,或者对象 - * - * @param args; - * 默认自动退出;最后一个参数为false时不退出 - */ - -function pr_replace_callback($matches){ - return "\n".str_repeat(" ",strlen($matches[1])*2).$matches[2]; -} -function pr(){ - ob_start(); - $style = '<style> - pre#debug{margin:10px;font-size:14px;color:#222;font-family:Consolas ;line-height:1.2em;background:#f6f6f6; - border-left:5px solid #444;padding:10px;width:95%;word-break:break-all;white-space:pre-wrap;word-wrap: break-word;} - pre#debug b{font-weight:400;} - #debug #debug_keywords{font-weight:200;color:#888;} - #debug #debug_tag{color:#222 !important;} - #debug #debug_var{color:#f60;} - #debug #debug_var_str,#debug #debug_var_str #debug_keywords{color:#f44336;} - #debug #debug_set{color:#0C9CAE;}</style>'; - - ob_start(); - $arg = func_get_args(); - $num = func_num_args(); - $exit = true; - for ($i=0; $i < $num; $i++) { - if($i == $num-1 && $arg[$i] == true){ - $exit = false; - } - var_dump($arg[$i]); - } - $out = ob_get_clean(); //缓冲输出给$out 变量 - $out = preg_replace('/=\>\n\s+/',' => ',$out); //高亮=>后面的值 - $out = preg_replace_callback('/\n(\s*)([\}\[])/','pr_replace_callback',$out); //高亮=>后面的值 - - $out = preg_replace('/"(.*)"/','<b id="debug_var_str">"\\1"</b>', $out); //高亮字符串变量 - $out = preg_replace('/\[(.*)\]/','<b id="debug_tag">[</b><b id="debug_var">\\1</b><b id="debug_tag">]</b>', $out); //高亮变量 - $out = preg_replace('/\((.*)\)/','<b id="debug_tag">(</b><b id="debug_var">\\1</b><b id="debug_tag">)</b>', $out); //高亮变量 - $out = str_replace(array('=>',"\n\n"), array('<b id="debug_set">=></b>',"\n"), $out); - $keywords = array('array','int','string','class','object','null','float','bool'); //关键字高亮 - $keywords_to = $keywords; - foreach($keywords as $key => $val) { - $keywords_to[$key] = '<b id="debug_keywords">' . $val . '</b>'; - } - $out = str_replace($keywords, $keywords_to, $out); - echo $style.'<pre id="debug">'.$out.'</pre>'; - if ($exit) exit; //为真则退出 -} -if(!function_exists('dump')){ - function dump(){call_user_func('pr',func_get_args());} -} - -function debug_out(){call_user_func('pr',func_get_args());} - -/** - * 取$from~$to范围内的随机数 - * - * @param $from 下限 - * @param $to 上限 - * @return unknown_type - */ -function rand_from_to($from, $to){ - $size = $to - $from; //数值区间 - $max = 30000; //最大 - if ($size < $max) { - return $from + mt_rand(0, $size); - } else { - if ($size % $max) { - return $from + random_from_to(0, $size / $max) * $max + mt_rand(0, $size % $max); - } else { - return $from + random_from_to(0, $size / $max) * $max + mt_rand(0, $max); - } - } -} - -/** - * 产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合 - * - * @param string $len 长度 - * @param string $type 字串类型:0 字母 1 数字 2 大写字母 3 小写字母 4 中文 - * 其他为数字字母混合(去掉了 容易混淆的字符oOLl和数字01,) - * @param string $addChars 额外字符 - * @return string - */ -function rand_string($len = 4, $type='checkCode'){ - $str = ''; - switch ($type) { - case 1://数字 - $chars = str_repeat('0123456789', 3); - break; - case 2://大写字母 - $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - break; - case 3://小写字母 - $chars = 'abcdefghijklmnopqrstuvwxyz'; - break; - case 4://大小写中英文 - $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - break; - default: - // 默认去掉了容易混淆的字符oOLl和数字01,要添加请使用addChars参数 - $chars = 'ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'; - break; - } - if ($len > 10) { // 位数过长重复字符串一定次数 - $chars = $type == 1 ? str_repeat($chars, $len) : str_repeat($chars, 5); - } - if ($type != 4) { - $chars = str_shuffle($chars); - $str = substr($chars, 0, $len); - } else { - // 中文随机字 - for($i = 0; $i < $len; $i ++) { - $str .= msubstr($chars, floor(mt_rand(0, mb_strlen($chars, 'utf-8') - 1)), 1); - } - } - return $str; -} - -/** - * 生成自动密码 - */ -function make_password(){ - $temp = '0123456789abcdefghijklmnopqrstuvwxyz'. - 'ABCDEFGHIJKMNPQRSTUVWXYZ~!@#$^*)_+}{}[]|":;,.'.time(); - for($i=0;$i<10;$i++){ - $temp = str_shuffle($temp.substr($temp,-5)); - } - return md5($temp); -} - - -/** - * php DES解密函数 - * - * @param string $key 密钥 - * @param string $encrypted 加密字符串 - * @return string - */ -function des_decode($key, $encrypted){ - $encrypted = base64_decode($encrypted); - $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, ''); //使用MCRYPT_DES算法,cbc模式 - $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); - $ks = mcrypt_enc_get_key_size($td); - - mcrypt_generic_init($td, $key, $key); //初始处理 - $decrypted = mdecrypt_generic($td, $encrypted); //解密 - - mcrypt_generic_deinit($td); //结束 - mcrypt_module_close($td); - return pkcs5_unpad($decrypted); -} -/** - * php DES加密函数 - * - * @param string $key 密钥 - * @param string $text 字符串 - * @return string - */ -function des_encode($key, $text){ - $y = pkcs5_pad($text); - $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, ''); //使用MCRYPT_DES算法,cbc模式 - $ks = mcrypt_enc_get_key_size($td); - - mcrypt_generic_init($td, $key, $key); //初始处理 - $encrypted = mcrypt_generic($td, $y); //解密 - mcrypt_generic_deinit($td); //结束 - mcrypt_module_close($td); - return base64_encode($encrypted); -} -function pkcs5_unpad($text){ - $pad = ord($text[strlen($text)-1]); - if ($pad > strlen($text)) return $text; - if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text; - return substr($text, 0, -1 * $pad); -} -function pkcs5_pad($text, $block = 8){ - $pad = $block - (strlen($text) % $block); - return $text . str_repeat(chr($pad), $pad); -} \ No newline at end of file diff --git a/plugin/document/kod/app/function/file.function.php b/plugin/document/kod/app/function/file.function.php deleted file mode 100644 index 8cb44fa9a..000000000 --- a/plugin/document/kod/app/function/file.function.php +++ /dev/null @@ -1,1450 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -/** - * 系统函数: filesize(),file_exists(),pathinfo(),rname(),unlink(),filemtime(),is_readable(),is_wrieteable(); - * 获取文件详细信息 file_info($fileName) - * 获取文件夹详细信息 path_info($dir) - * 递归获取文件夹信息 path_info_more($dir,&$fileCount=0,&$pathCount=0,&$size=0) - * 获取文件夹下文件列表 path_list($dir) - * 路径当前文件[夹]名 get_path_this($path) - * 获取路径父目录 get_path_father($path) - * 删除文件 del_file($file) - * 递归删除文件夹 del_dir($dir) - * 递归复制文件夹 copy_dir($source, $dest) - * 创建目录 mk_dir($dir, $mode = 0777) - * 文件大小格式化 size_format($bytes, $precision = 2) - * 判断是否绝对路径 path_is_absolute( $path ) - * 扩展名的文件类型 ext_type($ext) - * 文件下载 file_download($file) - * 文件下载到服务器 file_download_this($from, $fileName) - * 获取文件(夹)权限 get_mode($file) //rwx_rwx_rwx [文件名需要系统编码] - * 上传文件(单个,多个) upload($fileInput, $path = './');// - * 获取配置文件项 get_config($file, $ini, $type="string") - * 修改配置文件项 update_config($file, $ini, $value,$type="string") - * 写日志到LOG_PATH下 write_log('dd','default|.自建目录.','log|error|warning|debug|info|db') - */ - -// 传入参数为程序编码时,有传出,则用程序编码, -// 传入参数没有和输出无关时,则传入时处理成系统编码。 -function iconv_app($str){ - global $config; - $result = iconv_to($str,$config['systemCharset'], $config['appCharset']); - return $result; -} -function iconv_system($str){ - //去除中文空格UTF8; windows下展示异常;过滤文件上传、新建文件等时的文件名 - //文件名已存在含有该字符时,没有办法操作. - $char_empty = "\xc2\xa0"; - if(strpos($str,$char_empty) !== false){ - $str = str_replace($char_empty," ",$str); - } - - global $config; - $result = iconv_to($str,$config['appCharset'], $config['systemCharset']); - $result = path_filter($result); - return $result; -} -function iconv_to($str,$from,$to){ - if (strtolower($from) == strtolower($to)){ - return $str; - } - if (!function_exists('iconv')){ - return $str; - } - //尝试用mb转换;android环境部分问题解决 - if(function_exists('mb_convert_encoding')){ - $result = @mb_convert_encoding($str,$to,$from); - }else{ - $result = @iconv($from, $to, $str); - } - if(strlen($result)==0){ - return $str; - } - return $result; -} -function path_filter($path){ - if(strtoupper(substr(PHP_OS, 0,3)) != 'WIN'){ - return $path; - } - $notAllow = array('*','?','"','<','>','|');//去除 : D:/ - return str_replace($notAllow,' ', $path); -} - - -//filesize 解决大于2G 大小问题 -//http://stackoverflow.com/questions/5501451/php-x86-how-to-get-filesize-of-2-gb-file-without-external-program -function get_filesize($path){ - $result = false; - $fp = fopen($path,"r"); - if(! $fp = fopen($path,"r")) return $result; - if(PHP_INT_SIZE >= 8 ){ //64bit - $result = (float)(abs(sprintf("%u",@filesize($path)))); - }else{ - if (fseek($fp, 0, SEEK_END) === 0) { - $result = 0.0; - $step = 0x7FFFFFFF; - while ($step > 0) { - if (fseek($fp, - $step, SEEK_CUR) === 0) { - $result += floatval($step); - } else { - $step >>= 1; - } - } - }else{ - static $iswin; - if (!isset($iswin)) { - $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'); - } - static $exec_works; - if (!isset($exec_works)) { - $exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC'); - } - if ($iswin && class_exists("COM")) { - try { - $fsobj = new COM('Scripting.FileSystemObject'); - $f = $fsobj->GetFile( realpath($path) ); - $size = $f->Size; - } catch (Exception $e) { - $size = null; - } - if (is_numeric($size)) { - $result = $size; - } - }else if ($exec_works){ - $cmd = ($iswin) ? "for %F in (\"$path\") do @echo %~zF" : "stat -c%s \"$path\""; - @exec($cmd, $output); - if (is_array($output) && is_numeric($size = trim(implode("\n", $output)))) { - $result = $size; - } - }else{ - $result = filesize($path); - } - } - } - fclose($fp); - return $result; -} - -//文件是否存在,区分文件大小写 -function file_exists_case( $fileName ){ - if(file_exists($fileName) === false){ - return false; - } - $status = false; - $directoryName = dirname( $fileName ); - $fileArray = glob( $directoryName . '/*', GLOB_NOSORT); - if ( preg_match( "/\\\|\//", $fileName) ){ - $array = preg_split("/\\\|\//", $fileName); - $fileName = $array[ count( $array ) -1 ]; - } - foreach($fileArray as $file ){ - if(preg_match("/{$fileName}/i", $file)){ - $output = "{$directoryName}/{$fileName}"; - $status = true; - break; - } - } - return $status; -} - - -function path_readable($path){ - $result = intval(is_readable($path)); - if($result){ - return $result; - } - $mode = get_mode($path); - if( $mode && - strlen($mode) == 18 && - substr($mode,-9,1) == 'r'){// -rwx rwx rwx(0777) - return true; - } - return false; -} -function path_writeable($path){ - $result = intval(is_writeable($path)); - if($result){ - return $result; - } - $mode = get_mode($path); - if( $mode && - strlen($mode) == 18 && - substr($mode,-8,1) == 'w'){// -rwx rwx rwx (0777) - return true; - } - return false; -} - -/** - * 获取文件详细信息 - * 文件名从程序编码转换成系统编码,传入utf8,系统函数需要为gbk - */ -function file_info($path){ - $info = array( - 'name' => iconv_app(get_path_this($path)), - 'path' => iconv_app($path), - 'ext' => get_path_ext($path), - 'type' => 'file', - 'mode' => get_mode($path), - 'atime' => @fileatime($path), //最后访问时间 - 'ctime' => @filectime($path), //创建时间 - 'mtime' => @filemtime($path), //最后修改时间 - 'isReadable' => path_readable($path), - 'isWriteable' => path_writeable($path), - 'size' => get_filesize($path) - ); - return $info; -} -/** - * 获取文件夹细信息 - */ -function folder_info($path){ - $info = array( - 'name' => iconv_app(get_path_this($path)), - 'path' => iconv_app(rtrim($path,'/').'/'), - 'type' => 'folder', - 'mode' => get_mode($path), - 'atime' => @fileatime($path), //访问时间 - 'ctime' => @filectime($path), //创建时间 - 'mtime' => @filemtime($path), //最后修改时间 - 'isReadable' => path_readable($path), - 'isWriteable' => path_writeable($path) - ); - return $info; -} - - -/** - * 获取一个路径(文件夹&文件) 当前文件[夹]名 - * test/11/ ==>11 test/1.c ==>1.c - */ -function get_path_this($path){ - $path = str_replace('\\','/', rtrim($path,'/')); - $pos = strrpos($path,'/'); - if($pos === false){ - return $path; - } - return substr($path,$pos+1); -} -/** - * 获取一个路径(文件夹&文件) 父目录 - * /test/11/==>/test/ /test/1.c ==>/www/test/ - */ -function get_path_father($path){ - $path = str_replace('\\','/', rtrim($path,'/')); - $pos = strrpos($path,'/'); - if($pos === false){ - return $path; - } - return substr($path, 0,$pos+1); -} -/** - * 获取扩展名 - */ -function get_path_ext($path){ - $name = get_path_this($path); - $ext = ''; - if(strstr($name,'.')){ - $ext = substr($name,strrpos($name,'.')+1); - $ext = strtolower($ext); - } - if (strlen($ext)>3 && preg_match("/([\x81-\xfe][\x40-\xfe])/", $ext, $match)) { - $ext = ''; - } - return htmlspecialchars($ext); -} - - - -//自动获取不重复文件(夹)名 -//如果传入$file_add 则检测存在则自定重命名 a.txt 为a{$file_add}.txt -//$same_file_type rename,replace,skip,folder_rename -function get_filename_auto($path,$file_add = "",$same_file_type='replace'){ - if (is_dir($path) && $same_file_type!='folder_rename') {//文件夹则忽略 - return $path; - } - //重名处理 - if (file_exists($path)) { - if ($same_file_type=='replace') { - return $path; - }else if($same_file_type=='skip'){ - return false; - } - } - - $i=1; - $father = get_path_father($path); - $name = get_path_this($path); - $ext = get_path_ext($name); - if(is_dir($path)){ - $ext = ''; - } - if (strlen($ext)>0) { - $ext='.'.$ext; - $name = substr($name,0,strlen($name)-strlen($ext)); - } - while(file_exists($path)){ - if ($file_add != '') { - $path = $father.$name.$file_add.$ext; - $file_add.='-'; - }else{ - $path = $father.$name.'('.$i.')'.$ext; - $i++; - } - } - return $path; -} - -/** - * 获取文件夹详细信息,文件夹属性时调用,包含子文件夹数量,文件数量,总大小 - */ -function path_info($path){ - if (!file_exists($path)) return false; - $pathinfo = _path_info_more($path);//子目录文件大小统计信息 - $folderinfo = folder_info($path); - return array_merge($pathinfo,$folderinfo); -} - -/** - * 检查名称是否合法 - */ -function path_check($path){ - $check = array('/','\\',':','*','?','"','<','>','|'); - $path = rtrim($path,'/'); - $path = get_path_this($path); - foreach ($check as $v) { - if (strstr($path,$v)) { - return false; - } - } - return true; -} - -/** - * 递归获取文件夹信息: 子文件夹数量,文件数量,总大小 - */ -function _path_info_more($dir, &$fileCount = 0, &$pathCount = 0, &$size = 0){ - if (!$dh = @opendir($dir)) return array('fileCount'=>0,'folderCount'=>0,'size'=>0); - while (($file = readdir($dh)) !== false) { - if ($file =='.' || $file =='..') continue; - $fullpath = $dir . "/" . $file; - if (!is_dir($fullpath)) { - $fileCount ++; - $size += get_filesize($fullpath); - } else { - _path_info_more($fullpath, $fileCount, $pathCount, $size); - $pathCount ++; - } - } - closedir($dh); - $pathinfo['fileCount'] = $fileCount; - $pathinfo['folderCount'] = $pathCount; - $pathinfo['size'] = $size; - return $pathinfo; -} - - -/** - * 获取多选文件信息,包含子文件夹数量,文件数量,总大小,父目录权限 - */ -function path_info_muti($list,$timeType){ - if (count($list) == 1) { - if ($list[0]['type']=="folder"){ - return path_info($list[0]['path'],$timeType); - }else{ - return file_info($list[0]['path'],$timeType); - } - } - $pathinfo = array( - 'fileCount' => 0, - 'folderCount' => 0, - 'size' => 0, - 'father_name' => '', - 'mod' => '' - ); - foreach ($list as $val){ - if ($val['type'] == 'folder') { - $pathinfo['folderCount'] ++; - $temp = path_info($val['path']); - $pathinfo['folderCount'] += $temp['folderCount']; - $pathinfo['fileCount'] += $temp['fileCount']; - $pathinfo['size'] += $temp['size']; - }else{ - $pathinfo['fileCount']++; - $pathinfo['size'] += get_filesize($val['path']); - } - } - $father_name = get_path_father($list[0]['path']); - $pathinfo['mode'] = get_mode($father_name); - return $pathinfo; -} - -/** - * 获取文件夹下列表信息 - * dir 包含结尾/ d:/wwwroot/test/ - * 传入需要读取的文件夹路径,为程序编码 - */ -function path_list($dir,$listFile=true,$checkChildren=false){ - $dir = rtrim($dir,'/').'/'; - if (!is_dir($dir) || !($dh = @opendir($dir))){ - return array('folderList'=>array(),'fileList'=>array()); - } - $folderList = array();$fileList = array();//文件夹与文件 - while (($file = readdir($dh)) !== false) { - if ($file =='.' || $file =='..' || $file == ".svn") continue; - $fullpath = $dir . $file; - if (is_dir($fullpath)) { - $info = folder_info($fullpath); - if($checkChildren){ - $info['isParent'] = path_haschildren($fullpath,$listFile); - } - $folderList[] = $info; - } else if($listFile) {//是否列出文件 - $info = file_info($fullpath); - if($checkChildren) $info['isParent'] = false; - $fileList[] = $info; - } - } - closedir($dh); - return array('folderList' => $folderList,'fileList' => $fileList); -} - -// 判断文件夹是否含有子内容【区分为文件或者只筛选文件夹才算】 -function path_haschildren($dir,$checkFile=false){ - $dir = rtrim($dir,'/').'/'; - if (!$dh = @opendir($dir)) return false; - while (($file = readdir($dh)) !== false){ - if ($file =='.' || $file =='..') continue; - $fullpath = $dir.$file; - if ($checkFile) {//有子目录或者文件都说明有子内容 - if(@is_file($fullpath) || is_dir($fullpath.'/')){ - return true; - } - }else{//只检查有没有文件 - if(@is_dir($fullpath.'/')){//解决部分主机报错问题 - return true; - } - } - } - closedir($dh); - return false; -} - -/** - * 删除文件 传入参数编码为操作系统编码. win--gbk - */ -function del_file($fullpath){ - if (!@unlink($fullpath)) { // 删除不了,尝试修改文件权限 - @chmod($fullpath, 0777); - if (!@unlink($fullpath)) { - return false; - } - } else { - return true; - } -} - -/** - * 删除文件夹 传入参数编码为操作系统编码. win--gbk - */ -function del_dir($dir){ - if(!file_exists($dir) || !is_dir($dir)) return true; - if (!$dh = opendir($dir)) return false; - @set_time_limit(0); - while (($file = readdir($dh)) !== false) { - if ($file =='.' || $file =='..') continue; - $fullpath = $dir . '/' . $file; - if (!is_dir($fullpath)) { - if (!unlink($fullpath)) { // 删除不了,尝试修改文件权限 - chmod($fullpath, 0777); - if (!unlink($fullpath)) { - return false; - } - } - } else { - if (!del_dir($fullpath)) { - chmod($fullpath, 0777); - if (!del_dir($fullpath)) return false; - } - } - } - closedir($dh); - if (rmdir($dir)) { - return true; - } else { - return false; - } -} - - -/** - * 复制文件夹 - * eg:将D:/wwwroot/下面wordpress复制到 - * D:/wwwroot/www/explorer/0000/del/1/ - * 末尾都不需要加斜杠,复制到地址如果不加源文件夹名, - * 就会将wordpress下面文件复制到D:/wwwroot/www/explorer/0000/del/1/下面 - * $from = 'D:/wwwroot/wordpress'; - * $to = 'D:/wwwroot/www/explorer/0000/del/1/wordpress'; - */ - -function copy_dir($source, $dest){ - if (!$dest) return false; - if (is_dir($source) && $source == substr($dest,0,strlen($source))) return false;//防止父文件夹拷贝到子文件夹,无限递归 - - @set_time_limit(0); - $result = true; - if (is_file($source)) { - if ($dest[strlen($dest)-1] == '/') { - $__dest = $dest . "/" . basename($source); - } else { - $__dest = $dest; - } - $result = @copy($source,$__dest); - @chmod($__dest, 0777); - }else if(is_dir($source)) { - if ($dest[strlen($dest)-1] == '/') { - $dest = $dest . basename($source); - } - if (!is_dir($dest)) { - @mkdir($dest,0777); - } - if (!$dh = opendir($source)) return false; - while (($file = readdir($dh)) !== false) { - if ($file =='.' || $file =='..') continue; - $result = copy_dir($source . "/" . $file, $dest . "/" . $file); - } - closedir($dh); - } - return $result; -} - -/** - * 移动文件&文件夹;(同名文件夹则特殊处理) - * 问题:win下,挂载磁盘移动到系统盘时rmdir导致遍历不完全; - */ -function move_path2($source,$dest,$repeat_add='',$repeat_type='replace'){ - if (!$dest) return false; - if (is_dir($source) && $source == substr($dest,0,strlen($source))) return false;//防止父文件夹拷贝到子文件夹,无限递归 - @set_time_limit(0); - if (is_file($source)) { - return move_file($source,$dest,$repeat_add,$repeat_type); - }else if(is_dir($source)) { - if ($dest[strlen($dest)-1] == '/') { - $dest = $dest . basename($source); - } - if (!file_exists($dest)) { - @mkdir($dest,0777); - } - if (!$dh = opendir($source)) return false; - while (($file = readdir($dh)) !== false) { - if ($file =='.' || $file =='..') continue; - move_path($source."/".$file, $dest."/".$file,$repeat_add,$repeat_type); - } - closedir($dh); - return @rmdir($source); - } -} - -function move_file($source,$dest,$repeat_add,$repeat_type){ - if ($dest[strlen($dest)-1] == '/') { - $dest = $dest . "/" . basename($source); - } - if(file_exists($dest)){ - $dest = get_filename_auto($dest,$repeat_add,$repeat_type);//同名文件处理规则 - } - $result = intval(@rename($source,$dest)); - if (! $result) { // windows部分ing情况处理 - $result = intval(@copy($source,$dest)); - if ($result) { - @unlink($source); - } - } - return $result; -} -function move_path($source,$dest,$repeat_add='',$repeat_type='replace'){ - if (!$dest || !file_exists($source)) return false; - if ( is_dir($source) ){ - //防止父文件夹拷贝到子文件夹,无限递归 - if($source == substr($dest,0,strlen($source))){ - return false; - } - //地址相同 - if(rtrim($source,'/') == rtrim($dest,'/')){ - return false; - } - } - - @set_time_limit(0); - if(is_file($source)){ - return move_file($source,$dest,$repeat_add,$repeat_type); - } - recursion_dir($source,$dirs,$files,-1,0); - - @mkdir($dest); - foreach($dirs as $f){ - $path = $dest.'/'.substr($f,strlen($source)); - if(!file_exists($path)){ - mk_dir($path); - } - } - $file_success = 0; - foreach($files as $f){ - $path = $dest.'/'.substr($f,strlen($source)); - $file_success += move_file($f,$path,$repeat_add,$repeat_type); - } - foreach($dirs as $f){ - rmdir($f); - } - @rmdir($source); - if($file_success == count($files)){ - del_dir($source); - return true; - } - return false; -} - -/** - * 创建目录 - * - * @param string $dir - * @param int $mode - * @return bool - */ -function mk_dir($dir, $mode = 0777){ - if (!$dir) return false; - if (is_dir($dir) || @mkdir($dir, $mode)){ - return true; - } - if (!mk_dir(dirname($dir), $mode)){ - return false; - } - return @mkdir($dir, $mode); -} - -/* -* 获取文件&文件夹列表(支持文件夹层级) -* path : 文件夹 $dir ——返回的文件夹array files ——返回的文件array -* $deepest 是否完整递归;$deep 递归层级 -*/ -function recursion_dir($path,&$dir,&$file,$deepest=-1,$deep=0){ - $path = rtrim($path,'/').'/'; - if (!is_array($file)) $file=array(); - if (!is_array($dir)) $dir=array(); - if (!$dh = opendir($path)) return false; - while(($val=readdir($dh)) !== false){ - if ($val=='.' || $val=='..') continue; - $value = strval($path.$val); - if (is_file($value)){ - $file[] = $value; - }else if(is_dir($value)){ - $dir[]=$value; - if ($deepest==-1 || $deep<$deepest){ - recursion_dir($value."/",$dir,$file,$deepest,$deep+1); - } - } - } - closedir($dh); - return true; -} -function dir_list($path){ - recursion_dir($path,$dirs,$files); - return array_merge($dirs,$files); -} - -// 安全读取文件,避免并发下读取数据为空 -function file_read_safe($file,$timeout = 3){ - if(!$file || !file_exists($file)) return false; - $fp = @fopen($file, 'r'); - if(!$fp) return false; - $startTime = microtime(true); - do{ - $locked = flock($fp, LOCK_SH);//LOCK_EX|LOCK_NB - if(!$locked){ - usleep(mt_rand(1, 50) * 1000);//1~50ms; - } - } while((!$locked) && ((microtime(true) - $startTime) < $timeout ));//设置超时时间 - if($locked && filesize($file) >=0 ){ - $result = @fread($fp, filesize($file)); - flock($fp,LOCK_UN); - fclose($fp); - if(filesize($file) == 0){ - return ''; - } - return $result; - }else{ - flock($fp,LOCK_UN);fclose($fp); - return false; - } -} - -// 安全读取文件,避免并发下读取数据为空 -function file_wirte_safe($file,$buffer,$timeout=3){ - clearstatcache(); - if(strlen($file) == 0 || !$file || !file_exists($file)) return false; - $fp = fopen($file,'r+'); - $startTime = microtime(true); - do{ - $locked = flock($fp, LOCK_EX);//LOCK_EX - if(!$locked){ - usleep(mt_rand(1, 50) * 1000);//1~50ms; - } - } while((!$locked) && ((microtime(true) - $startTime) < $timeout ) );//设置超时时间 - if($locked){ - $tempFile = $file.'.temp'; - $result = file_put_contents($tempFile,$buffer,LOCK_EX);//验证是否还能写入;避免磁盘空间满的情况 - if(!$result || !file_exists($tempFile) ){ - flock($fp,LOCK_UN);fclose($fp); - return false; - } - @unlink($tempFile); - - ftruncate($fp,0); - rewind($fp); - $result = fwrite($fp,$buffer); - flock($fp,LOCK_UN);fclose($fp); - clearstatcache(); - return $result; - }else{ - flock($fp,LOCK_UN);fclose($fp); - return false; - } -} - -/* - * $search 为包含的字符串 - * is_content 表示是否搜索文件内容;默认不搜索 - * is_case 表示区分大小写,默认不区分 - */ -function path_search($path,$search,$is_content=false,$file_ext='',$is_case=false){ - $result = array(); - $result['fileList'] = array(); - $result['folderList'] = array(); - if(!$path) return $result; - - $ext_arr = explode("|",$file_ext); - recursion_dir($path,$dirs,$files,-1,0); - $strpos = 'stripos';//是否区分大小写 - if ($is_case) $strpos = 'strpos'; - $result_num = 0; - $result_num_max = 2000;//搜索文件内容,限制最多匹配条数 - foreach($files as $f){ - if($result_num >= $result_num_max){ - $result['error_info'] = $result_num_max; - break; - } - - //若指定了扩展名则只在匹配扩展名文件中搜索 - $ext = get_path_ext($f); - if($file_ext != '' && !in_array($ext,$ext_arr)){ - continue; - } - - //搜索内容则不搜索文件名 - if ($is_content) { - if(!is_text_file($ext)) continue; //在限定中或者不在bin中 - $search_info = file_search($f,$search,$is_case); - if($search_info !== false){ - $result_num += count($search_info['searchInfo']); - $result['fileList'][] = $search_info; - } - }else{ - $path_this = get_path_this($f); - if ($strpos($path_this,iconv_system($search)) !== false){//搜索文件名; - $result['fileList'][] = file_info($f); - $result_num ++; - } - } - } - if (!$is_content && $file_ext == '' ) {//没有指定搜索文件内容,且没有限定扩展名,才搜索文件夹 - foreach($dirs as $f){ - $path_this = get_path_this($f); - if ($strpos($path_this,iconv_system($search)) !== false){ - $result['folderList'][]= array( - 'name' => iconv_app(get_path_this($f)), - 'path' => iconv_app($f) - ); - } - } - } - return $result; -} - -// 文件搜索;返回行及关键词附近行 -// 优化搜索算法 提高100被性能 -function file_search($path,$search,$is_case){ - $strpos = 'stripos';//是否区分大小写 - if ($is_case) $strpos = 'strpos'; - - //文本文件 超过40M不再搜索 - if(@filesize($path) >= 1024*1024*40){ - return false; - } - $content = file_get_contents($path); - if( $strpos($content,"\0") > 0 ){// 不是文本文档 - unset($content); - return false; - } - $charset = get_charset($content); - //搜索关键字为纯英文则直接搜索;含有中文则转为utf8再搜索,为兼容其他文件编码格式 - $notAscii = preg_match("/[\x7f-\xff]/", $search); - if($notAscii && !in_array($charset,array('utf-8','ascii'))){ - $content = iconv_to($content,$charset,'utf-8'); - } - - //文件没有搜索到目标直接返回 - if ($strpos($content,$search) === false){ - unset($content); - return false; - } - - $pose = 0; - $file_size = strlen($content); - $arr_search = array(); // 匹配结果所在位置 - while ( $pose !== false) { - $pose = $strpos($content,$search, $pose); - if($pose !== false){ - $arr_search[] = $pose; - $pose ++; - }else{ - break; - } - } - - $arr_line = array(); - $pose = 0; - while ( $pose !== false) { - $pose = strpos($content, "\n", $pose); - if($pose !== false){ - $arr_line[] = $pose; - $pose ++; - }else{ - break; - } - } - $arr_line[] = $file_size;//文件只有一行而且没有换行,则构造虚拟换行 - $result = array();// [2,10,22,45,60] [20,30,40,50,55] - $len_search = count($arr_search); - $len_line = count($arr_line); - for ($i=0,$line=0; $i < $len_search && $line < $len_line; $line++) { - while ( $arr_search[$i] <= $arr_line[$line]) { - //行截取字符串 - $cur_pose = $arr_search[$i]; - $from = $line == 0 ? 0:$arr_line[$line-1]; - $to = $arr_line[$line]; - $len_max = 300; - if( $to - $from >= $len_max){ //长度过长处理 - $from = $cur_pose - 20; - $from = $from <= 0 ? 0 : $from; - $to = $from + $len_max; - //中文避免截断;(向前 向后找到分隔符后终止) - $token = array("\r","\n"," ","\t",",","/","#","_","[","]","(",")","+","-","*","/","=","&"); - while (!in_array($content[$from],$token) && $from >= 0) { - $from -- ; - } - while (!in_array($content[$to],$token) && $to <= $file_size) { - $to ++ ; - } - } - $line_str = substr($content,$from,$to - $from); - if($strpos($line_str,$search) === false){ //截取乱码避免 - $line_str = $search; - } - - $result[] = array('line'=>$line+1,'str'=>$line_str); - if(++$i >= $len_search ){ - break; - } - } - } - - $info = file_info($path); - $info['searchInfo'] = $result; - unset($content); - return $info; -} - -/** - * 修改文件、文件夹权限 - * @param $path 文件(夹)目录 - * @return :string - */ -function chmod_path($path,$mod){ - if (!isset($mod)) $mod = 0777; - if (!file_exists($path)) return false; - if (is_file($path)) return @chmod($path,$mod); - if (!$dh = @opendir($path)) return false; - while (($file = readdir($dh)) !== false){ - if ($file =='.' || $file =='..') continue; - $fullpath = $path . '/' . $file; - chmod_path($fullpath,$mod); - @chmod($fullpath,$mod); - } - closedir($dh); - return @chmod($path,$mod); -} - -/** - * 文件大小格式化 - * - * @param $ :$bytes, int 文件大小 - * @param $ :$precision int 保留小数点 - * @return :string - */ -function size_format($bytes, $precision = 2){ - if ($bytes == 0) return "0 B"; - $unit = array( - 'TB' => 1099511627776, // pow( 1024, 4) - 'GB' => 1073741824, // pow( 1024, 3) - 'MB' => 1048576, // pow( 1024, 2) - 'kB' => 1024, // pow( 1024, 1) - 'B ' => 1, // pow( 1024, 0) - ); - foreach ($unit as $un => $mag) { - if (doubleval($bytes) >= $mag) - return round($bytes / $mag, $precision).' '.$un; - } -} - -/** - * 判断路径是不是绝对路径 - * 返回true('/foo/bar','c:\windows'). - * - * @return 返回true则为绝对路径,否则为相对路径 - */ -function path_is_absolute($path){ - if (realpath($path) == $path)// *nux 的绝对路径 /home/my - return true; - if (strlen($path) == 0 || $path[0] == '.') - return false; - if (preg_match('#^[a-zA-Z]:\\\\#', $path))// windows 的绝对路径 c:\aaa\ - return true; - return (bool)preg_match('#^[/\\\\]#', $path); //绝对路径 运行 / 和 \绝对路径,其他的则为相对路径 -} - - -function is_text_file($ext){ - $ext_arr = array( - "txt","textile",'oexe','inc','csv','log','asc','tsv','lnk','url','webloc','meta',"localized", - "xib","xsd","storyboard","plist","csproj","pch","pbxproj","local","xcscheme","manifest","vbproj", - "strings",'jshintrc','sublime-project','readme','changes',"changelog",'version','license','changelog', - - "abap","abc","as","asp",'aspx',"ada","adb","htaccess","htgroups","htgroups", - "htpasswd","asciidoc","adoc","asm","a","ahk","bat","cmd","cpp","c","cc","cxx","h","hh","hpp", - "ino","c9search_results","cirru","cr","clj","cljs","cbl","cob","coffee","cf","cson","cakefile", - "cfm","cs","css","curly","d","di","dart","diff","patch","dockerfile","dot","dummy","dummy","e", - "ge","ejs","ex","exs","elm","erl","hrl","frt","fs","ldr","ftl","gcode","feature",".gitignore", - "glsl","frag","vert","gbs","go","groovy","haml","hbs","handlebars","tpl","mustache","hs","hx", - "html","hta","htm","xhtml","eex","html.eex","erb","rhtml","html.erb","ini",'inf',"conf","cfg","prefs","io", - "jack","jade","java","ji","jl","jq","js","jsm","json","jsp","jsx","latex","ltx","bib", - "lean","hlean","less","liquid","lisp","ls","logic","lql","lsl","lua","lp","lucene","Makefile","makemakefile", - "gnumakefile","makefile","ocamlmakefile","make","md","markdown","mask","matlab","mz","mel", - "mc","mush","mysql","nix","nsi","nsh","m","mm","ml","mli","pas","p","pl","pm","pgsql","php", - "phtml","shtml","php3","php4","php5","phps","phpt","aw","ctp","module","ps1","praat", - "praatscript","psc","proc","plg","prolog","properties","proto","py","r","cshtml","rd", - "rhtml","rst","rb","ru","gemspec","rake","guardfile","rakefile","gemfile","rs","sass", - "scad","scala","scm","sm","rkt","oak","scheme","scss","sh","bash","bashrc","sjs","smarty", - "tpl","snippets","soy","space","sql","sqlserver","styl","stylus","svg","swift","tcl","tex", - "toml","twig","swig","ts","typescript","str","vala","vbs","vb","vm","v","vh", - "sv","svh","vhd","vhdl","wlk","wpgm","wtest","xml","rdf","rss","wsdl","xslt","atom","mathml", - "mml","xul","xbl","xaml","xq","yaml","yml", - - "cer","reg","config" - ); - if(in_array($ext,$ext_arr)){ - return true; - }else{ - return false; - } -} - -/** - * 输出、文件下载,断点续传支持 - * 默认以附件方式下载;$download为false时则为输出文件 - * 视频播放拖拽:流媒体服务器 - * 文件缓存:http://blog.csdn.net/eroswang/article/details/8302191 - */ -function file_put_out($file,$download=-1,$downFilename=false){ - $error = false; - if (!file_exists($file)){ - $error = 'file not exists'; - }else if (!path_readable($file)){ - $error = 'file not readable'; - }else if (!$fp = @fopen($file, "rb")){ - $error = 'file open error!'; - } - if($error !== false){ - if($downFilename === false){ - return; - }else{ - show_json($error,false); - } - } - - $start= 0; - $file_size = get_filesize($file); - $end = $file_size - 1; - @ob_end_clean(); - @set_time_limit(0); - - $time = gmdate('D, d M Y H:i:s',filemtime($file)); - $filename = get_path_this($file); - if($downFilename !== false){ - $filename = $downFilename; - } - - $mime = get_file_mime(get_path_ext($filename)); - if ($download === -1 && !mime_support($mime)){ - $download = true; - } - $headerName = rawurlencode(iconv_app($filename)); - $headerName = '"'.$headerName."\"; filename*=utf-8''".$headerName; - if ($download) { - header('Content-Type: application/octet-stream'); - header('Content-Transfer-Encoding: binary'); - header('Content-Disposition: attachment;filename='.$headerName); - }else{ - header('Content-Type: '.$mime); - header('Content-Disposition: inline;filename='.$headerName); - if(strstr($mime,'text/')){ - //$charset = get_charset(file_get_contents($file)); - header('Content-Type: '.$mime.'; charset=');//避免自动追加utf8导致gbk网页乱码 - } - } - - //缓存文件 - header('Expires: '.gmdate('D, d M Y H:i:s',time()+3600*24*20).' GMT'); - header('Cache-Pragma: public'); - header('Pragma: public'); - header('Cache-Control: cache, must-revalidate'); - if (isset($_SERVER['If-Modified-Since']) && - (strtotime($_SERVER['If-Modified-Since']) == filemtime($file))) { - header('304 Not Modified', true, 304); - exit; - } - $etag = '"'.md5($time.$file_size).'"'; - if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag){ - header("Etag: ".$etag, true, 304); - exit; - } - header('Etag: '.$etag); - header('Last-Modified: '.$time.' GMT'); - header("X-OutFileName: ".$filenameOutput); - header("X-Powered-By: kodExplorer."); - header("X-FileSize: ".$file_size); - - //调用webserver下载 - $server = strtolower($_SERVER['SERVER_SOFTWARE']); - if($server && $GLOBALS['config']['settings']['httpSendFile']){ - if(strstr($server,'nginx')){//nginx - header("X-Sendfile: ".$file); - }else if(strstr($server,'apache')){ //apache - header('X-Accel-Redirect: '.$file); - }else if(strstr($server,'http')){//light http - header( "X-LIGHTTPD-send-file: " . $file); - } - return; - } - - //远程路径不支持断点续传;打开zip内部文件 - if(!file_exists($file)){ - header('HTTP/1.1 200 OK'); - header('Content-Length: '.($end+1)); - return; - } - header("Accept-Ranges: bytes"); - if (isset($_SERVER['HTTP_RANGE'])){ - if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches)){ - $start = intval($matches[1]); - if (!empty($matches[2])){ - $end = intval($matches[2]); - } - } - header('HTTP/1.1 206 Partial Content'); - }else{ - header('HTTP/1.1 200 OK'); - } - if(isset($_GET['start'])){//flash video - $start = intval($_GET['start']); - } - header('Content-Length:' . (($end - $start) + 1)); - if (isset($_SERVER['HTTP_RANGE']) || isset($_GET['start'])){ - header("Content-Range: bytes $start-$end/".$file_size); - } - - //输出文件 - $cur = $start; - fseek($fp, $start,0); - while(!feof($fp) && $cur <= $end){ // && (connection_status() == 0) - print fread($fp, min(1024 * 200, ($end - $cur) + 1)); - $cur += 1024 *200; - flush(); - } - fclose($fp); -} - -/** - * 远程文件下载到服务器 - * 支持fopen的打开都可以;支持本地、url - */ -function file_download_this($from, $fileName,$headerSize=0){ - @set_time_limit(0); - $fileTemp = $fileName.'.downloading'; - if ($fp = @fopen ($from, "rb")){ - if(!$downloadFp = @fopen($fileTemp, "wb")){ - return false; - } - while(!feof($fp)){ - if(!file_exists($fileTemp)){//删除目标文件;则终止下载 - fclose($downloadFp); - return false; - } - //对于部分fp不结束的通过文件大小判断 - clearstatcache(); - if( $headerSize>0 && - $headerSize==get_filesize(iconv_system($fileTemp)) - ){ - break; - } - fwrite($downloadFp, fread($fp, 1024 * 200 ), 1024 * 200); - } - //下载完成,重命名临时文件到目标文件 - fclose($downloadFp); - fclose($fp); - if(!@rename($fileTemp,$fileName)){ - unlink($fileName); - return rename($fileTemp,$fileName); - } - return true; - }else{ - return false; - } -} - -/** - * 获取文件(夹)权限 rwx_rwx_rwx - */ -function get_mode($file){ - $Mode = @fileperms($file); - $theMode = ' '.decoct($Mode); - $theMode = substr($theMode,-4); - $Owner = array();$Group=array();$World=array(); - if ($Mode &0x1000) $Type = 'p'; // FIFO pipe - elseif ($Mode &0x2000) $Type = 'c'; // Character special - elseif ($Mode &0x4000) $Type = 'd'; // Directory - elseif ($Mode &0x6000) $Type = 'b'; // Block special - elseif ($Mode &0x8000) $Type = '-'; // Regular - elseif ($Mode &0xA000) $Type = 'l'; // Symbolic Link - elseif ($Mode &0xC000) $Type = 's'; // Socket - else $Type = 'u'; // UNKNOWN - // Determine les permissions par Groupe - $Owner['r'] = ($Mode &00400) ? 'r' : '-'; - $Owner['w'] = ($Mode &00200) ? 'w' : '-'; - $Owner['x'] = ($Mode &00100) ? 'x' : '-'; - $Group['r'] = ($Mode &00040) ? 'r' : '-'; - $Group['w'] = ($Mode &00020) ? 'w' : '-'; - $Group['e'] = ($Mode &00010) ? 'x' : '-'; - $World['r'] = ($Mode &00004) ? 'r' : '-'; - $World['w'] = ($Mode &00002) ? 'w' : '-'; - $World['e'] = ($Mode &00001) ? 'x' : '-'; - // Adjuste pour SUID, SGID et sticky bit - if ($Mode &0x800) $Owner['e'] = ($Owner['e'] == 'x') ? 's' : 'S'; - if ($Mode &0x400) $Group['e'] = ($Group['e'] == 'x') ? 's' : 'S'; - if ($Mode &0x200) $World['e'] = ($World['e'] == 'x') ? 't' : 'T'; - $Mode = $Type.$Owner['r'].$Owner['w'].$Owner['x'].' '. - $Group['r'].$Group['w'].$Group['e'].' '. - $World['r'].$World['w'].$World['e']; - return $Mode.'('.$theMode.')'; -} - -/** - * 获取可以上传的最大值 - * return * byte - */ -function get_post_max(){ - $upload = ini_get('upload_max_filesize'); - $upload = $upload==''?ini_get('upload_max_size'):$upload; - $post = ini_get('post_max_size'); - $upload = intval($upload)*1024*1024*0.8; - $post = intval($post)*1024*1024*0.8; - $the_max = $upload<$post?$upload:$post; - return $the_max==0?1024*1024*0.5:$the_max;//获取不到则500k -} - - - -function path_clear($path){ - $path = str_replace('\\','/',trim($path)); - $path = preg_replace('/\/+/', '/', $path); - if (strstr($path,'../')) { - $path = preg_replace('/\/\.+\//', '/', $path); - } - return $path; -} -function path_clear_name($path){ - $path = str_replace('\\','/',trim($path)); - $path = str_replace('/','.',trim($path)); - return $path; -} - -// 兼容move_uploaded_file 和 流的方式上传 -function kod_move_uploaded_file($fromPath,$savePath){ - $tempPath = $savePath.'.parttmp'; - if($fromPath == "base64"){ - @file_put_contents($tempPath,base64_decode($_POST['file'])); - }else if($fromPath == "php://input"){ - $in = @fopen($fromPath, "rb"); - $out = @fopen($tempPath, "wb"); - if(!$in || !$out) return false; - while (!feof($in)) { - fwrite($out, fread($in, 1024*200)); - } - fclose($in); - fclose($out); - }else{ - if(!move_uploaded_file($fromPath,$tempPath)){ - show_json('move uploaded file error!',false); - } - } - - $result = rename($tempPath,$savePath); - chmod_path($savePath,DEFAULT_PERRMISSIONS); - return $result; -} -function check_upload($error){ - $status = array( - 'UPLOAD_ERR_OK', //0 没有错误发生,文件上传成功。 - 'UPLOAD_ERR_INI_SIZE', //1 上传的文件超过了php.ini 中 upload_max_filesize 选项限制的值。 - 'UPLOAD_ERR_FORM_SIZE', //2 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 - 'UPLOAD_ERR_PARTIAL', //3 文件只有部分被上传。 - 'UPLOAD_ERR_NO_FILE', //4 没有文件被上传。 - 'UPLOAD_UNKNOW', //5 未定义 - 'UPLOAD_ERR_NO_TMP_DIR',//6 找不到临时文件夹。php 4.3.10 和 php 5.0.3 引进。 - 'UPLOAD_ERR_CANT_WRITE',//7 文件写入失败。php 5.1.0 引进。 - ); - return $error.':'.$status[$error]; -} - -//拍照上传 -function updload_ios_check($fileName,$in){ - if(!is_wap()) return $fileName; - $time = strtotime($in['lastModifiedDate']); - $time = $time ? $time : time(); - $beforeName = strtolower($fileName); - if($beforeName == "image.jpg" || $beforeName == "image.jpeg"){ - $fileName = date('Ymd',$time).'_'.$in['size'].'.jpg'; - }else if($beforeName == "capturedvideo.mov"){ - $fileName = date('Ymd',$time).'_'.$in['size'].'.mov'; - } - return $fileName; -} - -/** - * 文件上传处理。大文件支持分片上传 - * upload('file','D:/www/'); - * - * post上传:base64Upload=1;file=base64str;name=filename - */ -function upload($path,$tempPath,$repeatAction='replace'){ - ignore_timeout(); - global $in; - $fileInput = 'file'; - $fileName = ""; - if (!empty($_FILES)) { - $fileName = iconv_system(path_clear_name($_FILES[$fileInput]["name"])); - $uploadFile = $_FILES[$fileInput]["tmp_name"]; - if(!$uploadFile && $_FILES[$fileInput]['error']>0){ - show_json(check_upload($_FILES[$fileInput]['error']),false); - } - $fileName = updload_ios_check($fileName,$in);//拍照上传 - }else if (isset($in["name"])) { - $fileName = iconv_system(path_clear_name($in["name"])); - $uploadFile = "php://input"; - if(isset($in['base64Upload'])){ - $uploadFile = "base64"; - } - $fileName = updload_ios_check($fileName,$in);//拍照上传 - }else if( isset($in["check_md5"]) ) {//断点续传检测 - $fileName = iconv_system(path_clear_name($in["name"])); - $savePath = get_filename_auto($path.$fileName,""); //自动重命名 - return upload_chunk("--check_md5--",$tempPath,$savePath); - }else{ - show_json('param error',false); - } - - //正常上传 - $savePath = get_filename_auto($path.$fileName,"",$repeatAction); //自动重命名 - Hook::trigger('uploadFileBefore',$savePath); - if($savePath === false){ - show_json('upload_exist_skip',false); - } - - $chunks = isset($in["chunks"]) ? intval($in["chunks"]) : 1; - if ($chunks > 1) {//并发上传,不一定有前后顺序 - return upload_chunk($uploadFile,$tempPath,$savePath); - } - if(kod_move_uploaded_file($uploadFile,$savePath)){ - Hook::trigger('uploadFileAfter',$savePath); - show_json('upload_success',true,iconv_app(_DIR_OUT($savePath))); - }else { - show_json('move_error',false); - } -} - - -/** - * 简易文件hash获取;替代md5_file; - * md5(文件头6字节+中间6字节+结尾6字节) - */ -function file_hash_simple($file){ - $fileSize = filesize($file); - $sliceLength = 6; - if($fileSize <= $sliceLength){ - $sliceString = file_get_contents($file); - }else{ - $fp = fopen($file,'r'); - $sliceString = fread($fp,$sliceLength); - fseek($fp,($fileSize-$sliceLength)/2); - $sliceString .= fread($fp,$sliceLength); - fseek($fp,$fileSize-$sliceLength); - $sliceString .= fread($fp,$sliceLength); - fclose($fp); - } - $hash = $fileSize; - for ($i=0; $i < strlen($sliceString); $i++) { - $hash = $hash.",".ord($sliceString[$i]); - } - return md5($hash); -} - -function upload_chunk($uploadFile,$tempPath,$savePath){ - global $in; - $chunk = isset($in["chunk"]) ? intval($in["chunk"]) : 0; - $chunks = isset($in["chunks"]) ? intval($in["chunks"]) : 1; - $check_md5 = isset($in["check_md5"]) ? $in["check_md5"] : false; - - //if(mt_rand(0, 100) > 10) die("server error".$chunk); //模拟失败 - //文件分块检测是否已上传,已上传则忽略;断点续传 - if($check_md5 !== false){ - $chunk_file_pre = $tempPath.md5($savePath).'.part'; - $chunk_file = $chunk_file_pre.$chunk; - if( file_exists($chunk_file) && file_hash_simple($chunk_file) == $check_md5){ - $arr = array(); - for($index = 0; $index<$chunks; $index++ ){ - if(file_exists($chunk_file_pre.$index)){ - $arr['part_'.$index] = file_hash_simple($chunk_file_pre.$index); - } - } - show_json('success',true,$arr); - }else{ - show_json('not_exists',false); - } - } - - $tempFilePre = $tempPath.md5($savePath).'.part'; - if(kod_move_uploaded_file($uploadFile, $tempFilePre.$chunk)){ - $done = true; - - //优化分片存在判断;当分片太多时,每个分片都全量判断,会占用服务器资源及影响上传速度; - $fromIndex = 0; - $existMaxFile = $tempFilePre.'.max';//记录连续存在文件的最大序号 - if(file_exists($existMaxFile)){ - $fromIndex = intval(file_get_contents($fromIndex)); - }else{ - file_put_contents($existMaxFile,$fromIndex); - } - for($index = $fromIndex; $index<$chunks; $index++ ){ - if (!file_exists($tempFilePre.$index)) { - if($index-1 > $fromIndex){ - file_put_contents($existMaxFile,$index-1); - } - $done = false; - break; - } - } - - if (!$done){ - show_json('upload_success',true); - }else{ - $savePathTemp = $tempFilePre.mtime(); - if(!$out = fopen($savePathTemp, "wb")){ - show_json('no_permission_write',false); - } - if (!flock($out, LOCK_EX)) { - show_json('lock dist move error',false); - }else{ - for( $index = 0; $index < $chunks; $index++ ) { - $chunk_file = $tempFilePre.$index; - if (!$fp_in = @fopen($chunk_file,"rb")){//并发情况下另一个访问时文件已删除 - flock($out, LOCK_UN); - fclose($out); - unlink($savePathTemp); - show_json('open chunk error! cur='.$chunk.';index='.$index,false); - } - while (!feof($fp_in)) { - fwrite($out, fread($fp_in,1024*200)); - } - fclose($fp_in); - unlink($chunk_file); - } - flock($out, LOCK_UN); - fclose($out); - } - } - unlink($existMaxFile); - $res = rename($savePathTemp,$savePath); - if(!$res){ - unlink($savePath); - $res = rename($savePathTemp,$savePath); - if(!$res){ - show_json('move(rename) dist file error!',false); - } - } - Hook::trigger('uploadFileAfter',$savePath); - show_json('upload_success',true,iconv_app(_DIR_OUT($savePath))); - }else { - show_json('move_error',false); - } -} - - -/** - * 写日志 - * @param string $log 日志信息 - * @param string $type 日志类型 [system|app|...] - * @param string $level 日志级别 - * @return boolean - */ -function write_log($log, $type = 'default', $level = 'log'){ - if(!defined('LOG_PATH')){ - return; - } - list($usec, $sec) = explode(' ', microtime()); - $now_time = date('[H:i:s.').substr($usec,2,3).'] '; - $target = LOG_PATH . strtolower($type) . '/'; - mk_dir($target); - if (!path_writeable($target)){ - exit('path can not write!'); - } - $ext = '.php';//.php .log; - $target .= date('Y_m_d').'__'.$level.$ext; - //检测日志文件大小, 超过配置大小则重命名 - if (file_exists($target) && get_filesize($target) >= 1024*1024*10) { - $fileName = substr(basename($target),0,strrpos(basename($target),$ext)).date('H:i:s').$ext; - rename($target, dirname($target) .'/'. $fileName); - } - if(!file_exists($target)){ - error_log("<?php exit;?>\n", 3,$target); - } - - if(is_object($log) || is_array($log)){ - $log = json_encode_force($log); - } - clearstatcache(); - return error_log("$now_time $log\n", 3, $target); -} \ No newline at end of file diff --git a/plugin/document/kod/app/function/helper.function.php b/plugin/document/kod/app/function/helper.function.php deleted file mode 100644 index 0146a8c8d..000000000 --- a/plugin/document/kod/app/function/helper.function.php +++ /dev/null @@ -1,520 +0,0 @@ -<?php - -//扩展名权限判断 有权限则返回1 不是true -function checkExt($file){ - if($GLOBALS['isRoot']) return 1; - if (strstr($file,'<') || strstr($file,'>') || $file=='') { - return 0; - } - - //'php|phtml|phtm|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm' - $notAllow = strtolower($GLOBALS['auth']['extNotAllow']); - $extArr = explode('|',$notAllow); - if(in_array('asp',$extArr)){ - $extArr = array_merge($extArr,array('aspx','ascx','pwml')); - } - if(in_array('php',$extArr)){ - $extArr = array_merge($extArr,array('phtml','phtm','htaccess','pwml')); - } - if(in_array('htm',$extArr) || in_array('html',$extArr)){ - $extArr = array_merge($extArr,array('html','shtml','shtm','html')); - } - foreach ($extArr as $current) { - if ($current !== '' && stristr($file,'.'.$current)){//含有扩展名 - return 0; - } - } - return 1; -} - -//-----解压缩跨平台编码转换;自动识别编码----- -//压缩前,文件名处理; -//ACT=zip——压缩到当前 -//ACT=zipDownload---打包下载[判断浏览器&UA——得到地区自动转换为目标编码]; -function zip_pre_name($fileName,$toCharset=false){ - if(get_path_this($fileName) == '.DS_Store') return '';//过滤文件 - if (!function_exists('iconv')){ - return $fileName; - } - $charset = $GLOBALS['config']['systemCharset']; - if($toCharset == false){//默认从客户端和浏览器自动识别 - $toCharset = 'utf-8'; - $clientLanugage = I18n::defaultLang(); - $langType = I18n::getType(); - if( client_is_windows() && ( - $clientLanugage =='zh-CN' || - $clientLanugage =='zh-TW' || - $langType =='zh-CN' || - $langType =='zh-TW' ) - ){ - $toCharset = "gbk";//压缩或者打包下载压缩时文件名采用的编码 - } - } - - $result = iconv_to($fileName,$charset,$toCharset); - if(!$result){ - $result = $fileName; - } - //write_log("zip:".$charset.'=>'.$toCharset.';'.$fileName.'=>'.$result,'zip'); - return $result; -} - -//解压缩文件名检测 -function unzip_filter_ext($name){ - $add = '.txt'; - if(checkExt($name)){//允许 - return $name; - } - return $name.$add; -} -//解压到kod,文件名处理;识别编码并转换到当前系统编码 -function unzip_pre_name($fileName){ - if (!function_exists('iconv')){ - return unzip_filter_ext($fileName); - } - if(isset($GLOBALS['unzipFileCharsetGet'])){ - $charset = $GLOBALS['unzipFileCharsetGet']; - }else{ - $charset = get_charset($fileName); - } - $toCharset = $GLOBALS['config']['systemCharset']; - $result = iconv_to($fileName,$charset,$toCharset); - if(!$result){ - $result = $fileName; - } - $result = unzip_filter_ext($result); - //echo $charset.'==>'.$toCharset.':'.$result.'==='.$fileName.'<br/>'; - return $result; -} - -// 获取压缩文件内编码 -// $GLOBALS['unzipFileCharsetGet'] -function unzip_charset_get($list){ - if(count($list) == 0) return 'utf-8'; - $charsetArr = array(); - for ($i=0; $i < count($list); $i++) { - $charset = get_charset($list[$i]['filename']); - if(!isset($charsetArr[$charset])){ - $charsetArr[$charset] = 1; - }else{ - $charsetArr[$charset] += 1; - } - } - arsort($charsetArr); - $keys = array_keys($charsetArr); - - if(in_array('gbk',$keys)){//含有gbk,则认为是gbk - $keys[0] = 'gbk'; - } - $GLOBALS['unzipFileCharsetGet'] = $keys[0]; - return $keys[0]; -} - -/** - * 服务器相关环境 - * 检测环境是否支持升级版本 - */ -function serverInfo(){ - $lib = array( - "sqlit3"=>intval( class_exists('SQLite3') ), - "sqlit" =>intval( extension_loaded('sqlite') ), - "curl" =>intval( function_exists('curl_init') ), - "pdo" =>intval( class_exists('PDO') ), - "mysqli"=>intval( extension_loaded('mysqli') ), - "mysql" =>intval( extension_loaded('mysql') ), - ); - $libStr = ""; - foreach($lib as $key=>$val){ - $libStr .= $key.'='.$val.';'; - } - $system = explode(" ", php_uname()); - $env = array( - "sys" => strtolower($system[0]), - "php" => floatval(PHP_VERSION), - "server"=> $_SERVER['SERVER_SOFTWARE'], - "lib" => $libStr, - "info" => php_uname().';php='.PHP_VERSION, - ); - $result = str_replace("\/","@",json_encode($env)); - return $result; -} - -function charset_check(&$str,$check,$tempCharset='utf-8'){ - if ($str === '' || !function_exists("mb_convert_encoding")){ - return false; - } - $testStr1 = @mb_convert_encoding($str,$tempCharset,$check); - $testStr2 = @mb_convert_encoding($testStr1,$check,$tempCharset); - if($str == $testStr2){ - return true; - } - return false; -} - -//https://segmentfault.com/a/1190000003020776 -//http://blog.sina.com.cn/s/blog_b97feef301019571.html -function get_charset(&$str) { - if($GLOBALS['config']['checkCharsetDefault']){//直接指定编码 - return $GLOBALS['config']['checkCharsetDefault']; - } - if ($str === '' || !function_exists("mb_detect_encoding")){ - return 'utf-8'; - } - $bom_arr = array( - 'utf-8' => chr(0xEF) . chr(0xBB) .chr(0xBF), - 'utf-16le' => chr(0xFF) . chr(0xFE), - 'utf-16be' => chr(0xFE) . chr(0xFF), - 'utf-32le' => chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00), - 'utf-32be' => chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF), - ); - foreach ($bom_arr as $key => $value) { - if (substr($str,0,strlen($value)) === $value ){ - return $key; - } - } - - //前面检测成功则,自动忽略后面 - $charset=strtolower(@mb_detect_encoding($str,$GLOBALS['config']['checkCharset'])); - $charsetGet = $charset; - if ($charset == 'cp936'){ - // 有交叉,部分文件无法识别 - if(charset_check($str,'ISO-8859-4') && !charset_check($str,'gbk') && !charset_check($str,'big5')){ - $charset = 'ISO-8859-4'; - }elseif(charset_check($str,'gbk') && !charset_check($str,'big5')){ - $charset = 'gbk'; - }else if(charset_check($str,'big5')){ - $charset = 'big5'; - } - }else if ($charset == 'euc-cn'){ - $charset = 'gbk'; - }else if ($charset == 'ascii'){ - $charset = 'utf-8'; - } - if ($charset == 'iso-8859-1'){ - //检测详细编码;value为用什么编码检测;为空则用utf-8 - $check = array( - 'utf-8' => $charset, - 'utf-16' => 'gbk', - 'cp1251' => 'utf-8', - 'cp1252' => 'utf-8' - ); - foreach($check as $key => $val){ - if(charset_check($str,$key,$val)){ - if($val == ''){ - $val = 'utf-8'; - } - $charset = $key; - break; - } - } - } - //show_json($charset,false,$charsetGet); - return $charset; -} - - -function file_upload_size(){ - global $config; - $size = get_post_max(); - if(isset($config['settings']['updloadChunkSize'])){ - $chunk = $config['settings']['updloadChunkSize']; - if($size >= $chunk){ - $size = $chunk; - } - } - return $size; -} - -function check_list_dir(){ - $url = APP_HOST.'lib/core/'; - $find = "Application.class.php"; - - @ini_set('default_socket_timeout',1); - $context = stream_context_create(array('http'=>array('method'=>"GET",'timeout'=>1))); - $str = @file_get_contents($url,false,$context); - if(stripos($str,$find) === false){//not find;ok success - return true; - }else{ - return false; - } -} -function php_env_check(){ - $error = ''; - if(!function_exists('iconv')) $error.= '<li>'.LNG('php_env_error').' iconv</li>'; - if(!function_exists('json_encode')) $error.= '<li>'.LNG('php_env_error').' json</li>'; - if(!function_exists('curl_init')) $error.= '<li>'.LNG('php_env_error').' curl</li>'; - if(!function_exists('mb_convert_encoding')) $error.= '<li>'.LNG('php_env_error').' mb_string</li>'; - if(!function_exists('file_get_contents')) $error.='<li>'.LNG('php_env_error').' file_get_contents</li>'; - if(!version_compare(PHP_VERSION,'5.0','>=')) $error.= '<li>'.LNG('php_env_error_version').'</li>'; - if(!check_list_dir()) $error.='<li>'.LNG('php_env_error_list_dir').'</li>'; - - $parent = get_path_father(BASIC_PATH); - $arr_check = array( - BASIC_PATH, - DATA_PATH, - DATA_PATH.'system', - DATA_PATH.'User', - DATA_PATH.'Group', - DATA_PATH.'session' - ); - foreach ($arr_check as $value) { - if(!path_writeable($value)){ - $error.= '<li>'.str_replace($parent,'',$value).'/ '.LNG('php_env_error_path').'</li>'; - } - } - if( !function_exists('imagecreatefromjpeg')|| - !function_exists('imagecreatefromgif')|| - !function_exists('imagecreatefrompng')|| - !function_exists('imagecolorallocate')){ - $error.= '<li>'.LNG('php_env_error_gd').'</li>'; - } - return $error; -} - -//提前判断版本是否一致; -function check_cache(){ - //检查是否更新失效 - $content = file_get_contents(BASIC_PATH.'config/version.php'); - $result = match($content,"'KOD_VERSION','(.*)'"); - if($result != KOD_VERSION){ - show_tips("您服务器开启了php缓存,文件更新尚未生效; - 请关闭缓存,或稍后1分钟刷新页面再试! - <a href='http://www.tuicool.com/articles/QVjeu2i' target='_blank'>了解详情</a>"); - } -} - -function init_common(){ - $GLOBALS['in'] = parse_incoming(); - if(!file_exists(DATA_PATH)){ - show_tips("data 目录不存在!\n\n(检查 DATA_PATH);"); - } - // session path create and check - $errorTips = "[Error Code:1002] 目录权限错误!请设置程序目录及所有子目录为读写状态, - linux 运行如下指令: - <pre>su -c 'setenforce 0'\nchmod -R 777 ".BASIC_PATH.'</pre>'; - if( !defined('SESSION_PATH_DEFAULT') ){ - //检查session是否存在 - if( !file_exists(KOD_SESSION) || - !file_exists(KOD_SESSION.'index.html')){ - mk_dir(KOD_SESSION); - touch(KOD_SESSION.'index.html'); - if(!file_exists(KOD_SESSION.'index.html') ){ - show_tips($errorTips); - } - } - //检查目录权限 - if( !is_writable(KOD_SESSION) || - !is_writable(KOD_SESSION.'index.html') || - !is_writable(DATA_PATH.'system/apps.php') || - !is_writable(DATA_PATH)){ - show_tips($errorTips); - } - } - - //version check update - $file = LIB_DIR.'update.php'; - if(file_exists($file)){ - //覆盖安装文件删除不了重定向问题优化 - if(!is_writable($file) ){ - show_tips($errorTips); - } - - //update; - include($file); - updateCheck($file); - - //clear - del_file($file); - if(file_exists($file)){ - show_tips($errorTips); - } - user_logout(); - } -} - -//登陆是否需要验证码 -function need_check_code(){ - $setting = $GLOBALS['config']['settingSystem']; - if( !$setting['needCheckCode'] || - !function_exists('imagecreatefromjpeg')|| - !function_exists('imagecreatefromgif')|| - !function_exists('imagecreatefrompng')|| - !function_exists('imagecolorallocate') - ){ - return false; - }else{ - return true; - } -} - -function make_path($str){ - //return md5(rand_string(30).$str.time()); - $replace = array('/','\\',':','*','?','"','<','>','|'); - return str_replace($replace, "_", $str); -} - -function init_setting(){ - $settingFile = USER_SYSTEM.'system_setting.php'; - $settingSystemDefault = $GLOBALS['config']['settingSystemDefault']; - if (!file_exists($settingFile)){ - $setting = $settingSystemDefault; - FileCache::save($settingFile,$setting); - }else{ - $setting = FileCache::load($settingFile); - } - //合并配置 - foreach ($settingSystemDefault as $key => $value) { - if(!isset($setting[$key])){ - $setting[$key] = $value; - } - } - $GLOBALS['app']->setDefaultController($setting['firstIn']); - $GLOBALS['app']->setDefaultAction('index'); - $GLOBALS['config']['settingSystem'] = $setting; - - //group_role - $roleGroupFile = USER_SYSTEM.'system_role_group.php'; - $roleGroup = $GLOBALS['config']['pathRoleGroupDefault']; - if (!file_exists($roleGroupFile)){ - FileCache::save($roleGroupFile,$roleGroup); - }else{ - $roleGroup = FileCache::load($roleGroupFile); - } - $GLOBALS['config']['pathRoleGroup'] = $roleGroup; - - if(is_array($GLOBALS['L'])){ - I18n::set($GLOBALS['L']); - } - I18n::set(array( - 'kod_name' => $GLOBALS['config']['settingSystem']['systemName'], - 'kod_name_desc' => $GLOBALS['config']['settingSystem']['systemDesc'], - )); - if(isset($GLOBALS['config']['setting_system']['system_name'])){ - I18n::set(array( - 'kod_name' => $GLOBALS['config']['setting_system']['system_name'], - 'kod_name_desc' => $GLOBALS['config']['setting_system']['system_desc'], - )); - } - define('STATIC_PATH',$GLOBALS['config']['settings']['staticPath']); -} - -function user_logout(){ - @session_destroy(); - @session_name('KOD_SESSION_SSO'); - @session_start(); - @session_destroy(); - - setcookie(SESSION_ID, '', time()-3600,'/'); - setcookie('kod_name', '', time()-3600); - setcookie('kodToken', '', time()-3600); - setcookie('X-CSRF-TOKEN','',time()-3600); - - $url = './kod_index.php?user/login'; - //之前界面维持,不是主动退出则登陆后跳转到之前页面 - if(ACT != 'logout' && count($_GET)!=0 ){ - $url .= '&link='.rawurlencode(this_url()); - } - //移动端;接口请求时退出 - if(isset($_REQUEST['HTTP_X_PLATFORM'])){ - show_json('login error!',10001); - } - header('Location:'.$url); - exit; -} - -function hash_encode($str) { - return str_replace( - base64_encode($str), - array('+','/','='), - array('_a','_b','_c') - ); -} -function hash_decode($str) { - return base64_decode( - str_replace($str,array('_a','_b','_c'),array('+','/','=')) - ); -} - -// 目录hash; -function hash_path($path,$addExt=false){ - $password = 'kodcloud'; - if(isset($GLOBALS['config']['settingSystem']['systemPassword'])){ - $password = $GLOBALS['config']['settingSystem']['systemPassword']; - } - - $pre = substr(md5($path.$password),0,8); - $result = $pre.md5($path); - if(file_exists($path)){ - $result = $pre.md5($path.filemtime($path)); - if(filesize($path) < 50*1024*1024){ - $fileMd5 = @md5_file($path); - if($fileMd5){ - $result = $fileMd5; - } - } - } - if($addExt){ - $result = $result.'.'.get_path_ext($path); - } - return $result; -} - - -function navbar_menu_add($array){ - $menu = &$GLOBALS['config']['settingSystem']['menu']; - $exist = false; - foreach ($menu as $value) { - if($value['name'] == $array['name']){ - return false; - } - } - $menu[] = $array; -} - -/** - * 检测用户是否在用户选择数据中 - * @param [type] $info 组合数据 "all:0;role:1;2;user:2;group:101,102;" - * @return [type] [description] - */ -function check_user_select($info){ - if(!is_string($info) || !$info) return true; - $valueArr = array( - "all" => "0", - "user" => array(), - "group" => array(), - "role" => array() - ); - $userTypeArr = explode(';',$info); - for($i = 0;$i< count($userTypeArr);$i++){ - $splitArr = explode(':',$userTypeArr[$i]); - if(count($splitArr) == 2){ - $valueArr[$splitArr[0]] = $splitArr[1]; - if($splitArr[0] != 'all'){ - $valueArr[$splitArr[0]] = explode(',',$splitArr[1]); - } - } - } - if(!$valueArr['user'] && !$valueArr['group'] && !$valueArr['role']){ - $valueArr['all'] = '1'; - } - if($valueArr['all'] == '1'){ - return true; - } - - $userInfo = $_SESSION['kodUser']; - if(!$userInfo){ - return false; - } - if( $valueArr['all'] == '1' || - in_array($userInfo['userID'],$valueArr['user']) || - in_array($userInfo['role'],$valueArr['role']) ){ - return true; - } - $groupArr = array_keys($userInfo['groupInfo']); - foreach ($groupArr as $id) { - if( in_array($id,$valueArr['group']) ){ - return true; - } - } - return false; -} diff --git a/plugin/document/kod/app/function/others/JSON.php b/plugin/document/kod/app/function/others/JSON.php deleted file mode 100644 index 5bbf81e26..000000000 --- a/plugin/document/kod/app/function/others/JSON.php +++ /dev/null @@ -1,788 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/** - * Converts to and from JSON format. - * - * JSON (JavaScript Object Notation) is a lightweight data-interchange - * format. It is easy for humans to read and write. It is easy for machines - * to parse and generate. It is based on a subset of the JavaScript - * Programming Language, Standard ECMA-262 3rd Edition - December 1999. - * This feature can also be found in Python. JSON is a text format that is - * completely language independent but uses conventions that are familiar - * to programmers of the C-family of languages, including C, C++, C#, Java, - * JavaScript, Perl, TCL, and many others. These properties make JSON an - * ideal data-interchange language. - * - * This package provides a simple encoder and decoder for JSON notation. It - * is intended for use with client-side Javascript applications that make - * use of HTTPRequest to perform server communication functions - data can - * be encoded into JSON notation for use in a client-side javascript, or - * decoded from incoming Javascript requests. JSON format is native to - * Javascript, and can be directly eval()'ed with no further parsing - * overhead - * - * All strings should be in ASCII or UTF-8 format! - * - * LICENSE: Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: Redistributions of source code must retain the - * above copyright notice, this list of conditions and the following - * disclaimer. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * @category - * @package Services_JSON - * @author Michal Migurski <mike-json@teczno.com> - * @author Matt Knapp <mdknapp[at]gmail[dot]com> - * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com> - * @copyright 2005 Michal Migurski - * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - */ - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_SLICE', 1); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_STR', 2); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_ARR', 3); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_OBJ', 4); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_CMT', 5); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_LOOSE_TYPE', 16); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_SUPPRESS_ERRORS', 32); - -/** - * Converts to and from JSON format. - * - * Brief example of use: - * - * <code> - * // create a new instance of Services_JSON - * $json = new Services_JSON(); - * - * // convert a complexe value to JSON notation, and send it to the browser - * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); - * $output = $json->encode($value); - * - * print($output); - * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] - * - * // accept incoming POST data, assumed to be in JSON notation - * $input = file_get_contents('php://input', 1000000); - * $value = $json->decode($input); - * </code> - */ -class Services_JSON -{ - /** - * constructs a new JSON instance - * - * @param int $use object behavior flags; combine with boolean-OR - * - * possible values: - * - SERVICES_JSON_LOOSE_TYPE: loose typing. - * "{...}" syntax creates associative arrays - * instead of objects in decode(). - * - SERVICES_JSON_SUPPRESS_ERRORS: error suppression. - * Values which can't be encoded (e.g. resources) - * appear as NULL instead of throwing errors. - * By default, a deeply-nested resource will - * bubble up with an error, so all return values - * from encode() should be checked with isError() - */ - function __construct($use = 0) - { - $this->use = $use; - } - - /** - * convert a string from one UTF-16 char to one UTF-8 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf16 UTF-16 character - * @return string UTF-8 character - * @access private - */ - function utf162utf8($utf16) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); - } - - $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); - - switch(true) { - case ((0x7F & $bytes) == $bytes): - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x7F & $bytes); - - case (0x07FF & $bytes) == $bytes: - // return a 2-byte UTF-8 character - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0xC0 | (($bytes >> 6) & 0x1F)) - . chr(0x80 | ($bytes & 0x3F)); - - case (0xFFFF & $bytes) == $bytes: - // return a 3-byte UTF-8 character - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0xE0 | (($bytes >> 12) & 0x0F)) - . chr(0x80 | (($bytes >> 6) & 0x3F)) - . chr(0x80 | ($bytes & 0x3F)); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * convert a string from one UTF-8 char to one UTF-16 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf8 UTF-8 character - * @return string UTF-16 character - * @access private - */ - function utf82utf16($utf8) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); - } - - switch(strlen($utf8)) { - case 1: - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return $utf8; - - case 2: - // return a UTF-16 character from a 2-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) - | (0x3F & ord($utf8{1}))); - - case 3: - // return a UTF-16 character from a 3-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) - | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) - | (0x7F & ord($utf8{2}))); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - function encode($var) - { - switch (gettype($var)) { - case 'boolean': - return $var ? 'true' : 'false'; - - case 'NULL': - return 'null'; - - case 'integer': - return (int) $var; - - case 'double': - case 'float': - return (float) $var; - - case 'string': - // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT - $ascii = ''; - $strlen_var = strlen($var); - - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ - for ($c = 0; $c < $strlen_var; ++$c) { - - $ord_var_c = ord($var{$c}); - - switch (true) { - case $ord_var_c == 0x08: - $ascii .= '\b'; - break; - case $ord_var_c == 0x09: - $ascii .= '\t'; - break; - case $ord_var_c == 0x0A: - $ascii .= '\n'; - break; - case $ord_var_c == 0x0C: - $ascii .= '\f'; - break; - case $ord_var_c == 0x0D: - $ascii .= '\r'; - break; - - case $ord_var_c == 0x22: - case $ord_var_c == 0x2F: - case $ord_var_c == 0x5C: - // double quote, slash, slosh - $ascii .= '\\'.$var{$c}; - break; - - case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): - // characters U-00000000 - U-0000007F (same as ASCII) - $ascii .= $var{$c}; - break; - - case (($ord_var_c & 0xE0) == 0xC0): - // characters U-00000080 - U-000007FF, mask 110XXXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, ord($var{$c + 1})); - $c += 1; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF0) == 0xE0): - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2})); - $c += 2; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF8) == 0xF0): - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3})); - $c += 3; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFC) == 0xF8): - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4})); - $c += 4; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFE) == 0xFC): - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4}), - ord($var{$c + 5})); - $c += 5; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - } - } - - return '"'.$ascii.'"'; - - case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ - - // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { - $properties = array_map(array($this, 'name_value'), - array_keys($var), - array_values($var)); - - foreach($properties as $property) { - if(Services_JSON::isError($property)) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - } - - // treat it like a regular array - $elements = array_map(array($this, 'encode'), $var); - - foreach($elements as $element) { - if(Services_JSON::isError($element)) { - return $element; - } - } - - return '[' . join(',', $elements) . ']'; - - case 'object': - $vars = get_object_vars($var); - - $properties = array_map(array($this, 'name_value'), - array_keys($vars), - array_values($vars)); - - foreach($properties as $property) { - if(Services_JSON::isError($property)) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - - default: - return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS) - ? 'null' - : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string"); - } - } - - /** - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - function name_value($name, $value) - { - $encoded_value = $this->encode($value); - - if(Services_JSON::isError($encoded_value)) { - return $encoded_value; - } - - return $this->encode(strval($name)) . ':' . $encoded_value; - } - - /** - * reduce a string by removing leading and trailing comments and whitespace - * - * @param $str string string value to strip of comments and whitespace - * - * @return string string value stripped of comments and whitespace - * @access private - */ - function reduce_string($str){ - $str = preg_replace(array( - - // eliminate single line comments in '// ...' form - '#^\s*//(.+)$#m', - - // eliminate multi-line comments in '/* ... */' form, at start of string - '#^\s*/\*(.+)\*/#Us', - - // eliminate multi-line comments in '/* ... */' form, at end of string - '#/\*(.+)\*/\s*$#Us' - - ), '', $str); - - // eliminate extraneous space - return trim($str); - } - - /** - * decodes a JSON string into appropriate variable - * - * @param string $str JSON-formatted string - * - * @return mixed number, boolean, string, array, or object - * corresponding to given JSON input string. - * See argument 1 to Services_JSON() above for object-output behavior. - * Note that decode() always returns strings - * in ASCII or UTF-8 format! - * @access public - */ - function decode($str) - { - $str = $this->reduce_string($str); - - switch (strtolower($str)) { - case 'true': - return true; - - case 'false': - return false; - - case 'null': - return null; - - default: - $m = array(); - - if (is_numeric($str)) { - // Lookie-loo, it's a number - - // This would work on its own, but I'm trying to be - // good about returning integers where appropriate: - // return (float)$str; - - // Return float or int, as appropriate - return ((float)$str == (integer)$str) - ? (integer)$str - : (float)$str; - - } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { - // STRINGS RETURNED IN UTF-8 FORMAT - $delim = substr($str, 0, 1); - $chrs = substr($str, 1, -1); - $utf8 = ''; - $strlen_chrs = strlen($chrs); - - for ($c = 0; $c < $strlen_chrs; ++$c) { - - $substr_chrs_c_2 = substr($chrs, $c, 2); - $ord_chrs_c = ord($chrs{$c}); - - switch (true) { - case $substr_chrs_c_2 == '\b': - $utf8 .= chr(0x08); - ++$c; - break; - case $substr_chrs_c_2 == '\t': - $utf8 .= chr(0x09); - ++$c; - break; - case $substr_chrs_c_2 == '\n': - $utf8 .= chr(0x0A); - ++$c; - break; - case $substr_chrs_c_2 == '\f': - $utf8 .= chr(0x0C); - ++$c; - break; - case $substr_chrs_c_2 == '\r': - $utf8 .= chr(0x0D); - ++$c; - break; - - case $substr_chrs_c_2 == '\\"': - case $substr_chrs_c_2 == '\\\'': - case $substr_chrs_c_2 == '\\\\': - case $substr_chrs_c_2 == '\\/': - if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || - ($delim == "'" && $substr_chrs_c_2 != '\\"')) { - $utf8 .= $chrs{++$c}; - } - break; - - case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): - // single, escaped unicode character - $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) - . chr(hexdec(substr($chrs, ($c + 4), 2))); - $utf8 .= $this->utf162utf8($utf16); - $c += 5; - break; - - case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): - $utf8 .= $chrs{$c}; - break; - - case ($ord_chrs_c & 0xE0) == 0xC0: - // characters U-00000080 - U-000007FF, mask 110XXXXX - //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 2); - ++$c; - break; - - case ($ord_chrs_c & 0xF0) == 0xE0: - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 3); - $c += 2; - break; - - case ($ord_chrs_c & 0xF8) == 0xF0: - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 4); - $c += 3; - break; - - case ($ord_chrs_c & 0xFC) == 0xF8: - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 5); - $c += 4; - break; - - case ($ord_chrs_c & 0xFE) == 0xFC: - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 6); - $c += 5; - break; - - } - - } - - return $utf8; - - } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { - // array, or object notation - - if ($str{0} == '[') { - $stk = array(SERVICES_JSON_IN_ARR); - $arr = array(); - } else { - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $stk = array(SERVICES_JSON_IN_OBJ); - $obj = array(); - } else { - $stk = array(SERVICES_JSON_IN_OBJ); - $obj = new stdClass(); - } - } - - array_push($stk, array('what' => SERVICES_JSON_SLICE, - 'where' => 0, - 'delim' => false)); - - $chrs = substr($str, 1, -1); - $chrs = $this->reduce_string($chrs); - - if ($chrs == '') { - if (reset($stk) == SERVICES_JSON_IN_ARR) { - return $arr; - - } else { - return $obj; - - } - } - - //print("\nparsing {$chrs}\n"); - - $strlen_chrs = strlen($chrs); - - for ($c = 0; $c <= $strlen_chrs; ++$c) { - - $top = end($stk); - $substr_chrs_c_2 = substr($chrs, $c, 2); - - if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { - // found a comma that is not inside a string, array, etc., - // OR we've reached the end of the character list - $slice = substr($chrs, $top['where'], ($c - $top['where'])); - array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); - //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - if (reset($stk) == SERVICES_JSON_IN_ARR) { - // we are in an array, so just push an element onto the stack - array_push($arr, $this->decode($slice)); - - } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { - // we are in an object, so figure - // out the property name and set an - // element in an associative array, - // for now - $parts = array(); - - if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { - // "name":value pair - $key = $this->decode($parts[1]); - $val = $this->decode($parts[2]); - - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $obj[$key] = $val; - } else { - $obj->$key = $val; - } - } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { - // name:value pair, where name is unquoted - $key = $parts[1]; - $val = $this->decode($parts[2]); - - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $obj[$key] = $val; - } else { - $obj->$key = $val; - } - } - - } - - } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { - // found a quote, and we are not inside a string - array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); - //print("Found start of string at {$c}\n"); - - } elseif (($chrs{$c} == $top['delim']) && - ($top['what'] == SERVICES_JSON_IN_STR) && - ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) { - // found a quote, we're in a string, and it's not escaped - // we know that it's not escaped becase there is _not_ an - // odd number of backslashes at the end of the string so far - array_pop($stk); - //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); - - } elseif (($chrs{$c} == '[') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a left-bracket, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); - //print("Found start of array at {$c}\n"); - - } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { - // found a right-bracket, and we're in an array - array_pop($stk); - //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } elseif (($chrs{$c} == '{') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a left-brace, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); - //print("Found start of object at {$c}\n"); - - } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { - // found a right-brace, and we're in an object - array_pop($stk); - //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } elseif (($substr_chrs_c_2 == '/*') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a comment start, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); - $c++; - //print("Found start of comment at {$c}\n"); - - } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { - // found a comment end, and we're in one now - array_pop($stk); - $c++; - - for ($i = $top['where']; $i <= $c; ++$i) - $chrs = substr_replace($chrs, ' ', $i, 1); - - //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } - - } - - if (reset($stk) == SERVICES_JSON_IN_ARR) { - return $arr; - - } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { - return $obj; - - } - } - } - } - - /** - * @todo Ultimately, this should just call PEAR::isError() - */ - function isError($data, $code = null){ - if (class_exists('pear')) { - return PEAR::isError($data, $code); - } elseif (is_object($data) && (get_class($data) == 'services_json_error' || - is_subclass_of($data, 'services_json_error'))) { - return true; - } - return false; - } -} - -if (class_exists('PEAR_Error')) { - class Services_JSON_Error extends PEAR_Error{ - function __construct($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null){ - parent::PEAR_Error($message, $code, $mode, $options, $userinfo); - } - } -} else { - class Services_JSON_Error{ - function __construct($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null){ - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/app/function/web.function.php b/plugin/document/kod/app/function/web.function.php deleted file mode 100644 index 86be0d1c9..000000000 --- a/plugin/document/kod/app/function/web.function.php +++ /dev/null @@ -1,1202 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - - -/** - * client ip address - * - * @param boolean $s_type ip类型[ip|long] - * @return string $ip - */ -function get_client_ip($b_ip = true){ - $arr_ip_header = array( - "HTTP_CLIENT_IP", - "HTTP_X_FORWARDED_FOR", - "REMOTE_ADDR", - "HTTP_CDN_SRC_IP", - "HTTP_PROXY_CLIENT_IP", - "HTTP_WL_PROXY_CLIENT_IP" - ); - $client_ip = 'unknown'; - foreach ($arr_ip_header as $key) { - if (!empty($_SERVER[$key]) && strtolower($_SERVER[$key]) != "unknown") { - $client_ip = $_SERVER[$key]; - break; - } - } - if ($pos = strpos($client_ip,',')){ - $client_ip = substr($client_ip,$pos+1); - } - return $client_ip; -} - -function get_url_link($url){ - if(!$url) return ""; - $res = parse_url($url); - $port = (empty($res["port"]) || $res["port"] == '80')?'':':'.$res["port"]; - return $res['scheme']."://".$res["host"].$port.$res['path']; -} -function get_url_root($url){ - if(!$url) return ""; - $res = parse_url($url); - $port = (empty($res["port"]) || $res["port"] == '80')?'':':'.$res["port"]; - return $res['scheme']."://".$res["host"].$port.'/'; -} -function get_url_domain($url){ - if(!$url) return ""; - $res = parse_url($url); - return $res["host"]; -} -function get_url_scheme($url){ - if(!$url) return ""; - $res = parse_url($url); - return $res['scheme']; -} - -function http_type(){ - if( (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || - (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || - $_SERVER['SERVER_PORT'] === 443 - ){ - return 'https'; - } - return 'http'; -} - -function get_host() { - //兼容子目录反向代理:只能是前端js通过cookie传入到后端进行处理 - if(defined('GLOBAL_DEBUG') && isset($_COOKIE['HOST']) && isset($_COOKIE['APP_HOST'])){ - return $_COOKIE['HOST']; - } - $protocol = http_type().'://'; - $url_host = $_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80' ? '' : ':'.$_SERVER['SERVER_PORT']); - $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $url_host; - $host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $host;//proxy - return $protocol.$host; -} -// current request url -function this_url(){ - $url = rtrim(get_host(),'/').'/'.ltrim($_SERVER['REQUEST_URI'],'/'); - return $url; -} - -//解决部分主机不兼容问题 -function webroot_path($basic_path){ - $webRoot = str_replace($_SERVER['SCRIPT_NAME'],'',$_SERVER['SCRIPT_FILENAME']); - $webRoot = rtrim(str_replace(array('\\','\/\/','\\\\'),'/',$webRoot),'/').'/'; - if( substr($basic_path,0,strlen($webRoot)) == $webRoot ){ - return $webRoot; - } - - $webRoot = $_SERVER['DOCUMENT_ROOT']; - $webRoot = rtrim(str_replace(array('\\','\/\/','\\\\'),'/',$webRoot),'/').'/'; - if( substr($basic_path,0,strlen($webRoot)) == $webRoot ){ - return $webRoot; - } - return $basic_path; -} - -function ua_has($str){ - if(!isset($_SERVER['HTTP_USER_AGENT'])){ - return false; - } - if(strpos($_SERVER['HTTP_USER_AGENT'],$str) ){ - return true; - } - return false; -} -function is_wap(){ - if(!isset($_SERVER['HTTP_USER_AGENT'])){ - return false; - } - if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom|miui)/i', - strtolower($_SERVER['HTTP_USER_AGENT']))){ - return true; - } - if((isset($_SERVER['HTTP_ACCEPT'])) && - (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false)){ - return true; - } - return false; -} - -/** - * 终止并完成http请求;客户端终止等待完成请求 - * 后续代码可以继续运行;例如日志、统计等代码;后续输出将不再生效; - */ -function http_close(){ - ignore_timeout(0); - if(function_exists('fastcgi_finish_request')) { - fastcgi_finish_request(); - } else { - header("Connection: close"); - header("Content-Length: ".ob_get_length()); - ob_start(); - echo str_pad('',1024*5); - ob_end_flush(); - flush(); - } -} - -function parse_headers($raw_headers){ - $headers = array(); - $key = ''; - foreach (explode("\n", $raw_headers) as $h) { - $h = explode(':', $h, 2); - if (isset($h[1])) { - if ( ! isset($headers[$h[0]])) { - $headers[$h[0]] = trim($h[1]); - } elseif (is_array($headers[$h[0]])) { - $headers[$h[0]] = array_merge($headers[$h[0]], array(trim($h[1])) ); - } else { - $headers[$h[0]] = array_merge(array($headers[$h[0]]), array(trim($h[1])) ); - } - $key = $h[0]; - } else { - if (substr($h[0], 0, 1) === "\t") { - $headers[$key] .= "\r\n\t" . trim($h[0]); - } elseif ( ! $key) { - $headers[0] = trim($h[0]); - } - trim($h[0]); - } - } - return $headers; -} - -//多人同时上传同一个文件;或上传到多个服务; -$curlCurrentFile = false; -function curl_progress_bind($file,$uuid='',$download=false){ - if(!$GLOBALS['curlCurrentFile']){ - $cacheFile = TEMP_PATH.'/curlProgress/'.md5($file.$uuid).'.log'; - mk_dir(get_path_father($cacheFile)); - @touch($cacheFile); - if(!file_exists($cacheFile)){ - return; - } - $GLOBALS['curlCurrentFile'] = array( - 'path' => $file, - 'uuid' => $uuid, - 'time' => 0, - 'setNum' => 0, - 'cacheFile' => $cacheFile, - 'download' => $download - ); - } - curl_progress_set(false,0,0,0,0); -} -function curl_progress_set(){ - $fileInfo = $GLOBALS['curlCurrentFile']; - $file = $fileInfo['path']; - $cacheFile = $fileInfo['cacheFile']; - if( !is_array($fileInfo) || - mtime() - $fileInfo['time'] <= 0.3){//每300ms做一次记录 - return; - } - //进度文件被删除则终止传输; - clearstatcache(); - if( !file_exists($cacheFile) || - !file_exists($file) ){ - exit; - } - - $GLOBALS['curlCurrentFile']['time'] = mtime(); - $GLOBALS['curlCurrentFile']['setNum'] += 1; - $args = func_get_args(); - if (is_resource($args[0])) {// php 5.5 - array_shift($args); - } - $downTotal = $args[0]; - $downSize = $args[1]; - $upTotal = $args[2]; - $upSize = $args[3]; - - //默认上传 - $size = @filesize($file); - $sizeSuccess = $upSize; - if($fileInfo['download']){ - $size = $downTotal; - $sizeSuccess = $downSize; - } - $json = array( - 'name' => substr(rawurlencode(get_path_this($file)),-10), - 'taskUuid' => $fileInfo['uuid'], - 'type' => $fileInfo['download']?'fileDownload':'fileUpload', - 'timeStart' => time(), - - 'sizeTotal' => $size, - 'sizeSuccess' => $sizeSuccess, - 'progress' => 0, - 'timeUse' => 0, - 'timeNeed' => 0, - 'speed' => 0, - 'logList' => array() - ); - //write_log(array($args,$size,$sizeSuccess),'ttt'); - if(time() - filemtime($cacheFile) <= 10){//10s内才处理;同一个文件 - $data = @json_decode(file_get_contents($cacheFile),true); - $json = $data?$data:$json; - }else{ - del_file($cacheFile); - touch($cacheFile); - } - - //更新数据 - $logList = &$json['logList']; - if(count($logList) >=10 ){ - $logList = array_slice($logList,-10); - } - - $current = array('time'=>time(),'sizeSuccess'=>$sizeSuccess); - if(count($logList) == 0){ - $logList[] = $current; - }else{ - $last = $logList[count($logList)-1]; - if(time() == $last['time']){ - $logList[count($logList)-1] = $current; - }else{ - $logList[] = $current; - } - } - - //计算速度 - $first = $logList[0]; - $last = $logList[count($logList)-1]; - $time = $last['time'] - $first['time']; - $speed = $time?($last['sizeSuccess'] - $first['sizeSuccess'])/$time : 0; - if($speed <0 || $speed>500*1024*1024){ - $speed = 0; - } - $timeNeed = $speed ? ($size - $sizeSuccess)/$speed:0; - $progress = 0; - if($size != 0 ){ - $progress = ($sizeSuccess>=$size)?1:$sizeSuccess/$size; - } - $json['sizeTotal'] = $size; - $json['sizeSuccess'] = $sizeSuccess; - $json['progress'] = $progress; - $json['timeUse'] = time() - $json['timeStart']; - $json['timeNeed'] = intval($timeNeed); - $json['speed'] = intval($speed); - file_put_contents($cacheFile,json_encode($json)); -} -function curl_progress_get($file,$uuid=''){ - $cacheFile = TEMP_PATH.'/curlProgress/'.md5($file.$uuid).'.log'; - if(!file_exists($cacheFile) || $file == ''){ - return -1; - } - $data = @json_decode(file_get_contents($cacheFile),true); - if(is_array($data)){ - unset($data['logList']); - return $data; - } - return -3; -} - -// https://segmentfault.com/a/1190000000725185 -// http://blog.csdn.net/havedream_one/article/details/52585331 -// php7.1 curl上传中文路径文件失败问题?【暂时通过重命名方式解决】 -function url_request($url,$method='GET',$data=false,$headers=false,$options=false,$json=false,$timeout=3600){ - if(!$url){ - return array( - 'data' => 'url error! url='.$url, - 'code' => 0 - ); - } - ignore_timeout(); - $ch = curl_init(); - $upload = false; - if(is_array($data)){//上传检测并兼容 - foreach($data as $key => $value){ - if(!is_string($value) || substr($value,0,1) !== "@"){ - continue; - } - $upload = true; - $path = ltrim($value,'@'); - $filename = iconv_app(get_path_this($path)); - $mime = get_file_mime(get_path_ext($filename)); - if(isset($data['curlUploadName'])){//自定义上传文件名;临时参数 - $filename = $data['curlUploadName']; - unset($data['curlUploadName']); - } - if (class_exists('\CURLFile')){ - $data[$key] = new CURLFile(realpath($path),$mime,$filename); - }else{ - $data[$key] = "@".realpath($path).";type=".$mime.";filename=".$filename; - } - //有update且method为PUT - if($method == 'PUT'){ - curl_setopt($ch, CURLOPT_PUT,1); - curl_setopt($ch, CURLOPT_INFILE,@fopen($path,'r')); - curl_setopt($ch, CURLOPT_INFILESIZE,@filesize($path)); - } - - //上传进度记录并处理 - curl_progress_bind($path); - curl_setopt($ch, CURLOPT_NOPROGRESS, false); - curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,'curl_progress_set'); - } - } - if($upload){ - if (class_exists('\CURLFile')){ - curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); - } else { - if (defined('CURLOPT_SAFE_UPLOAD')) { - curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); - } - } - } - - // post数组或拼接的参数;不同方式服务器兼容性有所差异 - // http://blog.csdn.net/havedream_one/article/details/52585331 - // post默认用array发送;content-type为x-www-form-urlencoded时用key=1&key=2的形式 - if (is_array($data) && is_array($headers) && $method != 'DOWNLOAD'){ - foreach ($headers as $key) { - if(strstr($key,'x-www-form-urlencoded')){ - $data = http_build_query($data); - break; - } - } - } - if($method == 'GET' && $data){ - if(is_array($data)){ - $data = http_build_query($data); - } - if(strstr($url,'?')){ - $url = $url.'&'.$data; - }else{ - $url = $url.'?'.$data; - } - } - curl_setopt($ch, CURLOPT_URL,$url); - curl_setopt($ch, CURLOPT_HEADER,1); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); - curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - curl_setopt($ch, CURLINFO_HEADER_OUT, 1); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - // curl_setopt($ch, CURLOPT_SSLVERSION,1);//1|5|6; http://t.cn/RZy5nXF - curl_setopt($ch, CURLOPT_TIMEOUT,$timeout); - curl_setopt($ch, CURLOPT_REFERER,get_url_link($url)); - curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'); - if($headers){ - if(is_string($headers)){ - $headers = array($headers); - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - } - - switch ($method) { - case 'GET': - curl_setopt($ch,CURLOPT_HTTPGET,1); - break; - case 'DOWNLOAD': - //远程下载到指定文件;进度条 - $downTemp = $data.'.'.rand_string(5); - $fp = fopen ($downTemp,'w+'); - curl_progress_bind($downTemp,'',true);//下载进度 - curl_setopt($ch, CURLOPT_NOPROGRESS, false); - curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,'curl_progress_set'); - - curl_setopt($ch, CURLOPT_HTTPGET,1); - curl_setopt($ch, CURLOPT_HEADER,0);//不输出头 - curl_setopt($ch, CURLOPT_FILE, $fp); - //CURLOPT_RETURNTRANSFER 必须放在CURLOPT_FILE前面;否则出问题 - break; - case 'HEAD': - curl_setopt($ch, CURLOPT_NOBODY, true); - break; - case 'POST': - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS,$data); - break; - case 'OPTIONS': - case 'PATCH': - case 'DELETE': - case 'PUT': - curl_setopt($ch, CURLOPT_CUSTOMREQUEST,$method); - curl_setopt($ch, CURLOPT_POSTFIELDS,$data); - break; - default:break; - } - - if(!empty($options)){ - curl_setopt_array($ch, $options); - } - $response = curl_exec($ch); - $header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE); - $response_info = curl_getinfo($ch); - $http_body = substr($response, $header_size); - $http_header = substr($response, 0, $header_size); - $http_header = parse_headers($http_header); - if(is_array($http_header)){ - // $http_header['kod_add_request_url'] = $url; - } - //error - if($response_info['http_code'] == 0){ - $error_message = curl_error($ch); - if (! empty($error_message)) { - $error_message = "API call to $url failed;$error_message"; - } else { - $error_message = "API call to $url failed;maybe network error!"; - } - return array( - 'data' => $error_message, - 'code' => 0, - 'header' => $response_info, - ); - } - - curl_close($ch); - if(is_array($GLOBALS['curlCurrentFile'])){ - @unlink($GLOBALS['curlCurrentFile']['cacheFile']); - } - $success = $response_info['http_code'] >= 200 && $response_info['http_code'] <= 299; - if( $json && $success){ - $data = @json_decode($http_body,true); - if (json_last_error() == 0) { // string - $http_body = $data; - } - } - if($method == 'DOWNLOAD'){ - @fclose($fp); - @clearstatcache(); - if($success){ - move_path($downTemp,$data); - } - @unlink($downTemp); - } - - $return = array( - 'data' => $http_body, - 'status' => $success, - 'code' => $response_info['http_code'], - 'header' => $http_header, - ); - return $return; -} -function curl_get_contents($url){ - $data = url_request($url); - return $data['data']; -} - -function get_headers_curl($url,$timeout=30,$depth=0,&$headers=array()){ - if(!function_exists('curl_init')){ - return false; - } - if ($depth >= 10) return false; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL,$url); - curl_setopt($ch, CURLOPT_HEADER,true); - curl_setopt($ch, CURLOPT_NOBODY,true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT,$timeout); - curl_setopt($ch, CURLOPT_REFERER,get_url_link($url)); - curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'); - - $res = curl_exec($ch); - $res = explode("\r\n", $res); - - $location = false; - foreach ($res as $line) { - list($key, $val) = explode(": ", $line, 2); - $the_key = trim($key); - if($the_key == 'Location' || $the_key == 'location'){ - $the_key = 'Location'; - $location = trim($val); - } - if( strlen($the_key) == 0 && - strlen(trim($val)) == 0 ){ - continue; - } - if( substr($the_key,0,4) == 'HTTP' && - strlen(trim($val)) == 0 ){ - $headers[] = $the_key; - continue; - } - - if(!isset($headers[$the_key])){ - $headers[$the_key] = trim($val); - }else{ - if(is_string($headers[$the_key])){ - $temp = $headers[$the_key]; - $headers[$the_key] = array($temp); - } - $headers[$the_key][] = trim($val); - } - } - if($location !== false){ - $depth++; - get_headers_curl($location,$timeout,$depth,$headers); - } - return count($headers)==0?false:$headers; -} - -// 防止SSRF 攻击;curl,file_get_contents前检测url; -function request_url_safe($url){ - $link = trim(strtolower($url)); - $link = str_replace('\\','/',$link); - while (strstr($link,'../')) { - $link = str_replace('../', '/', $link); - } - if( substr($link,0,6) != "ftp://" && - substr($link,0,7) != "http://" && - substr($link,0,8) != "https://" ){ - return false; - } - return true; -} - -// url header data -function url_header($url){ - $header = get_headers_curl($url);//curl优先 - if(is_array($header)){ - $header['ACTION_BY'] = 'get_headers_curl'; - }else{ - $header = @get_headers($url,true); - } - if (!$header) return false; - - //加入小写header值;兼容各种不统一的情况 - $header['———'] = '————————————';//分隔 - foreach ($header as $key => $value) { - $header[strtolower($key)] = $value; - } - $checkArr = array( - 'content-length' => 0, - 'location' => $url,//301调整 - 'content-disposition' => '', - ); - //处理多次跳转的情况 - foreach ($checkArr as $key=>$val) { - if(isset($header[$key])){ - $checkArr[$key] = $header[$key]; - if(is_array($header[$key]) && count($header[$key])>0){ - $checkArr[$key] = $header[$key][count($header[$key])-1]; - } - } - } - $name = $checkArr['content-disposition']; - $length = $checkArr['content-length']; - $fileUrl= $checkArr['location']; - if($name){ - preg_match('/filename\s*=\s*"*(.*)"*?/',$name,$match); - if(count($match) == 2){ - $name = $match[1]; - }else{ - $name = ''; - } - } - if(!$name){ - $name = get_path_this($fileUrl); - if (strstr($name,'=')) $name = substr($name,strrpos($name,'=')+1); - if (!$name) $name = 'file.data'; - } - if(isset($header['x-outfilename'])){ - $name = $header['x-outfilename']; - } - $name = rawurldecode(trim($name,'"')); - $name = str_replace(array('/','\\'),'-',$name);//safe; - $supportRange = isset($header["accept-ranges"])?true:false; - if(!request_url_safe($fileUrl)){ - $fileUrl = ""; - } - $result = array( - 'url' => $fileUrl, - 'length' => $length, - 'name' => $name, - 'supportRange' => $supportRange && ($length!=0), - 'all' => $header, - ); - if(!function_exists('curl_init')){ - $result['supportRange'] = false; - } - //pr($url,$result); - return $result; -} - - -// check url if can use -function check_url($url){ - $array = get_headers($url,true); - $error = array('/404/','/403/','/500/'); - foreach ($error as $value) { - if (preg_match($value, $array[0])) { - return false; - } - } - return true; -} - -// refer URL -function refer_url(){ - return isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ''; -} - -function select_var($array){ - if (!is_array($array)) return -1; - ksort($array); - $chosen = -1; - foreach ($array as $k => $v) { - if (isset($v)) { - $chosen = $v; - break; - } - } - return $chosen; -} - -/** - * 解析url获得url参数 - * @param $query - * @return array array - */ -function parse_url_query($url){ - $arr = parse_url($url); - $queryParts = explode('&',$arr['query']); - $params = array(); - foreach ($queryParts as $param) { - $item = explode('=', $param); - $params[$item[0]] = $item[1]; - } - return $params; -} - -function stripslashes_deep($value){ - $value = is_array($value) ? array_map('stripslashes_deep', $value) : (isset($value) ? stripslashes($value) : null); - return $value; -} - -function parse_url_route(){ - $param = str_replace($_SERVER['SCRIPT_NAME'],"",$_SERVER['SCRIPT_NAME']); - if($param && substr($param,0,1) == '/'){ - $arr = explode('&',$param); - $arr[0] = ltrim($arr[0],'/'); - foreach ($arr as $cell) { - $cell = explode('=',$cell); - if(is_array($cell)){ - if(!isset($cell[1])){ - $cell[1] = ''; - } - $_GET[$cell[0]] = $cell[1]; - $_REQUEST[$cell[0]] = $cell[1]; - } - } - } -} - - -/** - * GET/POST数据统一入口 - * 将GET和POST的数据进行过滤,去掉非法字符以及hacker code,返回一个数组 - * 注意如果GET和POST有相同的Key,POST优先 - * - * @return array $_GET和$_POST数据过滤处理后的值 - */ -function parse_incoming(){ - parse_url_route(); - global $_GET, $_POST,$_COOKIE; - - $_COOKIE = stripslashes_deep($_COOKIE); - $_GET = stripslashes_deep($_GET); - $_POST = stripslashes_deep($_POST); - $return = array(); - $return = array_merge($_GET,$_POST); - $remote = array_get_index($return,0); - $remote = explode('/',trim($remote[0],'/')); - $return['URLremote'] = $remote; - return $return; -} - -function db_escape($str) { - $str = addslashes($str); - $str = str_replace(array('_', '%'),array('\\_', '\\%'), $str); - return $str; -} - -/** - * 获取输入参数 支持过滤和默认值 - * 使用方法: - * <code> - * in('id',0); 获取id参数 自动判断get或者post - * in('post.name','','htmlspecialchars'); 获取$_POST['name'] - * in('get.'); 获取$_GET - * </code> - * @param string $name 变量的名称 支持指定类型 - * @param mixed $default 不存在的时候默认值 - * @param mixed $filter 参数过滤方法 - * @return mixed - */ -function in($name,$default='',$filter=null) { - $default_filter = 'htmlspecialchars,db_escape'; - if(strpos($name,'.')) { // 指定参数来源 - list($method,$name) = explode('.',$name,2); - }else{ // 默认为自动判断 - $method = 'request'; - } - switch(strtolower($method)) { - case 'get' : $input =& $_GET;break; - case 'post' : $input =& $_POST;break; - case 'request' : $input =& $_REQUEST; break; - - case 'put' : parse_str(file_get_contents('php://input'), $input);break; - case 'session' : $input =& $_SESSION; break; - case 'cookie' : $input =& $_COOKIE; break; - case 'server' : $input =& $_SERVER; break; - case 'globals' : $input =& $GLOBALS; break; - default:return NULL; - } - $filters = isset($filter)?$filter:$default_filter; - if($filters) { - $filters = explode(',',$filters); - } - if(empty($name)) { // 获取全部变量 - $data = $input; - foreach($filters as $filter){ - $data = array_map($filter,$data); // 参数过滤 - } - }elseif(isset($input[$name])) { // 取值操作 - $data = $input[$name]; - foreach($filters as $filter){ - if(function_exists($filter)) { - $data = is_array($data)?array_map($filter,$data):$filter($data); // 参数过滤 - }else{ - $data = filter_var($data,is_int($filter)?$filter:filter_id($filter)); - if(false === $data) { - return isset($default)?$default:NULL; - } - } - } - }else{ // 变量默认值 - $data = isset($default)?$default:NULL; - } - return $data; -} - - -function url2absolute($index_url, $preg_url){ - if (preg_match('/[a-zA-Z]*\:\/\//', $preg_url)) return $preg_url; - preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url, $match); - $index_url_temp = $match[1]; - - foreach(explode('/', $preg_url) as $key => $var) { - if ($key == 0 && $var == '') { - preg_match('/([a-zA-Z]*\:\/\/[^\/]*)\//', $index_url, $match); - $index_url_temp = $match[1] . $preg_url; - break; - } - if ($var == '..') { - preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url_temp, $match); - $index_url_temp = $match[1]; - } elseif ($var != '.') $index_url_temp .= '/' . $var; - } - return $index_url_temp; -} - -// 输出js -function exec_js($js){ - echo "<script language='JavaScript'>\n" . $js . "</script>\n"; -} -// 禁止缓存 -function no_cache(){ - header("Pragma:no-cache\r\n"); - header("Cache-Control:no-cache\r\n"); - header("Expires:0\r\n"); -} -// 生成javascript转向 -function go_url($url, $msg = ''){ - header("Content-type: text/html; charset=utf-8\r\n"); - echo "<script type='text/javascript'>\n"; - echo "window.location.href='$url';"; - echo "</script>\n"; - exit; -} - -function send_http_status($i_status, $s_message = ''){ - $a_status = array( - // Informational 1xx - 100 => 'Continue', - 101 => 'Switching Protocols', - // Success 2xx - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - // Redirection 3xx - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', // 1.1 - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', // 306 is deprecated but reserved - 307 => 'Temporary Redirect', - // Client Error 4xx - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - // Server Error 5xx - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 509 => 'Bandwidth Limit Exceeded' - ); - - if (array_key_exists($i_status, $a_status)) { - header('HTTP/1.1 ' . $i_status . ' ' . $a_status[$i_status]); - } - if ($s_message) { - echo $s_message; - exit(); - } -} - -//是否是windows -function client_is_windows(){ - static $is_windows; - if(!is_array($is_windows)){ - $is_windows = array(0); - $os = get_os(); - if(strstr($os,'Windows')){ - $is_windows = array(1); - } - } - return $is_windows[0]; -} - -// 获取操作系统信息 TODO -function get_os (){ - $agent = $_SERVER['HTTP_USER_AGENT']; - $preg_find = array( - "Windows 95" =>array('win','95'), - "Windows ME" =>array('win 9x','4.90'), - "Windows 98" =>array('win','98'), - "Windows 2000" =>array('win','nt 5.0',), - "Windows XP" =>array('win','nt 5.1'), - "Windows Vista" =>array('win','nt 6.0'), - "Windows 7" =>array('win','nt 6.1'), - "Windows 32" =>array('win','32'), - "Windows NT" =>array('win','nt'), - "Mac OS" =>array('Mac OS'), - "Linux" =>array('linux'), - "Unix" =>array('unix'), - "SunOS" =>array('sun','os'), - "IBM OS/2" =>array('ibm','os'), - "Macintosh" =>array('Mac','PC'), - "PowerPC" =>array('PowerPC'), - "AIX" =>array('AIX'), - "HPUX" =>array('HPUX'), - "NetBSD" =>array('NetBSD'), - "BSD" =>array('BSD'), - "OSF1" =>array('OSF1'), - "IRIX" =>array('IRIX'), - "FreeBSD" =>array('FreeBSD'), - ); - - $os=''; - foreach ($preg_find as $key => $value) { - if(count($value)==1 && stripos($agent,$value[0])){ - $os=$key;break; - }else if(count($value)==2 - && stripos($agent,$value[0]) - && stripos($agent,$value[1]) - ){ - $os=$key;break; - } - } - if ($os=='') {$os = "Unknown"; } - return $os; -} - -// 浏览器是否直接打开 -function mime_support($mime){ - $arr_start = array( - "text/", - "image/", - "audio/", - "video/", - "message/", - ); - $arr_mime = array( - "application/hta", - "application/javascript", - "application/json", - "application/x-latex", - "application/pdf", - "application/x-shockwave-flash", - "application/x-tex", - "application/x-texinfo" - ); - if(in_array($mime,$arr_mime)){ - return true; - } - foreach ($arr_start as $val) { - if(substr($mime,0,strlen($val)) == $val){ - return true; - } - } - return false; -} - -//根据扩展名获取mime -function get_file_mime($ext){ - $mimetypes = array( - "323" => "text/h323", - "acx" => "application/internet-property-stream", - "ai" => "application/postscript", - "aif" => "audio/x-aiff", - "aifc" => "audio/x-aiff", - "aiff" => "audio/x-aiff", - "asf" => "video/x-ms-asf", - "asr" => "video/x-ms-asf", - "asx" => "video/x-ms-asf", - "au" => "audio/basic", - "avi" => "video/x-msvideo", - "axs" => "application/olescript", - "bas" => "text/plain", - "bcpio" => "application/x-bcpio", - "bin" => "application/octet-stream", - "bmp" => "image/bmp", - "c" => "text/plain", - "cat" => "application/vnd.ms-pkiseccat", - "cdf" => "application/x-cdf", - "cer" => "application/x-x509-ca-cert", - "class" => "application/octet-stream", - "clp" => "application/x-msclip", - "cmx" => "image/x-cmx", - "cod" => "image/cis-cod", - "cpio" => "application/x-cpio", - "crd" => "application/x-mscardfile", - "crl" => "application/pkix-crl", - "crt" => "application/x-x509-ca-cert", - "csh" => "application/x-csh", - "css" => "text/css", - "dcr" => "application/x-director", - "der" => "application/x-x509-ca-cert", - "dir" => "application/x-director", - "dll" => "application/x-msdownload", - "dms" => "application/octet-stream", - "doc" => "application/msword", - "docx" => "application/msword", - "dot" => "application/msword", - "dvi" => "application/x-dvi", - "dxr" => "application/x-director", - "eps" => "application/postscript", - "etx" => "text/x-setext", - "evy" => "application/envoy", - "exe" => "application/octet-stream", - "fif" => "application/fractals", - "flr" => "x-world/x-vrml", - "flv" => "video/x-flv", - "f4v" => "application/octet-stream", - "gif" => "image/gif", - "gtar" => "application/x-gtar", - "gz" => "application/x-gzip", - "h" => "text/plain", - "hdf" => "application/x-hdf", - "hlp" => "application/winhlp", - "hqx" => "application/mac-binhex40", - "hta" => "application/hta", - "htc" => "text/x-component", - "htm" => "text/html", - "html" => "text/html", - "htt" => "text/webviewhtml", - "ico" => "image/x-icon", - "ief" => "image/ief", - "iii" => "application/x-iphone", - "ins" => "application/x-internet-signup", - "isp" => "application/x-internet-signup", - "jfif" => "image/pipeg", - "jpe" => "image/jpeg", - "jpeg" => "image/jpeg", - "jpg" => "image/jpeg", - "js" => "application/javascript", - "json" => "application/json", - "latex" => "application/x-latex", - "lha" => "application/octet-stream", - "lsf" => "video/x-la-asf", - "lsx" => "video/x-la-asf", - "lzh" => "application/octet-stream", - "m13" => "application/x-msmediaview", - "m14" => "application/x-msmediaview", - "m3u" => "audio/x-mpegurl", - 'm4a' => "audio/mp4", - 'm4v' => "audio/mp4", - "man" => "application/x-troff-man", - "mdb" => "application/x-msaccess", - "me" => "application/x-troff-me", - "mht" => "message/rfc822", - "mhtml" => "message/rfc822", - "mid" => "audio/mid", - "mny" => "application/x-msmoney", - "mov" => "video/quicktime", - "movie" => "video/x-sgi-movie", - "mp2" => "video/mpeg", - "mp3" => "audio/mpeg", - "mp4" => "video/mp4", - "mp4v" => "video/mp4", - "mpa" => "video/mpeg", - "mpe" => "video/mpeg", - "mpeg" => "video/mpeg", - "mpg" => "video/mpeg", - "mpp" => "application/vnd.ms-project", - "mpv2" => "video/mpeg", - "ms" => "application/x-troff-ms", - "mvb" => "application/x-msmediaview", - "nws" => "message/rfc822", - "oda" => "application/oda", - "ogg" => "audio/ogg", - "oga" => "audio/ogg", - "ogv" => "audio/ogg", - "p10" => "application/pkcs10", - "p12" => "application/x-pkcs12", - "p7b" => "application/x-pkcs7-certificates", - "p7c" => "application/x-pkcs7-mime", - "p7m" => "application/x-pkcs7-mime", - "p7r" => "application/x-pkcs7-certreqresp", - "p7s" => "application/x-pkcs7-signature", - "pbm" => "image/x-portable-bitmap", - "pdf" => "application/pdf", - "pfx" => "application/x-pkcs12", - "pgm" => "image/x-portable-graymap", - "pko" => "application/ynd.ms-pkipko", - "pma" => "application/x-perfmon", - "pmc" => "application/x-perfmon", - "pml" => "application/x-perfmon", - "pmr" => "application/x-perfmon", - "pmw" => "application/x-perfmon", - "png" => "image/png", - "pnm" => "image/x-portable-anymap", - "pot," => "application/vnd.ms-powerpoint", - "ppm" => "image/x-portable-pixmap", - "pps" => "application/vnd.ms-powerpoint", - "ppt" => "application/vnd.ms-powerpoint", - "pptx" => "application/vnd.ms-powerpoint", - "prf" => "application/pics-rules", - "ps" => "application/postscript", - "pub" => "application/x-mspublisher", - "qt" => "video/quicktime", - "ra" => "audio/x-pn-realaudio", - "ram" => "audio/x-pn-realaudio", - "ras" => "image/x-cmu-raster", - "rgb" => "image/x-rgb", - "rmi" => "audio/mid", - "roff" => "application/x-troff", - "rtf" => "application/rtf", - "rtx" => "text/richtext", - "scd" => "application/x-msschedule", - "sct" => "text/scriptlet", - "setpay" => "application/set-payment-initiation", - "setreg" => "application/set-registration-initiation", - "sh" => "application/x-sh", - "shar" => "application/x-shar", - "sit" => "application/x-stuffit", - "snd" => "audio/basic", - "spc" => "application/x-pkcs7-certificates", - "spl" => "application/futuresplash", - "src" => "application/x-wais-source", - "sst" => "application/vnd.ms-pkicertstore", - "stl" => "application/vnd.ms-pkistl", - "stm" => "text/html", - "svg" => "image/svg+xml", - "sv4cpio" => "application/x-sv4cpio", - "sv4crc" => "application/x-sv4crc", - "swf" => "application/x-shockwave-flash", - "t" => "application/x-troff", - "tar" => "application/x-tar", - "tcl" => "application/x-tcl", - "tex" => "application/x-tex", - "texi" => "application/x-texinfo", - "texinfo" => "application/x-texinfo", - "tgz" => "application/x-compressed", - "tif" => "image/tiff", - "tiff" => "image/tiff", - "tr" => "application/x-troff", - "trm" => "application/x-msterminal", - "tsv" => "text/tab-separated-values", - "txt" => "text/plain", - "uls" => "text/iuls", - "ustar" => "application/x-ustar", - "vcf" => "text/x-vcard", - "vrml" => "x-world/x-vrml", - "wav" => "audio/wav", - "wcm" => "application/vnd.ms-works", - "wdb" => "application/vnd.ms-works", - "webm" => "video/webm", - "webmv" => "video/webm", - "wks" => "application/vnd.ms-works", - "wmf" => "application/x-msmetafile", - "wps" => "application/vnd.ms-works", - "wri" => "application/x-mswrite", - "wrl" => "x-world/x-vrml", - "wrz" => "x-world/x-vrml", - "xaf" => "x-world/x-vrml", - "xbm" => "image/x-xbitmap", - "xla" => "application/vnd.ms-excel", - "xlc" => "application/vnd.ms-excel", - "xlm" => "application/vnd.ms-excel", - "xls" => "application/vnd.ms-excel", - "xlsx" => "application/vnd.ms-excel", - "xlt" => "application/vnd.ms-excel", - "xlw" => "application/vnd.ms-excel", - "xof" => "x-world/x-vrml", - "xpm" => "image/x-xpixmap", - "xwd" => "image/x-xwindowdump", - "z" => "application/x-compress", - "zip" => "application/zip" - ); - - //代码 或文本浏览器输出 - $text = array('oexe','inc','inf','csv','log','asc','tsv'); - $code = array("abap","abc","as","ada","adb","htgroups","htpasswd","conf","htaccess","htgroups", - "htpasswd","asciidoc","asm","ahk","bat","cmd","c9search_results","cpp","c","cc","cxx","h","hh","hpp", - "cirru","cr","clj","cljs","CBL","COB","coffee","cf","cson","Cakefile","cfm","cs","css","curly","d", - "di","dart","diff","patch","Dockerfile","dot","dummy","dummy","e","ejs","ex","exs","elm","erl", - "hrl","frt","fs","ldr","ftl","gcode","feature",".gitignore","glsl","frag","vert","go","groovy", - "haml","hbs","handlebars","tpl","mustache","hs","hx","html","htm","xhtml","erb","rhtml","ini", - "cfg","prefs","io","jack","jade","java","js","jsm","json","jq","jsp","jsx","jl","tex","latex", - "ltx","bib","lean","hlean","less","liquid","lisp","ls","logic","lql","lsl","lua","lp","lucene", - "Makefile","GNUmakefile","makefile","OCamlMakefile","make","md","markdown","mask","matlab", - "mel","mc","mush","mysql","nc","nix","m","mm","ml","mli","pas","p","pl","pm","pgsql","php","phtml", - "ps1","praat","praatscript","psc","proc","plg","prolog","properties","proto","py","r","Rd", - "Rhtml","rb","ru","gemspec","rake","Guardfile","Rakefile","Gemfile","rs","sass","scad","scala", - "scm","rkt","scss","sh","bash",".bashrc","sjs","smarty","tpl","snippets","soy","space","sql", - "styl","stylus","svg","tcl","tex","txt","textile","toml","twig","ts","typescript","str","vala", - "vbs","vb","vm","v","vh","sv","svh","vhd","vhdl","xml","rdf","rss","log", - "wsdl","xslt","atom","mathml","mml","xul","xbl","xaml","xq","yaml","yml","htm", - "xib","storyboard","plist","csproj"); - if (array_key_exists($ext,$mimetypes)){ - return $mimetypes[$ext]; - }else{ - if(in_array($ext,$text) || in_array($ext,$code)){ - return "text/plain"; - } - return 'application/octet-stream'; - } -} diff --git a/plugin/document/kod/app/kod/Downloader.class.php b/plugin/document/kod/app/kod/Downloader.class.php deleted file mode 100644 index f4fbf48b4..000000000 --- a/plugin/document/kod/app/kod/Downloader.class.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class Downloader { - static function start($url,$saveFile,$timeout = 10) { - $dataFile = $saveFile . '.download.cfg'; - $saveTemp = $saveFile . '.downloading'; - - //header:{'url','length','name','supportRange'} - if(is_array($url)){ - $fileHeader = $url; - }else{ - $fileHeader = url_header($url); - } - $url = $fileHeader['url']; - if(!$url){ - return array('code'=>false,'data'=>'url error!'); - } - //默认下载方式if not support range - if(!$fileHeader['supportRange'] || - $fileHeader['length'] == 0 ){ - @unlink($saveTemp);@unlink($saveFile); - $result = self::fileDownloadFopen($url,$saveFile,$fileHeader['length']); - if($result['code']) { - return $result; - }else{ - @unlink($saveTemp);@unlink($saveFile); - $result = self::fileDownloadCurl($url,$saveFile,false,0,$fileHeader['length']); - @unlink($saveTemp);@unlink($saveFile); - return $result; - } - } - - $existsLength = is_file($saveTemp) ? filesize($saveTemp) : 0; - $contentLength = intval($fileHeader['length']); - if( file_exists($saveTemp) && - time() - filemtime($saveTemp) < 3) {//has Changed in 3s,is downloading - return array('code'=>false,'data'=>'downloading'); - } - - $existsData = array(); - if(is_file($dataFile)){ - $tempData = file_get_contents($dataFile); - $existsData = json_decode($tempData, 1); - } - // exist and is the same file; - if( file_exists($saveFile) && $contentLength == filesize($saveFile)){ - @unlink($saveTemp); - @unlink($dataFile); - return array('code'=>true,'data'=>'exist'); - } - - // check file is expire - if ($existsData['length'] != $contentLength) { - $existsData = array('length' => $contentLength); - } - if($existsLength > $contentLength){ - @unlink($saveTemp); - } - // write exists data - file_put_contents($dataFile, json_encode($existsData)); - $result = self::fileDownloadCurl($url,$saveFile,true,$existsLength,$contentLength); - if($result['code']){ - @unlink($dataFile); - } - return $result; - } - - // fopen then download - static function fileDownloadFopen($url, $fileName,$headerSize=0){ - @ini_set('user_agent','Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'); - - $fileTemp = $fileName.'.downloading'; - @set_time_limit(0); - @unlink($fileTemp); - if ($fp = @fopen ($url, "rb")){ - if(!$downloadFp = @fopen($fileTemp, "wb")){ - return array('code'=>false,'data'=>'open_downloading_error'); - } - while(!feof($fp)){ - if(!file_exists($fileTemp)){//删除目标文件;则终止下载 - fclose($downloadFp); - return array('code'=>false,'data'=>'stoped'); - } - //对于部分fp不结束的通过文件大小判断 - clearstatcache(); - if( $headerSize>0 && - $headerSize==get_filesize(iconv_system($fileTemp)) - ){ - break; - } - fwrite($downloadFp, fread($fp, 1024 * 8 ), 1024 * 8); - } - //下载完成,重命名临时文件到目标文件 - fclose($downloadFp); - fclose($fp); - - $filesize = get_filesize(iconv_system($fileTemp)); - if($headerSize != 0 && $filesize != $headerSize){ - return array('code'=>false,'data'=>'file size error'); - } - self::checkGzip($fileTemp); - if(!@rename($fileTemp,$fileName)){ - usleep(round(rand(0,1000)*50));//0.01~10ms - @unlink($fileName); - $res = @rename($fileTemp,$fileName); - if(!$res){ - return array('code'=>false,'data'=>'rename error![open]'); - } - } - return array('code'=>true,'data'=>'success'); - }else{ - return array('code'=>false,'data'=>'url_open_error'); - } - } - - // curl 方式下载 - // 断点续传 http://www.linuxidc.com/Linux/2014-10/107508.htm - static function fileDownloadCurl($url, $fileName,$supportRange=false,$existsLength=0,$length=0){ - $fileTemp = $fileName.'.downloading'; - @set_time_limit(0); - if ($fp = @fopen ($fileTemp, "a")){ - $ch = curl_init($url); - //断点续传 - if($supportRange){ - curl_setopt($ch, CURLOPT_RANGE, $existsLength."-"); - } - curl_setopt($ch, CURLOPT_FILE, $fp); - curl_setopt($ch, CURLOPT_REFERER,get_url_link($url)); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'); - - $res = curl_exec($ch); - curl_close($ch); - fclose($fp); - - $filesize = get_filesize(iconv_system($fileTemp)); - if($filesize < $length && $length!=0){ - return array('code'=>false,'data'=>'downloading'); - } - if($filesize > $length && $length!=0){ - //远程下载大小不匹配;则返回正在下载中,客户端重新触发下载 - return array('code'=>false,'data'=>'file size error'); - } - - if($res && filesize($fileTemp) != 0){ - self::checkGzip($fileTemp); - if(!@rename($fileTemp,$fileName)){ - @unlink($fileName); - $res = @rename($fileTemp,$fileName); - if(!$res){ - return array('code'=>false,'data'=>'rename error![curl]'); - } - } - return array('code'=>true,'data'=>'success'); - } - return array('code'=>false,'data'=>'curl exec error!'); - }else{ - return array('code'=>false,'data'=>'file create error'); - } - } - - static function checkGzip($file){ - $char = "\x1f\x8b"; - $str = file_sub_str($file,0,2); - if($char != $str) return; - - ob_start(); - readgzfile($file); - $out = ob_get_clean(); - file_put_contents($file,$out); - } -} diff --git a/plugin/document/kod/app/kod/FileCache.class.php b/plugin/document/kod/app/kod/FileCache.class.php deleted file mode 100644 index 86c1a4bff..000000000 --- a/plugin/document/kod/app/kod/FileCache.class.php +++ /dev/null @@ -1,220 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -/** -* 数据的缓存存储类;key=>value 模式;value可以是任意类型数据。 -* 完整流程测试;读取最低5000次/s 含有写的1000次/s -* get($find=null) -* 1.get(); //返回所有 -* 2.get(key); //直接通过key获取 -* 3.get(data_key,value); //搜索key为value的数据 直接返回数据不含key -* 4.get(array('key','value')); //搜索数据,符合key为指定value的所有数据;key value形式 -* -* set($find=null,$change=null) -* 1.set(string,val) //添加或更新; -* 2.set(array('key','value_find'),array('key','change_to')) //查找方式更新 多条数据 -* -* remove($find,$value) -* 1.remove(); //清空 -* 2.remove(string); //删除 eg:set('37'),删除key为37的数据 存在且删除成功则返回true -* 3.remove(array('key','value_find')); //查找方式删除;多条数据 -* reset($arr);//初始化数据 -*/ - - -define('CONFIG_EXIT', '<?php exit;?>'); -class FileCache{ - private $data; - private $file; - private $fileHash;//最后一次修改;保存时判断,如果有新修改则先读取再保存 - - function __construct($file) { - $this->file = $file; - $this->data= self::load($file); - $this->fileChangeCheck(); - } - - public function get($find=null,$value=null){ - if (is_null($find)){ - return $this->data; - }else if(is_array($find)){//查找内容数据方式获取;返回多条 - $result = array(); - foreach ($this->data as $key => $val) { - if ($val[$find[0]] == $find[1]) { - $result[$key] = $this->data[$key]; - } - } - if(count($result)!=0){ - return $result; - } - }else{//单条数据获取 - $find .= '';//字符串 - if(!is_null($value)){//通过某个key寻找单条数据 - foreach ($this->data as $key => $val) { - if ($val[$find] == $value) { - return $val; - } - } - } - if(isset($this->data[$find])){ - return $this->data[$find]; - } - } - return false; - } - - //添加或更新 - public function set($find,$value){ - $this->fileChangeCheck(); - //最后有修改则先更新本地。 - if(is_string($find)){//单条数据更新 - $this->data[$find] = $value; - }else if(is_array($find)){//查找方式更新;更新多条 - foreach ($this->data as $key => $val) { - if ($val[$find[0]] == $find[1]) { - $this->data[$key][$value[0]] = $value[1]; - } - } - }else{ - return false; - } - self::save($this->file,$this->data); - return true; - } - - //删除,查找删除 - public function remove($find){ - $this->fileChangeCheck(); - if(is_string($find)){//单条数据删除 - unset($this->data[$find]); - }else if(is_array($find)){//查找删除 - foreach ($this->data as $key => $val) { - if ($val[$find[0]] == $find[1]){ - unset($this->data[$key]); - } - } - }else{ - return false; - } - self::save($this->file,$this->data); - return true; - } - - private function fileChangeCheck(){ - if(is_null($this->fileHash)){ - $this->fileHash = @md5_file($this->file); - return; - } - //是否发生改变 - $lastHash = @md5_file($this->file); - if($lastHash != $this->fileHash){ - $this->fileHash = $lastHash; - $this->data= self::load($this->file); - } - } - - public function reset($data,$save = true){ - $this->data = $data; - if($save){ - self::save($this->file,$this->data); - } - } - - //===================================================== - public static function arrSort(&$arr,$key, $type = 'asc'){ - $keysValue = $newArray = array(); - foreach ($arr as $k => $v) { - $keysValue[$k] = $v[$key]; - } - if ($type == 'asc') { - asort($keysValue); - } else { - arsort($keysValue); - } - reset($keysValue); - foreach ($keysValue as $k => $v) { - $newArray[$k] = $arr[$k]; - } - return $newArray; - } - - public function getMaxId(){ - $minId = 100; - if(count($this->data)==0){ - return $minId;//一切从100开始 - } - $idArr = array_keys($this->data); - rsort($idArr,SORT_NUMERIC);//id从高到底 - $the_id = intval($idArr[0])+1; - if($the_id<=$minId){ - return $minId; - } - return $the_id; - } - - /** - * 加载数据;并解析成程序数据 - */ - public static function load($file){//10000次需要4s 数据量差异不大。 - if (!$file) return false; - $file = iconv_system($file); - if ( !file_exists($file) ){ - @file_put_contents($file,CONFIG_EXIT.'[]'); - chmod_path($file,0777); - return array(); - } - - $str = file_read_safe($file,10.5); - if( $str === false || $str === 0 || $str === -1){ - show_tips('[Error Code:1010] FileCache data read error!<br/>'.get_path_this($file)); - } - - if (strlen($str) == 0 || - strlen($str) == strlen(CONFIG_EXIT) ){ - @file_put_contents($file,CONFIG_EXIT.'[]'); - chmod_path($file,0777); - return array(); - } - - if($str === false || strlen($str) < strlen(CONFIG_EXIT) ){ - show_tips('[Error Code:1011] FileCache data error!<br/>'.get_path_this($file)); - } - $data= json_decode(substr($str, strlen(CONFIG_EXIT)),true); - if (is_null($data)) $data = array(); - return $data; - } - /** - * 保存数据; - */ - public static function save($file,$data){//10000次需要6s - if (!$file) return false; - $file = iconv_system($file); - if ( !file_exists($file) ){ - @file_put_contents($file,CONFIG_EXIT.'[]'); - chmod_path($file,0777); - } - - if (!path_writeable($file)) { - show_tips(BASIC_PATH."<br/>".LNG('path_can_not_write_data')); - } - if(defined('JSON_PRETTY_PRINT')){ - $jsonStr = json_encode($data,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); - }else{ - $jsonStr = json_encode($data); - } - if(is_null($jsonStr) || strlen($jsonStr) == 0){//含有二进制或非utf8字符串对应检测 - show_tips('[Error Code:1013] json_encode error!<br/>'.get_path_this($file)); - } - - $result = file_wirte_safe($file,CONFIG_EXIT.$jsonStr,10.5); - if($result === false){ - show_tips('[Error Code:1012] FileCache save error!<br/>'.get_path_this($file)); - } - return $result; - } -} diff --git a/plugin/document/kod/app/kod/Hook.class.php b/plugin/document/kod/app/kod/Hook.class.php deleted file mode 100644 index c42aa4a37..000000000 --- a/plugin/document/kod/app/kod/Hook.class.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -/** - * hook::add('function','function') - * hook::add('class:function','class.function') - * - * hook::run('class.function',param) - * hook::run('function',param) - * - */ - -class Hook{ - static private $events = array(); - static public function get($event=false){ - if(!$event){ - return self::$events; - }else{ - return self::$events[$event]; - } - } - static public function apply($action,$args=array()) { - if(!is_string($action)){ - return; - } - if(strstr($action,'.')){ - $arr = explode('.',$action); - if(count($arr) !== 2){ - return; - } - $className = $arr[0]; - $functionName = $arr[1]; - if(class_exists($className)){ - $class = new $className(); - if( method_exists($class,$functionName) ){ - //return $class -> $functionName($args); - return @call_user_func_array(array($class,$functionName), $args); - } - } - }else{ - if(function_exists($action)){ - return @call_user_func_array($action, $args); - } - } - } - - static public function bind($event,$action,$once=false) { - if(!isset(self::$events[$event])){ - self::$events[$event] = array(); - } - if(!is_array($action)){ - $action = array($action); - } - for ($i=0; $i < count($action); $i++) { - self::$events[$event][] = array( - 'action' => $action[$i], - 'once' => $once, - 'times' => 0 - ); - } - } - static public function once($event,$action) { - self::bind($event,$action,true); - } - static public function unbind($event) { - self::$events[$event] = false; - } - - //数据处理;只支持传入一个参数 - static public function filter($event,&$param) { - $result = self::trigger($event,$param); - if($result){ - $param = $result; - } - } - static public function trigger($event) { - $events = self::$events; - if( !isset($events[$event]) ){ - return; - } - $actions = $events[$event]; - $result = false; - if(is_array($actions) && count($actions) >= 1) { - $args = func_get_args(); - array_shift($args); - for ($i=0; $i < count($actions); $i++) { - $action = $actions[$i]; - if( $action['once'] && $action['times'] > 1){ - continue; - } - - if(defined("GLOBAL_DEBUG_HOOK") && GLOBAL_DEBUG_HOOK){ - write_log($event.'==>start: '.$action['action'],'hook-trigger'); - } - - self::$events[$event][$i]['times'] = $action['times'] + 1; - $res = self::apply($action['action'],$args); - - if(defined("GLOBAL_DEBUG_HOOK") && GLOBAL_DEBUG_HOOK){ - write_log($event.'==>end['.$action['times'].']: '.$action['action'],'hook-trigger'); - } - //避免循环调用 - if( $action['times'] >= 5000){ - show_json("ERROR,Too many trigger on:".$event.'==>'.$action['action'],fasle); - } - if(!is_null($res)){ - $result = $res; - } - } - } - return $result; - } -} diff --git a/plugin/document/kod/app/kod/I18n.class.php b/plugin/document/kod/app/kod/I18n.class.php deleted file mode 100644 index ffe1e01a3..000000000 --- a/plugin/document/kod/app/kod/I18n.class.php +++ /dev/null @@ -1,121 +0,0 @@ -<?php - -function LNG($key){ - if (func_num_args() == 1) { - return I18n::get($key); - } else { - $args = func_get_args(); - array_shift($args); - return vsprintf(I18n::get($key), $args); - } -} - -class I18n{ - private static $loaded = false; - private static $lang = NULL; - public static $langType = NULL; - - public static function defaultLang(){ - if(isset($GLOBALS['config']['settings']['language'])){ - return $GLOBALS['config']['settings']['language']; - } - $lang = "en"; - $arr = $GLOBALS['config']['settingAll']['language']; - $langs = array(); - if(!$arr) return 'zh-CN'; - foreach ($arr as $key => $value) { - $langs[$key] = $key; - } - $langs['zh'] = 'zh-CN'; //增加大小写对应关系 - $langs['zh-tw'] = 'zh-TW'; - - $acceptLanguage = array(); - if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ - $httpLang = 'en'; - }else{ - $httpLang = str_replace("_","-",strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])); - } - preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',$httpLang,$matches,PREG_SET_ORDER); - foreach ($matches as $match) { - $acceptLanguage[$match[1]] = (isset($match[3]) ? $match[3] : 1); - } - arsort($acceptLanguage); - foreach ($acceptLanguage as $key => $q) { - if (isset($langs[$key])) { - $lang = $langs[$key];break; - } - $key = preg_replace('~-.*~','', $key); - if (!isset($acceptLanguage[$key]) && isset($langs[$key])) { - $lang = $langs[$key];break; - } - } - return $lang; - } - - public static function getAll(){ - self::init(); - return self::$lang; - } - public static function getType(){ - self::init(); - return self::$langType; - } - - public static function init(){ - if(self::$loaded !== false){ - return; - } - $cookieLang = 'kodUserLanguage'; - if (isset($_COOKIE[$cookieLang])) { - $lang = $_COOKIE[$cookieLang]; - }else{ - $lang = self::defaultLang(); - //setcookie_header($cookieLang,$lang, time()+3600*24*100); - } - - $lang = str_replace(array('/','\\','..','.'),'',$lang); - //兼容旧版本 - if($lang == 'zh_CN') $lang = 'zh-CN'; - if($lang == 'zh_TW') $lang = 'zh-TW'; - - if(isset($GLOBALS['config']['settings']['language'])){ - $lang = $GLOBALS['config']['settings']['language']; - } - $langFile = LANGUAGE_PATH.$lang.'/main.php'; - if(!file_exists($langFile)){//allow remove some I18n folder - $lang = 'en'; - $langFile = LANGUAGE_PATH.$lang.'/main.php'; - } - - self::$langType = $lang; - self::$lang = include($langFile); - self::$loaded = true; - $GLOBALS['L'] = self::$lang; - } - - public static function get($key){ - self::init(); - if(!isset(self::$lang[$key])){ - return $key; - } - if (func_num_args() == 1) { - return self::$lang[$key]; - } else { - $args = func_get_args(); - array_shift($args); - return vsprintf(self::$lang[$key], $args); - } - } - - /** - * 添加多语言; - * @param [type] $args [description] - */ - public static function set($array){ - self::init(); - if(!is_array($array)) return; - foreach ($array as $key => $value) { - self::$lang[$key] = $value; - } - } -} diff --git a/plugin/document/kod/app/kod/ImageThumb.class.php b/plugin/document/kod/app/kod/ImageThumb.class.php deleted file mode 100644 index dd7ce63a0..000000000 --- a/plugin/document/kod/app/kod/ImageThumb.class.php +++ /dev/null @@ -1,290 +0,0 @@ -<?php - -/** - * 功能:图片处理 - * 基本参数:$srcFile,$echoType - * - * eg: - * $cm=new ImageThumb('1.jpg','file'); - * - * $cm->Distortion('dis_bei.jpg',150,200); //生成固定宽高缩略图; - * $cm->Prorate('pro_bei.jpg',150,200); //等比缩略图;附带切割 - * $cm->Cut('cut_bei.jpg',150,200); //等比缩略图;多出部分切割 - * $cm->BackFill('fill_bei.jpg',150,200); //等比缩略图;多出部分填充 - * - * $cm->imgRotate('out.jpg',90); //旋转图片 - */ -class ImageThumb { - var $srcFile = ''; //原图 - var $imgData = ''; //图片信息 - var $echoType; //输出图片类型,link--不保存为文件;file--保存为文件 - var $im = ''; //临时变量 - var $srcW = ''; //原图宽 - var $srcH = ''; //原图高 - - function __construct($srcFile, $echoType){ - $this->srcFile = $srcFile; - $this->echoType = $echoType; - $this->im = self::image($srcFile); - if(!$this->im){ - return false; - } - - $info = ''; - $this->imgData = GetImageSize($srcFile, $info); - $this->srcW = imageSX($this->im); - $this->srcH = imageSY($this->im); - return $this; - } - public static function image($file){ - $info = ''; - $data = GetImageSize($file, $info); - $img = false; - //var_dump($data,$file,memory_get_usage()-$GLOBALS['config']['appMemoryStart']); - switch ($data[2]) { - case IMAGETYPE_GIF: - if (!function_exists('imagecreatefromgif')) { - break; - } - $img = imagecreatefromgif($file); - break; - case IMAGETYPE_JPEG: - if (!function_exists('imagecreatefromjpeg')) { - break; - } - $img = imagecreatefromjpeg($file); - break; - case IMAGETYPE_PNG: - if (!function_exists('imagecreatefrompng')) { - break; - } - $img = @imagecreatefrompng($file); - imagesavealpha($img,true); - break; - case IMAGETYPE_XBM: - $img = imagecreatefromxbm($file); - break; - case IMAGETYPE_WBMP: - $img = imagecreatefromwbmp($file); - break; - case IMAGETYPE_BMP: - $img = imagecreatefrombmp($file); - break; - default:break; - } - return $img; - } - - public static function imageSize($file){ - $size = GetImageSize($file); - if(!$size){ - return false; - } - return array('width'=>$size[0],"height"=>$size[1]); - } - - // 生成扭曲型缩图 - function distortion($toFile, $toW, $toH){ - $cImg = $this->creatImage($this->im, $toW, $toH, 0, 0, 0, 0, $this->srcW, $this->srcH); - return $this->echoImage($cImg, $toFile); - } - // 生成按比例缩放的缩图 - function prorate($toFile, $toW, $toH){ - $toWH = $toW / $toH; - $srcWH = $this->srcW / $this->srcH; - if ($toWH<=$srcWH) { - $ftoW = $toW; - $ftoH = $ftoW * ($this->srcH / $this->srcW); - } else { - $ftoH = $toH; - $ftoW = $ftoH * ($this->srcW / $this->srcH); - } - if ($this->srcW > $toW || $this->srcH > $toH) { - $cImg = $this->creatImage($this->im, $ftoW, $ftoH, 0, 0, 0, 0, $this->srcW, $this->srcH); - return $this->echoImage($cImg, $toFile); - } else { - $cImg = $this->creatImage($this->im, $this->srcW, $this->srcH, 0, 0, 0, 0, $this->srcW, $this->srcH); - return $this->echoImage($cImg, $toFile); - } - } - // 生成最小裁剪后的缩图 - function cut($toFile, $toW, $toH){ - $toWH = $toW / $toH; - $srcWH = $this->srcW / $this->srcH; - if ($toWH<=$srcWH) { - $ctoH = $toH; - $ctoW = $ctoH * ($this->srcW / $this->srcH); - } else { - $ctoW = $toW; - $ctoH = $ctoW * ($this->srcH / $this->srcW); - } - $allImg = $this->creatImage($this->im, $ctoW, $ctoH, 0, 0, 0, 0, $this->srcW, $this->srcH); - $cImg = $this->creatImage($allImg, $toW, $toH, 0, 0, ($ctoW - $toW) / 2, ($ctoH - $toH) / 2, $toW, $toH); - imageDestroy($allImg); - return $this->echoImage($cImg, $toFile); - } - // 生成背景填充的缩图,默认用白色填充剩余空间,传入$isAlpha为真时用透明色填充 - function backFill($toFile, $toW, $toH,$isAlpha=false,$red=255, $green=255, $blue=255){ - $toWH = $toW / $toH; - $srcWH = $this->srcW / $this->srcH; - if ($toWH<=$srcWH) { - $ftoW = $toW; - $ftoH = $ftoW * ($this->srcH / $this->srcW); - } else { - $ftoH = $toH; - $ftoW = $ftoH * ($this->srcW / $this->srcH); - } - if (function_exists('imagecreatetruecolor')) { - @$cImg = imageCreateTrueColor($toW, $toH); - if (!$cImg) { - $cImg = imageCreate($toW, $toH); - } - } else { - $cImg = imageCreate($toW, $toH); - } - - $fromTop = ($toH - $ftoH)/2;//从正中间填充 - $backcolor = imagecolorallocate($cImg,$red,$green, $blue); //填充的背景颜色 - if ($isAlpha){//填充透明色 - $backcolor=imageColorTransparent($cImg,$backcolor); - $fromTop = $toH - $ftoH;//从底部填充 - } - - imageFilledRectangle($cImg, 0, 0, $toW, $toH, $backcolor); - if ($this->srcW > $toW || $this->srcH > $toH) { - $proImg = $this->creatImage($this->im, $ftoW, $ftoH, 0, 0, 0, 0, $this->srcW, $this->srcH); - if ($ftoW < $toW) { - imageCopy($cImg, $proImg, ($toW - $ftoW) / 2, 0, 0, 0, $ftoW, $ftoH); - } else if ($ftoH < $toH) { - imageCopy($cImg, $proImg, 0, $fromTop, 0, 0, $ftoW, $ftoH); - } else { - imageCopy($cImg, $proImg, 0, 0, 0, 0, $ftoW, $ftoH); - } - } else { - imageCopyMerge($cImg, $this->im, ($toW - $ftoW) / 2,$fromTop, 0, 0, $ftoW, $ftoH, 100); - } - return $this->echoImage($cImg, $toFile); - } - - function creatImage($img, $creatW, $creatH, $dstX, $dstY, $srcX, $srcY, $srcImgW, $srcImgH){ - if (function_exists('imagecreatetruecolor')) { - @$creatImg = ImageCreateTrueColor($creatW, $creatH); - @imagealphablending($creatImg,false);//是不合并颜色,直接用$img图像颜色替换,包括透明色; - @imagesavealpha($creatImg,true);//不要丢了$thumb图像的透明色; - if ($creatImg){ - imageCopyResampled($creatImg, $img, $dstX, $dstY, $srcX, $srcY, $creatW, $creatH, $srcImgW, $srcImgH); - }else { - $creatImg = ImageCreate($creatW, $creatH); - imageCopyResized($creatImg, $img, $dstX, $dstY, $srcX, $srcY, $creatW, $creatH, $srcImgW, $srcImgH); - } - } else { - $creatImg = ImageCreate($creatW, $creatH); - imageCopyResized($creatImg, $img, $dstX, $dstY, $srcX, $srcY, $creatW, $creatH, $srcImgW, $srcImgH); - } - return $creatImg; - } - - - // Rotate($toFile, 90); - public function imgRotate($toFile,$degree) { - if (!$this->im || - $degree % 360 === 0 || - !function_exists('imageRotate')) { - return false; - } - $rotate = imageRotate($this->im,360-$degree,0); - $result = false; - switch ($this->imgData[2]) { - case IMAGETYPE_GIF: - $result = imagegif($rotate, $toFile); - break; - case IMAGETYPE_JPEG: - $result = imagejpeg($rotate, $toFile,100);//压缩质量 - break; - case IMAGETYPE_PNG: - $result = imagePNG($rotate, $toFile); - break; - default:break; - } - imageDestroy($rotate); - imageDestroy($this->im); - return $result; - } - - // 输出图片,link---只输出,不保存文件。file--保存为文件 - function echoImage($img, $toFile){ - if(!$img) return false; - ob_get_clean(); - $result = false; - switch ($this->echoType) { - case 'link':$result = imagePNG($img);break; - case 'file':$result = imagePNG($img, $toFile);break; - //return ImageJpeg($img, $to_File); - } - imageDestroy($img); - imageDestroy($this->im); - return $result; - } -} - -if(!function_exists('imageflip')){ - /** - * Flip (mirror) an image left to right. - * - * @param image resource - * @param x int - * @param y int - * @param width int - * @param height int - * @return bool - * @require PHP 3.0.7 (function_exists), GD1 - */ - define('IMG_FLIP_HORIZONTAL', 0); - define('IMG_FLIP_VERTICAL', 1); - define('IMG_FLIP_BOTH', 2); - function imageflip($image, $mode) { - switch ($mode) { - case IMG_FLIP_HORIZONTAL: { - $max_x = imagesx($image) - 1; - $half_x = $max_x / 2; - $sy = imagesy($image); - $temp_image = imageistruecolor($image)? imagecreatetruecolor(1, $sy): imagecreate(1, $sy); - for ($x = 0; $x < $half_x; ++$x) { - imagecopy($temp_image, $image, 0, 0, $x, 0, 1, $sy); - imagecopy($image, $image, $x, 0, $max_x - $x, 0, 1, $sy); - imagecopy($image, $temp_image, $max_x - $x, 0, 0, 0, 1, $sy); - } - break; - } - case IMG_FLIP_VERTICAL: { - $sx = imagesx($image); - $max_y = imagesy($image) - 1; - $half_y = $max_y / 2; - $temp_image = imageistruecolor($image)? imagecreatetruecolor($sx, 1): imagecreate($sx, 1); - for ($y = 0; $y < $half_y; ++$y) { - imagecopy($temp_image, $image, 0, 0, 0, $y, $sx, 1); - imagecopy($image, $image, 0, $y, 0, $max_y - $y, $sx, 1); - imagecopy($image, $temp_image, 0, $max_y - $y, 0, 0, $sx, 1); - } - break; - } - case IMG_FLIP_BOTH: { - $sx = imagesx($image); - $sy = imagesy($image); - $temp_image = imagerotate($image, 180, 0); - imagecopy($image, $temp_image, 0, 0, 0, 0, $sx, $sy); - break; - } - default: { - return; - } - } - imagedestroy($temp_image); - } -} -if(!function_exists('imagecreatefrombmp')){ - function imagecreatefrombmp( $filename ){ - return imageGdBMP::load($filename); - } -} - diff --git a/plugin/document/kod/app/kod/KodArchive.class.php b/plugin/document/kod/app/kod/KodArchive.class.php deleted file mode 100644 index 149314514..000000000 --- a/plugin/document/kod/app/kod/KodArchive.class.php +++ /dev/null @@ -1,332 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - - -define('ARCHIVE_LIB',dirname(__FILE__).'/archiveLib/'); -define('PCLZIP_TEMPORARY_DIR',TEMP_PATH); -define('PCLTAR_TEMPORARY_DIR',TEMP_PATH); -define('PCLZIP_SEPARATOR',';@@@,');//压缩多个文件,组成字符串分割 -mk_dir(TEMP_PATH); - -require_once ARCHIVE_LIB . 'pclerror.lib.php'; -require_once ARCHIVE_LIB . 'pcltrace.lib.php'; -require_once ARCHIVE_LIB . 'pcltar.lib.php'; -require_once ARCHIVE_LIB . 'pclzip.class.php'; -require_once ARCHIVE_LIB . 'kodRarArchive.class.php'; -require_once ARCHIVE_LIB . 'kodZipArchive.class.php'; - -class KodArchive { - /** - * [checkIfType get the app by ext] - * @param [type] $guess [check] - * @param [type] $ext [file ext] - * @return [type] [description] - */ - static function checkIfType($ext,$appType){ - $extArray = array( - 'zip' => array('zip','ipa','apk','epub'), - 'tar' => array('tar','tar.gz','tgz','gz'), - 'rar' => array('rar','7z','xz','bz2','arj','cab','iso') - ); - $result = in_array($ext,$extArray[$appType]); - if( $result && - ($appType == 'zip' || $appType == 'tar') && - (!function_exists('gzopen') || !function_exists('gzinflate')) - ){ - show_tips("[Error] Can't Open; Missing zlib extensions"); - } - - if( $result && $appType == 'rar' && - (!function_exists('shell_exec') || !strstr(shell_exec('echo "kodcloud"'),'kodcloud')) - ){ - show_tips("[Error] Can't Open; shell_exec Can't use"); - } - return $result; - } - - /** - * [listContent description] - * @param [type] $file [archive file] - * @return [type] [array or false] - */ - static function listContent($file,$output=true) { - $ext = get_path_ext($file); - $result = false; - if( self::checkIfType($ext,'tar') ){ - //TrOn(10); - $resultOld = PclTarList($file); - //TrDisplay();exit; - $result = array(); - for ($i=0; $i < count($resultOld); $i++) { - $item = $resultOld[$i]; - //http://rpm5.org/docs/api/tar_8c-source.html - if( $item['typeflag'] == 'x' || $item['typeflag'] == 'g'){ - continue; - } - if($output){ - $item['filename'] = ltrim($item['filename'],'./'); - } - if($item['typeflag'] == '5'){ - $item['folder'] = true; - }else{ - $item['folder'] = false; - } - $item['index'] = $i; - $result[] = $item; - } - }else if( self::checkIfType($ext,'rar') ){ - $appResult = kodRarArchive::listContent($file); - if(!$appResult['code']){ - return $appResult; - }else{ - $result = $appResult['data']; - } - }else{//默认zip - if(kodZipArchive::support('list')){ - $result = kodZipArchive::listContent($file); - }else{ - $zip = new PclZip($file); - $result = $zip->listContent(); - } - } - if($result){ - //编码转换 - $charset = unzip_charset_get($result); - $output = $output && function_exists('iconv'); - for ($i=0; $i < count($result); $i++) { - //不允许相对路径 - $result[$i]['filename'] = str_replace(array('../','..\\'),"_",$result[$i]['filename']); - // $charset = get_charset($result[$i]['filename']); - if($output){ - $result[$i]['filename'] = iconv_to($result[$i]['filename'],$charset,'utf-8'); - unset($result[$i]['stored_filename']); - } - } - return array('code'=>true,'data'=>$result); - }else{ - return array('code'=>false,'data'=>$result); - } - } - - /** - * [extract description] - * @param [type] $file [archive file] - * @param [type] $dest [extract to folder] - * @param string $part [archive file content] - * @return [type] [array] - */ - static function extract($file, $dest, $part = '-1',&$partName=false) { - $ext = get_path_ext($file); - $listContent = self::listContent($file,false);//不转码 - if(!$listContent['code']){ - return $listContent; - } - if($part != '-1'){//解压部分.则构造 $pathRemove $indexPath - $indexInfo = self::fileIndex($listContent['data'],$part); - $partName = str_replace(array('../','..\\'),'_',$indexInfo['filename']); - $indexPath = $partName; - if($GLOBALS['config']['systemCharset'] != 'utf-8'){ - $indexPath = unzip_pre_name($partName);//系统编码 - } - - //$pathRemove = get_path_father($indexPath); - $pathRemove = get_path_father($partName);//中文情况文件情况兼容 - - if($indexInfo['folder']){ - $indexPath = rtrim($indexPath,'/').'/';//tar 解压文件夹需要/结尾 - $partName = array($partName); - } - - $tempCheck = str_replace('\\','/',$indexPath); - if(substr($tempCheck,-1) == '/'){ - //跟目录;需要追加一层文件夹;window a\b\c\ linux a/b/c/ - if( !strstr(trim($tempCheck,'/'),'/') ){ - $dest = $dest.unzip_pre_name(get_path_this($tempCheck)).'/'; - } - }else{ - if($pathRemove == $indexPath){//根目录文件; - $pathRemove = ''; - } - } - //debug_out($indexInfo,$indexPath,$partName,$pathRemove,$tempCheck); - } - - if( self::checkIfType($ext,'tar') ){ - //TrOn(10); - if($part != '-1'){ - //tar 默认都进行转码; - $indexPath = unzip_pre_name($indexPath); - $pathRemove = unzip_pre_name($pathRemove); - $result = PclTarExtractList($file,array($indexPath),$dest,$pathRemove); - }else{ - $result = PclTarExtract($file,$dest); - } - //TrDisplay();exit; - return array('code'=>$result,'data'=>PclErrorString(true)); - }else if( self::checkIfType($ext,'rar')){ // || $ext == 'zip' - return kodRarArchive::extract($file,$dest,$ext,$partName); - }else if(kodZipArchive::support('extract')){ - return kodZipArchive::extract($file,$dest,$partName); - }else{ - $zip = new PclZip($file); - //解压内部的一部分,按文件名或文件夹来 - if($part != '-1'){ - $result = $zip->extract(PCLZIP_OPT_PATH,$dest, - PCLZIP_OPT_SET_CHMOD,DEFAULT_PERRMISSIONS, - PCLZIP_CB_PRE_FILE_NAME,'unzip_pre_name', - - PCLZIP_OPT_BY_NAME,$indexInfo['filename'], - PCLZIP_OPT_REMOVE_PATH,$pathRemove, - PCLZIP_OPT_REPLACE_NEWER); - }else{ - $result = $zip->extract(PCLZIP_OPT_PATH,$dest, - PCLZIP_OPT_SET_CHMOD,DEFAULT_PERRMISSIONS, - PCLZIP_CB_PRE_FILE_NAME,'unzip_pre_name', - PCLZIP_OPT_REPLACE_NEWER);//解压到某个地方,覆盖方式 - } - return array('code'=>$result,'data'=>$zip->errorName(true)); - } - return array('code'=>false,'data'=>'File Type Not Support'); - } - - static function fileIndex($list,$index,$key=false){ - if(!is_array($list)) return false; - $len = count($list); - for ($i=0; $i < $len; $i++) { - if($index == $list[$i]['index']){ - $item = $list[$i]; - break; - } - } - if(!$item){ - show_tips('KodArchive:fileIndex; index error;file not exists!'); - } - $result = $item; - if($key){ - $result = $item[$key]; - if($item['folder']){ - $result = rtrim($result,'/').'/';//tar 解压文件夹需要结尾/ - } - } - return $result; - } - - static function extractZipFile($file,$byName,$cacheName = false){ - $temp = TEMP_PATH.'archivePreview/'.hash_path($file).'/'; - mk_dir($temp); - touch(TEMP_PATH.'archivePreview/index.html'); - $newFile = $temp.md5($file.$byName); - if($cacheName){ - $newFile = $temp.$cacheName; - } - - if(file_exists($newFile)){ - return $newFile; - } - $zip = new PclZip($file); - $outFile = unzip_filter_ext($temp.get_path_this($byName)); - $parent = get_path_father($byName); - if($parent == $byName){ - $parent = ''; - } - $result = $zip->extract( - PCLZIP_OPT_PATH,$temp, - PCLZIP_CB_PRE_FILE_NAME,'unzip_pre_name', - PCLZIP_OPT_REMOVE_PATH,$parent, - PCLZIP_OPT_BY_NAME,$byName); - if(!file_exists($outFile)){ - return false; - } - @rename($outFile,$newFile); - return $newFile; - } - - /** - * [filePreview file preview or download a file;] - * 解压后自动缓存; - * @param [type] $file [archive file name] - * @param [type] $index [file index] - * @return [type] [echo to client;] - */ - static function filePreview($file,$index,$download=false,$byName = false){ - $temp = TEMP_PATH.'archivePreview/'.hash_path($file).'/'; - mk_dir($temp); - touch(TEMP_PATH.'archivePreview/index.html'); - $newFile = $temp.md5($file.$index.$byName); - $partName = '';//引用传值,传入处理 - $result = self::extract($file, $temp,$index,$partName); - if(is_array($partName)){//不能是数组——文件夹 - show_json('unzip preview folder error!',false); - } - if(file_exists($newFile)){ - file_put_out($newFile,$download,get_path_this($partName)); - return; - } - //$partName 压缩文件原名;初始编码;转为当前文件系统编码 - $partName = unzip_pre_name($partName); - $filenameOutput = get_path_this($partName); - $outFile = unzip_filter_ext($temp.$filenameOutput); - if(!$result['code']){ - show_json($result['data'],false); - } - //debug_out($partName,$file,$outFile,$byName); - if(!file_exists($outFile)){ - show_json('unzip error!',false); - } - @rename($outFile,$newFile); - if(!file_exists($newFile)){ - del_dir($temp); - show_json('unzip:rename error!'); - } - file_put_out($newFile,$download,$filenameOutput); - } - /** - * [create description] - * @param [type] $file [archive file name] - * @param [type] $files [files add;file or folders] - * @return [type] [bool] - */ - static function create($file,$files) { - $ext = get_path_ext($file); - $result = false; - if( self::checkIfType($ext,'zip') ){ - if(kodZipArchive::support('add')){ - return kodZipArchive::create($file,$files); - } - $archive = new PclZip($file); - foreach ($files as $key =>$val) { - $val = str_replace('//','/',$val); - $removePathPre = _DIR_CLEAR(get_path_father($val)); - if($key == 0){ - $result = $archive->create($val, - PCLZIP_OPT_REMOVE_PATH,$removePathPre, - PCLZIP_CB_PRE_FILE_NAME,'zip_pre_name' - ); - continue; - } - $result = $archive->add($val, - PCLZIP_OPT_REMOVE_PATH,$removePathPre, - PCLZIP_CB_PRE_FILE_NAME,'zip_pre_name' - ); - } - }else if( self::checkIfType($ext,'tar') ){ - //TrOn(10); - foreach ($files as $key =>$val) { - $val = str_replace('//','/',$val); - $removePathPre = _DIR_CLEAR(get_path_father($val)); - if($key == 0){ - $result = PclTarCreate($file,array($val), $ext,null, $removePathPre); - continue; - } - $result = PclTarAddList($file,array($val),'',$removePathPre,$ext); - } - //TrDisplay();exit; - } - return $result; - } -} \ No newline at end of file diff --git a/plugin/document/kod/app/kod/Mcrypt.class.php b/plugin/document/kod/app/kod/Mcrypt.class.php deleted file mode 100644 index 66f6e482a..000000000 --- a/plugin/document/kod/app/kod/Mcrypt.class.php +++ /dev/null @@ -1,121 +0,0 @@ -<?php - -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*------ -* 字符串加解密类; -* 一次一密;且定时解密有效 -* 可用于加密&动态key生成 -* demo: -* 加密:echo Mcrypt::encode('abc','123'); -* 解密:echo Mcrypt::decode('9f843I0crjv5y0dWE_-uwzL_mZRyRb1ynjGK4I_IACQ','123'); -*/ - -class Mcrypt{ - public static $default_key = 'a!takA:dlmcldEv,e'; - - /** - * 字符加解密,一次一密,可定时解密有效 - * - * @param string $string 原文或者密文 - * @param string $operation 操作(encode | decode) - * @param string $key 密钥 - * @param int $expiry 密文有效期,单位s,0 为永久有效 - * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文 - */ - public static function encode($string,$key = '', $expiry = 0){ - $ckeyLength = 4; - $key = md5($key ? $key : self::$default_key); //解密密匙 - $keya = md5(substr($key, 0, 16)); //做数据完整性验证 - $keyb = md5(substr($key, 16, 16)); //用于变化生成的密文 (初始化向量IV) - $keyc = substr(md5(microtime()), - $ckeyLength); - $cryptkey = $keya . md5($keya . $keyc); - $keyLength = strlen($cryptkey); - $string = sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string . $keyb), 0, 16) . $string; - $stringLength = strlen($string); - - $rndkey = array(); - for($i = 0; $i <= 255; $i++) { - $rndkey[$i] = ord($cryptkey[$i % $keyLength]); - } - - $box = range(0, 255); - // 打乱密匙簿,增加随机性 - for($j = $i = 0; $i < 256; $i++) { - $j = ($j + $box[$i] + $rndkey[$i]) % 256; - $tmp = $box[$i]; - $box[$i] = $box[$j]; - $box[$j] = $tmp; - } - // 加解密,从密匙簿得出密匙进行异或,再转成字符 - $result = ''; - for($a = $j = $i = 0; $i < $stringLength; $i++) { - $a = ($a + 1) % 256; - $j = ($j + $box[$a]) % 256; - $tmp = $box[$a]; - $box[$a] = $box[$j]; - $box[$j] = $tmp; - $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); - } - $result = $keyc . str_replace('=', '', base64_encode($result)); - $result = str_replace(array('+', '/', '='),array('-', '_', '.'), $result); - return $result; - } - - /** - * 字符加解密,一次一密,可定时解密有效 - * - * @param string $string 原文或者密文 - * @param string $operation 操作(encode | decode) - * @param string $key 密钥 - * @param int $expiry 密文有效期,单位s,0 为永久有效 - * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文 - */ - public static function decode($string,$key = '') - { - $string = str_replace(array('-', '_', '.'),array('+', '/', '='), $string); - $ckeyLength = 4; - $key = md5($key ? $key : self::$default_key); //解密密匙 - $keya = md5(substr($key, 0, 16)); //做数据完整性验证 - $keyb = md5(substr($key, 16, 16)); //用于变化生成的密文 (初始化向量IV) - $keyc = substr($string, 0, $ckeyLength); - $cryptkey = $keya . md5($keya . $keyc); - $keyLength = strlen($cryptkey); - $string = base64_decode(substr($string, $ckeyLength)); - $stringLength = strlen($string); - - $rndkey = array(); - for($i = 0; $i <= 255; $i++) { - $rndkey[$i] = ord($cryptkey[$i % $keyLength]); - } - - $box = range(0, 255); - // 打乱密匙簿,增加随机性 - for($j = $i = 0; $i < 256; $i++) { - $j = ($j + $box[$i] + $rndkey[$i]) % 256; - $tmp = $box[$i]; - $box[$i] = $box[$j]; - $box[$j] = $tmp; - } - // 加解密,从密匙簿得出密匙进行异或,再转成字符 - $result = ''; - for($a = $j = $i = 0; $i < $stringLength; $i++) { - $a = ($a + 1) % 256; - $j = ($j + $box[$a]) % 256; - $tmp = $box[$a]; - $box[$a] = $box[$j]; - $box[$j] = $tmp; - $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); - } - if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) - && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16) - ) { - return substr($result, 26); - } else { - return ''; - } - } -} diff --git a/plugin/document/kod/app/kod/PluginBase.class.php b/plugin/document/kod/app/kod/PluginBase.class.php deleted file mode 100644 index da1009844..000000000 --- a/plugin/document/kod/app/kod/PluginBase.class.php +++ /dev/null @@ -1,298 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -class PluginBase{ - public $in; - public $pluginName; - public $pluginPath; - public $pluginHost; - public $pluginHostDefault; - public $pluginApi; - public $packageData; - - private $pluginLangArr; - private $pluginConfig; - function __construct(){ - global $in,$config; - $this->config = &$config; - $this->in = &$in; - - $this->pluginName = str_replace('Plugin','',get_class($this)); - $this->pluginPath = PLUGIN_DIR.$this->pluginName.'/'; - $this->pluginApi = rtrim(APP_HOST,'/').'/kod_index.php?pluginApp/to/'.$this->pluginName.'/'; - $this->pluginHost = $this->config['settings']['pluginHost'].$this->pluginName.'/'; - $this->pluginHostDefault = PLUGIN_HOST.$this->pluginName.'/'; - $this->pluginLangArr = $this->initLang(); - return $this; - } - public function regiest(){ - $this->hookRegiest(array()); - $this->setConfig(array()); - } - public function install(){} - public function update(){} - public function unInstall(){} - - - /** - * 注册hook到当前插件配置 - * @param [type] $array [description] - * @return [type] [description] - */ - final function hookRegiest($array){ - $id = $this->pluginName; - $systemConfig = &$this->config['settingSystem']; - if(!is_array($systemConfig['pluginList'])){ - $systemConfig['pluginList'] = array(); - } - if(is_array($systemConfig['pluginList'][$name])){ - $systemConfig['pluginList'][$id]['regiest'] = $array; - }else{ - $systemConfig['pluginList'][$id] = array( - 'id' => $id, - 'regiest' => $array, - 'status' => 0, - 'config' => $this->getConfig() - ); - } - } - final function appIcon(){ - $package = $this->appPackage(); - $icon = ''; - if(isset($package['source'])){ - if($package['source']['icon']){ - $icon = '<img class="icon" src="'.$package['source']['icon'].'"/>'; - }else if($package['source']['className']){ - $icon = "<i class='icon font-icon ".$package['source']['className']."'></i>"; - } - } - return $icon; - } - final function filePath($path){ - if(substr($path,0,4) == 'http'){ - if(!request_url_safe($path)){ - show_json(LNG('url error!'),false); - } - $cacheName = md5($path.'kodcloud').'.'.get_path_ext($path); - $cacheFile = TEMP_PATH.$this->pluginName.'/files/'.$cacheName; - mk_dir(get_path_father($cacheFile)); - if(!file_exists($cacheFile)){ - $result = url_request($path,'DOWNLOAD',$cacheFile); - } - $path = $cacheFile; - }else{ - $path = _DIR($path); - //php7.1,含有中文文件,windows下 curl上传会有问题 - if( strtoupper(substr(PHP_OS, 0,3)) === 'WIN' && - version_compare(phpversion(), '7.1.0', '>=') && - preg_match("/([\x81-\xfe][\x40-\xfe])/", $path, $match)){ - - $name = hash_path($path).'.'.get_path_ext($path); - $cacheFile = TEMP_PATH.$this->pluginName.'/files/'.$name; - mk_dir(get_path_father($cacheFile)); - if(!file_exists($cacheFile)){ - @copy($path,$cacheFile); - } - $path = $cacheFile; - } - } - if (!file_exists($path)) { - show_tips(LNG('file').' '.LNG('not_exists')); - } - return $path; - } - - /** - * 插件配置数据加载 - * @return [type] [description] - */ - final function appPackage(){ - if($this->packageData){ - return $this->packageData; - } - $content = $this->parseFile($this->pluginPath.'package.json'); - $this->parseLang($content); - $result = json_decode_force($content); - if(!$result){ - return $content; - } - $this->packageData = $result; - return $result; - } - - /** - * 获取package.json中的数据;通过key获取,支持auther.copyright 多级获取 - * @param [type] $key [description] - * @return [type] [description] - */ - public function packageInfoGet($key){ - $data = $this->appPackage(); - $result = null; - $keyArr = explode('.',$key); - for ($i = 0; $i < count($keyArr); $i++) { - if($i == 0){ - $result = $data[$keyArr[$i]]; - continue; - } - if(is_array($result)){ - $result = $result[$keyArr[$i]]; - }else{ - return null; - } - } - return $result; - } - public function packageVersion(){return $this->packageInfoGet('version');} - public function packageTitle(){return $this->packageInfoGet('title');} - public function packageCopyright(){return $this->packageInfoGet('auther.copyright');} - - private function parseFile($file){ - $content = file_get_contents($file); - $replaceFrom = array( - '{{pluginHost}}', - '{{pluginHostDefault}}', - '{{pluginApi}}', - '{{pluginName}}', - '{{pluginPath}}', - '{{appHost}}', - '{{staticPath}}', - //"\r","\n" - ); - $replaceTo = array( - $this->pluginHost, - $this->pluginHostDefault, - $this->pluginApi, - $this->pluginName, - $this->pluginPath, - APP_HOST, - $this->config['settings']['staticPath'], - //" "," " - ); - $content = str_replace($replaceFrom,$replaceTo,$content); - return $content; - } - - private function parseLang(&$content){ - $pre = '{{LNG.'; - if(!strstr($content,$pre)){ - return; - } - preg_match_all('/{{LNG\..*}}/isU',$content,$match); - if( !is_array($match) || count($match) == 0 || - !is_array($match[0]) || count($match[0]) == 0 ){ - return; - } - $replaceFrom = array(); - $replaceTo = array(); - foreach ($match[0] as $key) { - $langKey = substr($key,strlen($pre),-2); //{{LNG.file}} - $langVal = LNG($langKey); - - $replaceFrom[] = $key; - $replaceTo[] = str_replace( - array("\n","\r","\t",'"'), - array(' ',' ','','\\"'), - $langVal - ); - } - $content = str_replace($replaceFrom,$replaceTo,$content); - } - private function parseConfig(&$content){ - $config = $this->getConfig(); - $pre = '{{config.'; - if(!strstr($content,$pre)){ - return; - } - preg_match_all('/{{config\..*}}/isU',$content,$match); - if( !is_array($match) || count($match) == 0 || - !is_array($match[0]) || count($match[0]) == 0 ){ - return; - } - $replaceFrom = array(); - $replaceTo = array(); - foreach ($match[0] as $key) { - $langKey = substr($key,strlen($pre),-2); //{{config.file}} - $replaceFrom[] = $key; - $replaceTo[] = $config[$langKey]; - } - $content = str_replace($replaceFrom,$replaceTo,$content); - } - - /** - * 输出文件 - * @param [type] $file [description] - * @return [type] [description] - */ - final function echoFile($file,$replace=false){ - $filePath = $this->pluginPath.$file; - if(ACT == 'commonJs'){ - echo "\n/* [".$this->pluginName.'/'.$file."] */"; - if(!file_exists($filePath)){ - echo " /* ==>[not exist]*/"; - return; - } - } - - $content = $this->parseFile($filePath); - $this->parseLang($content); - $this->parseConfig($content); - if(is_array($replace) && count($replace) == 2){ - $content = str_replace($replace[0],$replace[1],$content); - } - echo "\n".$content; - } - - /** - * 初始化多语言 - * @return [type] [description] - */ - final function initLang(){ - $default = 'en'; - $path = $this->pluginPath.'i18n/'; - $lang = I18n::getType(); - $array = array(); - if(file_exists($path.$lang.'.php')){ - $array = include_once($path.$lang.'.php'); - }else if(file_exists($path.$default.'.php')){ - $array = include_once($path.$default.'.php'); - } - if(count($array) > 0){ - I18n::set($array); - } - return $array; - } - - final function isFileExtence($st,$act){ - if(in_array($st,array('desktop','editor','explorer','share','api'))){ - return true; - } - return false; - } - - /** - * 获取插件配置 - * @return [type] [description] - */ - final function getConfig(){ - if(!$this->pluginConfig){ - $model = new PluginModel(); - $this->pluginConfig = $model->getConfig($this->pluginName); - } - return $this->pluginConfig; - } - - /** - * 修改插件配置 - * @return [type] [description] - */ - final function setConfig($value){ - $model = new PluginModel(); - return $model->setConfig($this->pluginName,$value); - } -} - diff --git a/plugin/document/kod/app/kod/archiveLib/bin/7z b/plugin/document/kod/app/kod/archiveLib/bin/7z deleted file mode 100644 index 81670c812..000000000 Binary files a/plugin/document/kod/app/kod/archiveLib/bin/7z and /dev/null differ diff --git a/plugin/document/kod/app/kod/archiveLib/bin/7z.exe b/plugin/document/kod/app/kod/archiveLib/bin/7z.exe deleted file mode 100644 index 7f6bf86bc..000000000 Binary files a/plugin/document/kod/app/kod/archiveLib/bin/7z.exe and /dev/null differ diff --git a/plugin/document/kod/app/kod/archiveLib/bin/rar b/plugin/document/kod/app/kod/archiveLib/bin/rar deleted file mode 100644 index 94d29e43d..000000000 Binary files a/plugin/document/kod/app/kod/archiveLib/bin/rar and /dev/null differ diff --git a/plugin/document/kod/app/kod/archiveLib/bin/rar.exe b/plugin/document/kod/app/kod/archiveLib/bin/rar.exe deleted file mode 100644 index 7c206f0fb..000000000 Binary files a/plugin/document/kod/app/kod/archiveLib/bin/rar.exe and /dev/null differ diff --git a/plugin/document/kod/app/kod/archiveLib/kodRarArchive.class.php b/plugin/document/kod/app/kod/archiveLib/kodRarArchive.class.php deleted file mode 100644 index 6ac0e3744..000000000 --- a/plugin/document/kod/app/kod/archiveLib/kodRarArchive.class.php +++ /dev/null @@ -1,254 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - - -/** - * 7zip 解压缩: 7z,xz,bz2(bzip2),gz(gzip),tar,zip - * 7zip 仅解压: 7z,xz,,bz2(bzip2),gz(gzip),tar,zip,arj,cab,chm,cpio,deb,dmg, - * fat,hfs,iso,lzh,lzma,mbr,msi,nsis,ntfs,,rpm,udf,vhd,wim,xar,z - * - * rar 仅支持rar文件解压缩 - * 目前使用解压功能:7z,bz2,zx,z,ios,arj;压缩功能暂停 - * ------------ - * 7zip命令行:http://blog.csdn.net/earbao/article/details/51382534 - * rar命令行 :http://www.cnblogs.com/fetty/p/4769279.html - * 7za命令行 :https://www.mankier.com/1/7za //当rar解压失败时尝试调用系统内置7za解压; 支持大于60G文件 - */ - - -class kodRarArchive { - static function bin($type){ - $file = dirname(__FILE__).'/bin/'.$type; - $file = str_replace('\\','/',$file); - if(PHP_OS == "Darwin"){//mac - $file = PLUGIN_DIR.'/zipView/lib/bin/'.$type.'_mac'; - } - if(!file_exists($file)){ - show_json('bin file not exists!',false); - } - if(PATH_SEPARATOR == ':') { - @chmod($file,0777); - } - return $file; - } - static function run($cmd){ - if (strtoupper(substr(PHP_OS, 0,3)) != 'WIN') {//linux - $cmd = "export LANG='en_US.UTF-8' && ".$cmd; - @setlocale(LC_ALL,'en_US.UTF-8'); - @putenv('LC_ALL=en_US.UTF-8'); - } - $result = shell_exec($cmd); - //debug_out($cmd,$result); - if(!strstr($result,'Copyright')){ - return array('code'=>false,'data'=>'[shell_exec error!] No Result!'); - } - return array('code'=>true,'data'=>$result); - } - - /** - * 防止通过构造文件名,进行shell注入 - */ - static function extract($file,$dest,$ext,$partName=false,$passwd=false) { - $dest_before = $dest; - $dest = TEMP_PATH.'archivePreview/'.md5(rand_string(40).time()).'/'; - mk_dir($dest);touch(TEMP_PATH.'archivePreview/index.html'); - - $passwd = $passwd ?" -p".escapeShell($passwd).' ':''; - if($ext == 'rar'){ - $param = ' -y '.$passwd.escapeShell($file).' '.escapeShell($dest).' '; - if($partName === false){ - $command = self::bin('rar').' x'.$param; - }else if(is_array($partName)){ - $command = self::bin('rar').' x'.$param.escapeShell($partName[0]); - }else{ - $command = self::bin('rar').' e'.$param.escapeShell($partName); - } - }else{ - if($ext == 'bz2'){ - $ext = 'bzip2'; - } - $param = ' -y -t'.escapeShell($ext).$passwd.' -o'.escapeShell($dest).' '.escapeShell($file).' '; - if($partName === false){ - $command = self::bin('7z').' x'.$param; - }else if(is_array($partName)){ - $command = self::bin('7z').' x'.$param.escapeShell($partName[0]); - }else{ - $command = self::bin('7z').' e'.$param.escapeShell($partName); - } - } - $result = self::run($command); - - //7za 兼容 rar解压大文件 - if(strstr($result['data'],'is not RAR archive') && shell_exec('7za')){ - $param = ' -y -o'.escapeShell($dest).' '.escapeShell($file).' '; - if($partName === false){ - $command = '7za x'.$param; - }else if(is_array($partName)){ - $command = '7za x'.$param.escapeShell($partName[0]); - }else{ - $command = '7za e'.$param.escapeShell($partName); - } - $result = self::run($command); - } - - //echo "<pre>";var_dump($result,$command);exit; - if(!$result['code']){ - return $result; - } - - //子目录解压移除多余层级目录 - if( is_array($partName) ){ - $thePath = trim(str_replace("\\",'/',$partName[0]),'/'); - $pathGroup = explode('/',$thePath); - //一级目录解压不用移动 - if(count($pathGroup) > 1){ - move_path($dest.$partName[0],$dest.get_path_this($thePath)); - del_dir($dest.$pathGroup[0]); - }else{ - $dest_before = get_path_father($dest_before); - } - } - - //扩展名处理;文件名重命名处理 - $arr = dir_list($dest); - foreach($arr as $f){ - $itemPath = str_replace(array($dest,"\\"),array('','/'),$f); - $itemPath = unzip_pre_name($itemPath); - $from = $dest.get_path_father($itemPath).get_path_this($f); - if(strstr($itemPath,'/') == false){ - $from = $dest.get_path_this($f); - } - if($dest.$itemPath != $from){ - @rename($from,$dest.$itemPath); - } - } - move_path($dest,$dest_before); - del_dir(rtrim($dest,'/')); - return $result; - } - - static function listContent($file) { - if(get_path_ext($file) == 'rar'){ - return self::listContentRar($file); - }else{ - return self::listContent7z($file); - } - } - - static function listContentRar($file) { - $command = self::bin('rar').' v '.escapeShell($file); - $result = self::run($command); - //7za 兼容 rar解压大文件 - if(strstr($result['data'],'is not RAR archive') && shell_exec('7za')){ - return self::listContent7z($file,'7za l '); - } - if(!$result['code']){ - return $result; - } - - preg_match('/-------- ----\n([\d\D]*)\n-----------/i', $result['data'], $match); - if(!is_array($match) || strlen($match[1]) < 10){ - return array('code'=>false,'data'=>'Match Nothing Content!'); - } - - //windows :...D... 93691 82633 88% 2016-12-09 02:20 396CC62C 000/a/32486963.png - //linux: :-rwxr-xr-x 93691 82643 88% 2016-12-09 02:20 396CC62C 000/a/32486963.png - $reg = '/\s*([-\.\w]+)\s+(\d+)\s+(\d+)\s+\d+%\s+(\d{2,4}-\d{2}-\d{2} \d{2}:\d{2})\s+\w+\s+(.*)\n/i'; - preg_match_all($reg,$match[1]."\n",$matchItem); - if( !is_array($matchItem) || - count($matchItem) != 6 || - count($matchItem[0]) == 0 - ){ - return array('code'=>false,'data'=>'Match Nothing Item!'); - } - - $itemArr = array(); - for ($i = 0; $i < count($matchItem[0]); $i++) { - $mode = strtoupper($matchItem[1][$i]); - $isFolder = substr($mode,0,1) == 'D' || substr($mode,3,1) == 'D'; - $itemArr[] = array( - 'mtime' => strtotime($matchItem[4][$i]), - 'size' => $matchItem[2][$i], - 'z_size' => $matchItem[3][$i], - 'filename' => trim($matchItem[5][$i]), - 'index' => $i, - 'folder' => intval($isFolder) - ); - } - //debug_out($result,$match,$matchItem,$itemArr); - return array('code'=>true,'data'=>$itemArr); - } - static function listContent7z($file,$bin=false) { - $command = self::bin('7z').' l '.escapeShell($file); - if($bin){ - $command = $bin.escapeShell($file); - } - $result = self::run($command); - if(!$result['code']){ - return $result; - } - - preg_match('/-----------\n([\d\D]*)\n--------------/i', $result['data'], $match); - if(!is_array($match) || strlen($match[1]) < 10){ - return array('code'=>false,'data'=>'Match Nothing Content!'); - } - - //2017-03-08 11:22:16 ..... 10727 9385 000\test11.docx - //2017-03-09 13:43:10 ....A 6254 000\111.md - $reg = '/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (D?\.+A?)\s+(\d+)\s+(\d*)\s+(.*)/i'; - preg_match_all($reg,$match[1],$matchItem); - if( !is_array($matchItem) || - count($matchItem) != 6 || - count($matchItem[0]) == 0 - ){ - return array('code'=>false,'data'=>'Match Nothing Item!'); - } - - $itemArr = array(); - for ($i = 0; $i < count($matchItem[0]); $i++) { - $itemArr[] = array( - 'mtime' => strtotime($matchItem[1][$i]), - 'size' => $matchItem[3][$i], - 'z_size' => $matchItem[4][$i], - 'filename' => trim($matchItem[5][$i]), - 'index' => $i, - 'folder' => substr($matchItem[2][$i],0,1) == 'D' - ); - } - //debug_out($result,$match,$matchItem,$itemArr); - return array('code'=>true,'data'=>$itemArr);; - } - - /** - * [create description] - * @param [type] $file [creat file to] - * @param [type] $ext [ext:7z,xz,bz2,gzip,tar,zip] - * @param [type] $files [array from] - * @param boolean $passwd [password] - * @return [type] [description] - */ - // static function create($file,$files,$ext,$passwd=false) { - // $passwd = $passwd? " -p".$passwd.' ':""; - // $spearat = (PATH_SEPARATOR != ':')?("&& ".substr($files,0,2)." "):"";//win=>; linux=>: - // $command = 'cd "'.$files.'" '.$spearat.' &&';//cd到所在文件夹; - // $command = $command.self::bin().' a -r -y -t'.$ext.' '.$passwd.' "'.$file.'" *'; - // return self::run($command); - // } -} - -// 不允许双引号 -function escapeShell($param){ - return escapeshellarg($param); - //$param = escapeshellarg($param); - $os = strtoupper(substr(PHP_OS, 0,3)); - if ( $os != 'WIN' && $os != 'DAR') {//linux - $param = str_replace('!','\!',$param); - } - $param = rtrim($param,"\\"); - return '"'.str_replace(array('"',"\0",'`'),'_',$param).'"'; -} diff --git a/plugin/document/kod/app/kod/archiveLib/kodZipArchive.class.php b/plugin/document/kod/app/kod/archiveLib/kodZipArchive.class.php deleted file mode 100644 index ae3d096e8..000000000 --- a/plugin/document/kod/app/kod/archiveLib/kodZipArchive.class.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -/* -* @link http://kodcloud.com/ -* @author warlee | e-mail:kodcloud@qq.com -* @copyright warlee 2014.(Shanghai)Co.,Ltd -* @license http://kodcloud.com/tools/license/license.txt -*/ - -// ZipArchive 解压缩 -class kodZipArchive{ - static $listCache = array(); - static function support($type=''){ - $result = false; - if($type == 'extract' && defined("ZIP_ARCHIVE_LOCAL")){// 只允许创建压缩文件用系统调用 - $result = true; - } - if(!class_exists('ZipArchive')){ - $result = false; - } - return $result; - } - static function listContent($file){ - $file_hash = hash_path($file); - if(isset(self::$listCache[$file_hash])){ - return self::$listCache[$file_hash]; - } - $zip = new ZipArchive(); - $zip->open($file); - $count = $zip->numFiles; - for ($i = 0; $i < $count; $i++) { - $entry = $zip->statIndex($i); - $filename = str_replace('\\', '/', $entry['name']); - $result[] = array( - 'filename' => $entry['name'], - 'stored_filename' => $entry['name'], - 'size' => $entry['size'], - 'compressed_size' => $entry['comp_size'], - 'mtime' => $entry['mtime'], - 'index' => $i, - 'folder' => (substr($entry['name'], -1, 1) == '/'), - 'crc' => $entry['crc'] - ); - } - self::$listCache[$file_hash] = $result; - return $result; - } - /** - * [extract description] - * @param [type] $file [archive file] - * @param [type] $dest [extract to folder] - * @param string $part [archive file content] - * @return [type] [array] - */ - static function extract($file,$dest,$partName=false) { - $dest_before = $dest; - $dest = TEMP_PATH.'archivePreview/'.md5(rand_string(40).time()).'/'; - mk_dir($dest);touch(TEMP_PATH.'archivePreview/index.html'); - - $zip = new ZipArchive(); - if(!$zip->open($file)){ - return array('code'=>false,'data'=>'Can not open zip file!'); - } - - if($partName === false){ - $result = $zip->extractTo($dest); - }else{ - if(!is_array($partName)){ - $partName = array($partName); - } - $matchFiles = $partName; - //解压文件夹 - if(substr($partName[0], -1, 1) == '/'){ - $matchFiles = array(); - $list = self::listContent($file); - foreach ($list as $item) { - if ( strpos($item['filename'],$partName[0]) === 0 ) { - $matchFiles[] = $item['filename']; - } - } - } - $result = $zip->extractTo($dest,$matchFiles); - } - $zip->close(); - - //子目录解压移除多余层级目录 - if( is_array(c) ){ - $thePath = trim(str_replace("\\",'/',$partName[0]),'/'); - $pathGroup = explode('/',$thePath); - //一级目录解压不用移动 - if(count($pathGroup) > 1){ - move_path($dest.$partName[0],$dest.get_path_this($thePath)); - del_dir($dest.$pathGroup[0]); - }else{ - $dest_before = get_path_father($dest_before); - } - } - - //扩展名处理;文件名重命名处理 - $arr = dir_list($dest); - foreach($arr as $f){ - $itemPath = str_replace(array($dest,"\\"),array('','/'),$f); - $itemPath = unzip_pre_name($itemPath); - $from = $dest.get_path_father($itemPath).get_path_this($f); - if(strstr($itemPath,'/') == false){ - $from = $dest.get_path_this($f); - } - if($dest.$itemPath != $from){ - @rename($from,$dest.$itemPath); - } - } - move_path($dest,$dest_before); - del_dir(rtrim($dest,'/')); - return array('code'=>$result,'data'=>$result); - } - - /** - * [create description] - * @param [type] $file [creat file to] - * @param [type] $files [array from] - * @return [type] [description] - */ - static function create($file,$files) { - $zip = new ZipArchive(); - if(!$zip->open($file, ZipArchive::CREATE)){ - return false;//Can not open(create) zip file!' - } - foreach ($files as $key =>$val) { - $val = str_replace(array('//','\\'),'/',$val); - $removePathPre = _DIR_CLEAR(get_path_father($val)); - $list = array($val); - if(is_dir($val)){ - $list = dir_list($val); - $list[] = $val; - } - foreach ($list as $item) { - $addName = zip_pre_name(str_replace($removePathPre,'',$item)); - if(is_dir($item)){ - $result = $zip->addEmptyDir($addName); - }else{ - $result = $zip->addFile($item,$addName); - } - } - } - $zip->close(); - return $result; - } -} \ No newline at end of file diff --git a/plugin/document/kod/app/kod/archiveLib/pclerror.lib.php b/plugin/document/kod/app/kod/archiveLib/pclerror.lib.php deleted file mode 100644 index 0d923b0e9..000000000 --- a/plugin/document/kod/app/kod/archiveLib/pclerror.lib.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php -// -------------------------------------------------------------------------------- -// PhpConcept Library (PCL) Error 1.0 -// -------------------------------------------------------------------------------- -// License GNU/GPL - Vincent Blavet - Mars 2001 -// http://www.phpconcept.net & http://phpconcept.free.fr -// -------------------------------------------------------------------------------- -// Franais : -// La description de l'usage de la librairie PCL Error 1.0 n'est pas encore -// disponible. Celle-ci n'est pour le moment distribue qu'avec les -// dveloppements applicatifs de PhpConcept. -// Une version indpendante sera bientot disponible sur http://www.phpconcept.net -// -// English : -// The PCL Error 1.0 library description is not available yet. This library is -// released only with PhpConcept application and libraries. -// An independant release will be soon available on http://www.phpconcept.net -// -// -------------------------------------------------------------------------------- -// -// * Avertissement : -// -// Cette librairie a t cre de faon non professionnelle. -// Son usage est au risque et pril de celui qui l'utilise, en aucun cas l'auteur -// de ce code ne pourra tre tenu pour responsable des ventuels dgats qu'il pourrait -// engendrer. -// Il est entendu cependant que l'auteur a ralis ce code par plaisir et n'y a -// cach aucun virus, ni malveillance. -// Cette libairie est distribue sous la license GNU/GPL (http://www.gnu.org) -// -// * Auteur : -// -// Ce code a t crit par Vincent Blavet (vincent@blavet.net) sur son temps -// de loisir. -// -// -------------------------------------------------------------------------------- - -// ----- Look for double include -if (!defined("PCLERROR_LIB")) -{ - define( "PCLERROR_LIB", 1 ); - - // ----- Version - $g_pcl_error_version = "1.0"; - - // ----- Internal variables - // These values must only be change by PclError library functions - $g_pcl_error_string = ""; - $g_pcl_error_code = 1; - - - // -------------------------------------------------------------------------------- - // Function : PclErrorLog() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function PclErrorLog($p_error_code=0, $p_error_string="") - { - global $g_pcl_error_string; - global $g_pcl_error_code; - - $g_pcl_error_code = $p_error_code; - $g_pcl_error_string = $p_error_string; - - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclErrorFatal() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function PclErrorFatal($p_file, $p_line, $p_error_string="") - { - global $g_pcl_error_string; - global $g_pcl_error_code; - - $v_message = "<html><body>"; - $v_message .= "<p align=center><font color=red bgcolor=white><b>PclError Library has detected a fatal error on file '$p_file', line $p_line</b></font></p>"; - $v_message .= "<p align=center><font color=red bgcolor=white><b>$p_error_string</b></font></p>"; - $v_message .= "</body></html>"; - die($v_message); - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclErrorReset() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function PclErrorReset() - { - global $g_pcl_error_string; - global $g_pcl_error_code; - - $g_pcl_error_code = 1; - $g_pcl_error_string = ""; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclErrorCode() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function PclErrorCode() - { - global $g_pcl_error_string; - global $g_pcl_error_code; - - return($g_pcl_error_code); - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclErrorString() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function PclErrorString() - { - global $g_pcl_error_string; - global $g_pcl_error_code; - - return($g_pcl_error_string." [code $g_pcl_error_code]"); - } - // -------------------------------------------------------------------------------- - - -// ----- End of double include look -} -?> diff --git a/plugin/document/kod/app/kod/archiveLib/pcltar.lib.php b/plugin/document/kod/app/kod/archiveLib/pcltar.lib.php deleted file mode 100644 index b0ccd3bfe..000000000 --- a/plugin/document/kod/app/kod/archiveLib/pcltar.lib.php +++ /dev/null @@ -1,3795 +0,0 @@ -<?php -// -------------------------------------------------------------------------------- -// PhpConcept Library - Tar Module 1.3.1 -// -------------------------------------------------------------------------------- -// License GNU/GPL - Vincent Blavet - January 2003 -// http://www.phpconcept.net -// -------------------------------------------------------------------------------- -// -// Presentation : -// PclTar is a library that allow you to create a GNU TAR + GNU ZIP archive, -// to add files or directories, to extract all the archive or a part of it. -// So far tests show that the files generated by PclTar are readable by -// gzip tools and WinZip application. -// -// Description : -// See readme.txt (English & Français) and http://www.phpconcept.net -// -// Warning : -// This library and the associated files are non commercial, non professional -// work. -// It should not have unexpected results. However if any damage is caused by -// this software the author can not be responsible. -// The use of this software is at the risk of the user. -// -// -------------------------------------------------------------------------------- - -// changed by warlee -// add:extract filter; -// add:PCLTAR_TEMPORARY_DIR - -if(!defined('PCLTAR_TEMPORARY_DIR')){ - define('PCLTAR_TEMPORARY_DIR',''); -} - - -// ----- Look for double include -if (!defined("PCL_TAR")) -{ - define( "PCL_TAR", 1 ); - - // ----- Configuration variable - // Theses values may be changed by the user of PclTar library - if (!isset($g_pcltar_lib_dir)) - $g_pcltar_lib_dir = "lib"; - - // ----- Error codes - // -1 : Unable to open file in binary write mode - // -2 : Unable to open file in binary read mode - // -3 : Invalid parameters - // -4 : File does not exist - // -5 : Filename is too long (max. 99) - // -6 : Not a valid tar file - // -7 : Invalid extracted file size - // -8 : Unable to create directory - // -9 : Invalid archive extension - // -10 : Invalid archive format - // -11 : Unable to delete file (unlink) - // -12 : Unable to rename file (rename) - // -13 : Invalid header checksum - - -// -------------------------------------------------------------------------------- -// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED ***** -// -------------------------------------------------------------------------------- - - // ----- Global variables - $g_pcltar_version = "1.3.1"; - - // ----- Extract extension type (.php3/.php/...) - $g_pcltar_extension = substr(strrchr(basename($PATH_TRANSLATED), '.'), 1); - - // ----- Include other libraries - // This library should be called by each script before the include of PhpZip - // Library in order to limit the potential 'lib' directory path problem. - if (!defined("PCLERROR_LIB")) - { - include($g_pcltar_lib_dir."/pclerror.lib.".$g_pcltar_extension); - } - if (!defined("PCLTRACE_LIB")) - { - include($g_pcltar_lib_dir."/pcltrace.lib.".$g_pcltar_extension); - } - - // -------------------------------------------------------------------------------- - // Function : PclTarCreate() - // Description : - // Creates a new archive with name $p_tarname containing the files and/or - // directories indicated in $p_list. If the tar filename extension is - // ".tar", the file will not be compressed. If it is ".tar.gz" or ".tgz" - // it will be a gzip compressed tar archive. - // If you want to use an other extension, you must indicate the mode in - // $p_mode ("tar" or "tgz"). - // $p_add_dir and $p_remove_dir give you the ability to store a path - // which is not the real path of the files. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_mode : "tar" for normal tar archive, "tgz" for gzipped tar archive, - // if $p_mode is not specified, it will be determined by the extension. - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // Return Values : - // 1 on success, or an error code (see table at the beginning). - // -------------------------------------------------------------------------------- - function PclTarCreate($p_tarname, $p_filelist="", $p_mode="", $p_add_dir="", $p_remove_dir="") - { - TrFctStart(__FILE__, __LINE__, "PclTarCreate", "tar=$p_tarname, file='$p_filelist', mode=$p_mode, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - - // ----- Look for default mode - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - // ----- Extract the tar format from the extension - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 1, "Auto mode selected : found $p_mode"); - } - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) - { - // ----- Call the create fct - $v_result = PclTarHandleCreate($p_tarname, $p_filelist, $p_mode, $p_add_dir, $p_remove_dir); - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(" ", $p_filelist); - - // ----- Call the create fct - $v_result = PclTarHandleCreate($p_tarname, $v_list, $p_mode, $p_add_dir, $p_remove_dir); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type p_filelist"); - $v_result = -3; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarAdd() - // Description : - // PLEASE DO NOT USE ANY MORE THIS FUNCTION. Use PclTarAddList(). - // - // This function is maintained only for compatibility reason - // - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // Return Values : - // 1 on success, - // Or an error code (see list on top). - // -------------------------------------------------------------------------------- - function PclTarAdd($p_tarname, $p_filelist) - { - TrFctStart(__FILE__, __LINE__, "PclTarAdd", "tar=$p_tarname, file=$p_filelist"); - $v_result=1; - $v_list_detail = array(); - - // ----- Extract the tar format from the extension - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) - { - // ----- Call the add fct - $v_result = PclTarHandleAppend($p_tarname, $p_filelist, $p_mode, $v_list_detail, "", ""); - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(" ", $p_filelist); - - // ----- Call the add fct - $v_result = PclTarHandleAppend($p_tarname, $v_list, $p_mode, $v_list_detail, "", ""); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type p_filelist"); - $v_result = -3; - } - - // ----- Cleaning - unset($v_list_detail); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarAddList() - // Description : - // Add a list of files or directories ($p_filelist) in the tar archive $p_tarname. - // The list can be an array of file/directory names or a string with names - // separated by one space. - // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is - // different from the real path of the file. This is usefull if you want to have PclTar - // running in any directory, and memorize relative path from an other directory. - // If $p_mode is not set it will be automatically computed from the $p_tarname - // extension (.tar, .tar.gz or .tgz). - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // 1 on success, - // Or an error code (see list on top). - // -------------------------------------------------------------------------------- - function PclTarAddList($p_tarname, $p_filelist, $p_add_dir="", $p_remove_dir="", $p_mode="") - { - TrFctStart(__FILE__, __LINE__, "PclTarAddList", "tar=$p_tarname, file=$p_filelist, p_add_dir='$p_add_dir', p_remove_dir='$p_remove_dir', mode=$p_mode"); - $v_result=1; - $p_list_detail = array(); - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - } - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) - { - // ----- Call the add fct - $v_result = PclTarHandleAppend($p_tarname, $p_filelist, $p_mode, $p_list_detail, $p_add_dir, $p_remove_dir); - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(" ", $p_filelist); - - // ----- Call the add fct - $v_result = PclTarHandleAppend($p_tarname, $v_list, $p_mode, $p_list_detail, $p_add_dir, $p_remove_dir); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type p_filelist"); - $v_result = -3; - } - - // ----- Return - if ($v_result != 1) - { - TrFctEnd(__FILE__, __LINE__, 0); - return 0; - } - TrFctEnd(__FILE__, __LINE__, $p_list_detail); - return $p_list_detail; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarList() - // Description : - // Gives the list of all the files present in the tar archive $p_tarname. - // The list is the function result, it will be 0 on error. - // Depending on the $p_tarname extension (.tar, .tar.gz or .tgz) the - // function will determine the type of the archive. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // 0 on error (Use PclErrorCode() and PclErrorString() for more info) - // or - // An array containing file properties. Each file properties is an array of - // properties. - // The properties (array field names) are : - // filename, size, mode, uid, gid, mtime, typeflag, status - // Exemple : $v_list = PclTarList("my.tar"); - // for ($i=0; $i<sizeof($v_list); $i++) - // echo "Filename :'".$v_list[$i][filename]."'<br>"; - // -------------------------------------------------------------------------------- - function PclTarList($p_tarname, $p_mode="") - { - TrFctStart(__FILE__, __LINE__, "PclTarList", "tar=$p_tarname, mode='$p_mode'"); - $v_result=1; - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Call the extracting fct - $p_list = array(); - if (($v_result = PclTarHandleExtract($p_tarname, 0, $p_list, "list", "", $p_mode, "")) != 1) - { - unset($p_list); - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarExtract() - // Description : - // Extract all the files present in the archive $p_tarname, in the directory - // $p_path. The relative path of the archived files are keep and become - // relative to $p_path. - // If a file with the same name already exists it will be replaced. - // If the path to the file does not exist, it will be created. - // Depending on the $p_tarname extension (.tar, .tar.gz or .tgz) the - // function will determine the type of the archive. - // Parameters : - // $p_tarname : Name of an existing tar file. - // $p_path : Path where the files will be extracted. The files will use - // their memorized path from $p_path. - // If $p_path is "", files will be extracted in "./". - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_path and $p_remove_path are commulative. - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // Same as PclTarList() - // -------------------------------------------------------------------------------- - function PclTarExtract($p_tarname, $p_path="./", $p_remove_path="", $p_mode="") - { - TrFctStart(__FILE__, __LINE__, "PclTarExtract", "tar='$p_tarname', path='$p_path', remove_path='$p_remove_path', mode='$p_mode'"); - $v_result=1; - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Call the extracting fct - if (($v_result = PclTarHandleExtract($p_tarname, 0, $p_list, "complete", $p_path, $v_tar_mode, $p_remove_path)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarExtractList() - // Description : - // Extract the files present in the archive $p_tarname and specified in - // $p_filelist, in the directory - // $p_path. The relative path of the archived files are keep and become - // relative to $p_path. - // If a directory is spécified in the list, all the files from this directory - // will be extracted. - // If a file with the same name already exists it will be replaced. - // If the path to the file does not exist, it will be created. - // Depending on the $p_tarname extension (.tar, .tar.gz or .tgz) the - // function will determine the type of the archive. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_path : Path where the files will be extracted. The files will use - // their memorized path from $p_path. - // If $p_path is "", files will be extracted in "./". - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_path and $p_remove_path are commulative. - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // Same as PclTarList() - // -------------------------------------------------------------------------------- - function PclTarExtractList($p_tarname, $p_filelist, $p_path="./", $p_remove_path="", $p_mode="") - { - TrFctStart(__FILE__, __LINE__, "PclTarExtractList", "tar=$p_tarname, list, path=$p_path, remove_path='$p_remove_path', mode='$p_mode'"); - $v_result=1; - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) - { - // ----- Call the extracting fct - if (($v_result = PclTarHandleExtract($p_tarname, $p_filelist, $p_list, "partial", $p_path, $v_tar_mode, $p_remove_path)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(" ", $p_filelist); - - // ----- Call the extracting fct - if (($v_result = PclTarHandleExtract($p_tarname, $v_list, $p_list, "partial", $p_path, $v_tar_mode, $p_remove_path)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type p_filelist"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarExtractIndex() - // Description : - // Extract the files present in the archive $p_tarname and specified at - // the indexes in $p_index, in the directory - // $p_path. The relative path of the archived files are keep and become - // relative to $p_path. - // If a directory is specified in the list, the directory only is created. All - // the file stored in this archive for this directory - // are not extracted. - // If a file with the same name already exists it will be replaced. - // If the path to the file does not exist, it will be created. - // Depending on the $p_tarname extension (.tar, .tar.gz or .tgz) the - // function will determine the type of the archive. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_index : A single index (integer) or a string of indexes of files to - // extract. The form of the string is "0,4-6,8-12" with only numbers - // and '-' for range or ',' to separate ranges. No spaces or ';' - // are allowed. - // $p_path : Path where the files will be extracted. The files will use - // their memorized path from $p_path. - // If $p_path is "", files will be extracted in "./". - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_path and $p_remove_path are commulative. - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // Same as PclTarList() - // -------------------------------------------------------------------------------- - function PclTarExtractIndex($p_tarname, $p_index, $p_path="./", $p_remove_path="", $p_mode="") - { - TrFctStart(__FILE__, __LINE__, "PclTarExtractIndex", "tar=$p_tarname, index='$p_index', path=$p_path, remove_path='$p_remove_path', mode='$p_mode'"); - $v_result=1; - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Look if the $p_index is really an integer - if (is_integer($p_index)) - { - // ----- Call the extracting fct - if (($v_result = PclTarHandleExtractByIndexList($p_tarname, "$p_index", $p_list, $p_path, $p_remove_path, $v_tar_mode)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_index)) - { - // ----- Call the extracting fct - if (($v_result = PclTarHandleExtractByIndexList($p_tarname, $p_index, $p_list, $p_path, $p_remove_path, $v_tar_mode)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type $p_index"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarDelete() - // Description : - // This function deletes from the archive $p_tarname the files which are listed - // in $p_filelist. $p_filelist can be a string with file names separated by - // spaces, or an array containing the file names. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_filelist : An array or a string containing file names to remove from the - // archive. - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // List of the files which are kept in the archive (same format as PclTarList()) - // -------------------------------------------------------------------------------- - function PclTarDelete($p_tarname, $p_filelist, $p_mode="") - { - TrFctStart(__FILE__, __LINE__, "PclTarDelete", "tar='$p_tarname', list='$p_filelist', mode='$p_mode'"); - $v_result=1; - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) - { - // ----- Call the extracting fct - if (($v_result = PclTarHandleDelete($p_tarname, $p_filelist, $p_list, $p_mode)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(" ", $p_filelist); - - // ----- Call the extracting fct - if (($v_result = PclTarHandleDelete($p_tarname, $v_list, $p_list, $p_mode)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type p_filelist"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarUpdate() - // Description : - // This function updates the files in $p_filelist which are already in the - // $p_tarname archive with an older last modified date. If the file does not - // exist, it is added at the end of the archive. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_filelist : An array or a string containing file names to update from the - // archive. - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // Return Values : - // List of the files contained in the archive. The field status contains - // "updated", "not_updated", "added" or "ok" for the files not concerned. - // -------------------------------------------------------------------------------- - function PclTarUpdate($p_tarname, $p_filelist, $p_mode="", $p_add_dir="", $p_remove_dir="") - { - TrFctStart(__FILE__, __LINE__, "PclTarUpdate", "tar='$p_tarname', list='$p_filelist', mode='$p_mode'"); - $v_result=1; - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) - { - // ----- Call the extracting fct - if (($v_result = PclTarHandleUpdate($p_tarname, $p_filelist, $p_list, $p_mode, $p_add_dir, $p_remove_dir)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) - { - // ----- Create a list with the elements from the string - $v_list = explode(" ", $p_filelist); - - // ----- Call the extracting fct - if (($v_result = PclTarHandleUpdate($p_tarname, $v_list, $p_list, $p_mode, $p_add_dir, $p_remove_dir)) != 1) - { - TrFctEnd(__FILE__, __LINE__, 0, PclErrorString()); - return(0); - } - } - - // ----- Invalid variable - else - { - // ----- Error log - PclErrorLog(-3, "Invalid variable type p_filelist"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $p_list); - return $p_list; - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : PclTarMerge() - // Description : - // This function add the content of $p_tarname_add at the end of $p_tarname. - // Parameters : - // $p_tarname : Name of an existing tar file - // $p_tarname_add : Name of an existing tar file taht will be added at the end - // of $p_tarname. - // $p_mode : 'tar' or 'tgz', if not set, will be determined by $p_tarname extension - // $p_mode_add : 'tar' or 'tgz', if not set, will be determined by $p_tarname_add - // extension - // Return Values : - // List of the files contained in the archive. The field status contains - // "updated", "not_updated", "added" or "ok" for the files not concerned. - // -------------------------------------------------------------------------------- - function PclTarMerge($p_tarname, $p_tarname_add, $p_mode="", $p_mode_add="") - { - TrFctStart(__FILE__, __LINE__, "PclTarMerge", "tar='$p_tarname', tar_add='$p_tarname_add', mode='$p_mode', mode_add='$p_mode_add'"); - $v_result=1; - - // ----- Check the parameters - if (($p_tarname == "") || ($p_tarname_add == "")) - { - // ----- Error log - PclErrorLog(-3, "Invalid empty archive name"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Extract the tar format from the extension - if (($p_mode == "") || (($p_mode!="tar") && ($p_mode!="tgz"))) - { - if (($p_mode = PclTarHandleExtension($p_tarname)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - if (($p_mode_add == "") || (($p_mode_add!="tar") && ($p_mode_add!="tgz"))) - { - if (($p_mode_add = PclTarHandleExtension($p_tarname_add)) == "") - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return 0; - } - } - - // ----- Clear filecache - clearstatcache(); - - // ----- Check the file size - if ((!is_file($p_tarname)) || - (((($v_size = filesize($p_tarname)) % 512) != 0) && ($p_mode=="tar"))) - { - // ----- Error log - if (!is_file($p_tarname)) - PclErrorLog(-4, "Archive '$p_tarname' does not exist"); - else - PclErrorLog(-6, "Archive '$p_tarname' has invalid size ".filesize($p_tarname)."(not a 512 block multiple)"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - if ((!is_file($p_tarname_add)) || - (((($v_size_add = filesize($p_tarname_add)) % 512) != 0) && ($p_mode_add=="tar"))) - { - // ----- Error log - if (!is_file($p_tarname_add)) - PclErrorLog(-4, "Archive '$p_tarname_add' does not exist"); - else - PclErrorLog(-6, "Archive '$p_tarname_add' has invalid size ".filesize($p_tarname_add)."(not a 512 block multiple)"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Look for compressed archive - if ($p_mode == "tgz") - { - // ----- Open the file in read mode - if (($p_tar = @gzopen($p_tarname, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open a temporary file in write mode - $v_temp_tarname = PCLTAR_TEMPORARY_DIR.uniqid("pcltar-").".tmp";//add by warlee; - TrFctMessage(__FILE__, __LINE__, 2, "Creating temporary archive file $v_temp_tarname"); - if (($v_temp_tar = @gzopen($v_temp_tarname, "wb")) == 0) - { - // ----- Close tar file - gzclose($p_tar); - - // ----- Error log - PclErrorLog(-1, "Unable to open file '$v_temp_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Read the first 512 bytes block - $v_buffer = gzread($p_tar, 512); - - // ----- Read the following blocks but not the last one - if (!gzeof($p_tar)) - { - TrFctMessage(__FILE__, __LINE__, 3, "More than one 512 block file"); - $i=1; - - // ----- Read new 512 block and write the already read - do{ - // ----- Write the already read block - $v_binary_data = pack("a512", "$v_buffer"); - gzputs($v_temp_tar, $v_binary_data); - - $i++; - TrFctMessage(__FILE__, __LINE__, 3, "Reading block $i"); - - // ----- Read next block - $v_buffer = gzread($p_tar, 512); - - } while (!gzeof($p_tar)); - - TrFctMessage(__FILE__, __LINE__, 3, "$i 512 bytes blocks"); - } - } - - // ----- Look for uncompressed tar file - else if ($p_mode=="tar") - { - // ----- Open the tar file - if (($p_tar = fopen($p_tarname, "r+b")) == 0) - { - // ----- Error log - PclErrorLog(-1, "Unable to open file '$p_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Go to the beginning of last block - TrFctMessage(__FILE__, __LINE__, 4, "Position before :".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - fseek($p_tar, $v_size-512); - TrFctMessage(__FILE__, __LINE__, 4, "Position after :".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - } - - // ----- Look for unknown type - else - { - // ----- Error log - PclErrorLog(-3, "Invalid tar mode $p_mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Look for type of archive to add - if ($p_mode_add == "tgz") - { - TrFctMessage(__FILE__, __LINE__, 4, "Opening file $p_tarname_add"); - - // ----- Open the file in read mode - if (($p_tar_add = @gzopen($p_tarname_add, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname_add' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Read the first 512 bytes block - $v_buffer = gzread($p_tar_add, 512); - - // ----- Read the following blocks but not the last one - if (!gzeof($p_tar_add)) - { - TrFctMessage(__FILE__, __LINE__, 3, "More than one 512 block file"); - $i=1; - - // ----- Read new 512 block and write the already read - do{ - // ----- Write the already read block - $v_binary_data = pack("a512", "$v_buffer"); - if ($p_mode=="tar") - fputs($p_tar, $v_binary_data); - else - gzputs($v_temp_tar, $v_binary_data); - - $i++; - TrFctMessage(__FILE__, __LINE__, 3, "Reading block $i"); - - // ----- Read next block - $v_buffer = gzread($p_tar_add, 512); - - } while (!gzeof($p_tar_add)); - - TrFctMessage(__FILE__, __LINE__, 3, "$i 512 bytes blocks"); - } - - // ----- Close the files - gzclose($p_tar_add); - } - - // ----- Look for uncompressed tar file - else if ($p_mode=="tar") - { - // ----- Open the file in read mode - if (($p_tar_add = @fopen($p_tarname_add, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname_add' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Read the first 512 bytes block - $v_buffer = fread($p_tar_add, 512); - - // ----- Read the following blocks but not the last one - if (!feof($p_tar_add)) - { - TrFctMessage(__FILE__, __LINE__, 3, "More than one 512 block file"); - $i=1; - - // ----- Read new 512 block and write the already read - do{ - // ----- Write the already read block - $v_binary_data = pack("a512", "$v_buffer"); - if ($p_mode=="tar") - fputs($p_tar, $v_binary_data); - else - gzputs($v_temp_tar, $v_binary_data); - - $i++; - TrFctMessage(__FILE__, __LINE__, 3, "Reading block $i"); - - // ----- Read next block - $v_buffer = fread($p_tar_add, 512); - - } while (!feof($p_tar_add)); - - TrFctMessage(__FILE__, __LINE__, 3, "$i 512 bytes blocks"); - } - - // ----- Close the files - fclose($p_tar_add); - } - - // ----- Call the footer of the tar archive - $v_result = PclTarHandleFooter($p_tar, $p_mode); - - // ----- Look for closing compressed archive - if ($p_mode == "tgz") - { - // ----- Close the files - gzclose($p_tar); - gzclose($v_temp_tar); - - // ----- Unlink tar file - if (!@unlink($p_tarname)) - { - // ----- Error log - PclErrorLog(-11, "Error while deleting archive name $p_tarname"); - } - - // ----- Rename tar file - if (!@rename($v_temp_tarname, $p_tarname)) - { - // ----- Error log - PclErrorLog(-12, "Error while renaming temporary file $v_temp_tarname to archive name $p_tarname"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for closing uncompressed tar file - else if ($p_mode=="tar") - { - // ----- Close the tarfile - fclose($p_tar); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - -// -------------------------------------------------------------------------------- -// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** -// ***** ***** -// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** -// -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleCreate() - // Description : - // Parameters : - // $p_tarname : Name of the tar file - // $p_list : An array containing the file or directory names to add in the tar - // $p_mode : "tar" for normal tar archive, "tgz" for gzipped tar archive - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleCreate($p_tarname, $p_list, $p_mode, $p_add_dir="", $p_remove_dir="") - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleCreate", "tar=$p_tarname, list, mode=$p_mode, add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - $v_list_detail = array(); - - // ----- Check the parameters - if (($p_tarname == "") || (($p_mode != "tar") && ($p_mode != "tgz"))) - { - // ----- Error log - if ($p_tarname == "") - PclErrorLog(-3, "Invalid empty archive name"); - else - PclErrorLog(-3, "Unknown mode '$p_mode'"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Look for tar file - if ($p_mode == "tar") - { - // ----- Open the tar file - if (($p_tar = fopen($p_tarname, "wb")) == 0) - { - // ----- Error log - PclErrorLog(-1, "Unable to open file [$p_tarname] in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - // ----- Call the adding fct inside the tar - if (($v_result = PclTarHandleAddList($p_tar, $p_list, $p_mode, $v_list_detail, $p_add_dir, $p_remove_dir)) == 1) - { - // ----- Call the footer of the tar archive - $v_result = PclTarHandleFooter($p_tar, $p_mode); - } - - // ----- Close the tarfile - fclose($p_tar); - } - // ----- Look for tgz file - else - { - // ----- Open the tar file - if (($p_tar = @gzopen($p_tarname, "wb")) == 0) - { - // ----- Error log - PclErrorLog(-1, "Unable to open file [$p_tarname] in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Call the adding fct inside the tar - if (($v_result = PclTarHandleAddList($p_tar, $p_list, $p_mode, $v_list_detail, $p_add_dir, $p_remove_dir)) == 1) - { - // ----- Call the footer of the tar archive - $v_result = PclTarHandleFooter($p_tar, $p_mode); - } - - // ----- Close the tarfile - gzclose($p_tar); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleAppend() - // Description : - // Parameters : - // $p_tarname : Name of the tar file - // $p_list : An array containing the file or directory names to add in the tar - // $p_mode : "tar" for normal tar archive, "tgz" for gzipped tar archive - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleAppend($p_tarname, $p_list, $p_mode, &$p_list_detail, $p_add_dir, $p_remove_dir) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleAppend", "tar=$p_tarname, list, mode=$p_mode"); - $v_result=1; - - // ----- Check the parameters - if ($p_tarname == "") - { - // ----- Error log - PclErrorLog(-3, "Invalid empty archive name"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - clearstatcache(); - - // ----- Check the file size - if ((!is_file($p_tarname)) || - (((($v_size = filesize($p_tarname)) % 512) != 0) && ($p_mode=="tar"))) - { - // ----- Error log - if (!is_file($p_tarname)) - PclErrorLog(-4, "Archive '$p_tarname' does not exist"); - else - PclErrorLog(-6, "Archive '$p_tarname' has invalid size ".filesize($p_tarname)."(not a 512 block multiple)"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Look for compressed archive - if ($p_mode == "tgz") - { - // ----- Open the file in read mode - if (($p_tar = @gzopen($p_tarname, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open a temporary file in write mode - $v_temp_tarname = PCLTAR_TEMPORARY_DIR.uniqid("pcltar-").".tmp";//add by warlee; - TrFctMessage(__FILE__, __LINE__, 2, "Creating temporary archive file $v_temp_tarname"); - if (($v_temp_tar = @gzopen($v_temp_tarname, "wb")) == 0) - { - // ----- Close tar file - gzclose($p_tar); - - // ----- Error log - PclErrorLog(-1, "Unable to open file '$v_temp_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Read the first 512 bytes block - $v_buffer = gzread($p_tar, 512); - - // ----- Read the following blocks but not the last one - if (!gzeof($p_tar)) - { - TrFctMessage(__FILE__, __LINE__, 3, "More than one 512 block file"); - $i=1; - - // ----- Read new 512 block and write the already read - do{ - // ----- Write the already read block - $v_binary_data = pack("a512", "$v_buffer"); - gzputs($v_temp_tar, $v_binary_data); - - $i++; - TrFctMessage(__FILE__, __LINE__, 3, "Reading block $i"); - - // ----- Read next block - $v_buffer = gzread($p_tar, 512); - - } while (!gzeof($p_tar)); - - TrFctMessage(__FILE__, __LINE__, 3, "$i 512 bytes blocks"); - } - - // ----- Call the adding fct inside the tar - if (($v_result = PclTarHandleAddList($v_temp_tar, $p_list, $p_mode, $p_list_detail, $p_add_dir, $p_remove_dir)) == 1) - { - // ----- Call the footer of the tar archive - $v_result = PclTarHandleFooter($v_temp_tar, $p_mode); - } - - // ----- Close the files - gzclose($p_tar); - gzclose($v_temp_tar); - - // ----- Unlink tar file - if (!@unlink($p_tarname)) - { - // ----- Error log - PclErrorLog(-11, "Error while deleting archive name $p_tarname"); - } - - // ----- Rename tar file - if (!@rename($v_temp_tarname, $p_tarname)) - { - // ----- Error log - PclErrorLog(-12, "Error while renaming temporary file $v_temp_tarname to archive name $p_tarname"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for uncompressed tar file - else if ($p_mode=="tar") - { - // ----- Open the tar file - if (($p_tar = fopen($p_tarname, "r+b")) == 0) - { - // ----- Error log - PclErrorLog(-1, "Unable to open file '$p_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Go to the beginning of last block - TrFctMessage(__FILE__, __LINE__, 4, "Position before :".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - fseek($p_tar, $v_size-512); - TrFctMessage(__FILE__, __LINE__, 4, "Position after :".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - - // ----- Call the adding fct inside the tar - if (($v_result = PclTarHandleAddList($p_tar, $p_list, $p_mode, $p_list_detail, $p_add_dir, $p_remove_dir)) == 1) - { - // ----- Call the footer of the tar archive - $v_result = PclTarHandleFooter($p_tar, $p_mode); - } - - // ----- Close the tarfile - fclose($p_tar); - } - - // ----- Look for unknown type - else - { - // ----- Error log - PclErrorLog(-3, "Invalid tar mode $p_mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleAddList() - // Description : - // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is - // different from the real path of the file. This is usefull if you want to have PclTar - // running in any directory, and memorize relative path from an other directory. - // Parameters : - // $p_tar : File descriptor of the tar archive - // $p_list : An array containing the file or directory names to add in the tar - // $p_mode : "tar" for normal tar archive, "tgz" for gzipped tar archive - // $p_list_detail : list of added files with their properties (specially the status field) - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleAddList($p_tar, $p_list, $p_mode, &$p_list_detail, $p_add_dir, $p_remove_dir) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleAddList", "tar='$p_tar', list, mode='$p_mode', add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - $v_header = array(); - - // ----- Recuperate the current number of elt in list - $v_nb = sizeof($p_list_detail); - - // ----- Check the parameters - if ($p_tar == 0) - { - // ----- Error log - PclErrorLog(-3, "Invalid file descriptor in file ".__FILE__.", line ".__LINE__); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Check the arguments - if (sizeof($p_list) == 0) - { - // ----- Error log - PclErrorLog(-3, "Invalid file list parameter (invalid or empty list)"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Loop on the files - for ($j=0; ($j<count($p_list)) && ($v_result==1); $j++) - { - // ----- Recuperate the filename - $p_filename = $p_list[$j]; - - TrFctMessage(__FILE__, __LINE__, 2, "Looking for file [$p_filename]"); - - // ----- Skip empty file names - if ($p_filename == "") - { - TrFctMessage(__FILE__, __LINE__, 2, "Skip empty filename"); - continue; - } - - // ----- Check the filename - if (!file_exists($p_filename)) - { - // ----- Error log - TrFctMessage(__FILE__, __LINE__, 2, "File '$p_filename' does not exists"); - PclErrorLog(-4, "File '$p_filename' does not exists"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Check the path length - if (strlen($p_filename) > 999)//change by warlee;99=>999 - { - // ----- Error log - PclErrorLog(-5, "File name is too long (max. 99) : '$p_filename'"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - TrFctMessage(__FILE__, __LINE__, 4, "File position before header =".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - - // ----- Add the file - if (($v_result = PclTarHandleAddFile($p_tar, $p_filename, $p_mode, $v_header, $p_add_dir, $p_remove_dir)) != 1) - { - // ----- Return status - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the file infos - $p_list_detail[$v_nb++] = $v_header; - // ----- Look for directory - if (is_dir($p_filename)) - { - TrFctMessage(__FILE__, __LINE__, 2, "$p_filename is a directory"); - - // ----- Look for path - if ($p_filename != ".") - $v_path = $p_filename."/"; - else - $v_path = ""; - - // ----- Read the directory for files and sub-directories - $p_hdir = opendir($p_filename); - - // changed by warlee;php7以后 目录第一二个不一定是. 和.. - // $p_hitem = readdir($p_hdir); // '.' directory - // $p_hitem = readdir($p_hdir); // '..' directory - while ($p_hitem = readdir($p_hdir)) - { - //add by warlee; - if ($p_hitem == "." || $p_hitem == "..") { - continue; - } - - // ----- Look for a file - if (is_file($v_path.$p_hitem)) - { - TrFctMessage(__FILE__, __LINE__, 4, "Add the file '".$v_path.$p_hitem."'"); - - // ----- Add the file - if (($v_result = PclTarHandleAddFile($p_tar, $v_path.$p_hitem, $p_mode, $v_header, $p_add_dir, $p_remove_dir)) != 1) - { - // ----- Return status - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Store the file infos - $p_list_detail[$v_nb++] = $v_header; - } - - // ----- Recursive call to PclTarHandleAddFile() - else - { - TrFctMessage(__FILE__, __LINE__, 4, "'".$v_path.$p_hitem."' is a directory"); - - // ----- Need an array as parameter - $p_temp_list[0] = $v_path.$p_hitem; - $v_result = PclTarHandleAddList($p_tar, $p_temp_list, $p_mode, $p_list_detail, $p_add_dir, $p_remove_dir); - } - } - - // ----- Free memory for the recursive loop - unset($p_temp_list); - unset($p_hdir); - unset($p_hitem); - } - else - { - TrFctMessage(__FILE__, __LINE__, 4, "File position after blocks =".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - } - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleAddFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleAddFile($p_tar, $p_filename, $p_mode, &$p_header, $p_add_dir, $p_remove_dir) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleAddFile", "tar='$p_tar', filename='$p_filename', p_mode='$p_mode', add_dir='$p_add_dir', remove_dir='$p_remove_dir'"); - $v_result=1; - - // ----- Check the parameters - if ($p_tar == 0) - { - // ----- Error log - PclErrorLog(-3, "Invalid file descriptor in file ".__FILE__.", line ".__LINE__); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Skip empty file names - if ($p_filename == "") - { - // ----- Error log - PclErrorLog(-3, "Invalid file list parameter (invalid or empty list)"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Calculate the stored filename - $v_stored_filename = $p_filename; - if ($p_remove_dir != "") - { - if (substr($p_remove_dir, -1) != '/') - $p_remove_dir .= "/"; - - if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) - { - if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) - $p_remove_dir = "./".$p_remove_dir; - if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) - $p_remove_dir = substr($p_remove_dir, 2); - } - - if (substr($p_filename, 0, strlen($p_remove_dir)) == $p_remove_dir) - { - $v_stored_filename = substr($p_filename, strlen($p_remove_dir)); - TrFctMessage(__FILE__, __LINE__, 3, "Remove path '$p_remove_dir' in file '$p_filename' = '$v_stored_filename'"); - } - } - if ($p_add_dir != "") - { - if (substr($p_add_dir, -1) == "/") - $v_stored_filename = $p_add_dir.$v_stored_filename; - else - $v_stored_filename = $p_add_dir."/".$v_stored_filename; - TrFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_filename' = '$v_stored_filename'"); - } - - //add by warlee; 压缩:设置文件名编码 - if(function_exists('zip_pre_name')){ - $temp_store_name = $v_stored_filename; - $v_stored_filename = zip_pre_name($v_stored_filename,'utf-8'); - if($v_stored_filename == ''){ - $v_stored_filename = $temp_store_name; - } - } - - // ----- Check the path length - if (strlen($v_stored_filename) > 999) //add by warlee; 99=>999 - { - // ----- Error log - PclErrorLog(-5, "Stored file name is too long (max. 99) : '$v_stored_filename'"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - // ----- Look for a file - if (is_file($p_filename)) - { - // ----- Open the source file - if (($v_file = fopen($p_filename, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_filename' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Call the header generation - if (($v_result = PclTarHandleHeader($p_tar, $p_filename, $p_mode, $p_header, $v_stored_filename)) != 1) - { - // ----- Return status - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - TrFctMessage(__FILE__, __LINE__, 4, "File position after header =".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - - // ----- Read the file by 512 octets blocks - $i=0; - while (($v_buffer = fread($v_file, 512)) != "") - { - $v_binary_data = pack("a512", "$v_buffer"); - if ($p_mode == "tar") - fputs($p_tar, $v_binary_data); - else - gzputs($p_tar, $v_binary_data); - $i++; - } - TrFctMessage(__FILE__, __LINE__, 2, "$i 512 bytes blocks"); - - // ----- Close the file - fclose($v_file); - - TrFctMessage(__FILE__, __LINE__, 4, "File position after blocks =".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - } - - // ----- Look for a directory - else - { - // ----- Call the header generation - if (($v_result = PclTarHandleHeader($p_tar, $p_filename, $p_mode, $p_header, $v_stored_filename)) != 1) - { - // ----- Return status - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - TrFctMessage(__FILE__, __LINE__, 4, "File position after header =".($p_mode=="tar"?ftell($p_tar):gztell($p_tar))); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleHeader() - // Description : - // This function creates in the TAR $p_tar, the TAR header for the file - // $p_filename. - // - // 1. The informations needed to compose the header are recuperated and formatted - // 2. Two binary strings are composed for the first part of the header, before - // and after checksum field. - // 3. The checksum is calculated from the two binary strings - // 4. The header is write in the tar file (first binary string, binary string - // for checksum and last binary string). - // Parameters : - // $p_tar : a valid file descriptor, opened in write mode, - // $p_filename : The name of the file the header is for, - // $p_mode : The mode of the archive ("tar" or "tgz"). - // $p_header : A pointer to a array where will be set the file properties - // Return Values : - // -------------------------------------------------------------------------------- - - //长文件名处理,将文件名存储为文件 - function PclTarHandleHeaderAdd($p_tar,$p_mode,$name, $uid, $gid, $perm, $size, $mtime, $typeflag = ''){ - // handle filename length restrictions - $prefix = ''; - $namelen = strlen($name); - - $uid = sprintf("%6s ", decoct($uid)); - $gid = sprintf("%6s ", decoct($gid)); - $perm = sprintf("%6s ", decoct($perm)); - $size = sprintf("%11s ", decoct($size)); - $mtime = sprintf("%11s", decoct($mtime)); - $data_first = pack("a100a8a8a8a12A12", $name, $perm, $uid, $gid, $size, $mtime); - $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $typeflag, '', 'ustar', '', '', '', '', '', $prefix, ""); - for ($i = 0, $chks = 0; $i < 148; $i++) { - $chks += ord($data_first[$i]); - } - for ($i = 156, $chks += 256, $j = 0; $i < 512; $i++, $j++) { - $chks += ord($data_last[$j]); - } - if ($p_mode == "tar"){ - fputs($p_tar, $data_first); - }else{ - gzputs($p_tar, $data_first); - } - - $chks = pack("a8", sprintf("%6s ", decoct($chks))); - if ($p_mode == "tar"){ - fputs($p_tar, $chks.$data_last); - }else{ - gzputs($p_tar, $chks.$data_last); - } - } - - //add by warlee; 文件名长度大于100的问题解决 - function PclTarHandleHeaderLong($p_tar, $p_mode, $p_filename){ - $v_size = sprintf("%11s ", DecOct(strlen($p_filename))); - $v_typeflag = 'L'; - $v_linkname = ''; - $v_magic = ''; - $v_version = ''; - $v_uname = ''; - $v_gname = ''; - $v_devmajor = ''; - $v_devminor = ''; - $v_prefix = ''; - $v_binary_data_first = pack("a100a8a8a8a12A12", '././@LongLink', 0, 0, 0, $v_size, 0); - $v_binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", $v_typeflag, $v_linkname, $v_magic, $v_version, $v_uname, $v_gname, $v_devmajor, $v_devminor, $v_prefix, ''); - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - $v_checksum += ord(substr($v_binary_data_first,$i,1)); - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - $v_checksum += ord(' '); - // ..... Last part of the header - for ($i=156, $j=0; $i<512; $i++, $j++) - $v_checksum += ord(substr($v_binary_data_last,$j,1)); - // ----- Write the first 148 bytes of the header in the archive - if ($p_mode == "tar"){ - fputs($p_tar, $v_binary_data_first); - }else{ - gzputs($p_tar, $v_binary_data_first); - } - - // ----- Write the calculated checksum - $v_checksum = sprintf("%6s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - if ($p_mode == "tar"){ - fputs($p_tar, $v_binary_data); - }else{ - gzputs($p_tar, $v_binary_data); - } - if ($p_mode == "tar"){ - fputs($p_tar, $v_binary_data_last); - }else{ - gzputs($p_tar, $v_binary_data_last); - } - $i=0; - while (($v_buffer = substr($p_filename, (($i++)*512), 512)) != '') { - $v_binary_data = pack("a512", "$v_buffer"); - if ($p_mode == "tar"){ - fputs($p_tar, $v_binary_data); - }else{ - gzputs($p_tar, $v_binary_data); - } - } - return true; - } - - function PclTarHandleHeader($p_tar, $p_filename, $p_mode, &$p_header, $p_stored_filename) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleHeader", "tar=$p_tar, file='$p_filename', mode='$p_mode', stored_filename='$p_stored_filename'"); - $v_result=1; - - // ----- Check the parameters - if (($p_tar == 0) || ($p_filename == "")) - { - // ----- Error log - PclErrorLog(-3, "Invalid file descriptor in file ".__FILE__.", line ".__LINE__); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - // ----- Filename (reduce the path of stored name) - if ($p_stored_filename == "") - $p_stored_filename = $p_filename; - - $v_reduce_filename = PclTarHandlePathReduction($p_stored_filename); - - - //add by warlee; 文件名长度大于100的问题解决 - if (strlen($v_reduce_filename) > 100) { - PclTarHandleHeaderLong($p_tar, $p_mode, $v_reduce_filename); - } - - - TrFctMessage(__FILE__, __LINE__, 2, "Filename (reduced) '$v_reduce_filename', strlen ".strlen($v_reduce_filename)); - // ----- Get file info - $v_info = stat($p_filename); - $v_uid = sprintf("%6s ", DecOct($v_info[4])); - $v_gid = sprintf("%6s ", DecOct($v_info[5])); - TrFctMessage(__FILE__, __LINE__, 3, "uid=$v_uid, gid=$v_gid"); - $v_perms = sprintf("%6s ", DecOct(fileperms($p_filename))); - TrFctMessage(__FILE__, __LINE__, 3, "file permissions $v_perms"); - - // ----- File mtime - $v_mtime_data = filemtime($p_filename); - TrFctMessage(__FILE__, __LINE__, 2, "File mtime : $v_mtime_data"); - $v_mtime = sprintf("%11s", DecOct($v_mtime_data)); - - // ----- File typeflag - // '0' or '\0' is the code for regular file - // '5' is directory - if (is_dir($p_filename)) - { - $v_typeflag = "5"; - $v_size = 0; - } - else - { - $v_typeflag = ""; - - // ----- Get the file size - clearstatcache(); - $v_size = filesize($p_filename); - } - - TrFctMessage(__FILE__, __LINE__, 2, "File size : $v_size"); - $v_size = sprintf("%11s ", DecOct($v_size)); - - TrFctMessage(__FILE__, __LINE__, 2, "File typeflag : $v_typeflag"); - - // ----- Linkname - $v_linkname = ""; - - // ----- Magic - $v_magic = ""; - - // ----- Version - $v_version = ""; - - // ----- uname - $v_uname = ""; - - // ----- gname - $v_gname = ""; - - // ----- devmajor - $v_devmajor = ""; - - // ----- devminor - $v_devminor = ""; - - // ----- prefix - $v_prefix = ""; - - // ----- Compose the binary string of the header in two parts arround the checksum position - $v_binary_data_first = pack("a100a8a8a8a12A12", $v_reduce_filename, $v_perms, $v_uid, $v_gid, $v_size, $v_mtime); - $v_binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", $v_typeflag, $v_linkname, $v_magic, $v_version, $v_uname, $v_gname, $v_devmajor, $v_devminor, $v_prefix, ""); - - - //var_dump($v_reduce_filename, $v_perms, $v_uid, $v_gid, $v_prefix,111); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - { - $v_checksum += ord(substr($v_binary_data_first,$i,1)); - } - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - { - $v_checksum += ord(' '); - } - // ..... Last part of the header - for ($i=156, $j=0; $i<512; $i++, $j++) - { - $v_checksum += ord(substr($v_binary_data_last,$j,1)); - } - TrFctMessage(__FILE__, __LINE__, 3, "Calculated checksum : $v_checksum"); - - // ----- Write the first 148 bytes of the header in the archive - if ($p_mode == "tar") - fputs($p_tar, $v_binary_data_first, 148); - else - gzputs($p_tar, $v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%6s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - if ($p_mode == "tar") - fputs($p_tar, $v_binary_data, 8); - else - gzputs($p_tar, $v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - if ($p_mode == "tar") - fputs($p_tar, $v_binary_data_last, 356); - else - gzputs($p_tar, $v_binary_data_last, 356); - - // ----- Set the properties in the header "structure" - $p_header[filename] = $v_reduce_filename; - $p_header[mode] = $v_perms; - $p_header[uid] = $v_uid; - $p_header[gid] = $v_gid; - $p_header[size] = $v_size; - $p_header[mtime] = $v_mtime; - $p_header[typeflag] = $v_typeflag; - $p_header[status] = "added"; - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleFooter() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleFooter($p_tar, $p_mode) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleFooter", "tar='$p_tar', p_mode=$p_mode"); - $v_result=1; - - // ----- Write the last 0 filled block for end of archive - $v_binary_data = pack("a512", ""); - if ($p_mode == "tar") - fputs($p_tar, $v_binary_data); - else - gzputs($p_tar, $v_binary_data); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleExtract() - // Description : - // Parameters : - // $p_tarname : Filename of the tar (or tgz) archive - // $p_file_list : An array which contains the list of files to extract, this - // array may be empty when $p_mode is 'complete' - // $p_list_detail : An array where will be placed the properties of each extracted/listed file - // $p_mode : 'complete' will extract all files from the archive, - // 'partial' will look for files in $p_file_list - // 'list' will only list the files from the archive without any extract - // $p_path : Path to add while writing the extracted files - // $p_tar_mode : 'tar' for GNU TAR archive, 'tgz' for compressed archive - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_remove_path does not apply to 'list' mode. - // $p_path and $p_remove_path are commulative. - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleExtract($p_tarname, $p_file_list, &$p_list_detail, $p_mode, $p_path, $p_tar_mode, $p_remove_path) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleExtract", "archive='$p_tarname', list, mode=$p_mode, path=$p_path, tar_mode=$p_tar_mode, remove_path='$p_remove_path'"); - $v_result=1; - $v_nb = 0; - $v_extract_all = TRUE; - $v_listing = FALSE; - - // ----- Check the path -// if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../"))) -// $p_path = "./".$p_path; -// var_dump($p_path); changed by warlee; - - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) - { - $p_remove_path .= '/'; - } - $p_remove_path_size = strlen($p_remove_path); - - // ----- Study the mode - switch ($p_mode) { - case "complete" : - // ----- Flag extract of all files - $v_extract_all = TRUE; - $v_listing = FALSE; - break; - case "partial" : - // ----- Flag extract of specific files - $v_extract_all = FALSE; - $v_listing = FALSE; - break; - case "list" : - // ----- Flag list of all files - $v_extract_all = FALSE; - $v_listing = TRUE; - break; - default : - // ----- Error log - PclErrorLog(-3, "Invalid extract mode ($p_mode)"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open the tar file - if ($p_tar_mode == "tar") - { - TrFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - $v_tar = fopen($p_tarname, "rb"); - } - else - { - TrFctMessage(__FILE__, __LINE__, 3, "Open file in gzip binary read mode"); - $v_tar = @gzopen($p_tarname, "rb"); - } - - // ----- Check that the archive is open - if ($v_tar == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open archive '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - - //add by warlee; - if( $p_tar_mode == "gz" || - (substr($p_tarname,-3) == '.gz' && substr($p_tarname,-7) != '.tar.gz') ){ - $result = array(array( - 'filename' => substr(basename($p_tarname),0,-3), - 'size' => filesize($p_tarname), - 'typeflag' => "", - 'mtime' => "", - 'status' => 'ok' - )); - $result[0]['filename'] = unzip_pre_name($result[0]['filename']); - - $p_list_detail = $result; - if($v_listing){ - return 1; - }else{ - mk_dir($p_path); - $dest_fp = @fopen($p_path.'/'.$result[0]['filename'], "wb"); - if(!$dest_fp){ - PclErrorLog(-10010,"create file error!"); - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - while (!gzeof($v_tar)){ - $v_content = gzread($v_tar, 512); - fwrite($dest_fp,$v_content); - } - fclose($dest_fp); - gzclose($v_tar); - } - return 1; - } - - - // ----- Read the blocks - While (!($v_end_of_file = ($p_tar_mode == "tar"?feof($v_tar):gzeof($v_tar)))) - { - TrFctMessage(__FILE__, __LINE__, 3, "Looking for next header ..."); - - // ----- Clear cache of file infos - clearstatcache(); - - // ----- Reset extract tag - $v_extract_file = FALSE; - $v_extraction_stopped = 0; - - // ----- Read the 512 bytes header - if ($p_tar_mode == "tar") - $v_binary_data = fread($v_tar, 512); - else - $v_binary_data = gzread($v_tar, 512); - - // ----- Read the header properties - if (($v_result = PclTarHandleReadHeader($v_binary_data, $v_header)) != 1) - { - // ----- Close the archive file - if ($p_tar_mode == "tar") - fclose($v_tar); - else - gzclose($v_tar); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for empty blocks to skip - if ($v_header[filename] == "") - { - TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?"); - continue; - } - - - //add by warlee ;文件名过长问题 - if ($v_header['typeflag'] == 'L') { - if (($v_result = PclTarHandleReadHeaderLong($v_tar,$p_tar_mode,$v_binary_data, $v_header)) != 1){ - if ($p_tar_mode == "tar") - fclose($v_tar); - else - gzclose($v_tar); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - } - - TrFctMessage(__FILE__, __LINE__, 2, "Found file '$v_header[filename]', size '$v_header[size]'"); - - - //add by warlee;解压 设置编码 - if(!$v_listing){ - if(function_exists('unzip_pre_name')){ - if( $v_header['typeflag'] == 'x'|| - $v_header['typeflag'] == 'g'){ - $v_header['typeflag'] = '-10';//不解压;设置成文件夹类型 - } - $v_header['filename'] = unzip_pre_name($v_header['filename']); - } - //echo "<pre>";var_dump(22,$v_header);echo "</pre>"; - } - - // ----- Look for partial extract - if ((!$v_extract_all) && (is_array($p_file_list))) - { - TrFctMessage(__FILE__, __LINE__, 2, "Look if the file '$v_header[filename]' need to be extracted"); - // ----- By default no unzip if the file is not found - $v_extract_file = FALSE; - // ----- Look into the file list - for ($i=0; $i<sizeof($p_file_list); $i++) - { - TrFctMessage(__FILE__, __LINE__, 2, "Compare archived file '$v_header[filename]' from asked list file '".$p_file_list[$i]."'"); - - // ----- Look if it is a directory - if (substr($p_file_list[$i], -1) == "/") - { - TrFctMessage(__FILE__, __LINE__, 3, "Compare file '$v_header[filename]' with directory '$p_file_list[$i]'"); - - // ----- Look if the directory is in the filename path - if ((strlen($v_header[filename]) > strlen($p_file_list[$i])) && (substr($v_header[filename], 0, strlen($p_file_list[$i])) == $p_file_list[$i])) - { - // ----- The file is in the directory, so extract it - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' is in directory '$p_file_list[$i]' : extract it"); - $v_extract_file = TRUE; - - // ----- End of loop - break; - } - } - - // ----- It is a file, so compare the file names - else if ($p_file_list[$i] == $v_header[filename]) - { - // ----- File found - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' should be extracted"); - $v_extract_file = TRUE; - - // ----- End of loop - break; - } - - - } - - // ----- Trace - if (!$v_extract_file) - { - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' should not be extracted"); - } - } - else - { - // ----- All files need to be extracted - $v_extract_file = TRUE; - } - - // ----- Look if this file need to be extracted - if (($v_extract_file) && (!$v_listing)) - { - // ----- Look for path to remove - if (($p_remove_path != "") - && (substr($v_header[filename], 0, $p_remove_path_size) == $p_remove_path)) - { - TrFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '$v_header[filename]'"); - // ----- Remove the path - $v_header[filename] = substr($v_header[filename], $p_remove_path_size); - TrFctMessage(__FILE__, __LINE__, 3, "Reslting file is '$v_header[filename]'"); - } - - // ----- Add the path to the file - if (($p_path != "./") && ($p_path != "/")) - { - // ----- Look for the path end '/' - while (substr($p_path, -1) == "/") - { - TrFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'"); - $p_path = substr($p_path, 0, strlen($p_path)-1); - TrFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]"); - } - - // ----- Add the path - if (substr($v_header[filename], 0, 1) == "/") - $v_header[filename] = $p_path.$v_header[filename]; - else - $v_header[filename] = $p_path."/".$v_header[filename]; - } - - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '$v_header[filename]', size '$v_header[size]'"); - - // ----- Check that the file does not exists - if (file_exists($v_header[filename])) - { - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' already exists"); - - // ----- Look if file is a directory - if (is_dir($v_header[filename])) - { - TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is a directory"); - - // ----- Change the file status - $v_header[status] = "already_a_directory"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - // ----- Look if file is write protected - else if (!is_writeable($v_header[filename])) - { - TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is write protected"); - - // ----- Change the file status - $v_header[status] = "write_protected"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - // ----- Look if the extracted file is older - else if (filemtime($v_header[filename]) > $v_header[mtime]) - { - TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is newer (".date("l dS of F Y h:i:s A", filemtime($v_header[filename])).") than the extracted file (".date("l dS of F Y h:i:s A", $v_header[mtime]).")"); - - // ----- Change the file status - $v_header[status] = "newer_exist"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - } - - // ----- Check the directory availability and create it if necessary - else - { - if ($v_header[typeflag]=="5") - $v_dir_to_check = $v_header[filename]; - else if (!strstr($v_header[filename], "/")) - $v_dir_to_check = ""; - else - $v_dir_to_check = dirname($v_header[filename]); - - //changed by warlee; 解压新建目录;不建立tar下的PaxHeader临时目录 - if( $v_header['typeflag'] == '-10' || $v_header['typeflag'] == 'g'){ - $v_dir_to_check=""; - } - - if (($v_result = PclTarHandlerDirCheck($v_dir_to_check)) != 1) - { - TrFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '$v_header[filename]'"); - - // ----- Change the file status - $v_header[status] = "path_creation_fail"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - } - // ----- Do the extraction - if (($v_extract_file) && ($v_header[typeflag]!="5") && ($v_header[typeflag]!="-10")) - //changed by warlee; add $v_header[typeflag] - { - // ----- Open the destination file in write mode - if (($v_dest_file = @fopen($v_header[filename], "wb")) == 0) - { - TrFctMessage(__FILE__, __LINE__, 2, "Error while opening '$v_header[filename]' in write binary mode"); - - // ----- Change the file status - $v_header[status] = "write_error"; - - // ----- Jump to next file - TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file"); - if ($p_tar_mode == "tar") - fseek($v_tar, ftell($v_tar)+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - } - else - { - TrFctMessage(__FILE__, __LINE__, 2, "Start extraction of '$v_header[filename]'"); - - // ----- Read data - $n = floor($v_header[size]/512); - for ($i=0; $i<$n; $i++) - { - TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number ".($i+1)); - if ($p_tar_mode == "tar") - $v_content = fread($v_tar, 512); - else - $v_content = gzread($v_tar, 512); - fwrite($v_dest_file, $v_content, 512); - } - if (($v_header[size] % 512) != 0) - { - TrFctMessage(__FILE__, __LINE__, 3, "Read last ".($v_header[size] % 512)." bytes in a 512 block"); - if ($p_tar_mode == "tar") - $v_content = fread($v_tar, 512); - else - $v_content = gzread($v_tar, 512); - fwrite($v_dest_file, $v_content, ($v_header[size] % 512)); - } - - // ----- Close the destination file - fclose($v_dest_file); - - // ----- Change the file mode, mtime - touch($v_header[filename], $v_header[mtime]); - //chmod($v_header[filename], DecOct($v_header[mode])); - } - - // ----- Check the file size - clearstatcache(); - //changed by warlee; 大小对比时查看是否存在 - if (file_exists($v_header[filename]) && filesize($v_header[filename]) != $v_header[size]) - { - // ----- Close the archive file - if ($p_tar_mode == "tar") - fclose($v_tar); - else - gzclose($v_tar); - - // ----- Error log - PclErrorLog(-7, "Extracted file '$v_header[filename]' does not have the correct file size '".filesize($v_filename)."' ('$v_header[size]' expected). Archive may be corrupted."); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Extraction done"); - } - - else - { - TrFctMessage(__FILE__, __LINE__, 2, "Extraction of file '$v_header[filename]' skipped."); - - // ----- Jump to next file - TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file"); - if ($p_tar_mode == "tar") - fseek($v_tar, ftell($v_tar)+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - } - } - - // ----- Look for file that is not to be unzipped - else - { - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Jump file '$v_header[filename]'"); - TrFctMessage(__FILE__, __LINE__, 4, "Position avant jump [".($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))."]"); - - // ----- Jump to next file - if ($p_tar_mode == "tar") - fseek($v_tar, ($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - - TrFctMessage(__FILE__, __LINE__, 4, "Position après jump [".($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))."]"); - } - - if ($p_tar_mode == "tar") - $v_end_of_file = feof($v_tar); - else - $v_end_of_file = gzeof($v_tar); - - // ----- File name and properties are logged if listing mode or file is extracted - if ($v_listing || $v_extract_file || $v_extraction_stopped) - { - TrFctMessage(__FILE__, __LINE__, 2, "Memorize info about file '$v_header[filename]'"); - - // ----- Log extracted files - if (($v_file_dir = dirname($v_header[filename])) == $v_header[filename]) - $v_file_dir = ""; - if ((substr($v_header[filename], 0, 1) == "/") && ($v_file_dir == "")) - $v_file_dir = "/"; - - // ----- Add the array describing the file into the list - $p_list_detail[$v_nb] = $v_header; - - // ----- Increment - $v_nb++; - } - } - - // ----- Close the tarfile - if ($p_tar_mode == "tar") - fclose($v_tar); - else - gzclose($v_tar); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleExtractByIndexList() - // Description : - // Extract the files which are at the indexes specified. If the 'file' at the - // index is a directory, the directory only is created, not all the files stored - // for that directory. - // Parameters : - // $p_index_string : String of indexes of files to extract. The form of the - // string is "0,4-6,8-12" with only numbers and '-' for - // for range, and ',' to separate ranges. No spaces or ';' - // are allowed. - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleExtractByIndexList($p_tarname, $p_index_string, &$p_list_detail, $p_path, $p_remove_path, $p_tar_mode) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleExtractByIndexList", "archive='$p_tarname', index_string='$p_index_string', list, path=$p_path, remove_path='$p_remove_path', tar_mode=$p_tar_mode"); - $v_result=1; - $v_nb = 0; - - // ----- TBC : I should check the string by a regexp - - // ----- Check the path - if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path, 0, 2) != "./"))) - $p_path = "./".$p_path; - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) - { - $p_remove_path .= '/'; - } - $p_remove_path_size = strlen($p_remove_path); - - // ----- Open the tar file - if ($p_tar_mode == "tar") - { - TrFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - $v_tar = @fopen($p_tarname, "rb"); - } - else - { - TrFctMessage(__FILE__, __LINE__, 3, "Open file in gzip binary read mode"); - $v_tar = @gzopen($p_tarname, "rb"); - } - - // ----- Check that the archive is open - if ($v_tar == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open archive '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Manipulate the index list - $v_list = explode(",", $p_index_string); - sort($v_list); - - // ----- Loop on the index list - $v_index=0; - for ($i=0; ($i<sizeof($v_list)) && ($v_result); $i++) - { - TrFctMessage(__FILE__, __LINE__, 3, "Looking for index part '$v_list[$i]'"); - - // ----- Extract range - $v_index_list = explode("-", $v_list[$i]); - $v_size_index_list = sizeof($v_index_list); - if ($v_size_index_list == 1) - { - TrFctMessage(__FILE__, __LINE__, 3, "Only one index '$v_index_list[0]'"); - - // ----- Do the extraction - $v_result = PclTarHandleExtractByIndex($v_tar, $v_index, $v_index_list[0], $v_index_list[0], $p_list_detail, $p_path, $p_remove_path, $p_tar_mode); - } - else if ($v_size_index_list == 2) - { - TrFctMessage(__FILE__, __LINE__, 3, "Two indexes '$v_index_list[0]' and '$v_index_list[1]'"); - - // ----- Do the extraction - $v_result = PclTarHandleExtractByIndex($v_tar, $v_index, $v_index_list[0], $v_index_list[1], $p_list_detail, $p_path, $p_remove_path, $p_tar_mode); - } - } - - // ----- Close the tarfile - if ($p_tar_mode == "tar") - fclose($v_tar); - else - gzclose($v_tar); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleExtractByIndex() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleExtractByIndex($p_tar, &$p_index_current, $p_index_start, $p_index_stop, &$p_list_detail, $p_path, $p_remove_path, $p_tar_mode) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleExtractByIndex", "archive_descr='$p_tar', index_current=$p_index_current, index_start='$p_index_start', index_stop='$p_index_stop', list, path=$p_path, remove_path='$p_remove_path', tar_mode=$p_tar_mode"); - $v_result=1; - $v_nb = 0; - - // TBC : I should replace all $v_tar by $p_tar in this function .... - $v_tar = $p_tar; - - // ----- Look the number of elements already in $p_list_detail - $v_nb = sizeof($p_list_detail); - - // ----- Read the blocks - While (!($v_end_of_file = ($p_tar_mode == "tar"?feof($v_tar):gzeof($v_tar)))) - { - TrFctMessage(__FILE__, __LINE__, 3, "Looking for next file ..."); - TrFctMessage(__FILE__, __LINE__, 3, "Index current=$p_index_current, range=[$p_index_start, $p_index_stop])"); - - if ($p_index_current > $p_index_stop) - { - TrFctMessage(__FILE__, __LINE__, 2, "Stop extraction, past stop index"); - break; - } - - // ----- Clear cache of file infos - clearstatcache(); - - // ----- Reset extract tag - $v_extract_file = FALSE; - $v_extraction_stopped = 0; - - // ----- Read the 512 bytes header - if ($p_tar_mode == "tar") - $v_binary_data = fread($v_tar, 512); - else - $v_binary_data = gzread($v_tar, 512); - - // ----- Read the header properties - if (($v_result = PclTarHandleReadHeader($v_binary_data, $v_header)) != 1) - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for empty blocks to skip - if ($v_header[filename] == "") - { - TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?"); - continue; - } - - TrFctMessage(__FILE__, __LINE__, 2, "Found file '$v_header[filename]', size '$v_header[size]'"); - - // ----- Look if file is in the range to be extracted - if (($p_index_current >= $p_index_start) && ($p_index_current <= $p_index_stop)) - { - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' is in the range to be extracted"); - $v_extract_file = TRUE; - } - else - { - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' is out of the range"); - $v_extract_file = FALSE; - } - - // ----- Look if this file need to be extracted - if ($v_extract_file) - { - if (($v_result = PclTarHandleExtractFile($v_tar, $v_header, $p_path, $p_remove_path, $p_tar_mode)) != 1) - { - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - } - - // ----- Look for file that is not to be extracted - else - { - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Jump file '$v_header[filename]'"); - TrFctMessage(__FILE__, __LINE__, 4, "Position avant jump [".($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))."]"); - - // ----- Jump to next file - if ($p_tar_mode == "tar") - fseek($v_tar, ($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - - TrFctMessage(__FILE__, __LINE__, 4, "Position après jump [".($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))."]"); - } - - if ($p_tar_mode == "tar") - $v_end_of_file = feof($v_tar); - else - $v_end_of_file = gzeof($v_tar); - - // ----- File name and properties are logged if listing mode or file is extracted - if ($v_extract_file) - { - TrFctMessage(__FILE__, __LINE__, 2, "Memorize info about file '$v_header[filename]'"); - - // ----- Log extracted files - if (($v_file_dir = dirname($v_header[filename])) == $v_header[filename]) - $v_file_dir = ""; - if ((substr($v_header[filename], 0, 1) == "/") && ($v_file_dir == "")) - $v_file_dir = "/"; - - // ----- Add the array describing the file into the list - $p_list_detail[$v_nb] = $v_header; - - // ----- Increment - $v_nb++; - } - - // ----- Increment the current file index - $p_index_current++; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleExtractFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleExtractFile($p_tar, &$v_header, $p_path, $p_remove_path, $p_tar_mode) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleExtractFile", "archive_descr='$p_tar', path=$p_path, remove_path='$p_remove_path', tar_mode=$p_tar_mode"); - $v_result=1; - - // TBC : I should replace all $v_tar by $p_tar in this function .... - $v_tar = $p_tar; - $v_extract_file = 1; - - $p_remove_path_size = strlen($p_remove_path); - - // ----- Look for path to remove - if (($p_remove_path != "") - && (substr($v_header[filename], 0, $p_remove_path_size) == $p_remove_path)) - { - TrFctMessage(__FILE__, __LINE__, 3, "Found path '$p_remove_path' to remove in file '$v_header[filename]'"); - // ----- Remove the path - $v_header[filename] = substr($v_header[filename], $p_remove_path_size); - TrFctMessage(__FILE__, __LINE__, 3, "Resulting file is '$v_header[filename]'"); - } - - // ----- Add the path to the file - if (($p_path != "./") && ($p_path != "/")) - { - // ----- Look for the path end '/' - while (substr($p_path, -1) == "/") - { - TrFctMessage(__FILE__, __LINE__, 3, "Destination path [$p_path] ends by '/'"); - $p_path = substr($p_path, 0, strlen($p_path)-1); - TrFctMessage(__FILE__, __LINE__, 3, "Modified to [$p_path]"); - } - - // ----- Add the path - if (substr($v_header[filename], 0, 1) == "/") - $v_header[filename] = $p_path.$v_header[filename]; - else - $v_header[filename] = $p_path."/".$v_header[filename]; - } - - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Extracting file (with path) '$v_header[filename]', size '$v_header[size]'"); - - // ----- Check that the file does not exists - if (file_exists($v_header[filename])) - { - TrFctMessage(__FILE__, __LINE__, 2, "File '$v_header[filename]' already exists"); - - // ----- Look if file is a directory - if (is_dir($v_header[filename])) - { - TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is a directory"); - - // ----- Change the file status - $v_header[status] = "already_a_directory"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - // ----- Look if file is write protected - else if (!is_writeable($v_header[filename])) - { - TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is write protected"); - - // ----- Change the file status - $v_header[status] = "write_protected"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - // ----- Look if the extracted file is older - else if (filemtime($v_header[filename]) > $v_header[mtime]) - { - TrFctMessage(__FILE__, __LINE__, 2, "Existing file '$v_header[filename]' is newer (".date("l dS of F Y h:i:s A", filemtime($v_header[filename])).") than the extracted file (".date("l dS of F Y h:i:s A", $v_header[mtime]).")"); - - // ----- Change the file status - $v_header[status] = "newer_exist"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - } - - // ----- Check the directory availability and create it if necessary - else - { - if ($v_header[typeflag]=="5") - $v_dir_to_check = $v_header[filename]; - else if (!strstr($v_header[filename], "/")) - $v_dir_to_check = ""; - else - $v_dir_to_check = dirname($v_header[filename]); - - if (($v_result = PclTarHandlerDirCheck($v_dir_to_check)) != 1) - { - TrFctMessage(__FILE__, __LINE__, 2, "Unable to create path for '$v_header[filename]'"); - - // ----- Change the file status - $v_header[status] = "path_creation_fail"; - - // ----- Skip the extract - $v_extraction_stopped = 1; - $v_extract_file = 0; - } - } - - // ----- Do the real bytes extraction (if not a directory) - if (($v_extract_file) && ($v_header[typeflag]!="5")) - { - // ----- Open the destination file in write mode - if (($v_dest_file = @fopen($v_header[filename], "wb")) == 0) - { - TrFctMessage(__FILE__, __LINE__, 2, "Error while opening '$v_header[filename]' in write binary mode"); - - // ----- Change the file status - $v_header[status] = "write_error"; - - // ----- Jump to next file - TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file"); - if ($p_tar_mode == "tar") - fseek($v_tar, ftell($v_tar)+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - } - else - { - TrFctMessage(__FILE__, __LINE__, 2, "Start extraction of '$v_header[filename]'"); - - // ----- Read data - $n = floor($v_header[size]/512); - for ($i=0; $i<$n; $i++) - { - TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number ".($i+1)); - if ($p_tar_mode == "tar") - $v_content = fread($v_tar, 512); - else - $v_content = gzread($v_tar, 512); - fwrite($v_dest_file, $v_content, 512); - } - if (($v_header[size] % 512) != 0) - { - TrFctMessage(__FILE__, __LINE__, 3, "Read last ".($v_header[size] % 512)." bytes in a 512 block"); - if ($p_tar_mode == "tar") - $v_content = fread($v_tar, 512); - else - $v_content = gzread($v_tar, 512); - fwrite($v_dest_file, $v_content, ($v_header[size] % 512)); - } - - // ----- Close the destination file - fclose($v_dest_file); - - // ----- Change the file mode, mtime - touch($v_header[filename], $v_header[mtime]); - //chmod($v_header[filename], DecOct($v_header[mode])); - } - - // ----- Check the file size - clearstatcache(); - if (filesize($v_header[filename]) != $v_header[size]) - { - // ----- Error log - PclErrorLog(-7, "Extracted file '$v_header[filename]' does not have the correct file size '".filesize($v_filename)."' ('$v_header[size]' expected). Archive may be corrupted."); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Extraction done"); - } - else - { - TrFctMessage(__FILE__, __LINE__, 2, "Extraction of file '$v_header[filename]' skipped."); - - // ----- Jump to next file - TrFctMessage(__FILE__, __LINE__, 2, "Jump to next file"); - if ($p_tar_mode == "tar") - fseek($v_tar, ftell($v_tar)+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleDelete() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleDelete($p_tarname, $p_file_list, &$p_list_detail, $p_tar_mode) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleDelete", "archive='$p_tarname', list, tar_mode=$p_tar_mode"); - $v_result=1; - $v_nb=0; - - // ----- Look for regular tar file - if ($p_tar_mode == "tar") - { - // ----- Open file - TrFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_tar = @fopen($p_tarname, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open a temporary file in write mode - $v_temp_tarname = PCLTAR_TEMPORARY_DIR.uniqid("pcltar-").".tmp";//add by warlee; - TrFctMessage(__FILE__, __LINE__, 2, "Creating temporary archive file $v_temp_tarname"); - if (($v_temp_tar = @fopen($v_temp_tarname, "wb")) == 0) - { - // ----- Close tar file - fclose($v_tar); - - // ----- Error log - PclErrorLog(-1, "Unable to open file '$v_temp_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - } - - // ----- Look for compressed tar file - else - { - // ----- Open the file in read mode - TrFctMessage(__FILE__, __LINE__, 3, "Open file in gzip binary read mode"); - if (($v_tar = @gzopen($p_tarname, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open a temporary file in write mode - $v_temp_tarname = PCLTAR_TEMPORARY_DIR.uniqid("pcltar-").".tmp";//add by warlee; - TrFctMessage(__FILE__, __LINE__, 2, "Creating temporary archive file $v_temp_tarname"); - if (($v_temp_tar = @gzopen($v_temp_tarname, "wb")) == 0) - { - // ----- Close tar file - gzclose($v_tar); - - // ----- Error log - PclErrorLog(-1, "Unable to open file '$v_temp_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - } - - // ----- Read the blocks - While (!($v_end_of_file = ($p_tar_mode == "tar"?feof($v_tar):gzeof($v_tar)))) - { - TrFctMessage(__FILE__, __LINE__, 3, "Looking for next header ..."); - - // ----- Clear cache of file infos - clearstatcache(); - - // ----- Reset delete tag - $v_delete_file = FALSE; - - // ----- Read the first 512 block header - if ($p_tar_mode == "tar") - $v_binary_data = fread($v_tar, 512); - else - $v_binary_data = gzread($v_tar, 512); - - // ----- Read the header properties - if (($v_result = PclTarHandleReadHeader($v_binary_data, $v_header)) != 1) - { - // ----- Close the archive file - if ($p_tar_mode == "tar") - { - fclose($v_tar); - fclose($v_temp_tar); - } - else - { - gzclose($v_tar); - gzclose($v_temp_tar); - } - @unlink($v_temp_tarname); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for empty blocks to skip - if ($v_header[filename] == "") - { - TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?"); - continue; - } - - TrFctMessage(__FILE__, __LINE__, 2, "Found file '$v_header[filename]', size '$v_header[size]'"); - - // ----- Look for filenames to delete - for ($i=0, $v_delete_file=FALSE; ($i<sizeof($p_file_list)) && (!$v_delete_file); $i++) - { - // ----- Compare the file names -// if ($p_file_list[$i] == $v_header[filename]) - if (($v_len = strcmp($p_file_list[$i], $v_header[filename])) <= 0) - { - if ($v_len==0) - { - TrFctMessage(__FILE__, __LINE__, 3, "Found that '$v_header[filename]' need to be deleted"); - $v_delete_file = TRUE; - } - else - { - TrFctMessage(__FILE__, __LINE__, 3, "Look if '$v_header[filename]' is a file in $p_file_list[$i]"); - if (substr($v_header[filename], strlen($p_file_list[$i]), 1) == "/") - { - TrFctMessage(__FILE__, __LINE__, 3, "'$v_header[filename]' is a file in $p_file_list[$i]"); - $v_delete_file = TRUE; - } - } - } - } - - // ----- Copy files that do not need to be deleted - if (!$v_delete_file) - { - TrFctMessage(__FILE__, __LINE__, 2, "Keep file '$v_header[filename]'"); - - // ----- Write the file header - if ($p_tar_mode == "tar") - { - fputs($v_temp_tar, $v_binary_data, 512); - } - else - { - gzputs($v_temp_tar, $v_binary_data, 512); - } - - // ----- Write the file data - $n = ceil($v_header[size]/512); - for ($i=0; $i<$n; $i++) - { - TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number ".($i+1)); - if ($p_tar_mode == "tar") - { - $v_content = fread($v_tar, 512); - fwrite($v_temp_tar, $v_content, 512); - } - else - { - $v_content = gzread($v_tar, 512); - gzwrite($v_temp_tar, $v_content, 512); - } - } - - // ----- File name and properties are logged if listing mode or file is extracted - TrFctMessage(__FILE__, __LINE__, 2, "Memorize info about file '$v_header[filename]'"); - - // ----- Add the array describing the file into the list - $p_list_detail[$v_nb] = $v_header; - $p_list_detail[$v_nb][status] = "ok"; - - // ----- Increment - $v_nb++; - } - - // ----- Look for file that is to be deleted - else - { - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Start deletion of '$v_header[filename]'"); - TrFctMessage(__FILE__, __LINE__, 4, "Position avant jump [".($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))."]"); - - // ----- Jump to next file - if ($p_tar_mode == "tar") - fseek($v_tar, ftell($v_tar)+(ceil(($v_header[size]/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_header[size]/512))*512)); - - TrFctMessage(__FILE__, __LINE__, 4, "Position après jump [".($p_tar_mode=="tar"?ftell($v_tar):gztell($v_tar))."]"); - } - - // ----- Look for end of file - if ($p_tar_mode == "tar") - $v_end_of_file = feof($v_tar); - else - $v_end_of_file = gzeof($v_tar); - } - - // ----- Write the last empty buffer - PclTarHandleFooter($v_temp_tar, $p_tar_mode); - - // ----- Close the tarfile - if ($p_tar_mode == "tar") - { - fclose($v_tar); - fclose($v_temp_tar); - } - else - { - gzclose($v_tar); - gzclose($v_temp_tar); - } - - // ----- Unlink tar file - if (!@unlink($p_tarname)) - { - // ----- Error log - PclErrorLog(-11, "Error while deleting archive name $p_tarname"); - } - - - // ----- Rename tar file - if (!@rename($v_temp_tarname, $p_tarname)) - { - // ----- Error log - PclErrorLog(-12, "Error while renaming temporary file $v_temp_tarname to archive name $p_tarname"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleUpdate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleUpdate($p_tarname, $p_file_list, &$p_list_detail, $p_tar_mode, $p_add_dir, $p_remove_dir) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleUpdate", "archive='$p_tarname', list, tar_mode=$p_tar_mode"); - $v_result=1; - $v_nb=0; - $v_found_list = array(); - - // ----- Look for regular tar file - if ($p_tar_mode == "tar") - { - // ----- Open file - TrFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode"); - if (($v_tar = @fopen($p_tarname, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open a temporary file in write mode - $v_temp_tarname = PCLTAR_TEMPORARY_DIR.uniqid("pcltar-").".tmp";//add by warlee; - TrFctMessage(__FILE__, __LINE__, 2, "Creating temporary archive file $v_temp_tarname"); - if (($v_temp_tar = @fopen($v_temp_tarname, "wb")) == 0) - { - // ----- Close tar file - fclose($v_tar); - - // ----- Error log - PclErrorLog(-1, "Unable to open file '$v_temp_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - } - - // ----- Look for compressed tar file - else - { - // ----- Open the file in read mode - TrFctMessage(__FILE__, __LINE__, 3, "Open file in gzip binary read mode"); - if (($v_tar = @gzopen($p_tarname, "rb")) == 0) - { - // ----- Error log - PclErrorLog(-2, "Unable to open file '$p_tarname' in binary read mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Open a temporary file in write mode - $v_temp_tarname = PCLTAR_TEMPORARY_DIR.uniqid("pcltar-").".tmp";//add by warlee; - TrFctMessage(__FILE__, __LINE__, 2, "Creating temporary archive file $v_temp_tarname"); - if (($v_temp_tar = @gzopen($v_temp_tarname, "wb")) == 0) - { - // ----- Close tar file - gzclose($v_tar); - - // ----- Error log - PclErrorLog(-1, "Unable to open file '$v_temp_tarname' in binary write mode"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - } - - // ----- Prepare the list of files - for ($i=0; $i<sizeof($p_file_list); $i++) - { - // ----- Reset the found list - $v_found_list[$i] = 0; - - // ----- Calculate the stored filename - $v_stored_list[$i] = $p_file_list[$i]; - if ($p_remove_dir != "") - { - if (substr($p_file_list[$i], -1) != '/') - $p_remove_dir .= "/"; - - if (substr($p_file_list[$i], 0, strlen($p_remove_dir)) == $p_remove_dir) - { - $v_stored_list[$i] = substr($p_file_list[$i], strlen($p_remove_dir)); - TrFctMessage(__FILE__, __LINE__, 3, "Remove path '$p_remove_dir' in file '$p_file_list[$i]' = '$v_stored_list[$i]'"); - } - } - if ($p_add_dir != "") - { - if (substr($p_add_dir, -1) == "/") - $v_stored_list[$i] = $p_add_dir.$v_stored_list[$i]; - else - $v_stored_list[$i] = $p_add_dir."/".$v_stored_list[$i]; - TrFctMessage(__FILE__, __LINE__, 3, "Add path '$p_add_dir' in file '$p_file_list[$i]' = '$v_stored_list[$i]'"); - } - $v_stored_list[$i] = PclTarHandlePathReduction($v_stored_list[$i]); - TrFctMessage(__FILE__, __LINE__, 3, "After reduction '$v_stored_list[$i]'"); - } - - - // ----- Update file cache - clearstatcache(); - - // ----- Read the blocks - While (!($v_end_of_file = ($p_tar_mode == "tar"?feof($v_tar):gzeof($v_tar)))) - { - TrFctMessage(__FILE__, __LINE__, 3, "Looking for next header ..."); - - // ----- Clear cache of file infos - clearstatcache(); - - // ----- Reset current found filename - $v_current_filename = ""; - - // ----- Reset delete tag - $v_delete_file = FALSE; - - // ----- Read the first 512 block header - if ($p_tar_mode == "tar") - $v_binary_data = fread($v_tar, 512); - else - $v_binary_data = gzread($v_tar, 512); - - // ----- Read the header properties - if (($v_result = PclTarHandleReadHeader($v_binary_data, $v_header)) != 1) - { - // ----- Close the archive file - if ($p_tar_mode == "tar") - { - fclose($v_tar); - fclose($v_temp_tar); - } - else - { - gzclose($v_tar); - gzclose($v_temp_tar); - } - @unlink($v_temp_tarname); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Look for empty blocks to skip - if ($v_header[filename] == "") - { - TrFctMessage(__FILE__, __LINE__, 2, "Empty block found. End of archive ?"); - continue; - } - - TrFctMessage(__FILE__, __LINE__, 2, "Found file '$v_header[filename]', size '$v_header[size]'"); - - // ----- Look for filenames to update - for ($i=0, $v_update_file=FALSE, $v_found_file=FALSE; ($i<sizeof($v_stored_list)) && (!$v_update_file); $i++) - { - TrFctMessage(__FILE__, __LINE__, 4, "Compare with file '$v_stored_list[$i]'"); - - // ----- Compare the file names - if ($v_stored_list[$i] == $v_header[filename]) - { - TrFctMessage(__FILE__, __LINE__, 3, "File '$v_stored_list[$i]' is present in archive"); - TrFctMessage(__FILE__, __LINE__, 3, "File '$v_stored_list[$i]' mtime=".filemtime($p_file_list[$i])." ".date("l dS of F Y h:i:s A", filemtime($p_file_list[$i]))); - TrFctMessage(__FILE__, __LINE__, 3, "Archived mtime=".$v_header[mtime]." ".date("l dS of F Y h:i:s A", $v_header[mtime])); - - // ----- Store found informations - $v_found_file = TRUE; - $v_current_filename = $p_file_list[$i]; - - // ----- Look if the file need to be updated - if (filemtime($p_file_list[$i]) > $v_header[mtime]) - { - TrFctMessage(__FILE__, __LINE__, 3, "File '$p_file_list[$i]' need to be updated"); - $v_update_file = TRUE; - } - else - { - TrFctMessage(__FILE__, __LINE__, 3, "File '$p_file_list[$i]' does not need to be updated"); - $v_update_file = FALSE; - } - - // ----- Flag the name in order not to add the file at the end - $v_found_list[$i] = 1; - } - else - { - TrFctMessage(__FILE__, __LINE__, 4, "File '$p_file_list[$i]' is not '$v_header[filename]'"); - } - } - - // ----- Copy files that do not need to be updated - if (!$v_update_file) - { - TrFctMessage(__FILE__, __LINE__, 2, "Keep file '$v_header[filename]'"); - - // ----- Write the file header - if ($p_tar_mode == "tar") - { - fputs($v_temp_tar, $v_binary_data, 512); - } - else - { - gzputs($v_temp_tar, $v_binary_data, 512); - } - - // ----- Write the file data - $n = ceil($v_header[size]/512); - for ($j=0; $j<$n; $j++) - { - TrFctMessage(__FILE__, __LINE__, 3, "Read complete 512 bytes block number ".($j+1)); - if ($p_tar_mode == "tar") - { - $v_content = fread($v_tar, 512); - fwrite($v_temp_tar, $v_content, 512); - } - else - { - $v_content = gzread($v_tar, 512); - gzwrite($v_temp_tar, $v_content, 512); - } - } - - // ----- File name and properties are logged if listing mode or file is extracted - TrFctMessage(__FILE__, __LINE__, 2, "Memorize info about file '$v_header[filename]'"); - - // ----- Add the array describing the file into the list - $p_list_detail[$v_nb] = $v_header; - $p_list_detail[$v_nb][status] = ($v_found_file?"not_updated":"ok"); - - // ----- Increment - $v_nb++; - } - - // ----- Look for file that need to be updated - else - { - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Start update of file '$v_current_filename'"); - - // ----- Store the old file size - $v_old_size = $v_header[size]; - - // ----- Add the file - if (($v_result = PclTarHandleAddFile($v_temp_tar, $v_current_filename, $p_tar_mode, $v_header, $p_add_dir, $p_remove_dir)) != 1) - { - // ----- Close the tarfile - if ($p_tar_mode == "tar") - { - fclose($v_tar); - fclose($v_temp_tar); - } - else - { - gzclose($v_tar); - gzclose($v_temp_tar); - } - @unlink($p_temp_tarname); - - // ----- Return status - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Trace - TrFctMessage(__FILE__, __LINE__, 2, "Skip old file '$v_header[filename]'"); - - // ----- Jump to next file - if ($p_tar_mode == "tar") - fseek($v_tar, ftell($v_tar)+(ceil(($v_old_size/512))*512)); - else - gzseek($v_tar, gztell($v_tar)+(ceil(($v_old_size/512))*512)); - - // ----- Add the array describing the file into the list - $p_list_detail[$v_nb] = $v_header; - $p_list_detail[$v_nb][status] = "updated"; - - // ----- Increment - $v_nb++; - } - - // ----- Look for end of file - if ($p_tar_mode == "tar") - $v_end_of_file = feof($v_tar); - else - $v_end_of_file = gzeof($v_tar); - } - - // ----- Look for files that does not exists in the archive and need to be added - for ($i=0; $i<sizeof($p_file_list); $i++) - { - // ----- Look if file not found in the archive - if (!$v_found_list[$i]) - { - TrFctMessage(__FILE__, __LINE__, 3, "File '$p_file_list[$i]' need to be added"); - - // ----- Add the file - if (($v_result = PclTarHandleAddFile($v_temp_tar, $p_file_list[$i], $p_tar_mode, $v_header, $p_add_dir, $p_remove_dir)) != 1) - { - // ----- Close the tarfile - if ($p_tar_mode == "tar") - { - fclose($v_tar); - fclose($v_temp_tar); - } - else - { - gzclose($v_tar); - gzclose($v_temp_tar); - } - @unlink($p_temp_tarname); - - // ----- Return status - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - - // ----- Add the array describing the file into the list - $p_list_detail[$v_nb] = $v_header; - $p_list_detail[$v_nb][status] = "added"; - - // ----- Increment - $v_nb++; - } - else - { - TrFctMessage(__FILE__, __LINE__, 3, "File '$p_file_list[$i]' was already updated if needed"); - } - } - - // ----- Write the last empty buffer - PclTarHandleFooter($v_temp_tar, $p_tar_mode); - - // ----- Close the tarfile - if ($p_tar_mode == "tar") - { - fclose($v_tar); - fclose($v_temp_tar); - } - else - { - gzclose($v_tar); - gzclose($v_temp_tar); - } - - // ----- Unlink tar file - if (!@unlink($p_tarname)) - { - // ----- Error log - PclErrorLog(-11, "Error while deleting archive name $p_tarname"); - } - - - // ----- Rename tar file - if (!@rename($v_temp_tarname, $p_tarname)) - { - // ----- Error log - PclErrorLog(-12, "Error while renaming temporary file $v_temp_tarname to archive name $p_tarname"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // add by warlee 文件名过长问题;从文件读取文件名 - function PclTarHandleReadHeaderLong($v_tar,$p_tar_mode,$v_binary_data,&$v_header){ - $v_filename = ''; - $n = floor($v_header['size']/512); - for ($i=0; $i<$n; $i++) { - if ($p_tar_mode == "tar"){ - $v_content = fread($v_tar, 512); - }else{ - $v_content = gzread($v_tar, 512); - } - $v_filename .= $v_content; - } - if (($v_header['size'] % 512) != 0) { - if ($p_tar_mode == "tar"){ - $v_content = fread($v_tar, 512); - }else{ - $v_content = gzread($v_tar, 512); - } - $v_filename .= $v_content; - } - // ----- Read the next header - if ($p_tar_mode == "tar"){ - $v_binary_data = fread($v_tar, 512); - }else{ - $v_binary_data = gzread($v_tar, 512); - } - if (($v_result = PclTarHandleReadHeader($v_binary_data, $v_header)) != 1){ - if ($p_tar_mode == "tar"){ - fclose($v_tar); - }else{ - gzclose($v_tar); - } - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - $v_filename = str_replace("\0",'',$v_filename); - $v_header['filename'] = $v_filename; - return true; - } - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleReadHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleReadHeader($v_binary_data, &$v_header) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleReadHeader", ""); - $v_result=1; - - // ----- Read the 512 bytes header - /* - if ($p_tar_mode == "tar") - $v_binary_data = fread($p_tar, 512); - else - $v_binary_data = gzread($p_tar, 512); - */ - - // ----- Look for no more block - if (strlen($v_binary_data)==0) - { - $v_header[filename] = ""; - $v_header[status] = "empty"; - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result, "End of archive found"); - return $v_result; - } - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 512) - { - $v_header[filename] = ""; - $v_header[status] = "invalid_header"; - TrFctMessage(__FILE__, __LINE__, 2, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Error log - PclErrorLog(-10, "Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i=0; $i<148; $i++) - { - $v_checksum+=ord(substr($v_binary_data,$i,1)); - } - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i=148; $i<156; $i++) - { - $v_checksum += ord(' '); - } - // ..... Last part of the header - for ($i=156; $i<512; $i++) - { - $v_checksum+=ord(substr($v_binary_data,$i,1)); - } - TrFctMessage(__FILE__, __LINE__, 3, "Calculated checksum : $v_checksum"); - - // ----- Extract the values - TrFctMessage(__FILE__, __LINE__, 2, "Header : '$v_binary_data'"); - $v_data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $v_binary_data); - - // ----- Extract the checksum for check - $v_header[checksum] = OctDec(trim($v_data[checksum])); - TrFctMessage(__FILE__, __LINE__, 3, "File checksum : $v_header[checksum]"); - if ($v_header[checksum] != $v_checksum) - { - TrFctMessage(__FILE__, __LINE__, 2, "File checksum is invalid : $v_checksum calculated, $v_header[checksum] expected"); - - $v_header[filename] = ""; - $v_header[status] = "invalid_header"; - - // ----- Look for last block (empty block) - if (($v_checksum == 256) && ($v_header[checksum] == 0)) - { - $v_header[status] = "empty"; - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result, "End of archive found"); - return $v_result; - } - - // ----- Error log - PclErrorLog(-13, "Invalid checksum : $v_checksum calculated, $v_header[checksum] expected"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - TrFctMessage(__FILE__, __LINE__, 2, "File checksum is valid ($v_checksum)"); - - // ----- Extract the properties - $v_header[filename] = trim($v_data[filename]); - TrFctMessage(__FILE__, __LINE__, 2, "Name : '$v_header[filename]'"); - $v_header[mode] = OctDec(trim($v_data[mode])); - TrFctMessage(__FILE__, __LINE__, 2, "Mode : '".DecOct($v_header[mode])."'"); - $v_header[uid] = OctDec(trim($v_data[uid])); - TrFctMessage(__FILE__, __LINE__, 2, "Uid : '$v_header[uid]'"); - $v_header[gid] = OctDec(trim($v_data[gid])); - TrFctMessage(__FILE__, __LINE__, 2, "Gid : '$v_header[gid]'"); - $v_header[size] = OctDec(trim($v_data[size])); - TrFctMessage(__FILE__, __LINE__, 2, "Size : '$v_header[size]'"); - $v_header[mtime] = OctDec(trim($v_data[mtime])); - TrFctMessage(__FILE__, __LINE__, 2, "Date : ".date("l dS of F Y h:i:s A", $v_header[mtime])); - if (($v_header[typeflag] = $v_data[typeflag]) == "5") - { - $v_header[size] = 0; - TrFctMessage(__FILE__, __LINE__, 2, "Size (folder) : '$v_header[size]'"); - } - TrFctMessage(__FILE__, __LINE__, 2, "File typeflag : $v_header[typeflag]"); - /* ----- All these fields are removed form the header because they do not carry interesting info - $v_header[link] = trim($v_data[link]); - TrFctMessage(__FILE__, __LINE__, 2, "Linkname : $v_header[linkname]"); - $v_header[magic] = trim($v_data[magic]); - TrFctMessage(__FILE__, __LINE__, 2, "Magic : $v_header[magic]"); - $v_header[version] = trim($v_data[version]); - TrFctMessage(__FILE__, __LINE__, 2, "Version : $v_header[version]"); - $v_header[uname] = trim($v_data[uname]); - TrFctMessage(__FILE__, __LINE__, 2, "Uname : $v_header[uname]"); - $v_header[gname] = trim($v_data[gname]); - TrFctMessage(__FILE__, __LINE__, 2, "Gname : $v_header[gname]"); - $v_header[devmajor] = trim($v_data[devmajor]); - TrFctMessage(__FILE__, __LINE__, 2, "Devmajor : $v_header[devmajor]"); - $v_header[devminor] = trim($v_data[devminor]); - TrFctMessage(__FILE__, __LINE__, 2, "Devminor : $v_header[devminor]"); - */ - - // ----- Set the status field - $v_header[status] = "ok"; - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandlerDirCheck() - // Description : - // Check if a directory exists, if not it creates it and all the parents directory - // which may be useful. - // Parameters : - // $p_dir : Directory path to check (without / at the end). - // Return Values : - // 1 : OK - // -1 : Unable to create directory - // -------------------------------------------------------------------------------- - function PclTarHandlerDirCheck($p_dir) - { - $v_result = 1; - - TrFctStart(__FILE__, __LINE__, "PclTarHandlerDirCheck", "$p_dir"); - - // ----- Check the directory availability - if ((is_dir($p_dir)) || ($p_dir == "")) - { - TrFctEnd(__FILE__, __LINE__, "'$p_dir' is a directory"); - return 1; - } - - // ----- Look for file alone - /* - if (!strstr("$p_dir", "/")) - { - TrFctEnd(__FILE__, __LINE__, "'$p_dir' is a file with no directory"); - return 1; - } - */ - - // ----- Extract parent directory - $p_parent_dir = dirname($p_dir); - TrFctMessage(__FILE__, __LINE__, 3, "Parent directory is '$p_parent_dir'"); - - // ----- Just a check - if ($p_parent_dir != $p_dir) - { - // ----- Look for parent directory - if ($p_parent_dir != "") - { - if (($v_result = PclTarHandlerDirCheck($p_parent_dir)) != 1) - { - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - } - } - - // ----- Create the directory - TrFctMessage(__FILE__, __LINE__, 3, "Create directory '$p_dir'"); - if (!@mkdir($p_dir, 0777)) - { - // ----- Error log - PclErrorLog(-8, "Unable to create directory '$p_dir'"); - - // ----- Return - TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - return PclErrorCode(); - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result, "Directory '$p_dir' created"); - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTarHandleExtension() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandleExtension($p_tarname) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandleExtension", "tar=$p_tarname"); - - // ----- Look for file extension - if ((substr($p_tarname, -7) == ".tar.gz") || (substr($p_tarname, -4) == ".tgz")) - { - TrFctMessage(__FILE__, __LINE__, 2, "Archive is a gzip tar"); - $v_tar_mode = "tgz"; - } - else if (substr($p_tarname, -3) == ".gz") - {// add by warlee;log.gz simple file - TrFctMessage(__FILE__, __LINE__, 2, "Archive is a gz"); - $v_tar_mode = "gz"; - } - else if (substr($p_tarname, -4) == ".tar") - { - TrFctMessage(__FILE__, __LINE__, 2, "Archive is a tar"); - $v_tar_mode = "tar"; - } - else - { - // ----- Error log - PclErrorLog(-9, "Invalid archive extension"); - - TrFctMessage(__FILE__, __LINE__, PclErrorCode(), PclErrorString()); - - $v_tar_mode = ""; - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_tar_mode); - return $v_tar_mode; - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : PclTarHandlePathReduction() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclTarHandlePathReduction($p_dir) - { - TrFctStart(__FILE__, __LINE__, "PclTarHandlePathReduction", "dir='$p_dir'"); - $v_result = ""; - - // ----- Look for not empty path - if ($p_dir != "") - { - // ----- Explode path by directory names - $v_list = explode("/", $p_dir); - - // ----- Study directories from last to first - for ($i=sizeof($v_list)-1; $i>=0; $i--) - { - // ----- Look for current path - if ($v_list[$i] == ".") - { - // ----- Ignore this directory - // Should be the first $i=0, but no check is done - } - else if ($v_list[$i] == "..") - { - // ----- Ignore it and ignore the $i-1 - $i--; - } - else if (($v_list[$i] == "") && ($i!=(sizeof($v_list)-1)) && ($i!=0)) - { - // ----- Ignore only the double '//' in path, - // but not the first and last '/' - } - else - { - $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); - } - } - } - - // ----- Return - TrFctEnd(__FILE__, __LINE__, $v_result); - return $v_result; - } - // -------------------------------------------------------------------------------- - - -// ----- End of double include look -} \ No newline at end of file diff --git a/plugin/document/kod/app/kod/archiveLib/pcltrace.lib.php b/plugin/document/kod/app/kod/archiveLib/pcltrace.lib.php deleted file mode 100644 index 82c9be276..000000000 --- a/plugin/document/kod/app/kod/archiveLib/pcltrace.lib.php +++ /dev/null @@ -1,453 +0,0 @@ -<?php -// -------------------------------------------------------------------------------- -// PhpConcept Library (PCL) Trace 1.0 -// -------------------------------------------------------------------------------- -// License GNU/GPL - Vincent Blavet - Janvier 2001 -// http://www.phpconcept.net & http://phpconcept.free.fr -// -------------------------------------------------------------------------------- -// Franais : -// La description de l'usage de la librairie PCL Trace 1.0 n'est pas encore -// disponible. Celle-ci n'est pour le moment distribue qu'avec l'application -// et la librairie PhpZip. -// Une version indpendante sera bientot disponible sur http://www.phpconcept.net -// -// English : -// The PCL Trace 1.0 library description is not available yet. This library is -// released only with PhpZip application and library. -// An independant release will be soon available on http://www.phpconcept.net -// -// -------------------------------------------------------------------------------- -// -// * Avertissement : -// -// Cette librairie a t cre de faon non professionnelle. -// Son usage est au risque et pril de celui qui l'utilise, en aucun cas l'auteur -// de ce code ne pourra tre tenu pour responsable des ventuels dgats qu'il pourrait -// engendrer. -// Il est entendu cependant que l'auteur a ralis ce code par plaisir et n'y a -// cach aucun virus, ni malveillance. -// Cette libairie est distribue sous la license GNU/GPL (http://www.gnu.org) -// -// * Auteur : -// -// Ce code a t crit par Vincent Blavet (vincent@blavet.net) sur son temps -// de loisir. -// -// -------------------------------------------------------------------------------- - -// ----- Look for double include -if (!defined("PCLTRACE_LIB")) -{ - define( "PCLTRACE_LIB", 1 ); - - // ----- Version - $g_pcl_trace_version = "1.0"; - - // ----- Internal variables - // These values must be change by PclTrace library functions - $g_pcl_trace_mode = "memory"; - $g_pcl_trace_filename = "trace.txt"; - $g_pcl_trace_name = array(); - $g_pcl_trace_index = 0; - $g_pcl_trace_level = 10; - $g_pcl_trace_entries = array(); - - - // -------------------------------------------------------------------------------- - // Function : TrOn($p_level, $p_mode, $p_filename) - // Description : - // Parameters : - // $p_level : Trace level - // $p_mode : Mode of trace displaying : - // 'normal' : messages are displayed at function call - // 'memory' : messages are memorized in a table and can be display by - // TrDisplay() function. (default) - // 'log' : messages are writed in the file $p_filename - // -------------------------------------------------------------------------------- - function TrOn($p_level=1, $p_mode="memory", $p_filename="trace.txt") - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - // ----- Enable trace mode - $g_pcl_trace_level = $p_level; - - // ----- Memorize mode and filename - switch ($p_mode) { - case "normal" : - case "memory" : - case "log" : - $g_pcl_trace_mode = $p_mode; - break; - default : - $g_pcl_trace_mode = "logged"; - } - - // ----- Memorize filename - $g_pcl_trace_filename = $p_filename; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : IsTrOn() - // Description : - // Return value : - // The trace level (0 for disable). - // -------------------------------------------------------------------------------- - function IsTrOn() - { - global $g_pcl_trace_level; - - return($g_pcl_trace_level); - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : TrOff() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function TrOff() - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - - // ----- Clean - $g_pcl_trace_mode = "memory"; - unset($g_pcl_trace_entries); - unset($g_pcl_trace_name); - unset($g_pcl_trace_index); - - // ----- Switch off trace - $g_pcl_trace_level = 0; - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : TrFctStart() - // Description : - // Just a trace function for debbugging purpose before I use a better tool !!!! - // Start and stop of this function is by $g_pcl_trace_level global variable. - // Parameters : - // $p_level : Level of trace required. - // -------------------------------------------------------------------------------- - function TrFctStart($p_file, $p_line, $p_name, $p_param="", $p_message="") - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - // ----- Look for disabled trace - if ($g_pcl_trace_level < 1) - return; - - // ----- Add the function name in the list - if (!isset($g_pcl_trace_name)) - $g_pcl_trace_name = $p_name; - else - $g_pcl_trace_name .= ",".$p_name; - - // ----- Update the function entry - $i = sizeof($g_pcl_trace_entries); - $g_pcl_trace_entries[$i][name] = $p_name; - $g_pcl_trace_entries[$i][param] = $p_param; - $g_pcl_trace_entries[$i][message] = ""; - $g_pcl_trace_entries[$i][file] = $p_file; - $g_pcl_trace_entries[$i][line] = $p_line; - $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index; - $g_pcl_trace_entries[$i][type] = "1"; // means start of function - - // ----- Update the message entry - if ($p_message != "") - { - $i = sizeof($g_pcl_trace_entries); - $g_pcl_trace_entries[$i][name] = ""; - $g_pcl_trace_entries[$i][param] = ""; - $g_pcl_trace_entries[$i][message] = $p_message; - $g_pcl_trace_entries[$i][file] = $p_file; - $g_pcl_trace_entries[$i][line] = $p_line; - $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index; - $g_pcl_trace_entries[$i][type] = "3"; // means message - } - - // ----- Action depending on mode - PclTraceAction($g_pcl_trace_entries[$i]); - - // ----- Increment the index - $g_pcl_trace_index++; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : TrFctEnd() - // Description : - // Just a trace function for debbugging purpose before I use a better tool !!!! - // Start and stop of this function is by $g_pcl_trace_level global variable. - // Parameters : - // $p_level : Level of trace required. - // -------------------------------------------------------------------------------- - function TrFctEnd($p_file, $p_line, $p_return=1, $p_message="") - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - // ----- Look for disabled trace - if ($g_pcl_trace_level < 1) - return; - - // ----- Extract the function name in the list - // ----- Remove the function name in the list - if (!($v_name = strrchr($g_pcl_trace_name, ","))) - { - $v_name = $g_pcl_trace_name; - $g_pcl_trace_name = ""; - } - else - { - $g_pcl_trace_name = substr($g_pcl_trace_name, 0, strlen($g_pcl_trace_name)-strlen($v_name)); - $v_name = substr($v_name, -strlen($v_name)+1); - } - - // ----- Decrement the index - $g_pcl_trace_index--; - - // ----- Update the message entry - if ($p_message != "") - { - $i = sizeof($g_pcl_trace_entries); - $g_pcl_trace_entries[$i][name] = ""; - $g_pcl_trace_entries[$i][param] = ""; - $g_pcl_trace_entries[$i][message] = $p_message; - $g_pcl_trace_entries[$i][file] = $p_file; - $g_pcl_trace_entries[$i][line] = $p_line; - $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index; - $g_pcl_trace_entries[$i][type] = "3"; // means message - } - - // ----- Update the function entry - $i = sizeof($g_pcl_trace_entries); - $g_pcl_trace_entries[$i][name] = $v_name; - $g_pcl_trace_entries[$i][param] = $p_return; - $g_pcl_trace_entries[$i][message] = ""; - $g_pcl_trace_entries[$i][file] = $p_file; - $g_pcl_trace_entries[$i][line] = $p_line; - $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index; - $g_pcl_trace_entries[$i][type] = "2"; // means end of function - - // ----- Action depending on mode - PclTraceAction($g_pcl_trace_entries[$i]); - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : TrFctMessage() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function TrFctMessage($p_file, $p_line, $p_level, $p_message="") - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - // ----- Look for disabled trace - if ($g_pcl_trace_level < $p_level) - return; - - // ----- Update the entry - $i = sizeof($g_pcl_trace_entries); - $g_pcl_trace_entries[$i][name] = ""; - $g_pcl_trace_entries[$i][param] = ""; - $g_pcl_trace_entries[$i][message] = $p_message; - $g_pcl_trace_entries[$i][file] = $p_file; - $g_pcl_trace_entries[$i][line] = $p_line; - $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index; - $g_pcl_trace_entries[$i][type] = "3"; // means message of function - - // ----- Action depending on mode - PclTraceAction($g_pcl_trace_entries[$i]); - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : TrMessage() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function TrMessage($p_file, $p_line, $p_level, $p_message="") - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - // ----- Look for disabled trace - if ($g_pcl_trace_level < $p_level) - return; - - // ----- Update the entry - $i = sizeof($g_pcl_trace_entries); - $g_pcl_trace_entries[$i][name] = ""; - $g_pcl_trace_entries[$i][param] = ""; - $g_pcl_trace_entries[$i][message] = $p_message; - $g_pcl_trace_entries[$i][file] = $p_file; - $g_pcl_trace_entries[$i][line] = $p_line; - $g_pcl_trace_entries[$i][index] = $g_pcl_trace_index; - $g_pcl_trace_entries[$i][type] = "4"; // means simple message - - // ----- Action depending on mode - PclTraceAction($g_pcl_trace_entries[$i]); - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : TrDisplay() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function TrDisplay() - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - // ----- Look for disabled trace - if (($g_pcl_trace_level <= 0) || ($g_pcl_trace_mode != "memory")) - return; - - $v_font = "\"Verdana, Arial, Helvetica, sans-serif\""; - - // ----- Trace Header - echo "<table width=100% border=0 cellspacing=0 cellpadding=0>"; - echo "<tr bgcolor=#0000CC>"; - echo "<td bgcolor=#0000CC width=1>"; - echo "</td>"; - echo "<td><div align=center><font size=3 color=#FFFFFF face=$v_font>Trace</font></div></td>"; - echo "</tr>"; - echo "<tr>"; - echo "<td bgcolor=#0000CC width=1>"; - echo "</td>"; - echo "<td>"; - - // ----- Content header - echo "<table width=100% border=0 cellspacing=0 cellpadding=0>"; - - // ----- Display - $v_again=0; - for ($i=0; $i<sizeof($g_pcl_trace_entries); $i++) - { - // ---- Row header - echo "<tr>"; - echo "<td><table width=100% border=0 cellspacing=0 cellpadding=0><tr>"; - $n = ($g_pcl_trace_entries[$i][index]+1)*10; - echo "<td width=".$n."><table width=100% border=0 cellspacing=0 cellpadding=0><tr>"; - - for ($j=0; $j<=$g_pcl_trace_entries[$i][index]; $j++) - { - if ($j==$g_pcl_trace_entries[$i][index]) - { - if (($g_pcl_trace_entries[$i][type] == 1) || ($g_pcl_trace_entries[$i][type] == 2)) - echo "<td width=10><div align=center><font size=2 face=$v_font>+</font></div></td>"; - } - else - echo "<td width=10><div align=center><font size=2 face=$v_font>|</font></div></td>"; - } - //echo "<td> </td>"; - echo "</tr></table></td>"; - - echo "<td width=2></td>"; - switch ($g_pcl_trace_entries[$i][type]) { - case 1: - echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."(".$g_pcl_trace_entries[$i][param].")</font></td>"; - break; - case 2: - echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."()=".$g_pcl_trace_entries[$i][param]."</font></td>"; - break; - case 3: - case 4: - echo "<td><table width=100% border=0 cellspacing=0 cellpadding=0><td width=20></td><td>"; - echo "<font size=2 face=$v_font>".$g_pcl_trace_entries[$i][message]."</font>"; - echo "</td></table></td>"; - break; - default: - echo "<td><font size=2 face=$v_font>".$g_pcl_trace_entries[$i][name]."(".$g_pcl_trace_entries[$i][param].")</font></td>"; - } - echo "</tr></table></td>"; - echo "<td width=5></td>"; - echo "<td><font size=1 face=$v_font>".basename($g_pcl_trace_entries[$i][file])."</font></td>"; - echo "<td width=5></td>"; - echo "<td><font size=1 face=$v_font>".$g_pcl_trace_entries[$i][line]."</font></td>"; - echo "</tr>"; - } - - // ----- Content footer - echo "</table>"; - - // ----- Trace footer - echo "</td>"; - echo "<td bgcolor=#0000CC width=1>"; - echo "</td>"; - echo "</tr>"; - echo "<tr bgcolor=#0000CC>"; - echo "<td bgcolor=#0000CC width=1>"; - echo "</td>"; - echo "<td><div align=center><font color=#FFFFFF face=$v_font> </font></div></td>"; - echo "</tr>"; - echo "</table>"; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclTraceAction() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function PclTraceAction($p_entry) - { - global $g_pcl_trace_level; - global $g_pcl_trace_mode; - global $g_pcl_trace_filename; - global $g_pcl_trace_name; - global $g_pcl_trace_index; - global $g_pcl_trace_entries; - - if ($g_pcl_trace_mode == "normal") - { - for ($i=0; $i<$p_entry[index]; $i++) - echo "---"; - if ($p_entry[type] == 1) - echo "<b>".$p_entry[name]."</b>(".$p_entry[param].") : ".$p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>"; - else if ($p_entry[type] == 2) - echo "<b>".$p_entry[name]."</b>()=".$p_entry[param]." : ".$p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>"; - else - echo $p_entry[message]." [".$p_entry[file].", ".$p_entry[line]."]<br>"; - } - } - // -------------------------------------------------------------------------------- - -// ----- End of double include look -} \ No newline at end of file diff --git a/plugin/document/kod/app/kod/archiveLib/pclzip.class.php b/plugin/document/kod/app/kod/archiveLib/pclzip.class.php deleted file mode 100644 index eb4cec64f..000000000 --- a/plugin/document/kod/app/kod/archiveLib/pclzip.class.php +++ /dev/null @@ -1,5871 +0,0 @@ -<?php - -//changed by warlee --kodcloud -//add pre name filter; PCLZIP_CB_PRE_FILE_NAME - -// zip64 support; -//https://blog.csdn.net/a200710716/article/details/51644421 -//https://github.com/brokencube/ZipStream64/blob/14087549a4914bfc441a396ca02849569145a273/src/ZipStream.php#L808 -//https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.2.0.txt -// -// -------------------------------------------------------------------------------- -// PhpConcept Library - Zip Module 2.8.2 -// -------------------------------------------------------------------------------- -// License GNU/LGPL - Vincent Blavet - August 2009 -// http://www.phpconcept.net -// -------------------------------------------------------------------------------- -// -// Presentation : -// PclZip is a PHP library that manage ZIP archives. -// So far tests show that archives generated by PclZip are readable by -// WinZip application and other tools. -// -// Description : -// See readme.txt and http://www.phpconcept.net -// -// Warning : -// This library and the associated files are non commercial, non professional -// work. -// It should not have unexpected results. However if any damage is caused by -// this software the author can not be responsible. -// The use of this software is at the risk of the user. -// -// -------------------------------------------------------------------------------- -// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $ -// -------------------------------------------------------------------------------- - - // ----- Constants - if (!defined('PCLZIP_READ_BLOCK_SIZE')) { - define( 'PCLZIP_READ_BLOCK_SIZE', 2048 ); - } - - // ----- File list separator - // In version 1.x of PclZip, the separator for file list is a space - // (which is not a very smart choice, specifically for windows paths !). - // A better separator should be a comma (,). This constant gives you the - // abilty to change that. - // However notice that changing this value, may have impact on existing - // scripts, using space separated filenames. - // Recommanded values for compatibility with older versions : - //define( 'PCLZIP_SEPARATOR', ' ' ); - // Recommanded values for smart separation of filenames. - if (!defined('PCLZIP_SEPARATOR')) { - define( 'PCLZIP_SEPARATOR', ',' ); - } - - // ----- Error configuration - // 0 : PclZip Class integrated error handling - // 1 : PclError external library error handling. By enabling this - // you must ensure that you have included PclError library. - // [2,...] : reserved for futur use - if (!defined('PCLZIP_ERROR_EXTERNAL')) { - define( 'PCLZIP_ERROR_EXTERNAL', 0 ); - } - - // ----- Optional static temporary directory - // By default temporary files are generated in the script current - // path. - // If defined : - // - MUST BE terminated by a '/'. - // - MUST be a valid, already created directory - // Samples : - // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' ); - // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' ); - if (!defined('PCLZIP_TEMPORARY_DIR')) { - define( 'PCLZIP_TEMPORARY_DIR', '' ); - } - - // ----- Optional threshold ratio for use of temporary files - // Pclzip sense the size of the file to add/extract and decide to - // use or not temporary file. The algorythm is looking for - // memory_limit of PHP and apply a ratio. - // threshold = memory_limit * ratio. - // Recommended values are under 0.5. Default 0.47. - // Samples : - // define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.5 ); - if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) { - define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 ); - } - -// -------------------------------------------------------------------------------- -// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED ***** -// -------------------------------------------------------------------------------- - - // ----- Global variables - $g_pclzip_version = "2.8.2"; - - // ----- Error codes - // -1 : Unable to open file in binary write mode - // -2 : Unable to open file in binary read mode - // -3 : Invalid parameters - // -4 : File does not exist - // -5 : Filename is too long (max. 255) - // -6 : Not a valid zip file - // -7 : Invalid extracted file size - // -8 : Unable to create directory - // -9 : Invalid archive extension - // -10 : Invalid archive format - // -11 : Unable to delete file (unlink) - // -12 : Unable to rename file (rename) - // -13 : Invalid header checksum - // -14 : Invalid archive size - define( 'PCLZIP_ERR_USER_ABORTED', 2 ); - define( 'PCLZIP_ERR_NO_ERROR', 0 ); - define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 ); - define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 ); - define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 ); - define( 'PCLZIP_ERR_MISSING_FILE', -4 ); - define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 ); - define( 'PCLZIP_ERR_INVALID_ZIP', -6 ); - define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 ); - define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 ); - define( 'PCLZIP_ERR_BAD_EXTENSION', -9 ); - define( 'PCLZIP_ERR_BAD_FORMAT', -10 ); - define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 ); - define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 ); - define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 ); - define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 ); - define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 ); - define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 ); - define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 ); - define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 ); - define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 ); - define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 ); - define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 ); - - // ----- Options values - define( 'PCLZIP_OPT_PATH', 77001 ); - define( 'PCLZIP_OPT_ADD_PATH', 77002 ); - define( 'PCLZIP_OPT_REMOVE_PATH', 77003 ); - define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 ); - define( 'PCLZIP_OPT_SET_CHMOD', 77005 ); - define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 ); - define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 ); - define( 'PCLZIP_OPT_BY_NAME', 77008 ); - define( 'PCLZIP_OPT_BY_INDEX', 77009 ); - define( 'PCLZIP_OPT_BY_EREG', 77010 ); - define( 'PCLZIP_OPT_BY_PREG', 77011 ); - define( 'PCLZIP_OPT_COMMENT', 77012 ); - define( 'PCLZIP_OPT_ADD_COMMENT', 77013 ); - define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 ); - define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 ); - define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 ); - define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 ); - // Having big trouble with crypt. Need to multiply 2 long int - // which is not correctly supported by PHP ... - //define( 'PCLZIP_OPT_CRYPT', 77018 ); - define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 ); - define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 ); - define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); // alias - define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 ); - define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias - define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 ); - define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias - - // ----- File description attributes - define( 'PCLZIP_ATT_FILE_NAME', 79001 ); - define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 ); - define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 ); - define( 'PCLZIP_ATT_FILE_MTIME', 79004 ); - define( 'PCLZIP_ATT_FILE_CONTENT', 79005 ); - define( 'PCLZIP_ATT_FILE_COMMENT', 79006 ); - - // ----- Call backs values - define( 'PCLZIP_CB_PRE_EXTRACT', 78001 ); - define( 'PCLZIP_CB_POST_EXTRACT', 78002 ); - define( 'PCLZIP_CB_PRE_ADD', 78003 ); - define( 'PCLZIP_CB_POST_ADD', 78004 ); - define( 'PCLZIP_CB_PRE_FILE_NAME', 78005);//解压前处理文件名 - - /* For futur use - define( 'PCLZIP_CB_PRE_LIST', 78005 ); - define( 'PCLZIP_CB_POST_LIST', 78006 ); - define( 'PCLZIP_CB_PRE_DELETE', 78007 ); - define( 'PCLZIP_CB_POST_DELETE', 78008 ); - */ - - // -------------------------------------------------------------------------------- - // Class : PclZip - // Description : - // PclZip is the class that represent a Zip archive. - // The public methods allow the manipulation of the archive. - // Attributes : - // Attributes must not be accessed directly. - // Methods : - // PclZip() : Object creator - // create() : Creates the Zip archive - // listContent() : List the content of the Zip archive - // extract() : Extract the content of the archive - // properties() : List the properties of the archive - // -------------------------------------------------------------------------------- - class PclZip - { - // ----- Filename of the zip file - var $zipname = ''; - - // ----- File descriptor of the zip file - var $zip_fd = 0; - - // ----- Internal error handling - var $error_code = 1; - var $error_string = ''; - - // ----- Current status of the magic_quotes_runtime - // This value store the php configuration for magic_quotes - // The class can then disable the magic_quotes and reset it after - var $magic_quotes_status; - - // -------------------------------------------------------------------------------- - // Function : PclZip() - // Description : - // Creates a PclZip object and set the name of the associated Zip archive - // filename. - // Note that no real action is taken, if the archive does not exist it is not - // created. Use create() for that. - // - // changed by warlee; PclZip=>__construct; php7.1不再支持5php4的构造函数方法 - // -------------------------------------------------------------------------------- - function __construct($p_zipname) - { - - // ----- Tests the zlib - if (!function_exists('gzopen64') && !function_exists('gzopen') ) - { - die('Abort '.basename(__FILE__).' : Missing zlib extensions'); - } - - // ----- Set the attributes - $this->zipname = $p_zipname; - $this->zip_fd = 0; - $this->magic_quotes_status = -1; - - // ----- Return - return; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // create($p_filelist, $p_add_dir="", $p_remove_dir="") - // create($p_filelist, $p_option, $p_option_value, ...) - // Description : - // This method supports two different synopsis. The first one is historical. - // This method creates a Zip Archive. The Zip file is created in the - // filesystem. The files and directories indicated in $p_filelist - // are added in the archive. See the parameters description for the - // supported format of $p_filelist. - // When a directory is in the list, the directory and its content is added - // in the archive. - // In this synopsis, the function takes an optional variable list of - // options. See bellow the supported options. - // Parameters : - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or one directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : A path to add before the real path of the archived file, - // in order to have it memorized in the archive. - // $p_remove_dir : A path to remove from the real path of the file to archive, - // in order to have a shorter path memorized in the archive. - // When $p_add_dir and $p_remove_dir are set, $p_remove_dir - // is removed first, before $p_add_dir is added. - // Options : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_COMMENT : - // PCLZIP_CB_PRE_ADD : - // PCLZIP_CB_POST_ADD : - // PCLZIP_CB_PRE_FILE_NAME - // Return Values : - // 0 on failure, - // The list of the added files, with a status of the add action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - function create($p_filelist) - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Set default values - $v_options = array(); - $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Remove from the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_ADD => 'optional', - PCLZIP_CB_POST_ADD => 'optional', - PCLZIP_CB_PRE_FILE_NAME => 'optional', - PCLZIP_OPT_NO_COMPRESSION => 'optional', - PCLZIP_OPT_COMMENT => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - //, PCLZIP_OPT_CRYPT => 'optional' - )); - if ($v_result != 1) { - return 0; - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - - // ----- Get the first argument - $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; - } - else if ($v_size > 2) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, - "Invalid number / type of arguments"); - return 0; - } - } - } - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Init - $v_string_list = array(); - $v_att_list = array(); - $v_filedescr_list = array(); - $p_result_list = array(); - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) { - - // ----- Look if the first element is also an array - // This will mean that this is a file description entry - if (isset($p_filelist[0]) && is_array($p_filelist[0])) { - $v_att_list = $p_filelist; - } - - // ----- The list is a list of string names - else { - $v_string_list = $p_filelist; - } - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) { - // ----- Create a list from the string - $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); - } - - // ----- Invalid variable type for $p_filelist - else { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); - return 0; - } - - // ----- Reformat the string list - if (sizeof($v_string_list) != 0) { - foreach ($v_string_list as $v_string) { - if ($v_string != '') { - $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; - } - else { - } - } - } - - // ----- For each file in the list check the attributes - $v_supported_attributes - = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' - ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' - ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' - ,PCLZIP_ATT_FILE_MTIME => 'optional' - ,PCLZIP_ATT_FILE_CONTENT => 'optional' - ,PCLZIP_ATT_FILE_COMMENT => 'optional' - ); - foreach ($v_att_list as $v_entry) { - $v_result = $this->privFileDescrParseAtt($v_entry, - $v_filedescr_list[], - $v_options, - $v_supported_attributes); - if ($v_result != 1) { - return 0; - } - } - - // ----- Expand the filelist (expand directories) - $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Call the create fct - $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Return - return $p_result_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // add($p_filelist, $p_add_dir="", $p_remove_dir="") - // add($p_filelist, $p_option, $p_option_value, ...) - // Description : - // This method supports two synopsis. The first one is historical. - // This methods add the list of files in an existing archive. - // If a file with the same name already exists, it is added at the end of the - // archive, the first one is still present. - // If the archive does not exist, it is created. - // Parameters : - // $p_filelist : An array containing file or directory names, or - // a string containing one filename or one directory name, or - // a string containing a list of filenames and/or directory - // names separated by spaces. - // $p_add_dir : A path to add before the real path of the archived file, - // in order to have it memorized in the archive. - // $p_remove_dir : A path to remove from the real path of the file to archive, - // in order to have a shorter path memorized in the archive. - // When $p_add_dir and $p_remove_dir are set, $p_remove_dir - // is removed first, before $p_add_dir is added. - // Options : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_COMMENT : - // PCLZIP_OPT_ADD_COMMENT : - // PCLZIP_OPT_PREPEND_COMMENT : - // PCLZIP_CB_PRE_ADD : - // PCLZIP_CB_POST_ADD : - // PCLZIP_CB_PRE_FILE_NAME - // Return Values : - // 0 on failure, - // The list of the added files, with a status of the add action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - function add($p_filelist) - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Set default values - $v_options = array(); - $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_ADD => 'optional', - PCLZIP_CB_POST_ADD => 'optional', - PCLZIP_CB_PRE_FILE_NAME => 'optional', - PCLZIP_OPT_NO_COMPRESSION => 'optional', - PCLZIP_OPT_COMMENT => 'optional', - PCLZIP_OPT_ADD_COMMENT => 'optional', - PCLZIP_OPT_PREPEND_COMMENT => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - //, PCLZIP_OPT_CRYPT => 'optional' - )); - if ($v_result != 1) { - return 0; - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - - // ----- Get the first argument - $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - return 0; - } - } - } - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Init - $v_string_list = array(); - $v_att_list = array(); - $v_filedescr_list = array(); - $p_result_list = array(); - - // ----- Look if the $p_filelist is really an array - if (is_array($p_filelist)) { - - // ----- Look if the first element is also an array - // This will mean that this is a file description entry - if (isset($p_filelist[0]) && is_array($p_filelist[0])) { - $v_att_list = $p_filelist; - } - - // ----- The list is a list of string names - else { - $v_string_list = $p_filelist; - } - } - - // ----- Look if the $p_filelist is a string - else if (is_string($p_filelist)) { - // ----- Create a list from the string - $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); - } - - // ----- Invalid variable type for $p_filelist - else { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); - return 0; - } - - // ----- Reformat the string list - if (sizeof($v_string_list) != 0) { - foreach ($v_string_list as $v_string) { - $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; - } - } - - // ----- For each file in the list check the attributes - $v_supported_attributes - = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' - ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' - ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' - ,PCLZIP_ATT_FILE_MTIME => 'optional' - ,PCLZIP_ATT_FILE_CONTENT => 'optional' - ,PCLZIP_ATT_FILE_COMMENT => 'optional' - ); - foreach ($v_att_list as $v_entry) { - $v_result = $this->privFileDescrParseAtt($v_entry, - $v_filedescr_list[], - $v_options, - $v_supported_attributes); - if ($v_result != 1) { - return 0; - } - } - - // ----- Expand the filelist (expand directories) - $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Call the create fct - $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); - if ($v_result != 1) { - return 0; - } - - // ----- Return - return $p_result_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : listContent() - // Description : - // This public method, gives the list of the files and directories, with their - // properties. - // The properties of each entries in the list are (used also in other functions) : - // filename : Name of the file. For a create or add action it is the filename - // given by the user. For an extract function it is the filename - // of the extracted file. - // stored_filename : Name of the file / directory stored in the archive. - // size : Size of the stored file. - // compressed_size : Size of the file's data compressed in the archive - // (without the headers overhead) - // mtime : Last known modification date of the file (UNIX timestamp) - // comment : Comment associated with the file - // folder : true | false - // index : index of the file in the archive - // status : status of the action (depending of the action) : - // Values are : - // ok : OK ! - // filtered : the file / dir is not extracted (filtered by user) - // already_a_directory : the file can not be extracted because a - // directory with the same name already exists - // write_protected : the file can not be extracted because a file - // with the same name already exists and is - // write protected - // newer_exist : the file was not extracted because a newer file exists - // path_creation_fail : the file is not extracted because the folder - // does not exist and can not be created - // write_error : the file was not extracted because there was a - // error while writing the file - // read_error : the file was not extracted because there was a error - // while reading the file - // invalid_header : the file was not extracted because of an archive - // format error (bad file header) - // Note that each time a method can continue operating when there - // is an action error on a file, the error is only logged in the file status. - // Return Values : - // 0 on an unrecoverable failure, - // The list of the files in the archive. - // -------------------------------------------------------------------------------- - function listContent() - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Call the extracting fct - $p_list = array(); - if (($v_result = $this->privList($p_list)) != 1) - { - unset($p_list); - return(0); - } - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // extract($p_path="./", $p_remove_path="") - // extract([$p_option, $p_option_value, ...]) - // Description : - // This method supports two synopsis. The first one is historical. - // This method extract all the files / directories from the archive to the - // folder indicated in $p_path. - // If you want to ignore the 'root' part of path of the memorized files - // you can indicate this in the optional $p_remove_path parameter. - // By default, if a newer file with the same name already exists, the - // file is not extracted. - // - // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions - // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append - // at the end of the path value of PCLZIP_OPT_PATH. - // Parameters : - // $p_path : Path where the files and directories are to be extracted - // $p_remove_path : First part ('root' part) of the memorized path - // (if any similar) to remove while extracting. - // Options : - // PCLZIP_OPT_PATH : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_CB_PRE_EXTRACT : - // PCLZIP_CB_PRE_FILE_NAME: - // PCLZIP_CB_POST_EXTRACT : - // Return Values : - // 0 or a negative value on failure, - // The list of the extracted files, with a status of the action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - function extract() - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Set default values - $v_options = array(); -// $v_path = "./"; - $v_path = ''; - $v_remove_path = ""; - $v_remove_all_path = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Default values for option - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; - - // ----- Look for arguments - if ($v_size > 0) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_PATH => 'optional', - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_EXTRACT => 'optional', - PCLZIP_CB_PRE_FILE_NAME=>'optional', - PCLZIP_CB_POST_EXTRACT => 'optional', - PCLZIP_OPT_SET_CHMOD => 'optional', - PCLZIP_OPT_BY_NAME => 'optional', - PCLZIP_OPT_BY_EREG => 'optional', - PCLZIP_OPT_BY_PREG => 'optional', - PCLZIP_OPT_BY_INDEX => 'optional', - PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', - PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', - PCLZIP_OPT_REPLACE_NEWER => 'optional' - ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' - ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - )); - if ($v_result != 1) { - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_PATH])) { - $v_path = $v_options[PCLZIP_OPT_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - // ----- Check for '/' in last path char - if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { - $v_path .= '/'; - } - $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - - // ----- Get the first argument - $v_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - return 0; - } - } - } - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Trace - - // ----- Call the extracting fct - $p_list = array(); - $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, - $v_remove_all_path, $v_options); - if ($v_result < 1) { - unset($p_list); - return(0); - } - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - - // -------------------------------------------------------------------------------- - // Function : - // extractByIndex($p_index, $p_path="./", $p_remove_path="") - // extractByIndex($p_index, [$p_option, $p_option_value, ...]) - // Description : - // This method supports two synopsis. The first one is historical. - // This method is doing a partial extract of the archive. - // The extracted files or folders are identified by their index in the - // archive (from 0 to n). - // Note that if the index identify a folder, only the folder entry is - // extracted, not all the files included in the archive. - // Parameters : - // $p_index : A single index (integer) or a string of indexes of files to - // extract. The form of the string is "0,4-6,8-12" with only numbers - // and '-' for range or ',' to separate ranges. No spaces or ';' - // are allowed. - // $p_path : Path where the files and directories are to be extracted - // $p_remove_path : First part ('root' part) of the memorized path - // (if any similar) to remove while extracting. - // Options : - // PCLZIP_OPT_PATH : - // PCLZIP_OPT_ADD_PATH : - // PCLZIP_OPT_REMOVE_PATH : - // PCLZIP_OPT_REMOVE_ALL_PATH : - // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and - // not as files. - // The resulting content is in a new field 'content' in the file - // structure. - // This option must be used alone (any other options are ignored). - // PCLZIP_CB_PRE_EXTRACT : - // PCLZIP_CB_PRE_FILE_NAME: - // PCLZIP_CB_POST_EXTRACT : - // Return Values : - // 0 on failure, - // The list of the extracted files, with a status of the action. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - //function extractByIndex($p_index, options...) - function extractByIndex($p_index) - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Set default values - $v_options = array(); -// $v_path = "./"; - $v_path = ''; - $v_remove_path = ""; - $v_remove_all_path = false; - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Default values for option - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; - - // ----- Look for arguments - if ($v_size > 1) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Remove form the options list the first argument - array_shift($v_arg_list); - $v_size--; - - // ----- Look for first arg - if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_PATH => 'optional', - PCLZIP_OPT_REMOVE_PATH => 'optional', - PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', - PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', - PCLZIP_OPT_ADD_PATH => 'optional', - PCLZIP_CB_PRE_EXTRACT => 'optional', - PCLZIP_CB_PRE_FILE_NAME => 'optional', - PCLZIP_CB_POST_EXTRACT => 'optional', - PCLZIP_OPT_SET_CHMOD => 'optional', - PCLZIP_OPT_REPLACE_NEWER => 'optional' - ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' - ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', - PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', - PCLZIP_OPT_TEMP_FILE_ON => 'optional', - PCLZIP_OPT_TEMP_FILE_OFF => 'optional' - )); - if ($v_result != 1) { - return 0; - } - - // ----- Set the arguments - if (isset($v_options[PCLZIP_OPT_PATH])) { - $v_path = $v_options[PCLZIP_OPT_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { - $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; - } - if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { - // ----- Check for '/' in last path char - if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { - $v_path .= '/'; - } - $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; - } - if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { - $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; - } - else { - } - } - - // ----- Look for 2 args - // Here we need to support the first historic synopsis of the - // method. - else { - - // ----- Get the first argument - $v_path = $v_arg_list[0]; - - // ----- Look for the optional second argument - if ($v_size == 2) { - $v_remove_path = $v_arg_list[1]; - } - else if ($v_size > 2) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); - - // ----- Return - return 0; - } - } - } - - // ----- Trace - - // ----- Trick - // Here I want to reuse extractByRule(), so I need to parse the $p_index - // with privParseOptions() - $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); - $v_options_trick = array(); - $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, - array (PCLZIP_OPT_BY_INDEX => 'optional' )); - if ($v_result != 1) { - return 0; - } - $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; - - // ----- Look for default option values - $this->privOptionDefaultThreshold($v_options); - - // ----- Call the extracting fct - if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { - return(0); - } - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : - // delete([$p_option, $p_option_value, ...]) - // Description : - // This method removes files from the archive. - // If no parameters are given, then all the archive is emptied. - // Parameters : - // None or optional arguments. - // Options : - // PCLZIP_OPT_BY_INDEX : - // PCLZIP_OPT_BY_NAME : - // PCLZIP_OPT_BY_EREG : - // PCLZIP_OPT_BY_PREG : - // Return Values : - // 0 on failure, - // The list of the files which are still present in the archive. - // (see PclZip::listContent() for list entry format) - // -------------------------------------------------------------------------------- - function delete() - { - $v_result=1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Set default values - $v_options = array(); - - // ----- Look for variable options arguments - $v_size = func_num_args(); - - // ----- Look for arguments - if ($v_size > 0) { - // ----- Get the arguments - $v_arg_list = func_get_args(); - - // ----- Parse the options - $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, - array (PCLZIP_OPT_BY_NAME => 'optional', - PCLZIP_OPT_BY_EREG => 'optional', - PCLZIP_OPT_BY_PREG => 'optional', - PCLZIP_OPT_BY_INDEX => 'optional' )); - if ($v_result != 1) { - return 0; - } - } - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Call the delete fct - $v_list = array(); - if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { - $this->privSwapBackMagicQuotes(); - unset($v_list); - return(0); - } - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : deleteByIndex() - // Description : - // ***** Deprecated ***** - // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. - // -------------------------------------------------------------------------------- - function deleteByIndex($p_index) - { - - $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); - - // ----- Return - return $p_list; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : properties() - // Description : - // This method gives the properties of the archive. - // The properties are : - // nb : Number of files in the archive - // comment : Comment associated with the archive file - // status : not_exist, ok - // Parameters : - // None - // Return Values : - // 0 on failure, - // An array with the archive properties. - // -------------------------------------------------------------------------------- - function properties() - { - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - $this->privSwapBackMagicQuotes(); - return(0); - } - - // ----- Default properties - $v_prop = array(); - $v_prop['comment'] = ''; - $v_prop['nb'] = 0; - $v_prop['status'] = 'not_exist'; - - // ----- Look if file exists - if (@is_file($this->zipname)) - { - // ----- Open the zip file - if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) - { - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); - - // ----- Return - return 0; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privSwapBackMagicQuotes(); - return 0; - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Set the user attributes - $v_prop['comment'] = $v_central_dir['comment']; - $v_prop['nb'] = $v_central_dir['entries']; - $v_prop['status'] = 'ok'; - } - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_prop; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : duplicate() - // Description : - // This method creates an archive by copying the content of an other one. If - // the archive already exist, it is replaced by the new one without any warning. - // Parameters : - // $p_archive : The filename of a valid archive, or - // a valid PclZip object. - // Return Values : - // 1 on success. - // 0 or a negative value on error (error code). - // -------------------------------------------------------------------------------- - function duplicate($p_archive) - { - $v_result = 1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Look if the $p_archive is a PclZip object - if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) - { - - // ----- Duplicate the archive - $v_result = $this->privDuplicate($p_archive->zipname); - } - - // ----- Look if the $p_archive is a string (so a filename) - else if (is_string($p_archive)) - { - - // ----- Check that $p_archive is a valid zip file - // TBC : Should also check the archive format - if (!is_file($p_archive)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); - $v_result = PCLZIP_ERR_MISSING_FILE; - } - else { - // ----- Duplicate the archive - $v_result = $this->privDuplicate($p_archive); - } - } - - // ----- Invalid variable - else - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : merge() - // Description : - // This method merge the $p_archive_to_add archive at the end of the current - // one ($this). - // If the archive ($this) does not exist, the merge becomes a duplicate. - // If the $p_archive_to_add archive does not exist, the merge is a success. - // Parameters : - // $p_archive_to_add : It can be directly the filename of a valid zip archive, - // or a PclZip object archive. - // Return Values : - // 1 on success, - // 0 or negative values on error (see below). - // -------------------------------------------------------------------------------- - function merge($p_archive_to_add) - { - $v_result = 1; - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Check archive - if (!$this->privCheckFormat()) { - return(0); - } - - // ----- Look if the $p_archive_to_add is a PclZip object - if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) - { - - // ----- Merge the archive - $v_result = $this->privMerge($p_archive_to_add); - } - - // ----- Look if the $p_archive_to_add is a string (so a filename) - else if (is_string($p_archive_to_add)) - { - - // ----- Create a temporary archive - $v_object_archive = new PclZip($p_archive_to_add); - - // ----- Merge the archive - $v_result = $this->privMerge($v_object_archive); - } - - // ----- Invalid variable - else - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); - $v_result = PCLZIP_ERR_INVALID_PARAMETER; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : errorCode() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function errorCode() - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - return(PclErrorCode()); - } - else { - return($this->error_code); - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : errorName() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function errorName($p_with_code=false) - { - $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', - PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', - PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', - PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', - PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', - PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', - PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', - PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', - PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', - PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', - PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', - PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', - PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', - PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', - PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', - PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', - PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', - PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', - PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' - ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' - ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' - ); - - if (isset($v_name[$this->error_code])) { - $v_value = $v_name[$this->error_code]; - } - else { - $v_value = 'NoName'; - } - - if ($p_with_code) { - return($v_value.' ('.$this->error_code.')'); - } - else { - return($v_value); - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : errorInfo() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function errorInfo($p_full=false) - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - return(PclErrorString()); - } - else { - if ($p_full) { - return($this->errorName(true)." : ".$this->error_string); - } - else { - return($this->error_string." [code ".$this->error_code."]"); - } - } - } - // -------------------------------------------------------------------------------- - - -// -------------------------------------------------------------------------------- -// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** -// ***** ***** -// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** -// -------------------------------------------------------------------------------- - - - - // -------------------------------------------------------------------------------- - // Function : privCheckFormat() - // Description : - // This method check that the archive exists and is a valid zip archive. - // Several level of check exists. (futur) - // Parameters : - // $p_level : Level of check. Default 0. - // 0 : Check the first bytes (magic codes) (default value)) - // 1 : 0 + Check the central directory (futur) - // 2 : 1 + Check each file header (futur) - // Return Values : - // true on success, - // false on error, the error code is set. - // -------------------------------------------------------------------------------- - function privCheckFormat($p_level=0) - { - $v_result = true; - - // ----- Reset the file system cache - clearstatcache(); - - // ----- Reset the error handler - $this->privErrorReset(); - - // ----- Look if the file exits - if (!is_file($this->zipname)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); - return(false); - } - - // ----- Check that the file is readeable - if (!is_readable($this->zipname)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); - return(false); - } - - // ----- Check the magic code - // TBC - - // ----- Check the central header - // TBC - - // ----- Check each file header - // TBC - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privParseOptions() - // Description : - // This internal methods reads the variable list of arguments ($p_options_list, - // $p_size) and generate an array with the options and values ($v_result_list). - // $v_requested_options contains the options that can be present and those that - // must be present. - // $v_requested_options is an array, with the option value as key, and 'optional', - // or 'mandatory' as value. - // Parameters : - // See above. - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) - { - $v_result=1; - - // ----- Read the options - $i=0; - while ($i<$p_size) { - - // ----- Check if the option is supported - if (!isset($v_requested_options[$p_options_list[$i]])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for next option - switch ($p_options_list[$i]) { - // ----- Look for options that request a path value - case PCLZIP_OPT_PATH : - case PCLZIP_OPT_REMOVE_PATH : - case PCLZIP_OPT_ADD_PATH : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); - $i++; - break; - - case PCLZIP_OPT_TEMP_FILE_THRESHOLD : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - return PclZip::errorCode(); - } - - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); - return PclZip::errorCode(); - } - - // ----- Check the value - $v_value = $p_options_list[$i+1]; - if ((!is_integer($v_value)) || ($v_value<0)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - return PclZip::errorCode(); - } - - // ----- Get the value (and convert it in bytes) - $v_result_list[$p_options_list[$i]] = $v_value*1048576; - $i++; - break; - - case PCLZIP_OPT_TEMP_FILE_ON : - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); - return PclZip::errorCode(); - } - - $v_result_list[$p_options_list[$i]] = true; - break; - - case PCLZIP_OPT_TEMP_FILE_OFF : - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); - return PclZip::errorCode(); - } - // ----- Check for incompatible options - if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); - return PclZip::errorCode(); - } - - $v_result_list[$p_options_list[$i]] = true; - break; - - case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if ( is_string($p_options_list[$i+1]) - && ($p_options_list[$i+1] != '')) { - $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); - $i++; - } - else { - } - break; - - // ----- Look for options that request an array of string for value - case PCLZIP_OPT_BY_NAME : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; - } - else if (is_array($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - $i++; - break; - - // ----- Look for options that request an EREG or PREG expression - case PCLZIP_OPT_BY_EREG : - // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG - // to PCLZIP_OPT_BY_PREG - $p_options_list[$i] = PCLZIP_OPT_BY_PREG; - case PCLZIP_OPT_BY_PREG : - //case PCLZIP_OPT_CRYPT : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - $i++; - break; - - // ----- Look for options that takes a string - case PCLZIP_OPT_COMMENT : - case PCLZIP_OPT_ADD_COMMENT : - case PCLZIP_OPT_PREPEND_COMMENT : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, - "Missing parameter value for option '" - .PclZipUtilOptionText($p_options_list[$i]) - ."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - if (is_string($p_options_list[$i+1])) { - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, - "Wrong parameter value for option '" - .PclZipUtilOptionText($p_options_list[$i]) - ."'"); - - // ----- Return - return PclZip::errorCode(); - } - $i++; - break; - - // ----- Look for options that request an array of index - case PCLZIP_OPT_BY_INDEX : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_work_list = array(); - if (is_string($p_options_list[$i+1])) { - - // ----- Remove spaces - $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); - - // ----- Parse items - $v_work_list = explode(",", $p_options_list[$i+1]); - } - else if (is_integer($p_options_list[$i+1])) { - $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; - } - else if (is_array($p_options_list[$i+1])) { - $v_work_list = $p_options_list[$i+1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Reduce the index list - // each index item in the list must be a couple with a start and - // an end value : [0,3], [5-5], [8-10], ... - // ----- Check the format of each item - $v_sort_flag=false; - $v_sort_value=0; - for ($j=0; $j<sizeof($v_work_list); $j++) { - // ----- Explode the item - $v_item_list = explode("-", $v_work_list[$j]); - $v_size_item_list = sizeof($v_item_list); - - // ----- TBC : Here we might check that each item is a - // real integer ... - - // ----- Look for single value - if ($v_size_item_list == 1) { - // ----- Set the option value - $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; - $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0]; - } - elseif ($v_size_item_list == 2) { - // ----- Set the option value - $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; - $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1]; - } - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - - // ----- Look for list sort - if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) { - $v_sort_flag=true; - - // ----- TBC : An automatic sort should be writen ... - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; - } - - // ----- Sort the items - if ($v_sort_flag) { - // TBC : To Be Completed - } - - // ----- Next option - $i++; - break; - - // ----- Look for options that request no value - case PCLZIP_OPT_REMOVE_ALL_PATH : - case PCLZIP_OPT_EXTRACT_AS_STRING : - case PCLZIP_OPT_NO_COMPRESSION : - case PCLZIP_OPT_EXTRACT_IN_OUTPUT : - case PCLZIP_OPT_REPLACE_NEWER : - case PCLZIP_OPT_STOP_ON_ERROR : - $v_result_list[$p_options_list[$i]] = true; - break; - - // ----- Look for options that request an octal value - case PCLZIP_OPT_SET_CHMOD : - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; - $i++; - break; - - // ----- Look for options that request a call-back - case PCLZIP_CB_PRE_EXTRACT : - case PCLZIP_CB_POST_EXTRACT : - case PCLZIP_CB_PRE_ADD : - case PCLZIP_CB_POST_ADD : - case PCLZIP_CB_PRE_FILE_NAME: - /* for futur use - case PCLZIP_CB_PRE_DELETE : - case PCLZIP_CB_POST_DELETE : - case PCLZIP_CB_PRE_LIST : - case PCLZIP_CB_POST_LIST : - */ - // ----- Check the number of parameters - if (($i+1) >= $p_size) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Get the value - $v_function_name = $p_options_list[$i+1]; - - // ----- Check that the value is a valid existing function - if (!function_exists($v_function_name)) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Set the attribute - $v_result_list[$p_options_list[$i]] = $v_function_name; - $i++; - break; - - default : - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, - "Unknown parameter '" - .$p_options_list[$i]."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Next options - $i++; - } - - // ----- Look for mandatory options - if ($v_requested_options !== false) { - for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { - // ----- Look for mandatory option - if ($v_requested_options[$key] == 'mandatory') { - // ----- Look if present - if (!isset($v_result_list[$key])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); - - // ----- Return - return PclZip::errorCode(); - } - } - } - } - - // ----- Look for default values - if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { - - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privOptionDefaultThreshold() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privOptionDefaultThreshold(&$p_options) - { - $v_result=1; - - if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) - || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { - return $v_result; - } - - // ----- Get 'memory_limit' configuration value - $v_memory_limit = ini_get('memory_limit'); - $v_memory_limit = trim($v_memory_limit); - $last = strtolower(substr($v_memory_limit, -1)); - - if($last == 'g') - //$v_memory_limit = $v_memory_limit*1024*1024*1024; - $v_memory_limit = $v_memory_limit*1073741824; - if($last == 'm') - //$v_memory_limit = $v_memory_limit*1024*1024; - $v_memory_limit = $v_memory_limit*1048576; - if($last == 'k') - $v_memory_limit = $v_memory_limit*1024; - - $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); - - - // ----- Sanity check : No threshold if value lower than 1M - if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { - unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privFileDescrParseAtt() - // Description : - // Parameters : - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) - { - $v_result=1; - - // ----- For each file in the list check the attributes - foreach ($p_file_list as $v_key => $v_value) { - - // ----- Check if the option is supported - if (!isset($v_requested_options[$v_key])) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for attribute - switch ($v_key) { - case PCLZIP_ATT_FILE_NAME : - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); - - if ($p_filedescr['filename'] == '') { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - break; - - case PCLZIP_ATT_FILE_NEW_SHORT_NAME : - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); - - if ($p_filedescr['new_short_name'] == '') { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - break; - - case PCLZIP_ATT_FILE_NEW_FULL_NAME : - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); - - if ($p_filedescr['new_full_name'] == '') { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - break; - - // ----- Look for options that takes a string - case PCLZIP_ATT_FILE_COMMENT : - if (!is_string($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['comment'] = $v_value; - break; - - case PCLZIP_ATT_FILE_MTIME : - if (!is_integer($v_value)) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); - return PclZip::errorCode(); - } - - $p_filedescr['mtime'] = $v_value; - break; - - case PCLZIP_ATT_FILE_CONTENT : - $p_filedescr['content'] = $v_value; - break; - - default : - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, - "Unknown parameter '".$v_key."'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for mandatory options - if ($v_requested_options !== false) { - for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { - // ----- Look for mandatory option - if ($v_requested_options[$key] == 'mandatory') { - // ----- Look if present - if (!isset($p_file_list[$key])) { - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); - return PclZip::errorCode(); - } - } - } - } - - // end foreach - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privFileDescrExpand() - // Description : - // This method look for each item of the list to see if its a file, a folder - // or a string to be added as file. For any other type of files (link, other) - // just ignore the item. - // Then prepare the information that will be stored for that file. - // When its a folder, expand the folder with all the files that are in that - // folder (recursively). - // Parameters : - // Return Values : - // 1 on success. - // 0 on failure. - // -------------------------------------------------------------------------------- - function privFileDescrExpand(&$p_filedescr_list, &$p_options) - { - $v_result=1; - - // ----- Create a result list - $v_result_list = array(); - - // ----- Look each entry - for ($i=0; $i<sizeof($p_filedescr_list); $i++) { - - // ----- Get filedescr - $v_descr = $p_filedescr_list[$i]; - - // ----- Reduce the filename - $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false); - $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']); - - // ----- Look for real file or folder - if (file_exists($v_descr['filename'])) { - if (@is_file($v_descr['filename'])) { - $v_descr['type'] = 'file'; - } - else if (@is_dir($v_descr['filename'])) { - $v_descr['type'] = 'folder'; - } - else if (@is_link($v_descr['filename'])) { - // skip - continue; - } - else { - // skip - continue; - } - } - - // ----- Look for string added as file - else if (isset($v_descr['content'])) { - $v_descr['type'] = 'virtual_file'; - } - - // ----- Missing file - else { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Calculate the stored filename - $this->privCalculateStoredFilename($v_descr, $p_options); - - // ----- Add the descriptor in result list - $v_result_list[sizeof($v_result_list)] = $v_descr; - - // ----- Look for folder - if ($v_descr['type'] == 'folder') { - // ----- List of items in folder - $v_dirlist_descr = array(); - $v_dirlist_nb = 0; - if ($v_folder_handler = @opendir($v_descr['filename'])) { - while (($v_item_handler = @readdir($v_folder_handler)) !== false) { - - // ----- Skip '.' and '..' - if (($v_item_handler == '.') || ($v_item_handler == '..')) { - continue; - } - - // ----- Compose the full filename - $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; - - // ----- Look for different stored filename - // Because the name of the folder was changed, the name of the - // files/sub-folders also change - if (($v_descr['stored_filename'] != $v_descr['filename']) - && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { - if ($v_descr['stored_filename'] != '') { - $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; - } - else { - $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; - } - } - - $v_dirlist_nb++; - } - - @closedir($v_folder_handler); - } - else { - // TBC : unable to open folder in read mode - } - - // ----- Expand each element of the list - if ($v_dirlist_nb != 0) { - // ----- Expand - if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { - return $v_result; - } - - // ----- Concat the resulting list - $v_result_list = array_merge($v_result_list, $v_dirlist_descr); - } - else { - } - - // ----- Free local array - unset($v_dirlist_descr); - } - } - - // ----- Get the result list - $p_filedescr_list = $v_result_list; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCreate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privCreate($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - $v_list_detail = array(); - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Open the file in write mode - if (($v_result = $this->privOpenFd('wb')) != 1) - { - // ----- Return - return $v_result; - } - - // ----- Add the list of files - $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); - - // ----- Close - $this->privCloseFd(); - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAdd() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privAdd($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - $v_list_detail = array(); - - // ----- Look if the archive exists or is empty - if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) - { - - // ----- Do a create - $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); - - // ----- Return - return $v_result; - } - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('rb')) != 1) - { - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Go to beginning of File - @rewind($this->zip_fd); - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Open the temporary file in write mode - if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) - { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = $v_central_dir['offset']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Swap the file descriptor - // Here is a trick : I swap the temporary fd with the zip fd, in order to use - // the following methods on the temporary fil and not the real archive - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Add the files - $v_header_list = array(); - if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) - { - fclose($v_zip_temp_fd); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($this->zip_fd); - - // ----- Copy the block of file headers from the old archive - $v_size = $v_central_dir['size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($v_zip_temp_fd, $v_read_size); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Create the Central Dir files header - for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++) - { - // ----- Create the file header - if ($v_header_list[$i]['status'] == 'ok') { - if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { - fclose($v_zip_temp_fd); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - $v_count++; - } - - // ----- Transform the header to a 'usable' info - $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - // ----- Zip file comment - $v_comment = $v_central_dir['comment']; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { - $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; - } - if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($this->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) - { - // ----- Reset the file list - unset($v_header_list); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - - // ----- Swap back the file descriptor - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Close - $this->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privOpenFd() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privOpenFd($p_mode) - { - $v_result=1; - - // ----- Look if already open - if ($this->zip_fd != 0) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Open the zip file - if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCloseFd() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privCloseFd() - { - $v_result=1; - - if ($this->zip_fd != 0) - @fclose($this->zip_fd); - $this->zip_fd = 0; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddList() - // Description : - // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is - // different from the real path of the file. This is usefull if you want to have PclTar - // running in any directory, and memorize relative path from an other directory. - // Parameters : - // $p_list : An array containing the file or directory names to add in the tar - // $p_result_list : list of added files with their properties (specially the status field) - // $p_add_dir : Path to add in the filename path archived - // $p_remove_dir : Path to remove in the filename path archived - // Return Values : - // -------------------------------------------------------------------------------- -// function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) - function privAddList($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - - // ----- Add the files - $v_header_list = array(); - if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) - { - // ----- Return - return $v_result; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($this->zip_fd); - - // ----- Create the Central Dir files header - for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++) - { - // ----- Create the file header - if ($v_header_list[$i]['status'] == 'ok') { - if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { - // ----- Return - return $v_result; - } - $v_count++; - } - - // ----- Transform the header to a 'usable' info - $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - // ----- Zip file comment - $v_comment = ''; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($this->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) - { - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - return $v_result; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFileList() - // Description : - // Parameters : - // $p_filedescr_list : An array containing the file description - // or directory names to add in the zip - // $p_result_list : list of added files with their properties (specially the status field) - // Return Values : - // -------------------------------------------------------------------------------- - function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) - { - $v_result=1; - $v_header = array(); - - // ----- Recuperate the current number of elt in list - $v_nb = sizeof($p_result_list); - - // ----- Loop on the files - for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) { - // ----- Format the filename - $p_filedescr_list[$j]['filename'] - = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); - - - // ----- Skip empty file names - // TBC : Can this be possible ? not checked in DescrParseAtt ? - if ($p_filedescr_list[$j]['filename'] == "") { - continue; - } - - // ----- Check the filename - if ( ($p_filedescr_list[$j]['type'] != 'virtual_file') - && (!file_exists($p_filedescr_list[$j]['filename']))) { - PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist"); - return PclZip::errorCode(); - } - - // ----- Look if it is a file or a dir with no all path remove option - // or a dir with all its path removed -// if ( (is_file($p_filedescr_list[$j]['filename'])) -// || ( is_dir($p_filedescr_list[$j]['filename']) - if ( ($p_filedescr_list[$j]['type'] == 'file') - || ($p_filedescr_list[$j]['type'] == 'virtual_file') - || ( ($p_filedescr_list[$j]['type'] == 'folder') - && ( !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]) - || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) - ) { - - // ----- Add the file - $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header, - $p_options); - if ($v_result != 1) { - return $v_result; - } - - // ----- Store the file infos - $p_result_list[$v_nb++] = $v_header; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privAddFile($p_filedescr, &$p_header, &$p_options) - { - $v_result=1; - - // ----- Working variable - $p_filename = $p_filedescr['filename']; - - // TBC : Already done in the fileAtt check ... ? - if ($p_filename == "") { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for a stored different filename - /* TBC : Removed - if (isset($p_filedescr['stored_filename'])) { - $v_stored_filename = $p_filedescr['stored_filename']; - } - else { - $v_stored_filename = $p_filedescr['stored_filename']; - } - */ - - // ----- Set the file properties - clearstatcache(); - $p_header['version'] = 20; - $p_header['version_extracted'] = 10; - $p_header['flag'] = 0; - $p_header['compression'] = 0; - $p_header['crc'] = 0; - $p_header['compressed_size'] = 0; - $p_header['filename_len'] = strlen($p_filename); - $p_header['extra_len'] = 0; - $p_header['disk'] = 0; - $p_header['internal'] = 0; - $p_header['offset'] = 0; - $p_header['filename'] = $p_filename; -// TBC : Removed $p_header['stored_filename'] = $v_stored_filename; - - - //add by warlee 文件名处理【编码 or 文件名处理】 - if (isset($p_options[PCLZIP_CB_PRE_FILE_NAME])) { - $p_header['stored_filename'] = $p_options[PCLZIP_CB_PRE_FILE_NAME]($p_filedescr['stored_filename']); - }else{ - $p_header['stored_filename'] = $p_filedescr['stored_filename']; - } - - $p_header['extra'] = ''; - $p_header['status'] = 'ok'; - $p_header['index'] = -1; - - // ----- Look for regular file - if ($p_filedescr['type']=='file') { - $p_header['external'] = 0x00000000; - $p_header['size'] = filesize($p_filename); - } - - // ----- Look for regular folder - else if ($p_filedescr['type']=='folder') { - $p_header['external'] = 0x00000010; - $p_header['mtime'] = filemtime($p_filename); - $p_header['size'] = filesize($p_filename); - } - - // ----- Look for virtual file - else if ($p_filedescr['type'] == 'virtual_file') { - $p_header['external'] = 0x00000000; - $p_header['size'] = strlen($p_filedescr['content']); - } - - - // ----- Look for filetime - if (isset($p_filedescr['mtime'])) { - $p_header['mtime'] = $p_filedescr['mtime']; - } - else if ($p_filedescr['type'] == 'virtual_file') { - $p_header['mtime'] = time(); - } - else { - $p_header['mtime'] = filemtime($p_filename); - } - - // ------ Look for file comment - if (isset($p_filedescr['comment'])) { - $p_header['comment_len'] = strlen($p_filedescr['comment']); - $p_header['comment'] = $p_filedescr['comment']; - } - else { - $p_header['comment_len'] = 0; - $p_header['comment'] = ''; - } - - // ----- Look for pre-add callback - if (isset($p_options[PCLZIP_CB_PRE_ADD])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_header, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_header['status'] = "skipped"; - $v_result = 1; - } - - // ----- Update the informations - // Only some fields can be modified - if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { - $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); - } - } - - // ----- Look for empty stored filename - if ($p_header['stored_filename'] == "") { - $p_header['status'] = "filtered"; - } - - // ----- Check the path length - if (strlen($p_header['stored_filename']) > 0xFF) { - $p_header['status'] = 'filename_too_long'; - } - - // ----- Look if no error, or file not skipped - if ($p_header['status'] == 'ok') { - - // ----- Look for a file - if ($p_filedescr['type'] == 'file') { - // ----- Look for using temporary file to zip - if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) - && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) - || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) - && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { - $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); - if ($v_result < PCLZIP_ERR_NO_ERROR) { - return $v_result; - } - } - - // ----- Use "in memory" zip algo - else { - - // ----- Open the source file - if (($v_file = @fopen($p_filename, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); - return PclZip::errorCode(); - } - - // ----- Read the file content - $v_content = @fread($v_file, $p_header['size']); - - // ----- Close the file - @fclose($v_file); - - // ----- Calculate the CRC - $p_header['crc'] = @crc32($v_content); - - // ----- Look for no compression - if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { - // ----- Set header parameters - $p_header['compressed_size'] = $p_header['size']; - $p_header['compression'] = 0; - } - - // ----- Look for normal compression - else { - // ----- Compress the content - $v_content = @gzdeflate($v_content); - - // ----- Set header parameters - $p_header['compressed_size'] = strlen($v_content); - $p_header['compression'] = 8; - } - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - @fclose($v_file); - return $v_result; - } - - // ----- Write the compressed (or not) content - @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); - - } - - } - - // ----- Look for a virtual file (a file from string) - else if ($p_filedescr['type'] == 'virtual_file') { - - $v_content = $p_filedescr['content']; - - // ----- Calculate the CRC - $p_header['crc'] = @crc32($v_content); - - // ----- Look for no compression - if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { - // ----- Set header parameters - $p_header['compressed_size'] = $p_header['size']; - $p_header['compression'] = 0; - } - - // ----- Look for normal compression - else { - // ----- Compress the content - $v_content = @gzdeflate($v_content); - - // ----- Set header parameters - $p_header['compressed_size'] = strlen($v_content); - $p_header['compression'] = 8; - } - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - @fclose($v_file); - return $v_result; - } - - // ----- Write the compressed (or not) content - @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); - } - - // ----- Look for a directory - else if ($p_filedescr['type'] == 'folder') { - // ----- Look for directory last '/' - if (@substr($p_header['stored_filename'], -1) != '/') { - $p_header['stored_filename'] .= '/'; - } - - // ----- Set the file properties - $p_header['size'] = 0; - //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked - $p_header['external'] = 0x00000010; // Value for a folder : to be checked - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) - { - return $v_result; - } - } - } - - // ----- Look for post-add callback - if (isset($p_options[PCLZIP_CB_POST_ADD])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_header, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); - if ($v_result == 0) { - // ----- Ignored - $v_result = 1; - } - - // ----- Update the informations - // Nothing can be modified - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privAddFileUsingTempFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) - { - $v_result=PCLZIP_ERR_NO_ERROR; - - // ----- Working variable - $p_filename = $p_filedescr['filename']; - - - // ----- Open the source file - if (($v_file = @fopen($p_filename, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); - return PclZip::errorCode(); - } - - // ----- Creates a compressed temporary file - $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; - if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { - fclose($v_file); - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); - return PclZip::errorCode(); - } - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = filesize($p_filename); - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($v_file, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @gzputs($v_file_compressed, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close the file - @fclose($v_file); - @gzclose($v_file_compressed); - - // ----- Check the minimum file size - if (filesize($v_gzip_temp_name) < 18) { - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); - return PclZip::errorCode(); - } - - // ----- Extract the compressed attributes - if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); - return PclZip::errorCode(); - } - - // ----- Read the gzip file header - $v_binary_data = @fread($v_file_compressed, 10); - $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); - - // ----- Check some parameters - $v_data_header['os'] = bin2hex($v_data_header['os']); - - // ----- Read the gzip file footer - @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); - $v_binary_data = @fread($v_file_compressed, 8); - $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); - - // ----- Set the attributes - $p_header['compression'] = ord($v_data_header['cm']); - //$p_header['mtime'] = $v_data_header['mtime']; - $p_header['crc'] = $v_data_footer['crc']; - $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; - - // ----- Close the file - @fclose($v_file_compressed); - - // ----- Call the header generation - if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { - return $v_result; - } - - // ----- Add the compressed data - if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) - { - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); - return PclZip::errorCode(); - } - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - fseek($v_file_compressed, 10); - $v_size = $p_header['compressed_size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($v_file_compressed, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close the file - @fclose($v_file_compressed); - - // ----- Unlink the temporary file - @unlink($v_gzip_temp_name); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCalculateStoredFilename() - // Description : - // Based on file descriptor properties and global options, this method - // calculate the filename that will be stored in the archive. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privCalculateStoredFilename(&$p_filedescr, &$p_options) - { - $v_result=1; - - // ----- Working variables - $p_filename = $p_filedescr['filename']; - if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { - $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; - } - else { - $p_add_dir = ''; - } - if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { - $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; - } - else { - $p_remove_dir = ''; - } - if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { - $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; - } - else { - $p_remove_all_dir = 0; - } - - - // ----- Look for full name change - if (isset($p_filedescr['new_full_name'])) { - // ----- Remove drive letter if any - $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); - } - - // ----- Look for path and/or short name change - else { - - // ----- Look for short name change - // Its when we cahnge just the filename but not the path - if (isset($p_filedescr['new_short_name'])) { - $v_path_info = pathinfo($p_filename); - $v_dir = ''; - if ($v_path_info['dirname'] != '') { - $v_dir = $v_path_info['dirname'].'/'; - } - $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; - } - else { - // ----- Calculate the stored filename - $v_stored_filename = $p_filename; - } - - // ----- Look for all path to remove - if ($p_remove_all_dir) { - $v_stored_filename = basename($p_filename); - } - // ----- Look for partial path remove - else if ($p_remove_dir != "") { - if (substr($p_remove_dir, -1) != '/') - $p_remove_dir .= "/"; - - if ( (substr($p_filename, 0, 2) == "./") - || (substr($p_remove_dir, 0, 2) == "./")) { - - if ( (substr($p_filename, 0, 2) == "./") - && (substr($p_remove_dir, 0, 2) != "./")) { - $p_remove_dir = "./".$p_remove_dir; - } - if ( (substr($p_filename, 0, 2) != "./") - && (substr($p_remove_dir, 0, 2) == "./")) { - $p_remove_dir = substr($p_remove_dir, 2); - } - } - - $v_compare = PclZipUtilPathInclusion($p_remove_dir, - $v_stored_filename); - if ($v_compare > 0) { - if ($v_compare == 2) { - $v_stored_filename = ""; - } - else { - $v_stored_filename = substr($v_stored_filename, - strlen($p_remove_dir)); - } - } - } - - // ----- Remove drive letter if any - $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); - - // ----- Look for path to add - if ($p_add_dir != "") { - if (substr($p_add_dir, -1) == "/") - $v_stored_filename = $p_add_dir.$v_stored_filename; - else - $v_stored_filename = $p_add_dir."/".$v_stored_filename; - } - } - - // ----- Filename (reduce the path of stored name) - $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); - $p_filedescr['stored_filename'] = $v_stored_filename; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privWriteFileHeader(&$p_header) - { - $v_result=1; - - // ----- Store the offset position of the file - $p_header['offset'] = ftell($this->zip_fd); - - // ----- Transform UNIX mtime to DOS format mdate/mtime - $v_date = getdate($p_header['mtime']); - $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; - $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; - - // ----- Packed data - $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, - $p_header['version_extracted'], $p_header['flag'], - $p_header['compression'], $v_mtime, $v_mdate, - $p_header['crc'], $p_header['compressed_size'], - $p_header['size'], - strlen($p_header['stored_filename']), - $p_header['extra_len']); - - // ----- Write the first 148 bytes of the header in the archive - fputs($this->zip_fd, $v_binary_data, 30); - - // ----- Write the variable fields - if (strlen($p_header['stored_filename']) != 0) - { - fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); - } - if ($p_header['extra_len'] != 0) - { - fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteCentralFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privWriteCentralFileHeader(&$p_header) - { - $v_result=1; - - // TBC - //for(reset($p_header); $key = key($p_header); next($p_header)) { - //} - - // ----- Transform UNIX mtime to DOS format mdate/mtime - $v_date = getdate($p_header['mtime']); - $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; - $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; - - - // ----- Packed data - $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, - $p_header['version'], $p_header['version_extracted'], - $p_header['flag'], $p_header['compression'], - $v_mtime, $v_mdate, $p_header['crc'], - $p_header['compressed_size'], $p_header['size'], - strlen($p_header['stored_filename']), - $p_header['extra_len'], $p_header['comment_len'], - $p_header['disk'], $p_header['internal'], - $p_header['external'], $p_header['offset']); - - // ----- Write the 42 bytes of the header in the zip file - fputs($this->zip_fd, $v_binary_data, 46); - - // ----- Write the variable fields - if (strlen($p_header['stored_filename']) != 0) - { - fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); - } - if ($p_header['extra_len'] != 0) - { - fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); - } - if ($p_header['comment_len'] != 0) - { - fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privWriteCentralHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) - { - $v_result=1; - - // ----- Packed data - $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, - $p_nb_entries, $p_size, - $p_offset, strlen($p_comment)); - - // ----- Write the 22 bytes of the header in the zip file - fputs($this->zip_fd, $v_binary_data, 22); - - // ----- Write the variable fields - if (strlen($p_comment) != 0) - { - fputs($this->zip_fd, $p_comment, strlen($p_comment)); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privList() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privList(&$p_list) - { - $v_result=1; - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Open the zip file - if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) - { - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Go to beginning of Central Dir - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_central_dir['offset'])) - { - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read each entry - for ($i=0; $i<$v_central_dir['entries']; $i++) - { - // ----- Read the file header - if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) - { - $this->privSwapBackMagicQuotes(); - return $v_result; - } - $v_header['index'] = $i; - - // ----- Get the only interesting attributes - $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); - unset($v_header); - } - - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Magic quotes trick - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privConvertHeader2FileInfo() - // Description : - // This function takes the file informations from the central directory - // entries and extract the interesting parameters that will be given back. - // The resulting file infos are set in the array $p_info - // $p_info['filename'] : Filename with full path. Given by user (add), - // extracted in the filesystem (extract). - // $p_info['stored_filename'] : Stored filename in the archive. - // $p_info['size'] = Size of the file. - // $p_info['compressed_size'] = Compressed size of the file. - // $p_info['mtime'] = Last modification date of the file. - // $p_info['comment'] = Comment associated with the file. - // $p_info['folder'] = true/false : indicates if the entry is a folder or not. - // $p_info['status'] = status of the action on the file. - // $p_info['crc'] = CRC of the file content. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privConvertHeader2FileInfo($p_header, &$p_info) - { - $v_result=1; - - // ----- Get the interesting attributes - $v_temp_path = PclZipUtilPathReduction($p_header['filename']); - $p_info['filename'] = $v_temp_path; - $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); - $p_info['stored_filename'] = $v_temp_path; - $p_info['size'] = $p_header['size']; - $p_info['compressed_size'] = $p_header['compressed_size']; - $p_info['mtime'] = $p_header['mtime']; - $p_info['comment'] = $p_header['comment']; - $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); - $p_info['index'] = $p_header['index']; - $p_info['status'] = $p_header['status']; - $p_info['crc'] = $p_header['crc']; - $p_info['offset'] = $p_header['offset'];//add by warlee; - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractByRule() - // Description : - // Extract a file or directory depending of rules (by index, by name, ...) - // Parameters : - // $p_file_list : An array where will be placed the properties of each - // extracted file - // $p_path : Path to add while writing the extracted files - // $p_remove_path : Path to remove (from the file memorized path) while writing the - // extracted files. If the path does not match the file path, - // the file is extracted with its memorized path. - // $p_remove_path does not apply to 'list' mode. - // $p_path and $p_remove_path are commulative. - // Return Values : - // 1 on success,0 or less on error (see error code list) - // -------------------------------------------------------------------------------- - function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) - { - $v_result=1; - - // ----- Magic quotes trick - $this->privDisableMagicQuotes(); - - // ----- Check the path - if ( ($p_path == "") - || ( (substr($p_path, 0, 1) != "/") - && (substr($p_path, 0, 3) != "../") - && (substr($p_path,1,2)!=":/"))) - $p_path = "./".$p_path; - - // ----- Reduce the path last (and duplicated) '/' - if (($p_path != "./") && ($p_path != "/")) - { - // ----- Look for the path end '/' - while (substr($p_path, -1) == "/") - { - $p_path = substr($p_path, 0, strlen($p_path)-1); - } - } - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) - { - $p_remove_path .= '/'; - } - $p_remove_path_size = strlen($p_remove_path); - - // ----- Open the zip file - if (($v_result = $this->privOpenFd('rb')) != 1) - { - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Start at beginning of Central Dir - $v_pos_entry = $v_central_dir['offset']; - - // ----- Read each entry - $j_start = 0; - for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) - { - - // ----- Read next Central dir entry - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_pos_entry)) - { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the file header - $v_header = array(); - if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Store the index - $v_header['index'] = $i; - - // ----- Store the file position - $v_pos_entry = ftell($this->zip_fd); - - // ----- Look for the specific extract rules - $v_extract = false; - - // ----- Look for extract by name rule - if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) - && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { - - // ----- Look if the filename is in the list - for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) { - - // ----- Look for a directory - if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { - - // ----- Look if the directory is in the filename path - if ( (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) - && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - $v_extract = true; - } - } - // ----- Look for a filename - elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { - $v_extract = true; - } - } - } - - // ----- Look for extract by ereg rule - // ereg() is deprecated with PHP 5.3 - /* - else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) - && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { - - if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { - $v_extract = true; - } - } - */ - - // ----- Look for extract by preg rule - else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) - && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { - - if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { - $v_extract = true; - } - } - - // ----- Look for extract by index rule - else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) - && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - - // ----- Look if the index is in the list - for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) { - - if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { - $v_extract = true; - } - if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { - $j_start = $j+1; - } - - if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { - break; - } - } - } - - // ----- Look for no rule, which means extract all the archive - else { - $v_extract = true; - } - - // ----- Check compression method - if ( ($v_extract) - && ( ($v_header['compression'] != 8) - && ($v_header['compression'] != 0))) { - $v_header['status'] = 'unsupported_compression'; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - - $this->privSwapBackMagicQuotes(); - - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, - "Filename '".$v_header['stored_filename']."' is " - ."compressed by an unsupported compression " - ."method (".$v_header['compression'].") "); - - return PclZip::errorCode(); - } - } - - // ----- Check encrypted files - if (($v_extract) && (($v_header['flag'] & 1) == 1)) { - $v_header['status'] = 'unsupported_encryption'; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - - $this->privSwapBackMagicQuotes(); - - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, - "Unsupported encryption for " - ." filename '".$v_header['stored_filename'] - ."'"); - - return PclZip::errorCode(); - } - } - - // ----- Look for real extraction - if (($v_extract) && ($v_header['status'] != 'ok')) { - $v_result = $this->privConvertHeader2FileInfo($v_header, - $p_file_list[$v_nb_extracted++]); - if ($v_result != 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - $v_extract = false; - } - - // ----- Look for real extraction - if ($v_extract) - { - - // ----- Go to the file position - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_header['offset'])) - { - // ----- Close the zip file - $this->privCloseFd(); - - $this->privSwapBackMagicQuotes(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Look for extraction as string - if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { - - $v_string = ''; - - // ----- Extracting the file - $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Set the file content - $p_file_list[$v_nb_extracted]['content'] = $v_string; - - // ----- Next extracted file - $v_nb_extracted++; - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - // ----- Look for extraction in standard output - elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) - && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { - // ----- Extracting the file in standard output - $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result; - } - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - // ----- Look for normal extraction - else { - // ----- Extracting the file - $v_result1 = $this->privExtractFile($v_header, - $p_path, $p_remove_path, - $p_remove_all_path, - $p_options); - if ($v_result1 < 1) { - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - return $v_result1; - } - - // ----- Get the only interesting attributes - if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - return $v_result; - } - - // ----- Look for user callback abort - if ($v_result1 == 2) { - break; - } - } - } - } - - // ----- Close the zip file - $this->privCloseFd(); - $this->privSwapBackMagicQuotes(); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFile() - // Description : - // Parameters : - // Return Values : - // - // 1 : ... ? - // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback - // -------------------------------------------------------------------------------- - function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) - { - $v_result=1; - - // ----- Read the file header - if (($v_result = $this->privReadFileHeader($v_header)) != 1) - { - // ----- Return - return $v_result; - } - - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for all path to remove - if ($p_remove_all_path == true) { - // ----- Look for folder entry that not need to be extracted - if (($p_entry['external']&0x00000010)==0x00000010) { - - $p_entry['status'] = "filtered"; - - return $v_result; - } - - // ----- Get the basename of the path - $p_entry['filename'] = basename($p_entry['filename']); - } - - // ----- Look for path to remove - else if ($p_remove_path != "") - { - if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) - { - - // ----- Change the file status - $p_entry['status'] = "filtered"; - - // ----- Return - return $v_result; - } - - $p_remove_path_size = strlen($p_remove_path); - if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) - { - - // ----- Remove the path - $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); - - } - } - - //add by warlee 文件名处理【编码 or 文件名处理】 - if (isset($p_options[PCLZIP_CB_PRE_FILE_NAME])) { - $p_entry['filename'] = $p_options[PCLZIP_CB_PRE_FILE_NAME]($p_entry['filename']); - } - - // ----- Add the path - if ($p_path != '') { - $p_entry['filename'] = $p_path."/".$p_entry['filename']; - } - - // ----- Check a base_dir_restriction - if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { - $v_inclusion - = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], - $p_entry['filename']); - if ($v_inclusion == 0) { - - PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, - "Filename '".$p_entry['filename']."' is " - ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); - - return PclZip::errorCode(); - } - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - } - - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Look for specific actions while the file exist - if (file_exists($p_entry['filename'])) - { - - // ----- Look if file is a directory - if (is_dir($p_entry['filename'])) - { - - // ----- Change the file status - $p_entry['status'] = "already_a_directory"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - - PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, - "Filename '".$p_entry['filename']."' is " - ."already used by an existing directory"); - - return PclZip::errorCode(); - } - } - // ----- Look if file is write protected - else if (!is_writeable($p_entry['filename'])) - { - - // ----- Change the file status - $p_entry['status'] = "write_protected"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, - "Filename '".$p_entry['filename']."' exists " - ."and is write protected"); - - return PclZip::errorCode(); - } - } - - // ----- Look if the extracted file is older - else if (filemtime($p_entry['filename']) > $p_entry['mtime']) - { - // ----- Change the file status - if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) - && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { - } - else { - $p_entry['status'] = "newer_exist"; - - // ----- Look for PCLZIP_OPT_STOP_ON_ERROR - // For historical reason first PclZip implementation does not stop - // when this kind of error occurs. - if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) - && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { - - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, - "Newer version of '".$p_entry['filename']."' exists " - ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); - - return PclZip::errorCode(); - } - } - } - else { - } - } - - // ----- Check the directory availability and create it if necessary - else { - if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) - $v_dir_to_check = $p_entry['filename']; - else if (!strstr($p_entry['filename'], "/")) - $v_dir_to_check = ""; - else - $v_dir_to_check = dirname($p_entry['filename']); - - if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { - - // ----- Change the file status - $p_entry['status'] = "path_creation_fail"; - - // ----- Return - //return $v_result; - $v_result = 1; - } - } - } - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) - { - // ----- Look for not compressed file - if ($p_entry['compression'] == 0) { - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) - { - - // ----- Change the file status - $p_entry['status'] = "write_error"; - - // ----- Return - return $v_result; - } - - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['compressed_size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($this->zip_fd, $v_read_size); - /* Try to speed up the code - $v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_binary_data, $v_read_size); - */ - @fwrite($v_dest_file, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Closing the destination file - fclose($v_dest_file); - - // ----- Change the file mtime - touch($p_entry['filename'], $p_entry['mtime']); - - - } - else { - // ----- TBC - // Need to be finished - if (($p_entry['flag'] & 1) == 1) { - PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); - return PclZip::errorCode(); - } - - - // ----- Look for using temporary file to unzip - if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) - && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) - || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) - && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { - $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); - if ($v_result < PCLZIP_ERR_NO_ERROR) { - return $v_result; - } - } - - // ----- Look for extract in memory - else { - - - // ----- Read the compressed file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - $v_file_content = gzinflate($v_buffer); - unset($v_buffer); - if ($v_file_content === FALSE) { - - // ----- Change the file status - // TBC - $p_entry['status'] = "error"; - - return $v_result; - } - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - - // ----- Change the file status - $p_entry['status'] = "write_error"; - - return $v_result; - } - - // ----- Write the uncompressed data - @fwrite($v_dest_file, $v_file_content, $p_entry['size']); - unset($v_file_content); - - // ----- Closing the destination file - @fclose($v_dest_file); - - } - - // ----- Change the file mtime - @touch($p_entry['filename'], $p_entry['mtime']); - } - - // ----- Look for chmod option - if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { - - // ----- Change the mode of the file - @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); - } - - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } - - // ----- Look for post-extract callback - elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); - - // ----- Look for abort result - if ($v_result == 2) { - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileUsingTempFile() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privExtractFileUsingTempFile(&$p_entry, &$p_options) - { - $v_result=1; - - // ----- Creates a temporary file - $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; - if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { - fclose($v_file); - PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); - return PclZip::errorCode(); - } - - - // ----- Write gz file format header - $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); - @fwrite($v_dest_file, $v_binary_data, 10); - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['compressed_size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($this->zip_fd, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Write gz file format footer - $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); - @fwrite($v_dest_file, $v_binary_data, 8); - - // ----- Close the temporary file - @fclose($v_dest_file); - - // ----- Opening destination file - if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - $p_entry['status'] = "write_error"; - return $v_result; - } - - // ----- Open the temporary gz file - if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { - @fclose($v_dest_file); - $p_entry['status'] = "read_error"; - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); - return PclZip::errorCode(); - } - - - // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks - $v_size = $p_entry['size']; - while ($v_size != 0) { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @gzread($v_src_file, $v_read_size); - //$v_binary_data = pack('a'.$v_read_size, $v_buffer); - @fwrite($v_dest_file, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - @fclose($v_dest_file); - @gzclose($v_src_file); - - // ----- Delete the temporary file - @unlink($v_gzip_temp_name); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileInOutput() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privExtractFileInOutput(&$p_entry, &$p_options) - { - $v_result=1; - - // ----- Read the file header - if (($v_result = $this->privReadFileHeader($v_header)) != 1) { - return $v_result; - } - - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - } - - // ----- Trace - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) { - // ----- Look for not compressed file - if ($p_entry['compressed_size'] == $p_entry['size']) { - - // ----- Read the file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Send the file to the output - echo $v_buffer; - unset($v_buffer); - } - else { - - // ----- Read the compressed file in a buffer (one shot) - $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - $v_file_content = gzinflate($v_buffer); - unset($v_buffer); - - // ----- Send the file to the output - echo $v_file_content; - unset($v_file_content); - } - } - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } - - // ----- Look for post-extract callback - elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); - - // ----- Look for abort result - if ($v_result == 2) { - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privExtractFileAsString() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) - { - $v_result=1; - - // ----- Read the file header - $v_header = array(); - if (($v_result = $this->privReadFileHeader($v_header)) != 1) - { - // ----- Return - return $v_result; - } - - - // ----- Check that the file header is coherent with $p_entry info - if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { - // TBC - } - - // ----- Look for pre-extract callback - if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); - if ($v_result == 0) { - // ----- Change the file status - $p_entry['status'] = "skipped"; - $v_result = 1; - } - - // ----- Look for abort result - if ($v_result == 2) { - // ----- This status is internal and will be changed in 'skipped' - $p_entry['status'] = "aborted"; - $v_result = PCLZIP_ERR_USER_ABORTED; - } - - // ----- Update the informations - // Only some fields can be modified - $p_entry['filename'] = $v_local_header['filename']; - } - - - // ----- Look if extraction should be done - if ($p_entry['status'] == 'ok') { - - // ----- Do the extraction (if not a folder) - if (!(($p_entry['external']&0x00000010)==0x00000010)) { - // ----- Look for not compressed file - // if ($p_entry['compressed_size'] == $p_entry['size']) - if ($p_entry['compression'] == 0) { - - // ----- Reading the file - $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); - } - else { - - // ----- Reading the file - $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); - - // ----- Decompress the file - if (($p_string = gzinflate($v_data)) === FALSE) { - // TBC - } - } - - // ----- Trace - } - else { - // TBC : error : can not extract a folder in a string - } - - } - - // ----- Change abort status - if ($p_entry['status'] == "aborted") { - $p_entry['status'] = "skipped"; - } - - // ----- Look for post-extract callback - elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { - - // ----- Generate a local information - $v_local_header = array(); - $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - - // ----- Swap the content to header - $v_local_header['content'] = $p_string; - $p_string = ''; - - // ----- Call the callback - // Here I do not use call_user_func() because I need to send a reference to the - // header. -// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); - $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); - - // ----- Swap back the content to header - $p_string = $v_local_header['content']; - unset($v_local_header['content']); - - // ----- Look for abort result - if ($v_result == 2) { - $v_result = PCLZIP_ERR_USER_ABORTED; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privReadFileHeader(&$p_header) - { - $v_result=1; - - // ----- Read the 4 bytes signature - $v_binary_data = @fread($this->zip_fd, 4); - $v_data = unpack('Vid', $v_binary_data); - - // ----- Check signature - if ($v_data['id'] != 0x04034b50) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'privReadFileHeader:Invalid archive structure'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the first 42 bytes of the header - $v_binary_data = fread($this->zip_fd, 26); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 26) - { - $p_header['filename'] = ""; - $p_header['status'] = "invalid_header"; - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "privReadFileHeader:Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Extract the values - $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); - - // ----- Get filename - $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); - - // ----- Get extra_fields - if ($v_data['extra_len'] != 0) { - $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); - } - else { - $p_header['extra'] = ''; - } - - // ----- Extract properties - $p_header['version_extracted'] = $v_data['version']; - $p_header['compression'] = $v_data['compression']; - $p_header['size'] = $v_data['size']; - $p_header['compressed_size'] = $v_data['compressed_size']; - $p_header['crc'] = $v_data['crc']; - $p_header['flag'] = $v_data['flag']; - $p_header['filename_len'] = $v_data['filename_len']; - - // ----- Recuperate date in UNIX format - $p_header['mdate'] = $v_data['mdate']; - $p_header['mtime'] = $v_data['mtime']; - if ($p_header['mdate'] && $p_header['mtime']) - { - // ----- Extract time - $v_hour = ($p_header['mtime'] & 0xF800) >> 11; - $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; - $v_seconde = ($p_header['mtime'] & 0x001F)*2; - - // ----- Extract date - $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; - $v_month = ($p_header['mdate'] & 0x01E0) >> 5; - $v_day = $p_header['mdate'] & 0x001F; - - // ----- Get UNIX date format - $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); - - } - else - { - $p_header['mtime'] = time(); - } - - // TBC - //for(reset($v_data); $key = key($v_data); next($v_data)) { - //} - - // ----- Set the stored filename - $p_header['stored_filename'] = $p_header['filename']; - - // ----- Set the status field - $p_header['status'] = "ok"; - $this->readZip64ExtraData($p_header);//add by warlee; - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - //zip64 footer:extra data;add by warlee; - //64位文件头读取处理 - function readZip64ExtraData(&$p_header){ - $size = filesize($this->zipname); - //不符合zip64 的大于4G的文件处理;溢出寻找标记头; - if(!$this->zip64 && $size >= 0xFFFFFFFF){ - $zip = fopen($this->zipname,'rb'); - $from = $p_header['offset']; - while($from < $size){ - fseek($zip,$from); - $sign = unpack('Vid',@fread($zip, 4)); - //pr($from,$sign,0x04034b50); - if($sign['id'] == 0x04034b50){ - $p_header['offset'] = $from; - break; - }else{ - $from = $from + 0xFFFFFFFF + 1;// - } - } - - //mac下压缩大于4G的文件 - $from = 4+26+$p_header['compressed_size']+$p_header['filename_len']+$p_header['extra_len']+$p_header['comment_len']+20; - $add = 0; - while($from < $size){ - fseek($zip,$from); - $sign = unpack("Vid",@fread($zip, 4)); - // pr($from,$p_header,str2hex(file_sub_str($this->zipname,$from,50)) ); - if($sign['id'] == 0x04034b50 || $sign['id'] == 0x02014b50 || $sign['id'] == 0x06054b50){ - $p_header['size'] += $add; - $p_header['compressed_size'] += $add; - break; - }else{ - $add += 0xFFFFFFFF + 1; - $from += $add;// - } - } - fclose($zip); - } - - if(!$this->zip64 || !$p_header['extra']){ - return; - }; - //pr(strlen($p_header['extra']),str2hex($p_header['extra'])); - $p_extra_data = unpack('va/vb/Psize/Pcompressed_size/Poffset',$p_header['extra']);//2+2+8+8+8 - if(strlen($p_header['extra']) < 28){ - $p_extra_data = unpack('va/vb/Psize/Pcompressed_size',$p_header['extra']); - $p_extra_data['offset'] = 0; - } - if(strlen($p_header['extra']) < 20){//变长 - $p_extra_data = unpack('va/vb/Psize',$p_header['extra']); - $p_extra_data['compressed_size'] = 0; - $p_extra_data['offset'] = 0; - } - - //01 为zip64扩展数据标记 - if(!$p_extra_data || $p_extra_data['a'] != 0x01){ - if($p_header['size'] >= 0xFFFFFFFF){//兼容非zip64 文件超过4G的文件情况 - $this->privReadEndCentralDirZip4G($p_header);//校正偏移量;n*0xFFFFFFFF - } - return; - } - if($p_header['offset'] == 0xffffffff){ - //var_dump(str2hex($v_binary_data),$p_header,str2hex($p_header['extra']),$p_extra_data); - } - if($p_header['compressed_size'] == 0xffffffff && $p_extra_data['compressed_size'] > 0 ){ - $p_header['compressed_size'] = $p_extra_data['compressed_size']; - } - //适配特殊情况; 顺序适配 - if($p_header['offset'] == 0xffffffff){ - if( $p_extra_data['offset'] >0 && $p_extra_data['offset']< 1024*1024*1024*1000){ - $p_header['offset'] = $p_extra_data['offset']; - }else if($p_extra_data['size'] >= 0xffffffff){ - $p_header['offset'] = $p_extra_data['size']; - } - } - if($p_header['size'] == 0xffffffff){ - $p_header['size'] = $p_extra_data['size']; - } - } - - // -------------------------------------------------------------------------------- - // Function : privReadCentralFileHeader() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privReadCentralFileHeader(&$p_header) - { - $v_result=1; - - // ----- Read the 4 bytes signature - $v_binary_data = @fread($this->zip_fd, 4); - $v_data = unpack('Vid', $v_binary_data); - - // ----- Check signature - if ($v_data['id'] != 0x02014b50) - { - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'privReadCentralFileHeader:Invalid archive structure'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the first 42 bytes of the header - $v_binary_data = fread($this->zip_fd, 42); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 42) - { - $p_header['filename'] = ""; - $p_header['status'] = "invalid_header"; - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "privReadCentralFileHeader:Invalid block size : ".strlen($v_binary_data)); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Extract the values - $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); - - // ----- Get filename - if ($p_header['filename_len'] != 0) - $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); - else - $p_header['filename'] = ''; - - // ----- Get extra - if ($p_header['extra_len'] != 0) - $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); - else - $p_header['extra'] = ''; - - // ----- Get comment - if ($p_header['comment_len'] != 0) - $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); - else - $p_header['comment'] = ''; - - // ----- Extract properties - - // ----- Recuperate date in UNIX format - //if ($p_header['mdate'] && $p_header['mtime']) - // TBC : bug : this was ignoring time with 0/0/0 - if (1) - { - // ----- Extract time - $v_hour = ($p_header['mtime'] & 0xF800) >> 11; - $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; - $v_seconde = ($p_header['mtime'] & 0x001F)*2; - - // ----- Extract date - $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; - $v_month = ($p_header['mdate'] & 0x01E0) >> 5; - $v_day = $p_header['mdate'] & 0x001F; - - // ----- Get UNIX date format - $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); - - } - else - { - $p_header['mtime'] = time(); - } - - // ----- Set the stored filename - $p_header['stored_filename'] = $p_header['filename']; - - // ----- Set default status to ok - $p_header['status'] = 'ok'; - - // ----- Look if it is a directory - if (substr($p_header['filename'], -1) == '/') { - //$p_header['external'] = 0x41FF0010; - $p_header['external'] = 0x00000010; - } - $this->readZip64ExtraData($p_header);//add by warlee; - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privCheckFileHeaders() - // Description : - // Parameters : - // Return Values : - // 1 on success, - // 0 on error; - // -------------------------------------------------------------------------------- - function privCheckFileHeaders(&$p_local_header, &$p_central_header) - { - $v_result=1; - - // ----- Check the static values - // TBC - if ($p_local_header['filename'] != $p_central_header['filename']) { - } - if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { - } - if ($p_local_header['flag'] != $p_central_header['flag']) { - } - if ($p_local_header['compression'] != $p_central_header['compression']) { - } - if ($p_local_header['mtime'] != $p_central_header['mtime']) { - } - if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { - } - - // ----- Look for flag bit 3 - if (($p_local_header['flag'] & 8) == 8) { - $p_local_header['size'] = $p_central_header['size']; - $p_local_header['compressed_size'] = $p_central_header['compressed_size']; - $p_local_header['crc'] = $p_central_header['crc']; - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privReadEndCentralDir() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privReadEndCentralDir(&$p_central_dir) - { - $v_result=1; - - // ----- Go to the end of the zip file - $v_size = filesize($this->zipname); - @fseek($this->zip_fd, $v_size); - if (@ftell($this->zip_fd) != $v_size) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- First try : look if this is an archive with no commentaries (most of the time) - // in this case the end of central dir is at 22 bytes of the file end - $v_found = 0; - if ($v_size > 26) { - @fseek($this->zip_fd, $v_size-22); - if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read for bytes - $v_binary_data = @fread($this->zip_fd, 4); - $v_data = @unpack('Vid', $v_binary_data); - - // ----- Check signature - if ($v_data['id'] == 0x06054b50) { - $v_found = 1; - } - - $v_pos = ftell($this->zip_fd); - } - - // ----- Go back to the maximum possible size of the Central Dir End Record - if (!$v_found) { - $v_maximum_size = 65557; // 0xFFFF + 22; - if ($v_maximum_size > $v_size) - $v_maximum_size = $v_size; - @fseek($this->zip_fd, $v_size-$v_maximum_size); - if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read byte per byte in order to find the signature - $v_pos = ftell($this->zip_fd); - $v_bytes = 0x00000000; - while ($v_pos < $v_size) - { - // ----- Read a byte - $v_byte = @fread($this->zip_fd, 1); - - // ----- Add the byte - //$v_bytes = ($v_bytes << 8) | Ord($v_byte); - // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number - // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. - $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); - - // ----- Compare the bytes - if ($v_bytes == 0x504b0506) - { - $v_pos++; - break; - } - - $v_pos++; - } - - // ----- Look if not found end of central dir - if ($v_pos == $v_size) - { - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); - - // ----- Return - return PclZip::errorCode(); - } - } - - // ----- Read the first 18 bytes of the header - $v_binary_data = fread($this->zip_fd, 18); - - // ----- Look for invalid block size - if (strlen($v_binary_data) != 18) - { - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Extract the values - $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); - - // ----- Check the global size - if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { - - // ----- Removed in release 2.2 see readme file - // The check of the file size is a little too strict. - // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. - // While decrypted, zip has training 0 bytes - if (0) { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, - 'The central dir is not at the end of the archive.' - .' Some trailing bytes exists after the archive.'); - - // ----- Return - return PclZip::errorCode(); - } - } - // ----- Get comment - if ($v_data['comment_size'] != 0) { - $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); - } - else - $p_central_dir['comment'] = ''; - - $p_central_dir['entries'] = $v_data['entries']; - $p_central_dir['disk_entries'] = $v_data['disk_entries']; - $p_central_dir['offset'] = $v_data['offset']; - $p_central_dir['size'] = $v_data['size']; - $p_central_dir['disk'] = $v_data['disk']; - $p_central_dir['disk_start'] = $v_data['disk_start']; - - //add by warlee; zip64 supports - //vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size - if($v_data['offset'] == 0xFFFFFFFF){ - return $this->privReadEndCentralDirZip64($p_central_dir,$v_data); - } - if($v_size >= 0xFFFFFFFF){ - //兼容非zip64 压缩超过4G的文件情况 - return $this->privReadEndCentralDirZip4G($p_central_dir); - } - - // TBC - //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { - //} - - // ----- Return - return $v_result; - } - //超过4G的文件;通过溢出查找偏移位置 - function privReadEndCentralDirZip4G(&$p_central_dir){ - $zip = fopen($this->zipname,'rb'); - $from = $p_central_dir['offset']; - $size = filesize($this->zipname); - while($from < $size){ - fseek($zip,$from); - $sign = unpack('Vid',@fread($zip, 4)); - //debug_out($from,$sign,0x02014b50); - if($sign['id'] == 0x02014b50){ - $p_central_dir['offset'] = $from; - break; - }else{ - $from = $from + 0xFFFFFFFF + 1;// - } - } - fclose($zip); - return 1; - } - - // zip64 support; - //https://blog.csdn.net/a200710716/article/details/51644421 - //https://github.com/brokencube/ZipStream64/blob/14087549a4914bfc441a396ca02849569145a273/src/ZipStream.php#L808 - //https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.2.0.txt - function privReadEndCentralDirZip64(&$p_central_dir,$cdr_data){ - $this->zip64 = true; - //56 [zip64 end of central directory record] - //Vzip64_cdr_eof/Pblow_offset/vversion/vversion_un/Vdisk/Vdisk_start/Pdisk_entries/Pentries/Psize/Poffset - //20 [zip64 end of central directory locator] - //Vzip64_cdr_loc_flag/Vdisk_num/Pcdr_offset/Vtotal_disk - //22 [end of central directory record] - //Vzip_cdr_eof/vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size - $offset_back = 56+20+22; - $old_pose = ftell($this->zip_fd); - fseek($this->zip_fd,$old_pose-$cdr_data['comment_size']-$offset_back); - $v_bin = fread($this->zip_fd, 56); - $v_data = unpack('Vzip64_cdr_eof/Pblow_offset/vversion/vversion_un/Vdisk/Vdisk_start/Pdisk_entries/Pentries/Psize/Poffset', $v_bin); - if($v_data['zip64_cdr_eof'] != 0x06064b50){ - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Zip64 Central Dir Record error:".json_encode($v_data)); - return PclZip::errorCode(); - } - - $loc_bin = fread($this->zip_fd,20); - $loc_data = unpack('Vzip64_cdr_loc_flag/Vdisk_num/Pcdr_offset/Vtotal_disk', $loc_bin); - if($loc_data['zip64_cdr_loc_flag'] != 0x07064b50){ - PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Zip64 central directory locator error:".json_encode($loc_data)); - return PclZip::errorCode(); - } - $p_central_dir['entries'] = $v_data['entries']; - $p_central_dir['disk_entries'] = $v_data['disk_entries']; - $p_central_dir['offset'] = $v_data['offset']; - $p_central_dir['size'] = $v_data['size']; - fseek($this->zip_fd,$old_pose); - return 1; - } - - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDeleteByRule() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privDeleteByRule(&$p_result_list, &$p_options) - { - $v_result=1; - $v_list_detail = array(); - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('rb')) != 1) - { - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privCloseFd(); - return $v_result; - } - - // ----- Go to beginning of File - @rewind($this->zip_fd); - - // ----- Scan all the files - // ----- Start at beginning of Central Dir - $v_pos_entry = $v_central_dir['offset']; - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_pos_entry)) - { - // ----- Close the zip file - $this->privCloseFd(); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read each entry - $v_header_list = array(); - $j_start = 0; - for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) - { - - // ----- Read the file header - $v_header_list[$v_nb_extracted] = array(); - if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) - { - // ----- Close the zip file - $this->privCloseFd(); - - return $v_result; - } - - - // ----- Store the index - $v_header_list[$v_nb_extracted]['index'] = $i; - - // ----- Look for the specific extract rules - $v_found = false; - - // ----- Look for extract by name rule - if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) - && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { - - // ----- Look if the filename is in the list - for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) { - - // ----- Look for a directory - if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { - - // ----- Look if the directory is in the filename path - if ( (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) - && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - $v_found = true; - } - elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ - && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { - $v_found = true; - } - } - // ----- Look for a filename - elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { - $v_found = true; - } - } - } - - // ----- Look for extract by ereg rule - // ereg() is deprecated with PHP 5.3 - /* - else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) - && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { - - if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { - $v_found = true; - } - } - */ - - // ----- Look for extract by preg rule - else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) - && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { - - if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { - $v_found = true; - } - } - - // ----- Look for extract by index rule - else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) - && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - - // ----- Look if the index is in the list - for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) { - - if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { - $v_found = true; - } - if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { - $j_start = $j+1; - } - - if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { - break; - } - } - } - else { - $v_found = true; - } - - // ----- Look for deletion - if ($v_found) - { - unset($v_header_list[$v_nb_extracted]); - } - else - { - $v_nb_extracted++; - } - } - - // ----- Look if something need to be deleted - if ($v_nb_extracted > 0) { - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Creates a temporary zip archive - $v_temp_zip = new PclZip($v_zip_temp_name); - - // ----- Open the temporary zip file in write mode - if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { - $this->privCloseFd(); - - // ----- Return - return $v_result; - } - - // ----- Look which file need to be kept - for ($i=0; $i<sizeof($v_header_list); $i++) { - - // ----- Calculate the position of the header - @rewind($this->zip_fd); - if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Read the file header - $v_local_header = array(); - if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Check that local file header is same as central file header - if ($this->privCheckFileHeaders($v_local_header, - $v_header_list[$i]) != 1) { - // TBC - } - unset($v_local_header); - - // ----- Write the file header - if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Read/write the data block - if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { - // ----- Close the zip file - $this->privCloseFd(); - $v_temp_zip->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($v_temp_zip->zip_fd); - - // ----- Re-Create the Central Dir files header - for ($i=0; $i<sizeof($v_header_list); $i++) { - // ----- Create the file header - if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Transform the header to a 'usable' info - $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); - } - - - // ----- Zip file comment - $v_comment = ''; - if (isset($p_options[PCLZIP_OPT_COMMENT])) { - $v_comment = $p_options[PCLZIP_OPT_COMMENT]; - } - - // ----- Calculate the size of the central header - $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; - - // ----- Create the central dir footer - if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { - // ----- Reset the file list - unset($v_header_list); - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - @unlink($v_zip_temp_name); - - // ----- Return - return $v_result; - } - - // ----- Close - $v_temp_zip->privCloseFd(); - $this->privCloseFd(); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Destroy the temporary archive - unset($v_temp_zip); - } - - // ----- Remove every files : reset the file - else if ($v_central_dir['entries'] != 0) { - $this->privCloseFd(); - - if (($v_result = $this->privOpenFd('wb')) != 1) { - return $v_result; - } - - if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { - return $v_result; - } - - $this->privCloseFd(); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDirCheck() - // Description : - // Check if a directory exists, if not it creates it and all the parents directory - // which may be useful. - // Parameters : - // $p_dir : Directory path to check. - // Return Values : - // 1 : OK - // -1 : Unable to create directory - // -------------------------------------------------------------------------------- - function privDirCheck($p_dir, $p_is_dir=false) - { - $v_result = 1; - - - // ----- Remove the final '/' - if (($p_is_dir) && (substr($p_dir, -1)=='/')) - { - $p_dir = substr($p_dir, 0, strlen($p_dir)-1); - } - - // ----- Check the directory availability - if ((is_dir($p_dir)) || ($p_dir == "")) - { - return 1; - } - - // ----- Extract parent directory - $p_parent_dir = dirname($p_dir); - - // ----- Just a check - if ($p_parent_dir != $p_dir) - { - // ----- Look for parent directory - if ($p_parent_dir != "") - { - if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) - { - return $v_result; - } - } - } - - // ----- Create the directory - if (!@mkdir($p_dir, 0777)) - { - // ----- Error log - PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privMerge() - // Description : - // If $p_archive_to_add does not exist, the function exit with a success result. - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privMerge(&$p_archive_to_add) - { - $v_result=1; - - // ----- Look if the archive_to_add exists - if (!is_file($p_archive_to_add->zipname)) - { - - // ----- Nothing to merge, so merge is a success - $v_result = 1; - - // ----- Return - return $v_result; - } - - // ----- Look if the archive exists - if (!is_file($this->zipname)) - { - - // ----- Do a duplicate - $v_result = $this->privDuplicate($p_archive_to_add->zipname); - - // ----- Return - return $v_result; - } - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('rb')) != 1) - { - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir = array(); - if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) - { - $this->privCloseFd(); - return $v_result; - } - - // ----- Go to beginning of File - @rewind($this->zip_fd); - - // ----- Open the archive_to_add file - if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) - { - $this->privCloseFd(); - - // ----- Return - return $v_result; - } - - // ----- Read the central directory informations - $v_central_dir_to_add = array(); - if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) - { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - return $v_result; - } - - // ----- Go to beginning of File - @rewind($p_archive_to_add->zip_fd); - - // ----- Creates a temporay file - $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; - - // ----- Open the temporary file in write mode - if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) - { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = $v_central_dir['offset']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Copy the files from the archive_to_add into the temporary file - $v_size = $v_central_dir_to_add['offset']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Store the offset of the central dir - $v_offset = @ftell($v_zip_temp_fd); - - // ----- Copy the block of file headers from the old archive - $v_size = $v_central_dir['size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($this->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Copy the block of file headers from the archive_to_add - $v_size = $v_central_dir_to_add['size']; - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); - @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Merge the file comments - $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; - - // ----- Calculate the size of the (new) central header - $v_size = @ftell($v_zip_temp_fd)-$v_offset; - - // ----- Swap the file descriptor - // Here is a trick : I swap the temporary fd with the zip fd, in order to use - // the following methods on the temporary fil and not the real archive fd - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Create the central dir footer - if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) - { - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - @fclose($v_zip_temp_fd); - $this->zip_fd = null; - - // ----- Reset the file list - unset($v_header_list); - - // ----- Return - return $v_result; - } - - // ----- Swap back the file descriptor - $v_swap = $this->zip_fd; - $this->zip_fd = $v_zip_temp_fd; - $v_zip_temp_fd = $v_swap; - - // ----- Close - $this->privCloseFd(); - $p_archive_to_add->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Delete the zip file - // TBC : I should test the result ... - @unlink($this->zipname); - - // ----- Rename the temporary file - // TBC : I should test the result ... - //@rename($v_zip_temp_name, $this->zipname); - PclZipUtilRename($v_zip_temp_name, $this->zipname); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDuplicate() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privDuplicate($p_archive_filename) - { - $v_result=1; - - // ----- Look if the $p_archive_filename exists - if (!is_file($p_archive_filename)) - { - - // ----- Nothing to duplicate, so duplicate is a success. - $v_result = 1; - - // ----- Return - return $v_result; - } - - // ----- Open the zip file - if (($v_result=$this->privOpenFd('wb')) != 1) - { - // ----- Return - return $v_result; - } - - // ----- Open the temporary file in write mode - if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) - { - $this->privCloseFd(); - - PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); - - // ----- Return - return PclZip::errorCode(); - } - - // ----- Copy the files from the archive to the temporary file - // TBC : Here I should better append the file and go back to erase the central dir - $v_size = filesize($p_archive_filename); - while ($v_size != 0) - { - $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = fread($v_zip_temp_fd, $v_read_size); - @fwrite($this->zip_fd, $v_buffer, $v_read_size); - $v_size -= $v_read_size; - } - - // ----- Close - $this->privCloseFd(); - - // ----- Close the temporary file - @fclose($v_zip_temp_fd); - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privErrorLog() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privErrorLog($p_error_code=0, $p_error_string='') - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - PclError($p_error_code, $p_error_string); - } - else { - $this->error_code = $p_error_code; - $this->error_string = $p_error_string; - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privErrorReset() - // Description : - // Parameters : - // -------------------------------------------------------------------------------- - function privErrorReset() - { - if (PCLZIP_ERROR_EXTERNAL == 1) { - PclErrorReset(); - } - else { - $this->error_code = 0; - $this->error_string = ''; - } - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privDisableMagicQuotes() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privDisableMagicQuotes() - { - $v_result=1; - - // ----- Look if function exists - if ( (!function_exists("get_magic_quotes_runtime")) - || (!function_exists("set_magic_quotes_runtime"))) { - return $v_result; - } - - // ----- Look if already done - if ($this->magic_quotes_status != -1) { - return $v_result; - } - - // ----- Get and memorize the magic_quote value - $this->magic_quotes_status = @get_magic_quotes_runtime(); - - // ----- Disable magic_quotes - if ($this->magic_quotes_status == 1) { - @set_magic_quotes_runtime(0); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : privSwapBackMagicQuotes() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function privSwapBackMagicQuotes() - { - $v_result=1; - - // ----- Look if function exists - if ( (!function_exists("get_magic_quotes_runtime")) - || (!function_exists("set_magic_quotes_runtime"))) { - return $v_result; - } - - // ----- Look if something to do - if ($this->magic_quotes_status != -1) { - return $v_result; - } - - // ----- Swap back magic_quotes - if ($this->magic_quotes_status == 1) { - @set_magic_quotes_runtime($this->magic_quotes_status); - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - } - // End of class - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilPathReduction() - // Description : - // Parameters : - // Return Values : - // -------------------------------------------------------------------------------- - function PclZipUtilPathReduction($p_dir) - { - $v_result = ""; - - // ----- Look for not empty path - if ($p_dir != "") { - // ----- Explode path by directory names - $v_list = explode("/", $p_dir); - - // ----- Study directories from last to first - $v_skip = 0; - for ($i=sizeof($v_list)-1; $i>=0; $i--) { - // ----- Look for current path - if ($v_list[$i] == ".") { - // ----- Ignore this directory - // Should be the first $i=0, but no check is done - } - else if ($v_list[$i] == "..") { - $v_skip++; - } - else if ($v_list[$i] == "") { - // ----- First '/' i.e. root slash - if ($i == 0) { - $v_result = "/".$v_result; - if ($v_skip > 0) { - // ----- It is an invalid path, so the path is not modified - // TBC - $v_result = $p_dir; - $v_skip = 0; - } - } - // ----- Last '/' i.e. indicates a directory - else if ($i == (sizeof($v_list)-1)) { - $v_result = $v_list[$i]; - } - // ----- Double '/' inside the path - else { - // ----- Ignore only the double '//' in path, - // but not the first and last '/' - } - } - else { - // ----- Look for item to skip - if ($v_skip > 0) { - $v_skip--; - } - else { - $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); - } - } - } - - // ----- Look for skip - if ($v_skip > 0) { - while ($v_skip > 0) { - $v_result = '../'.$v_result; - $v_skip--; - } - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilPathInclusion() - // Description : - // This function indicates if the path $p_path is under the $p_dir tree. Or, - // said in an other way, if the file or sub-dir $p_path is inside the dir - // $p_dir. - // The function indicates also if the path is exactly the same as the dir. - // This function supports path with duplicated '/' like '//', but does not - // support '.' or '..' statements. - // Parameters : - // Return Values : - // 0 if $p_path is not inside directory $p_dir - // 1 if $p_path is inside directory $p_dir - // 2 if $p_path is exactly the same as $p_dir - // -------------------------------------------------------------------------------- - function PclZipUtilPathInclusion($p_dir, $p_path) - { - $v_result = 1; - - // ----- Look for path beginning by ./ - if ( ($p_dir == '.') - || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { - $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); - } - if ( ($p_path == '.') - || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { - $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); - } - - // ----- Explode dir and path by directory separator - $v_list_dir = explode("/", $p_dir); - $v_list_dir_size = sizeof($v_list_dir); - $v_list_path = explode("/", $p_path); - $v_list_path_size = sizeof($v_list_path); - - // ----- Study directories paths - $i = 0; - $j = 0; - while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { - - // ----- Look for empty dir (path reduction) - if ($v_list_dir[$i] == '') { - $i++; - continue; - } - if ($v_list_path[$j] == '') { - $j++; - continue; - } - - // ----- Compare the items - if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { - $v_result = 0; - } - - // ----- Next items - $i++; - $j++; - } - - // ----- Look if everything seems to be the same - if ($v_result) { - // ----- Skip all the empty items - while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; - while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; - - if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { - // ----- There are exactly the same - $v_result = 2; - } - else if ($i < $v_list_dir_size) { - // ----- The path is shorter than the dir - $v_result = 0; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilCopyBlock() - // Description : - // Parameters : - // $p_mode : read/write compression mode - // 0 : src & dest normal - // 1 : src gzip, dest normal - // 2 : src normal, dest gzip - // 3 : src & dest gzip - // Return Values : - // -------------------------------------------------------------------------------- - function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) - { - $v_result = 1; - - if ($p_mode==0) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($p_src, $v_read_size); - @fwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - else if ($p_mode==1) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @gzread($p_src, $v_read_size); - @fwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - else if ($p_mode==2) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @fread($p_src, $v_read_size); - @gzwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - else if ($p_mode==3) - { - while ($p_size != 0) - { - $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); - $v_buffer = @gzread($p_src, $v_read_size); - @gzwrite($p_dest, $v_buffer, $v_read_size); - $p_size -= $v_read_size; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilRename() - // Description : - // This function tries to do a simple rename() function. If it fails, it - // tries to copy the $p_src file in a new $p_dest file and then unlink the - // first one. - // Parameters : - // $p_src : Old filename - // $p_dest : New filename - // Return Values : - // 1 on success, 0 on failure. - // -------------------------------------------------------------------------------- - function PclZipUtilRename($p_src, $p_dest) - { - $v_result = 1; - - // ----- Try to rename the files - if (!@rename($p_src, $p_dest)) { - - // ----- Try to copy & unlink the src - if (!@copy($p_src, $p_dest)) { - $v_result = 0; - } - else if (!@unlink($p_src)) { - $v_result = 0; - } - } - - // ----- Return - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilOptionText() - // Description : - // Translate option value in text. Mainly for debug purpose. - // Parameters : - // $p_option : the option value. - // Return Values : - // The option text value. - // -------------------------------------------------------------------------------- - function PclZipUtilOptionText($p_option) - { - - $v_list = get_defined_constants(); - for (reset($v_list); $v_key = key($v_list); next($v_list)) { - $v_prefix = substr($v_key, 0, 10); - if (( ($v_prefix == 'PCLZIP_OPT') - || ($v_prefix == 'PCLZIP_CB_') - || ($v_prefix == 'PCLZIP_ATT')) - && ($v_list[$v_key] == $p_option)) { - return $v_key; - } - } - - $v_result = 'Unknown'; - - return $v_result; - } - // -------------------------------------------------------------------------------- - - // -------------------------------------------------------------------------------- - // Function : PclZipUtilTranslateWinPath() - // Description : - // Translate windows path by replacing '\' by '/' and optionally removing - // drive letter. - // Parameters : - // $p_path : path to translate. - // $p_remove_disk_letter : true | false - // Return Values : - // The path translated. - // -------------------------------------------------------------------------------- - function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) - { - if (stristr(php_uname(), 'windows')) { - // ----- Look for potential disk letter - if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { - $p_path = substr($p_path, $v_position+1); - } - // ----- Change potential windows directory separator - if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { - $p_path = strtr($p_path, '\\', '/'); - } - } - return $p_path; - } - // -------------------------------------------------------------------------------- - diff --git a/plugin/document/kod/app/kod/imageGdBMP.class.php b/plugin/document/kod/app/kod/imageGdBMP.class.php deleted file mode 100644 index 2e1daa548..000000000 --- a/plugin/document/kod/app/kod/imageGdBMP.class.php +++ /dev/null @@ -1,286 +0,0 @@ -<?php -// from elfinder; -class imageGdBMP{ - public static function load($filename){ - $fp = fopen($filename, "rb"); - if ($fp === false){ - return false; - } - $bmp = self::loadFromStream($fp); - fclose($fp); - return $bmp; - } - public static function loadFromStream($stream){ - $buf = fread($stream, 14); //2+4+2+2+4 - if ($buf === false){ - return false; - } - if ($buf[0] != 'B' || $buf[1] != 'M'){ - return false; - } - $bitmapHeader = unpack( - "vtype/". - "Vsize/". - "vreserved1/". - "vreserved2/". - "Voffbits", $buf - ); - return self::loadFromStreamAndFileHeader($stream, $bitmapHeader); - } - public static function loadFromStreamAndFileHeader($stream, array $bitmapHeader){ - if ($bitmapHeader["type"] != 0x4d42){ - return false; - } - $buf = fread($stream, 4); - if ($buf === false){ - return false; - } - list(,$header_size) = unpack("V", $buf); - if ($header_size == 12){ - $buf = fread($stream, $header_size - 4); - if ($buf === false){ - return false; - } - extract(unpack( - "vwidth/". - "vheight/". - "vplanes/". - "vbit_count", $buf - )); - $clr_used = $clr_important = $alpha_mask = $compression = 0; - $red_mask = 0x00ff0000; - $green_mask = 0x0000ff00; - $blue_mask = 0x000000ff; - } else if (124 < $header_size || $header_size < 40) { - return false; - } else { - $buf = fread($stream, 36); - if ($buf === false){ - return false; - } - extract(unpack( - "Vwidth/". - "Vheight/". - "vplanes/". - "vbit_count/". - "Vcompression/". - "Vsize_image/". - "Vx_pels_per_meter/". - "Vy_pels_per_meter/". - "Vclr_used/". - "Vclr_important", $buf - )); - if ($width & 0x80000000){ $width = -(~$width & 0xffffffff) - 1; } - if ($height & 0x80000000){ $height = -(~$height & 0xffffffff) - 1; } - if ($x_pels_per_meter & 0x80000000){ $x_pels_per_meter = -(~$x_pels_per_meter & 0xffffffff) - 1; } - if ($y_pels_per_meter & 0x80000000){ $y_pels_per_meter = -(~$y_pels_per_meter & 0xffffffff) - 1; } - if ($bitmapHeader["size"] != 0){ - $colorsize = $bit_count == 1 || $bit_count == 4 || $bit_count == 8 ? ($clr_used ? $clr_used : pow(2, $bit_count))<<2 : 0; - $bodysize = $size_image ? $size_image : ((($width * $bit_count + 31) >> 3) & ~3) * abs($height); - $calcsize = $bitmapHeader["size"] - $bodysize - $colorsize - 14; - if ($header_size < $calcsize && 40 <= $header_size && $header_size <= 124){ - $header_size = $calcsize; - } - } - if ($header_size - 40 > 0){ - $buf = fread($stream, $header_size - 40); - if ($buf === false){ - return false; - } - extract(unpack( - "Vred_mask/". - "Vgreen_mask/". - "Vblue_mask/". - "Valpha_mask", $buf . str_repeat("\x00", 120) - )); - } else { - $alpha_mask = $red_mask = $green_mask = $blue_mask = 0; - } - if ( - ($bit_count == 16 || $bit_count == 24 || $bit_count == 32)&& - $compression == 0 && - $red_mask == 0 && $green_mask == 0 && $blue_mask == 0 - ){ - switch($bit_count){ - case 16: - $red_mask = 0x7c00; - $green_mask = 0x03e0; - $blue_mask = 0x001f; - break; - case 24: - case 32: - $red_mask = 0x00ff0000; - $green_mask = 0x0000ff00; - $blue_mask = 0x000000ff; - break; - } - } - } - - if ( - ($width == 0)|| - ($height == 0)|| - ($planes != 1)|| - (($alpha_mask & $red_mask ) != 0)|| - (($alpha_mask & $green_mask) != 0)|| - (($alpha_mask & $blue_mask ) != 0)|| - (($red_mask & $green_mask) != 0)|| - (($red_mask & $blue_mask ) != 0)|| - (($green_mask & $blue_mask ) != 0) - ){ - return false; - } - if ($compression == 4 || $compression == 5){ - $buf = stream_get_contents($stream, $size_image); - if ($buf === false){ - return false; - } - return imagecreatefromstring($buf); - } - $line_bytes = (($width * $bit_count + 31) >> 3) & ~3; - $lines = abs($height); - $y = $height > 0 ? $lines-1 : 0; - $line_step = $height > 0 ? -1 : 1; - if ($bit_count == 1 || $bit_count == 4 || $bit_count == 8){ - $img = imagecreate($width, $lines); - $palette_size = $header_size == 12 ? 3 : 4; - $colors = $clr_used ? $clr_used : pow(2, $bit_count); - $palette = array(); - for($i = 0; $i < $colors; ++$i){ - $buf = fread($stream, $palette_size); - if ($buf === false){ - imagedestroy($img); - return false; - } - extract(unpack("Cb/Cg/Cr/Cx", $buf . "\x00")); - $palette[] = imagecolorallocate($img, $r, $g, $b); - } - - $shift_base = 8 - $bit_count; - $mask = ((1 << $bit_count) - 1) << $shift_base; - if ($compression == 1 || $compression == 2){ - $x = 0; - $qrt_mod2 = $bit_count >> 2 & 1; - for(;;){ - if ($x < -1 || $x > $width || $y < -1 || $y > $height){ - imagedestroy($img); - return false; - } - $buf = fread($stream, 1); - if ($buf === false){ - imagedestroy($img); - return false; - } - switch($buf){ - case "\x00": - $buf = fread($stream, 1); - if ($buf === false){ - imagedestroy($img); - return false; - } - switch($buf){ - case "\x00": //EOL - $y += $line_step; - $x = 0; - break; - case "\x01": //EOB - $y = 0; - $x = 0; - break 3; - case "\x02": //MOV - $buf = fread($stream, 2); - if ($buf === false){ - imagedestroy($img); - return false; - } - list(,$xx, $yy) = unpack("C2", $buf); - $x += $xx; - $y += $yy * $line_step; - break; - default: - list(,$pixels) = unpack("C", $buf); - $bytes = ($pixels >> $qrt_mod2) + ($pixels & $qrt_mod2); - $buf = fread($stream, ($bytes + 1) & ~1); - if ($buf === false){ - imagedestroy($img); - return false; - } - for ($i = 0, $pos = 0; $i < $pixels; ++$i, ++$x, $pos += $bit_count){ - list(,$c) = unpack("C", $buf[$pos >> 3]); - $b = $pos & 0x07; - imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]); - } - break; - } - break; - default: - $buf2 = fread($stream, 1); - if ($buf2 === false){ - imagedestroy($img); - return false; - } - list(,$size, $c) = unpack("C2", $buf . $buf2); - for($i = 0, $pos = 0; $i < $size; ++$i, ++$x, $pos += $bit_count){ - $b = $pos & 0x07; - imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]); - } - break; - } - } - } else { - for ($line = 0; $line < $lines; ++$line, $y += $line_step){ - $buf = fread($stream, $line_bytes); - if ($buf === false){ - imagedestroy($img); - return false; - } - - $pos = 0; - for ($x = 0; $x < $width; ++$x, $pos += $bit_count){ - list(,$c) = unpack("C", $buf[$pos >> 3]); - $b = $pos & 0x7; - imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]); - } - } - } - } else { - $img = imagecreatetruecolor($width, $lines); - imagealphablending($img, false); - if ($alpha_mask){ - imagesavealpha($img, true); - } - - //x軸進行量 - $pixel_step = $bit_count >> 3; - $alpha_max = $alpha_mask ? 0x7f : 0x00; - $alpha_mask_r = $alpha_mask ? 1/$alpha_mask : 1; - $red_mask_r = $red_mask ? 1/$red_mask : 1; - $green_mask_r = $green_mask ? 1/$green_mask : 1; - $blue_mask_r = $blue_mask ? 1/$blue_mask : 1; - - for ($line = 0; $line < $lines; ++$line, $y += $line_step){ - $buf = fread($stream, $line_bytes); - if ($buf === false){ - imagedestroy($img); - return false; - } - $pos = 0; - for ($x = 0; $x < $width; ++$x, $pos += $pixel_step){ - list(,$c) = unpack("V", substr($buf, $pos, $pixel_step). "\x00\x00"); - $a_masked = $c & $alpha_mask; - $r_masked = $c & $red_mask; - $g_masked = $c & $green_mask; - $b_masked = $c & $blue_mask; - $a = $alpha_max - ((($a_masked<<7) - $a_masked) * $alpha_mask_r); - $r = (($r_masked<<8) - $r_masked) * $red_mask_r; - $g = (($g_masked<<8) - $g_masked) * $green_mask_r; - $b = (($b_masked<<8) - $b_masked) * $blue_mask_r; - imagesetpixel($img, $x, $y, ($a<<24)|($r<<16)|($g<<8)|$b); - } - } - imagealphablending($img, true); - } - return $img; - } -} - diff --git a/plugin/document/kod/app/model/ConfigModel.class .php b/plugin/document/kod/app/model/ConfigModel.class .php deleted file mode 100644 index 82227910e..000000000 --- a/plugin/document/kod/app/model/ConfigModel.class .php +++ /dev/null @@ -1,4 +0,0 @@ -<?php -class ConfigModel extends Model{ -} - diff --git a/plugin/document/kod/app/model/PluginModel.class.php b/plugin/document/kod/app/model/PluginModel.class.php deleted file mode 100644 index 67228f9d1..000000000 --- a/plugin/document/kod/app/model/PluginModel.class.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php -class pluginModel{ - var $in; - var $config; - function __construct(){ - global $config, $in; - //parent::__construct(); - $this -> in = &$in; - $this -> config = &$config; - } - public function loadData(){ - if(!isset($this->config['settingSystem']['pluginList'])){ - $this->config['settingSystem']['pluginList'] = array(); - $this->initDefaultPlugin();//首次,加载并开启默认插件 - } - return $this->config['settingSystem']['pluginList']; - } - public function saveData(){ - $settingFile = USER_SYSTEM.'system_setting.php'; - FileCache::save($settingFile,$this->config['settingSystem']); - } - private function initDefaultPlugin(){ - $this->pluginScan(); - $list = $this->loadData(); - foreach ($list as $app => $val) { - $this->changeStatus($app,1); - } - } - - /** - * 加载所有插件hook; - */ - public function init(){ - $pluginList = $this->loadData(); - foreach ($pluginList as $key=>$item) { - if(!is_array($item) && isset($item['id'])){ - continue; - } - $file = PLUGIN_DIR.$item['id'].'/app.php'; - if( !$item['status'] || !is_file($file)) { - continue; - } - if(!$this->checkAuth($item['id'])){ - continue; - } - foreach ($item['regiest'] as $tag => $action) { - Hook::bind($tag,$action); - } - } - //执行全局插件绑定 - Hook::trigger("globalRequest"); - Hook::trigger(ST.'.'.ACT); - } - - public function checkAuth($app){ - $pluginList = $this->loadData(); - if( !isset($pluginList[$app]) || - !$pluginList[$app]['status']){ - show_tips("Not exist or disabled!"); - } - if( !isset($pluginList[$app]['config']['pluginAuth']) ){ - return true; - } - - $auth = $pluginList[$app]['config']['pluginAuth']; - if(plugin_check_auth($app,$auth)){ - return true; - }else{ - return false; - } - } - - public function add($app){ - if( !file_exists(PLUGIN_DIR.$app.'/package.json') || - !file_exists(PLUGIN_DIR.$app.'/app.php')){ - return; - } - Hook::apply($app.'Plugin.regiest'); - $this->saveData(); - } - public function remove($app){ - $pluginList = &$this->config['settingSystem']['pluginList']; - unset($pluginList[$app]); - - if( file_exists(PLUGIN_DIR.$app)){ - Hook::apply($app.'Plugin.unInstall'); - } - $this->saveData(); - return true; - } - - /** - * 切换插件启用关闭状态 - * @param [type] $app 插件名 - * @param [type] $open 开关状态 0-禁用;1-启用 - * @return - */ - public function changeStatus($app,$open){ - $pluginList = &$this->config['settingSystem']['pluginList']; - if(is_array($pluginList[$app])){ - if($open){ - $config = $this->getConfig($app); - $default = $this->getConfigDefault($app); - $config = array_merge($default,$config);//保存初始配置;兼容新增默认配置 - Hook::apply($app.'Plugin.regiest'); - $this->setConfig($app,$config); - } - $pluginList[$app]['status'] = $open; - } - $this->saveData(); - } - - public function getConfigDefault($app){ - $result = array(); - $json = $this->getPackageJson($app); - if(!$json && is_array($json['configItem'])){ - return $result; - } - foreach($json['configItem'] as $key=>$item) { - if(!isset($item['value']) || - isset($result[$key]) ){ - continue; - } - $result[$key] = $item['value']; - } - return $result; - } - - public function getPackageJson($app){ - return Hook::apply($app.'Plugin.appPackage'); - } - public function getConfig($app){ - $result = array(); - $pluginList = &$this->config['settingSystem']['pluginList']; - if( isset($pluginList[$app]) && - is_array($pluginList[$app]['config']) ){ - $result = $pluginList[$app]['config']; - } - if(!$result){ - $result = $this->getConfigDefault($app); - } - return $result; - } - - public function setConfig($app,$value){ - $pluginList = &$this->config['settingSystem']['pluginList']; - if(isset($pluginList[$app])){ - foreach ($value as $key => $val) { - $pluginList[$app]['config'][$key] = $val; - } - } - $this->saveData(); - } - - /** - * 遍历查检目录;自动加载插件; - * @return [type] [description] - */ - public function pluginScan(){ - $pluginList = &$this->config['settingSystem']['pluginList']; - recursion_dir(PLUGIN_DIR,$dirs,$files,0); - foreach ($dirs as $path) { - $app = get_path_this($path); - if(isset($pluginList[$app])){ - continue; - } - if( !file_exists($path.'/package.json') || - !file_exists($path.'/app.php')){ - continue; - } - Hook::apply($app.'Plugin.regiest'); - } - $this->saveData(); - } - public function viewList(){ - $this->pluginScan(); - $list = $this->loadData(); - $result = array(); - foreach ($list as $key => $item) { - if(!plugin_check_allow($key)){ - continue; - } - unset($item['regiest']); - $package = Hook::apply($item['id'].'Plugin.appPackage'); - if(is_array($package)){ - $result[$key] = array_merge($item,$package); - } - } - return $result; - } -} diff --git a/plugin/document/kod/app/sdks/MyCaptcha.class.php b/plugin/document/kod/app/sdks/MyCaptcha.class.php deleted file mode 100644 index 3833230fd..000000000 --- a/plugin/document/kod/app/sdks/MyCaptcha.class.php +++ /dev/null @@ -1,224 +0,0 @@ -<?php -class MyCaptcha{ - var $keystring; - function __construct($length){ - $alphabet = "0123456789abcdefghijklmnopqrstuvwxyz"; # do not change without changing font files! - $width = 140; - $height = 60; - $fluctuation_amplitude = $height/10;//上下起伏 - $white_noise_density=1/10;//$white_noise_density=0; // no white noise - $black_noise_density=1/100;//$black_noise_density=0; // no black noise - $foreground_color = array(mt_rand(0,120), mt_rand(0,120), mt_rand(0,120)); - $background_color = array(mt_rand(220,255), mt_rand(220,255), mt_rand(220,255)); - - $font_path = dirname(__FILE__).'/MyCaptcha_fonts/'; - $fonts=array($font_path.'font_1.png',$font_path.'font_2.png',$font_path.'font_3.png'); - $alphabet_length=strlen($alphabet); - do{ - $this->keystring = $this->randString($length); - $font_file=$fonts[mt_rand(0, count($fonts)-1)]; - $font=imagecreatefrompng($font_file); - imagealphablending($font, true); - $fontfile_width=imagesx($font); - $fontfile_height=imagesy($font)-1; - - $font_metrics=array(); - $symbol=0; - $reading_symbol=false; - - // loading font - for($i=0;$i<$fontfile_width && $symbol<$alphabet_length;$i++){ - $transparent = (imagecolorat($font, $i, 0) >> 24) == 127; - if(!$reading_symbol && !$transparent){ - $font_metrics[$alphabet{$symbol}]=array('start'=>$i); - $reading_symbol=true; - continue; - } - if($reading_symbol && $transparent){ - $font_metrics[$alphabet{$symbol}]['end']=$i; - $reading_symbol=false; - $symbol++; - continue; - } - } - - $img=imagecreatetruecolor($width, $height); - imagealphablending($img, true); - $white=imagecolorallocate($img, 255, 255, 255); - $black=imagecolorallocate($img, 0, 0, 0); - imagefilledrectangle($img, 0, 0, $width-1, $height-1, $white); - $x=1; - $odd=mt_rand(0,1); - if($odd==0) $odd=-1; - for($i=0;$i<$length;$i++){ - $m=$font_metrics[$this->keystring{$i}]; - - $y=(($i%2)*$fluctuation_amplitude - $fluctuation_amplitude/2)*$odd - + mt_rand(-round($fluctuation_amplitude/3), round($fluctuation_amplitude/3)) - + ($height-$fontfile_height)/2; - $shift=1; - imagecopy($img, $font, $x-$shift, $y, $m['start'], 1, $m['end']-$m['start'], $fontfile_height); - $x+=$m['end']-$m['start']-$shift; - } - }while($x>=$width-10); // while not fit in canvas - - //noise - $white=imagecolorallocate($font, 255, 255, 255); - $black=imagecolorallocate($font, 0, 0, 0); - for($i=0;$i<(($height-30)*$x)*$white_noise_density;$i++){ - imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $white); - } - for($i=0;$i<(($height-30)*$x)*$black_noise_density;$i++){ - imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $black); - } - - $center=$x/2; - // credits. To remove, see configuration file - $img2=imagecreatetruecolor($width, $height); - $foreground=imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]); - $background=imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]); - imagefilledrectangle($img2, 0, 0, $width-1, $height-1, $background); - imagefilledrectangle($img2, 0, $height, $width-1, $height+12, $foreground); - $this->drawLine($img2,$width,$height); - - // periods - $rand1=mt_rand(750000,1200000)/10000000; - $rand2=mt_rand(750000,1200000)/10000000; - $rand3=mt_rand(750000,1200000)/10000000; - $rand4=mt_rand(750000,1200000)/10000000; - // phases - $rand5=mt_rand(0,31415926)/10000000; - $rand6=mt_rand(0,31415926)/10000000; - $rand7=mt_rand(0,31415926)/10000000; - $rand8=mt_rand(0,31415926)/10000000; - // amplitudes - $rand9=mt_rand(330,420)/110; - $rand10=mt_rand(330,450)/100; - - //wave distortion - for($x=0;$x<$width;$x++){ - for($y=0;$y<$height;$y++){ - $sx=$x+(sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9-$width/2+$center+1; - $sy=$y+(sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10; - - if($sx<0 || $sy<0 || $sx>=$width-1 || $sy>=$height-1){ - continue; - }else{ - $color=imagecolorat($img, $sx, $sy) & 0xFF; - $color_x=imagecolorat($img, $sx+1, $sy) & 0xFF; - $color_y=imagecolorat($img, $sx, $sy+1) & 0xFF; - $color_xy=imagecolorat($img, $sx+1, $sy+1) & 0xFF; - } - if($color==255 && $color_x==255 && $color_y==255 && $color_xy==255){ - continue; - }else if($color==0 && $color_x==0 && $color_y==0 && $color_xy==0){ - $newred=$foreground_color[0]; - $newgreen=$foreground_color[1]; - $newblue=$foreground_color[2]; - }else{ - $frsx=$sx-floor($sx); - $frsy=$sy-floor($sy); - $frsx1=1-$frsx; - $frsy1=1-$frsy; - - $newcolor=( - $color*$frsx1*$frsy1+ - $color_x*$frsx*$frsy1+ - $color_y*$frsx1*$frsy+ - $color_xy*$frsx*$frsy - ); - if($newcolor>255) $newcolor=255; - $newcolor=$newcolor/255; - $newcolor0=1-$newcolor; - - $newred=$newcolor0*$foreground_color[0]+$newcolor*$background_color[0]; - $newgreen=$newcolor0*$foreground_color[1]+$newcolor*$background_color[1]; - $newblue=$newcolor0*$foreground_color[2]+$newcolor*$background_color[2]; - } - imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newred, $newgreen, $newblue)); - } - } - $this->showImage($img2); - } - public function getString(){ - return $this->keystring; - } - private function randString($length){ - $str = ''; - $allowed_symbols = "23456789abcdegikpqsvxyz"; //without symbols (o=0, 1=l, i=j, t=f) - while(true){ - $str = ''; - for($i=0;$i<$length;$i++){ - $str .= $allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)}; - } - if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/',$str)) break; - } - return $str; - } - - private function frand(){ - return mt_rand(0,9999)/10000; - } - private function drawLine(&$img,$width,$height){ - $line_number = 5; - $color_from = 100; - for ($line = 0; $line < $line_number; ++ $line) { - $line_color = imagecolorallocate($img, mt_rand($color_from,255), - mt_rand($color_from, 255),mt_rand($color_from, 255)); - $x = $width * (1 + $line) / ($line_number + 1); - $x += (0.5 - $this->frand()) * $width / $line_number; - $y = mt_rand($height * 0.1, $height * 0.9); - - $theta = ($this->frand() - 0.5) * M_PI * 0.7; - $w = $width; - $len = mt_rand($w * 0.4, $w * 0.7); - $lwid = mt_rand(0, 2); - - $k = $this->frand() * 0.6 + 0.2; - $k = $k * $k * 0.5; - $phi = $this->frand() * 6.28; - $step = 0.5; - $dx = $step * cos($theta); - $dy = $step * sin($theta); - $n = $len / $step; - $amp = 1.5 * $this->frand() / ($k + 5.0 / $len); - $x0 = $x - 0.5 * $len * cos($theta); - $y0 = $y - 0.5 * $len * sin($theta); - - $ldx = round(- $dy * $lwid); - $ldy = round($dx * $lwid); - for ($i = 0; $i < $n; ++ $i) { - $x = $x0 + $i * $dx + $amp * $dy * sin($k * $i * $step + $phi); - $y = $y0 + $i * $dy - $amp * $dx * sin($k * $i * $step + $phi); - imagefilledrectangle($img, $x, $y, $x + $lwid, $y + $lwid,$line_color); - } - } - - $allowed_symbols = "0123456789abcdefghijklmnopqrstuvwxyz"; - for ($i = 0; $i < 20; $i++) {//写入随机字串 - $char = $allowed_symbols[mt_rand(0,strlen($allowed_symbols)-1)]; - $line_color = imagecolorallocate($img, - mt_rand($color_from,255),mt_rand($color_from, 255),mt_rand($color_from, 255)); - imagechar($img,mt_rand(0,4),mt_rand(0,$width),rand(0,$height),$char,$line_color); - } - } - private function showImage(&$img){ - ob_get_clean(); - $out = ob_get_clean();//清除之前所有输出缓冲 TODO - - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - header('Cache-Control: no-store, no-cache, must-revalidate'); - header('Cache-Control: post-check=0, pre-check=0', FALSE); - header('Pragma: no-cache'); - if(function_exists("imagejpeg")){ - header("Content-Type: image/jpeg"); - imagejpeg($img, null,90);//图片质量 - }else if(function_exists("imagegif")){ - header("Content-Type: image/gif"); - imagegif($img); - }else if(function_exists("imagepng")){ - header("Content-Type: image/x-png"); - imagepng($img); - } - } -} diff --git a/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_1.png b/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_1.png deleted file mode 100644 index 76e653ad7..000000000 Binary files a/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_1.png and /dev/null differ diff --git a/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_2.png b/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_2.png deleted file mode 100644 index 861ea50ec..000000000 Binary files a/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_2.png and /dev/null differ diff --git a/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_3.png b/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_3.png deleted file mode 100644 index 404812107..000000000 Binary files a/plugin/document/kod/app/sdks/MyCaptcha_fonts/font_3.png and /dev/null differ diff --git a/plugin/document/kod/app/sdks/QRcode.class.php b/plugin/document/kod/app/sdks/QRcode.class.php deleted file mode 100644 index ea8c08f9a..000000000 --- a/plugin/document/kod/app/sdks/QRcode.class.php +++ /dev/null @@ -1,3312 +0,0 @@ -<?php - -/* - * PHP QR Code encoder - * - * This file contains MERGED version of PHP QR Code library. - * It was auto-generated from full version for your convenience. - * - * This merged version was configured to not requre any external files, - * with disabled cache, error loging and weker but faster mask matching. - * If you need tune it up please use non-merged version. - * - * For full version, documentation, examples of use please visit: - * - * http://phpqrcode.sourceforge.net/ - * https://sourceforge.net/projects/phpqrcode/ - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - -/* - * Version: 1.1.4 - * Build: 2010100721 - */ - - - -//---- qrconst.php ----------------------------- - - - - - -/* - * PHP QR Code encoder - * - * Common constants - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - // Encoding modes - - define('QR_MODE_NUL', -1); - define('QR_MODE_NUM', 0); - define('QR_MODE_AN', 1); - define('QR_MODE_8', 2); - define('QR_MODE_KANJI', 3); - define('QR_MODE_STRUCTURE', 4); - - // Levels of error correction. - - define('QR_ECLEVEL_L', 0); - define('QR_ECLEVEL_M', 1); - define('QR_ECLEVEL_Q', 2); - define('QR_ECLEVEL_H', 3); - - // Supported output formats - - define('QR_FORMAT_TEXT', 0); - define('QR_FORMAT_PNG', 1); - - class qrstr { - public static function set(&$srctab, $x, $y, $repl, $replLen = false) { - $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); - } - } - - - -//---- merged_config.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Config file, tuned-up for merged verion - */ - - define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there - define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true - define('QR_LOG_DIR', false); // default error logs dir - - define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code - define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly - define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false - - define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images - - - - -//---- qrtools.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Toolset, handy and debug utilites. - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRtools { - - //---------------------------------------------------------------------- - public static function binarize($frame) - { - $len = count($frame); - foreach ($frame as &$frameLine) { - - for($i=0; $i<$len; $i++) { - $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; - } - } - - return $frame; - } - - //---------------------------------------------------------------------- - public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037') - { - $barcode_array = array(); - - if (!is_array($mode)) - $mode = explode(',', $mode); - - $eccLevel = 'L'; - - if (count($mode) > 1) { - $eccLevel = $mode[1]; - } - - $qrTab = QRcode::text($code, false, $eccLevel); - $size = count($qrTab); - - $barcode_array['num_rows'] = $size; - $barcode_array['num_cols'] = $size; - $barcode_array['bcode'] = array(); - - foreach ($qrTab as $line) { - $arrAdd = array(); - foreach(str_split($line) as $char) - $arrAdd[] = ($char=='1')?1:0; - $barcode_array['bcode'][] = $arrAdd; - } - - return $barcode_array; - } - - //---------------------------------------------------------------------- - public static function clearCache() - { - self::$frames = array(); - } - - //---------------------------------------------------------------------- - public static function buildCache() - { - QRtools::markTime('before_build_cache'); - - $mask = new QRmask(); - for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) { - $frame = QRspec::newFrame($a); - if (QR_IMAGE) { - $fileName = QR_CACHE_DIR.'frame_'.$a.'.png'; - QRimage::png(self::binarize($frame), $fileName, 1, 0); - } - - $width = count($frame); - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - for ($maskNo=0; $maskNo<8; $maskNo++) - $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true); - } - - QRtools::markTime('after_build_cache'); - } - - //---------------------------------------------------------------------- - public static function log($outfile, $err) - { - if (QR_LOG_DIR !== false) { - if ($err != '') { - if ($outfile !== false) { - file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); - } else { - file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); - } - } - } - } - - //---------------------------------------------------------------------- - public static function dumpMask($frame) - { - $width = count($frame); - for($y=0;$y<$width;$y++) { - for($x=0;$x<$width;$x++) { - echo ord($frame[$y][$x]).','; - } - } - } - - //---------------------------------------------------------------------- - public static function markTime($markerId) - { - list($usec, $sec) = explode(" ", microtime()); - $time = ((float)$usec + (float)$sec); - - if (!isset($GLOBALS['qr_time_bench'])) - $GLOBALS['qr_time_bench'] = array(); - - $GLOBALS['qr_time_bench'][$markerId] = $time; - } - - //---------------------------------------------------------------------- - public static function timeBenchmark() - { - self::markTime('finish'); - - $lastTime = 0; - $startTime = 0; - $p = 0; - - echo '<table cellpadding="3" cellspacing="1"> - <thead><tr style="border-bottom:1px solid silver"><td colspan="2" style="text-align:center">BENCHMARK</td></tr></thead> - <tbody>'; - - foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) { - if ($p > 0) { - echo '<tr><th style="text-align:right">till '.$markerId.': </th><td>'.number_format($thisTime-$lastTime, 6).'s</td></tr>'; - } else { - $startTime = $thisTime; - } - - $p++; - $lastTime = $thisTime; - } - - echo '</tbody><tfoot> - <tr style="border-top:2px solid black"><th style="text-align:right">TOTAL: </th><td>'.number_format($lastTime-$startTime, 6).'s</td></tr> - </tfoot> - </table>'; - } - - } - - //########################################################################## - - QRtools::markTime('start'); - - - - -//---- qrspec.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * QR Code specifications - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * The following data / specifications are taken from - * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004) - * or - * "Automatic identification and data capture techniques -- - * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006) - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('QRSPEC_VERSION_MAX', 40); - define('QRSPEC_WIDTH_MAX', 177); - - define('QRCAP_WIDTH', 0); - define('QRCAP_WORDS', 1); - define('QRCAP_REMINDER', 2); - define('QRCAP_EC', 3); - - class QRspec { - - public static $capacity = array( - array( 0, 0, 0, array( 0, 0, 0, 0)), - array( 21, 26, 0, array( 7, 10, 13, 17)), // 1 - array( 25, 44, 7, array( 10, 16, 22, 28)), - array( 29, 70, 7, array( 15, 26, 36, 44)), - array( 33, 100, 7, array( 20, 36, 52, 64)), - array( 37, 134, 7, array( 26, 48, 72, 88)), // 5 - array( 41, 172, 7, array( 36, 64, 96, 112)), - array( 45, 196, 0, array( 40, 72, 108, 130)), - array( 49, 242, 0, array( 48, 88, 132, 156)), - array( 53, 292, 0, array( 60, 110, 160, 192)), - array( 57, 346, 0, array( 72, 130, 192, 224)), //10 - array( 61, 404, 0, array( 80, 150, 224, 264)), - array( 65, 466, 0, array( 96, 176, 260, 308)), - array( 69, 532, 0, array( 104, 198, 288, 352)), - array( 73, 581, 3, array( 120, 216, 320, 384)), - array( 77, 655, 3, array( 132, 240, 360, 432)), //15 - array( 81, 733, 3, array( 144, 280, 408, 480)), - array( 85, 815, 3, array( 168, 308, 448, 532)), - array( 89, 901, 3, array( 180, 338, 504, 588)), - array( 93, 991, 3, array( 196, 364, 546, 650)), - array( 97, 1085, 3, array( 224, 416, 600, 700)), //20 - array(101, 1156, 4, array( 224, 442, 644, 750)), - array(105, 1258, 4, array( 252, 476, 690, 816)), - array(109, 1364, 4, array( 270, 504, 750, 900)), - array(113, 1474, 4, array( 300, 560, 810, 960)), - array(117, 1588, 4, array( 312, 588, 870, 1050)), //25 - array(121, 1706, 4, array( 336, 644, 952, 1110)), - array(125, 1828, 4, array( 360, 700, 1020, 1200)), - array(129, 1921, 3, array( 390, 728, 1050, 1260)), - array(133, 2051, 3, array( 420, 784, 1140, 1350)), - array(137, 2185, 3, array( 450, 812, 1200, 1440)), //30 - array(141, 2323, 3, array( 480, 868, 1290, 1530)), - array(145, 2465, 3, array( 510, 924, 1350, 1620)), - array(149, 2611, 3, array( 540, 980, 1440, 1710)), - array(153, 2761, 3, array( 570, 1036, 1530, 1800)), - array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35 - array(161, 3034, 0, array( 600, 1120, 1680, 1980)), - array(165, 3196, 0, array( 630, 1204, 1770, 2100)), - array(169, 3362, 0, array( 660, 1260, 1860, 2220)), - array(173, 3532, 0, array( 720, 1316, 1950, 2310)), - array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40 - ); - - //---------------------------------------------------------------------- - public static function getDataLength($version, $level) - { - return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level]; - } - - //---------------------------------------------------------------------- - public static function getECCLength($version, $level) - { - return self::$capacity[$version][QRCAP_EC][$level]; - } - - //---------------------------------------------------------------------- - public static function getWidth($version) - { - return self::$capacity[$version][QRCAP_WIDTH]; - } - - //---------------------------------------------------------------------- - public static function getRemainder($version) - { - return self::$capacity[$version][QRCAP_REMINDER]; - } - - //---------------------------------------------------------------------- - public static function getMinimumVersion($size, $level) - { - - for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) { - $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level]; - if($words >= $size) - return $i; - } - - return -1; - } - - //###################################################################### - - public static $lengthTableBits = array( - array(10, 12, 14), - array( 9, 11, 13), - array( 8, 16, 16), - array( 8, 10, 12) - ); - - //---------------------------------------------------------------------- - public static function lengthIndicator($mode, $version) - { - if ($mode == QR_MODE_STRUCTURE) - return 0; - - if ($version <= 9) { - $l = 0; - } else if ($version <= 26) { - $l = 1; - } else { - $l = 2; - } - - return self::$lengthTableBits[$mode][$l]; - } - - //---------------------------------------------------------------------- - public static function maximumWords($mode, $version) - { - if($mode == QR_MODE_STRUCTURE) - return 3; - - if($version <= 9) { - $l = 0; - } else if($version <= 26) { - $l = 1; - } else { - $l = 2; - } - - $bits = self::$lengthTableBits[$mode][$l]; - $words = (1 << $bits) - 1; - - if($mode == QR_MODE_KANJI) { - $words *= 2; // the number of bytes is required - } - - return $words; - } - - // Error correction code ----------------------------------------------- - // Table of the error correction code (Reed-Solomon block) - // See Table 12-16 (pp.30-36), JIS X0510:2004. - - public static $eccTable = array( - array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1 - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), - array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), - array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), - array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5 - array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), - array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), - array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), - array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), - array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), //10 - array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), - array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), - array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), - array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), - array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), //15 - array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), - array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), - array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), - array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), - array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), //20 - array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), - array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), - array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), - array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), - array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), //25 - array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), - array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), - array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), - array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), - array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30 - array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), - array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), - array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), - array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), - array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35 - array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), - array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), - array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), - array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), - array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)),//40 - ); - - //---------------------------------------------------------------------- - // CACHEABLE!!! - - public static function getEccSpec($version, $level, array &$spec) - { - if (count($spec) < 5) { - $spec = array(0,0,0,0,0); - } - - $b1 = self::$eccTable[$version][$level][0]; - $b2 = self::$eccTable[$version][$level][1]; - $data = self::getDataLength($version, $level); - $ecc = self::getECCLength($version, $level); - - if($b2 == 0) { - $spec[0] = $b1; - $spec[1] = (int)($data / $b1); - $spec[2] = (int)($ecc / $b1); - $spec[3] = 0; - $spec[4] = 0; - } else { - $spec[0] = $b1; - $spec[1] = (int)($data / ($b1 + $b2)); - $spec[2] = (int)($ecc / ($b1 + $b2)); - $spec[3] = $b2; - $spec[4] = $spec[1] + 1; - } - } - - // Alignment pattern --------------------------------------------------- - - // Positions of alignment patterns. - // This array includes only the second and the third position of the - // alignment patterns. Rest of them can be calculated from the distance - // between them. - - // See Table 1 in Appendix E (pp.71) of JIS X0510:2004. - - public static $alignmentPattern = array( - array( 0, 0), - array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5 - array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10 - array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15 - array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20 - array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25 - array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), //26-30 - array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), //31-35 - array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58), //35-40 - ); - - - /** -------------------------------------------------------------------- - * Put an alignment marker. - * @param frame - * @param width - * @param ox,oy center coordinate of the pattern - */ - public static function putAlignmentMarker(array &$frame, $ox, $oy) - { - $finder = array( - "\xa1\xa1\xa1\xa1\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa0\xa1\xa0\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa1\xa1\xa1\xa1" - ); - - $yStart = $oy-2; - $xStart = $ox-2; - - for($y=0; $y<5; $y++) { - QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]); - } - } - - //---------------------------------------------------------------------- - public static function putAlignmentPattern($version, &$frame, $width) - { - if($version < 2) - return; - - $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0]; - if($d < 0) { - $w = 2; - } else { - $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2); - } - - if($w * $w - 3 == 1) { - $x = self::$alignmentPattern[$version][0]; - $y = self::$alignmentPattern[$version][0]; - self::putAlignmentMarker($frame, $x, $y); - return; - } - - $cx = self::$alignmentPattern[$version][0]; - for($x=1; $x<$w - 1; $x++) { - self::putAlignmentMarker($frame, 6, $cx); - self::putAlignmentMarker($frame, $cx, 6); - $cx += $d; - } - - $cy = self::$alignmentPattern[$version][0]; - for($y=0; $y<$w-1; $y++) { - $cx = self::$alignmentPattern[$version][0]; - for($x=0; $x<$w-1; $x++) { - self::putAlignmentMarker($frame, $cx, $cy); - $cx += $d; - } - $cy += $d; - } - } - - // Version information pattern ----------------------------------------- - - // Version information pattern (BCH coded). - // See Table 1 in Appendix D (pp.68) of JIS X0510:2004. - - // size: [QRSPEC_VERSION_MAX - 6] - - public static $versionPattern = array( - 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, - 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, - 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, - 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, - 0x27541, 0x28c69 - ); - - //---------------------------------------------------------------------- - public static function getVersionPattern($version) - { - if($version < 7 || $version > QRSPEC_VERSION_MAX) - return 0; - - return self::$versionPattern[$version -7]; - } - - // Format information -------------------------------------------------- - // See calcFormatInfo in tests/test_qrspec.c (orginal qrencode c lib) - - public static $formatInfo = array( - array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), - array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), - array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), - array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) - ); - - public static function getFormatInfo($mask, $level) - { - if($mask < 0 || $mask > 7) - return 0; - - if($level < 0 || $level > 3) - return 0; - - return self::$formatInfo[$level][$mask]; - } - - // Frame --------------------------------------------------------------- - // Cache of initial frames. - - public static $frames = array(); - - /** -------------------------------------------------------------------- - * Put a finder pattern. - * @param frame - * @param width - * @param ox,oy upper-left coordinate of the pattern - */ - public static function putFinderPattern(&$frame, $ox, $oy) - { - $finder = array( - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1" - ); - - for($y=0; $y<7; $y++) { - QRstr::set($frame, $ox, $oy+$y, $finder[$y]); - } - } - - //---------------------------------------------------------------------- - public static function createFrame($version) - { - $width = self::$capacity[$version][QRCAP_WIDTH]; - $frameLine = str_repeat ("\0", $width); - $frame = array_fill(0, $width, $frameLine); - - // Finder pattern - self::putFinderPattern($frame, 0, 0); - self::putFinderPattern($frame, $width - 7, 0); - self::putFinderPattern($frame, 0, $width - 7); - - // Separator - $yOffset = $width - 7; - - for($y=0; $y<7; $y++) { - $frame[$y][7] = "\xc0"; - $frame[$y][$width - 8] = "\xc0"; - $frame[$yOffset][7] = "\xc0"; - $yOffset++; - } - - $setPattern = str_repeat("\xc0", 8); - - QRstr::set($frame, 0, 7, $setPattern); - QRstr::set($frame, $width-8, 7, $setPattern); - QRstr::set($frame, 0, $width - 8, $setPattern); - - // Format info - $setPattern = str_repeat("\x84", 9); - QRstr::set($frame, 0, 8, $setPattern); - QRstr::set($frame, $width - 8, 8, $setPattern, 8); - - $yOffset = $width - 8; - - for($y=0; $y<8; $y++,$yOffset++) { - $frame[$y][8] = "\x84"; - $frame[$yOffset][8] = "\x84"; - } - - // Timing pattern - - for($i=1; $i<$width-15; $i++) { - $frame[6][7+$i] = chr(0x90 | ($i & 1)); - $frame[7+$i][6] = chr(0x90 | ($i & 1)); - } - - // Alignment pattern - self::putAlignmentPattern($version, $frame, $width); - - // Version information - if($version >= 7) { - $vinf = self::getVersionPattern($version); - - $v = $vinf; - - for($x=0; $x<6; $x++) { - for($y=0; $y<3; $y++) { - $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - - $v = $vinf; - for($y=0; $y<6; $y++) { - for($x=0; $x<3; $x++) { - $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - } - - // and a little bit... - $frame[$width - 8][8] = "\x81"; - - return $frame; - } - - //---------------------------------------------------------------------- - public static function debug($frame, $binary_mode = false) - { - if ($binary_mode) { - - foreach ($frame as &$frameLine) { - $frameLine = join('<span class="m">  </span>', explode('0', $frameLine)); - $frameLine = join('██', explode('1', $frameLine)); - } - - ?> - <style> - .m { background-color: white; } - </style> - <?php - echo '<pre><tt><br/ ><br/ ><br/ >        '; - echo join("<br/ >        ", $frame); - echo '</tt></pre><br/ ><br/ ><br/ ><br/ ><br/ ><br/ >'; - - } else { - - foreach ($frame as &$frameLine) { - $frameLine = join('<span class="m"> </span>', explode("\xc0", $frameLine)); - $frameLine = join('<span class="m">▒</span>', explode("\xc1", $frameLine)); - $frameLine = join('<span class="p"> </span>', explode("\xa0", $frameLine)); - $frameLine = join('<span class="p">▒</span>', explode("\xa1", $frameLine)); - $frameLine = join('<span class="s">◇</span>', explode("\x84", $frameLine)); //format 0 - $frameLine = join('<span class="s">◆</span>', explode("\x85", $frameLine)); //format 1 - $frameLine = join('<span class="x">☢</span>', explode("\x81", $frameLine)); //special bit - $frameLine = join('<span class="c"> </span>', explode("\x90", $frameLine)); //clock 0 - $frameLine = join('<span class="c">◷</span>', explode("\x91", $frameLine)); //clock 1 - $frameLine = join('<span class="f"> </span>', explode("\x88", $frameLine)); //version - $frameLine = join('<span class="f">▒</span>', explode("\x89", $frameLine)); //version - $frameLine = join('♦', explode("\x01", $frameLine)); - $frameLine = join('⋅', explode("\0", $frameLine)); - } - - ?> - <style> - .p { background-color: yellow; } - .m { background-color: #00FF00; } - .s { background-color: #FF0000; } - .c { background-color: aqua; } - .x { background-color: pink; } - .f { background-color: gold; } - </style> - <?php - echo "<pre><tt>"; - echo join("<br/ >", $frame); - echo "</tt></pre>"; - - } - } - - //---------------------------------------------------------------------- - public static function serial($frame) - { - return gzcompress(join("\n", $frame), 9); - } - - //---------------------------------------------------------------------- - public static function unserial($code) - { - return explode("\n", gzuncompress($code)); - } - - //---------------------------------------------------------------------- - public static function newFrame($version) - { - if($version < 1 || $version > QRSPEC_VERSION_MAX) - return null; - - if(!isset(self::$frames[$version])) { - - $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat'; - - if (QR_CACHEABLE) { - if (file_exists($fileName)) { - self::$frames[$version] = self::unserial(file_get_contents($fileName)); - } else { - self::$frames[$version] = self::createFrame($version); - file_put_contents($fileName, self::serial(self::$frames[$version])); - } - } else { - self::$frames[$version] = self::createFrame($version); - } - } - - if(is_null(self::$frames[$version])) - return null; - - return self::$frames[$version]; - } - - //---------------------------------------------------------------------- - public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; } - public static function rsBlockNum1($spec) { return $spec[0]; } - public static function rsDataCodes1($spec) { return $spec[1]; } - public static function rsEccCodes1($spec) { return $spec[2]; } - public static function rsBlockNum2($spec) { return $spec[3]; } - public static function rsDataCodes2($spec) { return $spec[4]; } - public static function rsEccCodes2($spec) { return $spec[2]; } - public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); } - public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; } - - } - - - -//---- qrimage.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Image output of code using GD2 - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('QR_IMAGE', true); - - class QRimage { - - //---------------------------------------------------------------------- - public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) - { - $image = self::image($frame, $pixelPerPoint, $outerFrame); - - if ($filename === false) { - Header("Content-type: image/png"); - ImagePng($image); - } else { - if($saveandprint===TRUE){ - ImagePng($image, $filename); - header("Content-type: image/png"); - ImagePng($image); - }else{ - ImagePng($image, $filename); - } - } - - ImageDestroy($image); - } - - //---------------------------------------------------------------------- - public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85) - { - $image = self::image($frame, $pixelPerPoint, $outerFrame); - - if ($filename === false) { - Header("Content-type: image/jpeg"); - ImageJpeg($image, null, $q); - } else { - ImageJpeg($image, $filename, $q); - } - - ImageDestroy($image); - } - - //---------------------------------------------------------------------- - private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4) - { - $h = count($frame); - $w = strlen($frame[0]); - - $imgW = $w + 2*$outerFrame; - $imgH = $h + 2*$outerFrame; - - $base_image =ImageCreate($imgW, $imgH); - - $col[0] = ImageColorAllocate($base_image,255,255,255); - $col[1] = ImageColorAllocate($base_image,0,0,0); - - imagefill($base_image, 0, 0, $col[0]); - - for($y=0; $y<$h; $y++) { - for($x=0; $x<$w; $x++) { - if ($frame[$y][$x] == '1') { - ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); - } - } - } - - $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint); - ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH); - ImageDestroy($base_image); - - return $target_image; - } - } - - - -//---- qrinput.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Input encoding class - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('STRUCTURE_HEADER_BITS', 20); - define('MAX_STRUCTURED_SYMBOLS', 16); - - class QRinputItem { - - public $mode; - public $size; - public $data; - public $bstream; - - public function __construct($mode, $size, $data, $bstream = null) - { - $setData = array_slice($data, 0, $size); - - if (count($setData) < $size) { - $setData = array_merge($setData, array_fill(0,$size-count($setData),0)); - } - - if(!QRinput::check($mode, $size, $setData)) { - throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData)); - return null; - } - - $this->mode = $mode; - $this->size = $size; - $this->data = $setData; - $this->bstream = $bstream; - } - - //---------------------------------------------------------------------- - public function encodeModeNum($version) - { - try { - - $words = (int)($this->size / 3); - $bs = new QRbitstream(); - - $val = 0x1; - $bs->appendNum(4, $val); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size); - - for($i=0; $i<$words; $i++) { - $val = (ord($this->data[$i*3 ]) - ord('0')) * 100; - $val += (ord($this->data[$i*3+1]) - ord('0')) * 10; - $val += (ord($this->data[$i*3+2]) - ord('0')); - $bs->appendNum(10, $val); - } - - if($this->size - $words * 3 == 1) { - $val = ord($this->data[$words*3]) - ord('0'); - $bs->appendNum(4, $val); - } else if($this->size - $words * 3 == 2) { - $val = (ord($this->data[$words*3 ]) - ord('0')) * 10; - $val += (ord($this->data[$words*3+1]) - ord('0')); - $bs->appendNum(7, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeAn($version) - { - try { - $words = (int)($this->size / 2); - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x02); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size); - - for($i=0; $i<$words; $i++) { - $val = (int)QRinput::lookAnTable(ord($this->data[$i*2 ])) * 45; - $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1])); - - $bs->appendNum(11, $val); - } - - if($this->size & 1) { - $val = QRinput::lookAnTable(ord($this->data[$words * 2])); - $bs->appendNum(6, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeMode8($version) - { - try { - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x4); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size); - - for($i=0; $i<$this->size; $i++) { - $bs->appendNum(8, ord($this->data[$i])); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeKanji($version) - { - try { - - $bs = new QRbitrtream(); - - $bs->appendNum(4, 0x8); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2)); - - for($i=0; $i<$this->size; $i+=2) { - $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]); - if($val <= 0x9ffc) { - $val -= 0x8140; - } else { - $val -= 0xc140; - } - - $h = ($val >> 8) * 0xc0; - $val = ($val & 0xff) + $h; - - $bs->appendNum(13, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeStructure() - { - try { - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x03); - $bs->appendNum(4, ord($this->data[1]) - 1); - $bs->appendNum(4, ord($this->data[0]) - 1); - $bs->appendNum(8, ord($this->data[2])); - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function estimateBitStreamSizeOfEntry($version) - { - $bits = 0; - - if($version == 0) - $version = 1; - - switch($this->mode) { - case QR_MODE_NUM: $bits = QRinput::estimateBitsModeNum($this->size); break; - case QR_MODE_AN: $bits = QRinput::estimateBitsModeAn($this->size); break; - case QR_MODE_8: $bits = QRinput::estimateBitsMode8($this->size); break; - case QR_MODE_KANJI: $bits = QRinput::estimateBitsModeKanji($this->size);break; - case QR_MODE_STRUCTURE: return STRUCTURE_HEADER_BITS; - default: - return 0; - } - - $l = QRspec::lengthIndicator($this->mode, $version); - $m = 1 << $l; - $num = (int)(($this->size + $m - 1) / $m); - - $bits += $num * (4 + $l); - - return $bits; - } - - //---------------------------------------------------------------------- - public function encodeBitStream($version) - { - try { - - unset($this->bstream); - $words = QRspec::maximumWords($this->mode, $version); - - if($this->size > $words) { - - $st1 = new QRinputItem($this->mode, $words, $this->data); - $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words)); - - $st1->encodeBitStream($version); - $st2->encodeBitStream($version); - - $this->bstream = new QRbitstream(); - $this->bstream->append($st1->bstream); - $this->bstream->append($st2->bstream); - - unset($st1); - unset($st2); - - } else { - - $ret = 0; - - switch($this->mode) { - case QR_MODE_NUM: $ret = $this->encodeModeNum($version); break; - case QR_MODE_AN: $ret = $this->encodeModeAn($version); break; - case QR_MODE_8: $ret = $this->encodeMode8($version); break; - case QR_MODE_KANJI: $ret = $this->encodeModeKanji($version);break; - case QR_MODE_STRUCTURE: $ret = $this->encodeModeStructure(); break; - - default: - break; - } - - if($ret < 0) - return -1; - } - - return $this->bstream->size(); - - } catch (Exception $e) { - return -1; - } - } - }; - - //########################################################################## - - class QRinput { - - public $items; - - private $version; - private $level; - - //---------------------------------------------------------------------- - public function __construct($version = 0, $level = QR_ECLEVEL_L) - { - if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) { - throw new Exception('Invalid version no'); - return NULL; - } - - $this->version = $version; - $this->level = $level; - } - - //---------------------------------------------------------------------- - public function getVersion() - { - return $this->version; - } - - //---------------------------------------------------------------------- - public function setVersion($version) - { - if($version < 0 || $version > QRSPEC_VERSION_MAX) { - throw new Exception('Invalid version no'); - return -1; - } - - $this->version = $version; - - return 0; - } - - //---------------------------------------------------------------------- - public function getErrorCorrectionLevel() - { - return $this->level; - } - - //---------------------------------------------------------------------- - public function setErrorCorrectionLevel($level) - { - if($level > QR_ECLEVEL_H) { - throw new Exception('Invalid ECLEVEL'); - return -1; - } - - $this->level = $level; - - return 0; - } - - //---------------------------------------------------------------------- - public function appendEntry(QRinputItem $entry) - { - $this->items[] = $entry; - } - - //---------------------------------------------------------------------- - public function append($mode, $size, $data) - { - try { - $entry = new QRinputItem($mode, $size, $data); - $this->items[] = $entry; - return 0; - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - - public function insertStructuredAppendHeader($size, $index, $parity) - { - if( $size > MAX_STRUCTURED_SYMBOLS ) { - throw new Exception('insertStructuredAppendHeader wrong size'); - } - - if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) { - throw new Exception('insertStructuredAppendHeader wrong index'); - } - - $buf = array($size, $index, $parity); - - try { - $entry = new QRinputItem(QR_MODE_STRUCTURE, 3, buf); - array_unshift($this->items, $entry); - return 0; - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function calcParity() - { - $parity = 0; - - foreach($this->items as $item) { - if($item->mode != QR_MODE_STRUCTURE) { - for($i=$item->size-1; $i>=0; $i--) { - $parity ^= $item->data[$i]; - } - } - } - - return $parity; - } - - //---------------------------------------------------------------------- - public static function checkModeNum($size, $data) - { - for($i=0; $i<$size; $i++) { - if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){ - return false; - } - } - - return true; - } - - //---------------------------------------------------------------------- - public static function estimateBitsModeNum($size) - { - $w = (int)$size / 3; - $bits = $w * 10; - - switch($size - $w * 3) { - case 1: - $bits += 4; - break; - case 2: - $bits += 7; - break; - default: - break; - } - - return $bits; - } - - //---------------------------------------------------------------------- - public static $anTable = array( - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - ); - - //---------------------------------------------------------------------- - public static function lookAnTable($c) - { - return (($c > 127)?-1:self::$anTable[$c]); - } - - //---------------------------------------------------------------------- - public static function checkModeAn($size, $data) - { - for($i=0; $i<$size; $i++) { - if (self::lookAnTable(ord($data[$i])) == -1) { - return false; - } - } - - return true; - } - - //---------------------------------------------------------------------- - public static function estimateBitsModeAn($size) - { - $w = (int)($size / 2); - $bits = $w * 11; - - if($size & 1) { - $bits += 6; - } - - return $bits; - } - - //---------------------------------------------------------------------- - public static function estimateBitsMode8($size) - { - return $size * 8; - } - - //---------------------------------------------------------------------- - public function estimateBitsModeKanji($size) - { - return (int)(($size / 2) * 13); - } - - //---------------------------------------------------------------------- - public static function checkModeKanji($size, $data) - { - if($size & 1) - return false; - - for($i=0; $i<$size; $i+=2) { - $val = (ord($data[$i]) << 8) | ord($data[$i+1]); - if( $val < 0x8140 - || ($val > 0x9ffc && $val < 0xe040) - || $val > 0xebbf) { - return false; - } - } - - return true; - } - - /*********************************************************************** - * Validation - **********************************************************************/ - - public static function check($mode, $size, $data) - { - if($size <= 0) - return false; - - switch($mode) { - case QR_MODE_NUM: return self::checkModeNum($size, $data); break; - case QR_MODE_AN: return self::checkModeAn($size, $data); break; - case QR_MODE_KANJI: return self::checkModeKanji($size, $data); break; - case QR_MODE_8: return true; break; - case QR_MODE_STRUCTURE: return true; break; - - default: - break; - } - - return false; - } - - - //---------------------------------------------------------------------- - public function estimateBitStreamSize($version) - { - $bits = 0; - - foreach($this->items as $item) { - $bits += $item->estimateBitStreamSizeOfEntry($version); - } - - return $bits; - } - - //---------------------------------------------------------------------- - public function estimateVersion() - { - $version = 0; - $prev = 0; - do { - $prev = $version; - $bits = $this->estimateBitStreamSize($prev); - $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if ($version < 0) { - return -1; - } - } while ($version > $prev); - - return $version; - } - - //---------------------------------------------------------------------- - public static function lengthOfCode($mode, $version, $bits) - { - $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version); - switch($mode) { - case QR_MODE_NUM: - $chunks = (int)($payload / 10); - $remain = $payload - $chunks * 10; - $size = $chunks * 3; - if($remain >= 7) { - $size += 2; - } else if($remain >= 4) { - $size += 1; - } - break; - case QR_MODE_AN: - $chunks = (int)($payload / 11); - $remain = $payload - $chunks * 11; - $size = $chunks * 2; - if($remain >= 6) - $size++; - break; - case QR_MODE_8: - $size = (int)($payload / 8); - break; - case QR_MODE_KANJI: - $size = (int)(($payload / 13) * 2); - break; - case QR_MODE_STRUCTURE: - $size = (int)($payload / 8); - break; - default: - $size = 0; - break; - } - - $maxsize = QRspec::maximumWords($mode, $version); - if($size < 0) $size = 0; - if($size > $maxsize) $size = $maxsize; - - return $size; - } - - //---------------------------------------------------------------------- - public function createBitStream() - { - $total = 0; - - foreach($this->items as $item) { - $bits = $item->encodeBitStream($this->version); - - if($bits < 0) - return -1; - - $total += $bits; - } - - return $total; - } - - //---------------------------------------------------------------------- - public function convertData() - { - $ver = $this->estimateVersion(); - if($ver > $this->getVersion()) { - $this->setVersion($ver); - } - - for(;;) { - $bits = $this->createBitStream(); - - if($bits < 0) - return -1; - - $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if($ver < 0) { - throw new Exception('WRONG VERSION'); - return -1; - } else if($ver > $this->getVersion()) { - $this->setVersion($ver); - } else { - break; - } - } - - return 0; - } - - //---------------------------------------------------------------------- - public function appendPaddingBit(&$bstream) - { - $bits = $bstream->size(); - $maxwords = QRspec::getDataLength($this->version, $this->level); - $maxbits = $maxwords * 8; - - if ($maxbits == $bits) { - return 0; - } - - if ($maxbits - $bits < 5) { - return $bstream->appendNum($maxbits - $bits, 0); - } - - $bits += 4; - $words = (int)(($bits + 7) / 8); - - $padding = new QRbitstream(); - $ret = $padding->appendNum($words * 8 - $bits + 4, 0); - - if($ret < 0) - return $ret; - - $padlen = $maxwords - $words; - - if($padlen > 0) { - - $padbuf = array(); - for($i=0; $i<$padlen; $i++) { - $padbuf[$i] = ($i&1)?0x11:0xec; - } - - $ret = $padding->appendBytes($padlen, $padbuf); - - if($ret < 0) - return $ret; - - } - - $ret = $bstream->append($padding); - - return $ret; - } - - //---------------------------------------------------------------------- - public function mergeBitStream() - { - if($this->convertData() < 0) { - return null; - } - - $bstream = new QRbitstream(); - - foreach($this->items as $item) { - $ret = $bstream->append($item->bstream); - if($ret < 0) { - return null; - } - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function getBitStream() - { - - $bstream = $this->mergeBitStream(); - - if($bstream == null) { - return null; - } - - $ret = $this->appendPaddingBit($bstream); - if($ret < 0) { - return null; - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function getByteStream() - { - $bstream = $this->getBitStream(); - if($bstream == null) { - return null; - } - - return $bstream->toByte(); - } - } - - - - - - -//---- qrbitstream.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Bitstream class - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRbitstream { - - public $data = array(); - - //---------------------------------------------------------------------- - public function size() - { - return count($this->data); - } - - //---------------------------------------------------------------------- - public function allocate($setLength) - { - $this->data = array_fill(0, $setLength, 0); - return 0; - } - - //---------------------------------------------------------------------- - public static function newFromNum($bits, $num) - { - $bstream = new QRbitstream(); - $bstream->allocate($bits); - - $mask = 1 << ($bits - 1); - for($i=0; $i<$bits; $i++) { - if($num & $mask) { - $bstream->data[$i] = 1; - } else { - $bstream->data[$i] = 0; - } - $mask = $mask >> 1; - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public static function newFromBytes($size, $data) - { - $bstream = new QRbitstream(); - $bstream->allocate($size * 8); - $p=0; - - for($i=0; $i<$size; $i++) { - $mask = 0x80; - for($j=0; $j<8; $j++) { - if($data[$i] & $mask) { - $bstream->data[$p] = 1; - } else { - $bstream->data[$p] = 0; - } - $p++; - $mask = $mask >> 1; - } - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function append(QRbitstream $arg) - { - if (is_null($arg)) { - return -1; - } - - if($arg->size() == 0) { - return 0; - } - - if($this->size() == 0) { - $this->data = $arg->data; - return 0; - } - - $this->data = array_values(array_merge($this->data, $arg->data)); - - return 0; - } - - //---------------------------------------------------------------------- - public function appendNum($bits, $num) - { - if ($bits == 0) - return 0; - - $b = QRbitstream::newFromNum($bits, $num); - - if(is_null($b)) - return -1; - - $ret = $this->append($b); - unset($b); - - return $ret; - } - - //---------------------------------------------------------------------- - public function appendBytes($size, $data) - { - if ($size == 0) - return 0; - - $b = QRbitstream::newFromBytes($size, $data); - - if(is_null($b)) - return -1; - - $ret = $this->append($b); - unset($b); - - return $ret; - } - - //---------------------------------------------------------------------- - public function toByte() - { - - $size = $this->size(); - - if($size == 0) { - return array(); - } - - $data = array_fill(0, (int)(($size + 7) / 8), 0); - $bytes = (int)($size / 8); - - $p = 0; - - for($i=0; $i<$bytes; $i++) { - $v = 0; - for($j=0; $j<8; $j++) { - $v = $v << 1; - $v |= $this->data[$p]; - $p++; - } - $data[$i] = $v; - } - - if($size & 7) { - $v = 0; - for($j=0; $j<($size & 7); $j++) { - $v = $v << 1; - $v |= $this->data[$p]; - $p++; - } - $data[$bytes] = $v; - } - - return $data; - } - - } - - - - -//---- qrsplit.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Input splitting classes - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * The following data / specifications are taken from - * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004) - * or - * "Automatic identification and data capture techniques -- - * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006) - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - class QRsplit { - - public $dataStr = ''; - public $input; - public $modeHint; - - //---------------------------------------------------------------------- - public function __construct($dataStr, $input, $modeHint) - { - $this->dataStr = $dataStr; - $this->input = $input; - $this->modeHint = $modeHint; - } - - //---------------------------------------------------------------------- - public static function isdigitat($str, $pos) - { - if ($pos >= strlen($str)) - return false; - - return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9'))); - } - - //---------------------------------------------------------------------- - public static function isalnumat($str, $pos) - { - if ($pos >= strlen($str)) - return false; - - return (QRinput::lookAnTable(ord($str[$pos])) >= 0); - } - - //---------------------------------------------------------------------- - public function identifyMode($pos) - { - if ($pos >= strlen($this->dataStr)) - return QR_MODE_NUL; - - $c = $this->dataStr[$pos]; - - if(self::isdigitat($this->dataStr, $pos)) { - return QR_MODE_NUM; - } else if(self::isalnumat($this->dataStr, $pos)) { - return QR_MODE_AN; - } else if($this->modeHint == QR_MODE_KANJI) { - - if ($pos+1 < strlen($this->dataStr)) - { - $d = $this->dataStr[$pos+1]; - $word = (ord($c) << 8) | ord($d); - if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) { - return QR_MODE_KANJI; - } - } - } - - return QR_MODE_8; - } - - //---------------------------------------------------------------------- - public function eatNum() - { - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 0; - while(self::isdigitat($this->dataStr, $p)) { - $p++; - } - - $run = $p; - $mode = $this->identifyMode($p); - - if($mode == QR_MODE_8) { - $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln - + QRinput::estimateBitsMode8(1) // + 4 + l8 - - QRinput::estimateBitsMode8($run + 1); // - 4 - l8 - if($dif > 0) { - return $this->eat8(); - } - } - if($mode == QR_MODE_AN) { - $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln - + QRinput::estimateBitsModeAn(1) // + 4 + la - - QRinput::estimateBitsModeAn($run + 1);// - 4 - la - if($dif > 0) { - return $this->eatAn(); - } - } - - $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eatAn() - { - $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion()); - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 0; - - while(self::isalnumat($this->dataStr, $p)) { - if(self::isdigitat($this->dataStr, $p)) { - $q = $p; - while(self::isdigitat($this->dataStr, $q)) { - $q++; - } - - $dif = QRinput::estimateBitsModeAn($p) // + 4 + la - + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln - - QRinput::estimateBitsModeAn($q); // - 4 - la - - if($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - - $run = $p; - - if(!self::isalnumat($this->dataStr, $p)) { - $dif = QRinput::estimateBitsModeAn($run) + 4 + $la - + QRinput::estimateBitsMode8(1) // + 4 + l8 - - QRinput::estimateBitsMode8($run + 1); // - 4 - l8 - if($dif > 0) { - return $this->eat8(); - } - } - - $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eatKanji() - { - $p = 0; - - while($this->identifyMode($p) == QR_MODE_KANJI) { - $p += 2; - } - - $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eat8() - { - $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion()); - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 1; - $dataStrLen = strlen($this->dataStr); - - while($p < $dataStrLen) { - - $mode = $this->identifyMode($p); - if($mode == QR_MODE_KANJI) { - break; - } - if($mode == QR_MODE_NUM) { - $q = $p; - while(self::isdigitat($this->dataStr, $q)) { - $q++; - } - $dif = QRinput::estimateBitsMode8($p) // + 4 + l8 - + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln - - QRinput::estimateBitsMode8($q); // - 4 - l8 - if($dif < 0) { - break; - } else { - $p = $q; - } - } else if($mode == QR_MODE_AN) { - $q = $p; - while(self::isalnumat($this->dataStr, $q)) { - $q++; - } - $dif = QRinput::estimateBitsMode8($p) // + 4 + l8 - + QRinput::estimateBitsModeAn($q - $p) + 4 + $la - - QRinput::estimateBitsMode8($q); // - 4 - l8 - if($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - - $run = $p; - $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr)); - - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function splitString() - { - while (strlen($this->dataStr) > 0) - { - if($this->dataStr == '') - return 0; - - $mode = $this->identifyMode(0); - - switch ($mode) { - case QR_MODE_NUM: $length = $this->eatNum(); break; - case QR_MODE_AN: $length = $this->eatAn(); break; - case QR_MODE_KANJI: - if ($hint == QR_MODE_KANJI) - $length = $this->eatKanji(); - else $length = $this->eat8(); - break; - default: $length = $this->eat8(); break; - - } - - if($length == 0) return 0; - if($length < 0) return -1; - - $this->dataStr = substr($this->dataStr, $length); - } - } - - //---------------------------------------------------------------------- - public function toUpper() - { - $stringLen = strlen($this->dataStr); - $p = 0; - - while ($p<$stringLen) { - $mode = self::identifyMode(substr($this->dataStr, $p), $this->modeHint); - if($mode == QR_MODE_KANJI) { - $p += 2; - } else { - if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) { - $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32); - } - $p++; - } - } - - return $this->dataStr; - } - - //---------------------------------------------------------------------- - public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true) - { - if(is_null($string) || $string == '\0' || $string == '') { - throw new Exception('empty string!!!'); - } - - $split = new QRsplit($string, $input, $modeHint); - - if(!$casesensitive) - $split->toUpper(); - - return $split->splitString(); - } - } - - - -//---- qrrscode.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Reed-Solomon error correction support - * - * Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q - * (libfec is released under the GNU Lesser General Public License.) - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRrsItem { - - public $mm; // Bits per symbol - public $nn; // Symbols per block (= (1<<mm)-1) - public $alpha_to = array(); // log lookup table - public $index_of = array(); // Antilog lookup table - public $genpoly = array(); // Generator polynomial - public $nroots; // Number of generator roots = number of parity symbols - public $fcr; // First consecutive root, index form - public $prim; // Primitive element, index form - public $iprim; // prim-th root of 1, index form - public $pad; // Padding bytes in shortened block - public $gfpoly; - - //---------------------------------------------------------------------- - public function modnn($x) - { - while ($x >= $this->nn) { - $x -= $this->nn; - $x = ($x >> $this->mm) + ($x & $this->nn); - } - - return $x; - } - - //---------------------------------------------------------------------- - public static function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) - { - // Common code for intializing a Reed-Solomon control block (char or int symbols) - // Copyright 2004 Phil Karn, KA9Q - // May be used under the terms of the GNU Lesser General Public License (LGPL) - - $rs = null; - - // Check parameter ranges - if($symsize < 0 || $symsize > 8) return $rs; - if($fcr < 0 || $fcr >= (1<<$symsize)) return $rs; - if($prim <= 0 || $prim >= (1<<$symsize)) return $rs; - if($nroots < 0 || $nroots >= (1<<$symsize)) return $rs; // Can't have more roots than symbol values! - if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding - - $rs = new QRrsItem(); - $rs->mm = $symsize; - $rs->nn = (1<<$symsize)-1; - $rs->pad = $pad; - - $rs->alpha_to = array_fill(0, $rs->nn+1, 0); - $rs->index_of = array_fill(0, $rs->nn+1, 0); - - // PHP style macro replacement ;) - $NN =& $rs->nn; - $A0 =& $NN; - - // Generate Galois field lookup tables - $rs->index_of[0] = $A0; // log(zero) = -inf - $rs->alpha_to[$A0] = 0; // alpha**-inf = 0 - $sr = 1; - - for($i=0; $i<$rs->nn; $i++) { - $rs->index_of[$sr] = $i; - $rs->alpha_to[$i] = $sr; - $sr <<= 1; - if($sr & (1<<$symsize)) { - $sr ^= $gfpoly; - } - $sr &= $rs->nn; - } - - if($sr != 1){ - // field generator polynomial is not primitive! - $rs = NULL; - return $rs; - } - - /* Form RS code generator polynomial from its roots */ - $rs->genpoly = array_fill(0, $nroots+1, 0); - - $rs->fcr = $fcr; - $rs->prim = $prim; - $rs->nroots = $nroots; - $rs->gfpoly = $gfpoly; - - /* Find prim-th root of 1, used in decoding */ - for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn) - ; // intentional empty-body loop! - - $rs->iprim = (int)($iprim / $prim); - $rs->genpoly[0] = 1; - - for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) { - $rs->genpoly[$i+1] = 1; - - // Multiply rs->genpoly[] by @**(root + x) - for ($j = $i; $j > 0; $j--) { - if ($rs->genpoly[$j] != 0) { - $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)]; - } else { - $rs->genpoly[$j] = $rs->genpoly[$j-1]; - } - } - // rs->genpoly[0] can never be zero - $rs->genpoly[0] = $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[0]] + $root)]; - } - - // convert rs->genpoly[] to index form for quicker encoding - for ($i = 0; $i <= $nroots; $i++) - $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]]; - - return $rs; - } - - //---------------------------------------------------------------------- - public function encode_rs_char($data, &$parity) - { - $MM =& $this->mm; - $NN =& $this->nn; - $ALPHA_TO =& $this->alpha_to; - $INDEX_OF =& $this->index_of; - $GENPOLY =& $this->genpoly; - $NROOTS =& $this->nroots; - $FCR =& $this->fcr; - $PRIM =& $this->prim; - $IPRIM =& $this->iprim; - $PAD =& $this->pad; - $A0 =& $NN; - - $parity = array_fill(0, $NROOTS, 0); - - for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) { - - $feedback = $INDEX_OF[$data[$i] ^ $parity[0]]; - if($feedback != $A0) { - // feedback term is non-zero - - // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must - // always be for the polynomials constructed by init_rs() - $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback); - - for($j=1;$j<$NROOTS;$j++) { - $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])]; - } - } - - // Shift - array_shift($parity); - if($feedback != $A0) { - array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]); - } else { - array_push($parity, 0); - } - } - } - } - - //########################################################################## - - class QRrs { - - public static $items = array(); - - //---------------------------------------------------------------------- - public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) - { - foreach(self::$items as $rs) { - if($rs->pad != $pad) continue; - if($rs->nroots != $nroots) continue; - if($rs->mm != $symsize) continue; - if($rs->gfpoly != $gfpoly) continue; - if($rs->fcr != $fcr) continue; - if($rs->prim != $prim) continue; - - return $rs; - } - - $rs = QRrsItem::init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad); - array_unshift(self::$items, $rs); - - return $rs; - } - } - - - -//---- qrmask.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Masking - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('N1', 3); - define('N2', 3); - define('N3', 40); - define('N4', 10); - - class QRmask { - - public $runLength = array(); - - //---------------------------------------------------------------------- - public function __construct() - { - $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); - } - - //---------------------------------------------------------------------- - public function writeFormatInformation($width, &$frame, $mask, $level) - { - $blacks = 0; - $format = QRspec::getFormatInfo($mask, $level); - - for($i=0; $i<8; $i++) { - if($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - - $frame[8][$width - 1 - $i] = chr($v); - if($i < 6) { - $frame[$i][8] = chr($v); - } else { - $frame[$i + 1][8] = chr($v); - } - $format = $format >> 1; - } - - for($i=0; $i<7; $i++) { - if($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - - $frame[$width - 7 + $i][8] = chr($v); - if($i == 0) { - $frame[8][7] = chr($v); - } else { - $frame[8][6 - $i] = chr($v); - } - - $format = $format >> 1; - } - - return $blacks; - } - - //---------------------------------------------------------------------- - public function mask0($x, $y) { return ($x+$y)&1; } - public function mask1($x, $y) { return ($y&1); } - public function mask2($x, $y) { return ($x%3); } - public function mask3($x, $y) { return ($x+$y)%3; } - public function mask4($x, $y) { return (((int)($y/2))+((int)($x/3)))&1; } - public function mask5($x, $y) { return (($x*$y)&1)+($x*$y)%3; } - public function mask6($x, $y) { return ((($x*$y)&1)+($x*$y)%3)&1; } - public function mask7($x, $y) { return ((($x*$y)%3)+(($x+$y)&1))&1; } - - //---------------------------------------------------------------------- - private function generateMaskNo($maskNo, $width, $frame) - { - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - - for($y=0; $y<$width; $y++) { - for($x=0; $x<$width; $x++) { - if(ord($frame[$y][$x]) & 0x80) { - $bitMask[$y][$x] = 0; - } else { - $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y); - $bitMask[$y][$x] = ($maskFunc == 0)?1:0; - } - - } - } - - return $bitMask; - } - - //---------------------------------------------------------------------- - public static function serial($bitFrame) - { - $codeArr = array(); - - foreach ($bitFrame as $line) - $codeArr[] = join('', $line); - - return gzcompress(join("\n", $codeArr), 9); - } - - //---------------------------------------------------------------------- - public static function unserial($code) - { - $codeArr = array(); - - $codeLines = explode("\n", gzuncompress($code)); - foreach ($codeLines as $line) - $codeArr[] = str_split($line); - - return $codeArr; - } - - //---------------------------------------------------------------------- - public function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false) - { - $b = 0; - $bitMask = array(); - - $fileName = QR_CACHE_DIR.'mask_'.$maskNo.DIRECTORY_SEPARATOR.'mask_'.$width.'_'.$maskNo.'.dat'; - - if (QR_CACHEABLE) { - if (file_exists($fileName)) { - $bitMask = self::unserial(file_get_contents($fileName)); - } else { - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - if (!file_exists(QR_CACHE_DIR.'mask_'.$maskNo)) - mkdir(QR_CACHE_DIR.'mask_'.$maskNo); - file_put_contents($fileName, self::serial($bitMask)); - } - } else { - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - } - - if ($maskGenOnly) - return; - - $d = $s; - - for($y=0; $y<$width; $y++) { - for($x=0; $x<$width; $x++) { - if($bitMask[$y][$x] == 1) { - $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]); - } - $b += (int)(ord($d[$y][$x]) & 1); - } - } - - return $b; - } - - //---------------------------------------------------------------------- - public function makeMask($width, $frame, $maskNo, $level) - { - $masked = array_fill(0, $width, str_repeat("\0", $width)); - $this->makeMaskNo($maskNo, $width, $frame, $masked); - $this->writeFormatInformation($width, $masked, $maskNo, $level); - - return $masked; - } - - //---------------------------------------------------------------------- - public function calcN1N3($length) - { - $demerit = 0; - - for($i=0; $i<$length; $i++) { - - if($this->runLength[$i] >= 5) { - $demerit += (N1 + ($this->runLength[$i] - 5)); - } - if($i & 1) { - if(($i >= 3) && ($i < ($length-2)) && ($this->runLength[$i] % 3 == 0)) { - $fact = (int)($this->runLength[$i] / 3); - if(($this->runLength[$i-2] == $fact) && - ($this->runLength[$i-1] == $fact) && - ($this->runLength[$i+1] == $fact) && - ($this->runLength[$i+2] == $fact)) { - if(($this->runLength[$i-3] < 0) || ($this->runLength[$i-3] >= (4 * $fact))) { - $demerit += N3; - } else if((($i+3) >= $length) || ($this->runLength[$i+3] >= (4 * $fact))) { - $demerit += N3; - } - } - } - } - } - return $demerit; - } - - //---------------------------------------------------------------------- - public function evaluateSymbol($width, $frame) - { - $head = 0; - $demerit = 0; - - for($y=0; $y<$width; $y++) { - $head = 0; - $this->runLength[0] = 1; - - $frameY = $frame[$y]; - - if ($y>0) - $frameYM = $frame[$y-1]; - - for($x=0; $x<$width; $x++) { - if(($x > 0) && ($y > 0)) { - $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]); - $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]); - - if(($b22 | ($w22 ^ 1))&1) { - $demerit += N2; - } - } - if(($x == 0) && (ord($frameY[$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } else if($x > 0) { - if((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - - $demerit += $this->calcN1N3($head+1); - } - - for($x=0; $x<$width; $x++) { - $head = 0; - $this->runLength[0] = 1; - - for($y=0; $y<$width; $y++) { - if($y == 0 && (ord($frame[$y][$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } else if($y > 0) { - if((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - - $demerit += $this->calcN1N3($head+1); - } - - return $demerit; - } - - - //---------------------------------------------------------------------- - public function mask($width, $frame, $level) - { - $minDemerit = PHP_INT_MAX; - $bestMaskNum = 0; - $bestMask = array(); - - $checked_masks = array(0,1,2,3,4,5,6,7); - - if (QR_FIND_FROM_RANDOM !== false) { - - $howManuOut = 8-(QR_FIND_FROM_RANDOM % 9); - for ($i = 0; $i < $howManuOut; $i++) { - $remPos = rand (0, count($checked_masks)-1); - unset($checked_masks[$remPos]); - $checked_masks = array_values($checked_masks); - } - - } - - $bestMask = $frame; - - foreach($checked_masks as $i) { - $mask = array_fill(0, $width, str_repeat("\0", $width)); - - $demerit = 0; - $blacks = 0; - $blacks = $this->makeMaskNo($i, $width, $frame, $mask); - $blacks += $this->writeFormatInformation($width, $mask, $i, $level); - $blacks = (int)(100 * $blacks / ($width * $width)); - $demerit = (int)((int)(abs($blacks - 50) / 5) * N4); - $demerit += $this->evaluateSymbol($width, $mask); - - if($demerit < $minDemerit) { - $minDemerit = $demerit; - $bestMask = $mask; - $bestMaskNum = $i; - } - } - - return $bestMask; - } - - //---------------------------------------------------------------------- - } - - - - -//---- qrencode.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Main encoder classes. - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net> - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm> - * - * 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; either - * version 3 of the License, or 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. 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRrsblock { - public $dataLength; - public $data = array(); - public $eccLength; - public $ecc = array(); - - public function __construct($dl, $data, $el, &$ecc, QRrsItem $rs) - { - $rs->encode_rs_char($data, $ecc); - - $this->dataLength = $dl; - $this->data = $data; - $this->eccLength = $el; - $this->ecc = $ecc; - } - }; - - //########################################################################## - - class QRrawcode { - public $version; - public $datacode = array(); - public $ecccode = array(); - public $blocks; - public $rsblocks = array(); //of RSblock - public $count; - public $dataLength; - public $eccLength; - public $b1; - - //---------------------------------------------------------------------- - public function __construct(QRinput $input) - { - $spec = array(0,0,0,0,0); - - $this->datacode = $input->getByteStream(); - if(is_null($this->datacode)) { - throw new Exception('null imput string'); - } - - QRspec::getEccSpec($input->getVersion(), $input->getErrorCorrectionLevel(), $spec); - - $this->version = $input->getVersion(); - $this->b1 = QRspec::rsBlockNum1($spec); - $this->dataLength = QRspec::rsDataLength($spec); - $this->eccLength = QRspec::rsEccLength($spec); - $this->ecccode = array_fill(0, $this->eccLength, 0); - $this->blocks = QRspec::rsBlockNum($spec); - - $ret = $this->init($spec); - if($ret < 0) { - throw new Exception('block alloc error'); - return null; - } - - $this->count = 0; - } - - //---------------------------------------------------------------------- - public function init(array $spec) - { - $dl = QRspec::rsDataCodes1($spec); - $el = QRspec::rsEccCodes1($spec); - $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - - - $blockNo = 0; - $dataPos = 0; - $eccPos = 0; - for($i=0; $i<QRspec::rsBlockNum1($spec); $i++) { - $ecc = array_slice($this->ecccode,$eccPos); - $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs); - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - - if(QRspec::rsBlockNum2($spec) == 0) - return 0; - - $dl = QRspec::rsDataCodes2($spec); - $el = QRspec::rsEccCodes2($spec); - $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - - if($rs == NULL) return -1; - - for($i=0; $i<QRspec::rsBlockNum2($spec); $i++) { - $ecc = array_slice($this->ecccode,$eccPos); - $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs); - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - - return 0; - } - - //---------------------------------------------------------------------- - public function getCode() - { - $ret; - - if($this->count < $this->dataLength) { - $row = $this->count % $this->blocks; - $col = $this->count / $this->blocks; - if($col >= $this->rsblocks[0]->dataLength) { - $row += $this->b1; - } - $ret = $this->rsblocks[$row]->data[$col]; - } else if($this->count < $this->dataLength + $this->eccLength) { - $row = ($this->count - $this->dataLength) % $this->blocks; - $col = ($this->count - $this->dataLength) / $this->blocks; - $ret = $this->rsblocks[$row]->ecc[$col]; - } else { - return 0; - } - $this->count++; - - return $ret; - } - } - - //########################################################################## - - class QRcode { - - public $version; - public $width; - public $data; - - //---------------------------------------------------------------------- - public function encodeMask(QRinput $input, $mask) - { - if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) { - throw new Exception('wrong version'); - } - if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) { - throw new Exception('wrong level'); - } - - $raw = new QRrawcode($input); - - QRtools::markTime('after_raw'); - - $version = $raw->version; - $width = QRspec::getWidth($version); - $frame = QRspec::newFrame($version); - - $filler = new FrameFiller($width, $frame); - if(is_null($filler)) { - return NULL; - } - - // inteleaved data and ecc codes - for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) { - $code = $raw->getCode(); - $bit = 0x80; - for($j=0; $j<8; $j++) { - $addr = $filler->next(); - $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0)); - $bit = $bit >> 1; - } - } - - QRtools::markTime('after_filler'); - - unset($raw); - - // remainder bits - $j = QRspec::getRemainder($version); - for($i=0; $i<$j; $i++) { - $addr = $filler->next(); - $filler->setFrameAt($addr, 0x02); - } - - $frame = $filler->frame; - unset($filler); - - - // masking - $maskObj = new QRmask(); - if($mask < 0) { - - if (QR_FIND_BEST_MASK) { - $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel()); - } else { - $masked = $maskObj->makeMask($width, $frame, (intval(QR_DEFAULT_MASK) % 8), $input->getErrorCorrectionLevel()); - } - } else { - $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel()); - } - - if($masked == NULL) { - return NULL; - } - - QRtools::markTime('after_mask'); - - $this->version = $version; - $this->width = $width; - $this->data = $masked; - - return $this; - } - - //---------------------------------------------------------------------- - public function encodeInput(QRinput $input) - { - return $this->encodeMask($input, -1); - } - - //---------------------------------------------------------------------- - public function encodeString8bit($string, $version, $level) - { - if(string == NULL) { - throw new Exception('empty string!'); - return NULL; - } - - $input = new QRinput($version, $level); - if($input == NULL) return NULL; - - $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string)); - if($ret < 0) { - unset($input); - return NULL; - } - return $this->encodeInput($input); - } - - //---------------------------------------------------------------------- - public function encodeString($string, $version, $level, $hint, $casesensitive) - { - - if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) { - throw new Exception('bad hint'); - return NULL; - } - - $input = new QRinput($version, $level); - if($input == NULL) return NULL; - - $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive); - if($ret < 0) { - return NULL; - } - - return $this->encodeInput($input); - } - - //---------------------------------------------------------------------- - public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encodePNG($text, $outfile, $saveandprint=false); - } - - //---------------------------------------------------------------------- - public static function text($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encode($text, $outfile); - } - - //---------------------------------------------------------------------- - public static function raw($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encodeRAW($text, $outfile); - } - } - - //########################################################################## - - class FrameFiller { - - public $width; - public $frame; - public $x; - public $y; - public $dir; - public $bit; - - //---------------------------------------------------------------------- - public function __construct($width, &$frame) - { - $this->width = $width; - $this->frame = $frame; - $this->x = $width - 1; - $this->y = $width - 1; - $this->dir = -1; - $this->bit = -1; - } - - //---------------------------------------------------------------------- - public function setFrameAt($at, $val) - { - $this->frame[$at['y']][$at['x']] = chr($val); - } - - //---------------------------------------------------------------------- - public function getFrameAt($at) - { - return ord($this->frame[$at['y']][$at['x']]); - } - - //---------------------------------------------------------------------- - public function next() - { - do { - - if($this->bit == -1) { - $this->bit = 0; - return array('x'=>$this->x, 'y'=>$this->y); - } - - $x = $this->x; - $y = $this->y; - $w = $this->width; - - if($this->bit == 0) { - $x--; - $this->bit++; - } else { - $x++; - $y += $this->dir; - $this->bit--; - } - - if($this->dir < 0) { - if($y < 0) { - $y = 0; - $x -= 2; - $this->dir = 1; - if($x == 6) { - $x--; - $y = 9; - } - } - } else { - if($y == $w) { - $y = $w - 1; - $x -= 2; - $this->dir = -1; - if($x == 6) { - $x--; - $y -= 8; - } - } - } - if($x < 0 || $y < 0) return null; - - $this->x = $x; - $this->y = $y; - - } while(ord($this->frame[$y][$x]) & 0x80); - - return array('x'=>$x, 'y'=>$y); - } - - } ; - - //########################################################################## - - class QRencode { - - public $casesensitive = true; - public $eightbit = false; - - public $version = 0; - public $size = 3; - public $margin = 4; - - public $structured = 0; // not supported yet - - public $level = QR_ECLEVEL_L; - public $hint = QR_MODE_8; - - //---------------------------------------------------------------------- - public static function factory($level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = new QRencode(); - $enc->size = $size; - $enc->margin = $margin; - - switch ($level.'') { - case '0': - case '1': - case '2': - case '3': - $enc->level = $level; - break; - case 'l': - case 'L': - $enc->level = QR_ECLEVEL_L; - break; - case 'm': - case 'M': - $enc->level = QR_ECLEVEL_M; - break; - case 'q': - case 'Q': - $enc->level = QR_ECLEVEL_Q; - break; - case 'h': - case 'H': - $enc->level = QR_ECLEVEL_H; - break; - } - - return $enc; - } - - //---------------------------------------------------------------------- - public function encodeRAW($intext, $outfile = false) - { - $code = new QRcode(); - - if($this->eightbit) { - $code->encodeString8bit($intext, $this->version, $this->level); - } else { - $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); - } - - return $code->data; - } - - //---------------------------------------------------------------------- - public function encode($intext, $outfile = false) - { - $code = new QRcode(); - - if($this->eightbit) { - $code->encodeString8bit($intext, $this->version, $this->level); - } else { - $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); - } - - QRtools::markTime('after_encode'); - - if ($outfile!== false) { - file_put_contents($outfile, join("\n", QRtools::binarize($code->data))); - } else { - return QRtools::binarize($code->data); - } - } - - //---------------------------------------------------------------------- - public function encodePNG($intext, $outfile = false,$saveandprint=false) - { - try { - - ob_start(); - $tab = $this->encode($intext); - $err = ob_get_contents(); - ob_end_clean(); - - if ($err != '') - QRtools::log($outfile, $err); - - $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin)); - - QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint); - - } catch (Exception $e) { - - QRtools::log($outfile, $e->getMessage()); - - } - } - } - - diff --git a/plugin/document/kod/app/sdks/lessc.class.php b/plugin/document/kod/app/sdks/lessc.class.php deleted file mode 100644 index 0699de52f..000000000 --- a/plugin/document/kod/app/sdks/lessc.class.php +++ /dev/null @@ -1,3675 +0,0 @@ -<?php - -/** - * lessphp v0.4.0 - * http://leafo.net/lessphp - * - * LESS css compiler, adapted from http://lesscss.org - * - * Copyright 2012, Leaf Corcoran <leafot@gmail.com> - * Licensed under MIT or GPLv3, see LICENSE - */ - - -/** - * The less compiler and parser. - * - * Converting LESS to CSS is a three stage process. The incoming file is parsed - * by `lessc_parser` into a syntax tree, then it is compiled into another tree - * representing the CSS structure by `lessc`. The CSS tree is fed into a - * formatter, like `lessc_formatter` which then outputs CSS as a string. - * - * During the first compile, all values are *reduced*, which means that their - * types are brought to the lowest form before being dump as strings. This - * handles math equations, variable dereferences, and the like. - * - * The `parse` function of `lessc` is the entry point. - * - * In summary: - * - * The `lessc` class creates an intstance of the parser, feeds it LESS code, - * then transforms the resulting tree to a CSS tree. This class also holds the - * evaluation context, such as all available mixins and variables at any given - * time. - * - * The `lessc_parser` class is only concerned with parsing its input. - * - * The `lessc_formatter` takes a CSS tree, and dumps it to a formatted string, - * handling things like indentation. - */ -class lessc { - static public $VERSION = "v0.4.0"; - static protected $TRUE = array("keyword", "true"); - static protected $FALSE = array("keyword", "false"); - - protected $libFunctions = array(); - protected $registeredVars = array(); - protected $preserveComments = false; - - public $vPrefix = '@'; // prefix of abstract properties - public $mPrefix = '$'; // prefix of abstract blocks - public $parentSelector = '&'; - - public $importDisabled = false; - public $importDir = ''; - - protected $numberPrecision = null; - - protected $allParsedFiles = array(); - - // set to the parser that generated the current line when compiling - // so we know how to create error messages - protected $sourceParser = null; - protected $sourceLoc = null; - - static public $defaultValue = array("keyword", ""); - - static protected $nextImportId = 0; // uniquely identify imports - - // attempts to find the path of an import url, returns null for css files - protected function findImport($url) { - foreach ((array)$this->importDir as $dir) { - $full = $dir.(substr($dir, -1) != '/' ? '/' : '').$url; - if ($this->fileExists($file = $full.'.less') || $this->fileExists($file = $full)) { - return $file; - } - } - - return null; - } - - protected function fileExists($name) { - return is_file($name); - } - - static public function compressList($items, $delim) { - if (!isset($items[1]) && isset($items[0])) return $items[0]; - else return array('list', $delim, $items); - } - - static public function preg_quote($what) { - return preg_quote($what, '/'); - } - - protected function tryImport($importPath, $parentBlock, $out) { - if ($importPath[0] == "function" && $importPath[1] == "url") { - $importPath = $this->flattenList($importPath[2]); - } - - $str = $this->coerceString($importPath); - if ($str === null) return false; - - $url = $this->compileValue($this->lib_e($str)); - - // don't import if it ends in css - if (substr_compare($url, '.css', -4, 4) === 0) return false; - - $realPath = $this->findImport($url); - - if ($realPath === null) return false; - - if ($this->importDisabled) { - return array(false, "/* import disabled */"); - } - - if (isset($this->allParsedFiles[realpath($realPath)])) { - return array(false, null); - } - - $this->addParsedFile($realPath); - $parser = $this->makeParser($realPath); - $root = $parser->parse(file_get_contents($realPath)); - - // set the parents of all the block props - foreach ($root->props as $prop) { - if ($prop[0] == "block") { - $prop[1]->parent = $parentBlock; - } - } - - // copy mixins into scope, set their parents - // bring blocks from import into current block - // TODO: need to mark the source parser these came from this file - foreach ($root->children as $childName => $child) { - if (isset($parentBlock->children[$childName])) { - $parentBlock->children[$childName] = array_merge( - $parentBlock->children[$childName], - $child); - } else { - $parentBlock->children[$childName] = $child; - } - } - - $pi = pathinfo($realPath); - $dir = $pi["dirname"]; - - list($top, $bottom) = $this->sortProps($root->props, true); - $this->compileImportedProps($top, $parentBlock, $out, $parser, $dir); - - return array(true, $bottom, $parser, $dir); - } - - protected function compileImportedProps($props, $block, $out, $sourceParser, $importDir) { - $oldSourceParser = $this->sourceParser; - - $oldImport = $this->importDir; - - // TODO: this is because the importDir api is stupid - $this->importDir = (array)$this->importDir; - array_unshift($this->importDir, $importDir); - - foreach ($props as $prop) { - $this->compileProp($prop, $block, $out); - } - - $this->importDir = $oldImport; - $this->sourceParser = $oldSourceParser; - } - - /** - * Recursively compiles a block. - * - * A block is analogous to a CSS block in most cases. A single LESS document - * is encapsulated in a block when parsed, but it does not have parent tags - * so all of it's children appear on the root level when compiled. - * - * Blocks are made up of props and children. - * - * Props are property instructions, array tuples which describe an action - * to be taken, eg. write a property, set a variable, mixin a block. - * - * The children of a block are just all the blocks that are defined within. - * This is used to look up mixins when performing a mixin. - * - * Compiling the block involves pushing a fresh environment on the stack, - * and iterating through the props, compiling each one. - * - * See lessc::compileProp() - * - */ - protected function compileBlock($block) { - switch ($block->type) { - case "root": - $this->compileRoot($block); - break; - case null: - $this->compileCSSBlock($block); - break; - case "media": - $this->compileMedia($block); - break; - case "directive": - $name = "@" . $block->name; - if (!empty($block->value)) { - $name .= " " . $this->compileValue($this->reduce($block->value)); - } - - $this->compileNestedBlock($block, array($name)); - break; - default: - $this->throwError("unknown block type: $block->type\n"); - } - } - - protected function compileCSSBlock($block) { - $env = $this->pushEnv(); - - $selectors = $this->compileSelectors($block->tags); - $env->selectors = $this->multiplySelectors($selectors); - $out = $this->makeOutputBlock(null, $env->selectors); - - $this->scope->children[] = $out; - $this->compileProps($block, $out); - - $block->scope = $env; // mixins carry scope with them! - $this->popEnv(); - } - - protected function compileMedia($media) { - $env = $this->pushEnv($media); - $parentScope = $this->mediaParent($this->scope); - - $query = $this->compileMediaQuery($this->multiplyMedia($env)); - - $this->scope = $this->makeOutputBlock($media->type, array($query)); - $parentScope->children[] = $this->scope; - - $this->compileProps($media, $this->scope); - - if (count($this->scope->lines) > 0) { - $orphanSelelectors = $this->findClosestSelectors(); - if (!is_null($orphanSelelectors)) { - $orphan = $this->makeOutputBlock(null, $orphanSelelectors); - $orphan->lines = $this->scope->lines; - array_unshift($this->scope->children, $orphan); - $this->scope->lines = array(); - } - } - - $this->scope = $this->scope->parent; - $this->popEnv(); - } - - protected function mediaParent($scope) { - while (!empty($scope->parent)) { - if (!empty($scope->type) && $scope->type != "media") { - break; - } - $scope = $scope->parent; - } - - return $scope; - } - - protected function compileNestedBlock($block, $selectors) { - $this->pushEnv($block); - $this->scope = $this->makeOutputBlock($block->type, $selectors); - $this->scope->parent->children[] = $this->scope; - - $this->compileProps($block, $this->scope); - - $this->scope = $this->scope->parent; - $this->popEnv(); - } - - protected function compileRoot($root) { - $this->pushEnv(); - $this->scope = $this->makeOutputBlock($root->type); - $this->compileProps($root, $this->scope); - $this->popEnv(); - } - - protected function compileProps($block, $out) { - foreach ($this->sortProps($block->props) as $prop) { - $this->compileProp($prop, $block, $out); - } - - $out->lines = array_values(array_unique($out->lines)); - } - - protected function sortProps($props, $split = false) { - $vars = array(); - $imports = array(); - $other = array(); - - foreach ($props as $prop) { - switch ($prop[0]) { - case "assign": - if (isset($prop[1][0]) && $prop[1][0] == $this->vPrefix) { - $vars[] = $prop; - } else { - $other[] = $prop; - } - break; - case "import": - $id = self::$nextImportId++; - $prop[] = $id; - $imports[] = $prop; - $other[] = array("import_mixin", $id); - break; - default: - $other[] = $prop; - } - } - - if ($split) { - return array(array_merge($vars, $imports), $other); - } else { - return array_merge($vars, $imports, $other); - } - } - - protected function compileMediaQuery($queries) { - $compiledQueries = array(); - foreach ($queries as $query) { - $parts = array(); - foreach ($query as $q) { - switch ($q[0]) { - case "mediaType": - $parts[] = implode(" ", array_slice($q, 1)); - break; - case "mediaExp": - if (isset($q[2])) { - $parts[] = "($q[1]: " . - $this->compileValue($this->reduce($q[2])) . ")"; - } else { - $parts[] = "($q[1])"; - } - break; - case "variable": - $parts[] = $this->compileValue($this->reduce($q)); - break; - } - } - - if (count($parts) > 0) { - $compiledQueries[] = implode(" and ", $parts); - } - } - - $out = "@media"; - if (!empty($parts)) { - $out .= " " . - implode($this->formatter->selectorSeparator, $compiledQueries); - } - return $out; - } - - protected function multiplyMedia($env, $childQueries = null) { - if (is_null($env) || - !empty($env->block->type) && $env->block->type != "media") - { - return $childQueries; - } - - // plain old block, skip - if (empty($env->block->type)) { - return $this->multiplyMedia($env->parent, $childQueries); - } - - $out = array(); - $queries = $env->block->queries; - if (is_null($childQueries)) { - $out = $queries; - } else { - foreach ($queries as $parent) { - foreach ($childQueries as $child) { - $out[] = array_merge($parent, $child); - } - } - } - - return $this->multiplyMedia($env->parent, $out); - } - - protected function expandParentSelectors(&$tag, $replace) { - $parts = explode("$&$", $tag); - $count = 0; - foreach ($parts as &$part) { - $part = str_replace($this->parentSelector, $replace, $part, $c); - $count += $c; - } - $tag = implode($this->parentSelector, $parts); - return $count; - } - - protected function findClosestSelectors() { - $env = $this->env; - $selectors = null; - while ($env !== null) { - if (isset($env->selectors)) { - $selectors = $env->selectors; - break; - } - $env = $env->parent; - } - - return $selectors; - } - - - // multiply $selectors against the nearest selectors in env - protected function multiplySelectors($selectors) { - // find parent selectors - - $parentSelectors = $this->findClosestSelectors(); - if (is_null($parentSelectors)) { - // kill parent reference in top level selector - foreach ($selectors as &$s) { - $this->expandParentSelectors($s, ""); - } - - return $selectors; - } - - $out = array(); - foreach ($parentSelectors as $parent) { - foreach ($selectors as $child) { - $count = $this->expandParentSelectors($child, $parent); - - // don't prepend the parent tag if & was used - if ($count > 0) { - $out[] = trim($child); - } else { - $out[] = trim($parent . ' ' . $child); - } - } - } - - return $out; - } - - // reduces selector expressions - protected function compileSelectors($selectors) { - $out = array(); - - foreach ($selectors as $s) { - if (is_array($s)) { - list(, $value) = $s; - $out[] = trim($this->compileValue($this->reduce($value))); - } else { - $out[] = $s; - } - } - - return $out; - } - - protected function eq($left, $right) { - return $left == $right; - } - - protected function patternMatch($block, $orderedArgs, $keywordArgs) { - // match the guards if it has them - // any one of the groups must have all its guards pass for a match - if (!empty($block->guards)) { - $groupPassed = false; - foreach ($block->guards as $guardGroup) { - foreach ($guardGroup as $guard) { - $this->pushEnv(); - $this->zipSetArgs($block->args, $orderedArgs, $keywordArgs); - - $negate = false; - if ($guard[0] == "negate") { - $guard = $guard[1]; - $negate = true; - } - - $passed = $this->reduce($guard) == self::$TRUE; - if ($negate) $passed = !$passed; - - $this->popEnv(); - - if ($passed) { - $groupPassed = true; - } else { - $groupPassed = false; - break; - } - } - - if ($groupPassed) break; - } - - if (!$groupPassed) { - return false; - } - } - - if (empty($block->args)) { - return $block->isVararg || empty($orderedArgs) && empty($keywordArgs); - } - - $remainingArgs = $block->args; - if ($keywordArgs) { - $remainingArgs = array(); - foreach ($block->args as $arg) { - if ($arg[0] == "arg" && isset($keywordArgs[$arg[1]])) { - continue; - } - - $remainingArgs[] = $arg; - } - } - - $i = -1; // no args - // try to match by arity or by argument literal - foreach ($remainingArgs as $i => $arg) { - switch ($arg[0]) { - case "lit": - if (empty($orderedArgs[$i]) || !$this->eq($arg[1], $orderedArgs[$i])) { - return false; - } - break; - case "arg": - // no arg and no default value - if (!isset($orderedArgs[$i]) && !isset($arg[2])) { - return false; - } - break; - case "rest": - $i--; // rest can be empty - break 2; - } - } - - if ($block->isVararg) { - return true; // not having enough is handled above - } else { - $numMatched = $i + 1; - // greater than becuase default values always match - return $numMatched >= count($orderedArgs); - } - } - - protected function patternMatchAll($blocks, $orderedArgs, $keywordArgs, $skip=array()) { - $matches = null; - foreach ($blocks as $block) { - // skip seen blocks that don't have arguments - if (isset($skip[$block->id]) && !isset($block->args)) { - continue; - } - - if ($this->patternMatch($block, $orderedArgs, $keywordArgs)) { - $matches[] = $block; - } - } - - return $matches; - } - - // attempt to find blocks matched by path and args - protected function findBlocks($searchIn, $path, $orderedArgs, $keywordArgs, $seen=array()) { - if ($searchIn == null) return null; - if (isset($seen[$searchIn->id])) return null; - $seen[$searchIn->id] = true; - - $name = $path[0]; - - if (isset($searchIn->children[$name])) { - $blocks = $searchIn->children[$name]; - if (count($path) == 1) { - $matches = $this->patternMatchAll($blocks, $orderedArgs, $keywordArgs, $seen); - if (!empty($matches)) { - // This will return all blocks that match in the closest - // scope that has any matching block, like lessjs - return $matches; - } - } else { - $matches = array(); - foreach ($blocks as $subBlock) { - $subMatches = $this->findBlocks($subBlock, - array_slice($path, 1), $orderedArgs, $keywordArgs, $seen); - - if (!is_null($subMatches)) { - foreach ($subMatches as $sm) { - $matches[] = $sm; - } - } - } - - return count($matches) > 0 ? $matches : null; - } - } - if ($searchIn->parent === $searchIn) return null; - return $this->findBlocks($searchIn->parent, $path, $orderedArgs, $keywordArgs, $seen); - } - - // sets all argument names in $args to either the default value - // or the one passed in through $values - protected function zipSetArgs($args, $orderedValues, $keywordValues) { - $assignedValues = array(); - - $i = 0; - foreach ($args as $a) { - if ($a[0] == "arg") { - if (isset($keywordValues[$a[1]])) { - // has keyword arg - $value = $keywordValues[$a[1]]; - } elseif (isset($orderedValues[$i])) { - // has ordered arg - $value = $orderedValues[$i]; - $i++; - } elseif (isset($a[2])) { - // has default value - $value = $a[2]; - } else { - $this->throwError("Failed to assign arg " . $a[1]); - $value = null; // :( - } - - $value = $this->reduce($value); - $this->set($a[1], $value); - $assignedValues[] = $value; - } else { - // a lit - $i++; - } - } - - // check for a rest - $last = end($args); - if ($last[0] == "rest") { - $rest = array_slice($orderedValues, count($args) - 1); - $this->set($last[1], $this->reduce(array("list", " ", $rest))); - } - - // wow is this the only true use of PHP's + operator for arrays? - $this->env->arguments = $assignedValues + $orderedValues; - } - - // compile a prop and update $lines or $blocks appropriately - protected function compileProp($prop, $block, $out) { - // set error position context - $this->sourceLoc = isset($prop[-1]) ? $prop[-1] : -1; - - switch ($prop[0]) { - case 'assign': - list(, $name, $value) = $prop; - if ($name[0] == $this->vPrefix) { - $this->set($name, $value); - } else { - $out->lines[] = $this->formatter->property($name, - $this->compileValue($this->reduce($value))); - } - break; - case 'block': - list(, $child) = $prop; - $this->compileBlock($child); - break; - case 'mixin': - list(, $path, $args, $suffix) = $prop; - - $orderedArgs = array(); - $keywordArgs = array(); - foreach ((array)$args as $arg) { - $argval = null; - switch ($arg[0]) { - case "arg": - if (!isset($arg[2])) { - $orderedArgs[] = $this->reduce(array("variable", $arg[1])); - } else { - $keywordArgs[$arg[1]] = $this->reduce($arg[2]); - } - break; - - case "lit": - $orderedArgs[] = $this->reduce($arg[1]); - break; - default: - $this->throwError("Unknown arg type: " . $arg[0]); - } - } - - $mixins = $this->findBlocks($block, $path, $orderedArgs, $keywordArgs); - - if ($mixins === null) { - // fwrite(STDERR,"failed to find block: ".implode(" > ", $path)."\n"); - break; // throw error here?? - } - - foreach ($mixins as $mixin) { - if ($mixin === $block && !$orderedArgs) { - continue; - } - - $haveScope = false; - if (isset($mixin->parent->scope)) { - $haveScope = true; - $mixinParentEnv = $this->pushEnv(); - $mixinParentEnv->storeParent = $mixin->parent->scope; - } - - $haveArgs = false; - if (isset($mixin->args)) { - $haveArgs = true; - $this->pushEnv(); - $this->zipSetArgs($mixin->args, $orderedArgs, $keywordArgs); - } - - $oldParent = $mixin->parent; - if ($mixin != $block) $mixin->parent = $block; - - foreach ($this->sortProps($mixin->props) as $subProp) { - if ($suffix !== null && - $subProp[0] == "assign" && - is_string($subProp[1]) && - $subProp[1]{0} != $this->vPrefix) - { - $subProp[2] = array( - 'list', ' ', - array($subProp[2], array('keyword', $suffix)) - ); - } - - $this->compileProp($subProp, $mixin, $out); - } - - $mixin->parent = $oldParent; - - if ($haveArgs) $this->popEnv(); - if ($haveScope) $this->popEnv(); - } - - break; - case 'raw': - $out->lines[] = $prop[1]; - break; - case "directive": - list(, $name, $value) = $prop; - $out->lines[] = "@$name " . $this->compileValue($this->reduce($value)).';'; - break; - case "comment": - $out->lines[] = $prop[1]; - break; - case "import"; - list(, $importPath, $importId) = $prop; - $importPath = $this->reduce($importPath); - - if (!isset($this->env->imports)) { - $this->env->imports = array(); - } - - $result = $this->tryImport($importPath, $block, $out); - - $this->env->imports[$importId] = $result === false ? - array(false, "@import " . $this->compileValue($importPath).";") : - $result; - - break; - case "import_mixin": - list(,$importId) = $prop; - $import = $this->env->imports[$importId]; - if ($import[0] === false) { - if (isset($import[1])) { - $out->lines[] = $import[1]; - } - } else { - list(, $bottom, $parser, $importDir) = $import; - $this->compileImportedProps($bottom, $block, $out, $parser, $importDir); - } - - break; - default: - $this->throwError("unknown op: {$prop[0]}\n"); - } - } - - - /** - * Compiles a primitive value into a CSS property value. - * - * Values in lessphp are typed by being wrapped in arrays, their format is - * typically: - * - * array(type, contents [, additional_contents]*) - * - * The input is expected to be reduced. This function will not work on - * things like expressions and variables. - */ - protected function compileValue($value) { - switch ($value[0]) { - case 'list': - // [1] - delimiter - // [2] - array of values - return implode($value[1], array_map(array($this, 'compileValue'), $value[2])); - case 'raw_color': - if (!empty($this->formatter->compressColors)) { - return $this->compileValue($this->coerceColor($value)); - } - return $value[1]; - case 'keyword': - // [1] - the keyword - return $value[1]; - case 'number': - list(, $num, $unit) = $value; - // [1] - the number - // [2] - the unit - if ($this->numberPrecision !== null) { - $num = round($num, $this->numberPrecision); - } - return $num . $unit; - case 'string': - // [1] - contents of string (includes quotes) - list(, $delim, $content) = $value; - foreach ($content as &$part) { - if (is_array($part)) { - $part = $this->compileValue($part); - } - } - return $delim . implode($content) . $delim; - case 'color': - // [1] - red component (either number or a %) - // [2] - green component - // [3] - blue component - // [4] - optional alpha component - list(, $r, $g, $b) = $value; - $r = round($r); - $g = round($g); - $b = round($b); - - if (count($value) == 5 && $value[4] != 1) { // rgba - return 'rgba('.$r.','.$g.','.$b.','.$value[4].')'; - } - - $h = sprintf("#%02x%02x%02x", $r, $g, $b); - - if (!empty($this->formatter->compressColors)) { - // Converting hex color to short notation (e.g. #003399 to #039) - if ($h[1] === $h[2] && $h[3] === $h[4] && $h[5] === $h[6]) { - $h = '#' . $h[1] . $h[3] . $h[5]; - } - } - - return $h; - - case 'function': - list(, $name, $args) = $value; - return $name.'('.$this->compileValue($args).')'; - default: // assumed to be unit - $this->throwError("unknown value type: $value[0]"); - } - } - - protected function lib_pow($args) { - list($base, $exp) = $this->assertArgs($args, 2, "pow"); - return pow($this->assertNumber($base), $this->assertNumber($exp)); - } - - protected function lib_pi() { - return pi(); - } - - protected function lib_mod($args) { - list($a, $b) = $this->assertArgs($args, 2, "mod"); - return $this->assertNumber($a) % $this->assertNumber($b); - } - - protected function lib_tan($num) { - return tan($this->assertNumber($num)); - } - - protected function lib_sin($num) { - return sin($this->assertNumber($num)); - } - - protected function lib_cos($num) { - return cos($this->assertNumber($num)); - } - - protected function lib_atan($num) { - $num = atan($this->assertNumber($num)); - return array("number", $num, "rad"); - } - - protected function lib_asin($num) { - $num = asin($this->assertNumber($num)); - return array("number", $num, "rad"); - } - - protected function lib_acos($num) { - $num = acos($this->assertNumber($num)); - return array("number", $num, "rad"); - } - - protected function lib_sqrt($num) { - return sqrt($this->assertNumber($num)); - } - - protected function lib_extract($value) { - list($list, $idx) = $this->assertArgs($value, 2, "extract"); - $idx = $this->assertNumber($idx); - // 1 indexed - if ($list[0] == "list" && isset($list[2][$idx - 1])) { - return $list[2][$idx - 1]; - } - } - - protected function lib_isnumber($value) { - return $this->toBool($value[0] == "number"); - } - - protected function lib_isstring($value) { - return $this->toBool($value[0] == "string"); - } - - protected function lib_iscolor($value) { - return $this->toBool($this->coerceColor($value)); - } - - protected function lib_iskeyword($value) { - return $this->toBool($value[0] == "keyword"); - } - - protected function lib_ispixel($value) { - return $this->toBool($value[0] == "number" && $value[2] == "px"); - } - - protected function lib_ispercentage($value) { - return $this->toBool($value[0] == "number" && $value[2] == "%"); - } - - protected function lib_isem($value) { - return $this->toBool($value[0] == "number" && $value[2] == "em"); - } - - protected function lib_isrem($value) { - return $this->toBool($value[0] == "number" && $value[2] == "rem"); - } - - protected function lib_rgbahex($color) { - $color = $this->coerceColor($color); - if (is_null($color)) - $this->throwError("color expected for rgbahex"); - - return sprintf("#%02x%02x%02x%02x", - isset($color[4]) ? $color[4]*255 : 255, - $color[1],$color[2], $color[3]); - } - - protected function lib_argb($color){ - return $this->lib_rgbahex($color); - } - - // utility func to unquote a string - protected function lib_e($arg) { - switch ($arg[0]) { - case "list": - $items = $arg[2]; - if (isset($items[0])) { - return $this->lib_e($items[0]); - } - return self::$defaultValue; - case "string": - $arg[1] = ""; - return $arg; - case "keyword": - return $arg; - default: - return array("keyword", $this->compileValue($arg)); - } - } - - protected function lib__sprintf($args) { - if ($args[0] != "list") return $args; - $values = $args[2]; - $string = array_shift($values); - $template = $this->compileValue($this->lib_e($string)); - - $i = 0; - if (preg_match_all('/%[dsa]/', $template, $m)) { - foreach ($m[0] as $match) { - $val = isset($values[$i]) ? - $this->reduce($values[$i]) : array('keyword', ''); - - // lessjs compat, renders fully expanded color, not raw color - if ($color = $this->coerceColor($val)) { - $val = $color; - } - - $i++; - $rep = $this->compileValue($this->lib_e($val)); - $template = preg_replace('/'.self::preg_quote($match).'/', - $rep, $template, 1); - } - } - - $d = $string[0] == "string" ? $string[1] : '"'; - return array("string", $d, array($template)); - } - - protected function lib_floor($arg) { - $value = $this->assertNumber($arg); - return array("number", floor($value), $arg[2]); - } - - protected function lib_ceil($arg) { - $value = $this->assertNumber($arg); - return array("number", ceil($value), $arg[2]); - } - - protected function lib_round($arg) { - $value = $this->assertNumber($arg); - return array("number", round($value), $arg[2]); - } - - protected function lib_unit($arg) { - if ($arg[0] == "list") { - list($number, $newUnit) = $arg[2]; - return array("number", $this->assertNumber($number), - $this->compileValue($this->lib_e($newUnit))); - } else { - return array("number", $this->assertNumber($arg), ""); - } - } - - /** - * Helper function to get arguments for color manipulation functions. - * takes a list that contains a color like thing and a percentage - */ - protected function colorArgs($args) { - if ($args[0] != 'list' || count($args[2]) < 2) { - return array(array('color', 0, 0, 0), 0); - } - list($color, $delta) = $args[2]; - $color = $this->assertColor($color); - $delta = floatval($delta[1]); - - return array($color, $delta); - } - - protected function lib_darken($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[3] = $this->clamp($hsl[3] - $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_lighten($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[3] = $this->clamp($hsl[3] + $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_saturate($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[2] = $this->clamp($hsl[2] + $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_desaturate($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[2] = $this->clamp($hsl[2] - $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_spin($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - - $hsl[1] = $hsl[1] + $delta % 360; - if ($hsl[1] < 0) $hsl[1] += 360; - - return $this->toRGB($hsl); - } - - protected function lib_fadeout($args) { - list($color, $delta) = $this->colorArgs($args); - $color[4] = $this->clamp((isset($color[4]) ? $color[4] : 1) - $delta/100); - return $color; - } - - protected function lib_fadein($args) { - list($color, $delta) = $this->colorArgs($args); - $color[4] = $this->clamp((isset($color[4]) ? $color[4] : 1) + $delta/100); - return $color; - } - - protected function lib_hue($color) { - $hsl = $this->toHSL($this->assertColor($color)); - return round($hsl[1]); - } - - protected function lib_saturation($color) { - $hsl = $this->toHSL($this->assertColor($color)); - return round($hsl[2]); - } - - protected function lib_lightness($color) { - $hsl = $this->toHSL($this->assertColor($color)); - return round($hsl[3]); - } - - // get the alpha of a color - // defaults to 1 for non-colors or colors without an alpha - protected function lib_alpha($value) { - if (!is_null($color = $this->coerceColor($value))) { - return isset($color[4]) ? $color[4] : 1; - } - } - - // set the alpha of the color - protected function lib_fade($args) { - list($color, $alpha) = $this->colorArgs($args); - $color[4] = $this->clamp($alpha / 100.0); - return $color; - } - - protected function lib_percentage($arg) { - $num = $this->assertNumber($arg); - return array("number", $num*100, "%"); - } - - // mixes two colors by weight - // mix(@color1, @color2, [@weight: 50%]); - // http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#mix-instance_method - protected function lib_mix($args) { - if ($args[0] != "list" || count($args[2]) < 2) - $this->throwError("mix expects (color1, color2, weight)"); - - list($first, $second) = $args[2]; - $first = $this->assertColor($first); - $second = $this->assertColor($second); - - $first_a = $this->lib_alpha($first); - $second_a = $this->lib_alpha($second); - - if (isset($args[2][2])) { - $weight = $args[2][2][1] / 100.0; - } else { - $weight = 0.5; - } - - $w = $weight * 2 - 1; - $a = $first_a - $second_a; - - $w1 = (($w * $a == -1 ? $w : ($w + $a)/(1 + $w * $a)) + 1) / 2.0; - $w2 = 1.0 - $w1; - - $new = array('color', - $w1 * $first[1] + $w2 * $second[1], - $w1 * $first[2] + $w2 * $second[2], - $w1 * $first[3] + $w2 * $second[3], - ); - - if ($first_a != 1.0 || $second_a != 1.0) { - $new[] = $first_a * $weight + $second_a * ($weight - 1); - } - - return $this->fixColor($new); - } - - protected function lib_contrast($args) { - if ($args[0] != 'list' || count($args[2]) < 3) { - return array(array('color', 0, 0, 0), 0); - } - - list($inputColor, $darkColor, $lightColor) = $args[2]; - - $inputColor = $this->assertColor($inputColor); - $darkColor = $this->assertColor($darkColor); - $lightColor = $this->assertColor($lightColor); - $hsl = $this->toHSL($inputColor); - - if ($hsl[3] > 50) { - return $darkColor; - } - - return $lightColor; - } - - protected function assertColor($value, $error = "expected color value") { - $color = $this->coerceColor($value); - if (is_null($color)) $this->throwError($error); - return $color; - } - - protected function assertNumber($value, $error = "expecting number") { - if ($value[0] == "number") return $value[1]; - $this->throwError($error); - } - - protected function assertArgs($value, $expectedArgs, $name="") { - if ($expectedArgs == 1) { - return $value; - } else { - if ($value[0] !== "list" || $value[1] != ",") $this->throwError("expecting list"); - $values = $value[2]; - $numValues = count($values); - if ($expectedArgs != $numValues) { - if ($name) { - $name = $name . ": "; - } - - $this->throwError("${name}expecting $expectedArgs arguments, got $numValues"); - } - - return $values; - } - } - - protected function toHSL($color) { - if ($color[0] == 'hsl') return $color; - - $r = $color[1] / 255; - $g = $color[2] / 255; - $b = $color[3] / 255; - - $min = min($r, $g, $b); - $max = max($r, $g, $b); - - $L = ($min + $max) / 2; - if ($min == $max) { - $S = $H = 0; - } else { - if ($L < 0.5) - $S = ($max - $min)/($max + $min); - else - $S = ($max - $min)/(2.0 - $max - $min); - - if ($r == $max) $H = ($g - $b)/($max - $min); - elseif ($g == $max) $H = 2.0 + ($b - $r)/($max - $min); - elseif ($b == $max) $H = 4.0 + ($r - $g)/($max - $min); - - } - - $out = array('hsl', - ($H < 0 ? $H + 6 : $H)*60, - $S*100, - $L*100, - ); - - if (count($color) > 4) $out[] = $color[4]; // copy alpha - return $out; - } - - protected function toRGB_helper($comp, $temp1, $temp2) { - if ($comp < 0) $comp += 1.0; - elseif ($comp > 1) $comp -= 1.0; - - if (6 * $comp < 1) return $temp1 + ($temp2 - $temp1) * 6 * $comp; - if (2 * $comp < 1) return $temp2; - if (3 * $comp < 2) return $temp1 + ($temp2 - $temp1)*((2/3) - $comp) * 6; - - return $temp1; - } - - /** - * Converts a hsl array into a color value in rgb. - * Expects H to be in range of 0 to 360, S and L in 0 to 100 - */ - protected function toRGB($color) { - if ($color[0] == 'color') return $color; - - $H = $color[1] / 360; - $S = $color[2] / 100; - $L = $color[3] / 100; - - if ($S == 0) { - $r = $g = $b = $L; - } else { - $temp2 = $L < 0.5 ? - $L*(1.0 + $S) : - $L + $S - $L * $S; - - $temp1 = 2.0 * $L - $temp2; - - $r = $this->toRGB_helper($H + 1/3, $temp1, $temp2); - $g = $this->toRGB_helper($H, $temp1, $temp2); - $b = $this->toRGB_helper($H - 1/3, $temp1, $temp2); - } - - // $out = array('color', round($r*255), round($g*255), round($b*255)); - $out = array('color', $r*255, $g*255, $b*255); - if (count($color) > 4) $out[] = $color[4]; // copy alpha - return $out; - } - - protected function clamp($v, $max = 1, $min = 0) { - return min($max, max($min, $v)); - } - - /** - * Convert the rgb, rgba, hsl color literals of function type - * as returned by the parser into values of color type. - */ - protected function funcToColor($func) { - $fname = $func[1]; - if ($func[2][0] != 'list') return false; // need a list of arguments - $rawComponents = $func[2][2]; - - if ($fname == 'hsl' || $fname == 'hsla') { - $hsl = array('hsl'); - $i = 0; - foreach ($rawComponents as $c) { - $val = $this->reduce($c); - $val = isset($val[1]) ? floatval($val[1]) : 0; - - if ($i == 0) $clamp = 360; - elseif ($i < 3) $clamp = 100; - else $clamp = 1; - - $hsl[] = $this->clamp($val, $clamp); - $i++; - } - - while (count($hsl) < 4) $hsl[] = 0; - return $this->toRGB($hsl); - - } elseif ($fname == 'rgb' || $fname == 'rgba') { - $components = array(); - $i = 1; - foreach ($rawComponents as $c) { - $c = $this->reduce($c); - if ($i < 4) { - if ($c[0] == "number" && $c[2] == "%") { - $components[] = 255 * ($c[1] / 100); - } else { - $components[] = floatval($c[1]); - } - } elseif ($i == 4) { - if ($c[0] == "number" && $c[2] == "%") { - $components[] = 1.0 * ($c[1] / 100); - } else { - $components[] = floatval($c[1]); - } - } else break; - - $i++; - } - while (count($components) < 3) $components[] = 0; - array_unshift($components, 'color'); - return $this->fixColor($components); - } - - return false; - } - - protected function reduce($value, $forExpression = false) { - switch ($value[0]) { - case "interpolate": - $reduced = $this->reduce($value[1]); - $var = $this->compileValue($reduced); - $res = $this->reduce(array("variable", $this->vPrefix . $var)); - - if ($res[0] == "raw_color") { - $res = $this->coerceColor($res); - } - - if (empty($value[2])) $res = $this->lib_e($res); - - return $res; - case "variable": - $key = $value[1]; - if (is_array($key)) { - $key = $this->reduce($key); - $key = $this->vPrefix . $this->compileValue($this->lib_e($key)); - } - - $seen =& $this->env->seenNames; - - if (!empty($seen[$key])) { - $this->throwError("infinite loop detected: $key"); - } - - $seen[$key] = true; - $out = $this->reduce($this->get($key, self::$defaultValue)); - $seen[$key] = false; - return $out; - case "list": - foreach ($value[2] as &$item) { - $item = $this->reduce($item, $forExpression); - } - return $value; - case "expression": - return $this->evaluate($value); - case "string": - foreach ($value[2] as &$part) { - if (is_array($part)) { - $strip = $part[0] == "variable"; - $part = $this->reduce($part); - if ($strip) $part = $this->lib_e($part); - } - } - return $value; - case "escape": - list(,$inner) = $value; - return $this->lib_e($this->reduce($inner)); - case "function": - $color = $this->funcToColor($value); - if ($color) return $color; - - list(, $name, $args) = $value; - if ($name == "%") $name = "_sprintf"; - $f = isset($this->libFunctions[$name]) ? - $this->libFunctions[$name] : array($this, 'lib_'.$name); - - if (is_callable($f)) { - if ($args[0] == 'list') - $args = self::compressList($args[2], $args[1]); - - $ret = call_user_func($f, $this->reduce($args, true), $this); - - if (is_null($ret)) { - return array("string", "", array( - $name, "(", $args, ")" - )); - } - - // convert to a typed value if the result is a php primitive - if (is_numeric($ret)) $ret = array('number', $ret, ""); - elseif (!is_array($ret)) $ret = array('keyword', $ret); - - return $ret; - } - - // plain function, reduce args - $value[2] = $this->reduce($value[2]); - return $value; - case "unary": - list(, $op, $exp) = $value; - $exp = $this->reduce($exp); - - if ($exp[0] == "number") { - switch ($op) { - case "+": - return $exp; - case "-": - $exp[1] *= -1; - return $exp; - } - } - return array("string", "", array($op, $exp)); - } - - if ($forExpression) { - switch ($value[0]) { - case "keyword": - if ($color = $this->coerceColor($value)) { - return $color; - } - break; - case "raw_color": - return $this->coerceColor($value); - } - } - - return $value; - } - - - // coerce a value for use in color operation - protected function coerceColor($value) { - switch($value[0]) { - case 'color': return $value; - case 'raw_color': - $c = array("color", 0, 0, 0); - $colorStr = substr($value[1], 1); - $num = hexdec($colorStr); - $width = strlen($colorStr) == 3 ? 16 : 256; - - for ($i = 3; $i > 0; $i--) { // 3 2 1 - $t = $num % $width; - $num /= $width; - - $c[$i] = $t * (256/$width) + $t * floor(16/$width); - } - - return $c; - case 'keyword': - $name = $value[1]; - if (isset(self::$cssColors[$name])) { - $rgba = explode(',', self::$cssColors[$name]); - - if(isset($rgba[3])) - return array('color', $rgba[0], $rgba[1], $rgba[2], $rgba[3]); - - return array('color', $rgba[0], $rgba[1], $rgba[2]); - } - return null; - } - } - - // make something string like into a string - protected function coerceString($value) { - switch ($value[0]) { - case "string": - return $value; - case "keyword": - return array("string", "", array($value[1])); - } - return null; - } - - // turn list of length 1 into value type - protected function flattenList($value) { - if ($value[0] == "list" && count($value[2]) == 1) { - return $this->flattenList($value[2][0]); - } - return $value; - } - - protected function toBool($a) { - if ($a) return self::$TRUE; - else return self::$FALSE; - } - - // evaluate an expression - protected function evaluate($exp) { - list(, $op, $left, $right, $whiteBefore, $whiteAfter) = $exp; - - $left = $this->reduce($left, true); - $right = $this->reduce($right, true); - - if ($leftColor = $this->coerceColor($left)) { - $left = $leftColor; - } - - if ($rightColor = $this->coerceColor($right)) { - $right = $rightColor; - } - - $ltype = $left[0]; - $rtype = $right[0]; - - // operators that work on all types - if ($op == "and") { - return $this->toBool($left == self::$TRUE && $right == self::$TRUE); - } - - if ($op == "=") { - return $this->toBool($this->eq($left, $right) ); - } - - if ($op == "+" && !is_null($str = $this->stringConcatenate($left, $right))) { - return $str; - } - - // type based operators - $fname = "op_${ltype}_${rtype}"; - if (is_callable(array($this, $fname))) { - $out = $this->$fname($op, $left, $right); - if (!is_null($out)) return $out; - } - - // make the expression look it did before being parsed - $paddedOp = $op; - if ($whiteBefore) $paddedOp = " " . $paddedOp; - if ($whiteAfter) $paddedOp .= " "; - - return array("string", "", array($left, $paddedOp, $right)); - } - - protected function stringConcatenate($left, $right) { - if ($strLeft = $this->coerceString($left)) { - if ($right[0] == "string") { - $right[1] = ""; - } - $strLeft[2][] = $right; - return $strLeft; - } - - if ($strRight = $this->coerceString($right)) { - array_unshift($strRight[2], $left); - return $strRight; - } - } - - - // make sure a color's components don't go out of bounds - protected function fixColor($c) { - foreach (range(1, 3) as $i) { - if ($c[$i] < 0) $c[$i] = 0; - if ($c[$i] > 255) $c[$i] = 255; - } - - return $c; - } - - protected function op_number_color($op, $lft, $rgt) { - if ($op == '+' || $op == '*') { - return $this->op_color_number($op, $rgt, $lft); - } - } - - protected function op_color_number($op, $lft, $rgt) { - if ($rgt[0] == '%') $rgt[1] /= 100; - - return $this->op_color_color($op, $lft, - array_fill(1, count($lft) - 1, $rgt[1])); - } - - protected function op_color_color($op, $left, $right) { - $out = array('color'); - $max = count($left) > count($right) ? count($left) : count($right); - foreach (range(1, $max - 1) as $i) { - $lval = isset($left[$i]) ? $left[$i] : 0; - $rval = isset($right[$i]) ? $right[$i] : 0; - switch ($op) { - case '+': - $out[] = $lval + $rval; - break; - case '-': - $out[] = $lval - $rval; - break; - case '*': - $out[] = $lval * $rval; - break; - case '%': - $out[] = $lval % $rval; - break; - case '/': - if ($rval == 0) $this->throwError("evaluate error: can't divide by zero"); - $out[] = $lval / $rval; - break; - default: - $this->throwError('evaluate error: color op number failed on op '.$op); - } - } - return $this->fixColor($out); - } - - function lib_red($color){ - $color = $this->coerceColor($color); - if (is_null($color)) { - $this->throwError('color expected for red()'); - } - - return $color[1]; - } - - function lib_green($color){ - $color = $this->coerceColor($color); - if (is_null($color)) { - $this->throwError('color expected for green()'); - } - - return $color[2]; - } - - function lib_blue($color){ - $color = $this->coerceColor($color); - if (is_null($color)) { - $this->throwError('color expected for blue()'); - } - - return $color[3]; - } - - - // operator on two numbers - protected function op_number_number($op, $left, $right) { - $unit = empty($left[2]) ? $right[2] : $left[2]; - - $value = 0; - switch ($op) { - case '+': - $value = $left[1] + $right[1]; - break; - case '*': - $value = $left[1] * $right[1]; - break; - case '-': - $value = $left[1] - $right[1]; - break; - case '%': - $value = $left[1] % $right[1]; - break; - case '/': - if ($right[1] == 0) $this->throwError('parse error: divide by zero'); - $value = $left[1] / $right[1]; - break; - case '<': - return $this->toBool($left[1] < $right[1]); - case '>': - return $this->toBool($left[1] > $right[1]); - case '>=': - return $this->toBool($left[1] >= $right[1]); - case '=<': - return $this->toBool($left[1] <= $right[1]); - default: - $this->throwError('parse error: unknown number operator: '.$op); - } - - return array("number", $value, $unit); - } - - - /* environment functions */ - - protected function makeOutputBlock($type, $selectors = null) { - $b = new stdclass; - $b->lines = array(); - $b->children = array(); - $b->selectors = $selectors; - $b->type = $type; - $b->parent = $this->scope; - return $b; - } - - // the state of execution - protected function pushEnv($block = null) { - $e = new stdclass; - $e->parent = $this->env; - $e->store = array(); - $e->block = $block; - - $this->env = $e; - return $e; - } - - // pop something off the stack - protected function popEnv() { - $old = $this->env; - $this->env = $this->env->parent; - return $old; - } - - // set something in the current env - protected function set($name, $value) { - $this->env->store[$name] = $value; - } - - - // get the highest occurrence entry for a name - protected function get($name, $default=null) { - $current = $this->env; - - $isArguments = $name == $this->vPrefix . 'arguments'; - while ($current) { - if ($isArguments && isset($current->arguments)) { - return array('list', ' ', $current->arguments); - } - - if (isset($current->store[$name])) - return $current->store[$name]; - else { - $current = isset($current->storeParent) ? - $current->storeParent : $current->parent; - } - } - - return $default; - } - - // inject array of unparsed strings into environment as variables - protected function injectVariables($args) { - $this->pushEnv(); - $parser = new lessc_parser($this, __METHOD__); - foreach ($args as $name => $strValue) { - if ($name{0} != '@') $name = '@'.$name; - $parser->count = 0; - $parser->buffer = (string)$strValue; - if (!$parser->propertyValue($value)) { - throw new Exception("failed to parse passed in variable $name: $strValue"); - } - - $this->set($name, $value); - } - } - - /** - * Initialize any static state, can initialize parser for a file - * $opts isn't used yet - */ - public function __construct($fname = null) { - if ($fname !== null) { - // used for deprecated parse method - $this->_parseFile = $fname; - } - } - - public function compile($string, $name = null) { - $locale = setlocale(LC_NUMERIC, 0); - setlocale(LC_NUMERIC, "C"); - - $this->parser = $this->makeParser($name); - $root = $this->parser->parse($string); - - $this->env = null; - $this->scope = null; - - $this->formatter = $this->newFormatter(); - - if (!empty($this->registeredVars)) { - $this->injectVariables($this->registeredVars); - } - - $this->sourceParser = $this->parser; // used for error messages - $this->compileBlock($root); - - ob_start(); - $this->formatter->block($this->scope); - $out = ob_get_clean(); - setlocale(LC_NUMERIC, $locale); - return $out; - } - - public function compileFile($fname, $outFname = null) { - if (!is_readable($fname)) { - throw new Exception('load error: failed to find '.$fname); - } - - $pi = pathinfo($fname); - - $oldImport = $this->importDir; - - $this->importDir = (array)$this->importDir; - $this->importDir[] = $pi['dirname'].'/'; - - $this->addParsedFile($fname); - - $out = $this->compile(file_get_contents($fname), $fname); - - $this->importDir = $oldImport; - - if ($outFname !== null) { - return file_put_contents($outFname, $out); - } - - return $out; - } - - // compile only if changed input has changed or output doesn't exist - public function checkedCompile($in, $out) { - if (!is_file($out) || filemtime($in) > filemtime($out)) { - $this->compileFile($in, $out); - return true; - } - return false; - } - - /** - * Execute lessphp on a .less file or a lessphp cache structure - * - * The lessphp cache structure contains information about a specific - * less file having been parsed. It can be used as a hint for future - * calls to determine whether or not a rebuild is required. - * - * The cache structure contains two important keys that may be used - * externally: - * - * compiled: The final compiled CSS - * updated: The time (in seconds) the CSS was last compiled - * - * The cache structure is a plain-ol' PHP associative array and can - * be serialized and unserialized without a hitch. - * - * @param mixed $in Input - * @param bool $force Force rebuild? - * @return array lessphp cache structure - */ - public function cachedCompile($in, $force = false) { - // assume no root - $root = null; - - if (is_string($in)) { - $root = $in; - } elseif (is_array($in) and isset($in['root'])) { - if ($force or ! isset($in['files'])) { - // If we are forcing a recompile or if for some reason the - // structure does not contain any file information we should - // specify the root to trigger a rebuild. - $root = $in['root']; - } elseif (isset($in['files']) and is_array($in['files'])) { - foreach ($in['files'] as $fname => $ftime ) { - if (!file_exists($fname) or filemtime($fname) > $ftime) { - // One of the files we knew about previously has changed - // so we should look at our incoming root again. - $root = $in['root']; - break; - } - } - } - } else { - // TODO: Throw an exception? We got neither a string nor something - // that looks like a compatible lessphp cache structure. - return null; - } - - if ($root !== null) { - // If we have a root value which means we should rebuild. - $out = array(); - $out['root'] = $root; - $out['compiled'] = $this->compileFile($root); - $out['files'] = $this->allParsedFiles(); - $out['updated'] = time(); - return $out; - } else { - // No changes, pass back the structure - // we were given initially. - return $in; - } - - } - - // parse and compile buffer - // This is deprecated - public function parse($str = null, $initialVariables = null) { - if (is_array($str)) { - $initialVariables = $str; - $str = null; - } - - $oldVars = $this->registeredVars; - if ($initialVariables !== null) { - $this->setVariables($initialVariables); - } - - if ($str == null) { - if (empty($this->_parseFile)) { - throw new exception("nothing to parse"); - } - - $out = $this->compileFile($this->_parseFile); - } else { - $out = $this->compile($str); - } - - $this->registeredVars = $oldVars; - return $out; - } - - protected function makeParser($name) { - $parser = new lessc_parser($this, $name); - $parser->writeComments = $this->preserveComments; - - return $parser; - } - - public function setFormatter($name) { - $this->formatterName = $name; - } - - protected function newFormatter() { - $className = "lessc_formatter_lessjs"; - if (!empty($this->formatterName)) { - if (!is_string($this->formatterName)) - return $this->formatterName; - $className = "lessc_formatter_$this->formatterName"; - } - - return new $className; - } - - public function setPreserveComments($preserve) { - $this->preserveComments = $preserve; - } - - public function registerFunction($name, $func) { - $this->libFunctions[$name] = $func; - } - - public function unregisterFunction($name) { - unset($this->libFunctions[$name]); - } - - public function setVariables($variables) { - $this->registeredVars = array_merge($this->registeredVars, $variables); - } - - public function unsetVariable($name) { - unset($this->registeredVars[$name]); - } - - public function setImportDir($dirs) { - $this->importDir = (array)$dirs; - } - - public function addImportDir($dir) { - $this->importDir = (array)$this->importDir; - $this->importDir[] = $dir; - } - - public function allParsedFiles() { - return $this->allParsedFiles; - } - - protected function addParsedFile($file) { - $this->allParsedFiles[realpath($file)] = filemtime($file); - } - - /** - * Uses the current value of $this->count to show line and line number - */ - protected function throwError($msg = null) { - if ($this->sourceLoc >= 0) { - $this->sourceParser->throwError($msg, $this->sourceLoc); - } - throw new exception($msg); - } - - // compile file $in to file $out if $in is newer than $out - // returns true when it compiles, false otherwise - public static function ccompile($in, $out, $less = null) { - if ($less === null) { - $less = new self; - } - return $less->checkedCompile($in, $out); - } - - public static function cexecute($in, $force = false, $less = null) { - if ($less === null) { - $less = new self; - } - return $less->cachedCompile($in, $force); - } - - static protected $cssColors = array( - 'aliceblue' => '240,248,255', - 'antiquewhite' => '250,235,215', - 'aqua' => '0,255,255', - 'aquamarine' => '127,255,212', - 'azure' => '240,255,255', - 'beige' => '245,245,220', - 'bisque' => '255,228,196', - 'black' => '0,0,0', - 'blanchedalmond' => '255,235,205', - 'blue' => '0,0,255', - 'blueviolet' => '138,43,226', - 'brown' => '165,42,42', - 'burlywood' => '222,184,135', - 'cadetblue' => '95,158,160', - 'chartreuse' => '127,255,0', - 'chocolate' => '210,105,30', - 'coral' => '255,127,80', - 'cornflowerblue' => '100,149,237', - 'cornsilk' => '255,248,220', - 'crimson' => '220,20,60', - 'cyan' => '0,255,255', - 'darkblue' => '0,0,139', - 'darkcyan' => '0,139,139', - 'darkgoldenrod' => '184,134,11', - 'darkgray' => '169,169,169', - 'darkgreen' => '0,100,0', - 'darkgrey' => '169,169,169', - 'darkkhaki' => '189,183,107', - 'darkmagenta' => '139,0,139', - 'darkolivegreen' => '85,107,47', - 'darkorange' => '255,140,0', - 'darkorchid' => '153,50,204', - 'darkred' => '139,0,0', - 'darksalmon' => '233,150,122', - 'darkseagreen' => '143,188,143', - 'darkslateblue' => '72,61,139', - 'darkslategray' => '47,79,79', - 'darkslategrey' => '47,79,79', - 'darkturquoise' => '0,206,209', - 'darkviolet' => '148,0,211', - 'deeppink' => '255,20,147', - 'deepskyblue' => '0,191,255', - 'dimgray' => '105,105,105', - 'dimgrey' => '105,105,105', - 'dodgerblue' => '30,144,255', - 'firebrick' => '178,34,34', - 'floralwhite' => '255,250,240', - 'forestgreen' => '34,139,34', - 'fuchsia' => '255,0,255', - 'gainsboro' => '220,220,220', - 'ghostwhite' => '248,248,255', - 'gold' => '255,215,0', - 'goldenrod' => '218,165,32', - 'gray' => '128,128,128', - 'green' => '0,128,0', - 'greenyellow' => '173,255,47', - 'grey' => '128,128,128', - 'honeydew' => '240,255,240', - 'hotpink' => '255,105,180', - 'indianred' => '205,92,92', - 'indigo' => '75,0,130', - 'ivory' => '255,255,240', - 'khaki' => '240,230,140', - 'lavender' => '230,230,250', - 'lavenderblush' => '255,240,245', - 'lawngreen' => '124,252,0', - 'lemonchiffon' => '255,250,205', - 'lightblue' => '173,216,230', - 'lightcoral' => '240,128,128', - 'lightcyan' => '224,255,255', - 'lightgoldenrodyellow' => '250,250,210', - 'lightgray' => '211,211,211', - 'lightgreen' => '144,238,144', - 'lightgrey' => '211,211,211', - 'lightpink' => '255,182,193', - 'lightsalmon' => '255,160,122', - 'lightseagreen' => '32,178,170', - 'lightskyblue' => '135,206,250', - 'lightslategray' => '119,136,153', - 'lightslategrey' => '119,136,153', - 'lightsteelblue' => '176,196,222', - 'lightyellow' => '255,255,224', - 'lime' => '0,255,0', - 'limegreen' => '50,205,50', - 'linen' => '250,240,230', - 'magenta' => '255,0,255', - 'maroon' => '128,0,0', - 'mediumaquamarine' => '102,205,170', - 'mediumblue' => '0,0,205', - 'mediumorchid' => '186,85,211', - 'mediumpurple' => '147,112,219', - 'mediumseagreen' => '60,179,113', - 'mediumslateblue' => '123,104,238', - 'mediumspringgreen' => '0,250,154', - 'mediumturquoise' => '72,209,204', - 'mediumvioletred' => '199,21,133', - 'midnightblue' => '25,25,112', - 'mintcream' => '245,255,250', - 'mistyrose' => '255,228,225', - 'moccasin' => '255,228,181', - 'navajowhite' => '255,222,173', - 'navy' => '0,0,128', - 'oldlace' => '253,245,230', - 'olive' => '128,128,0', - 'olivedrab' => '107,142,35', - 'orange' => '255,165,0', - 'orangered' => '255,69,0', - 'orchid' => '218,112,214', - 'palegoldenrod' => '238,232,170', - 'palegreen' => '152,251,152', - 'paleturquoise' => '175,238,238', - 'palevioletred' => '219,112,147', - 'papayawhip' => '255,239,213', - 'peachpuff' => '255,218,185', - 'peru' => '205,133,63', - 'pink' => '255,192,203', - 'plum' => '221,160,221', - 'powderblue' => '176,224,230', - 'purple' => '128,0,128', - 'red' => '255,0,0', - 'rosybrown' => '188,143,143', - 'royalblue' => '65,105,225', - 'saddlebrown' => '139,69,19', - 'salmon' => '250,128,114', - 'sandybrown' => '244,164,96', - 'seagreen' => '46,139,87', - 'seashell' => '255,245,238', - 'sienna' => '160,82,45', - 'silver' => '192,192,192', - 'skyblue' => '135,206,235', - 'slateblue' => '106,90,205', - 'slategray' => '112,128,144', - 'slategrey' => '112,128,144', - 'snow' => '255,250,250', - 'springgreen' => '0,255,127', - 'steelblue' => '70,130,180', - 'tan' => '210,180,140', - 'teal' => '0,128,128', - 'thistle' => '216,191,216', - 'tomato' => '255,99,71', - 'transparent' => '0,0,0,0', - 'turquoise' => '64,224,208', - 'violet' => '238,130,238', - 'wheat' => '245,222,179', - 'white' => '255,255,255', - 'whitesmoke' => '245,245,245', - 'yellow' => '255,255,0', - 'yellowgreen' => '154,205,50' - ); -} - -// responsible for taking a string of LESS code and converting it into a -// syntax tree -class lessc_parser { - static protected $nextBlockId = 0; // used to uniquely identify blocks - - static protected $precedence = array( - '=<' => 0, - '>=' => 0, - '=' => 0, - '<' => 0, - '>' => 0, - - '+' => 1, - '-' => 1, - '*' => 2, - '/' => 2, - '%' => 2, - ); - - static protected $whitePattern; - static protected $commentMulti; - - static protected $commentSingle = "//"; - static protected $commentMultiLeft = "/*"; - static protected $commentMultiRight = "*/"; - - // regex string to match any of the operators - static protected $operatorString; - - // these properties will supress division unless it's inside parenthases - static protected $supressDivisionProps = - array('/border-radius$/i', '/^font$/i'); - - protected $blockDirectives = array("font-face", "keyframes", "page", "-moz-document", "viewport", "-moz-viewport", "-o-viewport", "-ms-viewport"); - protected $lineDirectives = array("charset"); - - /** - * if we are in parens we can be more liberal with whitespace around - * operators because it must evaluate to a single value and thus is less - * ambiguous. - * - * Consider: - * property1: 10 -5; // is two numbers, 10 and -5 - * property2: (10 -5); // should evaluate to 5 - */ - protected $inParens = false; - - // caches preg escaped literals - static protected $literalCache = array(); - - public function __construct($lessc, $sourceName = null) { - $this->eatWhiteDefault = true; - // reference to less needed for vPrefix, mPrefix, and parentSelector - $this->lessc = $lessc; - - $this->sourceName = $sourceName; // name used for error messages - - $this->writeComments = false; - - if (!self::$operatorString) { - self::$operatorString = - '('.implode('|', array_map(array('lessc', 'preg_quote'), - array_keys(self::$precedence))).')'; - - $commentSingle = lessc::preg_quote(self::$commentSingle); - $commentMultiLeft = lessc::preg_quote(self::$commentMultiLeft); - $commentMultiRight = lessc::preg_quote(self::$commentMultiRight); - - self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight; - self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais'; - } - } - - public function parse($buffer) { - $this->count = 0; - $this->line = 1; - - $this->env = null; // block stack - $this->buffer = $this->writeComments ? $buffer : $this->removeComments($buffer); - $this->pushSpecialBlock("root"); - $this->eatWhiteDefault = true; - $this->seenComments = array(); - - // trim whitespace on head - // if (preg_match('/^\s+/', $this->buffer, $m)) { - // $this->line += substr_count($m[0], "\n"); - // $this->buffer = ltrim($this->buffer); - // } - $this->whitespace(); - - // parse the entire file - $lastCount = $this->count; - while (false !== $this->parseChunk()); - - if ($this->count != strlen($this->buffer)) - $this->throwError(); - - // TODO report where the block was opened - if (!is_null($this->env->parent)) - throw new exception('parse error: unclosed block'); - - return $this->env; - } - - /** - * Parse a single chunk off the head of the buffer and append it to the - * current parse environment. - * Returns false when the buffer is empty, or when there is an error. - * - * This function is called repeatedly until the entire document is - * parsed. - * - * This parser is most similar to a recursive descent parser. Single - * functions represent discrete grammatical rules for the language, and - * they are able to capture the text that represents those rules. - * - * Consider the function lessc::keyword(). (all parse functions are - * structured the same) - * - * The function takes a single reference argument. When calling the - * function it will attempt to match a keyword on the head of the buffer. - * If it is successful, it will place the keyword in the referenced - * argument, advance the position in the buffer, and return true. If it - * fails then it won't advance the buffer and it will return false. - * - * All of these parse functions are powered by lessc::match(), which behaves - * the same way, but takes a literal regular expression. Sometimes it is - * more convenient to use match instead of creating a new function. - * - * Because of the format of the functions, to parse an entire string of - * grammatical rules, you can chain them together using &&. - * - * But, if some of the rules in the chain succeed before one fails, then - * the buffer position will be left at an invalid state. In order to - * avoid this, lessc::seek() is used to remember and set buffer positions. - * - * Before parsing a chain, use $s = $this->seek() to remember the current - * position into $s. Then if a chain fails, use $this->seek($s) to - * go back where we started. - */ - protected function parseChunk() { - if (empty($this->buffer)) return false; - $s = $this->seek(); - - // setting a property - if ($this->keyword($key) && $this->assign() && - $this->propertyValue($value, $key) && $this->end()) - { - $this->append(array('assign', $key, $value), $s); - return true; - } else { - $this->seek($s); - } - - - // look for special css blocks - if ($this->literal('@', false)) { - $this->count--; - - // media - if ($this->literal('@media')) { - if (($this->mediaQueryList($mediaQueries) || true) - && $this->literal('{')) - { - $media = $this->pushSpecialBlock("media"); - $media->queries = is_null($mediaQueries) ? array() : $mediaQueries; - return true; - } else { - $this->seek($s); - return false; - } - } - - if ($this->literal("@", false) && $this->keyword($dirName)) { - if ($this->isDirective($dirName, $this->blockDirectives)) { - if (($this->openString("{", $dirValue, null, array(";")) || true) && - $this->literal("{")) - { - $dir = $this->pushSpecialBlock("directive"); - $dir->name = $dirName; - if (isset($dirValue)) $dir->value = $dirValue; - return true; - } - } elseif ($this->isDirective($dirName, $this->lineDirectives)) { - if ($this->propertyValue($dirValue) && $this->end()) { - $this->append(array("directive", $dirName, $dirValue)); - return true; - } - } - } - - $this->seek($s); - } - - // setting a variable - if ($this->variable($var) && $this->assign() && - $this->propertyValue($value) && $this->end()) - { - $this->append(array('assign', $var, $value), $s); - return true; - } else { - $this->seek($s); - } - - if ($this->import($importValue)) { - $this->append($importValue, $s); - return true; - } - - // opening parametric mixin - if ($this->tag($tag, true) && $this->argumentDef($args, $isVararg) && - ($this->guards($guards) || true) && - $this->literal('{')) - { - $block = $this->pushBlock($this->fixTags(array($tag))); - $block->args = $args; - $block->isVararg = $isVararg; - if (!empty($guards)) $block->guards = $guards; - return true; - } else { - $this->seek($s); - } - - // opening a simple block - if ($this->tags($tags) && $this->literal('{')) { - $tags = $this->fixTags($tags); - $this->pushBlock($tags); - return true; - } else { - $this->seek($s); - } - - // closing a block - if ($this->literal('}', false)) { - try { - $block = $this->pop(); - } catch (exception $e) { - $this->seek($s); - $this->throwError($e->getMessage()); - } - - $hidden = false; - if (is_null($block->type)) { - $hidden = true; - if (!isset($block->args)) { - foreach ($block->tags as $tag) { - if (!is_string($tag) || $tag{0} != $this->lessc->mPrefix) { - $hidden = false; - break; - } - } - } - - foreach ($block->tags as $tag) { - if (is_string($tag)) { - $this->env->children[$tag][] = $block; - } - } - } - - if (!$hidden) { - $this->append(array('block', $block), $s); - } - - // this is done here so comments aren't bundled into he block that - // was just closed - $this->whitespace(); - return true; - } - - // mixin - if ($this->mixinTags($tags) && - ($this->argumentDef($argv, $isVararg) || true) && - ($this->keyword($suffix) || true) && $this->end()) - { - $tags = $this->fixTags($tags); - $this->append(array('mixin', $tags, $argv, $suffix), $s); - return true; - } else { - $this->seek($s); - } - - // spare ; - if ($this->literal(';')) return true; - - return false; // got nothing, throw error - } - - protected function isDirective($dirname, $directives) { - // TODO: cache pattern in parser - $pattern = implode("|", - array_map(array("lessc", "preg_quote"), $directives)); - $pattern = '/^(-[a-z-]+-)?(' . $pattern . ')$/i'; - - return preg_match($pattern, $dirname); - } - - protected function fixTags($tags) { - // move @ tags out of variable namespace - foreach ($tags as &$tag) { - if ($tag{0} == $this->lessc->vPrefix) - $tag[0] = $this->lessc->mPrefix; - } - return $tags; - } - - // a list of expressions - protected function expressionList(&$exps) { - $values = array(); - - while ($this->expression($exp)) { - $values[] = $exp; - } - - if (count($values) == 0) return false; - - $exps = lessc::compressList($values, ' '); - return true; - } - - /** - * Attempt to consume an expression. - * @link http://en.wikipedia.org/wiki/Operator-precedence_parser#Pseudo-code - */ - protected function expression(&$out) { - if ($this->value($lhs)) { - $out = $this->expHelper($lhs, 0); - - // look for / shorthand - if (!empty($this->env->supressedDivision)) { - unset($this->env->supressedDivision); - $s = $this->seek(); - if ($this->literal("/") && $this->value($rhs)) { - $out = array("list", "", - array($out, array("keyword", "/"), $rhs)); - } else { - $this->seek($s); - } - } - - return true; - } - return false; - } - - /** - * recursively parse infix equation with $lhs at precedence $minP - */ - protected function expHelper($lhs, $minP) { - $this->inExp = true; - $ss = $this->seek(); - - while (true) { - $whiteBefore = isset($this->buffer[$this->count - 1]) && - ctype_space($this->buffer[$this->count - 1]); - - // If there is whitespace before the operator, then we require - // whitespace after the operator for it to be an expression - $needWhite = $whiteBefore && !$this->inParens; - - if ($this->match(self::$operatorString.($needWhite ? '\s' : ''), $m) && self::$precedence[$m[1]] >= $minP) { - if (!$this->inParens && isset($this->env->currentProperty) && $m[1] == "/" && empty($this->env->supressedDivision)) { - foreach (self::$supressDivisionProps as $pattern) { - if (preg_match($pattern, $this->env->currentProperty)) { - $this->env->supressedDivision = true; - break 2; - } - } - } - - - $whiteAfter = isset($this->buffer[$this->count - 1]) && - ctype_space($this->buffer[$this->count - 1]); - - if (!$this->value($rhs)) break; - - // peek for next operator to see what to do with rhs - if ($this->peek(self::$operatorString, $next) && self::$precedence[$next[1]] > self::$precedence[$m[1]]) { - $rhs = $this->expHelper($rhs, self::$precedence[$next[1]]); - } - - $lhs = array('expression', $m[1], $lhs, $rhs, $whiteBefore, $whiteAfter); - $ss = $this->seek(); - - continue; - } - - break; - } - - $this->seek($ss); - - return $lhs; - } - - // consume a list of values for a property - public function propertyValue(&$value, $keyName = null) { - $values = array(); - - if ($keyName !== null) $this->env->currentProperty = $keyName; - - $s = null; - while ($this->expressionList($v)) { - $values[] = $v; - $s = $this->seek(); - if (!$this->literal(',')) break; - } - - if ($s) $this->seek($s); - - if ($keyName !== null) unset($this->env->currentProperty); - - if (count($values) == 0) return false; - - $value = lessc::compressList($values, ', '); - return true; - } - - protected function parenValue(&$out) { - $s = $this->seek(); - - // speed shortcut - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] != "(") { - return false; - } - - $inParens = $this->inParens; - if ($this->literal("(") && - ($this->inParens = true) && $this->expression($exp) && - $this->literal(")")) - { - $out = $exp; - $this->inParens = $inParens; - return true; - } else { - $this->inParens = $inParens; - $this->seek($s); - } - - return false; - } - - // a single value - protected function value(&$value) { - $s = $this->seek(); - - // speed shortcut - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "-") { - // negation - if ($this->literal("-", false) && - (($this->variable($inner) && $inner = array("variable", $inner)) || - $this->unit($inner) || - $this->parenValue($inner))) - { - $value = array("unary", "-", $inner); - return true; - } else { - $this->seek($s); - } - } - - if ($this->parenValue($value)) return true; - if ($this->unit($value)) return true; - if ($this->color($value)) return true; - if ($this->func($value)) return true; - if ($this->string($value)) return true; - - if ($this->keyword($word)) { - $value = array('keyword', $word); - return true; - } - - // try a variable - if ($this->variable($var)) { - $value = array('variable', $var); - return true; - } - - // unquote string (should this work on any type? - if ($this->literal("~") && $this->string($str)) { - $value = array("escape", $str); - return true; - } else { - $this->seek($s); - } - - // css hack: \0 - if ($this->literal('\\') && $this->match('([0-9]+)', $m)) { - $value = array('keyword', '\\'.$m[1]); - return true; - } else { - $this->seek($s); - } - - return false; - } - - // an import statement - protected function import(&$out) { - $s = $this->seek(); - if (!$this->literal('@import')) return false; - - // @import "something.css" media; - // @import url("something.css") media; - // @import url(something.css) media; - - if ($this->propertyValue($value)) { - $out = array("import", $value); - return true; - } - } - - protected function mediaQueryList(&$out) { - if ($this->genericList($list, "mediaQuery", ",", false)) { - $out = $list[2]; - return true; - } - return false; - } - - protected function mediaQuery(&$out) { - $s = $this->seek(); - - $expressions = null; - $parts = array(); - - if (($this->literal("only") && ($only = true) || $this->literal("not") && ($not = true) || true) && $this->keyword($mediaType)) { - $prop = array("mediaType"); - if (isset($only)) $prop[] = "only"; - if (isset($not)) $prop[] = "not"; - $prop[] = $mediaType; - $parts[] = $prop; - } else { - $this->seek($s); - } - - - if (!empty($mediaType) && !$this->literal("and")) { - // ~ - } else { - $this->genericList($expressions, "mediaExpression", "and", false); - if (is_array($expressions)) $parts = array_merge($parts, $expressions[2]); - } - - if (count($parts) == 0) { - $this->seek($s); - return false; - } - - $out = $parts; - return true; - } - - protected function mediaExpression(&$out) { - $s = $this->seek(); - $value = null; - if ($this->literal("(") && - $this->keyword($feature) && - ($this->literal(":") && $this->expression($value) || true) && - $this->literal(")")) - { - $out = array("mediaExp", $feature); - if ($value) $out[] = $value; - return true; - } elseif ($this->variable($variable)) { - $out = array('variable', $variable); - return true; - } - - $this->seek($s); - return false; - } - - // an unbounded string stopped by $end - protected function openString($end, &$out, $nestingOpen=null, $rejectStrs = null) { - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = false; - - $stop = array("'", '"', "@{", $end); - $stop = array_map(array("lessc", "preg_quote"), $stop); - // $stop[] = self::$commentMulti; - - if (!is_null($rejectStrs)) { - $stop = array_merge($stop, $rejectStrs); - } - - $patt = '(.*?)('.implode("|", $stop).')'; - - $nestingLevel = 0; - - $content = array(); - while ($this->match($patt, $m, false)) { - if (!empty($m[1])) { - $content[] = $m[1]; - if ($nestingOpen) { - $nestingLevel += substr_count($m[1], $nestingOpen); - } - } - - $tok = $m[2]; - - $this->count-= strlen($tok); - if ($tok == $end) { - if ($nestingLevel == 0) { - break; - } else { - $nestingLevel--; - } - } - - if (($tok == "'" || $tok == '"') && $this->string($str)) { - $content[] = $str; - continue; - } - - if ($tok == "@{" && $this->interpolation($inter)) { - $content[] = $inter; - continue; - } - - if (!empty($rejectStrs) && in_array($tok, $rejectStrs)) { - break; - } - - $content[] = $tok; - $this->count+= strlen($tok); - } - - $this->eatWhiteDefault = $oldWhite; - - if (count($content) == 0) return false; - - // trim the end - if (is_string(end($content))) { - $content[count($content) - 1] = rtrim(end($content)); - } - - $out = array("string", "", $content); - return true; - } - - protected function string(&$out) { - $s = $this->seek(); - if ($this->literal('"', false)) { - $delim = '"'; - } elseif ($this->literal("'", false)) { - $delim = "'"; - } else { - return false; - } - - $content = array(); - - // look for either ending delim , escape, or string interpolation - $patt = '([^\n]*?)(@\{|\\\\|' . - lessc::preg_quote($delim).')'; - - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = false; - - while ($this->match($patt, $m, false)) { - $content[] = $m[1]; - if ($m[2] == "@{") { - $this->count -= strlen($m[2]); - if ($this->interpolation($inter, false)) { - $content[] = $inter; - } else { - $this->count += strlen($m[2]); - $content[] = "@{"; // ignore it - } - } elseif ($m[2] == '\\') { - $content[] = $m[2]; - if ($this->literal($delim, false)) { - $content[] = $delim; - } - } else { - $this->count -= strlen($delim); - break; // delim - } - } - - $this->eatWhiteDefault = $oldWhite; - - if ($this->literal($delim)) { - $out = array("string", $delim, $content); - return true; - } - - $this->seek($s); - return false; - } - - protected function interpolation(&$out) { - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = true; - - $s = $this->seek(); - if ($this->literal("@{") && - $this->openString("}", $interp, null, array("'", '"', ";")) && - $this->literal("}", false)) - { - $out = array("interpolate", $interp); - $this->eatWhiteDefault = $oldWhite; - if ($this->eatWhiteDefault) $this->whitespace(); - return true; - } - - $this->eatWhiteDefault = $oldWhite; - $this->seek($s); - return false; - } - - protected function unit(&$unit) { - // speed shortcut - if (isset($this->buffer[$this->count])) { - $char = $this->buffer[$this->count]; - if (!ctype_digit($char) && $char != ".") return false; - } - - if ($this->match('([0-9]+(?:\.[0-9]*)?|\.[0-9]+)([%a-zA-Z]+)?', $m)) { - $unit = array("number", $m[1], empty($m[2]) ? "" : $m[2]); - return true; - } - return false; - } - - // a # color - protected function color(&$out) { - if ($this->match('(#(?:[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{3}))', $m)) { - if (strlen($m[1]) > 7) { - $out = array("string", "", array($m[1])); - } else { - $out = array("raw_color", $m[1]); - } - return true; - } - - return false; - } - - // consume an argument definition list surrounded by () - // each argument is a variable name with optional value - // or at the end a ... or a variable named followed by ... - // arguments are separated by , unless a ; is in the list, then ; is the - // delimiter. - protected function argumentDef(&$args, &$isVararg) { - $s = $this->seek(); - if (!$this->literal('(')) return false; - - $values = array(); - $delim = ","; - $method = "expressionList"; - - $isVararg = false; - while (true) { - if ($this->literal("...")) { - $isVararg = true; - break; - } - - if ($this->$method($value)) { - if ($value[0] == "variable") { - $arg = array("arg", $value[1]); - $ss = $this->seek(); - - if ($this->assign() && $this->$method($rhs)) { - $arg[] = $rhs; - } else { - $this->seek($ss); - if ($this->literal("...")) { - $arg[0] = "rest"; - $isVararg = true; - } - } - - $values[] = $arg; - if ($isVararg) break; - continue; - } else { - $values[] = array("lit", $value); - } - } - - - if (!$this->literal($delim)) { - if ($delim == "," && $this->literal(";")) { - // found new delim, convert existing args - $delim = ";"; - $method = "propertyValue"; - - // transform arg list - if (isset($values[1])) { // 2 items - $newList = array(); - foreach ($values as $i => $arg) { - switch($arg[0]) { - case "arg": - if ($i) { - $this->throwError("Cannot mix ; and , as delimiter types"); - } - $newList[] = $arg[2]; - break; - case "lit": - $newList[] = $arg[1]; - break; - case "rest": - $this->throwError("Unexpected rest before semicolon"); - } - } - - $newList = array("list", ", ", $newList); - - switch ($values[0][0]) { - case "arg": - $newArg = array("arg", $values[0][1], $newList); - break; - case "lit": - $newArg = array("lit", $newList); - break; - } - - } elseif ($values) { // 1 item - $newArg = $values[0]; - } - - if ($newArg) { - $values = array($newArg); - } - } else { - break; - } - } - } - - if (!$this->literal(')')) { - $this->seek($s); - return false; - } - - $args = $values; - - return true; - } - - // consume a list of tags - // this accepts a hanging delimiter - protected function tags(&$tags, $simple = false, $delim = ',') { - $tags = array(); - while ($this->tag($tt, $simple)) { - $tags[] = $tt; - if (!$this->literal($delim)) break; - } - if (count($tags) == 0) return false; - - return true; - } - - // list of tags of specifying mixin path - // optionally separated by > (lazy, accepts extra >) - protected function mixinTags(&$tags) { - $s = $this->seek(); - $tags = array(); - while ($this->tag($tt, true)) { - $tags[] = $tt; - $this->literal(">"); - } - - if (count($tags) == 0) return false; - - return true; - } - - // a bracketed value (contained within in a tag definition) - protected function tagBracket(&$parts, &$hasExpression) { - // speed shortcut - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] != "[") { - return false; - } - - $s = $this->seek(); - - $hasInterpolation = false; - - if ($this->literal("[", false)) { - $attrParts = array("["); - // keyword, string, operator - while (true) { - if ($this->literal("]", false)) { - $this->count--; - break; // get out early - } - - if ($this->match('\s+', $m)) { - $attrParts[] = " "; - continue; - } - if ($this->string($str)) { - // escape parent selector, (yuck) - foreach ($str[2] as &$chunk) { - $chunk = str_replace($this->lessc->parentSelector, "$&$", $chunk); - } - - $attrParts[] = $str; - $hasInterpolation = true; - continue; - } - - if ($this->keyword($word)) { - $attrParts[] = $word; - continue; - } - - if ($this->interpolation($inter, false)) { - $attrParts[] = $inter; - $hasInterpolation = true; - continue; - } - - // operator, handles attr namespace too - if ($this->match('[|-~\$\*\^=]+', $m)) { - $attrParts[] = $m[0]; - continue; - } - - break; - } - - if ($this->literal("]", false)) { - $attrParts[] = "]"; - foreach ($attrParts as $part) { - $parts[] = $part; - } - $hasExpression = $hasExpression || $hasInterpolation; - return true; - } - $this->seek($s); - } - - $this->seek($s); - return false; - } - - // a space separated list of selectors - protected function tag(&$tag, $simple = false) { - if ($simple) - $chars = '^@,:;{}\][>\(\) "\''; - else - $chars = '^@,;{}["\''; - - $s = $this->seek(); - - $hasExpression = false; - $parts = array(); - while ($this->tagBracket($parts, $hasExpression)); - - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = false; - - while (true) { - if ($this->match('(['.$chars.'0-9]['.$chars.']*)', $m)) { - $parts[] = $m[1]; - if ($simple) break; - - while ($this->tagBracket($parts, $hasExpression)); - continue; - } - - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "@") { - if ($this->interpolation($interp)) { - $hasExpression = true; - $interp[2] = true; // don't unescape - $parts[] = $interp; - continue; - } - - if ($this->literal("@")) { - $parts[] = "@"; - continue; - } - } - - if ($this->unit($unit)) { // for keyframes - $parts[] = $unit[1]; - $parts[] = $unit[2]; - continue; - } - - break; - } - - $this->eatWhiteDefault = $oldWhite; - if (!$parts) { - $this->seek($s); - return false; - } - - if ($hasExpression) { - $tag = array("exp", array("string", "", $parts)); - } else { - $tag = trim(implode($parts)); - } - - $this->whitespace(); - return true; - } - - // a css function - protected function func(&$func) { - $s = $this->seek(); - - if ($this->match('(%|[\w\-_][\w\-_:\.]+|[\w_])', $m) && $this->literal('(')) { - $fname = $m[1]; - - $sPreArgs = $this->seek(); - - $args = array(); - while (true) { - $ss = $this->seek(); - // this ugly nonsense is for ie filter properties - if ($this->keyword($name) && $this->literal('=') && $this->expressionList($value)) { - $args[] = array("string", "", array($name, "=", $value)); - } else { - $this->seek($ss); - if ($this->expressionList($value)) { - $args[] = $value; - } - } - - if (!$this->literal(',')) break; - } - $args = array('list', ',', $args); - - if ($this->literal(')')) { - $func = array('function', $fname, $args); - return true; - } elseif ($fname == 'url') { - // couldn't parse and in url? treat as string - $this->seek($sPreArgs); - if ($this->openString(")", $string) && $this->literal(")")) { - $func = array('function', $fname, $string); - return true; - } - } - } - - $this->seek($s); - return false; - } - - // consume a less variable - protected function variable(&$name) { - $s = $this->seek(); - if ($this->literal($this->lessc->vPrefix, false) && - ($this->variable($sub) || $this->keyword($name))) - { - if (!empty($sub)) { - $name = array('variable', $sub); - } else { - $name = $this->lessc->vPrefix.$name; - } - return true; - } - - $name = null; - $this->seek($s); - return false; - } - - /** - * Consume an assignment operator - * Can optionally take a name that will be set to the current property name - */ - protected function assign($name = null) { - if ($name) $this->currentProperty = $name; - return $this->literal(':') || $this->literal('='); - } - - // consume a keyword - protected function keyword(&$word) { - if ($this->match('([\w_\-\*!"][\w\-_"]*)', $m)) { - $word = $m[1]; - return true; - } - return false; - } - - // consume an end of statement delimiter - protected function end() { - if ($this->literal(';')) { - return true; - } elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') { - // if there is end of file or a closing block next then we don't need a ; - return true; - } - return false; - } - - protected function guards(&$guards) { - $s = $this->seek(); - - if (!$this->literal("when")) { - $this->seek($s); - return false; - } - - $guards = array(); - - while ($this->guardGroup($g)) { - $guards[] = $g; - if (!$this->literal(",")) break; - } - - if (count($guards) == 0) { - $guards = null; - $this->seek($s); - return false; - } - - return true; - } - - // a bunch of guards that are and'd together - // TODO rename to guardGroup - protected function guardGroup(&$guardGroup) { - $s = $this->seek(); - $guardGroup = array(); - while ($this->guard($guard)) { - $guardGroup[] = $guard; - if (!$this->literal("and")) break; - } - - if (count($guardGroup) == 0) { - $guardGroup = null; - $this->seek($s); - return false; - } - - return true; - } - - protected function guard(&$guard) { - $s = $this->seek(); - $negate = $this->literal("not"); - - if ($this->literal("(") && $this->expression($exp) && $this->literal(")")) { - $guard = $exp; - if ($negate) $guard = array("negate", $guard); - return true; - } - - $this->seek($s); - return false; - } - - /* raw parsing functions */ - - protected function literal($what, $eatWhitespace = null) { - if ($eatWhitespace === null) $eatWhitespace = $this->eatWhiteDefault; - - // shortcut on single letter - if (!isset($what[1]) && isset($this->buffer[$this->count])) { - if ($this->buffer[$this->count] == $what) { - if (!$eatWhitespace) { - $this->count++; - return true; - } - // goes below... - } else { - return false; - } - } - - if (!isset(self::$literalCache[$what])) { - self::$literalCache[$what] = lessc::preg_quote($what); - } - - return $this->match(self::$literalCache[$what], $m, $eatWhitespace); - } - - protected function genericList(&$out, $parseItem, $delim="", $flatten=true) { - $s = $this->seek(); - $items = array(); - while ($this->$parseItem($value)) { - $items[] = $value; - if ($delim) { - if (!$this->literal($delim)) break; - } - } - - if (count($items) == 0) { - $this->seek($s); - return false; - } - - if ($flatten && count($items) == 1) { - $out = $items[0]; - } else { - $out = array("list", $delim, $items); - } - - return true; - } - - - // advance counter to next occurrence of $what - // $until - don't include $what in advance - // $allowNewline, if string, will be used as valid char set - protected function to($what, &$out, $until = false, $allowNewline = false) { - if (is_string($allowNewline)) { - $validChars = $allowNewline; - } else { - $validChars = $allowNewline ? "." : "[^\n]"; - } - if (!$this->match('('.$validChars.'*?)'.lessc::preg_quote($what), $m, !$until)) return false; - if ($until) $this->count -= strlen($what); // give back $what - $out = $m[1]; - return true; - } - - // try to match something on head of buffer - protected function match($regex, &$out, $eatWhitespace = null) { - if ($eatWhitespace === null) $eatWhitespace = $this->eatWhiteDefault; - - $r = '/'.$regex.($eatWhitespace && !$this->writeComments ? '\s*' : '').'/Ais'; - if (preg_match($r, $this->buffer, $out, null, $this->count)) { - $this->count += strlen($out[0]); - if ($eatWhitespace && $this->writeComments) $this->whitespace(); - return true; - } - return false; - } - - // match some whitespace - protected function whitespace() { - if ($this->writeComments) { - $gotWhite = false; - while (preg_match(self::$whitePattern, $this->buffer, $m, null, $this->count)) { - if (isset($m[1]) && empty($this->commentsSeen[$this->count])) { - $this->append(array("comment", $m[1])); - $this->commentsSeen[$this->count] = true; - } - $this->count += strlen($m[0]); - $gotWhite = true; - } - return $gotWhite; - } else { - $this->match("", $m); - return strlen($m[0]) > 0; - } - } - - // match something without consuming it - protected function peek($regex, &$out = null, $from=null) { - if (is_null($from)) $from = $this->count; - $r = '/'.$regex.'/Ais'; - $result = preg_match($r, $this->buffer, $out, null, $from); - - return $result; - } - - // seek to a spot in the buffer or return where we are on no argument - protected function seek($where = null) { - if ($where === null) return $this->count; - else $this->count = $where; - return true; - } - - /* misc functions */ - - public function throwError($msg = "parse error", $count = null) { - $count = is_null($count) ? $this->count : $count; - - $line = $this->line + - substr_count(substr($this->buffer, 0, $count), "\n"); - - if (!empty($this->sourceName)) { - $loc = "$this->sourceName on line $line"; - } else { - $loc = "line: $line"; - } - - // TODO this depends on $this->count - if ($this->peek("(.*?)(\n|$)", $m, $count)) { - throw new exception("$msg: failed at `$m[1]` $loc"); - } else { - throw new exception("$msg: $loc"); - } - } - - protected function pushBlock($selectors=null, $type=null) { - $b = new stdclass; - $b->parent = $this->env; - - $b->type = $type; - $b->id = self::$nextBlockId++; - - $b->isVararg = false; // TODO: kill me from here - $b->tags = $selectors; - - $b->props = array(); - $b->children = array(); - - $this->env = $b; - return $b; - } - - // push a block that doesn't multiply tags - protected function pushSpecialBlock($type) { - return $this->pushBlock(null, $type); - } - - // append a property to the current block - protected function append($prop, $pos = null) { - if ($pos !== null) $prop[-1] = $pos; - $this->env->props[] = $prop; - } - - // pop something off the stack - protected function pop() { - $old = $this->env; - $this->env = $this->env->parent; - return $old; - } - - // remove comments from $text - // todo: make it work for all functions, not just url - protected function removeComments($text) { - $look = array( - 'url(', '//', '/*', '"', "'" - ); - - $out = ''; - $min = null; - while (true) { - // find the next item - foreach ($look as $token) { - $pos = strpos($text, $token); - if ($pos !== false) { - if (!isset($min) || $pos < $min[1]) $min = array($token, $pos); - } - } - - if (is_null($min)) break; - - $count = $min[1]; - $skip = 0; - $newlines = 0; - switch ($min[0]) { - case 'url(': - if (preg_match('/url\(.*?\)/', $text, $m, 0, $count)) - $count += strlen($m[0]) - strlen($min[0]); - break; - case '"': - case "'": - if (preg_match('/'.$min[0].'.*?(?<!\\\\)'.$min[0].'/', $text, $m, 0, $count)) - $count += strlen($m[0]) - 1; - break; - case '//': - $skip = strpos($text, "\n", $count); - if ($skip === false) $skip = strlen($text) - $count; - else $skip -= $count; - break; - case '/*': - if (preg_match('/\/\*.*?\*\//s', $text, $m, 0, $count)) { - $skip = strlen($m[0]); - $newlines = substr_count($m[0], "\n"); - } - break; - } - - if ($skip == 0) $count += strlen($min[0]); - - $out .= substr($text, 0, $count).str_repeat("\n", $newlines); - $text = substr($text, $count + $skip); - - $min = null; - } - - return $out.$text; - } - -} - -class lessc_formatter_classic { - public $indentChar = " "; - - public $break = "\n"; - public $open = " {"; - public $close = "}"; - public $selectorSeparator = ", "; - public $assignSeparator = ":"; - - public $openSingle = " { "; - public $closeSingle = " }"; - - public $disableSingle = false; - public $breakSelectors = false; - - public $compressColors = false; - - public function __construct() { - $this->indentLevel = 0; - } - - public function indentStr($n = 0) { - return str_repeat($this->indentChar, max($this->indentLevel + $n, 0)); - } - - public function property($name, $value) { - return $name . $this->assignSeparator . $value . ";"; - } - - protected function isEmpty($block) { - if (empty($block->lines)) { - foreach ($block->children as $child) { - if (!$this->isEmpty($child)) return false; - } - - return true; - } - return false; - } - - public function block($block) { - if ($this->isEmpty($block)) return; - - $inner = $pre = $this->indentStr(); - - $isSingle = !$this->disableSingle && - is_null($block->type) && count($block->lines) == 1; - - if (!empty($block->selectors)) { - $this->indentLevel++; - - if ($this->breakSelectors) { - $selectorSeparator = $this->selectorSeparator . $this->break . $pre; - } else { - $selectorSeparator = $this->selectorSeparator; - } - - echo $pre . - implode($selectorSeparator, $block->selectors); - if ($isSingle) { - echo $this->openSingle; - $inner = ""; - } else { - echo $this->open . $this->break; - $inner = $this->indentStr(); - } - - } - - if (!empty($block->lines)) { - $glue = $this->break.$inner; - echo $inner . implode($glue, $block->lines); - if (!$isSingle && !empty($block->children)) { - echo $this->break; - } - } - - foreach ($block->children as $child) { - $this->block($child); - } - - if (!empty($block->selectors)) { - if (!$isSingle && empty($block->children)) echo $this->break; - - if ($isSingle) { - echo $this->closeSingle . $this->break; - } else { - echo $pre . $this->close . $this->break; - } - - $this->indentLevel--; - } - } -} - -class lessc_formatter_compressed extends lessc_formatter_classic { - public $disableSingle = true; - public $open = "{"; - public $selectorSeparator = ","; - public $assignSeparator = ":"; - public $break = ""; - public $compressColors = true; - - public function indentStr($n = 0) { - return ""; - } -} - -class lessc_formatter_lessjs extends lessc_formatter_classic { - public $disableSingle = true; - public $breakSelectors = true; - public $assignSeparator = ": "; - public $selectorSeparator = ","; -} - - diff --git a/plugin/document/kod/app/template/api/view.html b/plugin/document/kod/app/template/api/view.html deleted file mode 100644 index 77ce9ebbc..000000000 --- a/plugin/document/kod/app/template/api/view.html +++ /dev/null @@ -1,95 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> - <meta http-equiv="Content-Script-Type" content="text/javascript"> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> - <meta name="renderer" content="webkit"> - <link href="<?php echo STATIC_PATH;?>images/common/favicon.ico" rel="Shortcut Icon"> - <link href="<?php echo STATIC_PATH;?>style/common.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet"/> - <link href="./static/style/font-awesome/css/font-awesome.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet"> - <link rel="stylesheet" href="<?php echo STATIC_PATH;?>style/skin/base/app_explorer.css?ver=<?php echo KOD_VERSION;?>"/> - <link rel="stylesheet" href="<?php echo STATIC_PATH;?>style/skin/win10.css?ver=<?php echo KOD_VERSION;?>"/> - <title>File View - - - - - - - -
-
-
- -
-
- - - - - - - diff --git a/plugin/document/kod/app/template/app/index.html b/plugin/document/kod/app/template/app/index.html deleted file mode 100644 index 7056e632d..000000000 --- a/plugin/document/kod/app/template/app/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - <?php echo strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - -
- -
-
- -
-
    -
    -
    -
    - - - - - diff --git a/plugin/document/kod/app/template/common/footer.html b/plugin/document/kod/app/template/common/footer.html deleted file mode 100644 index f27dbf70a..000000000 --- a/plugin/document/kod/app/template/common/footer.html +++ /dev/null @@ -1,26 +0,0 @@ - - - \ No newline at end of file diff --git a/plugin/document/kod/app/template/common/footerCommon.html b/plugin/document/kod/app/template/common/footerCommon.html deleted file mode 100644 index cdabfd19a..000000000 --- a/plugin/document/kod/app/template/common/footerCommon.html +++ /dev/null @@ -1,47 +0,0 @@ - -'; - }else{ - echo ''; - } - - $settings = $GLOBALS['config']['settings']; - $settingSystem = $GLOBALS['config']['settingSystem']; - if(isset($settings['globalJs'])){ - echo "\n ".''; - } - if(isset($settings['globalCss'])){ - echo "\n ".''; - } - if(isset($settingSystem['globalCss'])){ - echo "\n ".''; - } - if(isset($settingSystem['globalHtml'])){ - echo "\n ".$settingSystem['globalHtml']."\n"; - } -?> - - - diff --git a/plugin/document/kod/app/template/common/header.html b/plugin/document/kod/app/template/common/header.html deleted file mode 100644 index 6e7b7f0e1..000000000 --- a/plugin/document/kod/app/template/common/header.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - .aero:before,.aero:after,.background{background-color:#bbb;background-image:{$background};}\n"; - } - ?> \ No newline at end of file diff --git a/plugin/document/kod/app/template/common/navbar.html b/plugin/document/kod/app/template/common/navbar.html deleted file mode 100644 index 0c8e462e2..000000000 --- a/plugin/document/kod/app/template/common/navbar.html +++ /dev/null @@ -1,62 +0,0 @@ -
    -
    -
    -
    -
    -
    - - -
    - '; - $subMenu = ''; - $isWap = is_wap(); - if(substr(LNG('kod_name'),0,4) == ''; - }else{ - $html .= ''.LNG('kod_name').''; - } - foreach ($config['settingSystem']['menu'] as $key=>$value) { - if ($value['use']!='1') continue; - $has = ST==$value['name']?'this':''; - $target = " target='_self'" ; - if($value['target']=='1' || $value['target'] == '_blank'){ - $target = " target='_blank'" ; - } - $name = rawurldecode($value['name']); - if(LNG('ui_'.$name) != 'ui_'.$name){ - $name = "".LNG('ui_'.$name).''; - }else if($value['icon']){ - $name = $value['icon'].''.LNG($name).''; - }else if(!strstr($name,'<') && $value['subMenu']){ - $name = "".$name."".LNG($name).''; - } - if($value['subMenu'] && !$isWap){ - $subMenu .= "
  • ".urldecode($name)."
  • "; - }else{ - $html .= "".urldecode($name).""; - } - } - echo $html; - ?> - - - - -
    -
    -
    -
    diff --git a/plugin/document/kod/app/template/common/navbarShare.html b/plugin/document/kod/app/template/common/navbarShare.html deleted file mode 100644 index 15519b128..000000000 --- a/plugin/document/kod/app/template/common/navbarShare.html +++ /dev/null @@ -1,67 +0,0 @@ -
    -
    -
    -
    - diff --git a/plugin/document/kod/app/template/common/showTips.html b/plugin/document/kod/app/template/common/showTips.html deleted file mode 100644 index 7231590a6..000000000 --- a/plugin/document/kod/app/template/common/showTips.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - <?php echo $title;?> - - - - - - -
    -
    - -
    -
    - -
    -
    -
    -
    - - - - - - - diff --git a/plugin/document/kod/app/template/desktop/index.html b/plugin/document/kod/app/template/desktop/index.html deleted file mode 100644 index d80805542..000000000 --- a/plugin/document/kod/app/template/desktop/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - <?php echo LNG('ui_desktop').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - .aero:before,.aero:after,.full-background-wall{background-image:url('.$wall.')}';?> -
    - - -
    - -
    - - -
    -
    -
    -
    -
    - -
    -
    - - - - - - diff --git a/plugin/document/kod/app/template/editor/edit.html b/plugin/document/kod/app/template/editor/edit.html deleted file mode 100644 index 5d1d910f4..000000000 --- a/plugin/document/kod/app/template/editor/edit.html +++ /dev/null @@ -1,90 +0,0 @@ - - <?php echo strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - -> -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    -
    -
    - - -
    -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    - - - - diff --git a/plugin/document/kod/app/template/editor/editor.html b/plugin/document/kod/app/template/editor/editor.html deleted file mode 100644 index 5ff684045..000000000 --- a/plugin/document/kod/app/template/editor/editor.html +++ /dev/null @@ -1,45 +0,0 @@ - - <?php echo LNG('ui_editor').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - - - - - - -
    -
    - '> - '> - '> - '> - '> -
    -
    -
      -
      -
      -
      -
      -
      -
      - - - -
      - -
      -
      -
      -
      - - - - diff --git a/plugin/document/kod/app/template/explorer/content.html b/plugin/document/kod/app/template/explorer/content.html deleted file mode 100644 index de9ea80fd..000000000 --- a/plugin/document/kod/app/template/explorer/content.html +++ /dev/null @@ -1,291 +0,0 @@ -
      -
      -
        -
        -
        -
        - - -
        -
        -
        -
        - -
        -
        -
        -
        -
        -
        - - -
        -
        - -
        - -
        -
        - - - - -
        - -
        - -
        -
        -
        - - -
        - - -
        - - - - - - -
        -
        -
        -
        -
        -
        - -
        - - - - -
        - -
        -
        - - -
        - - - - - - - -
        -
        - - -
        - -
        - - -
        - - - - - - -
        -
        -
        -
        -
        - - - - - -
        -
        - - - - -
        -
        -
        -
        - -
        - - -
        - - -
        -
        -
        - - diff --git a/plugin/document/kod/app/template/explorer/explorerWap.html b/plugin/document/kod/app/template/explorer/explorerWap.html deleted file mode 100644 index a7984363f..000000000 --- a/plugin/document/kod/app/template/explorer/explorerWap.html +++ /dev/null @@ -1,147 +0,0 @@ - - <?php echo LNG('ui_explorer').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - -
        -
        -
        - - '; - ?> - -

        -
        -
          -
          -
          -
          -
          -
          - -
          - - $value) { - if ($value['use']!='1') continue; - $has = ST==$value['name']?'this':''; - $target = " target='_self'" ; - if($value['target']=='1' || $value['target'] == '_blank'){ - $target = " target='_blank'" ; - } - $name = $value['name']; - if(LNG('ui_'.$name) != 'ui_'.$name){ - $name = "".LNG('ui_'.$name).''; - } - if($value['icon']){ - $name = $value['icon'].''.LNG($value['name']).''; - } - $subMenu .= "
        • ".urldecode($name)."
        • "; - } - ?> - - - - -
          - -
          - -
          -
            -
            -
            -
            -
            -
            - -
            - -
            - -
            - -
            - - -
            - - - diff --git a/plugin/document/kod/app/template/explorer/index.html b/plugin/document/kod/app/template/explorer/index.html deleted file mode 100644 index 2eb6a74ef..000000000 --- a/plugin/document/kod/app/template/explorer/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - <?php echo LNG('ui_explorer').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - - - - - - - - - - - - - diff --git a/plugin/document/kod/app/template/pluginApp/index.html b/plugin/document/kod/app/template/pluginApp/index.html deleted file mode 100644 index 9b7d35852..000000000 --- a/plugin/document/kod/app/template/pluginApp/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - <?php echo LNG('PluginCenter').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - -
            - -
            -
            -
            -
              -
              - -
              -
              - - - - - - diff --git a/plugin/document/kod/app/template/setting/index.html b/plugin/document/kod/app/template/setting/index.html deleted file mode 100644 index ce98e9f50..000000000 --- a/plugin/document/kod/app/template/setting/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - <?php echo strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - -
              -
              -
              -
              - -
              -
              - - - - diff --git a/plugin/document/kod/app/template/share/edit.html b/plugin/document/kod/app/template/share/edit.html deleted file mode 100644 index 40df459fd..000000000 --- a/plugin/document/kod/app/template/share/edit.html +++ /dev/null @@ -1,87 +0,0 @@ - - <?php echo $shareInfo['name'].' - '.LNG('share_title').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - > -
              -
              -
              -
              - - - - - - - - - - - - - - - - - - - - - - -
              -
              - - -
              -
              -
              - - -
              -
              -
              - -
              -
              -
              -
              - -
              - -
              - -
              -
              - - - - - diff --git a/plugin/document/kod/app/template/share/editor.html b/plugin/document/kod/app/template/share/editor.html deleted file mode 100644 index ebaac1496..000000000 --- a/plugin/document/kod/app/template/share/editor.html +++ /dev/null @@ -1,58 +0,0 @@ - - <?php echo $shareInfo['name'].' - '.LNG('share_title').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - - - - - - - - - - - -
              -
              -
                -
                -
                -
                -
                -
                -
                - - - -
                - -
                -
                -
                -
                - - - - diff --git a/plugin/document/kod/app/template/share/explorer.html b/plugin/document/kod/app/template/share/explorer.html deleted file mode 100644 index d80493c58..000000000 --- a/plugin/document/kod/app/template/share/explorer.html +++ /dev/null @@ -1,54 +0,0 @@ - - <?php echo $shareInfo['name'].' - '.LNG('share_title').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - - - - - - - - - - - diff --git a/plugin/document/kod/app/template/share/explorerWap.html b/plugin/document/kod/app/template/share/explorerWap.html deleted file mode 100644 index 3fa384efa..000000000 --- a/plugin/document/kod/app/template/share/explorerWap.html +++ /dev/null @@ -1,59 +0,0 @@ - - <?php echo LNG('ui_explorer').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - -
                -
                -
                - -
                - -
                -
                  -
                  -
                  -
                  -
                  -
                  - -
                  - -
                  - -
                  -
                  - - -
                  - - - diff --git a/plugin/document/kod/app/template/share/file.html b/plugin/document/kod/app/template/share/file.html deleted file mode 100644 index 4ca97a8da..000000000 --- a/plugin/document/kod/app/template/share/file.html +++ /dev/null @@ -1,45 +0,0 @@ - - <?php echo $shareInfo['name'].' - '.LNG('share_title').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - - - - - - - - diff --git a/plugin/document/kod/app/template/share/tips.html b/plugin/document/kod/app/template/share/tips.html deleted file mode 100644 index 9218b4758..000000000 --- a/plugin/document/kod/app/template/share/tips.html +++ /dev/null @@ -1,26 +0,0 @@ - - tips - <?php echo LNG('share_title').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - - - -
                  - - - - - -
                  - - - - diff --git a/plugin/document/kod/app/template/user/install.html b/plugin/document/kod/app/template/user/install.html deleted file mode 100644 index a56e11b6f..000000000 --- a/plugin/document/kod/app/template/user/install.html +++ /dev/null @@ -1,70 +0,0 @@ - - - <?php echo LNG('php_env_check').' - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - -
                  -
                  -
                  - -
                  - -
                  -
                  -

                  - '; - }else{ - echo '

                  error:

                  '.$error."
                  "; - $login = LNG('php_env_error_ignore'); - } - $login_info = str_replace(array("{0}","{1}","{2}"),array('admin','demo/demo','guest/guest'),LNG('install_user_default')); - echo LNG('install_login'),'
                  '.$login_info.'
                  '; - echo '
                  '; - echo ''; - ?> -
                  -
                  - - - - - - - diff --git a/plugin/document/kod/app/template/user/license.html b/plugin/document/kod/app/template/user/license.html deleted file mode 100644 index 6b1e5e572..000000000 --- a/plugin/document/kod/app/template/user/license.html +++ /dev/null @@ -1,37 +0,0 @@ - - <?php echo 'License Register - '.strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - -
                  -
                  -
                  - -
                  -
                  -
                  -
                  - 注册授权 - -
                  -
                  -
                  - - - - - diff --git a/plugin/document/kod/app/template/user/login.html b/plugin/document/kod/app/template/user/login.html deleted file mode 100644 index f57727f29..000000000 --- a/plugin/document/kod/app/template/user/login.html +++ /dev/null @@ -1,97 +0,0 @@ - - - <?php echo strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - - -
                  -
                  -
                  -
                  - -
                  - - - -
                  -
                  -
                  -
                  -
                  - - -
                  -
                  - - -
                  - -
                  - - - -
                  - -
                  - -
                  - - -
                  - -
                  - -
                  - - config['settingSystem']['autoLogin'] == '1') {?> -
                  - -
                  - -
                  -
                  -
                  - - - - - - diff --git a/plugin/document/kod/app/template/user/loginWap.html b/plugin/document/kod/app/template/user/loginWap.html deleted file mode 100644 index a307613f1..000000000 --- a/plugin/document/kod/app/template/user/loginWap.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - <?php echo strip_tags(LNG('kod_name')).LNG('kod_power_by');?> - - - - -
                  - - - - - - - diff --git a/plugin/document/kod/config/config.php b/plugin/document/kod/config/config.php deleted file mode 100644 index d85a5e7b3..000000000 --- a/plugin/document/kod/config/config.php +++ /dev/null @@ -1,129 +0,0 @@ -=')){//7.1 has auto apply the charset - $config['systemCharset']='utf-8'; - } -} else { - $config['systemOS']='linux'; - $config['systemCharset']='utf-8'; -} - -// 部分反向代理导致获取不到url的问题优化;忽略同域名http和https的情况 -if(isset($_COOKIE['APP_HOST'])){ - if( get_url_domain($_COOKIE['HOST']) != get_url_domain($_COOKIE['APP_HOST']) || - get_url_scheme($_COOKIE['HOST']) == get_url_scheme($_COOKIE['APP_HOST']) ){ - define('HOST',$_COOKIE['HOST']); - // define('APP_HOST',$_COOKIE['APP_HOST']); - } -} - -if(!defined('HOST')){ define('HOST',rtrim(get_host(),'/').'/');} -//程序根目录 -if(!defined('WEB_ROOT')){ define('WEB_ROOT',webroot_path(BASIC_PATH) );} - -//if(!defined('APP_HOST')){ - //define('APP_HOST',HOST.str_replace(WEB_ROOT,'',BASIC_PATH)); - define('APP_HOST',HOST); -//} - - - -//define('PLUGIN_HOST',APP_HOST.str_replace(BASIC_PATH,'',PLUGIN_DIR));//插件目录 -define('PLUGIN_HOST',APP_HOST.'plugin/document/plugins/');//插件目录 - - -include(CONTROLLER_DIR.'utils.php'); -include(BASIC_PATH.'config/setting.php'); -if (file_exists(BASIC_PATH.'config/setting_user.php')) { - include_once(BASIC_PATH.'config/setting_user.php'); -} -if(file_exists(CONTROLLER_DIR.'debug.class.php')){ - include_once(CONTROLLER_DIR.'debug.class.php'); -} -init_common(); -$config['autorun'] = array( - array('controller'=>'user','function'=>'loginCheck'), - array('controller'=>'user','function'=>'authCheck'), - array('controller'=>'user','function'=>'bindHook'), -); diff --git a/plugin/document/kod/config/data_dir_define.php b/plugin/document/kod/config/data_dir_define.php deleted file mode 100644 index 885bf6b9e..000000000 --- a/plugin/document/kod/config/data_dir_define.php +++ /dev/null @@ -1,3 +0,0 @@ - -
                  KODExplorer غير ماذا؟
                  -

                  KODExplorer هو إدارة الوثائق على الانترنت على شبكة الإنترنت مفتوح المصدر، محرر التعليمات البرمجية. ويوفر نوعا من النوافذ الكلاسيكية واجهة المستخدم، ومجموعة من إدارة الوثائق على الانترنت، ومعاينة ملف، تحرير، تحميل وتنزيل، بفك الانترنت تشغيل الموسيقى. يسمح لك لتحقيق التنمية على شبكة الإنترنت مباشرة في المتصفح، وشفرة المصدر معاينة الملف، ونشر صاحب الموقع والعملية المحلية وسهلة وسريعة وتجربة آمنة.

                  -

                  - تصميم -

                  -

                  التقاليد الكلاسيكية، والسعي للابتكار، لتزويد المستخدمين مع مريحة، آمنة وسهلة لاستخدام نظام إدارة سحابة على الانترنت.

                  -

                  كلما (متى)، حيث (حيث)، لديه شبكة الإنترنت كلما تريد (تريد) هو أداة لإدارة الخاص بك (4W السياسة).

                  -

                  - المستخدم المنحى -

                  -

                  حاليا نظام إدارة KODExplorer تقع أساسا في سحابة استضافة شخصية، صغير إدارة المشاريع سحابة الموارد وإدارة القرص الشبكة، وإدارة المواقع الصغيرة والمتوسطة. مطور ويب و الماجستير (قدامى المحاربين): محرر على الانترنت، والنسخ الاحتياطي مضغوط، نشر، الكلاسيكية تشغيل ويندوز واجهة، من السهل أن تبدأ وتخلص من SSH المضيف، الأمر FTP عمليات الحفر معقدة.

                  -

                  سحابة شخصية خاصة (الصاعد): موارد القرص شبكة الإدارية، ونفس العملية النوافذ الكلاسيكية واجهة، يمكنك وضع محرك الأقراص الموسيقى تصفح الشبكة، وملفات الشاشة، تحميل وتنزيل بسرعة وسهولة.

                  - - -
                  -
                  ميزات
                  -

                  إدارة ثيقة شاملة وقوية محرر الملفات على الإنترنت

                  -

                  أينما كنت، يمكنك إدارة الملفات الخاصة بك، والترفيه عبر الإنترنت، على شبكة الإنترنت كتابة رمز! تماما كما مناسبة للاستخدام في نظام التشغيل.

                  -

                  واسعة النطاق بحق عملية تجربة زرع المحلي، السحب، مربع التحديد، اختصارات، البحث عن الملفات (المحتوى البحث) ......

                  -

                  مربع الاختيار، السحب الحركة، وسحب وإسقاط تحميل، محرر على الانترنت، ومشغل فيديو، ضغط. كامل الأداء ضمان اياكس والخبرة!

                  -

                  كل وظيفة الربط السلس المباشر، في شكل حوار، وظائف إدارة متعددة المهام

                  -

                  محرر يدعم-متعددة وثيقة، ودعم ZendCoding أتش تي أم أل، المغلق، شبيبة أعلى الترميز الكفاءة!

                  -

                  الدعم الصيني الكمال، مشوه حل حالات مختلفة؛

                  -
                  - -
                  -
                  المصدر المفتوح اعتماد التكنولوجيا
                  -

                  1.Jquery:jpuery (المساعد: Hotkeys.ztree.contentmenu) شبيبة إطار التنمية السائد. تشغيل عملية دوم، BOM، عملية المغلق، وحزمة اياكس

                  -

                  2.ArtDialog:تصميم جميل، والتوافق متصفح قوي القطعة الحوار. لذا المنبثقة مقبض، والأحداث، ونقل البيانات للحصول على إدارة أفضل موحدة

                  -

                  3.Ztree:شجرة التحكم القائمة، والتدرجية هو جدا قوية شجرة معالجة البيانات القطعة

                  -

                  4.codemirror:محرر كود شبيبة الإضافات، ويدعم مجموعة متنوعة من لغات البرمجة لتسليط الضوء على

                  -

                  5.zendcoding:على رموز الدعم أتش تي أم أل الكتابة بسرعة المكونات الإضافية. يبسط يتم كتابة تعريف من التعليمات البرمجية. تجميع بسيط

                  -

                  6.less:نموذج تنمية المغلق كفاءة وظيفية لتحسين الواجهة الأمامية المغلق إعادة استخدام . تجميع بسيط

                  -

                  7.SWFUpload:ملف فلاش تحميل

                  -

                  8 .CMP4:لاعب فلاش جيد جدا المساعد ملفات الوسائط، ودعم تدفق وسائل الاعلام، شعبية أداة تشغيل الموسيقى والفيديو. دعم للبشرة، وإعدادات شكلي للغاية. قائمة ديناميكية أكس تحميل. رسائل الوسائط المتعددة تدفق وسائل الاعلام، RSTP رخصة مفتوحة المصدر دعم تشغيل الوسائط

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ar/edit.html b/plugin/document/kod/config/i18n/ar/edit.html deleted file mode 100644 index 1d8a29426..000000000 --- a/plugin/document/kod/config/i18n/ar/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  الوظائف الغنية

                  -

                  كود يطالب تلقائيا

                  -

                  متعددة موضوع: اختيار أسلوب البرمجة المفضلة لديك

                  -

                  الخط مخصص: للاستخدام في المشهد

                  -

                  تحرير المؤشر متعددة، كتلة التحرير على الانترنت خبرة في البرمجة مماثلة للسامية

                  -

                  كتلة قابلة للطي، التوسع؛ التفاف

                  -

                  دعم العديد من علامات التبويب، اسحب تسلسل التبديل.

                  -

                  الحفاظ على وثائق متعددة، والعثور على واستبدال، التاريخ؛

                  -

                  الإكمال التلقائي []، {}، ()، '' ''

                  -

                  على الانترنت المعاينة في الوقت الحقيقي الذي يسمح لك أن تقع في الحب مع البرمجة على الانترنت!

                  -

                  zendcodeing الدعم، كتابة التعليمات البرمجية ثمانين

                  -

                  المزيد من الميزات انتظار اكتشاف الخاص بك ......

                  -
                  -
                  -

                  150 نوعا من تسليط الضوء على كود

                  -

                  نصيحة: أتش تي أم أل، وجافا سكريبت، المغلق، أقل، ساس، SCSS

                  -

                  تطوير الشبكة: PHP، بيرل، بيثون، روبي، elang، انتقل ...

                  -

                  اللغات التقليدية: جافا، C و C ++، C #، أكشن، فبسكريبت ...

                  -

                  البعض: تخفيض السعر، قذيفة، مزود، لوا، أكس، YAML ...

                  -
                  -
                  -
                  -
                  -

                  عمل اختصار

                  -
                   الاختصارات المستخدمة شيوعا: 
                  - CTRL + S لحفظ 
                  - + السيطرة على اختيار كل CTRL + X قص 
                  - CTRL + C CTRL + V لصق نسخة 
                  - CTRL + Z التراجع عن التراجع عن مكافحة CTRL + Y 
                  - CTRL + F للبحث عن استبدال CTRL + و + و 
                  - فوز + ALT + 0 انهيار كل فوز + Alt + العالي + 0 توسيع جميع 
                  - ESC [بحث الخروج تلقائيا إلغاء يطالب ...] 
                  - السيطرة التحول ليالي معاينة 
                  - السيطرة التحول الإلكتروني تظهر وإغلاق وظيفة 
                  -
                  -
                   اختيار: 
                  - سرادق الماوس - السحب 
                  - تحول + الوطن / نهاية / أعلى / يسار / أسفل / الحق 
                  - تحول + PAGEUP / بين pagedown الوجه صعودا وهبوطا لتحديد 
                  - السيطرة تحول + + الوطن / نهاية المؤشر الحالي إلى بداية ونهاية 
                  - ALT + الماوس لسحب اختيار كتلة 
                  - CTRL + ALT + ز دفعة حدد وأدخل محرر متعدد التبويب الحالي 
                  -
                  -
                   المؤشر: 
                  - الوطن / نهاية / أعلى / يسار / أسفل / الحق 
                  - CTRL + الوطن / نهاية تحريك المؤشر إلى الوثيقة رأس / ذيل 
                  - CTRL + ص الانتقال إلى العلامة مطابقة 
                  - PAGEUP / بين pagedown المؤشر صعودا وهبوطا 
                  - ALT + المؤشر الأيسر / الأيمن للانتقال إلى أعلى من خط 
                  - تحول + المؤشر الأيسر / الأيمن إلى نهاية السطر و 
                  - السيطرة + لتر إلى القفز إلى صف معين 
                  - CTRL + ALT + لأعلى / أسفل (أدناه) زيادة المؤشر 
                  -
                  -
                   تحرير: 
                  - CTRL + / تعليق والسيطرة غير تعليق + ALT + وبرر 
                  - علامة التبويب جدول محاذاة التحول + طاولة التقدم الشامل 
                  - حذف حذف حذف السيطرة خط كامل + د 
                  - السيطرة + حذف لحذف الصف والكلمة الصحيحة 
                  - السيطرة / التحول + BACKSPACE لحذف كلمة على اليسار 
                  - SHIFT + ALT + أعلى / أسفل، وأضاف إلى خط النسخ (أدناه) طائرة 
                  - ALT + DELETE لحذف محتويات يمين المؤشر 
                  - بديل + أعلى / أسفل على السطر الحالي والخط (تبادل السطر التالي) 
                  - CTRL + SHIFT + د صفوف نسخ وإضافة إلى ما يلي 
                  - السيطرة + حذف لحذف يمين الكلمة 
                  - السيطرة تحول + + يو تحويلها إلى أحرف صغيرة 
                  - CTRL + ش النص المحدد إلى أحرف كبيرة 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/ar/help.html b/plugin/document/kod/config/i18n/ar/help.html deleted file mode 100644 index d41b32521..000000000 --- a/plugin/document/kod/config/i18n/ar/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  إدارة ملف
                  -

                  اختيار ملف: راديو، سرادق الماوس، وتحول الانتخابات، السيطرة اختيارهم عشوائيا، لوحة المفاتيح صعودا وهبوطا، المنزل، واختيار نهاية.

                  -

                  تشغيل ملف: بعد اختيار الملف، يمكنك نسخ، قص، حذف، عرض خصائص ضغط، إعادة تسمية، ومعاينة المفتوحة وغيرها من العمليات ......

                  -

                  تحميل الملف: تحميل ملفات متعددة دفعة، HTML5 تحميل السحب (سحب للتحميل بسهولة النافذة، سحب وإسقاط الدعم للمجلدات)

                  -

                  وظيفة الصحيحة: بزر الماوس الأيمن ملف أو مجلد، الحق، الحق أكثر بعد العملية الانتخابية، سطح المكتب، والحق، والحق شجرة الدليل، اختصارات القائمة ملزمة اليمين
                  - (حدد الكل - نسخ - قص - لصق - حذف - إعادة تسمية، تعيين ......)

                  -

                  متصفح ملف: وضع قائمة، وضع رمز، انقر نقرا مزدوجا فوق في مجلدات فرعية، عملية شريط العنوان؛ فتح سجل سجل مجلد مناقضة (إلى الأمام والخلف)

                  -

                  دعم السحب والإسقاط: تحقق من السحب، وقطع لتحقيق وظيفة المجلد المحدد

                  -

                  مفاتيح الاختصار: حذف حذف، CTRL + A تحديد الكل، CTRL + C لنسخ، + X قص، بحث ملف (محتوى البحث) السيطرة

                  -
                  -
                  -
                  معاينة ملف
                  -

                  معاينة الملف: عرض محتويات ملف تحرير النص والادخار، أتش تي أم أل، معاينة ملف فرنك سويسري،

                  -

                  معاينة الصورة: الجيل التلقائي للصور المصغرة، صورة عرض الشرائح.

                  -

                  تشغيل الصوت: تشغيل الموسيقى على الانترنت وملفات الفيديو؛ دعم MP3، WMA، منتصف، AAC، WAV، MP4،

                  -

                  فيديو: تشغيل الفيديو عبر الإنترنت، الصيغ المدعومة: FLV، F4V، 3GP

                  -

                  المكتب: مكتب معاينة الانترنت، الصيغ المدعومة: وثيقة، docx، باور بوينت، PPTX، XLS، XLSX

                  -
                  -
                  -
                  الاختصارات
                  -

                  إدخال المفتوحة

                  -

                  + السيطرة مختارة جميع

                  -

                  CTRL + C لنسخ المحدد

                  -

                  CTRL + V للصق

                  -

                  CTRL + X قص

                  -

                  CTRL + F للبحث في الدليل الحالي

                  -

                  بديل + ن ملف جديد

                  -

                  ALT + م مجلد جديد

                  -

                  حذف حذف المحدد

                  -

                  مسافة للخلف العودة

                  -

                  CTRL + مسافة للخلف إلى الأمام

                  -

                  F2 إعادة تسمية مختارة (مجلد)

                  -

                  الوطن / نهاية / أعلى / أسفل / يسار / يمين لتحديد الملف

                  -

                  لرد ضغط تحقق للضغط على الحرف الأول من الملفات الشخصية والمجلدات المحددة دورة التلقائي

                  -
                  diff --git a/plugin/document/kod/config/i18n/ar/main.php b/plugin/document/kod/config/i18n/ar/main.php deleted file mode 100644 index 7d14882a6..000000000 --- a/plugin/document/kod/config/i18n/ar/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "يرجى اختيار ملف ...", - "path_api_select_folder" => "الرجاء تحديد مجلد ...", - "path_api_select_image" => "يرجى اختيار صورة ...", - "share_can_upload" => "السماح بالتحميل", - "move_error" => "فشل نقل", - "setting_basic" => "الإعدادات الأساسية", - "setting_user_sound_open" => "فتح الصوت", - "setting_user_animate_open" => "فتح الرسوم المتحركة", - "recycle_open_if" => "فتح سلة المحذوفات", - "recycle_open" => "فتح", - "setting_user_recycle_desc" => "بعد حذف سيتم حذف الحذف المادي مباشرة", - "setting_user_animate_desc" => "نافذة مفتوحة والرسوم المتحركة الأخرى", - "setting_user_sound_desc" => "تشغيل الصوت", - "setting_user_imageThumb" => "الصور المصغرة", - "setting_user_imageThumb_desc" => "تجربة تصفح أفضل بعد الفتح", - "setting_user_fileSelect" => "فتح الاختيار رمز الملف", - "setting_user_fileSelect_desc" => "رمز الملف الاختيار مفتاح اليسار، انقر بزر الماوس الأيمن فوق القائمة اختصار الإدخال", - "qrcode" => "URL رمز الاستجابة السريعة", - "theme_mac" => "ماك الأبيض الحد الأدنى", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "المترو الأزرق كلاسيك", - "theme_metro_green" => "مترو الضوء الأخضر", - "theme_metro_purple" => "مترو أنيقة الأرجواني", - "theme_metro_pink" => "مترو روز", - "theme_metro_orange" => "مترو برتقالية زاهية", - "theme_alpha_image" => "مشرق - الطيران", - "theme_alpha_image_sun" => "مشرق - الغروب", - "theme_alpha_image_sky" => "سمفونية - السماء الزرقاء", - "theme_diy" => "مخصص", - "theme_diy_title" => "إعدادات مخصصة لقضاء وقت الفراغ", - "theme_diy_background" => "خلفية", - "theme_diy_image" => "صور", - "theme_diy_color_blur" => "التدرج اللوني", - "theme_diy_image_blur" => "الصورة ضبابية", - "theme_diy_image_url" => "عنوان صور", - "theme_diy_color_start" => "اللون ابتداء من", - "theme_diy_color_end" => "نهاية اللون", - "theme_diy_color_radius" => "زاوية الانحدار", - "system_role_admin_set" => "الإداريين من جميع الحقوق، دون أن يحدد!", - "login_error_user_not_use" => "تم تعطيل المستخدم! الرجاء الاتصال بمسؤول", - "login_error_kod_version" => "الصراع نسخة", - "login_error_role" => "لا وجود مجموعة عرض أذونات، يرجى الاتصال بمسؤول", - "no_permission_group" => "أنت لست في هذه المجموعة!", - "no_permission_write" => "الدليل لايوجد إذن الكتابة", - "user" => "المستخدم", - "save_as" => "حفظ ك", - "check_update" => "تحديث", - "keyboard_type" => "وضع لوحة المفاتيح", - "font_family" => "الخطوط", - "code_mode" => "تسليط الضوء على تركيب", - "path_can_not_share" => "يدعم فقط مشاركة المستندات الخاصة بك!", - "path_can_not_action" => "هذا الدليل لا يدعم هذه العملية!", - "wap_page_pc" => "نسخة الكمبيوتر", - "wap_page_phone" => "متحرك", - "image_size" => "أبعاد الصورة", - "no_permission_action" => "لم يكن لديك هذا الإذن، يرجى الاتصال بمسؤول!", - "path_is_root_tips" => "قد حان إلى الدليل الجذر!", - "kod_group" => "منظمة", - "my_kod_group" => "أنا في القسم", - "space_tips_default" => "(GB) 0 لا حدود", - "space_tips_full" => "دون الحد", - "space_size" => "الفضاء", - "space_size_use" => "استخدام الفضاء", - "space_is_full" => "لا توجد مساحة كافية متبقية ، يرجى الاتصال بالمسؤول!", - "system_open_true_path" => "افتتح بنجاح في إدارة ملف!", - "group_role_error" => "خطأ أذونات دور (أي إعدادات إذن)", - "group_role_error_admin" => "أذونات غير كافية", - "markdown_content" => "جدول المحتويات", - "system_group" => "المستخدمين والإدارات", - "system_group_edit" => "إدارة القسم", - "system_group_role" => "هوية دور", - "system_group_create" => "إدارة جديدة", - "system_group_name" => "اسم القسم", - "system_group_father" => "الإدارة العليا", - "system_group_add" => "إضافة إدارة فرعية", - "system_group_remove" => "إزالة القسم", - "system_group_remove_tips" => "هل تريد بالتأكيد حذف القسم؟
                  بعد حذف جزء من المستخدم سيتم إزالة، انتقل القطاع الفرعي إلى قطاع الجذر", - "system_group_select" => "اختر قسم", - "system_group_select_result" => "سوف الأعضاء تنتمي إلى القطاعات التالية", - "system_role_admin_tips" => "ملاحظات: غير مصرح لمسؤولي النظام للتحكم", - "system_member_action" => "إدارة المستخدم", - "system_member_add" => "العضو الجديد", - "system_member_role" => "أدوار إذن", - "system_member_role_select" => "اختر", - "system_member_password_tips" => "لا تملأ لا تعديل", - "system_set_home_path" => "كتالوج مخصص", - "system_set_home_path_tips" => "الدليل الافتراضي فارغ", - "system_member_group" => "حيث الإدارة", - "system_member_group_edit" => "قسم التحرير", - "system_member_remove" => "حذف العضو", - "system_member_remove_tips" => "تأكيد المستخدم حذف؟
                  بعد إزالة دليل المستخدم سوف تمحى تماما", - "system_member_set_role" => "لتأكيد التغيير من الأذونات مجموعة مختارة من المستخدمين؟", - "system_member_remove_group" => "تحديد ستتم إزالة المستخدم المحدد من هذه المجموعة؟", - "system_member_import" => "إضافة السائبة", - "system_member_import_desc" => "مستخدم واحد في كل سطر،
                  بالفعل موجودة يتم تجاهل بصمت", - "system_member_use" => "تمكين", - "system_member_unuse" => "تعطيل", - "system_member_space" => "تعيين حجم مساحة المستخدم ", - "system_member_space_tips" => " تعيين حجم مساحة المستخدم ", - "system_member_space_number" => " يجب ان يكون رقم!", - "system_member_group_config" => "دفعة إدارة الإعداد", - "system_member_group_remove" => "تمت إزالتها من القسم", - "system_member_group_insert" => "أضف إلى القسم", - "system_member_group_reset" => "إعادة تعيين القسم", - "system_member_group_error" => "خطأ في الإدارة", - "system_group_action" => "إدارة القسم", - "system_role_add" => "إضافة الهوية دور", - "system_role_read" => "قراءة فقط", - "system_role_write" => "يمكن القراءة والكتابة", - "system_setting_root_path" => "وصول الجذر", - "system_setting_root_path_desc" => "مسؤول النظام فقط يمكن الوصول إلى كافة الدلائل، يمكن للجماعات حقوقية أخرى من المستخدمين ترى سوى دليل المستخدم الخاص بهم. إذا كنت ترغب في تشغيل أو إيقاف وصول المسؤول
                  إلى الدلائل الأخرى، يمكنك تعديل فب open_basedir المعلمات مكافحة المواقع المشتركة،وضع", - "system_group_role_title" => "إدارة دور إدارة السلطة", - "system_group_role_remove" => "انقر فوق موافق لحذف دور القسم", - "system_group_role_style" => "أسلوب", - "system_group_role_display" => "سواء", - "system_group_role_display_desc" => "تعيين ما إذا كان سيتم عرض حقوق المستخدم قسم أم لا", - "role_type_name_read" => "قرأ", - "role_type_name_read:list" => "قائمة ملف", - "role_type_name_read:info" => "ملف (مجلد) خاصية عرض، بحث مجلد", - "role_type_name_read:copy" => "نسخ ملف", - "role_type_name_read:preview" => "معاينة الصورة (الصور والوثائق والفيديو والصوت)", - "role_type_name_read:download" => "ملف (مجلد) تحميل", - "role_type_name_write" => "إرسال", - "role_type_name_write:add" => "إنشاء ملف (مجلد)، استخراج ملف مضغوط", - "role_type_name_write:edit" => "حفظ الملف إلى تعديل", - "role_type_name_write:change" => "إعادة تسمية، وضبط بنية الدليل", - "role_type_name_write:upload" => "ملف (مجلد) تحميل وتنزيل عن بعد", - "role_type_name_write:remove" => "ملف (مجلد) حذف، وقطع", - "group_guest" => "آخر", - "group_guest_desc" => "أنت لست عضوا في القسم،
                  يمكن الوصول فقط إلى [قسم المشتركة الدليل] المحتوى التالي، أذونات للقراءة فقط.", - "group_role_lebel_desc" => "أنت عضو في هذا القسم،
                  جميع الوثائق داخل القسم جميع الحقوق محفوظة من قبل المشرف", - "button_save_and_add" => "حفظ والاستمرار في إضافة", - "path_cannot_search" => "الدليل لا يدعم البحث!", - "not_support" => "غير معتمدة!", - "group_not_exist" => "مجموعة العضو غير موجود!", - "upload_clear_all" => "مسح جميع", - "upload_clear" => "واضح المنجزة", - "upload_setting" => "نصب", - "upload_tips" => "يستخدم تحميل شريحة، لم تعد تخضع لحدود PHP.INI، وأوصت سحب مجلد الكروم وتجربة تحميل قطرة", - "upload_exist" => "ملف بنفس الاسم", - "upload_exist_rename" => "إعادة تسمية", - "upload_exist_replace" => "غطاء", - "upload_exist_skip" => "تخطى", - "upload_add_more" => "إضافة السائبة", - "more" => "أكثر", - "system_setting" => "إعدادات النظام", - "openProject" => "فتح محرر المشروع", - "url_download" => "تحميل", - "url_link" => "URL", - "app_type_link" => "الاختصارات", - "createLink" => "إنشاء اختصار", - "createLinkHome" => "إرسالها إلى اختصار سطح المكتب", - "createProject" => "إضافة إلى مشروع محرر", - "only_read" => "قراءة فقط", - "only_read_desc" => "الدليل لايوجد إذن الكتابة
                  يمكنك تعيين الأذونات لهذا الدليل على الملقم", - "not_read" => "غير قابل للقراءة", - "explorerNew" => "رابط KOD", - "zip_download_ready" => "بعد ضغط تلقائيا التحميل، يرجى الانتظار ...", - "set_background" => "تعيين كخلفية سطح المكتب", - "share" => "سهم", - "my_share" => "نصيبي", - "group_share" => "مشاركة المجموعة الخارجية", - "share_edit" => "تعديل المشاركة", - "share_remove" => "إلغاء المشاركة", - "share_remove_tips" => "هل تريد بالتأكيد إلغاء المشاركة؟ سيتم إبطال الاتصال العام.", - "share_path" => "مشاركة المسار", - "share_title" => "تقاسم الموارد", - "share_name" => "مشاركة العنوان", - "share_time" => "انتهاء", - "share_time_desc" => "لم يتم تعيين لاغية", - "share_password" => "كلمة استخراج", - "share_password_desc" => "لم يتم تعيين كلمة المرور فارغة", - "share_cancle" => "إلغاء مشاركة", - "share_create" => "إنشاء ارتباط العام", - "share_url" => "عنوان المشتركة", - "share_not_download" => "حظر حمل", - "share_not_download_tips" => "حظر المشارك تحميل!", - "share_code_read" => "قارئ رمز", - "share_save" => "حفظ التكوين", - "share_error_param" => "خطأ المعلمة!", - "share_error_user" => "العضو خطأ المعلومات!", - "share_error_sid" => "حصة لا وجود له!", - "share_error_time" => "جئت في وقت متأخر جدا، انتهت صلاحية حصة!", - "share_error_path" => "ملف مشترك لا وجود لها، يتم حذفه أو إزالته!", - "share_error_password" => "كلمة مرور خاطئة!", - "share_error_show_tips" => "هذا النوع لا يدعم معاينة الملف!", - "share_view_num" => "المشاهدات:", - "share_download_num" => "التنزيلات:", - "share_open_page" => "فتح صفحة مشتركة", - "open_the_path" => "أدخل الدليل", - "recycle_clear" => "تفريغ سلة المهملات", - "recycle_clear_success" => "إفراغ سلة المهملات النجاح!", - "recycle_clear_info" => "هل أنت متأكد أنك تريد فارغة تماما سلة المهملات؟", - "fav_remove" => "إلغاء مجموعة", - "remove_item" => "البنود", - "uploading" => "تحميل", - "upload_tips_more" => "العديد من الملفات، على توصية تحميل مضغوط، ثم بفك على الانترنت!", - "uploading_move" => "في نقل الدمج ...", - "show_file" => "معاينة صفحة جديدة", - "unknow_file_title" => "فتح ملف تلميح!", - "unknow_file_tips" => "لم تدعم تطبيق هذا الملف، يمكنك:", - "unknow_file_try" => "محاولة", - "unknow_file_download" => "تحميل الملف", - "unknow_plugin_search" => "البحث ذات الصلة التطبيقات المثبتة", - "config_save_error_auth" => "فشل في حفظ التكوين، حظرت الإدارة هذا الامتياز!", - "config_save_error_file" => "خطأ، ملف قابل للكتابة!", - "beautify_code" => "كود المنسق", - "convert_case" => "تحويل القضية", - "convert_upper_case" => "تحويلها إلى أحرف كبيرة", - "convert_lower_case" => "تحويلها إلى أحرف صغيرة", - "editor_insert_time" => "الوقت الحالي ", - "editor_md5" => " تشفير Md5 ", - "editor_qrcode" => " سلسلة رمز ثنائي الأبعاد ", - "editor_regx" => " اختبار التعبير العادي ", - "editor_chinese" => " تحويل مبسط ", - "editor_chinese_simple" => " تحويل إلى الصينية المبسطة ", - "editor_chinese_traditional" => " تحويل إلى الصينية التقليدية ", - "editor_base64" => "Base64 الترميز ", - "editor_base64_encode" => " ترميز Base64 ", - "editor_base64_decode" => " فك Base64 ", - "editor_url" => " برنامج ترميز URL ", - "editor_url_encode" => " ترميز URL ", - "editor_url_decode" => " فك تشفير عنوان URL ", - "editor_unicode" => " برنامج ترميز يونيكود ", - "editor_unicode_encode" => " ترميز يونيكود ", - "editor_unicode_decode" => " فك Unicode", - "editor_tools_select_tips" => " يرجى تحديد المحتوى الذي تريد تحويله!", - "editor_calc" => "آلة حاسبة مجانية", - "shortcut" => "الاختصارات", - "use_free" => "الاستمرار في استخدام نسخة مجانية", - "learn_more" => "تعرف على المزيد", - "replace" => "استبدل", - "selectAll" => "اختر", - "reload" => "تحديث", - "about" => "في", - "complete_current" => "الإكمال التلقائي للتيار", - "view" => "رأي", - "tools" => "أداة", - "help" => "مساعدة", - "not_exists" => "غير موجود", - "group_role_fileDownload" => "التنزيلات", - "group_role_share" => "سهم", - "users_share" => "مشاركة", - "system_setting_save" => "إعدادات الأمان", - "system_setting_menu" => "إدارة القائمة", - "system_name" => "اسم البرنامج", - "system_name_desc" => "عنوان شعار البرنامج", - "system_desc" => "وصف البرنامج", - "path_hidden" => "الاستثناءات دليل", - "version_not_support" => "الإصدار الخاص بك لا يدعم هذا، يرجى الدخول إلى الموقع الرسمي لشراء نسخة مطورة!", - "version_not_support_number" => "ولما كان عدد من التقييد لا يدعم هذه العملية، يرجى شراء نسخة مطورة من الموقع الرسمي!", - "path_hidden_desc" => "الدلائل والملفات افتراضيا لا يتم عرض، مفصولة بفواصل", - "new_user_folder" => "يتم إنشاء مستخدم جديد الدليل الافتراضي", - "new_user_folder_desc" => "مفصولة بفواصل", - "new_user_app" => "يتم إنشاء مستخدم جديد التطبيق الافتراضي", - "new_user_app_desc" => "تطبيقات مركز التطبيق، تعددية مفصولة بفواصل", - "auto_login" => "آخر تسجيل الدخول التلقائي", - "auto_login_desc" => "تسجيل الدخول الافتراضي المستخدمguest/guestالمستخدمين، وبعد الافتتاح لضمان وجود المستخدم", - "first_in" => "بعد تسجيل الدخول إلى الافتراضي", - "version_price_free" => "حر", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "الدليل غير قابل للكتابة، تعيين الدليل وكافة الدلائل إلى محاولة مرة أخرى بعد قراءة والكتابة!", - "menu_name" => "اسم القائمة", - "menu_hidden" => "إخفاء", - "menu_show" => "عرض", - "menu_move_down" => "إلى", - "menu_move_up" => "فوق", - "menu_move_del" => "حذف", - "menu_open_window" => "فتح نافذة جديدة", - "menu_sub_menu" => "القائمة الفرعية", - "url_path" => "الموقع الالكترونى", - "url_path_desc" => "الموقع الالكترونى أو رمز شبيبة", - "no_permission_read" => "لم يكن لديك إذن لقراءة!", - "no_permission_download" => "لم يكن لديك إذن لتحميل!", - "php_env_check" => "تعمل مراقبة البيئة:", - "php_env_error" => "مكتبة فب مفقودة", - "php_env_error_ignore" => "تجاهل وأدخل", - "php_env_error_version" => "PHP النسخة لا يمكن أن يكون أقل من 5.0", - "php_env_error_path" => "غير قابل للكتابة", - "php_env_error_list_dir" => "خادم الويب الخاص بك يفتح الدليل ميزة قائمة لأسباب أمنية، تعطيل هذه الميزة!كيف؟", - "php_env_error_gd" => "وينبغي أن تكون مكتبة GD بى مفتوحة، وإلا رمز، استخدم الصورة المصغرة لن تعمل بشكل صحيح", - "install_login" => "يمكنك استخدام تسجيل الدخول حساب التالية", - "install_enter" => "النظام", - "install_user_default" => "المسؤول: {0} / (دون تعيين كلمة مرور)
                  مستخدم العادي: {1}
                  مستخدم ضيف: {2}", - "login_root_password" => "تعيين كلمة مرور المسؤول", - "login_root_password_repeat" => "تأكيد كلمة المرور مرة أخرى", - "login_root_password_equal" => "كلمات السر اثنين لا تتطابق!", - "login_root_password_tips" => "تعيين كلمة مرور المسؤول!", - "forget_password" => "نسيت كلمة المرور", - "forget_password_tips" => "نسيت كلمة مرور المسؤول:
                  الرجاء تسجيل الخادم حذف ./data/system/install.lock إعادة تعيين.

                  غير مسؤول نسيت كلمة المرور:
                  الرجاء الاتصال بمسؤول لإعادة تعيين!", - "copyright_desc" => "Kodexplorer هو نظام إدارة الوثائق على شبكة الإنترنت نالت استحسانا كبيرا، ويمكن استخدامه لإدارة وثيقة داخلية أو مشتركة، ويمكن أيضا أن تستخدم على خادم إدارة المواقع استبدال بروتوكول نقل الملفات، وحتى webIDE تطوير الإنترنت مباشرة. يمكنك أيضا برمجة التطور الثاني لدمج هذا في النظم الموجودة لديك.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "المانجو سحابة • مستكشف", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "المانجو سحابة • مستكشف", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer، KOD، kodCloud، ويب أو إس، webIDE، فب filemanage، filemanage، داو سحابة، سحابة المانجو، وأنظمة إدارة الوثائق، والقرص السحابية المشاريع، المستكشف ،، وثائق على شبكة الإنترنت، مكتب على الانترنت، المكتب على الانترنت، على الانترنت CAD المعاينة، والتحرير على الانترنت ، محرر على الانترنت", - "kod_meta_description" => "KodExplorer يمكن أن تلقي بظلالها الطريق (المانجو سابقا سحابة) هي الشركة الرائدة في مجال الحكومة / الغيوم الشركات الخاصة على الانترنت ونظام إدارة الوثائق عن المواقع الشخصية، نشر السحابية المشاريع الخاصة، وشبكة التخزين، وإدارة الوثائق على الانترنت، والمكتب على الانترنت لتوفير آمنة وخاضعة للرقابة، بسيطة وسهلة استخدام، وتطويعه للغاية المنتجات السحابية الخاصة. باستخدام ويندوز واجهة أسلوب وممارسات التشغيل، دون الحاجة إلى التكيف مع البدء بسرعة، ودعم المئات من تنسيق ملف المعاينة على الانترنت شعبية، وعرض وتحرير وقوية صديقة للبيئة، هو محاكمة مرة واحدة، لم يعد جزء لا يتجزأ من القطاع الخاص عروض السحابية.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "تسجيل الدخول", - "guest_login" => "تسجيل يهمنا", - "username" => "تسجيل الدخول", - "userNickName" => "لقب المستخدم", - "password" => "كلمة المرور", - "login_code" => "رموز", - "need_check_code" => "رمز التوثيق الدخول المفتوح", - "need_check_code_desc" => "بعد تسجيل الدخول ، يجب عليك إدخال رمز التحقق.", - "setting_csrf_protect" => "حماية CSRF المفتوحة", - "setting_csrf_protect_desc" => "بعد نوع افتتاح هجوم يمكن أن تحمي بشكل فعال CSRF", - "login_rember_password" => "تذكر كلمة المرور", - "setting_show_root_group" => "قائمة بجميع الإدارات", - "setting_show_root_group_desc" => "قسم شجرة الجذر دليل ما إذا كان سيتم سرد جميع الإدارات", - "setting_show_share_user" => "قائمة جميع المستخدمين", - "setting_show_share_user_desc" => "يتم سرد قسم الجذر دليل شجرة لجميع مشاركة المستخدم", - "setting_clear_user_recycle" => "إفراغ سلة المحذوفات لجميع المستخدمين", - "setting_clear_cache" => "إفراغ ذاكرة التخزين المؤقت", - "setting_icp" => "حقوق الطبع والنشر أو سجل رقم", - "setting_global_css" => "المغلق العالمي مخصص", - "setting_global_css_desc" => "وكل الصفحات إدراج المغلق مخصص", - "setting_global_html" => "إحصائية HTML كود", - "setting_global_html_desc" => "سيتم إدراج جميع صفحات هذا أتش تي أم أل كود الفقرة، رمز يمكن وضعها إحصاءات طرف ثالث", - "us" => "kodcloud.com", - "login_not_null" => "اسم المستخدم وكلمة المرور لا يمكن أن يكون فارغا!", - "code_error" => "رموز الخطأ", - "password_error" => "اسم المستخدم أو كلمة المرور غير صحيحة!", - "password_not_null" => "كلمة السر لا يمكن أن يكون فارغا!", - "old_password_error" => "القديمة كلمة السر غير صحيحة!", - "permission" => "إذن!", - "permission_edit" => "تعديل ضوابط", - "file_info_owner" => "مالك", - "file_info_group" => "مجموعة", - "no_permission" => "عطل المشرف هذا الامتياز!", - "no_permission_ext" => "المسؤول حظر هذا النوع من أذونات الملف", - "dialog_max" => "تعظيم", - "dialog_min" => "خفض", - "dialog_min_all" => "تصغير كافة", - "dialog_display_all" => "عرض كل النوافذ", - "dialog_close_all" => "إغلاق جميع", - "open" => "فتح", - "others" => "آخر", - "open_with" => "فتح ل ...", - "close" => "قريب", - "close_all" => "إغلاق جميع", - "close_left" => "إغلاق علامة التبويب اليسار", - "close_right" => "إغلاق علامات التبويب إلى اليمين", - "close_others" => "وثيقة أخرى", - "loading" => "عملية ...", - "warning" => "تحذير", - "getting" => "الحصول على ...", - "sending" => "نقل البيانات ...", - "data_error" => "خطأ البيانات!", - "get_success" => "الحصول على النجاح!", - "save_success" => "حفظ بنجاح!", - "success" => "عملية ناجحة", - "error" => "فشلت العملية", - "error_repeat" => "العملية الفاشلة، والاسم موجود بالفعل!", - "word_error" => "فشل ", - "word_success" => " نجاح", - "system_error" => "خطأ في النظام", - "name" => "اسم", - "type" => "نوع", - "contain" => "احتواء", - "address" => "موقع", - "size" => "حجم", - "byte" => "بايت", - "path" => "مسار", - "action" => "التشغيل", - "create_time" => "خلق", - "modify_time" => "تعديل", - "last_time" => "آخر زيارة", - "sort_type" => "الترتيب حسب", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "الدليل العام", - "system_path_not_change" => "دليل النظام، لا يمكن تعديلها", - "file" => "ملف", - "folder" => "ملف", - "copy" => "نسخة", - "past" => "عصا", - "clone" => "إنشاء نسخة", - "cute" => "جز", - "cute_to" => "الانتقال إلى ...", - "copy_to" => "نسخة ...", - "remove" => "حذف", - "remove_force" => "إزالة", - "info" => "ممتلكات", - "list_type" => "رأي", - "list_icon" => "رمز مجموعة", - "list_list" => "ترتيب قائمة", - "list_list_split" => "وضع العمود", - "sort_up" => "زيادة", - "sort_down" => "تقليل", - "order_type" => "الترتيب حسب", - "order_desc" => "تنازلي", - "order_asc" => "تصاعدي", - "rename" => "إعادة تسمية", - "add_to_fav" => "أضف إلى المفضلة", - "search_in_path" => "البحث في المجلد", - "add_to_play" => "إضافة إلى قائمة تشغيل", - "manage_fav" => "إدارة المفضلة", - "refresh_tree" => "شجرة الدليل على تحديث", - "manage_folder" => "إدارة الدليل", - "close_menu" => "إغلاق القائمة", - "zip" => "إنشاء حزمة مضغوط", - "unzip" => "لاستخراج ...", - "unzip_folder" => "فك الضغط إلى مجلد", - "unzip_this" => "استخراج للتيار", - "unzip_to" => "لاستخراج ...", - "zipview_file_big" => "الملف كبير جدا، ومن ثم استخراج عملية المعاينة!", - "clipboard" => "عرض الحافظة", - "clipboard_clear" => "الحافظة فارغة", - "full_screen" => "شاشة كاملة", - "folder_info_item" => "البنود", - "folder_info_item_select" => "واختيار", - "file_load_all" => "انقر نقرا مزدوجا فوق لتحميل جميع ......", - "tips" => "موجه", - "ziping" => "فتح سوستة ...", - "unziping" => "استخراج ...", - "moving" => "تشغيل خدمات الهاتف النقال ...", - "remove_title" => "تأكيد حذف", - "remove_info" => "تأكيد لحذف العنصر المحدد؟", - "remove_title_force" => "حذفه نهائيا", - "remove_info_force" => "أنت متأكد أنك تريد حذف هذه الوثيقة بشكل دائم؟", - "name_isexists" => "خطأ، والاسم موجود بالفعل!", - "install" => "تثبيت", - "width" => "عرض", - "height" => "ارتفاع", - "app" => "تطبيقات الخفيفة", - "app_store" => "تطبيقات الخفيفة", - "app_create" => "إنشاء تطبيق", - "app_edit" => "تعديل التطبيق", - "app_group_all" => "كامل", - "app_group_game" => "لعبة", - "app_group_tools" => "أداة", - "app_group_reader" => "قرأ", - "app_group_movie" => "تلفزيون", - "app_group_music" => "موسيقى", - "app_group_life" => "حياة", - "app_group_others" => "آخر", - "app_desc" => "وصف", - "app_icon" => "تطبيقات رمز", - "app_icon_show" => "عنوان الموقع أو الدليل", - "app_group" => "حزم التطبيق", - "app_type" => "نوع", - "app_type_url" => "صلة", - "app_type_code" => "تمديد شبيبة", - "app_display" => "الخارج", - "app_display_border" => "بلا حدود (أي تحديد بلا حدود)", - "app_display_size" => "تغيير حجم (راجع للتعديل)", - "app_size" => "حجم", - "app_url" => "عنوان الرابط", - "app_code" => "كود شبيبة", - "edit" => "تحرير", - "edit_can_not" => "لا ملف نصي", - "edit_too_big" => "الملف كبير جدا، لا يمكن أن يكون أكبر من 40M", - "open_default" => "افتراضي المفتوحة", - "open_ie" => "فتح المتصفح", - "refresh" => "تحديث", - "refresh_all" => "فرض تحديث", - "newfile" => "ملف جديد", - "newfile_save_as" => "حفظ ل", - "newfolder" => "مجلد جديد", - "newothers" => "جديد أخرى", - "path_loading" => "تحميل ...", - "go" => "المشي!", - "go_up" => "الطبقة العليا", - "history_next" => "إلى الأمام", - "history_back" => "تراجع", - "address_in_edit" => "اضغط للدخول في وضع التحرير", - "double_click_rename" => "انقر نقرا مزدوجا فوق إعادة تسمية", - "double_click_open" => "انقر نقرا مزدوجا لفتح", - "path_null" => "مجلد فارغ!", - "file_size_title" => "رمز الحجم", - "file_size_small_super" => "الصغيرة جدا", - "file_size_small" => "أيقونات صغيرة", - "file_size_default" => "الرموز", - "file_size_big" => "رموز كبيرة", - "file_size_big_super" => "دلالات كبيرة", - "upload" => "تحميل", - "upload_ready" => "انتظار للتحميل", - "upload_success" => "تحميل ناجحة", - "upload_path_current" => "التبديل إلى الدليل الحالي", - "upload_select" => "حدد ملف", - "upload_max_size" => "الحد الأقصى المسموح به", - "upload_size_info" => "إذا كنت ترغب في تكوين المزيد، يرجى تعديل الحد الأقصى المسموح PHP.INI تحميل. عند تحديد ملف أكبر من هذا التكوين يتم تصفيتها تلقائيا.", - "upload_error" => "فشل تحميل", - "upload_error_http" => "شبكة أو جدار حماية أخطاء", - "upload_muti" => "تحميل متعددة ملف", - "upload_drag" => "سحب وإسقاط تحميل", - "upload_drag_tips" => "تخفيف لتحميل!", - "path_not_allow" => "اسم الملف غير مسموح", - "download" => "تحميل", - "downloading" => "تحميل ...", - "download_address" => "تحميل", - "download_ready" => "سيتم تحميل", - "download_success" => "تحميل النجاح!", - "download_error" => "تحميل فشل!", - "download_error_create" => "خطأ الكتابة!", - "download_error_exists" => "رابط إلى ملف فشل!", - "upload_error_null" => "أي ملف!", - "upload_error_big" => "يتجاوز حجم الملف حدود الخادم", - "upload_error_move" => "فشل نقل الملف!", - "upload_error_exists" => "الملف موجود مسبقا", - "upload_local" => "تحميل المحلي", - "download_from_server" => "بعد تحميل", - "save_path" => "حفظ مسار", - "upload_select_muti" => "إن تعددية تحميل ملف اختيار", - "search" => "بحث", - "searching" => "البحث ...", - "search_result" => "نتائج البحث", - "seach_result_too_more" => "نتائج البحث كثيرة جدا، فمن المستحسن لدليل أو الكلمات", - "search_null" => "لا النتائج!", - "search_uplow" => "حالة الأحرف", - "search_content" => "محتويات ملف البحث", - "search_info" => "الرجاء إدخال مصطلح البحث ومسارات البحث!", - "search_ext_tips" => "بواسطة | فصلها، على سبيل المثال فب | شبيبة | المغلق
                  لا تملأ بحث ملف النص الافتراضي", - "file_type" => "نوع الملف", - "goto" => "انتقال إلى", - "server_dwonload_desc" => "تم إضافة مهمة إلى قائمة التحميل", - "parent_permission" => "أذونات الدليل الأم", - "root_path" => "المستندات", - "lib" => "مخزن", - "fav" => "المرجعية", - "desktop" => "سطح المكتب", - "browser" => "المتصفح", - "my_computer" => "جهاز الكمبيوتر الخاص بي", - "recycle" => "قمامة", - "my_document" => "المستندات", - "my_picture" => "صوري", - "my_music" => "الموسيقى", - "my_movie" => "بلدي فيديو", - "my_download" => "بلدي التنزيلات", - "ui_desktop" => "سطح المكتب", - "ui_explorer" => "إدارة ملف", - "ui_editor" => "محرر", - "adminer" => "adminer", - "ui_project_home" => "مشروع الرئيسية", - "ui_login" => "تسجيل الدخول", - "ui_logout" => "استقال", - "setting" => "إعدادات النظام", - "setting_title" => "خيارات", - "setting_user" => "مركز الشخصية", - "setting_password" => "تغيير كلمة المرور", - "setting_password_old" => "كلمة السر القديمة", - "setting_password_new" => "المنقحة ل", - "setting_language" => "إعدادات اللغة", - "setting_member" => "إدارة المستخدم", - "setting_group" => "إدارة مجموعة المستخدم", - "setting_group_add" => "إضافة مجموعة العضو", - "setting_group_edit" => "تحرير المجموعات العضو", - "setting_theme" => "إعدادات موضوع", - "setting_wall" => "إعدادات خلفية", - "setting_wall_desktop" => "خلفية سطح المكتب", - "setting_wall_desktop_list" => "إدارة خلفية سطح المكتب", - "setting_wall_login_list" => "تسجيل الدخول إدارة خلفيات", - "setting_wall_login_tips" => "نصيحة: عندما يكون هناك أكثر من قطعة واحدة ، سيتم تدوير خلفية واجهة تسجيل الدخول بشكل عشوائي", - "setting_wall_diy" => "خلفية مخصصة:", - "setting_wall_info" => "الصورة عنوان URL، يمكن أن الصور المحلية يكون الحق في الحصول على المتصفح لفتح صورة", - "setting_fav" => "مدير المرجعية", - "setting_help" => "استخدام التعليمات", - "setting_about" => "حول أعمال", - "setting_success" => "وقد اتخذت تعديل أثر!", - "can_not_repeat" => "لا يسمح للتكرار", - "absolute_path" => "عنوان مطلق", - "group" => "مجموعات المستخدمين", - "data_not_full" => "قدمت بيانات غير مكتملة!", - "default_user_can_not_do" => "لا يمكن للمستخدم الافتراضي تعمل", - "default_group_can_not_do" => "لا يمكن للمجموعات المستخدم الافتراضية تعمل", - "username_can_not_null" => "اسم المستخدم لا يمكن أن تكون فارغة!", - "groupname_can_not_null" => "اسم مجموعة المستخدم لا يمكن أن تكون فارغة!", - "groupdesc_can_not_null" => "مجموعة مستخدمي الوصف لا يمكن أن يكون فارغا!", - "group_move_user_error" => "تحرك فشل مستخدمين مجموعة مستخدمي", - "group_already_remove" => "تم حذف مجموعة المستخدم", - "group_not_exists" => "عدم وجود هذا الفريق المستعمل", - "member_add" => "إضافة مستخدم", - "password_null_not_update" => "وقالوا انهم لم يتغير لا شغل في كلمة السر", - "if_save_file_tips" => "لا يتم حفظ بعض الملفات ، هل أنت متأكد من إغلاق النافذة؟", - "if_save_file" => "لم يتم حفظ الملف، تريد حفظ؟", - "if_remove" => "تأكيد حذف", - "member_remove_tips" => "بعد إزالة دليل المستخدم سيتم مسح", - "group_remove_tips" => "بعد إزالة مجموعة المستخدم من المستخدمين لا يمكن تسجيل الدخول
                  (تحتاج إلى إعادة تعيين مجموعة المستخدم)", - "group_name" => "اسم مجموعة المستخدم", - "group_name_tips" => "توصية الاسم باللغة الانكليزية، لا يمكن تكرارها", - "group_desc" => "اسم العرض", - "group_desc_tips" => "اسم المجموعة الوصف", - "group_role_ext" => "القيود تمديد", - "group_role_ext_tips" => "مع متعددة | فصل", - "group_role_file" => "إدارة ملف", - "group_role_upload" => "السماح بالتحميل", - "group_role_user" => "بيانات المستخدم", - "group_role_group" => "إدارة مجموعة المستخدم", - "group_role_member" => "إدارة المستخدم", - "group_role_mkfile" => "ملف جديد", - "group_role_mkdir" => "مجلد جديد", - "group_role_pathrname" => "إعادة تسمية", - "group_role_pathdelete" => "حذف ملف", - "group_role_pathinfo" => "خصائص ملف", - "group_role_pathmove" => "الخطوة (نسخ / قص / لصق / جر العملية)", - "group_role_zip" => "ضغط", - "group_role_unzip" => "بفك", - "group_role_search" => "بحث", - "group_role_filesave" => "حفظ الملف إلى تعديل", - "group_role_can_upload" => "تحميل وتنزيل", - "group_role_download" => "بعد تحميل", - "group_role_passowrd" => "تغيير كلمة المرور", - "group_role_config" => "بيانات التكوين", - "group_role_fav" => "عمليات المرجعية (إضافة / تحرير / حذف)", - "action_list" => "عرض قائمة", - "action_add" => "إضافة", - "action_edit" => "تحرير", - "action_del" => "حذف", - "group_role_ext_warning" => "تحميل لا تسمح بمثل هذه الملفات،
                  إعادة تسمية (التي أعيدت تسميتها لتمديد معين)،
                  تعديل إنقاذ، بعد التحميل، استخراج", - "group_tips" => "
                • 1. لا يمكن تكرار اسم مجموعة المستخدم ، بعد تعديل اسم المجموعة ، فإنها تنتمي إلى المستخدم المعاد تنظيمها وترتبط تلقائيًا.
                • 2. الحد من العلاقة بين أمن النظام ، يرجى توخي الحذر (إذا قمت بإنشاء php جديد في دليل الويب ؛ فهذا يعني أن تغيير أذونات البرنامج لهذا المستخدم يكاد يكون مستحيلاً)
                • 3. إدارة الأسرة ، وإدارة مجموعة الحقوق ، ومشاهدة الحقوق وإضافة وحذف وحذف الحقوق مرتبطة ، وترتبط البرامج تلقائيا
                • 4. بعد تعيين مجموعة الإذن لإضافة مجموعة الإذن ، لا يتم الحصول على الإذن التالي (هذا الإذن يعادل أعلى إذن).
                • ", - "not_null" => "الحقول المطلوبة لا يمكن أن يكون فارغا!", - "picture_can_not_null" => "صور لا يمكن أن يكون فارغا!", - "rname_success" => "إعادة تسمية النجاح!", - "please_inpute_search_words" => "الرجاء إدخال سلسلة للبحث عن", - "remove_success" => "حذف بنجاح!", - "remove_fali" => "حذف فشل!", - "clipboard_null" => "الحافظة فارغة!", - "create_success" => "نجاح جديد!", - "create_error" => "فشل جديد، والتحقق من أذونات الدليل!", - "copy_success" => "[نسخ] - تغطية نجاح الحافظة!", - "cute_success" => "[قطع] - تغطية نجاح الحافظة!", - "clipboard_state" => "وضع الحافظة:", - "no_permission_write_all" => "الملف أو الدليل غير قابل للكتابة", - "no_permission_write_file" => "لايوجد ملف إذن الكتابة", - "no_permission_read_all" => "الملف أو الدليل لا يوجد لديه إذن القراءة", - "copy_not_exists" => "لا وجود مصدر", - "current_has_parent" => "المجلد الهدف هو مجلد فرعي من المجلد المصدر!", - "past_success" => "اكتمال عملية اللصق", - "cute_past_success" => "اكتمالعملية قطع(تم حذف الملف المصدر، الحافظة فارغة)", - "zip_success" => "ضغط الانتهاء", - "not_zip" => "لا أرشيف", - "zip_null" => "لم يتم تحديد ملف أو دليل", - "unzip_success" => "بفك كاملة", - "gotoline" => "القفز إلى خط", - "path_is_current" => "المسار والمسار الحالي لفتح نفسها!", - "path_exists" => "الاسم موجود بالفعل!", - "undo" => "إلغاء", - "redo" => "مكافحة إلغاء", - "preview" => "المعاينة", - "wordwrap" => "التفاف", - "show_gutter" => "تظهر أرقام الأسطر", - "char_all_display" => "تظهر الأحرف غير مرئية", - "auto_complete" => "يطالب تلقائيا", - "auto_save" => "حفظ تلقائيا", - "function_list" => "قائمة وظيفة", - "code_theme" => "الترميز ستايل", - "font_size" => "حجم الخط", - "confirm" => "هل تريد بالتأكيد القيام بذلك؟", - "button_ok" => "حدد", - "button_submit" => "عرض", - "button_set" => "نصب", - "button_cancel" => "ألغيت", - "button_edit" => "تحرير", - "button_save" => "حفظ", - "button_apply" => "تطبق", - "button_save_all" => "حفظ الكل", - "button_not_save" => "لا تقم بحفظ", - "button_add" => "إضافة", - "button_back_add" => "العودة إلى إضافة", - "button_del" => "حذف", - "button_save_edit" => "حفظ التغييرات", - "button_save_submit" => "حفظ إرسال", - "button_more" => "أكثر", - "button_select_all" => "تحديد الكل / عكس التحديد", - "charset_AUTO" => "تحديد تلقائي", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "العربية", - "charset_ISO_8859_6" => "العربية", - "charset_ISO_8859_10" => "اللغات الاسكندنافية", - "charset_CP1257" => "لغات البلطيق", - "charset_ISO_8859_13" => "لغات البلطيق", - "charset_ISO_8859_4" => "لغات البلطيق", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "الجورجية", - "charset_PT154" => "الكازاخية", - "charset_CP949" => "الكورية", - "charset_EUC_KR" => "الكورية", - "charset_GB18030" => "الصينية المبسطة", - "charset_GBK" => "الصينية المبسطة", - "charset_ISO_8859_14" => "سلتيك", - "charset_CP1133" => "لاو", - "charset_ISO_8859_16" => "الرومانية", - "charset_ISO_8859_3" => "جنوب أوروبا", - "charset_EUC_JP" => "اليابانية", - "charset_ISO_2022_JP" => "اليابانية", - "charset_SHIFT_JIS" => "اليابانية", - "charset_KOI8_T" => "اللغة الطاجيكية", - "charset_ISO_8859_11" => "التايلاندية", - "charset_TIS_620" => "التايلاندية", - "charset_CP1254" => "اللغة التركية", - "charset_CP1251" => "السيريلية", - "charset_ISO_8859_5" => "السيريلية", - "charset_KOI8_R" => "السيريلية", - "charset_KOI8_U" => "السيريلية", - "charset_CP1252" => "اللغات الأوروبية الغربية", - "charset_ISO_8859_1" => "اللغات الأوروبية الغربية", - "charset_ISO_8859_15" => "اللغات الأوروبية الغربية", - "charset_Macintosh" => "اللغات الأوروبية الغربية", - "charset_CP1255" => "العبرية", - "charset_ISO_8859_8" => "العبرية", - "charset_CP1253" => "اللغة اليونانية", - "charset_ISO_8859_7" => "اللغة اليونانية", - "charset_ARMSCII_8" => "الأرميني", - "charset_CP1258" => "الفيتنامية", - "charset_VISCII" => "الفيتنامية", - "charset_CP1250" => "اللغات الأوروبية المركزية", - "charset_ISO_8859_2" => "اللغات الأوروبية المركزية", - "charset_default_set" => "ترميز ملف", - "charset_convert_save" => "حفظ الملف المشفرة كما", - "PluginCenter" => "مركز التوصيل", - "PluginBuy" => "إذن الشراء", - "PluginInstalled" => "تم تثبيت", - "PluginUpdate" => "تحديث", - "PluginListNull" => "لا يوجد أي محتوى!", - "PluginType" => "تصنيف", - "PluginTypeAll" => "كامل", - "PluginTypeFile" => "ملف المحسن", - "PluginTypeSafe" => "أدوات الأمن", - "PluginTypeTools" => "فائدة", - "PluginTypeMedia" => "الوسائط المتعددة", - "PluginTypeOthers" => "آخر", - "PluginInstall" => "تثبيت المكونات", - "PluginEnable" => "تمكين المكونات الإضافية", - "PluginDisable" => "تعطيل", - "PluginRemove" => "إلغاء تثبيت المكونات", - "PluginConfig" => "تكوين المساعد", - "PluginStatus" => "دولة", - "PluginStatusEnabled" => "تمكين", - "PluginStatusDisabled" => "لم يتم تمكين", - "PluginStatusNotInstall" => "لا المثبتة", - "PluginInstalling" => "تركيب ...", - "PluginHasUpdate" => "التحديثات", - "PluginUpdateStart" => "تحديث المكونات في", - "PluginNeedConfig" => "الحاجة إلى تمكين التكوين الأولي", - "PluginConfigNotNull" => "الحقول المطلوبة لا يمكن أن يكون فارغا!", - "PluginOpen" => "فتح", - "PluginAuther" => "مؤلف", - "PluginVersion" => "طبعة", - "PluginDownloadNumber" => "التثبيت", - "PluginBack" => "عودة", - "PluginReadme" => "وصف", - "PluginResetConfig" => "استعادة الإعدادات الافتراضية", - "PluginInstallSelf" => "التثبيت اليدوي", - "Plugin.config.auth" => "أذونات", - "Plugin.config.authDesc" => "كافة الإعدادات المتاحة، أو تحديد المستخدمين، ومجموعات المستخدمين وجماعات حقوق يمكن استخدام", - "Plugin.config.authOpen" => "الدخول المفتوح", - "Plugin.config.authOpenDesc" => "لا حاجة لزيارة يمكن الوصول إليها، ويمكن استخدامها للاتصال الخارجي واجهة", - "Plugin.config.authAll" => "حائز", - "Plugin.config.authUser" => "المستخدم", - "Plugin.config.authGroup" => "قسم مخصص", - "Plugin.config.authRole" => "جماعة حقوقية", - "Plugin.Config.openWith" => "أسلوب مفتوح", - "Plugin.Config.openWithDilog" => "الحوار الداخلي", - "Plugin.Config.openWithWindow" => "فتح صفحة جديدة", - "Plugin.Config.fileSort" => "الأولوية جمعية الإرشاد", - "Plugin.Config.fileSortDesc" => "أكبر التمديد لفتح أولوية أعلى", - "Plugin.Config.fileExt" => "تنسيقات الملفات المدعومة", - "Plugin.Config.fileExtDesc" => "تمديد المرتبطة في المكونات", - "Plugin.tab.basic" => "الإعدادات الأساسية", - "Plugin.tab.auth" => "أذونات", - "Plugin.tab.others" => "الإعدادات الأخرى", - "Plugin.default.aceEditor" => "محرر الآس", - "Plugin.default.htmlView" => "معاينة صفحة ويب", - "Plugin.default.picasa" => "بيكاسا صورة التصفح", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "لاعب jPlayer", - "Plugin.auth.viewList" => "قائمة المكونات الإضافية", - "Plugin.auth.setting" => "إعدادات البرنامج المساعد", - "Plugin.auth.status" => "إيقاف", - "Plugin.auth.install" => "تثبيت / إلغاء", - "Explorer.UI.openWith" => "حدد فتح", - "Explorer.UI.openWithText" => "المفكرة لفتح", - "Explorer.UI.appSetDefault" => "تعيين مفتوحة الافتراضي", - "Explorer.UI.appAwaysOpen" => "دائما استخدام البرنامج المحدد لفتح هذا الملف", - "Explorer.UI.selectAppDesc" => "حدد البرنامج الذي تريد فتح هذا الملف", - "Explorer.UI.selectAppWarning" => "يرجى اختيار التطبيق!", - "Explorer.UI.appTypeSupport" => "أيد", - "Explorer.UI.appTypeAll" => "جميع التطبيقات", - "kodApp.oexe.edit" => "تحرير تطبيق الضوء", - "kodApp.oexe.open" => "فتح التطبيق من الضوء" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/bg/about.html b/plugin/document/kod/config/i18n/bg/about.html deleted file mode 100644 index 5d3e0f1e1..000000000 --- a/plugin/document/kod/config/i18n/bg/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer т.е. Какво?
                  -

                  KODExplorer е с отворен код, уеб-базирани управление на онлайн документ, редактор на код. Тя осигурява един вид класически Windows потребителски интерфейс, набор от онлайн управление на документи, файл преглед, редактиране, качване, изтегляне, разархивирайте онлайн възпроизвеждане на музика. Позволява да се постигне уеб програмиране директно в браузъра, изходния код файл преглед, и разположи собственика на сайта и местната операцията толкова лесно, бързо и безопасно опит.

                  -

                  - дизайн -

                  -

                  класическата традиция, стремежът към иновации, за да предоставят на потребителите с удобен, сигурен и лесен за използване онлайн система за управление на облак.

                  -

                  когато (когато), където (където), има в интернет всеки път, когато искате (искате) е вашият инструмент за управление (4W политика).

                  -

                  - потребителски ориентирани -

                  -

                  в момента система за управление на KODExplorer разположени главно в личния Cloud Hosting, малък предприятието облак ресурси, управление на мрежата диск, управление на малки и средни обекти. Web Developer & Мастер (ветерани): онлайн редактор, компресиран бекъп, разгръщане, класически експлоатация прозорци интерфейс, Лесно е да започнете и да се отървете от SSH домакин, FTP команда сложни сондажни работи.

                  -

                  личен частен облак (новобранец): Управление на мрежови дискови ресурси, на същата операция класически Windows интерфейс, можете да поставите музика Преглед на мрежовото устройство на, телевизори файлове, качване и сваляне на бързо и лесно.

                  -
                  - -
                  -
                  Удобства
                  -

                  цялостна управление на документи, мощен онлайн файл редактор

                  -

                  където и да сте, можете да управлявате вашите файлове и онлайн забавление, онлайн код писане! Само като подходящи за използване като операционната система.

                  -

                  обширна полето местен опит трансплантация операция, плъзгане, избор кутия, бързи клавиши, търсене на файлове (съдържание търсене) ......

                  -

                  подбор кутия, плъзгане движение, влачене и пускане качването, онлайн редактор, видео плейър, декомпресиране. Пълен Аякс изпълнение гаранция и опит!

                  -

                  всяка функция директна непрекъсната връзка; в диалоговия форма, функции за управление на много задачи

                  -

                  Editor поддържа мулти-документ; подкрепа ZendCoding HTML, CSS, JS-висока ефективността на кодирането!

                  -

                  перфектен китайски подкрепа, чете решават различни ситуации;

                  -
                  - -
                  -
                  отворен код технология приемане
                  -

                  1.Jquery:jpuery (плъгин: Hotkeys.ztree.contentmenu) .js мейнстрийм рамка за развитие. Операция на операцията по Dom, BOM, операцията CSS, и Аякс пакет

                  -

                  2.ArtDialog:красив дизайн, силно браузър съвместимост диалоговия джаджа. Така че поп-нагоре дръжка, събития, и предаване на данни, за да получите по-добра единно управление

                  -

                  3.Ztree:контрол списък дърво, мащабируемост е много силен дърво манипулация на данни джаджа

                  -

                  4.codemirror:редактор код JS плъгини, поддържа множество програмни езици за подчертаване

                  -

                  5.zendcoding:опора HTML кодове бърз запис на плъгини. Опростява определението на код е написан. Обикновено компилация

                  -

                  6.less:ефективност, функционален модел на развитие CSS, за да се подобри предния край на CSS стилове повторна употреба на , Обикновено компилация

                  -

                  7.SWFUpload:флаш качване на файлове

                  -

                  8 .CMP4:много добър играч флаш плъгин мултимедийни файлове, поддръжка на поточна медия, популярен инструмент за възпроизвеждане на музика видео. Подкрепа за кожата, силно конфигурируеми настройки. Dynamic списък XML зареден. MMS поточна медия, RSTP отворен лиценз източник подкрепа за възпроизвеждане на носители

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/bg/edit.html b/plugin/document/kod/config/i18n/bg/edit.html deleted file mode 100644 index c654e4ab4..000000000 --- a/plugin/document/kod/config/i18n/bg/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  Богата функционалност

                  -

                  Код автоматично подсказва

                  -

                  Multi-тема: Изберете вашия любим програмиране стил

                  -

                  По поръчка на шрифта: за употреба на сцена

                  -

                  Multi редактиране на курсора, за редактиране на блок онлайн опит в програмирането, сравнима с възвишеното

                  -

                  Блок сгъване, разширяване; увийте

                  -

                  Поддръжка на множество табове, плъзнете превключване последователност;

                  -

                  Поддържането на множество документи, търсене и заместване; История;

                  -

                  Auto-пълна [], {}, (), '' ''

                  -

                  Онлайн преглед в реално време, която ви позволява да се влюби в програми онлайн!

                  -

                  zendcodeing подкрепа, пишат код осемдесет

                  -

                  Допълнителни функции чакат за вашето откритие ......

                  -
                  -
                  -

                  150 вида код Отбелязването

                  -

                  Съвет: HTML, JavaScript, CSS, по-малко, дързък, SCSS

                  -

                  Web Design: PHP, Perl, Python, рубин, elang, отиде ...

                  -

                  Традиционните езици: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Други: евтино, черупки, SQL, Lua, XML, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Shortcut действие

                  -
                   Обикновено използваните комбинации: 
                  - Ctrl + S за да запаметите 
                  - Ctrl + A изберете всички Ctrl + х Cut 
                  - Ctrl + C Ctrl + V паста копие 
                  - Ctrl + Z Undo Undo Anti Ctrl + Y 
                  - Ctrl + F, за да се намери замяна Ctrl + F + F 
                  - Win + ALT + 0 колапс всички победа + Alt + Shift + 0 Отваряне на всички 
                  - ESC [търсене Exit отменя автоматично подсказва ...] 
                  - Ctrl-Shift-ите Preview 
                  - Ctrl-Shift-д шоу & Close функция 
                  -
                  -
                   Изберете: 
                  - Mouse палатка - драг 
                  - SHIFT + начало / край / нагоре / ляво / надолу / надясно 
                  - SHIFT + PageUp / PageDown флип нагоре и надолу, за да изберете 
                  - Ctrl + Shift + начало / край на текущата курсора в началото и края 
                  - ALT + мишката, за да плъзнете селекцията на блок 
                  - Ctrl + Alt + г партида изберете и въведете текущата редактор мулти-таб 
                  -
                  -
                   Курсор: 
                  - начало / край / нагоре / ляво / надолу / надясно 
                  - Ctrl + начало / край преместите курсора на документ главата / опашката 
                  - Ctrl + P Идете на съвпадение тагове 
                  - PageUp / PageDown курсора нагоре и надолу 
                  - ALT + лява / дясна стрелка, за да се премести в горната част на линията 
                  - Shift + ляво / дясно на курсора до края на реда и 
                  - Ctrl + L, за да скочи до специфичен ред 
                  - Ctrl + Alt + нагоре / надолу (по-долу) се увеличи на курсора 
                  -
                  -
                   Edit: 
                  - Ctrl + / Коментар & разкоментирайте Ctrl + Alt + обосновано 
                  - раздела маса смяна подравняване + маса общата маса напредък 
                  - изтриване изтриване изтриване на цялата линия Ctrl + D 
                  - Ctrl + Delete, за да изтриете ред на правилната дума 
                  - Ctrl / Shift + Backspace, за да изтриете думата в ляво 
                  - ALT + SHIFT + нагоре / надолу и се добавя към линията на копие (по-долу) самолет 
                  - Alt + Delete, за да изтриете съдържанието на правото на курсора 
                  - ALT + нагоре / надолу на текущия ред и ред (следващия обмен линия) на 
                  - Ctrl + Shift + D редове копирани и добавени към следното 
                  - Ctrl + Delete, за да изтриете правото на думата 
                  - Ctrl + Shift + U превърнати в малки букви 
                  - Ctrl + U избран текст в главни букви 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/bg/help.html b/plugin/document/kod/config/i18n/bg/help.html deleted file mode 100644 index 603874718..000000000 --- a/plugin/document/kod/config/i18n/bg/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Управление на файлове
                  -

                  File Selection: радио, мишка палатка, смени изборите, Ctrl случайно избран, клавиатурата нагоре и надолу, у дома, край селекция.

                  -

                  операция на файла: След като изберете даден файл, можете да копирате, нарязани, изтриване, разглеждане на свойствата на компресия, преименувате, отворен за визуализация и други операции ......

                  -

                  Качване на файлове: Качване на множество файлове партида; HTML5 плъзгане качване (плъзнете, за да безпроблемно качване прозорец, влачене и пускане подкрепа за папки)

                  -

                  Право функция: десния файл, папка, нали, по-точно след операция на изборите, десктоп, надясно, надясно директория дърво, прав-обвързани бързи команди от менюто
                  - (Select All - Copy - Cut - Paste - Изтриване - Преименуване, определен ......)

                  -

                  File Browser: Режим Списък, режим икона; двукратно върху в подпапки; адресната лента операция; отворите запис папка противоречащи запис (напред и назад)

                  -

                  Подкрепа влачене и пускане: Проверете плъзгане, нарязани да се постигне определен функцията папка

                  -

                  Бързи клавиши: изтриване изтриване, Ctrl + A Select All, Ctrl + C за копиране, + X Cut, търсене на файлове (търсене на съдържание) Ctrl

                  -
                  -
                  -
                  Преглед на файла
                  -

                  Преглед на файла: видите съдържанието на редактиране на текстов файл и спестяване; HTML, SWF файл преглед,

                  -

                  Преглед на снимката: автоматично генериране на миниатюри, графични слайд шоу;

                  -

                  Аудио възпроизвеждане: играят онлайн музика и видео файлове; поддръжка MP3, WMA, средата, AAC, WAV, mp4,

                  -

                  Видео: онлайн видео възпроизвеждане, поддържаните формати: Flv, F4V, 3gp

                  -

                  офис: преслушване, поддържаните формати: док, DOCX, PPT, PPTX, XLS, XLSX

                  -
                  -
                  -
                  Shortcuts
                  -

                  въведете Open

                  -

                  Ctrl + A изберете всички

                  -

                  Ctrl + C, за да копирате избрания

                  -

                  Ctrl + V, за да поставите

                  -

                  Ctrl + х Cut

                  -

                  Ctrl + F за да търсите в текущата директория

                  -

                  ALT + N New File

                  -

                  ALT + m New Folder

                  -

                  изтриване Изтриване на избрания

                  -

                  Backspace Back

                  -

                  Ctrl + Backspace напред

                  -

                  f2 Rename избран (папка)

                  -

                  начало / край / нагоре / надолу / наляво / надясно, за да изберете файла

                  -

                  Anykey Проверете, за да натиснете първата буква на символни файлове и папки, избран автоматичен цикъл

                  -
                  diff --git a/plugin/document/kod/config/i18n/bg/main.php b/plugin/document/kod/config/i18n/bg/main.php deleted file mode 100644 index a8dd4b4fc..000000000 --- a/plugin/document/kod/config/i18n/bg/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Моля, изберете файла, ...", - "path_api_select_folder" => "Моля изберете папка ...", - "path_api_select_image" => "Моля изберете изображение ...", - "share_can_upload" => "Оставя качване", - "move_error" => "Движете се провали", - "setting_basic" => "Основни настройки", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Open Анимация", - "recycle_open_if" => "Отворете кошчето", - "recycle_open" => "отворено", - "setting_user_recycle_desc" => "След изтриването ще бъде изтрито директно физическо изтриване", - "setting_user_animate_desc" => "Прозорец отворен и друга анимация", - "setting_user_sound_desc" => "Работен звук", - "setting_user_imageThumb" => "Миниатюри на картини", - "setting_user_imageThumb_desc" => "По-добро преживяване при сърфиране след отваряне", - "setting_user_fileSelect" => "Отворете иконата на файла за проверка", - "setting_user_fileSelect_desc" => "Икона на файла за проверка на левия бутон, щракнете с десния бутон на мишката върху менюто", - "qrcode" => "URL QR код", - "theme_mac" => "Mac минималистичен бял", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "Metro светло зелено", - "theme_metro_purple" => "Metro елегантна лилава", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro ярко оранжево", - "theme_alpha_image" => "Bright - летене", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "персонализирана", - "theme_diy_title" => "Настройки обичай тема", - "theme_diy_background" => "фон", - "theme_diy_image" => "снимка", - "theme_diy_color_blur" => "Gradient цвят", - "theme_diy_image_blur" => "Снимка на размазването", - "theme_diy_image_url" => "Снимки адрес", - "theme_diy_color_start" => "Започвайки цвят", - "theme_diy_color_end" => "Край Color", - "theme_diy_color_radius" => "Gradient ъгъл", - "system_role_admin_set" => "Администраторите имат всички права, без да се определят!", - "login_error_user_not_use" => "Потребителят е деактивиран! Моля, свържете се с администратора", - "login_error_kod_version" => "Версия конфликт", - "login_error_role" => "Преглед на разрешенията група не съществува, моля свържете се с администратора", - "no_permission_group" => "Вие не сте в тази група!", - "no_permission_write" => "Директорията не разполага с права за запис", - "user" => "потребител", - "save_as" => "Запази като", - "check_update" => "Актуализация", - "keyboard_type" => "клавиатура Mode", - "font_family" => "Fonts", - "code_mode" => "Оцветяване на синтаксиса", - "path_can_not_share" => "Поддържа споделяне само на собствените си документи!", - "path_can_not_action" => "Тази директория не поддържа тази операция!", - "wap_page_pc" => "PC версия", - "wap_page_phone" => "подвижен", - "image_size" => "размери на изображението", - "no_permission_action" => "Не е нужно това разрешение, моля, свържете се с администратора!", - "path_is_root_tips" => "Той е дошъл в главната директория!", - "kod_group" => "организация", - "my_kod_group" => "Аз съм в отдела", - "space_tips_default" => "(GB) 0 Няма ограничение", - "space_tips_full" => "Без да се ограничава", - "space_size" => "пространство", - "space_size_use" => "Използване на пространството", - "space_is_full" => "Няма останало достатъчно място, моля свържете се с администратора!", - "system_open_true_path" => "Успешно открит през файловия мениджър!", - "group_role_error" => "Роля разрешения грешка (няма настройки разрешение)", - "group_role_error_admin" => "Недостатъчни разрешения", - "markdown_content" => "Съдържание", - "system_group" => "Потребители и отдели", - "system_group_edit" => "Управление на отдела", - "system_group_role" => "Роля идентичност", - "system_group_create" => "Нов отдел", - "system_group_name" => "Име на отдел", - "system_group_father" => "Отличен отдел", - "system_group_add" => "Добавете подразделение", - "system_group_remove" => "Премахнете отдела", - "system_group_remove_tips" => "Наистина ли искате да изтриете отдела?
                  След премахването на частта от потребителя ще бъде премахнат, подсектор се премества в корен сектор", - "system_group_select" => "Изберете отдел", - "system_group_select_result" => "Членовете ще принадлежат към следните сектори", - "system_role_admin_tips" => "Забележки: Системните администратори не са упълномощени да контролират", - "system_member_action" => "Управление на потребители", - "system_member_add" => "New User", - "system_member_role" => "Разрешение роли", - "system_member_role_select" => "Изберете", - "system_member_password_tips" => "Не пълнете не модифициран", - "system_set_home_path" => "по поръчка Каталог", - "system_set_home_path_tips" => "директория по подразбиране е празна", - "system_member_group" => "Къде е отдела", - "system_member_group_edit" => "Редакционен отдел", - "system_member_remove" => "Изтриване на потребителя", - "system_member_remove_tips" => "Потвърдете изтриване на потребителя?
                  , след като се премахне потребителската директория ще бъде напълно изтрит", - "system_member_set_role" => "За да потвърдите промяната на избраните разрешенията за употреба на групата?", - "system_member_remove_group" => "Определяне на избрания потребител ще бъде напълно премахнато от тази група?", - "system_member_import" => "Bulk добавка", - "system_member_import_desc" => "Един потребител на ред,
                  , вече съществуват, са тихо игнорирани", - "system_member_use" => "Активиране", - "system_member_unuse" => "правя неспособен", - "system_member_space" => "Задайте размера на потребителското пространство ", - "system_member_space_tips" => " Задайте размера на потребителското пространство ", - "system_member_space_number" => " Трябва да е число!", - "system_member_group_config" => "Отдел за определяне на партиди", - "system_member_group_remove" => "Премахнат от отдела", - "system_member_group_insert" => "Добавете към отдела", - "system_member_group_reset" => "Нулирайте отдела", - "system_member_group_error" => "Грешка в отдела", - "system_group_action" => "Управление на отдела", - "system_role_add" => "Добави Роля Identity", - "system_role_read" => "Само за четене", - "system_role_write" => "Може да чете и да пише", - "system_setting_root_path" => "достъп Root", - "system_setting_root_path_desc" => "Само системен администратор може да получите достъп до всички директории, групи други права на потребители могат да виждат само собствените си потребителски директории. Ако искате да включите или изключите
                  администраторски достъп до други директории, можете да промените РНР open_basedir параметри анти-между сайтове,настроен", - "system_group_role_title" => "Управление на ролята на отдела", - "system_group_role_remove" => "OK, за да изтриете ролята на отдел", - "system_group_role_style" => "стил", - "system_group_role_display" => "дали", - "system_group_role_display_desc" => "Задайте дали да се показват потребителски права на отдел", - "role_type_name_read" => "чета", - "role_type_name_read:list" => "Списък на файловете", - "role_type_name_read:info" => "File (папка) имот View, търсене Папка", - "role_type_name_read:copy" => "архивен екземпляр", - "role_type_name_read:preview" => "Визуализацията на файла (снимки, документи, аудио и видео)", - "role_type_name_read:download" => "File (папка) Изтегли", - "role_type_name_write" => "пиша", - "role_type_name_write:add" => "Създаване на файл (папка), извличане на компресиран файл", - "role_type_name_write:edit" => "Запазете файла за редактиране", - "role_type_name_write:change" => "Преименуване, коригира структурата на директория", - "role_type_name_write:upload" => "File (папка) да качвате, дистанционно изтегляне", - "role_type_name_write:remove" => "File (папка) изтриване, нарязани", - "group_guest" => "посетители", - "group_guest_desc" => "Вие не сте член на отдела,
                  има достъп само до [разделена директория на отдела] следното съдържание, разрешения само за четене.", - "group_role_lebel_desc" => "Вие сте член на този отдел,
                  Всички документи в катедрата Всички права запазени от администратора", - "button_save_and_add" => "Запазване и продължаване, за да добавите", - "path_cannot_search" => "Директорията не поддържа търсенето!", - "not_support" => "Не се поддържа!", - "group_not_exist" => "Потребителят група не съществува!", - "upload_clear_all" => "Изчистване на всички", - "upload_clear" => "Clear Завършен", - "upload_setting" => "Настройте", - "upload_tips" => "Използва парче качване, вече не подлежи на php.ini лимит; препоръчва плъзгане хром папка и капка качването опит", - "upload_exist" => "Файл със същото име", - "upload_exist_rename" => "преименувам", - "upload_exist_replace" => "капак", - "upload_exist_skip" => "подскачам", - "upload_add_more" => "Bulk добавка", - "more" => "още", - "system_setting" => "Настройки на системата", - "openProject" => "Отворете редактора на проект", - "url_download" => "Изтегляне", - "url_link" => "URL", - "app_type_link" => "Shortcuts", - "createLink" => "Създаване на пряк път", - "createLinkHome" => "Изпратено до прекия път на работния плот", - "createProject" => "Като прибавим към проекта на редактора", - "only_read" => "Само за четене", - "only_read_desc" => "Директорията не разполага с права за запис
                  Можете да зададете разрешения за тази директория на сървъра,", - "not_read" => "нечетлив", - "explorerNew" => "код връзка", - "zip_download_ready" => "След компресия автоматично ще изтеглите, моля изчакайте ...", - "set_background" => "Задай като Desktop Wallpaper", - "share" => "дял", - "my_share" => "Моят дял", - "group_share" => "Групово външно споделяне", - "share_edit" => "Редактирайте споделянето", - "share_remove" => "Отмяна на споделянето", - "share_remove_tips" => "Наистина ли искате да анулирате споделянето? Обществената връзка ще бъде деактивирана.", - "share_path" => "Споделете пътя", - "share_title" => "Споделяне на ресурси", - "share_name" => "Споделете заглавието", - "share_time" => "изтичане", - "share_time_desc" => "Null не е настроено", - "share_password" => "Екстракт парола", - "share_password_desc" => "Празно няма зададена парола", - "share_cancle" => "премахване на споделянето", - "share_create" => "Създаване на обществена връзка", - "share_url" => "Споделено Адрес", - "share_not_download" => "Изтегляне забрана", - "share_not_download_tips" => "Шарер забранен за сваляне!", - "share_code_read" => "Код четец", - "share_save" => "Save Configuration", - "share_error_param" => "Параметър грешка!", - "share_error_user" => "Информация за потребител Грешка!", - "share_error_sid" => "Share не съществува!", - "share_error_time" => "Вие идват твърде късно, делът е изтекъл!", - "share_error_path" => "Споделено файл не съществува, той ще бъде изтрит или го отстранява!", - "share_error_password" => "Грешна парола!", - "share_error_show_tips" => "Този тип не поддържа файл преглед!", - "share_view_num" => "Прегледи:", - "share_download_num" => "Downloads:", - "share_open_page" => "Отворете споделена страница", - "open_the_path" => "Въведете директория", - "recycle_clear" => "Изпразване на кошчето", - "recycle_clear_success" => "Изпразване на кошчето успех!", - "recycle_clear_info" => "Сигурни ли сте, че искате да се изпразни напълно боклука?", - "fav_remove" => "Отмени колекцията", - "remove_item" => "Предмети", - "uploading" => "Качване", - "upload_tips_more" => "Твърде много файлове, препоръката на сгъстен качването, след това разархивирайте онлайн!", - "uploading_move" => "В прехвърлянето на сливането ...", - "show_file" => "Нова страница преглед", - "unknow_file_title" => "File Open Съвет!", - "unknow_file_tips" => "Не подкрепя прилагането на този файл, можете да:", - "unknow_file_try" => "опитвам", - "unknow_file_download" => "Изтеглете файла", - "unknow_plugin_search" => "инсталирани Търсене приложения, свързани с", - "config_save_error_auth" => "Неуспешно запазване на конфигурацията, администраторът забрани тази привилегия!", - "config_save_error_file" => "Грешка, файлът не е достъпна за писане!", - "beautify_code" => "Код Formatter", - "convert_case" => "дело преобразуване", - "convert_upper_case" => "Реализирано в главни букви", - "convert_lower_case" => "Реализирано в малки букви", - "editor_insert_time" => "Текущо време ", - "editor_md5" => " Md5 криптиране ", - "editor_qrcode" => " Кодиран двуизмерен код ", - "editor_regx" => " Изпитване на регулярен израз ", - "editor_chinese" => " Опростена реализация ", - "editor_chinese_simple" => " Преобразуване в опростен китайски ", - "editor_chinese_traditional" => " Преобразуване в традиционен китайски ", - "editor_base64" => "Base64 кодек ", - "editor_base64_encode" => " Кодиране на Base64 ", - "editor_base64_decode" => " Base64 декодиране ", - "editor_url" => " URL кодек ", - "editor_url_encode" => " Кодиране на URL адресите ", - "editor_url_decode" => " URL декодиране ", - "editor_unicode" => " Unicode кодек ", - "editor_unicode_encode" => " Кодиране с Unicode ", - "editor_unicode_decode" => " Unicode декодиране", - "editor_tools_select_tips" => " Моля, изберете съдържанието, което искате да конвертирате!", - "editor_calc" => "Безплатен Калкулатор", - "shortcut" => "Shortcuts", - "use_free" => "Продължете да използвате безплатната версия", - "learn_more" => "Научете повече", - "replace" => "Замяна", - "selectAll" => "Изберете", - "reload" => "Презареди", - "about" => "за", - "complete_current" => "Авто-завършване на тока", - "view" => "изглед", - "tools" => "инструмент", - "help" => "Помощ", - "not_exists" => "Не съществува", - "group_role_fileDownload" => "Downloads", - "group_role_share" => "дял", - "users_share" => "подялба", - "system_setting_save" => "Настройки за сигурност", - "system_setting_menu" => "управление Меню", - "system_name" => "програма Наименование", - "system_name_desc" => "Програма лого заглавие", - "system_desc" => "Описание на програмата", - "path_hidden" => "Directory изключвания", - "version_not_support" => "Вашата версия не поддържа този, моля посетете официалния сайт за закупуване на новата версия!", - "version_not_support_number" => "Тъй като броят на ограничение не поддържа тази операция, моля купя новата версия на официалния сайт!", - "path_hidden_desc" => "Директории и файлове по подразбиране не показват, разделени със запетаи", - "new_user_folder" => "Най-новият потребител е създадена от директорията по подразбиране", - "new_user_folder_desc" => "Разделени със запетаи", - "new_user_app" => "Най-новият потребител е създадена от приложението по подразбиране", - "new_user_app_desc" => "Заявленията за кандидатстване център, множество разделени със запетаи", - "auto_login" => "Посетителите автоматично влизане", - "auto_login_desc" => "Стандартната вход потребителскотоguest/guestпотребители; след отваряне за да се гарантира, че съществува на потребителя", - "first_in" => "След като влезете в по подразбиране", - "version_price_free" => "безплатно", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory не е достъпна за писане, задаване на директория и всички поддиректории за да се опита отново след четене и запис!", - "menu_name" => "име Menu", - "menu_hidden" => "крия", - "menu_show" => "показ", - "menu_move_down" => "надолу", - "menu_move_up" => "нагоре", - "menu_move_del" => "изтривам", - "menu_open_window" => "Отваряне на нов прозорец", - "menu_sub_menu" => "Подменю", - "url_path" => "URL адрес", - "url_path_desc" => "URL адрес или JS код", - "no_permission_read" => "Вие нямате разрешение да чете!", - "no_permission_download" => "Не е нужно разрешение за сваляне!", - "php_env_check" => "Работна среда мониторинг:", - "php_env_error" => "Липсва PHP библиотеката", - "php_env_error_ignore" => "Игнорирай и въведете", - "php_env_error_version" => "PHP версия не може да бъде по-малко от 5.0", - "php_env_error_path" => "Не е достъпна за писане", - "php_env_error_list_dir" => "Вашият уеб сървър отваря директорията листинг функция от съображения за сигурност, деактивирате тази функция!как?", - "php_env_error_gd" => "Php GD библиотека трябва да бъде отворена, в противен случай кода, използвайте миниатюрата няма да функционира правилно", - "install_login" => "Можете да използвате следната вход сметка", - "install_enter" => "системата", - "install_user_default" => "Администратор: {0} / (долу зададете парола)
                  Средна потребител: {1}
                  Гости: {2}", - "login_root_password" => "Определете администраторската парола", - "login_root_password_repeat" => "Потвърди паролата отново", - "login_root_password_equal" => "Двете пароли не съвпадат!", - "login_root_password_tips" => "Задайте парола на администратор!", - "forget_password" => "Забравена парола", - "forget_password_tips" => "Забравена Administrator Password:
                  Моля, влезте сървъра изтриване ./data/system/install.lock нулиране;

                  Non-администратор Забравена парола:
                  Моля, свържете се с администратора, за да изчисти!", - "copyright_desc" => "Kodexplorer е силно аплодирана система за управление на уеб документ, можете да го използвате за вътрешно управление на документи или споделена, може да се използва и върху сървъра за управление на сайта, на мястото на Ftp, дори като webIDE директно онлайн развитие. Можете също така да програмирате втория развитие да включи този в съществуващите си системи.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango облак • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango облак • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, код, kodCloud, WebOS, webIDE, PHP filemanage, filemanage, Dao в облак, манго, системи за управление на документи, предприятието облак диск, изследовател ,, онлайн документация, онлайн офис, онлайн офис, онлайн CAD преглед, онлайн редактиране , онлайн редактор", - "kod_meta_description" => "KodExplorer може да замъгли Road (по-рано манго облак) е водещ доставчик на държавни / корпоративни частни облаци и онлайн система за лични сайтове за управление на документи, предприятието частен облак внедрявания, съхранение мрежа, онлайн управление на документи, онлайн офис за предоставяне на безопасен и контролиран, просто и лесно употреба, силно персонализирани частни облачни продукти. С помощта на Windows интерфейс стил, експлоатационни практики, без да се налага да се адаптират към бързо да започнете, подкрепят стотици популярен преслушване файлов формат, възпроизвеждане и редактиране на щадящи околната среда, мощен е, след като пробен период, вече не е неразделна част от частния облак предложения.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Влезте,", - "guest_login" => "Гост Вход", - "username" => "Вход в профила", - "userNickName" => "Потребителски псевдоним", - "password" => "парола", - "login_code" => "кодове", - "need_check_code" => "код Вход удостоверяване отворен", - "need_check_code_desc" => "След като влезете, трябва да въведете кода за потвърждение.", - "setting_csrf_protect" => "Open защита CSRF", - "setting_csrf_protect_desc" => "След тип отваряне на атака може ефективно да защити CSRF", - "login_rember_password" => "Запомни паролата", - "setting_show_root_group" => "Посочете всички отдели", - "setting_show_root_group_desc" => "Коренът на директорията на дърводелетата трябва да посочи дали всички отдели са изброени", - "setting_show_share_user" => "Списък на всички потребители", - "setting_show_share_user_desc" => "Коренният отдел на директорията на дърветата е изброен за споделяне на всички потребители", - "setting_clear_user_recycle" => "Изпразните кошчето за всички потребители", - "setting_clear_cache" => "Изчистване на кеш паметта", - "setting_icp" => "Copyright или запис номер", - "setting_global_css" => "Персонализирана глобалната CSS", - "setting_global_css_desc" => "Всички страници ще въведе потребителски CSS", - "setting_global_html" => "Статистически код HTML", - "setting_global_html_desc" => "Всички страници ще бъде включен в този параграф HTML код, кодът може да се постави статистика на трети страни", - "us" => "kodcloud.com", - "login_not_null" => "Потребителско име и парола не може да бъде празно!", - "code_error" => "кодове на грешки", - "password_error" => "Потребителско име или парола е неправилна!", - "password_not_null" => "Паролата не може да бъде празно!", - "old_password_error" => "Old парола е грешна!", - "permission" => "Разрешение!", - "permission_edit" => "Промяна на разрешенията", - "file_info_owner" => "собственик", - "file_info_group" => "група", - "no_permission" => "Администраторът е забранил тази привилегия!", - "no_permission_ext" => "Administrator забрани този вид файловите права", - "dialog_max" => "Увеличете", - "dialog_min" => "Минимизиране", - "dialog_min_all" => "Минимизиране на всички", - "dialog_display_all" => "Показване на всички прозорци", - "dialog_close_all" => "Затваряне на всички", - "open" => "отворено", - "others" => "друг", - "open_with" => "Отворете за ...", - "close" => "близо", - "close_all" => "Затваряне на всички", - "close_left" => "Затваряне на ляво раздела", - "close_right" => "Затваряне на разделите отдясно", - "close_others" => "Close Other", - "loading" => "Операция ...", - "warning" => "предупреждение", - "getting" => "Получите ...", - "sending" => "Предаване на данни ...", - "data_error" => "Грешка на данни!", - "get_success" => "Вземи успех!", - "save_success" => "Успешно запазена!", - "success" => "успешна операция", - "error" => "операцията е неуспешна", - "error_repeat" => "Операцията се провали, името вече съществува!", - "word_error" => "неуспех ", - "word_success" => " успех", - "system_error" => "Системна грешка", - "name" => "име", - "type" => "тип", - "contain" => "съдържат", - "address" => "местоположение", - "size" => "размер", - "byte" => "байт", - "path" => "път", - "action" => "експлоатационен", - "create_time" => "Създаден", - "modify_time" => "Модифициран", - "last_time" => "Последно посещение", - "sort_type" => "Сортиране по", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "Public директория", - "system_path_not_change" => "Система директория, не може да бъде променен", - "file" => "досие", - "folder" => "папка", - "copy" => "копие", - "past" => "пръчка", - "clone" => "Създаване на копие", - "cute" => "срязване", - "cute_to" => "Преместване на ...", - "copy_to" => "Копие до ...", - "remove" => "изтривам", - "remove_force" => "премахнете напълно", - "info" => "имот", - "list_type" => "изглед", - "list_icon" => "Икона масив", - "list_list" => "договореност Списък", - "list_list_split" => "режим Колона", - "sort_up" => "увеличение", - "sort_down" => "Намаляване", - "order_type" => "Сортиране по", - "order_desc" => "Низходящо", - "order_asc" => "възходящ", - "rename" => "преименувам", - "add_to_fav" => "Добави в Любими", - "search_in_path" => "Търсене на папки", - "add_to_play" => "Добавяне към плейлист", - "manage_fav" => "Управление на любимите", - "refresh_tree" => "Обновяване директория дърво", - "manage_folder" => "Управление Directory", - "close_menu" => "Затваряне на менюто", - "zip" => "Създайте компресиран пакет", - "unzip" => "За да се извлече ...", - "unzip_folder" => "Разархивирайте в папка", - "unzip_this" => "Екстракт на тока", - "unzip_to" => "За да се извлече ...", - "zipview_file_big" => "Файлът е твърде голям, и след това се извлича операцията за преглед!", - "clipboard" => "Вижте Clipboard", - "clipboard_clear" => "Празен клипборда", - "full_screen" => "Full Screen", - "folder_info_item" => "Предмети", - "folder_info_item_select" => "А избрано", - "file_load_all" => "Кликнете два пъти върху, за да се зареди всички ......", - "tips" => "бърз", - "ziping" => "Компресирането ...", - "unziping" => "Извличане ...", - "moving" => "Mobile операция ...", - "remove_title" => "Изтриване Потвърждение", - "remove_info" => "Потвърди, за да изтриете избрания елемент?", - "remove_title_force" => "постоянно изтрит", - "remove_info_force" => "Сигурни ли сте, вие искате да изтриете завинаги този документ?", - "name_isexists" => "Грешен, на име вече съществува!", - "install" => "инсталирам", - "width" => "широчина", - "height" => "високо", - "app" => "леки Приложения", - "app_store" => "леки Приложения", - "app_create" => "Създаване на приложения", - "app_edit" => "Промяна на заявлението", - "app_group_all" => "пълен", - "app_group_game" => "игра", - "app_group_tools" => "инструмент", - "app_group_reader" => "чета", - "app_group_movie" => "телевизия", - "app_group_music" => "музика", - "app_group_life" => "живот", - "app_group_others" => "друг", - "app_desc" => "описание", - "app_icon" => "икона Applications", - "app_icon_show" => "URL адрес или директорията", - "app_group" => "Packet Application", - "app_type" => "тип", - "app_type_url" => "връзка", - "app_type_code" => "разширение JS", - "app_display" => "външност", - "app_display_border" => "Без граници (т.е. изберете полета)", - "app_display_size" => "Resize (Проверете за настройка)", - "app_size" => "размер", - "app_url" => "Link адрес", - "app_code" => "JS код", - "edit" => "редактирам", - "edit_can_not" => "Не е текстов файл", - "edit_too_big" => "Файлът е твърде голям, той не може да бъде по-голяма от 40M", - "open_default" => "Default Open", - "open_ie" => "Отворете браузъра", - "refresh" => "Обновяване", - "refresh_all" => "Сили на опресняване", - "newfile" => "New File", - "newfile_save_as" => "Запази в", - "newfolder" => "New Folder", - "newothers" => "New Други", - "path_loading" => "Зарежда се ...", - "go" => "Разходка!", - "go_up" => "Горен слой", - "history_next" => "напред", - "history_back" => "отстъпление", - "address_in_edit" => "Кликнете, за да въведете режим на редактиране", - "double_click_rename" => "Кликнете два пъти върху преименуването", - "double_click_open" => "Кликнете два пъти върху, за да отворите", - "path_null" => "Folder е празен!", - "file_size_title" => "Икона Размер", - "file_size_small_super" => "Ultra-малък", - "file_size_small" => "Малки икони", - "file_size_default" => "Икони", - "file_size_big" => "Големи икони", - "file_size_big_super" => "Голям Икона", - "upload" => "Качи", - "upload_ready" => "В очакване на качване", - "upload_success" => "Качване успешно", - "upload_path_current" => "Превключване към текущата директория", - "upload_select" => "Изберете File", - "upload_max_size" => "Максимално допустимото", - "upload_size_info" => "Ако искате да изберете повече, моля, променете php.ini максимално разрешено качване. Когато изберете даден файл по-голям от тази конфигурация автоматично ще филтрира.", - "upload_error" => "неуспешно качване", - "upload_error_http" => "Мрежовите защитни стени и грешки", - "upload_muti" => "Multi-качване на файлове", - "upload_drag" => "Плъзгане и пускане на качване", - "upload_drag_tips" => "Разхлабете за качване!", - "path_not_allow" => "име на файла не е позволено", - "download" => "Изтегляне", - "downloading" => "Зарежда се ...", - "download_address" => "Изтегляне", - "download_ready" => "Ще бъдат изтеглени", - "download_success" => "Свали успех!", - "download_error" => "Download Failed!", - "download_error_create" => "Напиши грешка!", - "download_error_exists" => "Линк към файла не бе успешно!", - "upload_error_null" => "Не файл!", - "upload_error_big" => "Размерът на файла е над допустимите граници за сървъри", - "upload_error_move" => "Неуспешно преместване на файл!", - "upload_error_exists" => "Файлът вече съществува", - "upload_local" => "Местно Качи", - "download_from_server" => "дистанционно за изтегляне", - "save_path" => "Save Path", - "upload_select_muti" => "Множество избираем за качване на файлове", - "search" => "търсене", - "searching" => "Търсене ...", - "search_result" => "Резултати от търсенето", - "seach_result_too_more" => "Прекалено много резултати, се препоръчва за директория или думи", - "search_null" => "Няма резултати!", - "search_uplow" => "дело чувствителна", - "search_content" => "Съдържание на търсачка", - "search_info" => "Моля въведете дума за търсене и търсене пътеки!", - "search_ext_tips" => "Чрез | разделени; например PHP | JS | CSS
                  не пълнете търсене по подразбиране текстов файл", - "file_type" => "Тип на файла", - "goto" => "Направо към", - "server_dwonload_desc" => "Задача беше добавен в списъка за изтегляне", - "parent_permission" => "Родител правата на директориите", - "root_path" => "Моите документи", - "lib" => "склад", - "fav" => "Bookmark", - "desktop" => "Desktop", - "browser" => "Browser", - "my_computer" => "My Computer", - "recycle" => "боклук", - "my_document" => "Моите документи", - "my_picture" => "Моите снимки", - "my_music" => "Моята музика", - "my_movie" => "Моите видеоклипове", - "my_download" => "Моите Downloads", - "ui_desktop" => "Desktop", - "ui_explorer" => "Управление на файлове", - "ui_editor" => "редактор", - "adminer" => "adminer", - "ui_project_home" => "Проект Начало", - "ui_login" => "Влезте,", - "ui_logout" => "Quit", - "setting" => "Настройки на системата", - "setting_title" => "Опции", - "setting_user" => "Лична Center", - "setting_password" => "Смяна на паролата", - "setting_password_old" => "Old Password", - "setting_password_new" => "Ревизираната да", - "setting_language" => "Езикови настройки", - "setting_member" => "Управление на потребители", - "setting_group" => "Управление на потребителите група", - "setting_group_add" => "Добави User Group", - "setting_group_edit" => "Edit Потребителски групи", - "setting_theme" => "Настройки тема", - "setting_wall" => "Настройки на тапета", - "setting_wall_desktop" => "Тапет за настолни компютри", - "setting_wall_desktop_list" => "Управление на тапети на работния плот", - "setting_wall_login_list" => "Вход за управление на тапети", - "setting_wall_login_tips" => "Съвет: Когато има повече от едно парче, фона на интерфейса за влизане ще се върти произволно", - "setting_wall_diy" => "По поръчка тапети:", - "setting_wall_info" => "Снимка URL адрес, местните снимки могат да бъдат правилни, за да получите на браузъра, за да отворите изображението", - "setting_fav" => "диспечер на отметките", - "setting_help" => "Използване на Помощ", - "setting_about" => "За произведения", - "setting_success" => "Промяна е влязло в сила!", - "can_not_repeat" => "Не е позволено да се повтаря", - "absolute_path" => "Абсолютен адрес", - "group" => "Потребителски групи", - "data_not_full" => "Данни, подадени непълна!", - "default_user_can_not_do" => "потребителя по подразбиране не може да работи", - "default_group_can_not_do" => "Default потребителски групи не могат да работят", - "username_can_not_null" => "Потребителско име не може да бъде празно!", - "groupname_can_not_null" => "Прякор група не може да бъде празно!", - "groupdesc_can_not_null" => "Потребител Група Описание не може да бъде празно!", - "group_move_user_error" => "Потребителски потребители Група движение провалиха", - "group_already_remove" => "Потребителската група е изтрит", - "group_not_exists" => "Тази група потребители не съществува", - "member_add" => "Добавяне на потребител", - "password_null_not_update" => "Те казаха, че не промените паролата не е попълнено", - "if_save_file_tips" => "Някои файлове не са запазени. Сигурни ли сте, че сте затворили прозореца?", - "if_save_file" => "Файлът не е бил спасен, който искате да запишете?", - "if_remove" => "Потвърдете Изтриване", - "member_remove_tips" => "След като премахнете потребителската директория ще бъде изчистена", - "group_remove_tips" => "След като премахнете потребителската група на потребителите, не мога да вляза
                  (трябва отново да зададете потребителска група)", - "group_name" => "Прякор група", - "group_name_tips" => "Препоръка английски име, не може да се повтаря", - "group_desc" => "Име за показване", - "group_desc_tips" => "Наименование Група Описание", - "group_role_ext" => "ограничения Удължители", - "group_role_ext_tips" => "С множествена | разделени", - "group_role_file" => "Управление на файлове", - "group_role_upload" => "Оставя качване", - "group_role_user" => "данни за потребителя", - "group_role_group" => "Управление на потребителите група", - "group_role_member" => "Управление на потребители", - "group_role_mkfile" => "New File", - "group_role_mkdir" => "New Folder", - "group_role_pathrname" => "преименувам", - "group_role_pathdelete" => "заличаване на файлове", - "group_role_pathinfo" => "File Properties", - "group_role_pathmove" => "Move (копие / изрязване / паста / влачене операция)", - "group_role_zip" => "компресия", - "group_role_unzip" => "отварям се", - "group_role_search" => "търсене", - "group_role_filesave" => "Запазете файла за редактиране", - "group_role_can_upload" => "Качване и сваляне", - "group_role_download" => "дистанционно за изтегляне", - "group_role_passowrd" => "Смяна на паролата", - "group_role_config" => "данни за конфигуриране", - "group_role_fav" => "операции Bookmark (Добавяне / редактиране / изтриване)", - "action_list" => "Списък View", - "action_add" => "Добави", - "action_edit" => "редактирам", - "action_del" => "изтривам", - "group_role_ext_warning" => "Качването не позволи на такива файлове,
                  Преименуване (преименуван на посочения разширение),
                  Редактиране спаси, дистанционно изтегляне, екстракт", - "group_tips" => "
                • 1. Името на групата потребители не може да бъде дублирано. След като името на групата бъде променено, то принадлежи на реорганизирания потребител и автоматично се асоциира.
                • 2. Разширенията ограничават връзката между сигурността на системата, бъдете внимателни (ако създадете нов php в уеб директорията, това означава, че промяната на разрешенията на програмата на този потребител е практически невъзможна)
                • 3. Управление на домакинствата, управление на права, права за гледане и добавяне, изтриване и изтриване на права, програми автоматично се свързват
                • 4. След като разрешителната група е настроена да добави групата разрешения, последващото разрешение не е наследено (това разрешение е еквивалентно на най-високото разрешение).
                • ", - "not_null" => "Задължителните полета не могат да бъдат празни!", - "picture_can_not_null" => "Снимките не могат да бъдат празни!", - "rname_success" => "Преименуване на успех!", - "please_inpute_search_words" => "Моля, въведете низ за търсене", - "remove_success" => "Изтрит успешно!", - "remove_fali" => "Изтриване неуспешно!", - "clipboard_null" => "Clipboard е празна!", - "create_success" => "Нов успех!", - "create_error" => "New неуспешна, проверете правата за достъп до директорията!", - "copy_success" => "[Copy] - покриваща клипборд успех!", - "cute_success" => "[Cut] - покриваща клипборд успех!", - "clipboard_state" => "Clipboard статус:", - "no_permission_write_all" => "Файлът или директорията не е достъпна за писане", - "no_permission_write_file" => "Файлът не разполага с права за запис", - "no_permission_read_all" => "Файлът или директорията не разполага с разрешение за четене", - "copy_not_exists" => "Източник не съществува", - "current_has_parent" => "Целева папка е подпапка на папката източник!", - "past_success" => "операция паста е завършена", - "cute_past_success" => "операция нарязани приключи(източник файл се изтрива, клипборда празна)", - "zip_success" => "Compression завършена", - "not_zip" => "Не архив", - "zip_null" => "Не е избран файл или директория", - "unzip_success" => "Разархивирайте пълна", - "gotoline" => "Направо към линията", - "path_is_current" => "Пътят и текущия път да отвори едно и също!", - "path_exists" => "Името вече съществува!", - "undo" => "отменяне", - "redo" => "Anti отмяна", - "preview" => "предварителен преглед", - "wordwrap" => "Wrap", - "show_gutter" => "Покажи Line Numbers", - "char_all_display" => "Покажи невидими знаци", - "auto_complete" => "Автоматично подканва", - "auto_save" => "Автоматично запазване", - "function_list" => "Списък Function", - "code_theme" => "Coding Style", - "font_size" => "Размер на шрифта", - "confirm" => "Наистина ли искате да направите това?", - "button_ok" => "Определя", - "button_submit" => "Подайте", - "button_set" => "Настройте", - "button_cancel" => "отменен", - "button_edit" => "редактирам", - "button_save" => "Save", - "button_apply" => "Нанесете", - "button_save_all" => "Save All", - "button_not_save" => "Не спести", - "button_add" => "Добави", - "button_back_add" => "Обратно, за да добавите", - "button_del" => "изтривам", - "button_save_edit" => "Запазване на промените", - "button_save_submit" => "Запазване Подайте", - "button_more" => "още", - "button_select_all" => "Избиране на всички / Invert Selection", - "charset_AUTO" => "Автоматична идентификация", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "арабски", - "charset_ISO_8859_6" => "арабски", - "charset_ISO_8859_10" => "скандинавските езици", - "charset_CP1257" => "балтийските езици", - "charset_ISO_8859_13" => "балтийските езици", - "charset_ISO_8859_4" => "балтийските езици", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "грузински", - "charset_PT154" => "казахски", - "charset_CP949" => "корейски", - "charset_EUC_KR" => "корейски", - "charset_GB18030" => "опростен китайски", - "charset_GBK" => "опростен китайски", - "charset_ISO_8859_14" => "келтски", - "charset_CP1133" => "Лао", - "charset_ISO_8859_16" => "румънски", - "charset_ISO_8859_3" => "Южна Европа", - "charset_EUC_JP" => "японски", - "charset_ISO_2022_JP" => "японски", - "charset_SHIFT_JIS" => "японски", - "charset_KOI8_T" => "таджикски език", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "турски", - "charset_CP1251" => "кирилица", - "charset_ISO_8859_5" => "кирилица", - "charset_KOI8_R" => "кирилица", - "charset_KOI8_U" => "кирилица", - "charset_CP1252" => "Западноевропейски езици", - "charset_ISO_8859_1" => "Западноевропейски езици", - "charset_ISO_8859_15" => "Западноевропейски езици", - "charset_Macintosh" => "Западноевропейски езици", - "charset_CP1255" => "иврит", - "charset_ISO_8859_8" => "иврит", - "charset_CP1253" => "гръцки", - "charset_ISO_8859_7" => "гръцки", - "charset_ARMSCII_8" => "арменски", - "charset_CP1258" => "виетнамски", - "charset_VISCII" => "виетнамски", - "charset_CP1250" => "Централни европейски езици", - "charset_ISO_8859_2" => "Централни европейски езици", - "charset_default_set" => "File Encoding", - "charset_convert_save" => "Спасете кодиран като файл", - "PluginCenter" => "Plug център", - "PluginBuy" => "Разрешение за закупуване", - "PluginInstalled" => "Е инсталиран", - "PluginUpdate" => "Актуализация", - "PluginListNull" => "Няма съдържание!", - "PluginType" => "класификация", - "PluginTypeAll" => "пълен", - "PluginTypeFile" => "Засилено файл", - "PluginTypeSafe" => "Инструменти за сигурност", - "PluginTypeTools" => "полезност", - "PluginTypeMedia" => "мултимедия", - "PluginTypeOthers" => "друг", - "PluginInstall" => "Инсталиране на приставката", - "PluginEnable" => "Активиране на приставки", - "PluginDisable" => "правя неспособен", - "PluginRemove" => "Деинсталиране на щепсела", - "PluginConfig" => "Конфигуриране на приставката", - "PluginStatus" => "състояние", - "PluginStatusEnabled" => "Enabled", - "PluginStatusDisabled" => "Не е активирано", - "PluginStatusNotInstall" => "не е инсталирано", - "PluginInstalling" => "Инсталация ...", - "PluginHasUpdate" => "Актуализациите", - "PluginUpdateStart" => "Актуализиране на приставката", - "PluginNeedConfig" => "Необходимостта да се даде възможност на първоначалната конфигурация", - "PluginConfigNotNull" => "Задължителните полета трябва да се попълнят!", - "PluginOpen" => "отворено", - "PluginAuther" => "автор", - "PluginVersion" => "издание", - "PluginDownloadNumber" => "Инсталира", - "PluginBack" => "връщане", - "PluginReadme" => "описание", - "PluginResetConfig" => "Възстановете настройките по подразбиране", - "PluginInstallSelf" => "Ръчна инсталация", - "Plugin.config.auth" => "Разрешения", - "Plugin.config.authDesc" => "Всички на наличните настройки, свързани с определяне на потребителите, потребителски групи, правозащитни организации могат да използват", - "Plugin.config.authOpen" => "Отворен достъп", - "Plugin.config.authOpenDesc" => "Няма нужда да посещавате, може да се използва за външно разговор", - "Plugin.config.authAll" => "притежател", - "Plugin.config.authUser" => "потребител", - "Plugin.config.authGroup" => "Определен отдел", - "Plugin.config.authRole" => "група права", - "Plugin.Config.openWith" => "Open стил", - "Plugin.Config.openWithDilog" => "Вътрешен диалоговия", - "Plugin.Config.openWithWindow" => "Новата страница се отваря", - "Plugin.Config.fileSort" => "приоритет Extension асоциация", - "Plugin.Config.fileSortDesc" => "Колкото по-голям разширението, за да отворите по-висок приоритет", - "Plugin.Config.fileExt" => "Поддържани файлови формати", - "Plugin.Config.fileExtDesc" => "Свързани Удължаване на приставката", - "Plugin.tab.basic" => "Основни настройки", - "Plugin.tab.auth" => "Разрешения", - "Plugin.tab.others" => "Други настройки", - "Plugin.default.aceEditor" => "Ace Редактор", - "Plugin.default.htmlView" => "Web Page Preview", - "Plugin.default.picasa" => "сърфиране в Picasa картина", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer играч", - "Plugin.auth.viewList" => "Списък с добавки", - "Plugin.auth.setting" => "Настройки на приставките", - "Plugin.auth.status" => "Изключете", - "Plugin.auth.install" => "Инсталиране / Деинсталиране", - "Explorer.UI.openWith" => "Изберете Open", - "Explorer.UI.openWithText" => "Notepad за да отворите", - "Explorer.UI.appSetDefault" => "Задайте открито по подразбиране", - "Explorer.UI.appAwaysOpen" => "Винаги използвайте избраната програма да отвори този файл", - "Explorer.UI.selectAppDesc" => "Изберете програмата, която искате да отворите този файл", - "Explorer.UI.selectAppWarning" => "Моля, изберете приложението!", - "Explorer.UI.appTypeSupport" => "Поддържани", - "Explorer.UI.appTypeAll" => "Всички приложения", - "kodApp.oexe.edit" => "Редактиране на светлинното приложение", - "kodApp.oexe.open" => "Отворете приложението на светлината" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/bn/about.html b/plugin/document/kod/config/i18n/bn/about.html deleted file mode 100644 index e7e7a7c4c..000000000 Binary files a/plugin/document/kod/config/i18n/bn/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/bn/edit.html b/plugin/document/kod/config/i18n/bn/edit.html deleted file mode 100644 index b49f1ae68..000000000 --- a/plugin/document/kod/config/i18n/bn/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  রিচ কার্যকারিতা

                  -

                  কোড স্বয়ংক্রিয়ভাবে অনুরোধ জানানো হবে

                  -

                  মাল্টি থিম: আপনার প্রিয় প্রোগ্রামিং শৈলী চয়ন করুন

                  -

                  কাস্টম ফন্ট: দৃশ্য এ ব্যবহারের জন্য

                  -

                  মাল্টি কার্সার এডিটিং, ব্লক সম্পাদনা অনলাইন প্রোগ্রামিং অভিজ্ঞতা মহিমান্বিত তুলনীয়

                  -

                  ব্লক ভাঁজ, প্রসারিত; মোড়ানো

                  -

                  একাধিক ট্যাব জন্য সমর্থন, সুইচিং ক্রম টেনে আনুন;

                  -

                  একাধিক নথি নিয়ন্ত্রণের, অনুসন্ধান ও প্রতিস্থাপন; ইতিহাস;

                  -

                  অটো-সম্পূর্ণ [], {}, (), '' ''

                  -

                  অনলাইন রিয়েল টাইম প্রিভিউ যে আপনি অনলাইন প্রোগ্রামিং সঙ্গে প্রেমে পড়া করতে সক্ষম হবেন!

                  -

                  সমর্থন zendcodeing, কোড আশি লিখতে

                  -

                  আরও বৈশিষ্ট্য আপনার আবিষ্কারের জন্য অপেক্ষা ......

                  -
                  -
                  -

                  কোড হাইলাইটিং 150 ধরণের

                  -

                  টিপ: এইচটিএমএল, জাভাস্ক্রিপ্ট, সিএসএস, কম, Sass, এসসিএসএস

                  -

                  ওয়েব ডেভেলপমেন্ট: পিএইচপি, পার্ল, পাইথন, রুবি, elang, যেতে ...

                  -

                  পরম্পরাগত ভাষায়: জাভা, সি, সি ++, সি #, ActionScript, VB স্ক্রিপ্ট ...

                  -

                  অন্য: markdown, শেল, এসকিউএল, Lua, এক্সএমএল, yaml ...

                  -
                  -
                  -
                  -
                  -

                  শর্টকাট অ্যাকশন

                  -
                   সাধারণভাবে ব্যবহৃত শর্টকাট: 
                  - Ctrl + s সংরক্ষণ করতে 
                  - Ctrl + A নির্বাচন সব Ctrl + X কাটা 
                  - Ctrl + C Ctrl + V পেস্ট কপি 
                  - Ctrl + Z ফেরান এন্টি Ctrl + Y 
                  - Ctrl + F প্রতিস্থাপন Ctrl + F + F এটি 
                  - জয় + Alt + 0 ধসের সব জয় + Alt + Shift + 0 সম্প্রসারণ 
                  - Esc [প্রস্থান অনুসন্ধান স্বয়ংক্রিয়ভাবে বাতিল করার অনুরোধ জানানো হবে ...] 
                  - Ctrl-Shift-এর প্রি 
                  - Ctrl-Shift-ই শো & বন্ধ ফাংশন 
                  -
                  -
                   চয়ন করুন: 
                  - মাউস তাবু - ড্র্যাগ 
                  - Shift + হোম / শেষ / আপ / বাম / নিচে / ডান 
                  - Shift + PageUp / PageDown নির্বাচন করতে নিচে আপ টুসকি 
                  - Ctrl + Shift + Home / আদ্যন্ত বর্তমান কার্সার শেষে 
                  - Alt + মাউস ব্লক নির্বাচন টানুন 
                  - Ctrl + Alt + ছ ব্যাচ নির্বাচন এবং বর্তমান মাল্টি ট্যাব সম্পাদক লিখুন 
                  -
                  -
                   কার্সার: 
                  - হোম / শেষ / আপ / বাম / নিচে / ডান 
                  - Ctrl + Home / শেষ ডকুমেন্ট মাথা / লেঙ্গুড় কার্সরটিকে 
                  - মিলে ট্যাগে Ctrl + P ঝাঁপ দাও 
                  - PageUp / PageDown আপ এবং ডাউন কার্সার 
                  - Alt + বাম / ডান কার্সার লাইনের শীর্ষে যাওয়ার জন্য 
                  - লাইনের শেষ shift + বাম / ডান কার্সার & 
                  - Ctrl + L একটি নির্দিষ্ট সারি ঝাঁপ 
                  - Ctrl + Alt + আপ / ডাউন (নিচে) বৃদ্ধি কার্সার 
                  -
                  -
                   সম্পাদনা: 
                  - Ctrl + / মন্তব্য & uncomment Ctrl + Alt + একটি যথার্থ প্রতিপন্ন 
                  - টেবিল ট্যাব প্রান্তিককরণ Shift + টেবিল সামগ্রিক অগ্রগতি টেবিল 
                  - সমগ্র লাইন Ctrl মুছতে মুছতে মুছতে + D 
                  - Ctrl + ডান শব্দ উপর সারি করার, মোছার 
                  - Ctrl / Shift + Backspace বাম থেকে শব্দ মুছে দিতে 
                  - জন্য alt + shift + আপ / ডাউন এবং কপি লাইন যোগ করা (নিচে) সমতল 
                  - Alt + কার্সার ডান বিষয়বস্তু করার, মোছার 
                  - Alt + আপ / ডাউন বর্তমান লাইন এবং লাইন (পরের লাইন বিনিময়) উপর 
                  - Ctrl + Shift + d সারি কপি এবং নিম্নলিখিত যোগ করা 
                  - Ctrl + শব্দের অধিকার করার, মোছার 
                  - Ctrl + Shift + U ছোটহাতের অক্ষরে রুপান্তরিত 
                  - Ctrl U নির্বাচিত লেখা + বড়হাতের 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/bn/help.html b/plugin/document/kod/config/i18n/bn/help.html deleted file mode 100644 index 432590fb3..000000000 --- a/plugin/document/kod/config/i18n/bn/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  ফাইল ম্যানেজমেন্ট
                  -

                  ফাইল নির্বাচন: রেডিও, মাউস তাবু, শিফট-নির্বাচন, Ctrl এলোমেলোভাবে নির্বাচিত, কীবোর্ড আপ এবং ডাউন, হোম, শেষ নির্বাচন.

                  -

                  ফাইল অপারেশন: একটি ফাইল নির্বাচন করা হলে, আপনি, কপি করা যাবে কাটা, মুছতে, কম্প্রেশন বৈশিষ্ট্য দেখতে, নামান্তর খোলা পূর্বরূপ দেখুন এবং অন্যান্য অপারেশন ......

                  -

                  ফাইল আপলোড: আপলোড একাধিক ফাইল ব্যাচ; HTML5 ড্র্যাগ আপলোড (ড্র্যাগ অঙ্গীভূতভাবে উইন্ডোতে ড্র্যাগ আপলোড এবং ড্রপ ফোল্ডার জন্য সমর্থন)

                  -

                  রাইট ফাংশন: রাইট-ফাইল, ফোল্ডার, ঠিক আছে, অধিকতর যোগ্য নির্বাচনের অপারেশনের পর, ডেস্কটপ, ডান, ডান ডিরেক্টরি ট্রি, ডান-আবদ্ধ মেনু শর্টকাট
                  - (নির্বাচন করুন সকল - কপি - কাটা - পেস্ট - মুছে দিন - পুনঃনামকরণ, সেট ......)

                  -

                  ফাইল ব্রাউজার: তালিকা মোড, আইকন মোড; উপ-ফোল্ডার মধ্যে ডাবল ক্লিক করুন; ঠিকানা বার অপারেশন; একটি ফোল্ডার রেকর্ড contrarian রেকর্ড খুলুন (ফরোয়ার্ড এবং অনগ্রসর)

                  -

                  সাপোর্ট ড্র্যাগ এবং ড্রপ: ড্র্যাগ চেক, উল্লিখিত ফোল্ডারটি ফাংশন অর্জন কাটা

                  -

                  শর্টকাট কী-সমূহ: মুছতে মুছতে, Ctrl + A নির্বাচন সকল, Ctrl + কপি সি + এক্স কাটা, ফাইল সার্চ (অনুসন্ধান বিষয়বস্তু) Ctrl

                  -
                  -
                  -
                  ফাইলের পূর্বরূপ
                  -

                  ফাইল পূর্বরূপ: একটি টেক্সট ফাইল সম্পাদনা এবং সংরক্ষণ বিষয়বস্তু দেখতে; এইচটিএমএল, SWF ফাইল প্রিভিউ,

                  -

                  চিত্র পূর্বরূপ: থাম্বনেল, ইমেজ স্লাইড শো স্বয়ংক্রিয় প্রজন্ম;

                  -

                  অডিও প্লেব্যাক: অনলাইন সঙ্গীত এবং ভিডিও ফাইল প্লে; সমর্থন MP3, WMA, মধ্য, AAC, WAV; MP4,

                  -

                  ভিডিও: অনলাইন ভিডিও প্লেব্যাক, সমর্থিত বিন্যাসের: FLV, f4v, 3gp

                  -

                  অফিস: অফিস অনলাইন প্রি, সমর্থিত বিন্যাসের: DOC, DOCX করা, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  শর্টকাট
                  -

                  ওপেন প্রবেশ

                  -

                  Ctrl সব একটি নির্বাচন +

                  -

                  Ctrl + C কপি করার জন্য নির্বাচিত

                  -

                  Ctrl + V পেস্ট

                  -

                  Ctrl + X কাটা

                  -

                  Ctrl + বর্তমান ডিরেক্টরি অনুসন্ধান করতে চ

                  -

                  Alt + N নতুন ফাইল

                  -

                  Alt + M নতুন ফোল্ডার

                  -

                  মুছুন নির্বাচিত

                  -

                  ব্যাকস্পেস পিছনে

                  -

                  Ctrl + Backspace এগিয়ে

                  -

                  F2 নামকরণ নির্বাচিত (ফোল্ডার)

                  -

                  হোম / শেষ / আপ / ডাউন / বাম / ফাইল নির্বাচন করতে ডান

                  -

                  anykey স্বয়ংক্রিয় চক্র নির্বাচিত চরিত্র ফাইল এবং ফোল্ডারগুলি প্রথম অক্ষর টিপুন চেক

                  -
                  diff --git a/plugin/document/kod/config/i18n/bn/main.php b/plugin/document/kod/config/i18n/bn/main.php deleted file mode 100644 index 7578d5ae7..000000000 --- a/plugin/document/kod/config/i18n/bn/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "অনুগ্রহ করে ফাইলটি সিলেক্ট ...", - "path_api_select_folder" => "দয়া করে একটি ফোল্ডার নির্বাচন করুন ...", - "path_api_select_image" => "অনুগ্রহ করে একটি ছবি নির্বাচন করুন ...", - "share_can_upload" => "আপলোড করার অনুমতি দিন", - "move_error" => "সরান ব্যর্থ", - "setting_basic" => "বেসিক সেটিংস", - "setting_user_sound_open" => "ওপেন সাউন্ড", - "setting_user_animate_open" => "অ্যানিমেশন খুলুন", - "recycle_open_if" => "রিসাইকেল বিন খুলুন", - "recycle_open" => "খোলা", - "setting_user_recycle_desc" => "মুছে ফেলার পরে সরাসরি শারীরিক অপসারণ মুছে ফেলা হবে", - "setting_user_animate_desc" => "উইন্ডো খোলা এবং অন্যান্য অ্যানিমেশন", - "setting_user_sound_desc" => "অপারেশন শব্দ", - "setting_user_imageThumb" => "ছবি থাম্বনেইল", - "setting_user_imageThumb_desc" => "খোলার পরে ভাল ব্রাউজিং অভিজ্ঞতা", - "setting_user_fileSelect" => "ফাইল আইকন চেক খুলুন", - "setting_user_fileSelect_desc" => "ফাইল আইকন বাম কী চেক, ডান-ক্লিক করুন মেনু শর্টকাট এন্ট্রি", - "qrcode" => "URL টি QR কোড", - "theme_mac" => "ম্যাক অল্পস্বল্প সাদা", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "মেট্রো ব্লু ক্লাসিক", - "theme_metro_green" => "মেট্রো হালকা সবুজ", - "theme_metro_purple" => "মেট্রো মার্জিত রক্তবর্ণ", - "theme_metro_pink" => "মেট্রো রোজ", - "theme_metro_orange" => "মেট্রো উজ্জ্বল কমলা", - "theme_alpha_image" => "উজ্জ্বল - উড়ন্ত", - "theme_alpha_image_sun" => "উজ্জ্বল - সূর্যাস্ত", - "theme_alpha_image_sky" => "সিম্ফনি - ব্লু স্কাই", - "theme_diy" => "কাস্টম", - "theme_diy_title" => "কাস্টম থিম সেটিংস", - "theme_diy_background" => "পটভূমি", - "theme_diy_image" => "ছবি", - "theme_diy_color_blur" => "গ্রেডিয়েন্ট রঙ", - "theme_diy_image_blur" => "ছবি ব্লার", - "theme_diy_image_url" => "ফটো ঠিকানা", - "theme_diy_color_start" => "আরম্ভের রঙ", - "theme_diy_color_end" => "শেষ রঙ", - "theme_diy_color_radius" => "গ্রেডিয়েন্ট কোণ", - "system_role_admin_set" => "প্রশাসকগণ সেটিং ছাড়া, সব অধিকার আছে!", - "login_error_user_not_use" => "ব্যবহারকারীর অ্যাকাউন্ট নিষ্ক্রিয় করা হয়েছে! প্রশাসকের সাথে যোগাযোগ করুন", - "login_error_kod_version" => "সংস্করণ দ্বন্দ্ব", - "login_error_role" => "দেখুন অনুমতির গ্রুপ অস্তিত্ব নেই, প্রশাসকের সাথে যোগাযোগ করুন", - "no_permission_group" => "আপনি এই দলের না হয়!", - "no_permission_write" => "ডিরেক্টরি লেখার অনুমতি নেই", - "user" => "ব্যবহারকারী", - "save_as" => "যেমন সংরক্ষণ", - "check_update" => "আপডেট", - "keyboard_type" => "কীবোর্ড মোড", - "font_family" => "ফন্ট", - "code_mode" => "সিনট্যাক্স হাইলাইটিং", - "path_can_not_share" => "শুধুমাত্র আপনার নিজের নথি ভাগ সমর্থন!", - "path_can_not_action" => "এই ডিরেক্টরিটি এই অপারেশন সমর্থন করে না!", - "wap_page_pc" => "পিসি সংস্করণ", - "wap_page_phone" => "মোবাইল", - "image_size" => "চিত্র মাত্রা", - "no_permission_action" => "আপনি এই অনুমতি নেই, প্রশাসকের সাথে যোগাযোগ করুন দয়া করে!", - "path_is_root_tips" => "এটা রুট ডিরেক্টরিতে এসেছে!", - "kod_group" => "সংগঠন", - "my_kod_group" => "আমি ডিপার্টমেন্টে আছি", - "space_tips_default" => "(গিগাবাইট) 0 কোন সীমা", - "space_tips_full" => "সীমাবদ্ধ না করে", - "space_size" => "স্থান", - "space_size_use" => "স্থান ব্যবহার", - "space_is_full" => "পর্যাপ্ত স্থান নেই, প্রশাসকের সাথে যোগাযোগ করুন!", - "system_open_true_path" => "সফলভাবে ফাইল ম্যানেজার খোলা!", - "group_role_error" => "ভূমিকা অনুমতি ত্রুটি (কোন অনুমতি সেটিংস)", - "group_role_error_admin" => "পর্যাপ্ত অনুমতি উপস্থিত নেই", - "markdown_content" => "সূচীপত্র", - "system_group" => "ব্যবহারকারী এবং বিভাগ", - "system_group_edit" => "ডিপার্টমেন্ট ম্যানেজমেন্ট", - "system_group_role" => "ভূমিকা পরিচয়", - "system_group_create" => "নতুন বিভাগ", - "system_group_name" => "বিভাগের নাম", - "system_group_father" => "সুপেরিয়র বিভাগ", - "system_group_add" => "উপ-বিভাগ যোগ করুন", - "system_group_remove" => "বিভাগটি সরান", - "system_group_remove_tips" => "আপনি বিভাগটি মুছে ফেলার ব্যাপারে নিশ্চিত?
                  the ব্যবহারকারীর অংশ মুছে ফেলার পরে, সাব-সেক্টর রুট সেক্টরে স্থানান্তরিত হবে", - "system_group_select" => "বিভাগ নির্বাচন করুন", - "system_group_select_result" => "সদস্য নিম্নলিখিত খাতে অধিকারে", - "system_role_admin_tips" => "মন্তব্য: সিস্টেম প্রশাসক নিয়ন্ত্রণ করতে অনুমোদিত নয়", - "system_member_action" => "ইউজার ম্যানেজমেন্ট", - "system_member_add" => "নতুন ইউজার", - "system_member_role" => "অনুমতি ভূমিকা", - "system_member_role_select" => "নির্বাচন করা", - "system_member_password_tips" => "পূরণ না পরিবর্তন করা", - "system_set_home_path" => "কাস্টম জায়", - "system_set_home_path_tips" => "ডিফল্ট ডিরেক্টরি খালি", - "system_member_group" => "কোথায় বিভাগ", - "system_member_group_edit" => "সম্পাদকীয় বিভাগ", - "system_member_remove" => "ব্যবহারকারী অপসারণ", - "system_member_remove_tips" => "ব্যবহারকারী অপসারণ নিশ্চিত করতে চান?
                  আপনি ব্যবহারকারী ডিরেক্টরি সরানোর পর সম্পূর্ণরূপে মুছে ফেলা হবে", - "system_member_set_role" => "নির্বাচিত ব্যবহারকারীর গ্রুপ অনুমতি পরিবর্তন নিশ্চিত করার জন্য?", - "system_member_remove_group" => "নির্বাচিত ব্যবহারকারীর এই গ্রুপ থেকে সরানো হবে নির্ধারণ?", - "system_member_import" => "বাল্ক অ্যাড", - "system_member_import_desc" => "প্রতি লাইনে একটি ব্যবহারকারী,
                  ইতিমধ্যে অস্তিত্ব চুপটি উপেক্ষা করা হয়", - "system_member_use" => "সক্ষম করা", - "system_member_unuse" => "অক্ষম", - "system_member_space" => "ব্যবহারকারীর স্থান আকার সেট করুন ", - "system_member_space_tips" => " ব্যবহারকারীর স্থান আকার সেট করুন ", - "system_member_space_number" => " একটি সংখ্যা হতে হবে!", - "system_member_group_config" => "ব্যাচ সেটিং ডিপার্টমেন্ট", - "system_member_group_remove" => "বিভাগ থেকে অপসারণ", - "system_member_group_insert" => "বিভাগ যোগ করুন", - "system_member_group_reset" => "বিভাগ পুনঃস্থাপন", - "system_member_group_error" => "বিভাগ ত্রুটি", - "system_group_action" => "ডিপার্টমেন্ট ম্যানেজমেন্ট", - "system_role_add" => "ভূমিকা পরিচয় যোগ", - "system_role_read" => "Read-only", - "system_role_write" => "পড়তে ও লিখতে পারে", - "system_setting_root_path" => "রুট অ্যাক্সেস", - "system_setting_root_path_desc" => "শুধু একজন সিস্টেম প্রশাসকের সব ডিরেক্টরি অ্যাক্সেস করতে পারেন, ব্যবহারকারীরা অন্য অধিকার সংগঠনগুলো শুধুমাত্র তাদের নিজস্ব ব্যবহারকারী ডাইরেক্টরি দেখতে পারেন। আপনার উপর বা অন্যান্য ডিরেক্টরি থেকে
                  প্রশাসক অ্যাক্সেস বন্ধ করতে চান, আপনি, বিরোধী ক্রস সাইট পরামিতি open_basedir পিএইচপি পরিবর্তন করতে পারেন", - "system_group_role_title" => "বিভাগীয় কর্তৃপক্ষ ভূমিকা ব্যবস্থাপনা", - "system_group_role_remove" => "বিভাগের ভূমিকা মুছে ফেলার জন্য ঠিক আছে", - "system_group_role_style" => "শৈলী", - "system_group_role_display" => "কিনা", - "system_group_role_display_desc" => "ডিফল্ট ব্যবহারকারীর অধিকার প্রদর্শন করা হবে কি না সেট করুন", - "role_type_name_read" => "পড়া", - "role_type_name_read:list" => "ফাইল তালিকা", - "role_type_name_read:info" => "ফাইল (ফোল্ডার) সম্পত্তি ভিউ, ফোল্ডার অনুসন্ধান", - "role_type_name_read:copy" => "ফাইল কপি", - "role_type_name_read:preview" => "ফাইলের পূর্বরূপ (ছবিগুলির, দস্তাবেজ, অডিও এবং ভিডিও)", - "role_type_name_read:download" => "ফাইল (ফোল্ডার) ডাউনলোড", - "role_type_name_write" => "লেখা", - "role_type_name_write:add" => "একটি ফাইল (ফোল্ডার) তৈরি করুন, কম্প্রেস ফাইল নিষ্কর্ষ", - "role_type_name_write:edit" => "ফাইল সংরক্ষণ করুন সম্পাদনা করতে", - "role_type_name_write:change" => ", পুনঃনামকরণ ডিরেক্টরি গঠন সমন্বয়", - "role_type_name_write:upload" => "ফাইল (ফোল্ডার) আপলোড, দূরবর্তী ডাউনলোড", - "role_type_name_write:remove" => "ফাইল (ফোল্ডার) মুছে দিন, কেটে", - "group_guest" => "দর্শকরা", - "group_guest_desc" => "আপনি বিভাগের সদস্য নন,
                  শুধুমাত্র [বিভাগ ভাগ করা ডিরেক্টরীতে] নিম্নলিখিত সামগ্রীটি অ্যাক্সেস করতে পারেন, শুধুমাত্র-পঠনযোগ্য অনুমতিগুলি।", - "group_role_lebel_desc" => "আপনি এই বিভাগের সদস্য,
                  বিভাগের মধ্যে সমস্ত নথি প্রশাসক দ্বারা সংরক্ষিত সমস্ত অধিকার", - "button_save_and_add" => "সংরক্ষণ করুন এবং যোগ করার জন্য অবিরত", - "path_cannot_search" => "ডিরেক্টরি অনুসন্ধান সমর্থন করে না!", - "not_support" => "সমর্থিত নয়!", - "group_not_exist" => "ব্যবহারকারী গ্রুপ অস্তিত্ব নেই!", - "upload_clear_all" => "সব পরিষ্কার", - "upload_clear" => "সমাপ্ত সাফ", - "upload_setting" => "সেট আপ করুন", - "upload_tips" => "ফালি আপলোড, আর php.ini সীমা সাপেক্ষে ব্যবহার করে; সুপারিশ ক্রোম ফোল্ডার ড্র্যাগ এবং ড্রপ আপলোড অভিজ্ঞতা", - "upload_exist" => "একই নামের ফাইল", - "upload_exist_rename" => "পুনঃনামকরণ", - "upload_exist_replace" => "আচ্ছাদন", - "upload_exist_skip" => "লাফালাফি করা", - "upload_add_more" => "বাল্ক অ্যাড", - "more" => "অধিক", - "system_setting" => "সিস্টেম সেটিংস", - "openProject" => "প্রকল্পের সম্পাদক খুলুন", - "url_download" => "ডাউনলোড", - "url_link" => "URL", - "app_type_link" => "শর্টকাট", - "createLink" => "শর্টকাট তৈরি করুন", - "createLinkHome" => "ডেস্কটপ শর্টকাট পাঠানো", - "createProject" => "সম্পাদক প্রকল্প যোগ করার পদ্ধতি", - "only_read" => "Read-only", - "only_read_desc" => "ডিরেক্টরি লেখার অনুমতি নেই
                  আপনি সার্ভারে এই ডিরেক্টরির জন্য অনুমতি সেট করতে পারেন", - "not_read" => "অপাঠ্য", - "explorerNew" => "Kod লিংক", - "zip_download_ready" => "কম্প্রেশন স্বয়ংক্রিয়ভাবে ডাউনলোড হবে পরে, অনুগ্রহ করে অপেক্ষা করুন ...", - "set_background" => "যেমন ডেস্কটপ ওয়ালপেপার সেট করুন", - "share" => "ভাগ", - "my_share" => "আমার শেয়ার", - "group_share" => "বাহ্যিক অংশীদারী গ্রুপ", - "share_edit" => "শেয়ার সম্পাদনা করুন", - "share_remove" => "ভাগ করা বাতিল করুন", - "share_remove_tips" => "আপনি কি ভাগ করা বাতিল করার বিষয়ে নিশ্চিত? পাবলিক সংযোগ অবৈধ হবে।", - "share_path" => "পথ ভাগ করুন", - "share_title" => "সম্পদ শেয়ারিং", - "share_name" => "শিরোনাম শেয়ার করুন", - "share_time" => "শ্বাসত্যাগ", - "share_time_desc" => "নাল সেট না করা হয়", - "share_password" => "এক্সট্র্যাক্ট পাসওয়ার্ড", - "share_password_desc" => "খালি পাসওয়ার্ড সেট করা নেই", - "share_cancle" => "Unsharing", - "share_create" => "একটি পাবলিক লিঙ্ক তৈরি করুন", - "share_url" => "অংশীদারি ঠিকানার", - "share_not_download" => "ডাউনলোড নিষেধাজ্ঞা", - "share_not_download_tips" => "ভাগীদার ডাউনলোড নিষিদ্ধ!", - "share_code_read" => "কোড রিডার", - "share_save" => "কনফিগারেশন সংরক্ষণ করুন", - "share_error_param" => "পরামিতি ত্রুটি!", - "share_error_user" => "ব্যবহারকারীর তথ্য ত্রুটি!", - "share_error_sid" => "শেয়ার অস্তিত্ব নেই!", - "share_error_time" => "আপনি খুব দেরি, ভাগ মেয়াদপূর্তী আসা!", - "share_error_path" => "শেয়ারকৃত ফাইল উপস্থিত না থাকলে, তা মুছে ফেলা বা এটা মুছে ফেলা হবে!", - "share_error_password" => "ভুল পাসওয়ার্ড!", - "share_error_show_tips" => "এই ধরনের ফাইল প্রিভিউ সমর্থন করে না!", - "share_view_num" => "দেখা হয়েছে:", - "share_download_num" => "বিবরন", - "share_open_page" => "ভাগ পৃষ্ঠাটি খুলুন", - "open_the_path" => "ডিরেক্টরি লিখুন", - "recycle_clear" => "ট্র্যাশ খালি", - "recycle_clear_success" => "ট্র্যাশ খালি সাফল্য!", - "recycle_clear_info" => "আপনি কি নিশ্চিত যে আপনি সম্পূর্ণ খালি বাজে ইচ্ছুক?", - "fav_remove" => "বাতিল সংগ্রহ", - "remove_item" => "আইটেম", - "uploading" => "আপলোড", - "upload_tips_more" => "অনেকগুলি ফাইল, সংকুচিত আপলোড সুপারিশক্রমে, তারপর অনলাইন আনজিপ!", - "uploading_move" => "মার্জ স্থানান্তরে ...", - "show_file" => "নতুন পৃষ্ঠা পূর্বরূপ", - "unknow_file_title" => "ফাইল খোলা টিপ!", - "unknow_file_tips" => "এই ফাইলটি, আপনি পারবেন প্রয়োগের সমর্থন করে না চাইছেন:", - "unknow_file_try" => "চেষ্টা", - "unknow_file_download" => "ফাইল ডাউনলোড করুন", - "unknow_plugin_search" => "অনুসন্ধান-সম্পর্কিত অ্যাপ্লিকেশন ইনস্টল", - "config_save_error_auth" => "কনফিগারেশন সংরক্ষণ করতে ব্যর্থ, প্রশাসক এই বিশেষ সুযোগ নিষিদ্ধ!", - "config_save_error_file" => "ত্রুটি, ফাইল লেখা যাচ্ছে না!", - "beautify_code" => "কোড ফরম্যাটার", - "convert_case" => "কেস রূপান্তর", - "convert_upper_case" => "বড় হাতের অক্ষরে রূপান্তরিত", - "convert_lower_case" => "ছোট হাতের অক্ষরে রূপান্তরিত", - "editor_insert_time" => "বর্তমান সময় ", - "editor_md5" => " এমডি 5 এনক্রিপশন ", - "editor_qrcode" => " স্ট্রিং দ্বিমাত্রিক কোড ", - "editor_regx" => " নিয়মিত এক্সপ্রেশন টেস্টিং ", - "editor_chinese" => " সরলীকৃত রূপান্তর ", - "editor_chinese_simple" => " সরলীকৃত চীনা রূপান্তর ", - "editor_chinese_traditional" => " প্রথাগত চীনা রূপান্তর ", - "editor_base64" => "Base64 কোডেক ", - "editor_base64_encode" => " Base64 এনকোডিং ", - "editor_base64_decode" => " বেস64 ডিকোডিং ", - "editor_url" => " URL কোডেক ", - "editor_url_encode" => " URL এনকোডিং ", - "editor_url_decode" => " URL ডিকোডিং ", - "editor_unicode" => " ইউনিকোড কোডেক ", - "editor_unicode_encode" => " ইউনিকোড এনকোডিং ", - "editor_unicode_decode" => " ইউনিকোড ডিকোডিং", - "editor_tools_select_tips" => " আপনি রূপান্তর করতে চান কন্টেন্ট নির্বাচন করুন!", - "editor_calc" => "বিনামূল্যে ক্যালকুলেটর", - "shortcut" => "শর্টকাট", - "use_free" => "মুক্ত সংস্করণ ব্যবহার চালিয়ে যান", - "learn_more" => "আরও জানুন", - "replace" => "প্রতিস্থাপন করা", - "selectAll" => "নির্বাচন করা", - "reload" => "পুনরায় বোঝাই করা", - "about" => "উপর", - "complete_current" => "বর্তমান অটো-সমাপ্তি", - "view" => "দৃশ্য", - "tools" => "টুল", - "help" => "সাহায্য", - "not_exists" => "বর্তমানে নেই", - "group_role_fileDownload" => "ডাউনলোডগুলি", - "group_role_share" => "ভাগ", - "users_share" => "ভাগ করা", - "system_setting_save" => "নিরাপত্তা সেটিংস", - "system_setting_menu" => "মেনু ব্যবস্থাপনা", - "system_name" => "প্রোগ্রাম নাম", - "system_name_desc" => "প্রোগ্রাম লোগো শিরোনাম", - "system_desc" => "প্রোগ্রাম বর্ণনা", - "path_hidden" => "নির্দেশিকা বহিষ্কার", - "version_not_support" => "আপনার সংস্করণ এই সমর্থন করে না, দয়া করে উন্নত সংস্করণ কিনতে অফিসিয়াল ওয়েবসাইট থেকে যান!", - "version_not_support_number" => "সীমাবদ্ধতা সংখ্যা এই অপারেশন সমর্থন করে না যেমন, অফিসিয়াল ওয়েবসাইট এর উন্নত সংস্করণ কিনতে দয়া করে!", - "path_hidden_desc" => "ডিরেক্টরি এবং ফাইল ডিফল্টরূপে প্রদর্শিত না, কমা দ্বারা পৃথক", - "new_user_folder" => "নতুন ব্যবহারকারী ডিফল্ট ডিরেক্টরি করে নির্মিত হয়", - "new_user_folder_desc" => "কমা দ্বারা পৃথকীকৃত", - "new_user_app" => "নতুন ব্যবহারকারী ডিফল্ট অ্যাপ্লিকেশন দ্বারা নির্মিত হয়", - "new_user_app_desc" => "অ্যাপ্লিকেশন অ্যাপ্লিকেশন সেন্টার, কমা দ্বারা পৃথক একটি বহুবচন", - "auto_login" => "দর্শকরা স্বয়ংক্রিয় লগইন", - "auto_login_desc" => "ডিফল্ট লগইন ব্যবহারকারীguest/guestব্যবহারকারীদের; খোলার পর তা নিশ্চিত করার জন্য ব্যবহারকারী বিদ্যমান", - "first_in" => "ডিফল্ট লগ-ইন করার পর", - "version_price_free" => "বিনামূল্যে", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "ডিরেক্টরি লিখনযোগ্য নয়, ডিরেক্টরি সেট এবং সমস্ত সাব-read-write পর আবার চেষ্টা করুন!", - "menu_name" => "মেনু নাম", - "menu_hidden" => "লুকান", - "menu_show" => "প্রদর্শন", - "menu_move_down" => "নিচে", - "menu_move_up" => "আপ", - "menu_move_del" => "মুছুন", - "menu_open_window" => "একটি নতুন উইন্ডোতে খুলুন", - "menu_sub_menu" => "সাবমেনু", - "url_path" => "URL ঠিকানা", - "url_path_desc" => "URL ঠিকানা বা JS কোড", - "no_permission_read" => "আপনি পড়ার অনুমতি আছে না!", - "no_permission_download" => "আপনি ডাউনলোড করার অনুমতি নেই!", - "php_env_check" => "অপারেটিং পরিবেশ পর্যবেক্ষণ:", - "php_env_error" => "Php লাইব্রেরি অনুপস্থিত", - "php_env_error_ignore" => "উপেক্ষা করুন এবং লিখুন", - "php_env_error_version" => "পিএইচপি সংস্করণ 5.0 কম হতে পারে না", - "php_env_error_path" => "লেখা যাচ্ছে না", - "php_env_error_list_dir" => "আপনার ওয়েব সার্ভারের মধ্যে নিরাপত্তার কারণে বৈশিষ্ট্য তালিকা প্রর্দশিত হবে, এই বৈশিষ্ট্যটি নিষ্ক্রিয়!কিভাবে?", - "php_env_error_gd" => "Php জিডি লাইব্রেরি খোলা, অন্যথায় কোড হতে হবে থাম্বনেইল ব্যবহার সঠিকভাবে কাজ করবে না", - "install_login" => "আপনি নিম্নলিখিত অ্যাকাউন্ট লগইন ব্যবহার করতে পারেন", - "install_enter" => "পদ্ধতি", - "install_user_default" => "অ্যাডমিনিস্ট্রেটর: {0} / (একটি পাসওয়ার্ড সেট নিচে)
                  গড় ব্যবহারকারী: {1}
                  অতিথি ব্যবহারকারী: {2}", - "login_root_password" => "অ্যাডমিনিস্ট্রেটর পাসওয়ার্ড সেট করুন", - "login_root_password_repeat" => "আবার পাসওয়ার্ড নিশ্চিত করুন", - "login_root_password_equal" => "পাসওয়ার্ড দুটি মিলছে না!", - "login_root_password_tips" => "একজন প্রশাসক পাসওয়ার্ড সেট করুন!", - "forget_password" => "আপনার পাসওয়ার্ড ভুলে গেছেন", - "forget_password_tips" => "অ্যাডমিনিস্ট্রেটরের পাসওয়ার্ড ভুলে গেছেন:
                  সার্ভার লগ ইন করুন রিসেট ./data/system/install.lock মুছে ফেলা;

                  অ প্রশাসক পাসওয়ার্ড ভুলে গেছেন:
                  রিসেট করতে প্রশাসকের সাথে যোগাযোগ করুন!", - "copyright_desc" => "Kodexplorer একটি অত্যন্ত প্রশংসিত ওয়েব ডকুমেন্ট ম্যানেজমেন্ট সিস্টেম, আপনি এমনকি webIDE সরাসরি অনলাইনে উন্নয়ন, অভ্যন্তরীণ নথি ব্যবস্থাপনা বা ভাগ, এছাড়াও সাইট ম্যানেজমেন্ট সার্ভার ব্যবহার করা যায় জন্য এটি ব্যবহার, FTP প্রতিস্থাপন করতে পারেন. এছাড়াও আপনি দ্বিতীয় উন্নয়ন প্রোগ্রাম আপনার বিদ্যমান সিস্টেমের মধ্যে এই সংহত করতে পারেন.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "আম মেঘ • এক্সপ্লোরার", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "আম মেঘ • এক্সপ্লোরার", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, Kod, kodCloud, webOS, webIDE, পিএইচপি filemanage, filemanage, দাও মেঘ, মেঘ আম, ডকুমেন্ট ম্যানেজমেন্ট সিস্টেম, এন্টারপ্রাইজ মেঘ ডিস্ক, অনুসন্ধানকারী ,, অনলাইন ডকুমেন্টেশন, অনলাইন কার্যালয়, অনলাইন অফিস, অনলাইন কানাডিয়ান প্রিভিউ, অনলাইন সম্পাদনা , অনলাইন সম্পাদক", - "kod_meta_description" => "KodExplorer রোড মেঘ পারেন (পূর্বে আম মেঘ) নিরাপদ এবং নিয়ন্ত্রণ সহজ এবং সহজ প্রদান সরকার / কর্পোরেট ব্যক্তিগত মেঘ এবং ব্যক্তিগত ওয়েবসাইটের জন্য অনলাইন দস্তাবেজে ম্যানেজমেন্ট সিস্টেম, এন্টারপ্রাইজ বেসরকারী মেঘ স্থাপনার, নেটওয়ার্ক স্টোরেজ, অনলাইন দস্তাবেজে ব্যবস্থাপনা একটি নেতৃস্থানীয় প্রদানকারী, অনলাইন অফিস ব্যবহার, অত্যন্ত ব্যক্তিগত মেঘ পণ্য কাস্টমাইজড। Cai ইয়ং জানালা শৈলী ইন্টারফেস, অপারেটিং চর্চা, দ্রুত শুরু করতে খাপ খাওয়ানো না করেও, অনলাইন প্রিভিউ, প্লেব্যাক এবং সম্পাদনা পরিবেশ বান্ধব, শক্তিশালী সাধারণ ফাইল ফরম্যাট প্রজাতির শত শত সমর্থন একটি ট্রায়াল, তারা আর ব্যক্তিগত ছাড়া কি হয় মেঘ অর্ঘ।", - "kod_meta_copyright" => "kodcloud.com", - "login" => "লগইন করুন", - "guest_login" => "অতিথি সাইন ইন", - "username" => "লগইন অ্যাকাউন্ট", - "userNickName" => "ব্যবহারকারীর ডাক নাম", - "password" => "পাসওয়ার্ড", - "login_code" => "সঙ্কেত", - "need_check_code" => "লগইন প্রমাণীকরণ কোডটি উন্মুক্ত", - "need_check_code_desc" => "লগ ইন করার পরে, আপনাকে যাচাইকরণ কোডটি অবশ্যই প্রবেশ করতে হবে।", - "setting_csrf_protect" => "ওপেন csrf সুরক্ষা", - "setting_csrf_protect_desc" => "হামলা কার্যকরভাবে csrf রক্ষা করতে পারে খোলার টাইপ করার পর", - "login_rember_password" => "পাসওয়ার্ড মনে রেখো", - "setting_show_root_group" => "সব বিভাগ তালিকা", - "setting_show_root_group_desc" => "সব বিভাগ তালিকাভুক্ত কিনা ট্রি নির্দেশক মূল বিভাগ", - "setting_show_share_user" => "সকল ব্যবহারকারীর একটি তালিকা", - "setting_show_share_user_desc" => "বৃক্ষ ডিরেক্টরি রুট বিভাগ সমস্ত ব্যবহারকারী ভাগ জন্য তালিকাভুক্ত করা হয়", - "setting_clear_user_recycle" => "সকল ব্যবহারকারীর জন্য রিসাইকেল বিন খালি", - "setting_clear_cache" => "ক্যাশে খালি করুন", - "setting_icp" => "কপিরাইট বা রেকর্ড সংখ্যা", - "setting_global_css" => "কাস্টম বিশ্বব্যাপী CSS", - "setting_global_css_desc" => "সমস্ত পৃষ্ঠা কাস্টম CSS ঢোকাব", - "setting_global_html" => "পরিসংখ্যানগত কোড এইচটিএমএল", - "setting_global_html_desc" => "সমস্ত পৃষ্ঠা এই অনুচ্ছেদ HTML কোড সন্নিবেশ করানো হবে, কোড তৃতীয় পক্ষের পরিসংখ্যান স্থাপন করা যেতে পারে", - "us" => "kodcloud.com", - "login_not_null" => "ব্যবহারকারী নাম এবং পাসওয়ার্ড খালি হতে পারে না!", - "code_error" => "ত্রুটি কোডের", - "password_error" => "ব্যবহারকারীর নাম বা পাসওয়ার্ড ভুল!", - "password_not_null" => "পাসওয়ার্ড খালি হতে পারে না!", - "old_password_error" => "পুরানো পাসওয়ার্ড ভুল!", - "permission" => "অনুমতি!", - "permission_edit" => "অনুমতি সংশোধন", - "file_info_owner" => "মালিক", - "file_info_group" => "গ্রুপ", - "no_permission" => "অ্যাডমিনিস্ট্রেটর এই বিশেষ সুযোগ অক্ষম করেছে!", - "no_permission_ext" => "অ্যাডমিনিস্ট্রেটর ফাইল অনুমতি এই ধরনের নিষিদ্ধ", - "dialog_max" => "চরমে তোলা", - "dialog_min" => "কমান", - "dialog_min_all" => "সমস্ত মিনিমাইজ", - "dialog_display_all" => "সব উইন্ডোসমূহ দেখাবে", - "dialog_close_all" => "সব বন্ধ", - "open" => "খোলা", - "others" => "অন্যান্য", - "open_with" => "এর জন্য খুলুন ...", - "close" => "ঘনিষ্ঠ", - "close_all" => "সব বন্ধ", - "close_left" => "বাম ট্যাবটি বন্ধ", - "close_right" => "ডানদিকের ট্যাবস বন্ধ করুন", - "close_others" => "বন্ধ অন্যান্য", - "loading" => "অপারেশন ...", - "warning" => "সতর্কতা", - "getting" => "পান ...", - "sending" => "ডেটা ট্রান্সমিশন ...", - "data_error" => "ডেটা ত্রুটি!", - "get_success" => "সাফল্য পান!", - "save_success" => "সফলভাবে সংরক্ষিত!", - "success" => "সফল অপারেশন", - "error" => "অপারেশন ব্যর্থ", - "error_repeat" => "অপারেশন ব্যর্থ, নাম আগে থেকেই আছে!", - "word_error" => "ব্যর্থতা ", - "word_success" => " সাফল্য", - "system_error" => "সিস্টেম ত্রুটি", - "name" => "নাম", - "type" => "আদর্শ", - "contain" => "ধারণ করা", - "address" => "অবস্থান", - "size" => "আয়তন", - "byte" => "সংবাদের একক", - "path" => "পথ", - "action" => "অপারেটিং", - "create_time" => "নির্মিত", - "modify_time" => "পরিমিত", - "last_time" => "সর্বশেষ ভিজিট", - "sort_type" => "সাজানোর ক্রম", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "জন ডিরেক্টরি", - "system_path_not_change" => "সিস্টেম তালিকা, পরিবর্তন করা যাবে না", - "file" => "ফাইল", - "folder" => "ফোল্ডার", - "copy" => "কপি", - "past" => "লাঠি", - "clone" => "একটি অনুলিপি তৈরি করুন", - "cute" => "কাটা", - "cute_to" => "যান ...", - "copy_to" => "অনুলিপি করুন ...", - "remove" => "মুছুন", - "remove_force" => "কমপ্লিটলি অপসারণ", - "info" => "সম্পত্তি", - "list_type" => "দৃশ্য", - "list_icon" => "আইকন অ্যারে", - "list_list" => "তালিকা বিন্যাস", - "list_list_split" => "কলাম মোড", - "sort_up" => "বৃদ্ধি", - "sort_down" => "কমছে", - "order_type" => "সাজানোর ক্রম", - "order_desc" => "নিম্নক্রম", - "order_asc" => "ঊর্ধ্বগামী", - "rename" => "পুনঃনামকরণ", - "add_to_fav" => "পছন্দসই যোগ করুন", - "search_in_path" => "ফোল্ডার খোঁজা", - "add_to_play" => "প্লেতালিকায় জুড়ুন", - "manage_fav" => "প্রিয়গুলি পরিচালনা করুন", - "refresh_tree" => "সুদ্ধ করুন ডিরেক্টরি ট্রি", - "manage_folder" => "নির্দেশিকা ম্যানেজমেন্ট", - "close_menu" => "মেন্যু", - "zip" => "একটি সংকুচিত প্যাকেজ তৈরি করুন", - "unzip" => "বের করে আনতে ...", - "unzip_folder" => "একটি ফোল্ডারে আনজিপ করুন", - "unzip_this" => "বর্তমান এক্সট্র্যাক্ট", - "unzip_to" => "বের করে আনতে ...", - "zipview_file_big" => "ফাইল অত্যন্ত বড়, এবং তারপর পূর্বরূপ অপারেশন নিষ্কর্ষ!", - "clipboard" => "দেখুন ক্লিপবোর্ড", - "clipboard_clear" => "খালি ক্লিপবোর্ড", - "full_screen" => "ফুল স্ক্রীণ মোড থেকে", - "folder_info_item" => "আইটেম", - "folder_info_item_select" => "নির্বাচিত", - "file_load_all" => "সব লোড করতে ডাবল ক্লিক করুন ......", - "tips" => "প্রম্পট", - "ziping" => "জিপ করা হচ্ছে ...", - "unziping" => "বের করা হচ্ছে ...", - "moving" => "মোবাইল অপারেশন ...", - "remove_title" => "নিশ্চিতকরণ মুছুন", - "remove_info" => "নির্বাচিত আইটেমের মুছে ফেলার জন্য Confirm?", - "remove_title_force" => "স্থায়ীভাবে মুছে ফেলা", - "remove_info_force" => "আপনি কি নিশ্চিত যে আপনি স্থায়ীভাবে এই ডকুমেন্ট মুছে ফেলতে চান?", - "name_isexists" => "ভুল, নাম আগে থেকেই আছে!", - "install" => "ইনস্টল করুন", - "width" => "প্রস্থ", - "height" => "উচ্চ", - "app" => "হাল্কা অ্যাপ্লিকেশন", - "app_store" => "হাল্কা অ্যাপ্লিকেশন", - "app_create" => "অ্যাপ্লিকেশন তৈরি করুন", - "app_edit" => "আবেদন পরিবর্তন করুন", - "app_group_all" => "সম্পূর্ণ", - "app_group_game" => "খেলা", - "app_group_tools" => "টুল", - "app_group_reader" => "পড়া", - "app_group_movie" => "টিভি", - "app_group_music" => "সঙ্গীত", - "app_group_life" => "জীবন", - "app_group_others" => "অন্যান্য", - "app_desc" => "বিবরণ", - "app_icon" => "অ্যাপ্লিকেশন আইকন", - "app_icon_show" => "URL ঠিকানা অথবা ডাইরেক্টরি", - "app_group" => "আবেদন প্যাকেট", - "app_type" => "আদর্শ", - "app_type_url" => "লিংক", - "app_type_code" => "JS এক্সটেনশন", - "app_display" => "বহি", - "app_display_border" => "সীমানা না থাকলে (অর্থাৎ বর্ডারলেস নির্বাচন করুন)", - "app_display_size" => "(সমন্বয় পরীক্ষা করুন) মাপ পরিবর্তন", - "app_size" => "আয়তন", - "app_url" => "লিংক ঠিকানা", - "app_code" => "JS কোড", - "edit" => "সম্পাদন করা", - "edit_can_not" => "না একটি টেক্সট ফাইল", - "edit_too_big" => "ফাইলটি অতি দীর্ঘ, এটা 40M তার চেয়ে অনেক বেশী হতে পারে না", - "open_default" => "ডিফল্ট ওপেন", - "open_ie" => "ব্রাউজার ওপেন", - "refresh" => "সতেজ করা", - "refresh_all" => "নবায়ন", - "newfile" => "নতুন ফাইল", - "newfile_save_as" => "সংরক্ষণ করুন", - "newfolder" => "নতুন ফোল্ডার", - "newothers" => "নিউ অন্যান্য", - "path_loading" => "লোড হচ্ছে ...", - "go" => "হাঁটুন!", - "go_up" => "উচ্চ স্তর", - "history_next" => "অগ্রবর্তী", - "history_back" => "পশ্চাদপসরণ", - "address_in_edit" => "সম্পাদনা মোডে প্রবেশ করার জন্য ক্লিক করুন", - "double_click_rename" => "পুনঃনামকরনের ডাবল ক্লিক করুন", - "double_click_open" => "খোলার জন্য ডাবল ক্লিক করুন", - "path_null" => "ফোল্ডার খালি!", - "file_size_title" => "আইকন সাইজ", - "file_size_small_super" => "আল্ট্রা-ছোট", - "file_size_small" => "ছোট আইকন", - "file_size_default" => "আইকন", - "file_size_big" => "বড় আইকন", - "file_size_big_super" => "বড় আইকন", - "upload" => "আপলোড", - "upload_ready" => "আপলোড করার জন্য অপেক্ষা করা হচ্ছে", - "upload_success" => "আপলোড সফল", - "upload_path_current" => "বর্তমান ডিরেক্টরির পাল্টান", - "upload_select" => "ফাইল নির্বাচন করুন", - "upload_max_size" => "সর্বোচ্চ অনুমোদিত", - "upload_size_info" => "আপনি আরো কনফিগার করতে চান তাহলে, php.ini সর্বোচ্চ অনুমোদিত আপলোড সংশোধন দয়া করে. যখন আপনি নির্বাচন একটি ফাইল এই কনফিগারেশন চেয়ে বড় স্বয়ংক্রিয়ভাবে ফিল্টার আউট হবে.", - "upload_error" => "আপলোড ব্যর্থ", - "upload_error_http" => "নেটওয়ার্ক বা ফায়ারওয়াল ত্রুটি", - "upload_muti" => "মাল্টি ফাইল আপলোড", - "upload_drag" => "টেনে আনুন এবং ড্রপ আপলোড", - "upload_drag_tips" => "আপলোড করার জন্য আলগা!", - "path_not_allow" => "ফাইল নাম দেওয়া যাবে না", - "download" => "ডাউনলোড", - "downloading" => "লোড হচ্ছে ...", - "download_address" => "ডাউনলোড", - "download_ready" => "ডাউনলোড করা হবে", - "download_success" => "ডাউনলোড সাফল্য!", - "download_error" => "ডাউনলোড ব্যর্থ হয়েছে!", - "download_error_create" => "লেখার ত্রুটি!", - "download_error_exists" => "লিংক ব্যর্থ দায়ের করা!", - "upload_error_null" => "কোন ফাইল!", - "upload_error_big" => "ফাইলের আকার সার্ভার সীমা ছাড়িয়ে গেছে", - "upload_error_move" => "ফাইল স্থানান্তর করতে ব্যর্থ হয়েছে!", - "upload_error_exists" => "ফাইল আগে থেকেই আছে", - "upload_local" => "স্থানীয় আপলোড", - "download_from_server" => "রিমোট ডাউনলোড", - "save_path" => "পাথ সংরক্ষণ", - "upload_select_muti" => "নির্বাচনযোগ্য ফাইল আপলোড একটি বহুবচন", - "search" => "অনুসন্ধান", - "searching" => "অনুসন্ধান করা হচ্ছে ...", - "search_result" => "অনুসন্ধান ফলাফল", - "seach_result_too_more" => "অনেকগুলি অনুসন্ধান ফলাফল, এটি একটি ডিরেক্টরি বা শব্দের জন্য সুপারিশ করা হয়", - "search_null" => "কোন ফলাফল নেই!", - "search_uplow" => "কেস সংবেদনশীল", - "search_content" => "অনুসন্ধান ফাইলের বিষয়বস্তু", - "search_info" => "একটি অনুসন্ধান শব্দ লিখুন এবং অনুসন্ধান পাথ দয়া করে!", - "search_ext_tips" => "দ্বারা | আলাদা; উদাহরণ পিএইচপি জন্য | JS | CSS
                  ডিফল্ট টেক্সট ফাইল সার্চ না কি পূর্ণ হয়ে গেছ", - "file_type" => "ফাইল টাইপ", - "goto" => "ঝাঁপ দাও", - "server_dwonload_desc" => "টাস্ক ডাউনলোড লিস্টে যোগ করা হয়েছিল", - "parent_permission" => "পেরেন্ট ডাইরেক্টরি অনুমতি", - "root_path" => "আমার নথি", - "lib" => "আড়ত", - "fav" => "বুকমার্ক করুন", - "desktop" => "ডেস্কটপ", - "browser" => "ব্রাউজার", - "my_computer" => "আমার কম্পিউটার", - "recycle" => "আবর্জনা", - "my_document" => "আমার নথি", - "my_picture" => "আমার ফটো", - "my_music" => "আমার গান", - "my_movie" => "আমার ভিডিওসমূহ", - "my_download" => "আমার ডাউনলোডগুলি", - "ui_desktop" => "ডেস্কটপ", - "ui_explorer" => "ফাইল ম্যানেজমেন্ট", - "ui_editor" => "সম্পাদক", - "adminer" => "adminer", - "ui_project_home" => "প্রকল্প হোম", - "ui_login" => "লগইন করুন", - "ui_logout" => "অব্যাহতিপ্রাপ্ত", - "setting" => "সিস্টেম সেটিংস", - "setting_title" => "বিকল্প", - "setting_user" => "ব্যক্তিগত কেন্দ্র", - "setting_password" => "পাসওয়ার্ড পরিবর্তন করুন", - "setting_password_old" => "পুরনো পাসওয়ার্ড", - "setting_password_new" => "সংশোধিত", - "setting_language" => "ভাষা সেটিংস", - "setting_member" => "ইউজার ম্যানেজমেন্ট", - "setting_group" => "ব্যবহারকারী গ্রুপ ব্যবস্থাপনা", - "setting_group_add" => "ব্যবহারকারী গোষ্ঠী যোগ", - "setting_group_edit" => "সম্পাদনা ইউজার গ্রুপ", - "setting_theme" => "থিম সেটিংস", - "setting_wall" => "ওয়ালপেপার সেটিংস", - "setting_wall_desktop" => "ডেস্কটপ ওয়ালপেপার", - "setting_wall_desktop_list" => "ডেস্কটপ ওয়ালপেপার ম্যানেজমেন্ট", - "setting_wall_login_list" => "লগইন ওয়ালপেপার ম্যানেজমেন্ট", - "setting_wall_login_tips" => "টিপ: যখন একাধিক অংশ থাকে, তখন লগইন ইন্টারফেসের পটভূমি এলোমেলোভাবে ঘোরানো হবে", - "setting_wall_diy" => "কাস্টম ওয়ালপেপার:", - "setting_wall_info" => "চিত্র URL ঠিকানা, স্থানীয় ছবি ইমেজ খুলতে ব্রাউজার পেতে অধিকার হতে পারে", - "setting_fav" => "বুকমার্ক পরিচালক", - "setting_help" => "সাহায্য ব্যবহার", - "setting_about" => "কাজ সম্পর্কে", - "setting_success" => "সংশোধন প্রভাব গ্রহণ করেছে!", - "can_not_repeat" => "পুনরাবৃত্তি করার অনুমতি দেওয়া হয়নি", - "absolute_path" => "পরম ঠিকানা", - "group" => "ইউজার গ্রুপ", - "data_not_full" => "ডেটা অসম্পূর্ণ জমা দেওয়া হয়নি!", - "default_user_can_not_do" => "ডিফল্ট ব্যবহারকারী কাজ করতে পারে না", - "default_group_can_not_do" => "ডিফল্ট ব্যবহারকারী গ্রুপ কাজ করতে পারে না", - "username_can_not_null" => "ব্যবহারকারীর নাম খালি হতে পারে না!", - "groupname_can_not_null" => "ব্যবহারকারী গ্রুপের নাম খালি হতে পারে না!", - "groupdesc_can_not_null" => "ব্যবহারকারী গোষ্ঠী বর্ণনা খালি হতে পারে না!", - "group_move_user_error" => "ব্যবহারকারী গোষ্ঠী ব্যবহারকারীরা ব্যর্থ মুভ", - "group_already_remove" => "ব্যবহারকারী গ্রুপ মুছে ফেলা হয়েছে", - "group_not_exists" => "এই ব্যবহারকারী গ্রুপ অস্তিত্ব নেই", - "member_add" => "ব্যবহারকারী যুক্ত করুন", - "password_null_not_update" => "তারা বলেন, তারা পরিবর্তন করা হয়নি পাসওয়ার্ড পূরণ না হয়", - "if_save_file_tips" => "কিছু ফাইল সংরক্ষিত হয় না। আপনি উইন্ডোটি বন্ধ করার ব্যাপারে নিশ্চিত?", - "if_save_file" => "ফাইল সংরক্ষণ করা হয়নি, আপনি সংরক্ষণ করতে চান?", - "if_remove" => "মুছুন নিশ্চিত", - "member_remove_tips" => "আপনি ব্যবহারকারী ডিরেক্টরি সাফ করা যাবে সরানোর পরে", - "group_remove_tips" => "আপনি ব্যবহারকারীদের ব্যবহারকারী গ্রুপ লগইন করতে পারবেন না সরানোর পরে
                  (প্রয়োজন পুনরায় সেট ব্যবহারকারী গ্রুপ)", - "group_name" => "ব্যবহারকারী গ্রুপের নাম", - "group_name_tips" => "সুপারিশ ইংরেজি নাম, পুনরাবৃত্তি করা যাবে না", - "group_desc" => "প্রদর্শন নাম", - "group_desc_tips" => "গ্রুপের নাম বর্ণনা", - "group_role_ext" => "এক্সটেনশন বিধিনিষেধ", - "group_role_ext_tips" => "একাধিক সঙ্গে | বিচ্ছিন্ন", - "group_role_file" => "ফাইল ম্যানেজমেন্ট", - "group_role_upload" => "আপলোড করার অনুমতি দিন", - "group_role_user" => "ব্যবহারকারী তথ্য", - "group_role_group" => "ব্যবহারকারী গ্রুপ ব্যবস্থাপনা", - "group_role_member" => "ইউজার ম্যানেজমেন্ট", - "group_role_mkfile" => "নতুন ফাইল", - "group_role_mkdir" => "নতুন ফোল্ডার", - "group_role_pathrname" => "পুনঃনামকরণ", - "group_role_pathdelete" => "ফাইল মুছে ফেলার", - "group_role_pathinfo" => "ফাইল বৈশিষ্ট্যাবলী", - "group_role_pathmove" => "সরান (কপি / কাট / পেস্ট / ড্র্যাগ অপারেশন)", - "group_role_zip" => "সংকোচন", - "group_role_unzip" => "আনজিপ", - "group_role_search" => "অনুসন্ধান", - "group_role_filesave" => "ফাইল সংরক্ষণ সম্পাদনা করতে", - "group_role_can_upload" => "আপলোড ও ডাউনলোডের", - "group_role_download" => "রিমোট ডাউনলোড", - "group_role_passowrd" => "পাসওয়ার্ড পরিবর্তন করুন", - "group_role_config" => "কনফিগারেশন তথ্য", - "group_role_fav" => "বুকমার্ক কার্যকলাপ (যোগ / সম্পাদনা / মোছা)", - "action_list" => "তালিকা দেখুন", - "action_add" => "যোগ", - "action_edit" => "সম্পাদন করা", - "action_del" => "মুছুন", - "group_role_ext_warning" => "
                  পুনঃনামকরণ (নির্দিষ্ট এক্সটেনশন পালটে),
                  রক্ষা পরিবর্তনপারবেন, দূরবর্তী ডাউনলোড, নির্যাস এই ধরনের ফাইলের অনুমতি না আপলোড", - "group_tips" => "
                • 1. ইউজার গ্রুপের নামটি অনুলিপি করা যাবে না। গোষ্ঠীর নাম পরিবর্তন করার পরে, এটি পুনর্বিন্যাসিত ব্যবহারকারীর অন্তর্গত এবং স্বয়ংক্রিয়ভাবে যুক্ত করা হবে।
                • 2. এক্সটেনশানগুলি সিস্টেমের নিরাপত্তার মধ্যে সম্পর্ক সীমাবদ্ধ করুন, সাবধানে থাকুন (যদি আপনি ওয়েব ডাইরেক্টরিতে একটি নতুন পিএইচপি তৈরি করেন তবে এর অর্থ হল এই ব্যবহারকারীর প্রোগ্রামের অনুমতিগুলি পরিবর্তন করা অসম্ভব)
                • 3. পারিবারিক ব্যবস্থাপনা, অধিকার গোষ্ঠী ব্যবস্থাপনা; অধিকার দেখুন এবং যোগ, মুছে ফেলা, এবং অধিকার সংশোধন করা; প্রোগ্রাম স্বয়ংক্রিয়ভাবে যুক্ত করা হয়
                • 4. অনুমতি গোষ্ঠী অনুমতি গ্রুপ যোগ করার জন্য সেট করা হয় পর, পরবর্তী অনুমতি উত্তরাধিকারসূত্রে প্রাপ্ত হয় না (এই অনুমতি সর্বোচ্চ অনুমতি সমতুল্য)।
                • ", - "not_null" => "প্রয়োজনীয় ক্ষেত্রগুলি খালি হতে পারে না!", - "picture_can_not_null" => "ফটো খালি হতে পারে না!", - "rname_success" => "সাফল্য পুনঃনামকরণ!", - "please_inpute_search_words" => "অনুসন্ধান করার জন্য একটি পংক্তি লিখুন দয়া করে", - "remove_success" => "সফলভাবে মোছা হয়েছে!", - "remove_fali" => "মুছুন ব্যর্থ হয়েছে!", - "clipboard_null" => "ক্লিপবোর্ড খালি!", - "create_success" => "নতুন সাফল্য!", - "create_error" => "নিউ ব্যর্থ, চেক ডিরেক্টরি ব্যবহারের অনুমতি!", - "copy_success" => "[কপি] - ক্লিপবোর্ড সাফল্য আচ্ছাদন!", - "cute_success" => "[কেটে] - ক্লিপবোর্ড সাফল্য আচ্ছাদন!", - "clipboard_state" => "ক্লিপবোর্ড অবস্থা:", - "no_permission_write_all" => "ফাইল বা ডিরেক্টরির লিখনযোগ্য নয়", - "no_permission_write_file" => "ফাইল লেখার অনুমতি নেই", - "no_permission_read_all" => "ফাইল বা ডিরেক্টরির কোন পঠিত অনুমতি রয়েছে", - "copy_not_exists" => "উত্স অস্তিত্ব নেই", - "current_has_parent" => "লক্ষ্য ফোল্ডারের উৎস ফোল্ডার এর একটি খোলা হয়!", - "past_success" => "পেস্ট অপারেশন সম্পন্ন হয়", - "cute_past_success" => "কাটা অপারেশন সম্পন্ন হয়(সোর্স ফাইল মুছে ফেলা হয়, ক্লিপবোর্ড খালি)", - "zip_success" => "কম্প্রেশন সম্পন্ন", - "not_zip" => "সংরক্ষণাগার না", - "zip_null" => "নির্বাচিত ফাইল বা ডিরেক্টরির", - "unzip_success" => "আনজিপ সম্পূর্ণ", - "gotoline" => "লাইন ঝাঁপ দাও", - "path_is_current" => "পাথ এবং বর্তমান পাথ একই খুলতে!", - "path_exists" => "নাম আগে থেকেই আছে!", - "undo" => "প্রত্যাহার", - "redo" => "এন্টি প্রত্যাহার", - "preview" => "প্রি", - "wordwrap" => "মোড়ানো", - "show_gutter" => "রেখার নম্বর দেখান", - "char_all_display" => "অদৃশ্য অক্ষর প্রদর্শন করা হবে", - "auto_complete" => "স্বয়ংক্রিয়ভাবে অনুরোধ জানানো হবে", - "auto_save" => "স্বয়ংক্রিয়ভাবে সংরক্ষণ করুন", - "function_list" => "ফাংশন তালিকা", - "code_theme" => "কোডিং স্টাইল", - "font_size" => "ফন্ট সাইজ", - "confirm" => "আপনি কি নিশ্চিত যে আপনি এটি করতে চান?", - "button_ok" => "নির্ধারণ", - "button_submit" => "জমা দিন", - "button_set" => "সেট আপ করুন", - "button_cancel" => "বাতিল করা হয়েছে", - "button_edit" => "সম্পাদন করা", - "button_save" => "সংরক্ষণ করুন", - "button_apply" => "প্রয়োগ করা", - "button_save_all" => "সকল সংরক্ষণ", - "button_not_save" => "সংরক্ষণ করা হবে না", - "button_add" => "যোগ", - "button_back_add" => "যোগ ফিরুন", - "button_del" => "মুছুন", - "button_save_edit" => "পরিবর্তনগুলি সংরক্ষণ", - "button_save_submit" => "সংরক্ষণ করুন", - "button_more" => "অধিক", - "button_select_all" => "নির্বাচন সকল / নিষ্ক্রিয় করো", - "charset_AUTO" => "স্বয়ংক্রিয় সনাক্তকরণ", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "আরবি", - "charset_ISO_8859_6" => "আরবি", - "charset_ISO_8859_10" => "নরডিক ভাষায়", - "charset_CP1257" => "বাল্টিক ভাষা", - "charset_ISO_8859_13" => "বাল্টিক ভাষা", - "charset_ISO_8859_4" => "বাল্টিক ভাষা", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "জর্জিয়ান", - "charset_PT154" => "কাজাখ", - "charset_CP949" => "কোরিয়ান", - "charset_EUC_KR" => "কোরিয়ান", - "charset_GB18030" => "সরলীকৃত চীনা", - "charset_GBK" => "সরলীকৃত চীনা", - "charset_ISO_8859_14" => "কেল্ট্ জাতির ভাষা", - "charset_CP1133" => "লাও", - "charset_ISO_8859_16" => "রোমানিয়ন", - "charset_ISO_8859_3" => "দক্ষিণ ইউরোপীয়", - "charset_EUC_JP" => "জাপানি", - "charset_ISO_2022_JP" => "জাপানি", - "charset_SHIFT_JIS" => "জাপানি", - "charset_KOI8_T" => "তাজিক ভাষা", - "charset_ISO_8859_11" => "থাই", - "charset_TIS_620" => "থাই", - "charset_CP1254" => "তুর্কী", - "charset_CP1251" => "সিরিলিক", - "charset_ISO_8859_5" => "সিরিলিক", - "charset_KOI8_R" => "সিরিলিক", - "charset_KOI8_U" => "সিরিলিক", - "charset_CP1252" => "পশ্চিম ইউরোপীয় ভাষা", - "charset_ISO_8859_1" => "পশ্চিম ইউরোপীয় ভাষা", - "charset_ISO_8859_15" => "পশ্চিম ইউরোপীয় ভাষা", - "charset_Macintosh" => "পশ্চিম ইউরোপীয় ভাষা", - "charset_CP1255" => "হিব্রু", - "charset_ISO_8859_8" => "হিব্রু", - "charset_CP1253" => "গ্রিক", - "charset_ISO_8859_7" => "গ্রিক", - "charset_ARMSCII_8" => "আর্মেনিয়", - "charset_CP1258" => "ভিয়েতনামী", - "charset_VISCII" => "ভিয়েতনামী", - "charset_CP1250" => "মধ্য ইউরোপীয় ভাষাসমূহ", - "charset_ISO_8859_2" => "মধ্য ইউরোপীয় ভাষাসমূহ", - "charset_default_set" => "ফাইল এনকোডিং", - "charset_convert_save" => "যেমন এনকোড ফাইল সংরক্ষণ করুন", - "PluginCenter" => "প্লাগ কেন্দ্র", - "PluginBuy" => "ক্রয় অনুমোদন", - "PluginInstalled" => "ইনস্টল করা হয়েছে", - "PluginUpdate" => "আপডেট", - "PluginListNull" => "সেখানে কোনো বিষয়বস্তু নেই!", - "PluginType" => "শ্রেণীবিন্যাস", - "PluginTypeAll" => "সম্পূর্ণ", - "PluginTypeFile" => "বর্ধিত ফাইল", - "PluginTypeSafe" => "সিকিউরিটি টুলস", - "PluginTypeTools" => "উপযোগ", - "PluginTypeMedia" => "মাল্টিমিডিয়া", - "PluginTypeOthers" => "অন্যান্য", - "PluginInstall" => "প্লাগ ইনস্টল করুন", - "PluginEnable" => "প্লাগ-ইন সক্ষম করুন", - "PluginDisable" => "অক্ষম", - "PluginRemove" => "প্লাগ আনইনস্টল", - "PluginConfig" => "প্লাগ-ইন কনফিগার করুন", - "PluginStatus" => "রাষ্ট্র", - "PluginStatusEnabled" => "সক্ষম করা", - "PluginStatusDisabled" => "সক্ষম করা", - "PluginStatusNotInstall" => "ইনস্টল করা নেই", - "PluginInstalling" => "ইনস্টলেশনের ...", - "PluginHasUpdate" => "আপডেট", - "PluginUpdateStart" => "প্ল্যাগ-ইন আপডেট", - "PluginNeedConfig" => "প্রারম্ভিক কনফিগারেশন সক্রিয় করতে হবে", - "PluginConfigNotNull" => "প্রয়োজনীয় ক্ষেত্রগুলি খালি রাখা যাবে না!", - "PluginOpen" => "খোলা", - "PluginAuther" => "লেখক", - "PluginVersion" => "সংস্করণ", - "PluginDownloadNumber" => "ইনস্টল", - "PluginBack" => "প্রত্যাবর্তন", - "PluginReadme" => "বিবরণ", - "PluginResetConfig" => "ডিফল্ট সেটিংস পুনরুদ্ধার করুন", - "PluginInstallSelf" => "ম্যানুয়াল ইনস্টলেশন", - "Plugin.config.auth" => "অনুমতিসমূহ", - "Plugin.config.authDesc" => "প্রাপ্তিসাধ্য সকল সেটিংস, অথবা নির্দিষ্ট ব্যবহারকারীদের ব্যবহারকারী গোষ্ঠী, অধিকার সংগঠনগুলো ব্যবহার করতে পারেন", - "Plugin.config.authOpen" => "অ্যাক্সেস খুলুন", - "Plugin.config.authOpenDesc" => "দেখার কোন প্রয়োজন অ্যাক্সেস করা যাবে না, বহিরাগত ইন্টারফেস কল জন্য ব্যবহার করা যেতে পারে", - "Plugin.config.authAll" => "ধারক", - "Plugin.config.authUser" => "ব্যবহারকারী", - "Plugin.config.authGroup" => "মনোনীত বিভাগ", - "Plugin.config.authRole" => "রাইটস গ্রুপ", - "Plugin.Config.openWith" => "ওপেন শৈলী", - "Plugin.Config.openWithDilog" => "অভ্যন্তরীণ ডায়ালগ", - "Plugin.Config.openWithWindow" => "নতুন পৃষ্ঠা খোলে", - "Plugin.Config.fileSort" => "এক্সটেনশন সমিতি অগ্রাধিকার", - "Plugin.Config.fileSortDesc" => "বৃহত্তর উচ্চ অগ্রাধিকার খুলতে এক্সটেনশন", - "Plugin.Config.fileExt" => "সমর্থিত ফাইল ফরম্যাট", - "Plugin.Config.fileExtDesc" => "প্লাগ-ইন যুক্ত এক্সটেনশন", - "Plugin.tab.basic" => "বেসিক সেটিং", - "Plugin.tab.auth" => "অনুমতিসমূহ", - "Plugin.tab.others" => "অন্যান্য সেটিংস", - "Plugin.default.aceEditor" => "টেক্কা সম্পাদক", - "Plugin.default.htmlView" => "ওয়েব পৃষ্ঠা পূর্বরূপ", - "Plugin.default.picasa" => "পিকাসা ছবি ব্রাউজিং", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer খেলোয়াড়", - "Plugin.auth.viewList" => "প্লাগইন তালিকা", - "Plugin.auth.setting" => "প্লাগইন সেটিংস", - "Plugin.auth.status" => "বন্ধ করুন", - "Plugin.auth.install" => "Install / Uninstall", - "Explorer.UI.openWith" => "ওপেন নির্বাচন করুন", - "Explorer.UI.openWithText" => "নোটপ্যাড খুলতে", - "Explorer.UI.appSetDefault" => "ডিফল্ট খোলা সেট", - "Explorer.UI.appAwaysOpen" => "সর্বদা এই ফাইল খোলার জন্য নির্বাচিত প্রোগ্রাম ব্যবহার", - "Explorer.UI.selectAppDesc" => "প্রোগ্রাম নির্বাচন করুন আপনি এই ফাইলটি খুলতে চান", - "Explorer.UI.selectAppWarning" => "দয়া করে আবেদন নির্বাচন করুন!", - "Explorer.UI.appTypeSupport" => "সমর্থিত", - "Explorer.UI.appTypeAll" => "সমস্ত অ্যাপ্লিকেশন", - "kodApp.oexe.edit" => "হালকা আবেদন সম্পাদনা করুন", - "kodApp.oexe.open" => "আলোর আবেদন খুলুন" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ca/about.html b/plugin/document/kod/config/i18n/ca/about.html deleted file mode 100644 index 37cf93988..000000000 --- a/plugin/document/kod/config/i18n/ca/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer és Què?
                  -

                  KODExplorer és una gestió de documents en línia basat en la web de codi obert, editor de codi. Proporciona una mena d'interfície d'usuari de Windows clàssic, un joc de gestió de documents en línia, vista prèvia d'arxius, editar, carregar, descarregar, descomprimir la reproducció de música en línia. Li permet assolir el desenvolupament web directament al navegador, el codi font d'arxius de vista prèvia, i desplega el propietari del lloc i l'operació local tan fàcil, ràpida i segura experiència.

                  -

                  - disseny -

                  -

                  tradició clàssica, la recerca de la innovació, per proporcionar als usuaris convenient, segur i fàcil d'usar sistema de gestió del núvol en línia.

                  -

                  sempre que (quan), on (on), té la web sempre que ho desitgi (vol) és la seva eina de gestió (4W política).

                  -

                  -

                  -

                  Actualment sistema de gestió KODExplorer situada principalment en l'allotjament del núvol personal, petita - orientada als usuaris la gestió del núvol empresarial de recursos, gestió de discos de xarxa, gestió de llocs petits i mitjans. Web Developer i Màster (veterans): editor en línia, còpia de seguretat comprimida, desplegament, operació clàssica interfície de Windows, fàcil de començar i desfer-se de la SSH amfitrió, comanda ftp operacions de trepat complexes.

                  -

                  núvol personal privada, (novell): Gestió de recursos de disc de xarxa, el mateix funcionament de la interfície clàssica de Windows, es pot posar la unitat d'exploració de xarxa de música, arxius de pantalla, la càrrega i descàrrega ràpida i fàcil.

                  -
                  - -
                  -
                  característiques
                  -

                  gestió integral de documents, potent editor d'arxius en línia

                  -

                  allà on estigui, pot administrar els seus arxius, i d'entreteniment en línia, l'escriptura de codi en línia! Així com adequats per a ús com el sistema operatiu.

                  -

                  extensa experiència del trasplantament local d'operació de la dreta, arrossegament, caixa de selecció, accessos directes, cerca d'arxius (contingut de recerca) ......

                  -

                  quadre de selecció, moviment d'arrossegament, arrossegar i deixar anar la càrrega, editor en línia, reproductor de vídeo, descomprimir. Plena garantia d'execució ajax i l'experiència!

                  -

                  cada funció perfecta connexió directa, en forma de diàleg, les funcions de gestió multi-tasca

                  -

                  Editor suporta multi-document, el suport ZendCoding html, CSS, JS major eficiència de codificació!

                  -

                  suport xinès perfecte, il·legible resoldre diverses situacions;

                  -
                  - -
                  -
                  de codi obert adopció de tecnologia
                  -

                  1.Jquery:jpuery (connector: Hotkeys.ztree.contentmenu) Js marc de desenvolupament del corrent principal. El funcionament de l'operació Dom, llista de materials, operació CSS, Ajax i el paquet

                  -

                  2.ArtDialog:un disseny bonic, fort compatibilitat del navegador reproductor de diàleg. Així emergent mànec, esdeveniments i transmissió de dades per obtenir una millor gestió unificada

                  -

                  3.Ztree:control de llista d'arbre, l'escalabilitat és molt giny de forta manipulació de dades d'arbre

                  -

                  4.codemirror:un editor de codi js connectors, és compatible amb una varietat de llenguatges de programació per a posar en relleu

                  -

                  5.zendcoding:uns codis html suport d'escriptura ràpida plug-ins. Simplifica la definició de codi està escrit. simple recopilació

                  -

                  6.less:un model de desenvolupament css funcional eficient de millorar l'extrem frontal fulls d'estil CSS reutilització . simple recopilació

                  -

                  7.SWFUpload:arxiu flash càrrega

                  -

                  8 .CMP4:un molt bon flash player connector arxius multimèdia, suport per a streaming mitjana, molt popular eina de reproducció de vídeo de música. El suport a la pell, la configuració altament configurables. Llista dinàmics en XML carregat. mms mitjans de transmissió, llicència de codi obert compatible amb la reproducció de mitjans rstp

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ca/edit.html b/plugin/document/kod/config/i18n/ca/edit.html deleted file mode 100644 index 1c7fc3f6c..000000000 --- a/plugin/document/kod/config/i18n/ca/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  funcionalitat rica

                  -

                  Codi sol·licita automàticament

                  -

                  Multi-tema: Trii la seva estil de programació preferida

                  -

                  Font personalitzat: per al seu ús en l'escena

                  -

                  cursor d'edició de múltiples, edició de blocs experiència en programació en línia comparable al sublim

                  -

                  Bloc de plegat, s'expandeixi; embolicar

                  -

                  Suport per a múltiples finestres, arrossegueu la seqüència de commutació;

                  -

                  El manteniment de múltiples documents, buscar i reemplaçar; Història;

                  -

                  Acte-complet [], {}, (), '' ''

                  -

                  Vista prèvia en línia en temps real que li permet caure en l'amor amb la programació en línia!

                  -

                  zendcodeing suport, escriure codi vuitanta

                  -

                  Més característiques tot esperant el seu descobriment ......

                  -
                  -
                  -

                  150 tipus de codi de relleu

                  -

                  Consell: HTML, JavaScript, CSS, almenys, Sass, SCSS

                  -

                  desenvolupament web: PHP, Perl, Python, Ruby, Elang, vaja ...

                  -

                  llenguatges tradicionals: Java, C, C ++, C #, ACTIONSCRIPT, VBScript ...

                  -

                  Altres: reducció del preu, closca, sql, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  acció Drecera

                  -
                   dreceres d'ús comú: 
                  - ctrl + s per estalviar 
                  - Ctrl + A Selecciona-ho tot Ctrl + X Tallar 
                  - Ctrl + C Ctrl + v copiar i enganxar 
                  - Control + Z Desfer Desfer anti Ctrl + I 
                  - Ctrl + F per trobar el reemplaçament ctrl + f + f 
                  - Win + alt + 0 Reduir tot Win + Alt + Shift + 0 Ampliar Tot 
                  - esc [Recerca Sortir cancel·la automàticament li demana ...] 
                  - Ctrl-Maj-s Vista prèvia 
                  - Ctrl-Maj-I mostren i tancar la funció 
                  -
                  -
                   Trieu: 
                  - Ratolí carpa - arrossegament 
                  - shift + Inici / Fi / dalt / esquerra / baix / dreta 
                  - shift + Re Pàg / Av Pàg voltejar cap amunt i cap avall per seleccionar 
                  - Ctrl + Maj + inici / final de l'actual del cursor fins al principi i la fi 
                  - alt + del ratolí per arrossegar la selecció de blocs 
                  - ctrl + alt + g lots seleccioneu i introduïu l'actual editor de multi-tab 
                  -
                  -
                   cursor: 
                  - Inici / Fi / dalt / esquerra / baix / dreta 
                  - casa ctrl + / final moure el cursor al document cap / cua 
                  - Control + P Anar a l'etiqueta a joc 
                  - PAGEUP / Av Pàg cursor amunt i avall 
                  - alt + fletxa esquerra / dreta per passar a la part superior de la línia de 
                  - shift + cursor esquerra / dreta fins al final de la línia i 
                  - Ctrl + L per saltar a una fila específica 
                  - ctrl + alt + amunt / avall (a baix) augmentar el cursor 
                  -
                  -
                   Edita: 
                  - ctrl + / Comentari i ctrl + alt + elimini el comentari d'un justificat 
                  - l'alineació de canvi pestanya taula + taula d'avanç global 
                  - eliminar eliminar eliminar tota la línia de ctrl + d 
                  - Ctrl + Suprimir per suprimir la fila a la paraula correcta 
                  - ctrl / shift + tecla de retrocés per esborrar la paraula de l'esquerra 
                  - alt + shift + amunt / avall i s'afegeixen a la línia de còpia d'avió (continuació) 
                  - Alt + Supr per esborrar el contingut de la dreta del cursor 
                  - alt + amunt / avall a la línia actual i la línia (al costat de canvi de línia) 
                  - SHIFT + D + ctrl files copien i s'afegeixen a la següent 
                  - Ctrl + Suprimir per suprimir la dreta de la paraula 
                  - + Maj + ctrl o convertits a minúscules 
                  - Control + U text seleccionat a majúscules 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/ca/help.html b/plugin/document/kod/config/i18n/ca/help.html deleted file mode 100644 index e7173ba43..000000000 --- a/plugin/document/kod/config/i18n/ca/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  gestió d'arxius
                  -

                  Selecció d'arxius: la ràdio, la carpa del ratolí ,, ctrl escollida a l'atzar, el teclat cap amunt i cap avall, la llar, la selecció final de les eleccions canviar.

                  -

                  operació d'arxiu: Després de seleccionar un arxiu, pot copiar, tallar, esborrar, veure les propietats de compressió, canviar el nom, presentació preliminar oberta i altres operacions ......

                  -

                  Càrrega d'arxius: Pujar diversos arxius per lots; html5 càrrega d'arrossegament (arrossegament per pujar a la perfecció finestra, arrossegar i deixar anar el suport a les carpetes)

                  -

                  Funció: de dreta-arxiu, carpeta, feu, més just després de l'operació d'elecció, escriptori, dreta, dreta la vista de directori, accessos directes del menú enquadernats a la dreta
                  - (Selecciona-ho tot - Còpia - Cut - Enganxar - Eliminar - Canviar el nom, ......)

                  -

                  Explorador d'arxius: la manera de llista, la manera d'icona, feu doble clic a sub-carpetes, l'operació barra d'adreces, obrir un registre contrària registre de carpetes (cap endavant i cap enrere)

                  -

                  Suport d'arrossegar i deixar anar: Comprovar arrossegament, tall per aconseguir la funció carpeta especificada

                  -

                  Tecles d'accés directe: eliminar eliminar, Ctrl + A Selecciona-ho tot, Ctrl + C per copiar, + X Tallar, cerca d'arxius (contingut de recerca) ctrl

                  -
                  -
                  -
                  Vista prèvia d'arxius
                  -

                  Previsualització d'arxius: veure el contingut d'un arxiu de text d'edició i l'estalvi; html, previsualització d'arxius SWF,

                  -

                  Imatge Preview: generació automàtica d'imatges en miniatura, presentació de diapositives d'imatges;

                  -

                  La reproducció d'àudio: reproduir música en línia i els arxius de vídeo, el suport MP3, WMA, mitjans, AAC, WAV, MP4,

                  -

                  Vídeo: reproducció de vídeo en línia, amb el suport formats: FLV, F4V, 3gp

                  -

                  Oficina: Vista prèvia en línia, amb el suport formats: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Els accessos directes
                  -

                  introduir obert

                  -

                  Ctrl + A Selecciona-ho tot

                  -

                  Ctrl + C per copiar el seleccionat

                  -

                  Control + V per enganxar

                  -

                  Ctrl + X Tallar

                  -

                  Ctrl + F per buscar el directori actual

                  -

                  alt + n nou arxiu

                  -

                  alt + m Nova carpeta

                  -

                  Eliminar Esborrar seleccionat

                  -

                  tornar retrocés

                  -

                  Control + tecla de retrocés cap endavant

                  -

                  F2 Canviar nom seleccionat (carpeta)

                  -

                  Inici / Fi / dalt / baix / esquerra / dreta per seleccionar el fitxer

                  -

                  Comproveu amb qualsevol tecla per pressionar la primera lletra dels arxius i carpetes de caràcters seleccionada cicle automàtic

                  -
                  diff --git a/plugin/document/kod/config/i18n/ca/main.php b/plugin/document/kod/config/i18n/ca/main.php deleted file mode 100644 index 38305b16c..000000000 --- a/plugin/document/kod/config/i18n/ca/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Si us plau, seleccioneu el fitxer ...", - "path_api_select_folder" => "Si us plau, seleccioneu una carpeta ...", - "path_api_select_image" => "Seleccioneu una imatge ...", - "share_can_upload" => "permetre càrregues", - "move_error" => "no es van poder moure", - "setting_basic" => "configuració bàsica", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "obrir Animació", - "recycle_open_if" => "Obriu la Paperera de reciclatge", - "recycle_open" => "obert", - "setting_user_recycle_desc" => "Després de la supressió, se suprimirà l'eliminació física directament", - "setting_user_animate_desc" => "Finestra oberta i altra animació", - "setting_user_sound_desc" => "So de l'operació", - "setting_user_imageThumb" => "Miniatures de la imatge", - "setting_user_imageThumb_desc" => "Millor experiència de navegació després de l'obertura", - "setting_user_fileSelect" => "Obriu la comprovació de la icona de fitxer", - "setting_user_fileSelect_desc" => "Feu clic a la icona de la icona d'arxiu, feu clic amb el botó secundari a l'entrada de menú contextual", - "qrcode" => "URL del codi QR", - "theme_mac" => "blanc minimalista Mac", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Blau del Metro Classic", - "theme_metro_green" => "Metro llum verda", - "theme_metro_purple" => "Metro elegant porpra", - "theme_metro_pink" => "metre Rose", - "theme_metro_orange" => "taronja brillant Metro", - "theme_alpha_image" => "Brillant - vol", - "theme_alpha_image_sun" => "Brillant - posta de sol", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "personalitzada", - "theme_diy_title" => "De la configuració del tema", - "theme_diy_background" => "fons", - "theme_diy_image" => "imatge", - "theme_diy_color_blur" => "degradat de color", - "theme_diy_image_blur" => "les preses borroses", - "theme_diy_image_url" => "direcció fotos", - "theme_diy_color_start" => "color de partida", - "theme_diy_color_end" => "color final", - "theme_diy_color_radius" => "angle de gradient", - "system_role_admin_set" => "Els administradors tenen tots els drets, sense establir!", - "login_error_user_not_use" => "L'usuari ha estat desactivat! Si us plau, poseu-vos en contacte amb l'administrador", - "login_error_kod_version" => "conflicte de versions", - "login_error_role" => "grup de permisos de vista no existeix, si us plau, poseu-vos en contacte amb l'administrador", - "no_permission_group" => "No està en aquest grup!", - "no_permission_write" => "El directori no té permís d'escriptura", - "user" => "usuari", - "save_as" => "guardar com", - "check_update" => "actualització", - "keyboard_type" => "La manera de teclat", - "font_family" => "fonts", - "code_mode" => "El ressaltat de sintaxi", - "path_can_not_share" => "Només admet compartir els seus propis documents!", - "path_can_not_action" => "Aquest directori no és compatible amb aquesta operació!", - "wap_page_pc" => "versió PC", - "wap_page_phone" => "mòbil", - "image_size" => "dimensions de la imatge", - "no_permission_action" => "Vostè no té aquest permís, si us plau, poseu-vos en contacte amb l'administrador!", - "path_is_root_tips" => "S'ha arribat al directori arrel!", - "kod_group" => "organització", - "my_kod_group" => "Estic al departament", - "space_tips_default" => "(GB) 0 sense límit", - "space_tips_full" => "sense limitar", - "space_size" => "espai", - "space_size_use" => "L'ús d'espai", - "space_is_full" => "No hi ha prou espai disponible, contacteu amb l'administrador.", - "system_open_true_path" => "Èxit obert al gestor de fitxers!", - "group_role_error" => "error de permisos de funció (no hi ha configuració de permisos)", - "group_role_error_admin" => "permisos insuficients", - "markdown_content" => "Taula de Continguts", - "system_group" => "Usuaris i departaments", - "system_group_edit" => "Direcció del departament", - "system_group_role" => "identitat de rol", - "system_group_create" => "Nou departament", - "system_group_name" => "Nom del departament", - "system_group_father" => "Departament superior", - "system_group_add" => "Afegeix un subdistrito", - "system_group_remove" => "Elimina el departament", - "system_group_remove_tips" => "Esteu segur d'eliminar el departament?
                  Després de la supressió de la part de l'usuari s'eliminarà, el subsector es desplaçarà al sector de l'arrel", - "system_group_select" => "Tria un departament", - "system_group_select_result" => "Els membres pertanyen als següents sectors", - "system_role_admin_tips" => "Comentaris: els administradors del sistema no estan autoritzats a controlar", - "system_member_action" => "Gestió d'usuaris", - "system_member_add" => "nou usuari", - "system_member_role" => "tasques dels permisos", - "system_member_role_select" => "seleccionar", - "system_member_password_tips" => "No ompli sense modificar", - "system_set_home_path" => "catàleg personalitzat", - "system_set_home_path_tips" => "El directori per defecte està buida", - "system_member_group" => "On el departament", - "system_member_group_edit" => "Departament editorial", - "system_member_remove" => "eliminar usuari", - "system_member_remove_tips" => "Confirma la supressió d'usuaris?
                  després de treure el directori de l'usuari s'esborren completament", - "system_member_set_role" => "Per confirmar el canvi dels permisos de grups d'usuaris seleccionats?", - "system_member_remove_group" => "Determinar l'usuari seleccionat serà eliminat d'aquest grup?", - "system_member_import" => "afegir a granel", - "system_member_import_desc" => "Un usuari per línia,
                  ja existeixen són ignorats en silenci", - "system_member_use" => "permetre", - "system_member_unuse" => "desactivar", - "system_member_space" => "Estableix la mida de l'espai d'usuari ", - "system_member_space_tips" => " Estableix la mida de l'espai d'usuari ", - "system_member_space_number" => " Ha de ser un número!", - "system_member_group_config" => "Departament de muntatge per lots", - "system_member_group_remove" => "S'ha eliminat del departament", - "system_member_group_insert" => "Afegeix al departament", - "system_member_group_reset" => "Reinicia el departament", - "system_member_group_error" => "Error del departament", - "system_group_action" => "Direcció del departament", - "system_role_add" => "Afegir identitat de rol", - "system_role_read" => "només lectura", - "system_role_write" => "Podeu llegir i escriure", - "system_setting_root_path" => "accés root", - "system_setting_root_path_desc" => "Només un administrador del sistema pot accedir a tots els directoris, altres grups de drets dels usuaris només poden veure el seu propi directori d'usuari. Si voleu activar o desactivar l'accés d'administrador
                  a altres directoris, pot modificar el php open_basedir paràmetres anti-cross-site,com configurar", - "system_group_role_title" => "Direcció del paper de les autoritats departamentals", - "system_group_role_remove" => "Accepta per eliminar el paper del departament", - "system_group_role_style" => "estil", - "system_group_role_display" => "si", - "system_group_role_display_desc" => "Estableixi si voleu o no mostrar els drets d'usuari del departament", - "role_type_name_read" => "llegir", - "role_type_name_read:list" => "Llista de fitxers", - "role_type_name_read:info" => "Arxiu (carpeta) Propietat Vista, recerca de carpetes", - "role_type_name_read:copy" => "Còpia d'arxius", - "role_type_name_read:preview" => "vista prèvia d'arxius (imatges, documents, àudio i vídeo)", - "role_type_name_read:download" => "Arxiu (carpeta) Descarregar", - "role_type_name_write" => "escriure", - "role_type_name_write:add" => "Crear un arxiu (carpeta), extreure el fitxer comprimit", - "role_type_name_write:edit" => "Deseu el fitxer per editar", - "role_type_name_write:change" => "Canviar el nom, ajustar l'estructura de directoris", - "role_type_name_write:upload" => "Arxiu (carpeta) de càrrega, descàrrega remota", - "role_type_name_write:remove" => "Arxiu (carpeta) eliminar, tallar", - "group_guest" => "visitants", - "group_guest_desc" => "No sou membre del departament,
                  només pot accedir al [departament de directoris compartits] el següent contingut, permisos de només lectura.", - "group_role_lebel_desc" => "Sou membre d'aquest departament,
                  Tots els documents del departament Tots els drets reservats per l'administrador", - "button_save_and_add" => "Desa i continua afegint", - "path_cannot_search" => "El directori no és compatible amb la recerca!", - "not_support" => "No és compatible!", - "group_not_exist" => "Grup usuari no existeix!", - "upload_clear_all" => "esborrar tots", - "upload_clear" => "esborrar", - "upload_setting" => "establir", - "upload_tips" => "Utilitza càrrega llesca, ja no està subjecta a límit de php.ini; recomanada d'arrossegar la carpeta de crom i l'experiència de pujar gota", - "upload_exist" => "Arxiu del mateix nom", - "upload_exist_rename" => "rebatejar", - "upload_exist_replace" => "coberta", - "upload_exist_skip" => "ometre", - "upload_add_more" => "afegir a granel", - "more" => "més", - "system_setting" => "Configuració del sistema", - "openProject" => "Obriu l'editor de projectes", - "url_download" => "descarregar", - "url_link" => "URL", - "app_type_link" => "Els accessos directes", - "createLink" => "crear accés directe", - "createLinkHome" => "Publicada l'accés directe de l'escriptori", - "createProject" => "Afegint al projecte editor", - "only_read" => "només lectura", - "only_read_desc" => "El directori no té permís d'escriptura
                  Podeu establir permisos per aquest directori al servidor", - "not_read" => "il·legible", - "explorerNew" => "kod enllaç", - "zip_download_ready" => "Després de la compressió es descarrega automàticament, si us plau esperi ...", - "set_background" => "Establir com a Fons d'Escriptori", - "share" => "Comparteix", - "my_share" => "La meva participació", - "group_share" => "Compartició externa de grup", - "share_edit" => "Edita compartir", - "share_remove" => "Cancel·lació d'ús compartit", - "share_remove_tips" => "Estàs segur que vols cancel·lar la compartició? La connexió pública quedarà invalidada.", - "share_path" => "Comparteix el camí", - "share_title" => "Compartir recursos", - "share_name" => "Compartiu el títol", - "share_time" => "expiració", - "share_time_desc" => "Null no s'estableix", - "share_password" => "extracte de la contrasenya", - "share_password_desc" => "contrasenya buida, no s'ha establert", - "share_cancle" => "unsharing", - "share_create" => "Crear un enllaç públic", - "share_url" => "direcció compartida", - "share_not_download" => "descarregar prohibició", - "share_not_download_tips" => "Partícip prohibir descàrrega!", - "share_code_read" => "lector de codis", - "share_save" => "Desa la configuració", - "share_error_param" => "Error de paràmetre!", - "share_error_user" => "Usuari Informació d'error!", - "share_error_sid" => "Compartir no existeix!", - "share_error_time" => "Vostè ve massa tard, la proporció ha expirat!", - "share_error_path" => "arxiu compartit no existeix, s'elimina o es retira!", - "share_error_password" => "contrasenya incorrecta!", - "share_error_show_tips" => "Aquest tipus no és compatible amb vista prèvia de fitxers!", - "share_view_num" => "vistes:", - "share_download_num" => "descàrregues:", - "share_open_page" => "Obriu la pàgina compartida", - "open_the_path" => "Entra al directori", - "recycle_clear" => "Buidar la paperera", - "recycle_clear_success" => "l'èxit d'escombraries buit!", - "recycle_clear_info" => "Esteu segur que voleu buidar completament les escombraries?", - "fav_remove" => "Cancel·lar la col·lecció", - "remove_item" => "articles", - "uploading" => "pujant", - "upload_tips_more" => "Hi ha massa arxius, la recomanació de la càrrega comprimit, després descomprimir en línia!", - "uploading_move" => "En la transferència de fusió ...", - "show_file" => "Nova pàgina de vista prèvia", - "unknow_file_title" => "Obrir l'arxiu Tip!", - "unknow_file_tips" => "No va donar suport l'aplicació d'aquest arxiu, es pot:", - "unknow_file_try" => "intentar", - "unknow_file_download" => "Descarregar l'arxiu", - "unknow_plugin_search" => "aplicacions relacionades amb la recerca instal·lats", - "config_save_error_auth" => "No s'ha pogut desar la configuració, l'administrador va prohibir aquest privilegi!", - "config_save_error_file" => "Error, l'arxiu no es pot escriure!", - "beautify_code" => "codi formatador", - "convert_case" => "cas de conversió", - "convert_upper_case" => "Converteix a majúscules", - "convert_lower_case" => "Convertits en minúscules", - "editor_insert_time" => "Hora actual ", - "editor_md5" => " Encriptació de Md5 ", - "editor_qrcode" => " Codi bidimensional de cadena ", - "editor_regx" => " Prova d'expressió regular ", - "editor_chinese" => " Conversió simplificada ", - "editor_chinese_simple" => " Convertiu-vos a xinès simplificat ", - "editor_chinese_traditional" => " Converteix als xinesos tradicionals ", - "editor_base64" => "Còdec Base64 ", - "editor_base64_encode" => " Codificació Base64 ", - "editor_base64_decode" => " Descodificació Base64 ", - "editor_url" => " Còdec d'URL ", - "editor_url_encode" => " Codificació d'URL ", - "editor_url_decode" => " Descodificació d'URL ", - "editor_unicode" => " Còdec Unicode ", - "editor_unicode_encode" => " Codificació Unicode ", - "editor_unicode_decode" => " Descodificació unicode", - "editor_tools_select_tips" => " Seleccioneu el contingut que voleu convertir.", - "editor_calc" => "Calculadora gratuïta", - "shortcut" => "Els accessos directes", - "use_free" => "Seguir utilitzant la versió gratuïta", - "learn_more" => "més informació", - "replace" => "reemplaçar", - "selectAll" => "seleccionar", - "reload" => "recarregar", - "about" => "a", - "complete_current" => "Finalització automàtica del corrent", - "view" => "vista", - "tools" => "eina", - "help" => "ajudar", - "not_exists" => "no hi ha", - "group_role_fileDownload" => "descàrregues", - "group_role_share" => "quota", - "users_share" => "compartir", - "system_setting_save" => "Configuració de seguretat", - "system_setting_menu" => "menú de gestió", - "system_name" => "Nom del programa", - "system_name_desc" => "logotip del programa del títol", - "system_desc" => "Descripció del programa", - "path_hidden" => "exclusions de directori", - "version_not_support" => "La seva versió no suporta això, si us plau aneu a la pàgina web oficial per comprar la versió avançada!", - "version_not_support_number" => "A mesura que el nombre de restricció no s'admet aquesta operació, si us plau, comprar la versió avançada de la pàgina web oficial!", - "path_hidden_desc" => "Directoris i arxius per defecte no es mostren, separats per comes", - "new_user_folder" => "El nou usuari és creat per directori predeterminat", - "new_user_folder_desc" => "Separats per comes", - "new_user_app" => "El nou usuari es crea mitjançant l'aplicació per defecte", - "new_user_app_desc" => "Aplicacions Application Center, una pluralitat d'separats per comes", - "auto_login" => "Els visitants d'inici de sessió automàtic", - "auto_login_desc" => "L'inici de sessió d'usuari per defecteguest/guestusuaris, després d'obrir-lo, per assegurar-se que l'usuari existeix", - "first_in" => "Després d'entrar en el valor per defecte", - "version_price_free" => "gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directori no es pot escriure, establir el directori i tots els subdirectoris per intentar-ho de nou després de la lectura-escriptura!", - "menu_name" => "nom del menú", - "menu_hidden" => "amagar", - "menu_show" => "visualització", - "menu_move_down" => "baix", - "menu_move_up" => "fins", - "menu_move_del" => "esborrar", - "menu_open_window" => "Obrir una nova finestra", - "menu_sub_menu" => "Submenú", - "url_path" => "l'adreça URL", - "url_path_desc" => "l'adreça URL o el codi js", - "no_permission_read" => "Vostè no té permís per llegir!", - "no_permission_download" => "Vostè no té permís per descarregar!", - "php_env_check" => "Operant vigilància del medi ambient:", - "php_env_error" => "Falta la biblioteca php", - "php_env_error_ignore" => "Ignorar i introdueixi", - "php_env_error_version" => "versió de PHP no pot ser inferior a 5.0", - "php_env_error_path" => "no es pot escriure", - "php_env_error_list_dir" => "El seu servidor web obre la característica de llistar directoris per raons de seguretat, desactivar aquesta característica!com?", - "php_env_error_gd" => "php biblioteca GD ha de ser obert, en cas contrari el codi, utilitzeu la miniatura no funcionarà correctament", - "install_login" => "Podeu utilitzar el següent accés al compte", - "install_enter" => "El sistema de", - "install_user_default" => "Administrador: {0} / (per sota d'establir una contrasenya)
                  L'usuari mitjà: {1}
                  Els usuaris convidats: {2}", - "login_root_password" => "Establir la contrasenya d'administrador", - "login_root_password_repeat" => "Confirmar contrasenya de nou", - "login_root_password_equal" => "Les dues contrasenyes no coincideixen!", - "login_root_password_tips" => "Establir una contrasenya d'administrador!", - "forget_password" => "¿Ha oblidat la seva contrasenya", - "forget_password_tips" => "Heu oblidat la contrasenya de l'administrador:
                  Si us plau, ingressi servidor eliminar ./data/system/install.lock restablir;

                  No oblidat la contrasenya d'administrador:
                  Si us plau, poseu-vos en contacte amb l'administrador per restablir!", - "copyright_desc" => "Kodexplorer és un sistema de gestió de documents web altament aclamat, es pot utilitzar per a la gestió de documents interns o compartit, també es pot utilitzar al servidor de gestió del lloc, reemplaci ftp, així com el desenvolupament webIDE directament en línia. També pot programar el segon desenvolupament per integrar aquest principi en els seus sistemes existents.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango núvol • Explorador", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango núvol • Explorador", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webos, webIDE, php filemanage, filemanage, Dao núvol, núvol de mango, els sistemes de gestió de documents, el disc de núvol empresarial, explorador ,, documentació en línia, en línia d'oficina, oficina en línia, vista prèvia de CAD en línia, edició en línia , editor en línia", - "kod_meta_description" => "KodExplorer pot ennuvolar carretera (abans de mango núvol) és un proveïdor líder de govern / núvols corporatives privades i sistema de gestió de documents en línia per als llocs web personals, les implementacions empresarials en el núvol privada, emmagatzematge en xarxa, gestió de documents en línia, oficina en línia per proporcionar segur i controlat, simple i fàcil ús, altament personalitzat productes de núvol privat. L'ús de finestres interfície d'estil, les pràctiques d'operació, sense haver de adaptar-se a començar a treballar ràpidament, suportar centenars de populars format d'arxiu de vista prèvia en línia, reproducció i favorable al medi ambient d'edició, de gran abast, és un assaig d'una vegada, ja no és inseparable de la privada ofertes de núvol.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "iniciar la sessió", - "guest_login" => "visites Ferma", - "username" => "Compte d'inici de sessió", - "userNickName" => "Sobrenom de l'usuari", - "password" => "contrasenya", - "login_code" => "codis", - "need_check_code" => "codi d'autenticació d'inici de sessió oberta", - "need_check_code_desc" => "Després d'iniciar sessió, heu d'introduir el codi de verificació.", - "setting_csrf_protect" => "protecció CSRF obert", - "setting_csrf_protect_desc" => "Després de tipus d'obertura d'atac pot protegir eficaçment CSRF", - "login_rember_password" => "recordar contrasenya", - "setting_show_root_group" => "Llista tots els departaments", - "setting_show_root_group_desc" => "El departament d'arrel del directori arbre ja ha d'incloure tots els departaments", - "setting_show_share_user" => "Una llista de tots els usuaris", - "setting_show_share_user_desc" => "El departament d'arrel del directori arbre apareix per a tots els usuaris", - "setting_clear_user_recycle" => "Buidar la paperera de reciclatge per a tots els usuaris", - "setting_clear_cache" => "Buidar la memòria cau", - "setting_icp" => "Els drets d'autor o número de registre", - "setting_global_css" => "CSS personalitzat mundial", - "setting_global_css_desc" => "Totes les pàgines s'insereixi CSS personalitzat", - "setting_global_html" => "HTML codi estadístic", - "setting_global_html_desc" => "s'inseriran totes les pàgines en aquest codi HTML paràgraf, el codi es pot col·locar estadístiques de tercers", - "us" => "kodcloud.com", - "login_not_null" => "Nom d'usuari i la contrasenya no pot estar buida!", - "code_error" => "Els codis d'error", - "password_error" => "nom d'usuari o contrasenya són incorrectes!", - "password_not_null" => "La contrasenya no pot estar buida!", - "old_password_error" => "antiga contrasenya és incorrecta!", - "permission" => "Permís!", - "permission_edit" => "modificar permisos", - "file_info_owner" => "propietari", - "file_info_group" => "grup", - "no_permission" => "Administrador ha desactivat aquest privilegi!", - "no_permission_ext" => "Administrador prohibir aquest tipus de permisos d'arxiu", - "dialog_max" => "maximitzar", - "dialog_min" => "minimitzar", - "dialog_min_all" => "minimitzar tot", - "dialog_display_all" => "Mostra totes les finestres", - "dialog_close_all" => "Tancar tot", - "open" => "obert", - "others" => "un altre", - "open_with" => "Obert per a ...", - "close" => "a prop", - "close_all" => "Tancar tot", - "close_left" => "Tanqueu la pestanya de l'esquerra", - "close_right" => "Tanca les pestanyes de la dreta", - "close_others" => "Tanca Altres", - "loading" => "Operació ...", - "warning" => "advertència", - "getting" => "Obtenir el ...", - "sending" => "La transmissió de dades ...", - "data_error" => "Error de dades!", - "get_success" => "Obtenir l'èxit!", - "save_success" => "S'ha guardat correctament!", - "success" => "L'èxit de l'operació", - "error" => "Error en l'operació", - "error_repeat" => "L'operació fallida, el nom ja existeix!", - "word_error" => "Error ", - "word_success" => " Èxit", - "system_error" => "error del sistema", - "name" => "nom", - "type" => "tipus", - "contain" => "contenir", - "address" => "ubicació", - "size" => "mida", - "byte" => "byte", - "path" => "camí", - "action" => "operatiu", - "create_time" => "creat", - "modify_time" => "modificat", - "last_time" => "última visita", - "sort_type" => "ordenar per", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "directori públic", - "system_path_not_change" => "directori del sistema, no pot ser modificada", - "file" => "expedient", - "folder" => "carpeta", - "copy" => "còpia", - "past" => "pal", - "clone" => "Crear una còpia", - "cute" => "cisalla", - "cute_to" => "Mou a ...", - "copy_to" => "Copiar a ...", - "remove" => "esborrar", - "remove_force" => "eliminar completament", - "info" => "propietat", - "list_type" => "vista", - "list_icon" => "icona de conjunt", - "list_list" => "arranjament de la llista", - "list_list_split" => "manera de columna", - "sort_up" => "increment", - "sort_down" => "decreixent", - "order_type" => "ordenar per", - "order_desc" => "descendent", - "order_asc" => "ascendent", - "rename" => "rebatejar", - "add_to_fav" => "Afegeix als preferits", - "search_in_path" => "Cerca de carpeta", - "add_to_play" => "Afegir a la llista", - "manage_fav" => "Gestiona els preferits", - "refresh_tree" => "vista de directori d'actualització", - "manage_folder" => "administració de directoris", - "close_menu" => "Tancar menú", - "zip" => "Crea un paquet comprimit", - "unzip" => "Per extreure ...", - "unzip_folder" => "Descomprimir en una carpeta", - "unzip_this" => "Extreure en el corrent", - "unzip_to" => "Per extreure ...", - "zipview_file_big" => "L'arxiu és massa gran, i després extreure l'operació d'impressió!", - "clipboard" => "veure portapapers", - "clipboard_clear" => "Porta-retalls buida", - "full_screen" => "pantalla completa", - "folder_info_item" => "articles", - "folder_info_item_select" => "A seleccionat", - "file_load_all" => "Feu doble clic per carregar tots ......", - "tips" => "ràpid", - "ziping" => "Comprimir ...", - "unziping" => "Extraient ...", - "moving" => "operació mòbil ...", - "remove_title" => "Confirmació d'eliminació", - "remove_info" => "Confirma per eliminar l'element seleccionat?", - "remove_title_force" => "definitivament exclòs", - "remove_info_force" => "Està segur que vol eliminar aquest document?", - "name_isexists" => "Malament, el nom ja existeix!", - "install" => "instal·lar", - "width" => "ample", - "height" => "alt", - "app" => "Aplicacions de llum", - "app_store" => "Aplicacions de llum", - "app_create" => "crear aplicació", - "app_edit" => "Modificar l'aplicació", - "app_group_all" => "complet", - "app_group_game" => "joc", - "app_group_tools" => "eina", - "app_group_reader" => "llegir", - "app_group_movie" => "televisió", - "app_group_music" => "música", - "app_group_life" => "vida", - "app_group_others" => "un altre", - "app_desc" => "descripció", - "app_icon" => "icona d'aplicacions", - "app_icon_show" => "l'adreça URL o directori", - "app_group" => "Paquet de Sol·licitud", - "app_type" => "tipus", - "app_type_url" => "enllaç", - "app_type_code" => "extensió js", - "app_display" => "exterior", - "app_display_border" => "Sense fronteres (és a dir, seleccionar vores)", - "app_display_size" => "Redimensionar (vos que el paràmetre)", - "app_size" => "mida", - "app_url" => "adreça de l'enllaç", - "app_code" => "codi js", - "edit" => "editar", - "edit_can_not" => "No és un fitxer de text", - "edit_too_big" => "L'arxiu és massa gran, no pot ser superior a 40M", - "open_default" => "Obrir per defecte", - "open_ie" => "Obriu el navegador", - "refresh" => "refrescar", - "refresh_all" => "Forçar una actualització", - "newfile" => "nou arxiu", - "newfile_save_as" => "guardar en", - "newfolder" => "nova carpeta", - "newothers" => "Un altre nou", - "path_loading" => "Carregant ...", - "go" => "Caminar!", - "go_up" => "La capa superior", - "history_next" => "endavant", - "history_back" => "retir", - "address_in_edit" => "Feu clic per entrar al mode d'edició", - "double_click_rename" => "Feu doble clic al canvi de nom", - "double_click_open" => "Feu doble clic per obrir", - "path_null" => "Carpeta està buida!", - "file_size_title" => "Mida de la icona", - "file_size_small_super" => "Ultra-petita", - "file_size_small" => "icones petites", - "file_size_default" => "icones", - "file_size_big" => "icones grans", - "file_size_big_super" => "icona gran", - "upload" => "Pujar", - "upload_ready" => "A l'espera de càrrega", - "upload_success" => "puja èxit", - "upload_path_current" => "Canvieu al directori actual", - "upload_select" => "Seleccioneu arxiu", - "upload_max_size" => "El màxim permès", - "upload_size_info" => "Si voleu configurar més, si us plau modificar php.ini màxim de pujada permès. Quan se selecciona un arxiu més gran que aquesta configuració filtrarà automàticament.", - "upload_error" => "Error de pujada", - "upload_error_http" => "errors de xarxa o tallafocs", - "upload_muti" => "càrrega d'arxius múltiples", - "upload_drag" => "Arrossegar i deixar anar Càrrega", - "upload_drag_tips" => "Afluixi per pujar!", - "path_not_allow" => "Nom de fitxer no permès", - "download" => "descarregar", - "downloading" => "Carregant ...", - "download_address" => "descarregar", - "download_ready" => "es descarregarà", - "download_success" => "Descarregar l'èxit!", - "download_error" => "Error en la descàrrega!", - "download_error_create" => "Error d'escriptura!", - "download_error_exists" => "Enllaç a fitxer no!", - "upload_error_null" => "Cap arxiu!", - "upload_error_big" => "Mida del fitxer excedeix els límits de servidor", - "upload_error_move" => "No s'ha pogut moure el fitxer!", - "upload_error_exists" => "El fitxer ja existeix", - "upload_local" => "Pujar local", - "download_from_server" => "descarregar remot", - "save_path" => "Guardar Ruta", - "upload_select_muti" => "Una pluralitat de càrrega d'arxius seleccionable", - "search" => "recerca", - "searching" => "Buscant ...", - "search_result" => "resultats de la recerca", - "seach_result_too_more" => "Massa resultats de cerca, es recomana per a un directori o paraules", - "search_null" => "No hi ha resultats!", - "search_uplow" => "entre majúscules i minúscules", - "search_content" => "continguts recerca d'arxius", - "search_info" => "Si us plau introdueixi un terme de cerca i rutes de recerca!", - "search_ext_tips" => "Per | separat, per exemple php | JS | css
                  No escriviu en la recerca d'arxius de text predeterminat", - "file_type" => "Tipus d'arxiu", - "goto" => "saltar a", - "server_dwonload_desc" => "La tasca va ser afegit a la llista de descàrregues", - "parent_permission" => "permisos de directori de pares", - "root_path" => "Els meus documents", - "lib" => "magatzem", - "fav" => "marcador", - "desktop" => "escriptori", - "browser" => "navegador", - "my_computer" => "meu PC", - "recycle" => "escombraries", - "my_document" => "Els meus documents", - "my_picture" => "fotos", - "my_music" => "la meva música", - "my_movie" => "Els meus vídeos", - "my_download" => "Els meus descàrregues", - "ui_desktop" => "escriptori", - "ui_explorer" => "gestió d'arxius", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "Inici del projecte", - "ui_login" => "iniciar la sessió", - "ui_logout" => "deixar", - "setting" => "Configuració del sistema", - "setting_title" => "opcions", - "setting_user" => "Centre de personal", - "setting_password" => "canviar contrasenya", - "setting_password_old" => "Contrsñ", - "setting_password_new" => "S'ha revisat per", - "setting_language" => "Configuració d'idioma", - "setting_member" => "Gestió d'usuaris", - "setting_group" => "administració d'usuaris", - "setting_group_add" => "Afegir grup d'usuaris", - "setting_group_edit" => "Grups d'edició d'usuari", - "setting_theme" => "Ajustaments de tema", - "setting_wall" => "Configuració del paper pintat", - "setting_wall_desktop" => "Fons de pantalla d'escriptori", - "setting_wall_desktop_list" => "Gestió de fons d'escriptori", - "setting_wall_login_list" => "Iniciar sessió de gestió de fons de pantalla", - "setting_wall_login_tips" => "Consell: quan hi ha més d'una sola peça, el fons de la interfície d'inici de sessió girarà a l'atzar", - "setting_wall_diy" => "fons de pantalla personalitzat:", - "setting_wall_info" => "Imatge d'adreces URL, imatges locals pot ser adequat per obtenir el navegador per ampliar imatge", - "setting_fav" => "Administrador de marcadors", - "setting_help" => "Ús de l'Ajuda", - "setting_about" => "Sobre les obres", - "setting_success" => "La modificació ha entrat en vigor!", - "can_not_repeat" => "No es permet repetir", - "absolute_path" => "adreça absoluta", - "group" => "Grups d'usuaris", - "data_not_full" => "Les dades enviades incomplets!", - "default_user_can_not_do" => "L'usuari per defecte no pot funcionar", - "default_group_can_not_do" => "grups d'usuaris per defecte no poden operar", - "username_can_not_null" => "Nom d'usuari no pot estar buida!", - "groupname_can_not_null" => "Nom del grup d'usuaris no pot estar buida!", - "groupdesc_can_not_null" => "Grup d'Usuaris descripció no pot estar buida!", - "group_move_user_error" => "usuaris de grups d'usuaris van fallar mouen", - "group_already_remove" => "El grup d'usuaris ha estat esborrada", - "group_not_exists" => "Aquest grup d'usuari no existeix", - "member_add" => "afegir usuari", - "password_null_not_update" => "Ells van dir que no canvien la contrasenya està buit", - "if_save_file_tips" => "Alguns fitxers no es desen. Esteu segur de tancar la finestra?", - "if_save_file" => "L'arxiu no s'ha guardat, que voleu desar?", - "if_remove" => "confirmar eliminació", - "member_remove_tips" => "Després de treure s'esborrarà directori d'usuaris", - "group_remove_tips" => "Després de treure el grup d'usuaris dels usuaris no poden iniciar sessió
                  (necessitat de re-establir grups d'usuaris)", - "group_name" => "Nom del grup d'usuaris", - "group_name_tips" => "Recomanació nom d'Anglès, no es pot repetir", - "group_desc" => "Nom per mostrar", - "group_desc_tips" => "Nom del grup Descripció", - "group_role_ext" => "restriccions d'extensió", - "group_role_ext_tips" => "Amb múltiples | separada", - "group_role_file" => "gestió d'arxius", - "group_role_upload" => "permetre càrregues", - "group_role_user" => "Les dades de l'usuari", - "group_role_group" => "administració d'usuaris", - "group_role_member" => "Gestió d'usuaris", - "group_role_mkfile" => "nou arxiu", - "group_role_mkdir" => "nova carpeta", - "group_role_pathrname" => "rebatejar", - "group_role_pathdelete" => "eliminació d'arxius", - "group_role_pathinfo" => "Propietats d'arxiu", - "group_role_pathmove" => "Moure (copiar / tallar / enganxar / operació d 'arrossegament)", - "group_role_zip" => "compressió", - "group_role_unzip" => "obrir la cremallera", - "group_role_search" => "recerca", - "group_role_filesave" => "Deseu el fitxer per editar", - "group_role_can_upload" => "Càrrega i descàrrega", - "group_role_download" => "descarregar remot", - "group_role_passowrd" => "canviar contrasenya", - "group_role_config" => "Les dades de configuració", - "group_role_fav" => "operacions de marcador (afegir / editar / esborrar)", - "action_list" => "veure llista", - "action_add" => "afegir", - "action_edit" => "editar", - "action_del" => "esborrar", - "group_role_ext_warning" => "Pujada no permetre que aquest tipus d'arxius,
                  Canvia el nom (renombrado amb l'extensió especificada),
                  editar Desar, descàrrega remota, extracte", - "group_tips" => "
                • 1. El nom del grup d'usuaris no es pot duplicar. Després de modificar el nom del grup, pertany a l'usuari reorganitzat i s'associa automàticament.
                • 2. Les extensions limiten la relació entre la seguretat del sistema, si us plau, tingueu cura (si creeu un nou php al directori web, significa que canviar els permisos del programa a aquest usuari és pràcticament impossible)
                • 3. La gestió de la llar, la gestió del grup de drets, els drets de visualització i l'addició, eliminació i supressió de drets estan vinculats, els programes s'associen automàticament
                • 4. Després que el grup de permisos estigui configurat per afegir el grup de permisos, el permís posterior no s'hereta (aquest permís equival al màxim permís).
                • ", - "not_null" => "Els camps obligatoris no pot estar buida!", - "picture_can_not_null" => "Les fotos no pot estar buida!", - "rname_success" => "Canviar el nom d'èxit!", - "please_inpute_search_words" => "Si us plau, introdueixi una cadena per buscar", - "remove_success" => "Eliminat correctament!", - "remove_fali" => "Eliminar fallat!", - "clipboard_null" => "Porta-retalls està buit!", - "create_success" => "Nou èxit!", - "create_error" => "Nova falla, comproveu els permisos de directori!", - "copy_success" => "[Copiar] - que cobreix l'èxit porta-retalls!", - "cute_success" => "[Cort] - que cobreix l'èxit porta-retalls!", - "clipboard_state" => "estat porta-retalls:", - "no_permission_write_all" => "L'arxiu o directori no es pot escriure", - "no_permission_write_file" => "El fitxer no té permís d'escriptura", - "no_permission_read_all" => "L'arxiu o directori no té permís de lectura", - "copy_not_exists" => "D'origen no existeix", - "current_has_parent" => "carpeta de destí és una subcarpeta de la carpeta d'origen!", - "past_success" => "operació d'enganxat es completa", - "cute_past_success" => "operació de tall es completa(s'esborra l'arxiu d'origen, el porta-retalls buit)", - "zip_success" => "compressió completat", - "not_zip" => "no arxiu", - "zip_null" => "No arxiu o directori seleccionat", - "unzip_success" => "descomprimir completa", - "gotoline" => "Salta a la línia de", - "path_is_current" => "La ruta i la ruta actual per obrir el mateix!", - "path_exists" => "El nom ja existeix!", - "undo" => "revocació", - "redo" => "revocació contra", - "preview" => "preestrena", - "wordwrap" => "wrap", - "show_gutter" => "Mostra els números de línia", - "char_all_display" => "Mostra caràcters invisibles", - "auto_complete" => "demana automàticament", - "auto_save" => "Desa automàticament", - "function_list" => "Llista de funcions", - "code_theme" => "Estil de codificació", - "font_size" => "Mida de la font", - "confirm" => "Estàs segur que vols fer això?", - "button_ok" => "determinar", - "button_submit" => "presentar", - "button_set" => "establir", - "button_cancel" => "cancel·lat", - "button_edit" => "editar", - "button_save" => "Desar", - "button_apply" => "Sol·liciteu", - "button_save_all" => "Desar tot", - "button_not_save" => "no guardar", - "button_add" => "afegir", - "button_back_add" => "Tornar a afegir", - "button_del" => "esborrar", - "button_save_edit" => "guardar els canvis", - "button_save_submit" => "guardar Enviar", - "button_more" => "més", - "button_select_all" => "Selecciona-ho tot / Inverteix la selecció", - "charset_AUTO" => "Identificació automàtica", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "àrab", - "charset_ISO_8859_6" => "àrab", - "charset_ISO_8859_10" => "idiomes nòrdics", - "charset_CP1257" => "llengües bàltiques", - "charset_ISO_8859_13" => "llengües bàltiques", - "charset_ISO_8859_4" => "llengües bàltiques", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgià", - "charset_PT154" => "kazakh", - "charset_CP949" => "coreà", - "charset_EUC_KR" => "coreà", - "charset_GB18030" => "xinès simplificat", - "charset_GBK" => "xinès simplificat", - "charset_ISO_8859_14" => "celta", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "romanès", - "charset_ISO_8859_3" => "Europa del Sud", - "charset_EUC_JP" => "japonès", - "charset_ISO_2022_JP" => "japonès", - "charset_SHIFT_JIS" => "japonès", - "charset_KOI8_T" => "tadjik", - "charset_ISO_8859_11" => "tailandès", - "charset_TIS_620" => "tailandès", - "charset_CP1254" => "turc", - "charset_CP1251" => "ciríl·lic", - "charset_ISO_8859_5" => "ciríl·lic", - "charset_KOI8_R" => "ciríl·lic", - "charset_KOI8_U" => "ciríl·lic", - "charset_CP1252" => "idiomes d'Europa Occidental", - "charset_ISO_8859_1" => "idiomes d'Europa Occidental", - "charset_ISO_8859_15" => "idiomes d'Europa Occidental", - "charset_Macintosh" => "idiomes d'Europa Occidental", - "charset_CP1255" => "hebreu", - "charset_ISO_8859_8" => "hebreu", - "charset_CP1253" => "grec", - "charset_ISO_8859_7" => "grec", - "charset_ARMSCII_8" => "armeni", - "charset_CP1258" => "vietnamita", - "charset_VISCII" => "vietnamita", - "charset_CP1250" => "idiomes d'Europa Central", - "charset_ISO_8859_2" => "idiomes d'Europa Central", - "charset_default_set" => "codificació d'arxius", - "charset_convert_save" => "Deseu el fitxer codificat com", - "PluginCenter" => "endoll el centre", - "PluginBuy" => "Autorització de compra", - "PluginInstalled" => "S'ha instal·lat", - "PluginUpdate" => "actualització", - "PluginListNull" => "No hi ha contingut!", - "PluginType" => "classificació", - "PluginTypeAll" => "complet", - "PluginTypeFile" => "arxius millorada", - "PluginTypeSafe" => "Eines de seguretat", - "PluginTypeTools" => "utilitat", - "PluginTypeMedia" => "multimèdia", - "PluginTypeOthers" => "un altre", - "PluginInstall" => "instal·lar el tap", - "PluginEnable" => "Activa complements", - "PluginDisable" => "desactivar", - "PluginRemove" => "Desinstal·lar el complement", - "PluginConfig" => "Configura el connector", - "PluginStatus" => "estat", - "PluginStatusEnabled" => "activat", - "PluginStatusDisabled" => "no habilitat", - "PluginStatusNotInstall" => "no instal·lat", - "PluginInstalling" => "Instal·lació ...", - "PluginHasUpdate" => "actualitzacions", - "PluginUpdateStart" => "Actualització de plug-in", - "PluginNeedConfig" => "La necessitat de permetre que la configuració inicial", - "PluginConfigNotNull" => "Els camps obligatoris no pot estar buida!", - "PluginOpen" => "obert", - "PluginAuther" => "autor", - "PluginVersion" => "edició", - "PluginDownloadNumber" => "s'instal·la", - "PluginBack" => "retorn", - "PluginReadme" => "descripció", - "PluginResetConfig" => "Restaura la configuració predeterminada", - "PluginInstallSelf" => "Instal·lació manual", - "Plugin.config.auth" => "permisos", - "Plugin.config.authDesc" => "Tots els paràmetres disponibles, o especificar els usuaris, grups d'usuaris, grups de drets poden utilitzar", - "Plugin.config.authOpen" => "Accés obert", - "Plugin.config.authOpenDesc" => "No es pot accedir a la necessitat de visitar, es pot utilitzar per trucar a la interfície externa", - "Plugin.config.authAll" => "titular", - "Plugin.config.authUser" => "usuari", - "Plugin.config.authGroup" => "Departament designat", - "Plugin.config.authRole" => "El grup de drets", - "Plugin.Config.openWith" => "estil obert", - "Plugin.Config.openWithDilog" => "diàleg intern", - "Plugin.Config.openWithWindow" => "La nova pàgina s'obre", - "Plugin.Config.fileSort" => "prioritat associació Extensió", - "Plugin.Config.fileSortDesc" => "Com més gran sigui l'extensió per obrir major prioritat", - "Plugin.Config.fileExt" => "Formats de fitxer compatibles", - "Plugin.Config.fileExtDesc" => "Extensió associada al plug-in", - "Plugin.tab.basic" => "configuració bàsica", - "Plugin.tab.auth" => "permisos", - "Plugin.tab.others" => "altres ajustaments", - "Plugin.default.aceEditor" => "editor Ace", - "Plugin.default.htmlView" => "Prèvia de pàgines web", - "Plugin.default.picasa" => "Picasa ullada del quadre", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "El jugador jPlayer", - "Plugin.auth.viewList" => "Llista de complements", - "Plugin.auth.setting" => "Configuració del complement", - "Plugin.auth.status" => "Apagueu", - "Plugin.auth.install" => "Instal·lar / desinstal·lar", - "Explorer.UI.openWith" => "seleccioneu Obre", - "Explorer.UI.openWithText" => "Bloc de notes per obrir", - "Explorer.UI.appSetDefault" => "Establir l'oberta per defecte", - "Explorer.UI.appAwaysOpen" => "Utilitzar sempre el programa seleccionat per obrir aquest arxiu", - "Explorer.UI.selectAppDesc" => "Seleccioneu el programa que voleu obrir aquest fitxer", - "Explorer.UI.selectAppWarning" => "Si us plau seleccioni l'aplicació!", - "Explorer.UI.appTypeSupport" => "Compatible", - "Explorer.UI.appTypeAll" => "Totes les aplicacions", - "kodApp.oexe.edit" => "Edita l'aplicació de llum", - "kodApp.oexe.open" => "Obriu l'aplicació de llum" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/cs/about.html b/plugin/document/kod/config/i18n/cs/about.html deleted file mode 100644 index f8b303f5a..000000000 --- a/plugin/document/kod/config/i18n/cs/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer znamená Co?
                  -

                  KODExplorer je open source webový správa online dokumentů, editor kódu. Poskytuje druh klasických oken uživatelského rozhraní, sadu on-line správu dokumentů, souborů náhled, upravovat, nahrávat, stahovat, rozbalte on-line přehrávání hudby. Umožňuje dosáhnout vývoj webových aplikací přímo v prohlížeči, zdrojový kód souboru náhled a nasadit vlastník webu a lokální provoz jako jednoduchý, rychlý a bezpečný zážitek.

                  -

                  - design -

                  -

                  klasická tradice, snaha o inovaci, která nabízí uživatelům pohodlný, bezpečné a snadno použitelný on-line systém pro správu cloud.

                  -

                  kdykoliv (když), kde (kde), má web, kdykoliv budete chtít (chcete), je váš nástroj pro správu (4W politika).

                  -

                  - zaměřené na uživatele -

                  -

                  v současné době systém řízení KODExplorer nachází především v osobní cloud hosting, malý vedení podniku cloud zdrojů, řízení síťový disk, řízení malých a středních webů. Web Developer a Master (veteráni): online editor, komprimované zálohování, nasazení, klasický operační systém Windows rozhraní, snadné začít a zbavit se hostitelské SSH příkazu ftp složité vrtací práce.

                  -

                  osobní privátní cloud (nováček): Network Management diskové prostředky, stejná operace klasické windows rozhraní, můžete umístit síťovou jednotku hudební soubory prohlížet, obrazovky, nahrávání a stahování rychlé a snadné.

                  -
                  - -
                  -
                  Funkce
                  -

                  komplexní správu dokumentů, výkonný on-line editor souboru

                  -

                  ať jste kdekoliv, můžete spravovat soubory a online zábavu, on-line psaní kódu! Stejně jako vhodné pro použití jako operační systém.

                  -

                  rozsáhlé operace hned místní transplantace zkušenosti, táhnout, výběr box, zkratky, vyhledávání souborů (vyhledávání obsahu) ......

                  -

                  Volba box, drag-pohyb, drag and drop nahrávání, online editor, video přehrávač, dekompresi. Plná záruka ajax výkon a zážitek!

                  -

                  každá funkce přímé bezproblémové připojení, v dialogovém formě, řídící funkce víceúčelové

                  -

                  Editor podporuje multi-dokumentu; podpory ZendCoding html, css JS vyšší efektivitu kódování!

                  -

                  dokonalá čínská podpora, zkomolený řešení různých situací;

                  -
                  - -
                  -
                  open source přijetí technologie
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) JS tradiční rámec rozvoje. Provoz provozu Dom, BOM, provoz CSS a Ajax balíček

                  -

                  2.ArtDialog:krásný design, silné kompatibility prohlížečů dialog widgetu. Takže pop-up rukojeť, události a přenos dat, aby si lépe jednotnou správu

                  -

                  3.Ztree:kontrolní seznam strom, škálovatelnost je velmi silný strom údaje manipulace widgetu

                  -

                  4.codemirror:editor kódu js pluginy, podporuje celou řadu programovacích jazyků pro zvýraznění

                  -

                  5.zendcoding:o podporu HTML kódu rychle psát plug-inů. Zjednodušuje definice kódu je napsán. Jednoduché kompilace

                  -

                  6.less:efektivní, funkční model rozvoje css ke zlepšení front end CSS šablona stylů znovupoužitelnost , Jednoduché kompilace

                  -

                  7.SWFUpload:blesk upload

                  -

                  8 .CMP4:velmi dobrý flash player Earth mediálních souborů, podporu pro streaming médií, populární nástroj pro přehrávání hudby videa. Podpora pro kůži, vysoce konfigurovatelná nastavení. Dynamický seznam xml načten. mms streamování médií, RSTP open source licence Podpora přehrávání médií

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/cs/edit.html b/plugin/document/kod/config/i18n/cs/edit.html deleted file mode 100644 index 754540fd2..000000000 --- a/plugin/document/kod/config/i18n/cs/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  bohatá funkčnost

                  -

                  Kód automaticky vyzve

                  -

                  Multi-téma: Vyberte si svůj oblíbený styl programování

                  -

                  Custom Font: pro použití na scéně

                  -

                  Multi editace kurzor, střih blok on-line zkušenosti s programováním srovnatelná s úžasný

                  -

                  Blok skládací, expandovat; zábal

                  -

                  Podpora pro více kartami, přetáhněte přepínací sekvenci;

                  -

                  Udržování více dokumentů, najít a nahradit; historie;

                  -

                  Auto-kompletní [], {}, () '' ''

                  -

                  Online real-time náhled, který vám umožní zamilovat se do on-line programování!

                  -

                  zendcodeing podporu, psát kód osmdesát

                  -

                  Další funkce čeká na vaše objevení ......

                  -
                  -
                  -

                  150 druhů kódu zvýrazňování

                  -

                  Tip: HTML, JavaScript, CSS, méně, Sass, SCSS

                  -

                  vývoj webových aplikací: php, Perl, Python, Ruby, elang, go ...

                  -

                  Tradiční Jazyky: Java, C, C ++, C #, jazyk ActionScript, VBScript ...

                  -

                  Ostatní: markdown, skořápce, sql, Lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  zkratka Action

                  -
                   Běžně používané zkratky: 
                  - Ctrl + S uložit 
                  - Ctrl + A Vybrat vše Ctrl + X Vyjmout 
                  - ctrl + c ctrl + v pasta kopie 
                  - Ctrl + Z Undo Zpět Anti ctrl + y 
                  - Ctrl + F najít náhradní Ctrl + F + F 
                  - win + alt + 0 sbalit všechny win + alt + shift + 0 Rozbalit vše 
                  - ESC [Exit vyhledávání automaticky zruší vyzve ...] 
                  - ctrl-shift-s Preview 
                  - ctrl-shift-e ukazují & Close funkce 
                  -
                  -
                   Vyber: 
                  - stan myší - drag 
                  - shift + home / end / nahoru / doleva / dolů / doprava 
                  - shift + PageUp / PageDown překlopit nahoru a dolů a vyberte 
                  - CTRL + SHIFT + home / konec aktuálního kurzoru na začátku a na konci 
                  - alt + myši přetáhnout výběr bloku 
                  - ctrl + alt + g šarže vyberte a vložte aktuální multi-kartu Editor 
                  -
                  -
                   kurzor: 
                  - home / end / nahoru / doleva / dolů / doprava 
                  - ctrl + home / konec přesuňte kurzor do dokumentu hlava / ocas 
                  - ctrl + p Přejít na odpovídající tag 
                  - PageUp / PageDown kurzoru nahoru a dolů 
                  - alt + vlevo / vpravo kurzor přesunout na začátek řádku 
                  - Shift + levý / pravý kurzor na konec řádku & 
                  - Ctrl + L pro skok na konkrétní řádek 
                  - ctrl + alt + nahoru / dolů (viz níže) zvýšit kurzor 
                  -
                  -
                   Edit: 
                  - ctrl + / Poznámka a odkomentovat ctrl + alt + oprávněný 
                  - Karta tabulky zarovnání shift + stolek celkový pokrok stůl 
                  - smazat smazat smazat celý řádek ctrl + d 
                  - ctrl + delete odstranit řádek v pravém slova 
                  - ctrl / shift + backspace odstranit slovo vlevo 
                  - alt + shift + nahoru / dolů a přidal se k kopírování linii (viz níže) letadlo 
                  - alt + delete vymazat obsah napravo od kurzoru 
                  - alt + nahoru / dolů na aktuální řádku a řádku (vedle výměny čára) 
                  - Shift + D řádky Ctrl + kopírován a přidány do následujícího 
                  - ctrl + delete odstranit právo slova 
                  - CTRL + SHIFT + u převedena na malá písmena 
                  - Ctrl + U vybraného textu na velká písmena 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/cs/help.html b/plugin/document/kod/config/i18n/cs/help.html deleted file mode 100644 index b0f12e55a..000000000 --- a/plugin/document/kod/config/i18n/cs/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Správa souborů
                  -

                  Volba souboru: rádio, myš markýzy, shift-volby, ctrl náhodně vybraných, klávesnici nahoru a dolů domů, výběr konec.

                  -

                  soubor operace: Po výběru souboru, můžete kopírovat, vyjímat, mazat, zobrazit vlastnosti komprese, přejmenování, otevřený Preview a dalších operací ......

                  -

                  File Upload: Upload více souborů šarže; html5 drag nahrání (tažením bez problémů nahrát oken, drag and drop podporu složek)

                  -

                  Správná funkce: Pravým soubor, složka, vpravo, více těsně po operaci voleb, desktop, pravá, pravá adresářový strom, zkratky nabídce pravého vázaný
                  - (Vybrat vše - Kopírovat - Vyjmout - Vložit - Odstranit - přejmenování, soubor ......)

                  -

                  Prohlížeč souborů: Režim List, symbol režimu, poklepejte do dílčích složek; adresního řádku operace, otevře nahrávací složka proti proudu záznam (dopředu a dozadu)

                  -

                  Podpora drag and drop: Zkontrolujte táhnout, řezané dosáhnout předepsané funkce složky

                  -

                  Klávesové zkratky: odstranit odstranit, ctrl + A Vybrat vše Ctrl + C pro kopírování, + X Vyjmout, vyhledávání souborů (vyhledávání obsahu) ctrl

                  -
                  -
                  -
                  soubor Preview
                  -

                  Náhled souboru: zobrazit obsah editaci textových souborů a úsporám; HTML, SWF souboru náhledu

                  -

                  Image Preview: automatické generování náhledů, obrazu slide show;

                  -

                  Přehrávání zvuku: hrát online hudbu a video soubory, podporu MP3, WMA, střední, AAC, WAV; MP4,

                  -

                  Video: online přehrávání videa Podporované formáty: FLV, F4V, 3gp

                  -

                  office: office Online Náhled, podporované formáty: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  zkratky
                  -

                  vstoupit Otevřít

                  -

                  Ctrl + A Vybrat vše

                  -

                  ctrl + c pro kopírování vybraného

                  -

                  Ctrl + V pro vložení

                  -

                  ctrl + x Cut

                  -

                  ctrl + f vyhledávat aktuální adresář

                  -

                  alt + n Nový soubor

                  -

                  alt + m Nová složka

                  -

                  smazat Smazat vybrané

                  -

                  backspace Zpět

                  -

                  ctrl + backspace vpřed

                  -

                  f2 Přejmenování označené (složka)

                  -

                  home / end / nahoru / dolů / doleva / doprava vyberte soubor

                  -

                  Příjem všemi kláves Zkontrolujte, stiskněte první písmeno znakové soubory a složky Výběr automatický cyklus

                  -
                  diff --git a/plugin/document/kod/config/i18n/cs/main.php b/plugin/document/kod/config/i18n/cs/main.php deleted file mode 100644 index d6dc8ce8f..000000000 --- a/plugin/document/kod/config/i18n/cs/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Prosím, vyberte soubor ...", - "path_api_select_folder" => "Prosím vyberte složku ...", - "path_api_select_image" => "Prosím, vyberte obrázek ...", - "share_can_upload" => "povolit nahrávání", - "move_error" => "přesunout se nezdařilo", - "setting_basic" => "Základní nastavení", - "setting_user_sound_open" => "open Sound", - "setting_user_animate_open" => "otevřená Animace", - "recycle_open_if" => "Otevřete Koš", - "recycle_open" => "otevřeno", - "setting_user_recycle_desc" => "Po vymazání budou odstraněny přímo fyzické odstranění", - "setting_user_animate_desc" => "Okno otevřené a další animace", - "setting_user_sound_desc" => "Provozní zvuk", - "setting_user_imageThumb" => "Miniatury obrázků", - "setting_user_imageThumb_desc" => "Lepší zážitek z prohlížení po otevření", - "setting_user_fileSelect" => "Otevře se kontrola ikony souboru", - "setting_user_fileSelect_desc" => "Ikonu souboru zkontrolujte levou klávesu, klepněte pravým tlačítkem na položku zástupce nabídky", - "qrcode" => "URL QR code", - "theme_mac" => "Mac minimalistické bílé", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Modrá Classic", - "theme_metro_green" => "Metro světle zelená", - "theme_metro_purple" => "Metro elegantní fialová", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro jasně oranžová", - "theme_alpha_image" => "Bright - létání", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Custom", - "theme_diy_title" => "Nastavení vlastní motiv", - "theme_diy_background" => "pozadí", - "theme_diy_image" => "obrázek", - "theme_diy_color_blur" => "Gradient barva", - "theme_diy_image_blur" => "obrázek rozostření", - "theme_diy_image_url" => "fotografie adresa", - "theme_diy_color_start" => "Spuštění barva", - "theme_diy_color_end" => "konec Color", - "theme_diy_color_radius" => "Gradient úhel", - "system_role_admin_set" => "Administrátoři mají všechna práva, bez nastavení!", - "login_error_user_not_use" => "Uživatel byl zakázán! Prosím, obraťte se na správce", - "login_error_kod_version" => "konflikt verze", - "login_error_role" => "Zobrazení oprávnění skupina neexistuje, obraťte se na správce", - "no_permission_group" => "Nejste v této skupině!", - "no_permission_write" => "Adresář nemá oprávnění k zápisu", - "user" => "uživatel", - "save_as" => "uložit jako", - "check_update" => "aktualizovat", - "keyboard_type" => "Režim klávesnice", - "font_family" => "Fonty", - "code_mode" => "zvýrazňování syntaxe", - "path_can_not_share" => "Podporuje sdílet pouze své vlastní dokumenty!", - "path_can_not_action" => "Tento adresář nepodporuje tuto operaci!", - "wap_page_pc" => "PC verze", - "wap_page_phone" => "mobilní", - "image_size" => "rozměry obrázku", - "no_permission_action" => "Nemáte toto oprávnění, obraťte se na správce!", - "path_is_root_tips" => "To má přijít do kořenového adresáře!", - "kod_group" => "organizace", - "my_kod_group" => "Jsem v oddělení", - "space_tips_default" => "(GB) 0 žádný limit", - "space_tips_full" => "bez omezení", - "space_size" => "prostor", - "space_size_use" => "Využití prostoru", - "space_is_full" => "Není dostatek místa, kontaktujte administrátora!", - "system_open_true_path" => "Úspěšně otevřen ve správci souborů!", - "group_role_error" => "Chyba oprávnění role (bez nastavení oprávnění)", - "group_role_error_admin" => "nedostatečná oprávnění", - "markdown_content" => "Obsah", - "system_group" => "Uživatelé a oddělení", - "system_group_edit" => "Vedení oddělení", - "system_group_role" => "identita Role", - "system_group_create" => "Nové oddělení", - "system_group_name" => "Název oddělení", - "system_group_father" => "Odborné oddělení", - "system_group_add" => "Přidejte oddělení", - "system_group_remove" => "Odstraňte oddělení", - "system_group_remove_tips" => "Opravdu chcete smazat oddělení?
                  Po odstranění odstranění části uživatele se podsektor přesune do kořenového sektoru", - "system_group_select" => "Vyberte oddělení", - "system_group_select_result" => "Členové patří do těchto sektorů", - "system_role_admin_tips" => "Poznámky: Správci systému nemají oprávnění k ovládání", - "system_member_action" => "Správa uživatelů", - "system_member_add" => "nový uživatel", - "system_member_role" => "oprávnění role", - "system_member_role_select" => "vybrat", - "system_member_password_tips" => "Nevyplňujte neupravila", - "system_set_home_path" => "Custom Catalog", - "system_set_home_path_tips" => "Výchozí adresář je prázdný", - "system_member_group" => "Kde je oddělení", - "system_member_group_edit" => "Redakční oddělení", - "system_member_remove" => "smazat uživatele", - "system_member_remove_tips" => "Potvrdit smazání uživatele?
                  Po odebrání adresář uživatele bude zcela vymazán", - "system_member_set_role" => "Pro potvrzení změny vybraných oprávnění skupin uživatelů?", - "system_member_remove_group" => "Určete vybraný uživatel bude odstraněna z této skupiny?", - "system_member_import" => "Bulk add", - "system_member_import_desc" => "Jeden uživatel na řádek,
                  již existují jsou ignorovány", - "system_member_use" => "umožnit", - "system_member_unuse" => "zakázat", - "system_member_space" => "Nastavte velikost uživatelského prostoru ", - "system_member_space_tips" => " Nastavte velikost uživatelského prostoru ", - "system_member_space_number" => " Musí to být číslo!", - "system_member_group_config" => "Dávkové oddělení", - "system_member_group_remove" => "Odstraněna z oddělení", - "system_member_group_insert" => "Přidat do oddělení", - "system_member_group_reset" => "Obnovte oddělení", - "system_member_group_error" => "Chyba oddělení", - "system_group_action" => "Vedení oddělení", - "system_role_add" => "Přidat Identity role", - "system_role_read" => "Read-only", - "system_role_write" => "Umí číst a psát", - "system_setting_root_path" => "root", - "system_setting_root_path_desc" => "Pouze správce systému může přistupovat ke všem adresáře, skupiny jiná práva uživatele mohou vidět jen své vlastní uživatelské adresáře. Chcete-li zapnout nebo vypnout
                  přístup správce do jiných adresářů, můžete upravit php open_basedir parametry anti-cross-site,nastavit", - "system_group_role_title" => "Řízení rolí oddělení", - "system_group_role_remove" => "OK, chcete-li odstranit roli oddělení", - "system_group_role_style" => "styl", - "system_group_role_display" => "zda", - "system_group_role_display_desc" => "Nastavte, zda chcete zobrazovat uživatelská práva oddělení", - "role_type_name_read" => "přečíst", - "role_type_name_read:list" => "Seznam souborů", - "role_type_name_read:info" => "Soubor (složka) majetek View, hledání Folder", - "role_type_name_read:copy" => "File Copy", - "role_type_name_read:preview" => "Soubor náhled (obrázky, dokumenty, audio a video)", - "role_type_name_read:download" => "Soubor (složka) Download", - "role_type_name_write" => "zapsat", - "role_type_name_write:add" => "Vytvořte soubor (složku), extrahování komprimovaného souboru", - "role_type_name_write:edit" => "Uložte soubor upravovat", - "role_type_name_write:change" => "Přejmenovat, upravit strukturu adresářů", - "role_type_name_write:upload" => "Soubor (složka) nahrávání, vzdálený download", - "role_type_name_write:remove" => "Soubor (složku) odstranit, řez", - "group_guest" => "Návštěvníci", - "group_guest_desc" => "Nejste členem oddělení,
                  lze k [sdílenému oddělení oddělení] přistupovat pouze k povolením pouze ke čtení.", - "group_role_lebel_desc" => "Jste členem tohoto oddělení,
                  Všechny dokumenty v rámci oddělení Všechna práva vyhrazena správcem", - "button_save_and_add" => "Uložit a pokračovat v přidávání", - "path_cannot_search" => "Adresář nepodporuje vyhledávání!", - "not_support" => "Není podporováno!", - "group_not_exist" => "Uživatel skupina neexistuje!", - "upload_clear_all" => "Vymazat vše", - "upload_clear" => "Clear Dokončeno", - "upload_setting" => "založit", - "upload_tips" => "Používá plátek nahrávat, již nepodléhá php.ini hranici; doporučeno chrom složky drag and drop nahrávání zkušenosti", - "upload_exist" => "Soubor se stejným názvem", - "upload_exist_rename" => "přejmenovat", - "upload_exist_replace" => "víko", - "upload_exist_skip" => "přeskočit", - "upload_add_more" => "Bulk add", - "more" => "více", - "system_setting" => "Nastavení systému", - "openProject" => "Otevřete editor projektu", - "url_download" => "Ke stažení", - "url_link" => "URL", - "app_type_link" => "zkratky", - "createLink" => "Vytvořit zástupce", - "createLinkHome" => "Zaslána zástupce na ploše", - "createProject" => "Přidání do editoru projektu", - "only_read" => "Read-only", - "only_read_desc" => "Adresář nemá oprávnění k zápisu
                  můžete nastavit oprávnění pro tento adresář na serveru", - "not_read" => "nečitelný", - "explorerNew" => "kod odkaz", - "zip_download_ready" => "Po stlačení automaticky stáhne, čekejte prosím ...", - "set_background" => "Nastavit jako pozadí pracovní plochy", - "share" => "Sdílet", - "my_share" => "Můj podíl", - "group_share" => "Skupinové externí sdílení", - "share_edit" => "Upravte sdílení", - "share_remove" => "Zrušit sdílení", - "share_remove_tips" => "Opravdu chcete zrušit sdílení? Veřejné připojení bude zrušeno.", - "share_path" => "Sdílejte cestu", - "share_title" => "Sdílení zdrojů", - "share_name" => "Sdílejte název", - "share_time" => "vypršení", - "share_time_desc" => "Null není nastaven", - "share_password" => "extrakt heslo", - "share_password_desc" => "Prázdné heslo není nastaveno", - "share_cancle" => "rušení sdílení", - "share_create" => "Vytvořit veřejný odkaz", - "share_url" => "sdílená adresa", - "share_not_download" => "Ke stažení ban", - "share_not_download_tips" => "Sharer zakázán stažení!", - "share_code_read" => "čtečka", - "share_save" => "Uložit konfiguraci", - "share_error_param" => "Parametr error!", - "share_error_user" => "Informace o uživateli Chyba!", - "share_error_sid" => "Podíl neexistuje!", - "share_error_time" => "Přijdete pozdě, podíl vypršel!", - "share_error_path" => "Sdílený soubor neexistuje, je odstraněny nebo odebrány to!", - "share_error_password" => "Chybné heslo!", - "share_error_show_tips" => "Tento typ nepodporuje souboru náhled!", - "share_view_num" => "Zobrazení:", - "share_download_num" => "Ke stažení:", - "share_open_page" => "Otevřete sdílenou stránku", - "open_the_path" => "Vstup do adresáře", - "recycle_clear" => "prázdný koš", - "recycle_clear_success" => "Prázdný koš úspěch!", - "recycle_clear_info" => "Jste si jisti, že chcete kompletně vyprázdnit koš?", - "fav_remove" => "Zrušte kolekce", - "remove_item" => "předměty", - "uploading" => "Nahrávání", - "upload_tips_more" => "Příliš mnoho souborů, doporučení stlačeného nahrávání, pak rozbalit online!", - "uploading_move" => "V převodu sloučení ...", - "show_file" => "Nová stránka náhled", - "unknow_file_title" => "Soubor otevřít Tip!", - "unknow_file_tips" => "Nepodporoval použití tohoto souboru, můžete:", - "unknow_file_try" => "vyzkoušet", - "unknow_file_download" => "Stáhnout soubor", - "unknow_plugin_search" => "instalován vyhledávací související s aplikací", - "config_save_error_auth" => "Nepodařilo se uložit konfiguraci, administrátor zakázal tuto výsadu!", - "config_save_error_file" => "Chyba, soubor není zapisovatelný!", - "beautify_code" => "Code Formatter", - "convert_case" => "konverze Case", - "convert_upper_case" => "V přepočtu na velká písmena", - "convert_lower_case" => "Převedena na malá písmena", - "editor_insert_time" => "Aktuální čas ", - "editor_md5" => " Md5 šifrování ", - "editor_qrcode" => " Řetězcový dvourozměrný kód ", - "editor_regx" => " Testování pravidelného výrazu ", - "editor_chinese" => " Zjednodušená konverze ", - "editor_chinese_simple" => " Převést na zjednodušenou čínštinu ", - "editor_chinese_traditional" => " Převést na tradiční čínštinu ", - "editor_base64" => "Base64 kodek ", - "editor_base64_encode" => " Kódování Base64 ", - "editor_base64_decode" => " Base64 dekódování ", - "editor_url" => " Kodek URL ", - "editor_url_encode" => " Kódování adres URL ", - "editor_url_decode" => " URL dekódování ", - "editor_unicode" => " Unicode kodek ", - "editor_unicode_encode" => " Kódování Unicode ", - "editor_unicode_decode" => " Unikódové dekódování", - "editor_tools_select_tips" => " Vyberte obsah, který chcete převést!", - "editor_calc" => "Volná kalkulačka", - "shortcut" => "zkratky", - "use_free" => "Nadále používat bezplatnou verzi", - "learn_more" => "Více informací", - "replace" => "vyměnit", - "selectAll" => "vybrat", - "reload" => "Obnovit", - "about" => "na", - "complete_current" => "Automatické dokončování proudu", - "view" => "pohled", - "tools" => "nářadí", - "help" => "Pomoc", - "not_exists" => "Neexistuje", - "group_role_fileDownload" => "Ke stažení", - "group_role_share" => "podíl", - "users_share" => "sdílení", - "system_setting_save" => "Nastavení zabezpečení", - "system_setting_menu" => "správa nemovitostí Menu", - "system_name" => "Název programu", - "system_name_desc" => "název programu logo", - "system_desc" => "Popis programu", - "path_hidden" => "vyloučení Directory", - "version_not_support" => "Vaše verze nepodporuje, naleznete na oficiálních stránkách ke koupi pokročilou verzi!", - "version_not_support_number" => "Vzhledem k tomu, počet omezení nepodporuje tuto operaci, je nutné zakoupit pokročilou verzi oficiálních internetových stránkách!", - "path_hidden_desc" => "Adresáře a soubory ve výchozím nastavení nejsou zobrazeny, oddělený čárkami", - "new_user_folder" => "Nový uživatel je vytvořen ve výchozím adresáři", - "new_user_folder_desc" => "Oddělené čárkami", - "new_user_app" => "Nový uživatel je vytvořen ve výchozím nastavení aplikací", - "new_user_app_desc" => "Aplikace Application Center, několik oddělených čárkami", - "auto_login" => "Návštěvníci automatické přihlašování", - "auto_login_desc" => "Výchozí přihlašovací uživatelskéguest/guestuživatelé, po otevření, aby bylo zajištěno, že uživatel existuje", - "first_in" => "Po přihlášení do výchozí", - "version_price_free" => "zdarma", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Adresář není zapisovatelný, nastavit adresář a všechny podadresáře zkusit znovu po čtení psát!", - "menu_name" => "název nabídky", - "menu_hidden" => "skrýt", - "menu_show" => "zobrazit", - "menu_move_down" => "dolů", - "menu_move_up" => "nahoru", - "menu_move_del" => "vymazat", - "menu_open_window" => "Otevření nového okna", - "menu_sub_menu" => "Podnabídka", - "url_path" => "url adresa", - "url_path_desc" => "url adresa nebo js kód", - "no_permission_read" => "Nemáte oprávnění ke čtení!", - "no_permission_download" => "Nemáte oprávnění ke stažení!", - "php_env_check" => "Provozní prostředí monitoring:", - "php_env_error" => "Php knihovna chybí", - "php_env_error_ignore" => "Ignorovat a zadat", - "php_env_error_version" => "PHP verze nemůže být nižší než 5,0", - "php_env_error_path" => "nelze zapisovat", - "php_env_error_list_dir" => "Webový server otevře výpis adresáře funkci bezpečnostních důvodů tuto funkci zakázat!jak?", - "php_env_error_gd" => "PHP GD knihovna by měla být otevřená, jinak kód, použijte miniaturu nebude správně fungovat", - "install_login" => "Můžete použít následující přihlašovací účet", - "install_enter" => "systém", - "install_user_default" => "Administrátor: {0} / (dole nastavit heslo)
                  Průměrný uživatel: {1}
                  Uživatelé hodnocení: {2}", - "login_root_password" => "Nastavit heslo správce", - "login_root_password_repeat" => "Potvrdit heslo znovu", - "login_root_password_equal" => "Obě hesla se neshodují!", - "login_root_password_tips" => "Nastavit heslo správce!", - "forget_password" => "Zapomenuté heslo", - "forget_password_tips" => "Zapomněli heslo správce:
                  Prosím přihlašte serveru smazat ./data/system/install.lock resetovat;

                  Non-správce Zapomněli jste heslo:
                  Obraťte se na správce resetovat!", - "copyright_desc" => "Kodexplorer je vysoce uznávaný systém pro správu dokumentů web, můžete jej použít pro vnitřní správu dokumentů nebo sdílená, lze použít také na serveru pro správu webu, nahradí FTP, i když webIDE přímo on-line rozvoje. Můžete také naprogramovat druhý rozvoje integrovat toto do vašich stávajících systémů.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango cloud • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango cloud • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao oblačnosti, cloud mango, systémy pro správu dokumentů, podnik cloud disk, průzkumník ,, on-line dokumentace, online kancelář, online kancelář, online CAD náhled, online editace , online editor", - "kod_meta_description" => "KodExplorer může cloud Road (dříve mango cloudu) na je předním poskytovatelem vládních / korporátních privátních cloudů a on-line systému pro správu dokumentů pro osobní webové stránky, enterprise private cloud nasazení, síťové úložiště, on-line správu dokumentů, online kancelářský poskytovat bezpečné a řízené, jednoduché a snadné použití vysoce přizpůsobené private cloud produktů. Použití aplikace Windows rozhraní ve stylu, provozní postupy, aniž by bylo nutné přizpůsobit se rychle začít podporovat stovky populárních online podobě náhled souborů, přehrávání a editaci šetrných k životnímu prostředí, mocné, je jednou trial, již neoddělitelné od soukromého cloud nabídky.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Přihlásit", - "guest_login" => "Sign", - "username" => "Přihlašovací účet", - "userNickName" => "Uživatelská přezdívka", - "password" => "heslo", - "login_code" => "kódy", - "need_check_code" => "Vstup autentizační kód open", - "need_check_code_desc" => "Po přihlášení musíte zadat ověřovací kód.", - "setting_csrf_protect" => "Otevřeno ochrana CSRF", - "setting_csrf_protect_desc" => "Po úvodním typ útoku může účinně chránit CSRF", - "login_rember_password" => "Zapamatovat heslo", - "setting_show_root_group" => "Seznam všech oddělení", - "setting_show_root_group_desc" => "Kořenové oddělení adresáře stromů, zda mají být uvedeny všechny oddělení", - "setting_show_share_user" => "Seznam všech uživatelů", - "setting_show_share_user_desc" => "Kořenové oddělení adresáře stromů je uvedeno pro sdílení uživatelů", - "setting_clear_user_recycle" => "Vysypat koš pro všechny uživatele", - "setting_clear_cache" => "Vyprázdnit mezipaměť", - "setting_icp" => "Autorských práv nebo číslo záznamu", - "setting_global_css" => "Custom globální css", - "setting_global_css_desc" => "Všechny stránky vloží vlastní css", - "setting_global_html" => "Statistický kód HTML", - "setting_global_html_desc" => "Všechny stránky bude vložena do tohoto odstavce html kód, kód může být umístěn statistiky třetích stran", - "us" => "kodcloud.com", - "login_not_null" => "Uživatelské jméno a heslo nemůže být prázdný!", - "code_error" => "chybové kódy", - "password_error" => "Uživatelské jméno nebo heslo není správné!", - "password_not_null" => "Heslo nemůže být prázdný!", - "old_password_error" => "Staré heslo je špatně!", - "permission" => "Povolení!", - "permission_edit" => "upravit oprávnění", - "file_info_owner" => "vlastník", - "file_info_group" => "skupina", - "no_permission" => "Administrátor zablokoval tuto výsadu!", - "no_permission_ext" => "Administrátor zakázal tento typ oprávnění k souborům", - "dialog_max" => "maximalizovat", - "dialog_min" => "minimalizovat", - "dialog_min_all" => "minimalizovat všechny", - "dialog_display_all" => "Zobrazuje všechna okna", - "dialog_close_all" => "Zavřít vše", - "open" => "otevřeno", - "others" => "ostatní", - "open_with" => "Otevřeno pro ...", - "close" => "zavřít", - "close_all" => "Zavřít vše", - "close_left" => "Zavřete kartu levý", - "close_right" => "Zavřít karty napravo", - "close_others" => "Close Other", - "loading" => "Provoz ...", - "warning" => "výstraha", - "getting" => "Získejte ...", - "sending" => "Přenos dat ...", - "data_error" => "Data Chyba!", - "get_success" => "Získat úspěch!", - "save_success" => "Úspěšně uložen!", - "success" => "úspěšná operace", - "error" => "operace se nezdařila", - "error_repeat" => "Operace se nezdařila, název již existuje!", - "word_error" => "Selhalo ", - "word_success" => " Úspěch", - "system_error" => "Systémová chyba", - "name" => "název", - "type" => "typ", - "contain" => "obsahovat", - "address" => "umístění", - "size" => "velikost", - "byte" => "byte", - "path" => "cesta", - "action" => "provozní", - "create_time" => "vytvořil", - "modify_time" => "modifikovaná", - "last_time" => "Poslední návštěva", - "sort_type" => "třídit podle", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "veřejný adresář", - "system_path_not_change" => "Adresář systému, nemůže být modifikován", - "file" => "soubor", - "folder" => "složka", - "copy" => "kopie", - "past" => "hůl", - "clone" => "Je možné vytvořit kopii", - "cute" => "stříhat", - "cute_to" => "Přesunout do ...", - "copy_to" => "Kopírovat do ...", - "remove" => "vymazat", - "remove_force" => "zcela odstranit", - "info" => "vlastnost", - "list_type" => "pohled", - "list_icon" => "ikona array", - "list_list" => "uspořádání seznamu", - "list_list_split" => "režim sloupec", - "sort_up" => "přírůstek", - "sort_down" => "klesající", - "order_type" => "třídit podle", - "order_desc" => "klesající", - "order_asc" => "stoupající", - "rename" => "přejmenovat", - "add_to_fav" => "Přidat k oblíbeným", - "search_in_path" => "Vyhledávání složek", - "add_to_play" => "Přidat do playlistu", - "manage_fav" => "Správa oblíbených položek", - "refresh_tree" => "Aktualizovat adresářový strom", - "manage_folder" => "Directory management", - "close_menu" => "Zavřít výběr", - "zip" => "Vytvořte komprimovaný balíček", - "unzip" => "Chcete-li extrahovat ...", - "unzip_folder" => "Rozbalení souborů do složky", - "unzip_this" => "Rozbalit do proudu", - "unzip_to" => "Chcete-li extrahovat ...", - "zipview_file_big" => "Soubor je příliš velký, a pak extrahovat náhled operace!", - "clipboard" => "Výhled Schránka", - "clipboard_clear" => "prázdná schránka", - "full_screen" => "Full Screen", - "folder_info_item" => "předměty", - "folder_info_item_select" => "vybraný", - "file_load_all" => "Poklepáním načíst všechny ......", - "tips" => "prompt", - "ziping" => "Zip ...", - "unziping" => "Rozbalování ...", - "moving" => "Mobilní provoz ...", - "remove_title" => "smazat Potvrzení", - "remove_info" => "Potvrdit smazat vybranou položku?", - "remove_title_force" => "trvale odstraněny", - "remove_info_force" => "Opravdu chcete trvale smazat tento dokument?", - "name_isexists" => "Špatné jméno již existuje!", - "install" => "instalovat", - "width" => "šíře", - "height" => "vysoký", - "app" => "lehké Applications", - "app_store" => "lehké Applications", - "app_create" => "vytvoření aplikace", - "app_edit" => "Upravit aplikace", - "app_group_all" => "kompletní", - "app_group_game" => "hra", - "app_group_tools" => "nářadí", - "app_group_reader" => "číst", - "app_group_movie" => "televize", - "app_group_music" => "hudba", - "app_group_life" => "život", - "app_group_others" => "ostatní", - "app_desc" => "popis", - "app_icon" => "ikona aplikace", - "app_icon_show" => "url adresy nebo adresář", - "app_group" => "Application Packet", - "app_type" => "typ", - "app_type_url" => "odkaz", - "app_type_code" => "js prodloužení", - "app_display" => "exteriér", - "app_display_border" => "Bez hranic (tedy vybrat bez okrajů)", - "app_display_size" => "Změna velikosti (Check být přizpůsobeny)", - "app_size" => "velikost", - "app_url" => "Link adresa", - "app_code" => "js kód", - "edit" => "editovat", - "edit_can_not" => "Nejedná se o textový soubor", - "edit_too_big" => "Soubor je příliš velký, nemůže být větší než 40M", - "open_default" => "Výchozí Otevřená", - "open_ie" => "Otevřete prohlížeč", - "refresh" => "osvěžit", - "refresh_all" => "Vynutit obnovení", - "newfile" => "nový soubor", - "newfile_save_as" => "uložit do", - "newfolder" => "Nová složka", - "newothers" => "nový Ostatní", - "path_loading" => "Loading ...", - "go" => "Chodit!", - "go_up" => "horní vrstva", - "history_next" => "vpřed", - "history_back" => "ustoupit", - "address_in_edit" => "Klikněte pro vstup do režimu úprav", - "double_click_rename" => "Poklepáním na přejmenování", - "double_click_open" => "Dvojitým kliknutím otevřete", - "path_null" => "Složka je prázdná!", - "file_size_title" => "Velikost ikon", - "file_size_small_super" => "Ultra-small", - "file_size_small" => "malé ikony", - "file_size_default" => "ikony", - "file_size_big" => "velké ikony", - "file_size_big_super" => "Velký Icon", - "upload" => "Nahrát", - "upload_ready" => "Čeká se na nahrání", - "upload_success" => "Nahrávání úspěšné", - "upload_path_current" => "Přepněte do aktuálního adresáře", - "upload_select" => "Vyberte Soubor", - "upload_max_size" => "Maximální povolená", - "upload_size_info" => "Chcete-li konfigurovat více, modifikovat php.ini maximální povolenou upload. Vyberete-li soubor větší než tato konfigurace automaticky vyfiltrovat.", - "upload_error" => "Nahrávání selhalo", - "upload_error_http" => "Chyby sítě nebo firewall", - "upload_muti" => "nahrávání více souborů", - "upload_drag" => "Drag and drop nahrávání", - "upload_drag_tips" => "Uvolněte nahrát!", - "path_not_allow" => "Název souboru není povoleno", - "download" => "Ke stažení", - "downloading" => "Loading ...", - "download_address" => "Ke stažení", - "download_ready" => "Budou staženy", - "download_success" => "Ke stažení úspěch!", - "download_error" => "Stažení se nezdařilo!", - "download_error_create" => "Write chyba!", - "download_error_exists" => "Odkaz na soubor selhal!", - "upload_error_null" => "Žádný soubor!", - "upload_error_big" => "Velikost souboru překračuje limit serveru", - "upload_error_move" => "Nepodařilo se přesunout soubor!", - "upload_error_exists" => "Soubor již existuje", - "upload_local" => "místní uploadu", - "download_from_server" => "Remote Download", - "save_path" => "Save Path", - "upload_select_muti" => "Množina volitelným upload", - "search" => "vyhledávání", - "searching" => "Hledám ...", - "search_result" => "Výsledky hledání", - "seach_result_too_more" => "Příliš mnoho výsledků vyhledávání, doporučuje se pro adresář nebo slova", - "search_null" => "Žádné výsledky!", - "search_uplow" => "velká a malá písmena", - "search_content" => "Obsah vyhledávání souborů", - "search_info" => "Zadejte hledaný výraz a hledat cesty!", - "search_ext_tips" => "Tím | odděleny, například PHP | js | css
                  nevyplňujte hledání výchozí textový soubor", - "file_type" => "Typ souboru", - "goto" => "Přejít na", - "server_dwonload_desc" => "Úkol byl přidán do seznamu stahování", - "parent_permission" => "Mateřské oprávnění adresáře", - "root_path" => "My Documents", - "lib" => "skladiště", - "fav" => "záložka", - "desktop" => "Desktop", - "browser" => "prohlížeč", - "my_computer" => "My Computer", - "recycle" => "odpadky", - "my_document" => "My Documents", - "my_picture" => "Moje fotky", - "my_music" => "My Music", - "my_movie" => "Moje video", - "my_download" => "Moje položky ke stažení", - "ui_desktop" => "Desktop", - "ui_explorer" => "Správa souborů", - "ui_editor" => "editor", - "adminer" => "Adminer", - "ui_project_home" => "projekt Home", - "ui_login" => "Přihlásit", - "ui_logout" => "přestat", - "setting" => "Nastavení systému", - "setting_title" => "možnosti", - "setting_user" => "osobní Center", - "setting_password" => "změna hesla", - "setting_password_old" => "Staré heslo", - "setting_password_new" => "revidován", - "setting_language" => "Nastavení jazyka", - "setting_member" => "Správa uživatelů", - "setting_group" => "Správa skupin uživatelů", - "setting_group_add" => "Add User Group", - "setting_group_edit" => "Upravit uživatelské skupiny", - "setting_theme" => "Nastavení motivu", - "setting_wall" => "Nastavení tapety", - "setting_wall_desktop" => "Tapety na plochu", - "setting_wall_desktop_list" => "Správa stolních tapet", - "setting_wall_login_list" => "Přihlaste se ke správě tapety", - "setting_wall_login_tips" => "Tip: Pokud je více než jeden kus, pozadí přihlašovacího rozhraní se náhodně otočí", - "setting_wall_diy" => "Custom tapety:", - "setting_wall_info" => "Obrázek url adresa, místní obrázky mohou mít pravdu, aby si prohlížeč pro otevření obrázku", - "setting_fav" => "Správce záložek", - "setting_help" => "Používání nápovědy", - "setting_about" => "o prací", - "setting_success" => "Úprava nabyla účinnosti!", - "can_not_repeat" => "Není dovoleno opakovat", - "absolute_path" => "absolutní adresa", - "group" => "Skupiny uživatelů", - "data_not_full" => "Data předloženy neúplné!", - "default_user_can_not_do" => "Výchozí uživatel nemůže fungovat", - "default_group_can_not_do" => "Výchozí skupiny uživatelů nemůže fungovat", - "username_can_not_null" => "Uživatelské jméno nemůže být prázdný!", - "groupname_can_not_null" => "uživatelské jméno skupina nemůže být prázdná!", - "groupdesc_can_not_null" => "User Group Popis nemůže být prázdný!", - "group_move_user_error" => "Uživatelská skupina uživatelů Přesun se nezdařil", - "group_already_remove" => "Uživatel sestava byla smazána", - "group_not_exists" => "Tato skupina uživatelů neexistuje", - "member_add" => "Přidat uživatele", - "password_null_not_update" => "Říkali, že nezměnili heslo není vyplněn", - "if_save_file_tips" => "Některé soubory nejsou uloženy. Opravdu zavřete okno?", - "if_save_file" => "Soubor nebyl uložen, chcete ušetřit?", - "if_remove" => "potvrdit smazání", - "member_remove_tips" => "Po odebrání uživatel adresář bude vymazán", - "group_remove_tips" => "Po odebrání uživatel skupina uživatelů se nemůže přihlásit
                  (třeba znovu nastavit uživatelské skupiny)", - "group_name" => "uživatelské jméno skupiny", - "group_name_tips" => "Doporučení český název, nemůže být opakován", - "group_desc" => "Display Name", - "group_desc_tips" => "Název skupiny Popis", - "group_role_ext" => "omezení Extension", - "group_role_ext_tips" => "S multiplex | odděleny", - "group_role_file" => "Správa souborů", - "group_role_upload" => "povolit nahrávání", - "group_role_user" => "uživatelská data", - "group_role_group" => "Správa skupin uživatelů", - "group_role_member" => "Správa uživatelů", - "group_role_mkfile" => "nový soubor", - "group_role_mkdir" => "Nová složka", - "group_role_pathrname" => "přejmenovat", - "group_role_pathdelete" => "odstranění souboru", - "group_role_pathinfo" => "Vlastnosti souboru", - "group_role_pathmove" => "Move (copy / cut / paste / drag provoz)", - "group_role_zip" => "komprese", - "group_role_unzip" => "rozepnout zip", - "group_role_search" => "vyhledávání", - "group_role_filesave" => "Uložte soubor upravovat", - "group_role_can_upload" => "Nahrávání a stahování", - "group_role_download" => "Remote Download", - "group_role_passowrd" => "změna hesla", - "group_role_config" => "konfiguračních dat", - "group_role_fav" => "Operace záložky (přidat / editovat / smazat)", - "action_list" => "Zobrazit seznam", - "action_add" => "přidat", - "action_edit" => "editovat", - "action_del" => "vymazat", - "group_role_ext_warning" => "Nahrávání neumožňuje takové soubory,
                  Rename (přejmenována na určenou příponou),
                  editovat zachránit, vzdálený download, extrakt", - "group_tips" => "
                • 1. Název skupiny uživatelů nemůže být duplikován. Po změně názvu skupiny patří k reorganizovanému uživateli a automaticky se připojí.
                • 2. Rozšíření omezují vztah mezi zabezpečením systému, buďte opatrní (pokud v webovém adresáři vytvoříte nový php, znamená to, že změna oprávnění programu pro tohoto uživatele je prakticky nemožná)
                • 3. Správa domácností, správa skupin práv, sledování práv a přidávání, smazání a smazání práv jsou vázány, programy jsou automaticky přidruženy
                • 4. Po nastavení skupiny oprávnění pro přidání skupiny oprávnění není následné oprávnění zděděno (toto oprávnění odpovídá nejvyššímu oprávnění).
                • ", - "not_null" => "Povinné pole nesmí být prázdné!", - "picture_can_not_null" => "Fotografie nemůže být prázdný!", - "rname_success" => "Přejmenovat úspěch!", - "please_inpute_search_words" => "Zadejte řetězec pro vyhledávání", - "remove_success" => "byla úspěšně odstraněna!", - "remove_fali" => "Odstranit selhalo!", - "clipboard_null" => "Schránka je prázdná!", - "create_success" => "Nový úspěch!", - "create_error" => "New selže, zkontrolujte oprávnění adresáře!", - "copy_success" => "[Kopie] - pokrývat schránky úspěch!", - "cute_success" => "[Střih] - pokrývat schránky úspěch!", - "clipboard_state" => "Schránka status:", - "no_permission_write_all" => "Soubor nebo adresář nelze zapisovat", - "no_permission_write_file" => "Soubor nemá oprávnění k zápisu", - "no_permission_read_all" => "Soubor nebo adresář nemá oprávnění čtení", - "copy_not_exists" => "Zdroj neexistuje", - "current_has_parent" => "Cílová složka je podsložkou složky zdrojové!", - "past_success" => "operace pasta je dokončena", - "cute_past_success" => "střihová operace dokončena(zdrojový soubor odstraněn, schránky prázdný)", - "zip_success" => "komprese dokončena", - "not_zip" => "není archiv", - "zip_null" => "Není vybrán soubor nebo adresář", - "unzip_success" => "rozbalit kompletní", - "gotoline" => "Přejít na řádek", - "path_is_current" => "Cesta a aktuální cesta k otevření totéž!", - "path_exists" => "Jméno již existuje!", - "undo" => "odvolání", - "redo" => "proti zrušení", - "preview" => "náhled", - "wordwrap" => "Wrap", - "show_gutter" => "Zobrazit čísla řádků", - "char_all_display" => "Ukázat neviditelné znaky", - "auto_complete" => "automaticky vyzve", - "auto_save" => "Automaticky uložit", - "function_list" => "Seznam funkcí", - "code_theme" => "kódování Style", - "font_size" => "Velikost písma", - "confirm" => "Opravdu chcete to udělat?", - "button_ok" => "určovat", - "button_submit" => "předložit", - "button_set" => "založit", - "button_cancel" => "zrušený", - "button_edit" => "editovat", - "button_save" => "Uložit", - "button_apply" => "Použijte", - "button_save_all" => "Uložit vše", - "button_not_save" => "Neukládat", - "button_add" => "přidat", - "button_back_add" => "Zpět k přidání", - "button_del" => "vymazat", - "button_save_edit" => "uložit změny", - "button_save_submit" => "Uložení Odeslat", - "button_more" => "více", - "button_select_all" => "Vybrat vše / Invertovat výběr", - "charset_AUTO" => "Automatická identifikace", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabština", - "charset_ISO_8859_6" => "arabština", - "charset_ISO_8859_10" => "skandinávské jazyky", - "charset_CP1257" => "baltické jazyky", - "charset_ISO_8859_13" => "baltické jazyky", - "charset_ISO_8859_4" => "baltické jazyky", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "gruzínský", - "charset_PT154" => "kazašský", - "charset_CP949" => "korejský", - "charset_EUC_KR" => "korejský", - "charset_GB18030" => "zjednodušená čínština", - "charset_GBK" => "zjednodušená čínština", - "charset_ISO_8859_14" => "keltský", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "rumunský", - "charset_ISO_8859_3" => "South European", - "charset_EUC_JP" => "japonský", - "charset_ISO_2022_JP" => "japonský", - "charset_SHIFT_JIS" => "japonský", - "charset_KOI8_T" => "tádžičtina", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "turecký", - "charset_CP1251" => "cyrilice", - "charset_ISO_8859_5" => "cyrilice", - "charset_KOI8_R" => "cyrilice", - "charset_KOI8_U" => "cyrilice", - "charset_CP1252" => "Západoevropské jazyky", - "charset_ISO_8859_1" => "Západoevropské jazyky", - "charset_ISO_8859_15" => "Západoevropské jazyky", - "charset_Macintosh" => "Západoevropské jazyky", - "charset_CP1255" => "hebrejština", - "charset_ISO_8859_8" => "hebrejština", - "charset_CP1253" => "řecký", - "charset_ISO_8859_7" => "řecký", - "charset_ARMSCII_8" => "arménský", - "charset_CP1258" => "vietnamský", - "charset_VISCII" => "vietnamský", - "charset_CP1250" => "Středoevropské jazyky", - "charset_ISO_8859_2" => "Středoevropské jazyky", - "charset_default_set" => "Kódování souboru", - "charset_convert_save" => "Uložit soubor kódovaný as", - "PluginCenter" => "Plug centrum", - "PluginBuy" => "Autorizaci nákupu", - "PluginInstalled" => "Byl nainstalován", - "PluginUpdate" => "aktualizovat", - "PluginListNull" => "Není žádný obsah!", - "PluginType" => "klasifikace", - "PluginTypeAll" => "kompletní", - "PluginTypeFile" => "Rozšířený soubor", - "PluginTypeSafe" => "bezpečnostní nástroje", - "PluginTypeTools" => "užitečnost", - "PluginTypeMedia" => "multimediální", - "PluginTypeOthers" => "ostatní", - "PluginInstall" => "nainstalovat zátku", - "PluginEnable" => "Aktivovat pluginy", - "PluginDisable" => "zakázat", - "PluginRemove" => "Odinstalovat zástrčku", - "PluginConfig" => "Konfigurovat plugin", - "PluginStatus" => "stát", - "PluginStatusEnabled" => "povoleno", - "PluginStatusDisabled" => "není povoleno", - "PluginStatusNotInstall" => "Nenainstalováno", - "PluginInstalling" => "Instalace ...", - "PluginHasUpdate" => "aktualizace", - "PluginUpdateStart" => "Aktualizace plug-in", - "PluginNeedConfig" => "Potřeba umožnit počáteční konfigurace", - "PluginConfigNotNull" => "Povinné pole nesmí být prázdné!", - "PluginOpen" => "otevřeno", - "PluginAuther" => "autor", - "PluginVersion" => "vydání", - "PluginDownloadNumber" => "Instaluje", - "PluginBack" => "zpáteční", - "PluginReadme" => "popis", - "PluginResetConfig" => "Obnovte výchozí nastavení", - "PluginInstallSelf" => "Ruční instalace", - "Plugin.config.auth" => "oprávnění", - "Plugin.config.authDesc" => "Všechna dostupná nastavení, nebo zadat uživatele, skupiny uživatelů, spraví skupiny mohou využít", - "Plugin.config.authOpen" => "Otevřený přístup", - "Plugin.config.authOpenDesc" => "Není potřeba navštívit, lze použít pro volání na externím rozhraní", - "Plugin.config.authAll" => "držák", - "Plugin.config.authUser" => "uživatel", - "Plugin.config.authGroup" => "Určené oddělení", - "Plugin.config.authRole" => "práva skupiny", - "Plugin.Config.openWith" => "otevřený typ", - "Plugin.Config.openWithDilog" => "vnitřní dialog", - "Plugin.Config.openWithWindow" => "Otevře se nová stránka", - "Plugin.Config.fileSort" => "priority rozšíření sdružení", - "Plugin.Config.fileSortDesc" => "Čím větší rozšíření otevřít vyšší prioritu", - "Plugin.Config.fileExt" => "Podporované formáty souborů", - "Plugin.Config.fileExtDesc" => "Spojený Rozšíření plug-in", - "Plugin.tab.basic" => "Základní nastavení", - "Plugin.tab.auth" => "oprávnění", - "Plugin.tab.others" => "Ostatní nastavení", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Náhled webové stránky", - "Plugin.default.picasa" => "Picasa prohlížení picture", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer player", - "Plugin.auth.viewList" => "Seznam pluginů", - "Plugin.auth.setting" => "Nastavení pluginů", - "Plugin.auth.status" => "Vypněte", - "Plugin.auth.install" => "Nainstalujte / odinstalujte", - "Explorer.UI.openWith" => "zvolte Otevřít", - "Explorer.UI.openWithText" => "Poznámkový blok k otevření", - "Explorer.UI.appSetDefault" => "Nastavit výchozí otevřený", - "Explorer.UI.appAwaysOpen" => "Vždy použít vybraný program k otevření tohoto souboru", - "Explorer.UI.selectAppDesc" => "Vyberte program, který chcete otevřít tento soubor", - "Explorer.UI.selectAppWarning" => "Prosím, vyberte aplikaci!", - "Explorer.UI.appTypeSupport" => "Podporováno", - "Explorer.UI.appTypeAll" => "Všechny aplikace", - "kodApp.oexe.edit" => "Upravit aplikaci světla", - "kodApp.oexe.open" => "Otevřete aplikaci světla" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/da/about.html b/plugin/document/kod/config/i18n/da/about.html deleted file mode 100644 index b85563cb1..000000000 --- a/plugin/document/kod/config/i18n/da/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer sige Hvad?
                  -

                  KODExplorer er en open source web-baserede online dokumenthåndtering, kode editor. Det giver en form for klassiske vinduer brugergrænseflade, et sæt af online dokumenthåndtering, fil preview, redigere, uploade, downloade, unzip online musikafspilning. Gør det muligt at opnå webudvikling direkte i browseren, kildekode forhåndsvisning fil, og implementere ejeren af ​​webstedet og den lokale betjening så let, hurtig og sikker oplevelse.

                  -

                  - design -

                  -

                  klassiske tradition, udøvelse af innovation, at give brugerne nem, sikker og nem at bruge online cloud management system.

                  -

                  når (når), hvor (hvor), har på nettet, når du vil (vil) det er din styringsredskab (4W politik).

                  -

                  - brugerorienteret -

                  -

                  øjeblikket KODExplorer management system primært placeret i den personlige cloud hosting, lille enterprise cloud resource management, netværk disk, forvaltning af små og mellemstore steder. Web Developer & Master (veteraner): online editor, komprimeret backup, implementering, klassiske vinduer grænseflade drift, nem at komme i gang og slippe af værten SSH, ftp kommando komplekse kedelige operationer.

                  -

                  personlige private cloud (rookie): Management netværk diskressourcer, den samme klassiske Windows interface operation, kan du placere musikken gennemse netværksdrev, screen-filer, uploade og downloade hurtigt og nemt.

                  -
                  - -
                  -
                  Funktioner
                  -

                  omfattende dokumenthåndtering, kraftfulde online fil editor

                  -

                  uanset hvor du er, kan du styre dine filer og online underholdning, online skrive kode! Lige så velegnet til anvendelse som operativsystemet.

                  -

                  omfattende lokal erfaring transplantationen højre, træk, valgboksen, genveje, filsøgning (søg indhold) ......

                  -

                  valgboksen, træk-bevægelse, træk og slip upload, online editor, videoafspiller, dekomprimere. Fuld ajax garanti ydeevne og oplevelse!

                  -

                  hver funktion direkte problemfri tilslutning i dialogboksen form multitask-ledelsesfunktioner

                  -

                  Editor understøtter multi-dokument, støtte ZendCoding html, css, js højere kodning effektivitet!

                  -

                  perfekt kinesisk støtte, forvansket løse forskellige situationer

                  -
                  - -
                  -
                  open source-teknologi vedtagelse
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js mainstream rammer udvikling. Drift af Dom, BOM betjening, css drift og Ajax pakke

                  -

                  2.ArtDialog:et smukt design, stærk browser kompatibilitet dialogen widget. Så pop-up håndtag, begivenheder og transmission af data for at få et bedre samlet forvaltning

                  -

                  3.Ztree:liste træ kontrol, skalerbarhed er meget stærk træ data manipulation widget

                  -

                  4.codemirror:en kode editor js plugins, understøtter en bred vifte af programmeringssprog til at fremhæve

                  -

                  5.zendcoding:en støtte html koder hurtigt skrive plug-ins. Forenkler definitionen af ​​kode er skrevet. Simple kompilering

                  -

                  6.less:en effektiv, funktionel css udviklingsmodel for at forbedre den forreste ende css stylesheets genbrugelighed . Simple kompilering

                  -

                  7.SWFUpload:flash fil upload

                  -

                  8 .CMP4:en meget god flash player plugin mediefiler, støtte til streaming media, populærmusik videoafspilning værktøj. Støtte til huden, meget konfigurerbare indstillinger. Dynamisk liste xml indlæst. mms streaming media, RSTP open source licens medieafspilning støtte

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/da/edit.html b/plugin/document/kod/config/i18n/da/edit.html deleted file mode 100644 index b87888626..000000000 --- a/plugin/document/kod/config/i18n/da/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  Rich funktionalitet

                  -

                  Kode beder automatisk

                  -

                  Multi-tema: Vælg din favorit programmering stil

                  -

                  Tilpasset Font: til brug ved scene

                  -

                  Multi cursor redigering, blok redigering online programmeringserfaring kan sammenlignes med det sublime

                  -

                  Block foldning, udvide; wrap

                  -

                  Understøttelse af flere faner, skal du trække skifte sekvens;

                  -

                  Fastholdelse af flere dokumenter, finde og erstatte; Historie;

                  -

                  Auto-komplet [], {}, (), '' ''

                  -

                  Online real-time preview, der giver mulighed for at falde i kærlighed med online programmering!

                  -

                  zendcodeing support, skrive kode firs

                  -

                  Flere funktioner venter på din opdagelse ......

                  -
                  -
                  -

                  150 slags kode fremhævning

                  -

                  Tip: html, javascript, css, mindre, Sass, SCSS

                  -

                  webudvikling: php, perl, python, rubin, Elang, go ...

                  -

                  Traditionelle sprog: java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Andre: markdown, shell, sql, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Genvej Handling

                  -
                   Almindeligt brugte genveje: 
                  - ctrl + s for at gemme 
                  - Ctrl + A Vælg alle ctrl + x Cut 
                  - ctrl + c ctrl + v pasta kopi 
                  - ctrl + z Fortryd Fortryd Anti ctrl + y 
                  - ctrl + f for at finde erstatning ctrl + f + f 
                  - win + alt + 0 kollaps alle win + alt + shift + 0 Udvid alle 
                  - esc [Afslut søgning annulleres automatisk beder ...] 
                  - ctrl-shift-r Eksempel 
                  - ctrl-shift-e show & Close funktion 
                  -
                  -
                   Vælg: 
                  - Mus lysavis - træk 
                  - shift + home / ende / op / venstre / ned / højre 
                  - shift + PageUp / PageDown flip op og ned for at vælge 
                  - ctrl + shift + home / slutningen af ​​den aktuelle markøren til begyndelsen og slutningen 
                  - alt + musen til at trække blokken udvælgelse 
                  - ctrl + alt + g batch vælge og indtaste den aktuelle multi-fanen editor 
                  -
                  -
                   Cursor: 
                  - hjem / ende / op / venstre / ned / højre 
                  - ctrl + home / ende flytte markøren til dokumentet hoved / hale 
                  - ctrl + p Hop til matchende tag 
                  - PageUp / PageDown markøren op og ned 
                  - alt + venstre / højre markøren til at flytte til toppen af ​​linjen 
                  - shift + venstre / højre markøren til slutningen af ​​linjen & 
                  - ctrl + l for at springe til en bestemt række 
                  - ctrl + alt + op / ned (nedenfor) øge markøren 
                  -
                  -
                   Edit: 
                  - ctrl + / Kommentar & udkommentere ctrl + alt + et berettiget 
                  - Fanen tabel justering shift + bord samlede avancement bord 
                  - slet slet slet hele linjen ctrl + d 
                  - ctrl + delete for at slette række på det rigtige ord 
                  - ctrl / shift + backspace for at slette ordet til venstre 
                  - alt + shift + op / ned og tilføjet til kopien linje (herunder) fly 
                  - Alt + Delete for at slette indholdet i højre for markøren 
                  - alt + op / ned på den aktuelle linje og den linje (næste linje udveksling) 
                  - CTRL + SKIFT + d rækker kopieret og tilføjet til følgende 
                  - ctrl + delete for at slette højre for ordet 
                  - ctrl + shift + u konverteret til små bogstaver 
                  - Ctrl + U markeret tekst til store bogstaver 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/da/help.html b/plugin/document/kod/config/i18n/da/help.html deleted file mode 100644 index a718bbd7c..000000000 --- a/plugin/document/kod/config/i18n/da/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  File Management
                  -

                  File Selection: radio, mus telt, skift-valget, ctrl tilfældigt valgt, tastaturet op og ned, hjem, ende valg.

                  -

                  Fil operation: Når du har valgt en fil, kan du kopiere, klippe, slette, vist egenskaberne for kompression, omdøbe, åbne Eksempel og andre operationer ......

                  -

                  File Upload: Upload flere filer parti html5 drag upload (træk for at problemfrit uploade vinduet, træk og slip støtte til mapper)

                  -

                  Right funktion: Højreklik fil, mappe, højre, mere lige efter valget operation, desktop, højre, højre mappetræ, højreindbundet menu genveje
                  - (Vælg alle - Copy - Cut - Paste - Slet - Omdøb, sæt ......)

                  -

                  File Browser: Liste funktionen, ikon mode, dobbeltklik på i undermapper, adresselinje operation åbne en mappe rekord afvigende rekord (frem og tilbage)

                  -

                  Støtte træk og slip: Check træk, klippe for at opnå den angivne mappe funktionen

                  -

                  Genvejstaster: slet slet, ctrl + A Vælg alt, ctrl + C for at kopiere, + X Klip, filsøgning (søg indhold) Ctrl

                  -
                  -
                  -
                  Fil Eksempel
                  -

                  Fil Eksempel: se indholdet af en tekstfil redigering og lagring, html, SWF fil preview,

                  -

                  Image Preview: automatisk generering af thumbnails, billedbehandling diasshow;

                  -

                  Lyd afspilning: spille online musik og videofiler, støtte mp3, wma, mid, aac, wav, mp4,

                  -

                  Video: online video afspilning, understøttede formater: flv, F4V, 3gp

                  -

                  kontor: office Online preview, understøttede formater: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Genveje
                  -

                  indtaste Open

                  -

                  Ctrl + A Vælg alle

                  -

                  ctrl + c for at kopiere den valgte

                  -

                  ctrl + v for at indsætte

                  -

                  ctrl + x Cut

                  -

                  ctrl + f for at søge den aktuelle mappe

                  -

                  alt + n Ny fil

                  -

                  alt + m Ny mappe

                  -

                  slette Slet valgte

                  -

                  backspace Tilbage

                  -

                  ctrl + backspace fremad

                  -

                  f2 Omdøb valgt (mappe)

                  -

                  hjem / ende / op / ned / venstre / højre for at vælge filen

                  -

                  Valgfri Kontroller at trykke det første bogstav af den karakter filer og mapper er valgt automatisk cyklus

                  -
                  diff --git a/plugin/document/kod/config/i18n/da/main.php b/plugin/document/kod/config/i18n/da/main.php deleted file mode 100644 index ce8d96100..000000000 --- a/plugin/document/kod/config/i18n/da/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Vælg fil ...", - "path_api_select_folder" => "Vælg mappe ...", - "path_api_select_image" => "Vælg et billede ...", - "share_can_upload" => "Tillad upload", - "move_error" => "Flyt mislykkedes", - "setting_basic" => "Grundlæggende indstillinger", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Åbn Animation", - "recycle_open_if" => "Åbn papirkurven", - "recycle_open" => "åbent", - "setting_user_recycle_desc" => "Efter sletningen slettes direkte fysisk sletning", - "setting_user_animate_desc" => "Vindue åbent og anden animation", - "setting_user_sound_desc" => "Operationslyd", - "setting_user_imageThumb" => "Billede miniaturer", - "setting_user_imageThumb_desc" => "Bedre browsingoplevelse efter åbning", - "setting_user_fileSelect" => "Åbn filikonets kontrol", - "setting_user_fileSelect_desc" => "Filikonet venstre tastekontrol, højreklik på genvejstastning", - "qrcode" => "URL QR code", - "theme_mac" => "Mac minimalistisk hvid", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blå Classic", - "theme_metro_green" => "Metro lysegrøn", - "theme_metro_purple" => "Metro elegant lilla", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro lyse orange", - "theme_alpha_image" => "Bright - flyvende", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Brugerdefineret", - "theme_diy_title" => "Tilpasset Temaindstillinger", - "theme_diy_background" => "Baggrund", - "theme_diy_image" => "billede", - "theme_diy_color_blur" => "Gradient farve", - "theme_diy_image_blur" => "sløre picture", - "theme_diy_image_url" => "Billeder adresse", - "theme_diy_color_start" => "startfarven", - "theme_diy_color_end" => "End Color", - "theme_diy_color_radius" => "Gradient vinkel", - "system_role_admin_set" => "Administratorer har alle rettigheder, uden at indstille!", - "login_error_user_not_use" => "Brugeren er deaktiveret! Kontakt venligst administratoren", - "login_error_kod_version" => "konflikt Version", - "login_error_role" => "Vis tilladelser gruppe eksisterer ikke, bedes du kontakte administratoren", - "no_permission_group" => "Du er ikke i denne gruppe!", - "no_permission_write" => "Mappen har ikke skriverettigheder", - "user" => "Bruger", - "save_as" => "Gem som", - "check_update" => "Opdatering", - "keyboard_type" => "Keyboard-tilstand", - "font_family" => "Fonts", - "code_mode" => "Syntaks fremhævning", - "path_can_not_share" => "Understøtter kun dele dine egne dokumenter!", - "path_can_not_action" => "Denne mappe understøtter ikke denne handling!", - "wap_page_pc" => "PC version", - "wap_page_phone" => "Mobil", - "image_size" => "Billede dimensioner", - "no_permission_action" => "Du behøver ikke have denne tilladelse, skal du kontakte administratoren!", - "path_is_root_tips" => "Det er kommet til rodbiblioteket!", - "kod_group" => "Organisation", - "my_kod_group" => "Jeg er i afdelingen", - "space_tips_default" => "(GB) 0 ingen grænse", - "space_tips_full" => "Uden at begrænse", - "space_size" => "Space", - "space_size_use" => "Anvendelse af rummet", - "space_is_full" => "Der er ikke nok plads tilbage, kontakt venligst administratoren!", - "system_open_true_path" => "Succesfuld åbnede i filhåndteringen!", - "group_role_error" => "Rolle tilladelser fejl (ingen tilladelsesindstillinger)", - "group_role_error_admin" => "Utilstrækkelige tilladelser", - "markdown_content" => "Indholdsfortegnelse", - "system_group" => "Brugere og afdelinger", - "system_group_edit" => "Afdelingsledelse", - "system_group_role" => "Role identitet", - "system_group_create" => "Ny afdeling", - "system_group_name" => "Afdelingens navn", - "system_group_father" => "Superior afdeling", - "system_group_add" => "Tilføj underafdeling", - "system_group_remove" => "Fjern afdelingen", - "system_group_remove_tips" => "Er du sikker på at slette afdelingen?
                  Efter sletningen af ​​den del af brugeren, der skal fjernes, flyttes delsektoren til rodsektoren", - "system_group_select" => "Vælg afdeling", - "system_group_select_result" => "Medlemmerne vil tilhøre følgende sektorer", - "system_role_admin_tips" => "Bemærkninger: Systemadministratorer har ikke tilladelse til at kontrollere", - "system_member_action" => "Bruger Management", - "system_member_add" => "Ny bruger", - "system_member_role" => "Tilladelse roller", - "system_member_role_select" => "Vælg", - "system_member_password_tips" => "Fyld ikke ikke ændret", - "system_set_home_path" => "Tilpasset Butik", - "system_set_home_path_tips" => "Standard mappen er tom", - "system_member_group" => "Hvor afdelingen", - "system_member_group_edit" => "Redaktionelle afdeling", - "system_member_remove" => "Slet bruger", - "system_member_remove_tips" => "Bekræft sletningen bruger?
                  , efter at du fjerner brugerens mappe vil blive helt slettet", - "system_member_set_role" => "For at bekræfte ændringen af ​​de udvalgte brugergruppetilladelser?", - "system_member_remove_group" => "Bestem den valgte bruger vil blive fjernet fra denne gruppe?", - "system_member_import" => "Bulk add", - "system_member_import_desc" => "En bruger per linje,
                  allerede findes er tavst ignoreres", - "system_member_use" => "Aktiver", - "system_member_unuse" => "Deaktiver", - "system_member_space" => "Indstil brugerens rumstørrelse ", - "system_member_space_tips" => " Indstil brugerens rumstørrelse ", - "system_member_space_number" => " Skal være et nummer!", - "system_member_group_config" => "Batchindstillingsafdeling", - "system_member_group_remove" => "Fjernet fra afdelingen", - "system_member_group_insert" => "Tilføj til afdelingen", - "system_member_group_reset" => "Nulstil afdelingen", - "system_member_group_error" => "Afdelingsfejl", - "system_group_action" => "Afdelingsledelse", - "system_role_add" => "Tilføj Role Identity", - "system_role_read" => "Skrivebeskyttet", - "system_role_write" => "Kan læse og skrive", - "system_setting_root_path" => "Root adgang", - "system_setting_root_path_desc" => "Kun en systemadministrator kan få adgang til alle mapper, kan andre rettighedshavere grupper af brugere kun se deres egen bruger mappe. Hvis du ønsker at aktivere eller deaktivere
                  administrator adgang til andre mapper, kan du ændre php open_basedir anti-cross-site parametre,sætte", - "system_group_role_title" => "Afdelingsmyndighedens rolleforvaltning", - "system_group_role_remove" => "OK for at slette afdelingens rolle", - "system_group_role_style" => "stil", - "system_group_role_display" => "Hvorvidt", - "system_group_role_display_desc" => "Indstil, om du skal vise afdelingsbrugerrettigheder eller ej", - "role_type_name_read" => "Læs", - "role_type_name_read:list" => "Fil Liste", - "role_type_name_read:info" => "Fil (mappe) ejendom Se, mappe søgning", - "role_type_name_read:copy" => "filkopiering", - "role_type_name_read:preview" => "Fil forhåndsvisning (billeder, dokumenter, lyd og video)", - "role_type_name_read:download" => "Fil (mappe) Hent", - "role_type_name_write" => "skrive", - "role_type_name_write:add" => "Opret en fil (mappe), udpakke komprimerede fil", - "role_type_name_write:edit" => "Gem filen for at redigere", - "role_type_name_write:change" => "Omdøb, justere mappestruktur", - "role_type_name_write:upload" => "Fil (mappe) upload, fjernbetjening downloade", - "role_type_name_write:remove" => "Fil (mappe) slet, skæres", - "group_guest" => "Besøgende", - "group_guest_desc" => "Du er ikke medlem af instituttet,
                  kan kun få adgang til [afdelingens delte katalog] følgende indhold, skrivebeskyttede tilladelser.", - "group_role_lebel_desc" => "Du er medlem af denne afdeling,
                  Alle dokumenter inden for afdelingen Alle rettigheder forbeholdes af administratoren", - "button_save_and_add" => "Gem og fortsætter med at tilføje", - "path_cannot_search" => "Mappen understøtter ikke søgningen!", - "not_support" => "Understøttes ikke!", - "group_not_exist" => "Brugergruppe findes ikke!", - "upload_clear_all" => "Ryd alle", - "upload_clear" => "Clear Afsluttet", - "upload_setting" => "Opsætning", - "upload_tips" => "Bruger skive upload, ikke længere er omfattet php.ini grænse anbefales krom mappe træk og slip upload oplevelse", - "upload_exist" => "Fil af samme navn", - "upload_exist_rename" => "Omdøb", - "upload_exist_replace" => "Cover", - "upload_exist_skip" => "Spring", - "upload_add_more" => "Bulk add", - "more" => "mere", - "system_setting" => "Systemindstillinger", - "openProject" => "Åbn projektet editor", - "url_download" => "Hent", - "url_link" => "URL", - "app_type_link" => "Genveje", - "createLink" => "Opret genvej", - "createLinkHome" => "Sendt til skrivebordet genvej", - "createProject" => "Tilføjelse til redaktøren projektet", - "only_read" => "Skrivebeskyttet", - "only_read_desc" => "Mappen har ikke skrivetilladelse
                  Du kan angive tilladelser til denne mappe på serveren", - "not_read" => "ulæselig", - "explorerNew" => "kod link", - "zip_download_ready" => "Efter komprimering vil automatisk downloade, vent venligst ...", - "set_background" => "Sæt som Desktop Wallpaper", - "share" => "andel", - "my_share" => "Min andel", - "group_share" => "Gruppe ekstern deling", - "share_edit" => "Rediger deling", - "share_remove" => "Annuller deling", - "share_remove_tips" => "Er du sikker på, at du vil annullere deling? Den offentlige forbindelse bliver ugyldiggjort.", - "share_path" => "Del stien", - "share_title" => "Ressourcedeling", - "share_name" => "Del titlen", - "share_time" => "udløb", - "share_time_desc" => "Null er ikke indstillet", - "share_password" => "Uddrag password", - "share_password_desc" => "Tom adgangskode er ikke indstillet", - "share_cancle" => "ophævelse af delingen", - "share_create" => "Opret en offentlig link", - "share_url" => "Delt Adresse", - "share_not_download" => "Hent forbud", - "share_not_download_tips" => "Sharer forbudt download!", - "share_code_read" => "kodelæser", - "share_save" => "Gem konfiguration", - "share_error_param" => "Parameter fejl!", - "share_error_user" => "Brugeroplysninger Fejl!", - "share_error_sid" => "Share findes ikke!", - "share_error_time" => "Du kommer for sent, er andelen afsluttet!", - "share_error_path" => "Delt fil findes ikke, slettes eller fjernes det!", - "share_error_password" => "Forkert kodeord!", - "share_error_show_tips" => "Denne type understøtter ikke fil billede!", - "share_view_num" => "Visninger:", - "share_download_num" => "Overførsler:", - "share_open_page" => "Åbn den delte side", - "open_the_path" => "Indtast mappe", - "recycle_clear" => "Tøm papirkurv", - "recycle_clear_success" => "Tøm papirkurv succes!", - "recycle_clear_info" => "Er du sikker på du vil helt tomt papirkurven?", - "fav_remove" => "Annuller indsamling", - "remove_item" => "Elementer", - "uploading" => "Upload", - "upload_tips_more" => "Alt for mange filer, anbefaling af den komprimerede upload, så unzippe online!", - "uploading_move" => "I fusionsoverførslen ...", - "show_file" => "forhåndsvisning Ny side", - "unknow_file_title" => "Fil Åbn Tip!", - "unknow_file_tips" => "Ikke støtte anvendelsen af ​​denne fil, kan du:", - "unknow_file_try" => "prøve", - "unknow_file_download" => "Download filen", - "unknow_plugin_search" => "Søg-relaterede programmer installeret", - "config_save_error_auth" => "Det lykkedes ikke at gemme konfigurationen, administratoren forbudt dette privilegium!", - "config_save_error_file" => "Fejl, fil ikke skrivbare!", - "beautify_code" => "kode Formatter", - "convert_case" => "sag konvertering", - "convert_upper_case" => "Omregnet til store bogstaver", - "convert_lower_case" => "Konverteret til små bogstaver", - "editor_insert_time" => "Nuværende tid ", - "editor_md5" => " Md5 kryptering ", - "editor_qrcode" => " String todimensionale kode ", - "editor_regx" => " Regelmæssig ekspresstest ", - "editor_chinese" => " Forenklet konvertering ", - "editor_chinese_simple" => " Konverter til forenklet kinesisk ", - "editor_chinese_traditional" => " Konverter til traditionel kinesisk ", - "editor_base64" => "Base64 codec ", - "editor_base64_encode" => " Base64-kodning ", - "editor_base64_decode" => " Base64-dekodning ", - "editor_url" => " URL codec ", - "editor_url_encode" => " URL-kodning ", - "editor_url_decode" => " URL-dekodning ", - "editor_unicode" => " Unicode codec ", - "editor_unicode_encode" => " Unicode-kodning ", - "editor_unicode_decode" => " Unicode-afkodning", - "editor_tools_select_tips" => " Vælg venligst det indhold, du vil konvertere!", - "editor_calc" => "Gratis Calculator", - "shortcut" => "Genveje", - "use_free" => "Fortsæt med at bruge den gratis version", - "learn_more" => "Lær mere", - "replace" => "udskifte", - "selectAll" => "Vælg", - "reload" => "Opdater", - "about" => "på", - "complete_current" => "Automatisk udfyldning af den nuværende", - "view" => "udsigt", - "tools" => "Værktøj", - "help" => "Hjælp", - "not_exists" => "Findes ikke", - "group_role_fileDownload" => "Downloads", - "group_role_share" => "andel", - "users_share" => "Deling", - "system_setting_save" => "Sikkerhedsindstillinger", - "system_setting_menu" => "Menu management", - "system_name" => "Programnavn", - "system_name_desc" => "Program logo titel", - "system_desc" => "Program Beskrivelse", - "path_hidden" => "vejviser udelukkelser", - "version_not_support" => "Din version understøtter ikke denne, skal du gå til den officielle hjemmeside for at købe den avancerede version!", - "version_not_support_number" => "Da antallet af begrænsningen ikke understøtter denne operation, skal du køber den avancerede version af den officielle hjemmeside!", - "path_hidden_desc" => "Telefonbøger og filer som standard vises ikke, adskilt af kommaer", - "new_user_folder" => "Den nye bruger oprettes som standard mappe", - "new_user_folder_desc" => "Adskilt af kommaer", - "new_user_app" => "Den nye bruger oprettes som standard app", - "new_user_app_desc" => "Applikationer Application Center, en flerhed af adskilt af kommaer", - "auto_login" => "Besøgende automatisk login", - "auto_login_desc" => "Standard brugernavnguest/guestbrugere efter åbning for at sikre, at brugeren eksisterer", - "first_in" => "Når du er logget ind i standard", - "version_price_free" => "gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Mappe er ikke skrivbar, indstille mappe og alle undermapper for at prøve igen efter læse-skrive!", - "menu_name" => "Menu navn", - "menu_hidden" => "Skjul", - "menu_show" => "udstilling", - "menu_move_down" => "ned", - "menu_move_up" => "op", - "menu_move_del" => "Slet", - "menu_open_window" => "Åbn et nyt vindue", - "menu_sub_menu" => "Undermenu", - "url_path" => "url adresse", - "url_path_desc" => "url adresse eller js kode", - "no_permission_read" => "Du har ikke tilladelse til at læse!", - "no_permission_download" => "Du har ikke tilladelse til at downloade!", - "php_env_check" => "Driftsmiljø overvågning:", - "php_env_error" => "Php bibliotek mangler", - "php_env_error_ignore" => "Ignorer og indtaste", - "php_env_error_version" => "PHP-version kan ikke være mindre end 5,0", - "php_env_error_path" => "Ikke skrivbar", - "php_env_error_list_dir" => "Din webserver åbner mappen notering funktionen af ​​sikkerhedsmæssige årsager, deaktivere denne funktion!hvordan?", - "php_env_error_gd" => "Php GD biblioteket skal være åben, ellers koden, skal du bruge miniaturebillede vil ikke fungere korrekt", - "install_login" => "Du kan bruge følgende konto login", - "install_enter" => "systemet", - "install_user_default" => "Administrator: {0} / (under angive en adgangskode)
                  Gennemsnitlig bruger: {1}
                  Gæstebrugere: {2}", - "login_root_password" => "Indstil administratoradgangskoden", - "login_root_password_repeat" => "Bekræft adgangskode igen", - "login_root_password_equal" => "De to adgangskoder er ikke ens!", - "login_root_password_tips" => "Angiv en administratoradgangskode!", - "forget_password" => "Har du glemt din adgangskode", - "forget_password_tips" => "Glemt Administrator Password:
                  Du skal logge server slette ./data/system/install.lock nulstille;

                  Ikke-administrator Glemt Kodeord:
                  Kontakt administratoren for at nulstille!", - "copyright_desc" => "Kodexplorer er et meget roste web dokument management system, du kan bruge det til intern dokumenthåndtering eller delt, kan også bruges på sitet management server, udskifte Ftp, ligesom webIDE direkte online udvikling. Du kan også programmere den anden udvikling for at integrere dette i dine eksisterende systemer.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango cloud • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango cloud • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao sky, sky mango, dokumenthåndteringssystemer, enterprise cloud-disk, opdagelsesrejsende ,, online dokumentation, online-Office, online-kontor, online CAD forhåndsvisning, online redigering , online redaktør", - "kod_meta_description" => "KodExplorer kan formørke Road (tidligere mango sky) er en førende leverandør af offentlige / virksomhedernes private skyer og online dokumenthåndteringssystem til personlige hjemmesider, enterprise privat cloud-implementeringer, netværk opbevaring, online dokumenthåndtering, online office til at levere sikker og kontrolleret, enkel og let brug, meget tilpasset private cloud-produkter. Brug af Windows stil interface, driftspraksis, uden at skulle tilpasse sig hurtigt komme i gang, støtter hundredvis af populære online forhåndsvisning filformat, afspilning og redigering miljøvenlige, kraftfuld, er en gang retssag, ikke længere er uadskillelig fra det private cloud tilbud.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Log på", - "guest_login" => "gæst Log", - "username" => "Login konto", - "userNickName" => "Bruger kaldenavn", - "password" => "adgangskode", - "login_code" => "Koder", - "need_check_code" => "Login authentication code åben", - "need_check_code_desc" => "Når du har logget på, skal du indtaste verifikationskoden.", - "setting_csrf_protect" => "Åbent beskyttelse CSRF", - "setting_csrf_protect_desc" => "Efter åbning type angreb effektivt kan beskytte CSRF", - "login_rember_password" => "Husk adgangskode", - "setting_show_root_group" => "Liste over alle afdelinger", - "setting_show_root_group_desc" => "Træmappe rodafdeling, om du vil oprette en liste over alle afdelinger", - "setting_show_share_user" => "En liste over alle brugere", - "setting_show_share_user_desc" => "Træmappen root afdeling er angivet for alle brugerdeling", - "setting_clear_user_recycle" => "Tøm papirkurven for alle brugere", - "setting_clear_cache" => "Tøm cachen", - "setting_icp" => "Copyright eller rekordstort antal", - "setting_global_css" => "Tilpasset globale css", - "setting_global_css_desc" => "Alle sider indsætter brugerdefinerede css", - "setting_global_html" => "Statistisk kode HTML", - "setting_global_html_desc" => "Alle sider vil blive indsat i dette stykke HTML-kode, kan koden placeres tredjeparts statistik", - "us" => "kodcloud.com", - "login_not_null" => "Brugernavn og adgangskode kan ikke være tom!", - "code_error" => "fejlkoder", - "password_error" => "Brugernavn eller adgangskode er forkert!", - "password_not_null" => "Adgangskoden kan ikke være tom!", - "old_password_error" => "Gammel adgangskode er forkert!", - "permission" => "Tilladelse!", - "permission_edit" => "Ændre Tilladelser", - "file_info_owner" => "Ejer", - "file_info_group" => "gruppe", - "no_permission" => "Administrator har deaktiveret dette privilegium!", - "no_permission_ext" => "Administrator forbudt denne type filrettigheder", - "dialog_max" => "Maksimer", - "dialog_min" => "Minimer", - "dialog_min_all" => "Minimer alle", - "dialog_display_all" => "Vis alle vinduer", - "dialog_close_all" => "Luk alle", - "open" => "åbent", - "others" => "andre", - "open_with" => "Åben til ...", - "close" => "Luk", - "close_all" => "Luk alle", - "close_left" => "Luk venstre fane", - "close_right" => "Luk fanerne til højre", - "close_others" => "Luk Andet", - "loading" => "Operation ...", - "warning" => "Advarsel", - "getting" => "Få den ...", - "sending" => "Dataoverførsel ...", - "data_error" => "Data Error!", - "get_success" => "Få Succes!", - "save_success" => "Gemt!", - "success" => "vellykket operation", - "error" => "Operation mislykkedes", - "error_repeat" => "Operationen mislykkedes, findes allerede navnet!", - "word_error" => "Manglende ", - "word_success" => " succes", - "system_error" => "systemfejl", - "name" => "navn", - "type" => "Type", - "contain" => "indeholder", - "address" => "Beliggenhed", - "size" => "størrelse", - "byte" => "Byte", - "path" => "Sti", - "action" => "Operating", - "create_time" => "Oprettet", - "modify_time" => "Modificeret", - "last_time" => "sidste besøg", - "sort_type" => "Sorter efter", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "Offentlig mappe", - "system_path_not_change" => "System mappe, kan ikke ændres", - "file" => "Fil", - "folder" => "Folder", - "copy" => "kopi", - "past" => "Stick", - "clone" => "Opret en kopi", - "cute" => "Shear", - "cute_to" => "Flyt til ...", - "copy_to" => "Kopier til ...", - "remove" => "Slet", - "remove_force" => "helt at fjerne", - "info" => "Ejendom", - "list_type" => "udsigt", - "list_icon" => "Ikon-array", - "list_list" => "Liste arrangement", - "list_list_split" => "Kolonne-tilstand", - "sort_up" => "Forøgelse", - "sort_down" => "faldende", - "order_type" => "Sorter efter", - "order_desc" => "faldende", - "order_asc" => "stigende", - "rename" => "Omdøb", - "add_to_fav" => "Tilføj til favoritter", - "search_in_path" => "Mappesøgning", - "add_to_play" => "Tilføj til playliste", - "manage_fav" => "Administrer Favoritter", - "refresh_tree" => "Opdater mappetræ", - "manage_folder" => "Register Management", - "close_menu" => "Luk menu", - "zip" => "Opret en komprimeret pakke", - "unzip" => "At udvinde ...", - "unzip_folder" => "Filerne til en mappe", - "unzip_this" => "Uddrag til den aktuelle", - "unzip_to" => "At udvinde ...", - "zipview_file_big" => "Filen er for stor, og derefter udtrække preview operation!", - "clipboard" => "Vis Udklipsholder", - "clipboard_clear" => "tom Udklipsholder", - "full_screen" => "Fuld skærm", - "folder_info_item" => "Elementer", - "folder_info_item_select" => "En valgt", - "file_load_all" => "Dobbeltklik for at indlæse alle ......", - "tips" => "Prompt", - "ziping" => "Zippe ...", - "unziping" => "Udpakning ...", - "moving" => "Mobil operation ...", - "remove_title" => "Slet Bekræftelse", - "remove_info" => "Bekræft for at slette det valgte emne?", - "remove_title_force" => "slettet permanent", - "remove_info_force" => "Du sikker på du vil slette dette dokument?", - "name_isexists" => "Forkert, findes allerede navnet!", - "install" => "Installer", - "width" => "Bredde", - "height" => "høj", - "app" => "lette applikationer", - "app_store" => "lette applikationer", - "app_create" => "Opret Application", - "app_edit" => "Ændre programmet", - "app_group_all" => "Komplet", - "app_group_game" => "spil", - "app_group_tools" => "Værktøj", - "app_group_reader" => "Læs", - "app_group_movie" => "fjernsyn", - "app_group_music" => "musik", - "app_group_life" => "Livet", - "app_group_others" => "andre", - "app_desc" => "Beskrivelse", - "app_icon" => "Applikationer ikon", - "app_icon_show" => "url adresse eller mappen", - "app_group" => "Ansøgning Packet", - "app_type" => "Type", - "app_type_url" => "link", - "app_type_code" => "js udvidelse", - "app_display" => "udvendig", - "app_display_border" => "Uden grænser (dvs. vælge kant)", - "app_display_size" => "Resize (Check til justering)", - "app_size" => "størrelse", - "app_url" => "Link-adresse", - "app_code" => "js kode", - "edit" => "Edit", - "edit_can_not" => "Ikke en tekstfil", - "edit_too_big" => "Fil er for stor, kan det ikke være større end 40M", - "open_default" => "Standard Open", - "open_ie" => "Åbn browseren", - "refresh" => "Opdater", - "refresh_all" => "Tvinge en opdateringshastighed", - "newfile" => "Ny fil", - "newfile_save_as" => "Gem til", - "newfolder" => "Ny mappe", - "newothers" => "New Andet", - "path_loading" => "Indlæser ...", - "go" => "Walk!", - "go_up" => "øvre lag", - "history_next" => "Fremad", - "history_back" => "Retreat", - "address_in_edit" => "Klik for at skifte til redigeringstilstand", - "double_click_rename" => "Dobbeltklik på Omdøbning", - "double_click_open" => "Dobbeltklik for at åbne", - "path_null" => "Folder er tom!", - "file_size_title" => "Ikon Størrelse", - "file_size_small_super" => "Ultra-small", - "file_size_small" => "Små ikoner", - "file_size_default" => "Ikoner", - "file_size_big" => "Store ikoner", - "file_size_big_super" => "Stor ikon", - "upload" => "Upload", - "upload_ready" => "Venter på upload", - "upload_success" => "Upload en succes", - "upload_path_current" => "Skift til det aktuelle bibliotek", - "upload_select" => "Vælg fil", - "upload_max_size" => "Den maksimalt tilladte", - "upload_size_info" => "Hvis du vil konfigurere mere, kan du ændre php.ini maksimalt tilladte upload. Når du vælger en fil større end denne konfiguration vil automatisk filtrere.", - "upload_error" => "Upload mislykkedes", - "upload_error_http" => "Netværk eller firewall fejl", - "upload_muti" => "Multi-upload", - "upload_drag" => "Træk og slip upload", - "upload_drag_tips" => "Løsn at uploade!", - "path_not_allow" => "Filnavn ikke tilladt", - "download" => "Hent", - "downloading" => "Indlæser ...", - "download_address" => "Hent", - "download_ready" => "Vil downloades", - "download_success" => "Hent Succes!", - "download_error" => "Hent mislykkedes!", - "download_error_create" => "Skriv fejl!", - "download_error_exists" => "Link til fil mislykkedes!", - "upload_error_null" => "Ingen fil!", - "upload_error_big" => "Fil størrelse overskrider server grænser", - "upload_error_move" => "Kunne ikke flytte fil!", - "upload_error_exists" => "Filen findes allerede", - "upload_local" => "Lokal Upload", - "download_from_server" => "Fjernbetjening download", - "save_path" => "Gem Path", - "upload_select_muti" => "En flerhed af valgbare upload", - "search" => "Søg", - "searching" => "Søger ...", - "search_result" => "Søgeresultater", - "seach_result_too_more" => "Alt for mange søgeresultater, anbefales det for en mappe eller ord", - "search_null" => "Ingen resultater!", - "search_uplow" => "versalfølsom", - "search_content" => "indhold Søgning fil", - "search_info" => "Indtast venligst et søgeord og søg stier!", - "search_ext_tips" => "Ved | adskilt, for eksempel php | js | css
                  ikke fylde søgning standard tekstfil", - "file_type" => "File Type", - "goto" => "Hop til", - "server_dwonload_desc" => "Opgave blev sat til download listen", - "parent_permission" => "Parent mappe tilladelser", - "root_path" => "Dokumenter", - "lib" => "Storehouse", - "fav" => "bogmærke", - "desktop" => "Desktop", - "browser" => "Browser", - "my_computer" => "Denne computer", - "recycle" => "Trash", - "my_document" => "Dokumenter", - "my_picture" => "Mine Billeder", - "my_music" => "min musik", - "my_movie" => "Mine videoer", - "my_download" => "Mine downloads", - "ui_desktop" => "Desktop", - "ui_explorer" => "File Management", - "ui_editor" => "Editor", - "adminer" => "adminer", - "ui_project_home" => "Projekt Hjem", - "ui_login" => "Log på", - "ui_logout" => "Afslut", - "setting" => "Systemindstillinger", - "setting_title" => "Indstillinger", - "setting_user" => "Personlig center", - "setting_password" => "Skift adgangskode", - "setting_password_old" => "gammel adgangskode", - "setting_password_new" => "Revideret til", - "setting_language" => "Sprogindstillinger", - "setting_member" => "Bruger Management", - "setting_group" => "ledelse Brugergruppe", - "setting_group_add" => "Tilføj brugergruppe", - "setting_group_edit" => "Rediger Brugergrupper", - "setting_theme" => "Temaindstillinger", - "setting_wall" => "Baggrundsindstillinger", - "setting_wall_desktop" => "Desktop tapet", - "setting_wall_desktop_list" => "Desktop Wallpaper Management", - "setting_wall_login_list" => "Log ind Wallpaper Management", - "setting_wall_login_tips" => "Tip: Når der er mere end et stykke, vil indbakken baggrunde rotere tilfældigt", - "setting_wall_diy" => "Tilpasset tapet:", - "setting_wall_info" => "Picture url adresse, kan lokale billeder være rigtigt at få browseren til at åbne billedet", - "setting_fav" => "Bogmærkeadministrator", - "setting_help" => "Brug af Hjælp", - "setting_about" => "Om værker", - "setting_success" => "Ændring har fået virkning!", - "can_not_repeat" => "Ikke lov til at gentage", - "absolute_path" => "Absolut adresse", - "group" => "Brugergrupper", - "data_not_full" => "Data indsendt ufuldstændig!", - "default_user_can_not_do" => "Standard Brugeren kan ikke fungere", - "default_group_can_not_do" => "Standard brugergrupper kan ikke fungere", - "username_can_not_null" => "Brugernavn kan ikke være tom!", - "groupname_can_not_null" => "Brugergruppe navn kan ikke være tomt!", - "groupdesc_can_not_null" => "User Group Beskrivelse kan ikke være tom!", - "group_move_user_error" => "User Group brugere mislykkedes flytte", - "group_already_remove" => "Brugergruppen er blevet slettet", - "group_not_exists" => "Denne brugergruppe findes ikke", - "member_add" => "Tilføj bruger", - "password_null_not_update" => "De sagde de ikke ændre password er ikke udfyldt", - "if_save_file_tips" => "Nogle filer gemmes ikke. Er du sikker på at lukke vinduet?", - "if_save_file" => "Fil er ikke blevet gemt, du vil gemme?", - "if_remove" => "Bekræft Slet", - "member_remove_tips" => "Når du har fjernet brugerens mappe vil blive ryddet", - "group_remove_tips" => "Når du har fjernet brugerens gruppe af brugere kan ikke logge
                  (nødt til at re-set brugergruppe)", - "group_name" => "gruppenavn Bruger", - "group_name_tips" => "Anbefaling engelsk navn, kan ikke gentages", - "group_desc" => "Vist navn", - "group_desc_tips" => "Gruppe Navn Beskrivelse", - "group_role_ext" => "Extension restriktioner", - "group_role_ext_tips" => "Med multiple | adskilt", - "group_role_file" => "File Management", - "group_role_upload" => "Tillad upload", - "group_role_user" => "Bruger data", - "group_role_group" => "ledelse Brugergruppe", - "group_role_member" => "Bruger Management", - "group_role_mkfile" => "Ny fil", - "group_role_mkdir" => "Ny mappe", - "group_role_pathrname" => "Omdøb", - "group_role_pathdelete" => "Fil sletning", - "group_role_pathinfo" => "Egenskaber Fil", - "group_role_pathmove" => "Flyt (copy / cut / paste / træk drift)", - "group_role_zip" => "Compression", - "group_role_unzip" => "Unzip", - "group_role_search" => "Søg", - "group_role_filesave" => "Gem filen for at redigere", - "group_role_can_upload" => "Upload og download", - "group_role_download" => "Fjernbetjening download", - "group_role_passowrd" => "Skift adgangskode", - "group_role_config" => "Configuration data", - "group_role_fav" => "Bookmark operationer (tilføje / redigere / slette)", - "action_list" => "Listevisning", - "action_add" => "tilføje", - "action_edit" => "Edit", - "action_del" => "Slet", - "group_role_ext_warning" => "Upload ikke tillade sådanne filer,
                  Omdøb (omdøbt til det specificerede lokalnummer),
                  Rediger spare, remote download, ekstrakt", - "group_tips" => "
                • 1. Brugergruppenavnet kan ikke duplikeres. Når gruppenavnet er ændret, tilhører det den reorganiserede bruger og er automatisk tilknyttet.
                • 2. Udvidelser begrænser forholdet mellem systemets sikkerhed, vær forsigtig (hvis du opretter en ny php i webkataloget, betyder det, at ændring af programmets tilladelser til denne bruger er næsten umuligt)
                • 3. Husholdningsledelse, rettigheder gruppeledelse; visning rettigheder og tilføje, slette og slette rettigheder er bundet; programmer er automatisk forbundet
                • 4. Når tilladelsesgruppen er indstillet til at tilføje tilladelsesgruppen, er den efterfølgende tilladelse ikke arvet (denne tilladelse svarer til den højeste tilladelse).
                • ", - "not_null" => "Krævede felter kan ikke være tom!", - "picture_can_not_null" => "Billeder kan ikke være tom!", - "rname_success" => "Omdøb succes!", - "please_inpute_search_words" => "Indtast venligst en streng at søge efter", - "remove_success" => "Slettet!", - "remove_fali" => "Slet mislykkedes!", - "clipboard_null" => "Udklipsholder er tom!", - "create_success" => "Ny succes!", - "create_error" => "Nye mislykkes, skal du kontrollere bibliotekstilladelser!", - "copy_success" => "[Kopier] - dækker clipboard succes!", - "cute_success" => "[Cut] - dækker clipboard succes!", - "clipboard_state" => "Udklipsholder status:", - "no_permission_write_all" => "Filen eller mappen er ikke skrivbar", - "no_permission_write_file" => "Filen har ikke skriverettigheder", - "no_permission_read_all" => "Filen eller mappen ikke har nogen læse- tilladelse", - "copy_not_exists" => "Kilde findes ikke", - "current_has_parent" => "Target mappe er en undermappe af kilden mappen!", - "past_success" => "pasta er fuldført", - "cute_past_success" => "cut er fuldført(kilde fil slettes, klippebordet tom)", - "zip_success" => "Compression afsluttet", - "not_zip" => "Ikke arkiv", - "zip_null" => "Ikke valgte fil eller mappe", - "unzip_success" => "unzip komplet", - "gotoline" => "Hop til linjen", - "path_is_current" => "Stien og den nuværende sti for at åbne samme!", - "path_exists" => "Navnet findes allerede!", - "undo" => "Tilbagekaldelse", - "redo" => "Anti tilbagekaldelse", - "preview" => "Eksempel", - "wordwrap" => "Wrap", - "show_gutter" => "Vis linjenumre", - "char_all_display" => "Vis usynlige tegn", - "auto_complete" => "prompter automatisk", - "auto_save" => "Gem automatisk", - "function_list" => "Funktionsliste", - "code_theme" => "Coding Style", - "font_size" => "skriftstørrelse", - "confirm" => "Er du sikker på, at du vil gøre dette?", - "button_ok" => "Bestem", - "button_submit" => "Indsend", - "button_set" => "Opsætning", - "button_cancel" => "aflyst", - "button_edit" => "Edit", - "button_save" => "Gem", - "button_apply" => "Anvend", - "button_save_all" => "Gem alle", - "button_not_save" => "Gem ikke", - "button_add" => "tilføje", - "button_back_add" => "Tilbage at tilføje", - "button_del" => "Slet", - "button_save_edit" => "Gem ændringer", - "button_save_submit" => "Gem Indsend", - "button_more" => "mere", - "button_select_all" => "Vælg alle / Inverter markering", - "charset_AUTO" => "Automatisk identifikation", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabisk", - "charset_ISO_8859_6" => "arabisk", - "charset_ISO_8859_10" => "nordiske sprog", - "charset_CP1257" => "baltiske sprog", - "charset_ISO_8859_13" => "baltiske sprog", - "charset_ISO_8859_4" => "baltiske sprog", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgisk", - "charset_PT154" => "kasakhisk", - "charset_CP949" => "Korean", - "charset_EUC_KR" => "Korean", - "charset_GB18030" => "forenklet kinesisk", - "charset_GBK" => "forenklet kinesisk", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "rumænsk", - "charset_ISO_8859_3" => "Sydeuropæisk", - "charset_EUC_JP" => "japansk", - "charset_ISO_2022_JP" => "japansk", - "charset_SHIFT_JIS" => "japansk", - "charset_KOI8_T" => "tadsjikiske sprog", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "tyrkisk", - "charset_CP1251" => "kyrillisk", - "charset_ISO_8859_5" => "kyrillisk", - "charset_KOI8_R" => "kyrillisk", - "charset_KOI8_U" => "kyrillisk", - "charset_CP1252" => "Vesteuropæiske sprog", - "charset_ISO_8859_1" => "Vesteuropæiske sprog", - "charset_ISO_8859_15" => "Vesteuropæiske sprog", - "charset_Macintosh" => "Vesteuropæiske sprog", - "charset_CP1255" => "Hebrew", - "charset_ISO_8859_8" => "Hebrew", - "charset_CP1253" => "græsk", - "charset_ISO_8859_7" => "græsk", - "charset_ARMSCII_8" => "armensk", - "charset_CP1258" => "Vietnamesisk", - "charset_VISCII" => "Vietnamesisk", - "charset_CP1250" => "Centraleuropæiske sprog", - "charset_ISO_8859_2" => "Centraleuropæiske sprog", - "charset_default_set" => "Filtegnsæt", - "charset_convert_save" => "Gem filen kodet som", - "PluginCenter" => "Plug center", - "PluginBuy" => "Købstilladelse", - "PluginInstalled" => "Er blevet installeret", - "PluginUpdate" => "Opdatering", - "PluginListNull" => "Der er intet indhold!", - "PluginType" => "Klassifikation", - "PluginTypeAll" => "Komplet", - "PluginTypeFile" => "Forbedret fil", - "PluginTypeSafe" => "Sikkerhed Værktøj", - "PluginTypeTools" => "Utility", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "andre", - "PluginInstall" => "Installer plugin", - "PluginEnable" => "Aktiver plug-ins", - "PluginDisable" => "Deaktiver", - "PluginRemove" => "Afinstallere proppen", - "PluginConfig" => "Konfigurer plugin", - "PluginStatus" => "stat", - "PluginStatusEnabled" => "Aktiveret", - "PluginStatusDisabled" => "ikke aktiveret", - "PluginStatusNotInstall" => "ikke installeret", - "PluginInstalling" => "Installation ...", - "PluginHasUpdate" => "opdateringer", - "PluginUpdateStart" => "Opdater plug-in", - "PluginNeedConfig" => "Behovet for at muliggøre den indledende konfiguration", - "PluginConfigNotNull" => "Krævede felter kan ikke være tom!", - "PluginOpen" => "åbent", - "PluginAuther" => "Forfatter", - "PluginVersion" => "Edition", - "PluginDownloadNumber" => "installationer", - "PluginBack" => "Retur", - "PluginReadme" => "Beskrivelse", - "PluginResetConfig" => "Gendan standardindstillingerne", - "PluginInstallSelf" => "Manuel installation", - "Plugin.config.auth" => "Tilladelser", - "Plugin.config.authDesc" => "Alle de tilgængelige indstillinger, eller angive brugere, brugergrupper, rettigheder grupper kan bruge", - "Plugin.config.authOpen" => "Åben adgang", - "Plugin.config.authOpenDesc" => "Det er ikke nødvendigt at besøge, kan bruges til eksternt interfaceopkald", - "Plugin.config.authAll" => "Holder", - "Plugin.config.authUser" => "Bruger", - "Plugin.config.authGroup" => "Udpeget afdeling", - "Plugin.config.authRole" => "gruppe rettigheder", - "Plugin.Config.openWith" => "åbent stil", - "Plugin.Config.openWithDilog" => "Intern dialog", - "Plugin.Config.openWithWindow" => "Den nye side åbner", - "Plugin.Config.fileSort" => "prioritet Extension forening", - "Plugin.Config.fileSortDesc" => "Jo større udvidelse til at åbne højere prioritet", - "Plugin.Config.fileExt" => "Understøttede filformater", - "Plugin.Config.fileExtDesc" => "Tilknyttet Udvidelse til plug-in", - "Plugin.tab.basic" => "Grundlæggende indstillinger", - "Plugin.tab.auth" => "Tilladelser", - "Plugin.tab.others" => "Andre indstillinger", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Vis som webside", - "Plugin.default.picasa" => "Picasa billede browsing", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer afspiller", - "Plugin.auth.viewList" => "Plugin liste", - "Plugin.auth.setting" => "Plugin indstillinger", - "Plugin.auth.status" => "Sluk", - "Plugin.auth.install" => "Installer / Fjern", - "Explorer.UI.openWith" => "Vælg Åbn", - "Explorer.UI.openWithText" => "Notesblok til at åbne", - "Explorer.UI.appSetDefault" => "Angiv standard åben", - "Explorer.UI.appAwaysOpen" => "Brug altid det valgte program til at åbne denne fil", - "Explorer.UI.selectAppDesc" => "Vælg det program, du ønsker at åbne denne fil", - "Explorer.UI.selectAppWarning" => "Vælg den ansøgning!", - "Explorer.UI.appTypeSupport" => "Understøttet", - "Explorer.UI.appTypeAll" => "Alle applikationer", - "kodApp.oexe.edit" => "Rediger lys applikation", - "kodApp.oexe.open" => "Åbn programmet af lys" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/de/about.html b/plugin/document/kod/config/i18n/de/about.html deleted file mode 100644 index 3f205aa98..000000000 Binary files a/plugin/document/kod/config/i18n/de/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/de/edit.html b/plugin/document/kod/config/i18n/de/edit.html deleted file mode 100644 index fa2f35e0f..000000000 --- a/plugin/document/kod/config/i18n/de/edit.html +++ /dev/null @@ -1,73 +0,0 @@ -
                  -
                  -

                  reiche Funktionalität

                  -

                  Code wird automatisch aufgefordert,

                  -

                  Multi-Thema: wählen Sie Ihre Lieblings-Programmierstil

                  -

                  benutzerdefinierte Schriftarten: für die nächste Szene mit

                  -

                  mehr Cursor Bearbeitung, Blockbearbeitung, usw. vergleichbar mit dem erhabenen Erfahrung der Online-Programmierung

                  -

                  Block zusammenbrach, erweitern; wickeln

                  -

                  Unterstützung für mehrere Registerkarten, die Schaltsequenz ziehen;

                  -

                  Wartung mehrerer Dokumente, suchen und ersetzen, Geschichte,

                  -

                  auto-complete [] {} (), "", ""

                  -

                  Online-Echtzeit-Vorschau, die Sie in der Liebe mit Online-Programmierung fallen können!

                  -

                  zendcodeing Unterstützung, Code schreiben achtzig

                  -

                  mehr Funktionen für Ihre Entdeckung warten ......

                  -
                  -
                  -

                  150 DuoZhong Code markieren

                  -

                  Tipp: HTML, JavaScript, CSS, weniger, sass, SCSS

                  -

                  Web-Entwicklung: pHP, perl gehen, python, ruby, Elang, ...

                  -

                  traditionellen Sprachen: Java, C, C ++, C #, ACTION, VBScript ...

                  -

                  andere: Abschlags, Shell, SQL, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Shortcut-Tasten

                  -
                  häufig verwendete Tastenkürzel: 
                  - Strg + s-Abfrage zu speichern 
                  - + a alles auswählen Strg + x Scher schneiden 
                  - Strg + C Strg + V kopieren 
                  - Strg + Z Rückgängig Strg + y anti Widerruf 
                  - Strg + F einfügen Strg + f + f zu finden ersetzen 
                  - Win + alt + 0 Zusammenbruch alle gewinnen + alt + Umschalt + 0 alle erweitern 
                  - esc [Exit-Suche automatisch aufgefordert abgebrochen ...] 
                  - ctrl-Shift-s Vorschau 
                  - ctrl-Shift-e & Schließen Funktion 
                  -
                  -
                  Auswahl: 
                  - Maus Marquee - Drag 
                  - Shift + Start / Ende / oben / links / unten / rechts 
                  - Umschalttaste + Bild auf / ab Flip nach oben und unten zu wählen 
                  - Strg + Shift + Start / Ende des aktuellen Cursor an den Anfang und das Ende 
                  - alt + Maus, um die Blockauswahl 
                  - Strg + alt ziehen + g-Ansatz wählen und geben Sie den aktuellen Multi-Tab-Editor 
                  -
                  -
                  cursor: 
                  - home / Ende / oben / links / unten / rechts 
                  - Strg + home / Ende Cursor Dokument Einstellungen / tail 
                  - ctrl + p Wechseln zu Tag passend 
                  - Bild auf / ab Cursor nach oben und nach unten 
                  - alt + links / rechts Cursor nach oben auf der Linie zu bewegen 
                  - + links / rechts verschieben Sie den Cursor an den Anfang und Ende 
                  - Strg + L zu bewegen Wechseln zu angegebenen Zeile 
                  - Strg + alt + nach oben / unten auf (siehe unten) erhöhen den Cursor 
                  -
                  -
                  Editor: 
                  - Strg + / Kommentar & uncomment Strg + alt + a links und rechts 
                  - Tabelle Registerkarte Ausrichtung ausrichten Umschalt + Tabelle Gesamt Fortschritt Tabelle 
                  - löschen ctrl + d löschen Sie die gesamte Zeile zu löschen 
                  - Strg + löschen Sie die Zeile auf der rechten Wort zu löschen 
                  - Strg / Shift + Backspace das Wort auf der linken Seite 
                  - alt + Umschalt + Aufwärts / abwärts-Kopie zu löschen und zu der Linie (unten) steht 
                  - alt + löschen Sie den Inhalt des rechts vom Cursor zu löschen 
                  - alt + nach oben / unten auf der aktuellen Zeile und der Zeile (nächste Zeile Austausch) 
                  - Strg + Shift + d Zeilen kopiert und in die folgenden 
                  - Strg + löschen entfernen Sie das Recht des Wortes 
                  - Strg + Shift + u in Kleinbuchstaben umgewandelt 
                  - Strg + U Text 
                  -
                  -
                  -
                  - - in Großbuchstaben ausgewählt \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/de/help.html b/plugin/document/kod/config/i18n/de/help.html deleted file mode 100644 index 4e2468efd..000000000 --- a/plugin/document/kod/config/i18n/de/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Dateiverwaltung
                  -

                  Dateiauswahl: radio, Maus Zeltes verschieben Wahl, ctrl zufällig ausgewählt, um die Tastatur nach oben und unten, nach Hause, Ende Auswahl.

                  -

                  Datei-Betrieb: Nach dem Auswählen einer Datei, können Sie kopieren, ausschneiden, löschen, zeigen Sie die Eigenschaften der Kompression, Umbenennen, Vorschau öffnen und andere Operationen ......

                  -

                  Datei-Upload: Hochladen mehrerer Dateien Batch; html5 Drag-Upload (Drag nahtlos Fenster, Drag & Drop laden Unterstützung für Ordner)

                  -

                  Rechts-Funktion: Mit der rechten Datei, einen Ordner, rechts, mehr direkt nach der Wahl Betrieb, Desktop, rechts, rechts Verzeichnisstruktur mit der rechten gebunden Menü-Shortcuts
                  - (Alle auswählen - Copy - Cut - Paste - Löschen - Umbenennen, ......)

                  -

                  Datei-Browser: List-Modus Symbol Modus, doppelklicken Sie in Unterordner; Adressleiste Betrieb; öffnen Sie einen Ordner Datensatz Contrarian Datensatz (vorwärts und rückwärts)

                  -

                  Support per Drag & Drop: Überprüfen Sie ziehen, schneiden Sie den angegebenen Ordner-Funktion zu erreichen

                  -

                  Shortcut-Tasten: Löschen löschen, Strg + A Alles auswählen, Strg + C kopieren, + X Ausschneiden, Datei-Suche (Suche Inhalt) ctrl

                  -
                  -
                  -
                  Dateivorschau
                  -

                  Dateivorschau: sehen Sie den Inhalt einer Textdatei Bearbeiten und Speichern, html, SWF-Datei Vorschau,

                  -

                  Bildvorschau: automatische Erzeugung von Thumbnails, Diashow;

                  -

                  Audio-Wiedergabe: spielen Online-Musik-und Video-Dateien, Unterstützung mp3, wma, mid, aac, wav, mp4,

                  -

                  Video: Online-Video-Wiedergabe, unterstützte Formate: FLV, F4V, 3GP

                  -

                  office: office Online-Vorschau, unterstützte Formate: doc, docx, ppt, PPTX, xls, xlsx

                  -
                  -
                  -
                  Shortcuts
                  -

                  Enter

                  -

                  Strg + A Alles auswählen

                  -

                  ctrl + c die ausgewählte kopieren

                  -

                  Strg + V einfügen

                  -

                  ctrl + x Cut

                  -

                  ctrl + f das aktuelle Verzeichnis zu suchen

                  -

                  alt + n Neue Datei

                  -

                  alt + m Neuer Ordner

                  -

                  Löschen Löschen ausgewählt

                  -

                  Backspace Zurück

                  -

                  Strg + Backspace vorwärts

                  -

                  f2 Umbenennen ausgewählt (Ordner)

                  -

                  Start / Ende / oben / unten / links / rechts, um die Datei auszuwählen,

                  -

                  anykey Überprüfen Sie den ersten Buchstaben der Zeichen Dateien und Ordner ausgewählt automatischen Zyklus zu drücken

                  -
                  diff --git a/plugin/document/kod/config/i18n/de/main.php b/plugin/document/kod/config/i18n/de/main.php deleted file mode 100644 index 316ab0373..000000000 --- a/plugin/document/kod/config/i18n/de/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Bitte wählen Sie die Datei ...", - "path_api_select_folder" => "Bitte wählen Sie einen Ordner ...", - "path_api_select_image" => "Bitte wählen Sie ein Bild ...", - "share_can_upload" => "Upload zulassen", - "move_error" => "Verschieben fehlgeschlagen", - "setting_basic" => "Grundeinstellungen", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Animation öffnen", - "recycle_open_if" => "Öffnen Sie den Papierkorb", - "recycle_open" => "geöffnet", - "setting_user_recycle_desc" => "Nach dem Löschen wird die physikalische Löschung gelöscht", - "setting_user_animate_desc" => "Fenster offen und andere Animation", - "setting_user_sound_desc" => "Betriebsgeräusch", - "setting_user_imageThumb" => "Bild thumbnails", - "setting_user_imageThumb_desc" => "Bessere Browser-Erfahrung nach dem Öffnen", - "setting_user_fileSelect" => "Öffnen Sie die Datei icon check", - "setting_user_fileSelect_desc" => "Dateisymbol linke Schlüsselprüfung, Rechtsklick-Menü-Shortcut-Eintrag", - "qrcode" => "URL QR-Code", - "theme_mac" => "Mac minimalistisch weiß", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "Metro hellgrün", - "theme_metro_purple" => "Metro elegante lila", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro leuchtend orange", - "theme_alpha_image" => "Bright - Fliegen", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Benutzerdefinierte", - "theme_diy_title" => "Benutzerdefinierte Design-Einstellungen", - "theme_diy_background" => "Hintergrund", - "theme_diy_image" => "Bild", - "theme_diy_color_blur" => "Farbverlauf", - "theme_diy_image_blur" => "Bildunschärfe", - "theme_diy_image_url" => "Fotos Adresse", - "theme_diy_color_start" => "Ab Farbe", - "theme_diy_color_end" => "End Farbe", - "theme_diy_color_radius" => "Steigungswinkel", - "system_role_admin_set" => "Administratoren haben alle Rechte, ohne Einstellung!", - "login_error_user_not_use" => "Benutzer wurde deaktiviert! Bitte kontaktieren Sie den Administrator", - "login_error_kod_version" => "Versionskonflikt", - "login_error_role" => "Anzeigeberechtigungen Gruppe nicht existiert, wenden Sie sich bitte an den Administrator", - "no_permission_group" => "Sie sind nicht in dieser Gruppe!", - "no_permission_write" => "Das Verzeichnis hat keine Schreibberechtigung", - "user" => "Benutzer", - "save_as" => "speichern unter", - "check_update" => "Aktualisierung", - "keyboard_type" => "Keyboard-Modus", - "font_family" => "Schriftarten", - "code_mode" => "Syntax-Hervorhebung", - "path_can_not_share" => "Unterstützt nur Ihre eigenen Dokumente teilen!", - "path_can_not_action" => "Dieses Verzeichnis nicht unterstützt diese Operation!", - "wap_page_pc" => "PC Version", - "wap_page_phone" => "Mobile", - "image_size" => "Bildmaße", - "no_permission_action" => "Sie haben diese Berechtigung nicht, wenden Sie sich bitte an den Administrator!", - "path_is_root_tips" => "Es ist gekommen, um das Root-Verzeichnis!", - "kod_group" => "Organisation", - "my_kod_group" => "Ich bin in der Abteilung", - "space_tips_default" => "(GB) 0 keine Begrenzung", - "space_tips_full" => "Ohne Einschränkung", - "space_size" => "Raum", - "space_size_use" => "Die Nutzung des Raumes", - "space_is_full" => "Es ist nicht mehr genug Platz, bitte kontaktieren Sie den Administrator!", - "system_open_true_path" => "Erfolgreich im Dateimanager geöffnet!", - "group_role_error" => "Rollenberechtigungsfehler (keine Berechtigungseinstellungen)", - "group_role_error_admin" => "Unzureichende Berechtigungen", - "markdown_content" => "Inhaltsverzeichnis", - "system_group" => "Benutzer und Abteilungen", - "system_group_edit" => "Abteilungsleitung", - "system_group_role" => "Rollenidentität", - "system_group_create" => "Neue Abteilung", - "system_group_name" => "Abteilungsname", - "system_group_father" => "Übergeordnete Abteilung", - "system_group_add" => "Unterabteilung hinzufügen", - "system_group_remove" => "Entfernen Sie die Abteilung", - "system_group_remove_tips" => "Sind Sie sicher, die Abteilung zu löschen?
                  Nachdem das Löschen des Teils des Benutzers entfernt wurde, wird der Teilsektor in den Wurzelbereich verschoben", - "system_group_select" => "Wählen Sie Abteilung", - "system_group_select_result" => "Die Mitglieder werden in den folgenden Sektoren gehören", - "system_role_admin_tips" => "Hinweise: Systemadministratoren sind nicht zur Steuerung berechtigt", - "system_member_action" => "Benutzerverwaltung", - "system_member_add" => "Neuer Benutzer", - "system_member_role" => "Berechtigungsrollen", - "system_member_role_select" => "wählen", - "system_member_password_tips" => "Füllen Sie nicht nicht geändert", - "system_set_home_path" => "Benutzerdefinierte Katalog", - "system_set_home_path_tips" => "Das Standardverzeichnis ist leer", - "system_member_group" => "Wo die Abteilung", - "system_member_group_edit" => "Redaktion", - "system_member_remove" => "Benutzer löschen", - "system_member_remove_tips" => "Bestätigen Sie Benutzer löschen?
                  , nachdem Sie das Benutzerverzeichnis zu entfernen wird vollständig gelöscht", - "system_member_set_role" => "die Änderung der ausgewählten Benutzergruppenberechtigungen zu bestätigen?", - "system_member_remove_group" => "Legen Sie den gewählten Benutzer aus dieser Gruppe entfernt werden?", - "system_member_import" => "Bulk hinzufügen", - "system_member_import_desc" => "Ein Benutzer pro Zeile,
                  existieren bereits stillschweigend ignoriert", - "system_member_use" => "ermöglichen", - "system_member_unuse" => "Deaktivieren", - "system_member_space" => "Legen Sie die Größe des Benutzerbereichs fest ", - "system_member_space_tips" => " Legen Sie die Größe des Benutzerbereichs fest ", - "system_member_space_number" => " Muss eine Nummer sein!", - "system_member_group_config" => "Chargeneinstellungsabteilung", - "system_member_group_remove" => "Aus der Abteilung entfernt", - "system_member_group_insert" => "Zur Abteilung hinzufügen", - "system_member_group_reset" => "Setzen Sie die Abteilung zurück", - "system_member_group_error" => "Abteilungsfehler", - "system_group_action" => "Abteilungsleitung", - "system_role_add" => "In Rollenidentität", - "system_role_read" => "Read-only", - "system_role_write" => "Kann lesen und schreiben", - "system_setting_root_path" => "root-Zugriff", - "system_setting_root_path_desc" => "Nur ein Systemadministrator alle Verzeichnisse zugreifen, andere Rechte Benutzergruppen können nur ihre eigenen Benutzerverzeichnis sehen. Wenn Sie ein- oder ausschalten zu anderen Verzeichnissen Zugriff
                  Administrator möchten, können Sie die PHP open_basedir anti-Cross-Site-Parameter ändern,gesetzt", - "system_group_role_title" => "Rollenverwaltung der Abteilungsbehörde", - "system_group_role_remove" => "OK, um die Abteilungsrolle zu löschen", - "system_group_role_style" => "Stil", - "system_group_role_display" => "ob", - "system_group_role_display_desc" => "Festlegen, ob die Benutzerrechte der Abteilung angezeigt werden sollen oder nicht", - "role_type_name_read" => "lesen", - "role_type_name_read:list" => "Dateiliste", - "role_type_name_read:info" => "Datei (Ordner) Eigenschaft Ansicht, Ordnersuche", - "role_type_name_read:copy" => "file Copy", - "role_type_name_read:preview" => "Datei-Vorschau (Bilder, Dokumente, Audio und Video)", - "role_type_name_read:download" => "Datei (Ordner) Download", - "role_type_name_write" => "schreiben", - "role_type_name_write:add" => "Erstellen Sie eine Datei (Ordner), extrahieren Sie die komprimierte Datei", - "role_type_name_write:edit" => "Speichern Sie die Datei bearbeiten", - "role_type_name_write:change" => "Benennen Sie, passen Sie die Verzeichnisstruktur", - "role_type_name_write:upload" => "Datei (Ordner) hoch laden, Remote-Download", - "role_type_name_write:remove" => "Datei (Ordner) löschen, schneiden", - "group_guest" => "Besucher", - "group_guest_desc" => "Sie sind kein Mitglied der Abteilung,
                  Nur der Zugriff auf das freigegebene Verzeichnis der Abteilung [Abteilung] ist mit Lesezugriffsrechten möglich.", - "group_role_lebel_desc" => "Sie sind ein Mitglied dieser Abteilung,
                  Alle Dokumente in der Abteilung Alle Rechte vorbehalten vom Administrator", - "button_save_and_add" => "Speichern und weiter hinzufügen", - "path_cannot_search" => "Das Verzeichnis unterstützt nicht die Suche!", - "not_support" => "Nicht unterstützt!", - "group_not_exist" => "Benutzergruppe existiert nicht!", - "upload_clear_all" => "alle löschen", - "upload_clear" => "Erledigte", - "upload_setting" => "einrichten", - "upload_tips" => "Verwendet Scheibe hoch laden, nicht mehr an der php.ini Grenze; ​​empfohlen Chrom Ordner per Drag & Drop-Upload Erfahrung", - "upload_exist" => "Datei mit dem gleichen Namen", - "upload_exist_rename" => "umbenennen", - "upload_exist_replace" => "Abdeckung", - "upload_exist_skip" => "überspringen", - "upload_add_more" => "Bulk hinzufügen", - "more" => "mehr", - "system_setting" => "Systemeinstellungen", - "openProject" => "Öffnen Sie das Projekt-Editor", - "url_download" => "Herunterladen", - "url_link" => "URL", - "app_type_link" => "Shortcuts", - "createLink" => "Verknüpfung erstellen", - "createLinkHome" => "Gesendet an die Desktop-Verknüpfung", - "createProject" => "Zusätzlich zu den Editor-Projekt", - "only_read" => "Read-only", - "only_read_desc" => "Das Verzeichnis hat keine Schreibrechte
                  Sie können auf dem Server für dieses Verzeichnis Berechtigungen", - "not_read" => "unleserlich", - "explorerNew" => "kod Link", - "zip_download_ready" => "Nach der Komprimierung automatisch warten herunterladen, bitte ...", - "set_background" => "Als Desktop-Wallpaper", - "share" => "Teilen", - "my_share" => "Mein Anteil", - "group_share" => "Gruppen-Außenverteilung", - "share_edit" => "Bearbeiten von Freigabe", - "share_remove" => "Abbrechen teilen", - "share_remove_tips" => "Sind Sie sicher, dass Sie das Teilen abbrechen möchten? Die öffentliche Verbindung wird ungültig.", - "share_path" => "Teilen Sie den Weg", - "share_title" => "Ressourcennutzung", - "share_name" => "Teilen Sie den Titel", - "share_time" => "Ablauf", - "share_time_desc" => "Null ist nicht gesetzt", - "share_password" => "Extract Passwort", - "share_password_desc" => "Leeres Passwort ist nicht gesetzt", - "share_cancle" => "Sperren von", - "share_create" => "Erstellen Sie ein Link", - "share_url" => "Gemeinsame Adress", - "share_not_download" => "Download-Verbot", - "share_not_download_tips" => "Sharer verboten Download!", - "share_code_read" => "Codeleser", - "share_save" => "Konfiguration speichern", - "share_error_param" => "Parameterfehler!", - "share_error_user" => "Benutzerinformationen Fehler!", - "share_error_sid" => "Teilen existiert nicht!", - "share_error_time" => "Sie kommen zu spät, hat sich der Anteil abgelaufen!", - "share_error_path" => "Gemeinsam genutzte Datei nicht existiert, wird sie gelöscht oder entfernt!", - "share_error_password" => "Falsches Passwort!", - "share_error_show_tips" => "Diese Art keine Dateivorschau unterstützen!", - "share_view_num" => "Ansichten:", - "share_download_num" => "Downloads:", - "share_open_page" => "Öffnen Sie die freigegebene Seite", - "open_the_path" => "Geben Sie Verzeichnis", - "recycle_clear" => "Papierkorb leeren", - "recycle_clear_success" => "Papierkorb leeren Erfolg!", - "recycle_clear_info" => "Sind Sie sicher, dass Sie den Müll vollständig leer wollen?", - "fav_remove" => "Brechen Sie die Sammlung", - "remove_item" => "Artikel", - "uploading" => "Hochladen", - "upload_tips_more" => "Zu viele Dateien, die Empfehlung des komprimierten hoch laden, dann Online entpacken!", - "uploading_move" => "In der Zusammenführungsübertragung ...", - "show_file" => "Neue Seite Vorschau", - "unknow_file_title" => "Datei öffnen Tipp!", - "unknow_file_tips" => "Haben Sie nicht die Anwendung dieser Datei unterstützen, können Sie:", - "unknow_file_try" => "versuchen", - "unknow_file_download" => "Laden Sie die Datei", - "unknow_plugin_search" => "Suchbezogene Anwendungen installiert", - "config_save_error_auth" => "Konnte die Konfiguration zu speichern, verbot der Administrator dieses Privileg!", - "config_save_error_file" => "Fehler, Datei nicht beschreibbar!", - "beautify_code" => "Code Formatter", - "convert_case" => "Schreibweise", - "convert_upper_case" => "In Großbuchstaben umgewandelt", - "convert_lower_case" => "In Kleinbuchstaben umgewandelt", - "editor_insert_time" => "Aktuelle Uhrzeit ", - "editor_md5" => " Md5-Verschlüsselung ", - "editor_qrcode" => " String zweidimensionaler Code ", - "editor_regx" => " Regulärer Ausdruckstest ", - "editor_chinese" => " Vereinfachte Konvertierung ", - "editor_chinese_simple" => " In vereinfachtes Chinesisch konvertieren ", - "editor_chinese_traditional" => " In traditionelles Chinesisch umwandeln ", - "editor_base64" => "Base64-Codec ", - "editor_base64_encode" => " Base64-Codierung ", - "editor_base64_decode" => " Base64-Decodierung ", - "editor_url" => " URL-Codec ", - "editor_url_encode" => " URL-Codierung ", - "editor_url_decode" => " URL-Dekodierung ", - "editor_unicode" => " Unicode-Codec ", - "editor_unicode_encode" => " Unicode-Codierung ", - "editor_unicode_decode" => " Unicode-Decodierung", - "editor_tools_select_tips" => " Bitte wählen Sie den Inhalt, den Sie konvertieren möchten!", - "editor_calc" => "Kostenloser Rechner", - "shortcut" => "Shortcuts", - "use_free" => "Weiter die kostenlose Version zu verwenden", - "learn_more" => "Erfahren Sie mehr", - "replace" => "ersetzen", - "selectAll" => "wählen", - "reload" => "nachladen", - "about" => "auf", - "complete_current" => "Auto-Vervollständigung des aktuellen", - "view" => "Ansicht", - "tools" => "Werkzeug", - "help" => "Hilfe", - "not_exists" => "Existiert nicht", - "group_role_fileDownload" => "Downloads", - "group_role_share" => "Aktie", - "users_share" => "Gemeinsame Nutzung", - "system_setting_save" => "Sicherheitseinstellungen", - "system_setting_menu" => "Menu Management", - "system_name" => "Programmname", - "system_name_desc" => "Programm Logo Titel", - "system_desc" => "Programmbeschreibung", - "path_hidden" => "Directory-Ausschlüsse", - "version_not_support" => "Ihre Version unterstützt dies nicht, gehen Sie bitte auf der offiziellen Website die erweiterte Version zu kaufen!", - "version_not_support_number" => "Da die Zahl der Einschränkung nicht unterstützt diese Operation, kaufen Sie bitte die erweiterte Version der offiziellen Website!", - "path_hidden_desc" => "Verzeichnisse und Dateien standardmäßig nicht angezeigt durch Komma getrennt", - "new_user_folder" => "Der neue Benutzer wird durch Standardverzeichnis erstellt", - "new_user_folder_desc" => "Durch Komma getrennt", - "new_user_app" => "Der neue Benutzer wird durch Standard-App erstellt", - "new_user_app_desc" => "Anwendungen Application Center, eine Vielzahl von durch Komma getrennt", - "auto_login" => "Besucher die automatische Anmeldung", - "auto_login_desc" => "Die Standard-Login-Benutzerguest/guestBenutzer, nach dem Öffnen, um sicherzustellen, dass der Benutzer vorhanden ist", - "first_in" => "Nachdem in den Standardprotokollierung", - "version_price_free" => "kostenlos", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Verzeichnis ist nicht beschreibbar, setzen Sie das Verzeichnis und alle Unterverzeichnisse zu versuchen Sie es erneut, nachdem die Schreib-Lese-!", - "menu_name" => "Menüname", - "menu_hidden" => "verstecken", - "menu_show" => "Anzeige", - "menu_move_down" => "nach unten", - "menu_move_up" => "nach oben", - "menu_move_del" => "löschen", - "menu_open_window" => "Öffnen Sie ein neues Fenster", - "menu_sub_menu" => "Untermenü", - "url_path" => "uRL-Adresse", - "url_path_desc" => "URL-Adresse oder js Code", - "no_permission_read" => "Sie haben keine Berechtigung zum Lesen!", - "no_permission_download" => "Sie haben keine Berechtigung zum Download!", - "php_env_check" => "Betriebsumgebung Überwachung:", - "php_env_error" => "Php-Bibliothek fehlt", - "php_env_error_ignore" => "Ignorieren und geben Sie", - "php_env_error_version" => "PHP-Version kann nicht weniger als 5,0", - "php_env_error_path" => "Nicht beschreibbar", - "php_env_error_list_dir" => "Ihr Web-Server die Verzeichnisliste Funktion aus Sicherheitsgründen nicht geöffnet wird, deaktivieren Sie diese Funktion!wie?", - "php_env_error_gd" => "Php GD-Bibliothek sollte offen sein, sonst wird der Code, die Miniaturansicht verwenden, nicht richtig funktionieren", - "install_login" => "Sie können das folgende Konto Login verwenden", - "install_enter" => "das System", - "install_user_default" => "Administrator: {0} / (unten, um ein Passwort festgelegt)
                  Durchschnittliche User: {1}
                  Gastbenutzer: {2}", - "login_root_password" => "Legen Sie das Administratorkennwort", - "login_root_password_repeat" => "Bestätigen Sie wieder Kennwort", - "login_root_password_equal" => "Die beiden Passwörter stimmen nicht überein!", - "login_root_password_tips" => "Legen Sie ein Administratorpasswort!", - "forget_password" => "Passwort vergessen", - "forget_password_tips" => "Passwort Administrator-Passwort:
                  Bitte melden Sie sich Server löschen ./data/system/install.lock zurückgesetzt;

                  Nicht-Administrator Passwort vergessen:
                  Bitte kontaktieren Sie den Administrator zurücksetzen!", - "copyright_desc" => "Kodexplorer ist ein hoch gelobten Web-Dokumenten-Management-System, können Sie es für die interne Dokumentenmanagement nutzen können oder gemeinsam genutzt, können auch auf der Site-Management-Server verwendet werden, ersetzen FTP-, auch als webIDE online Entwicklung. Sie können auch die zweite Entwicklung programmieren diese in Ihre bestehenden Systeme zu integrieren.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango Wolke • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango Wolke • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webos, webIDE, php filemanage, filemanage, Dao Wolke, Wolke Mango, Dokumenten-Management-Systeme, Enterprise-Cloud-Disk, Explorer ,, Online-Dokumentation, Online-Büro, Online-Office, Online-CAD-Vorschau, die Online-Bearbeitung Der Online-Editor", - "kod_meta_description" => "KodExplorer kann Straße Wolke (ehemals Mango Wolke) ist ein führender Anbieter von Regierung / corporate privaten Clouds und Online-Dokumenten-Management-System für persönliche Websites, Enterprise Private Cloud-Implementierungen, Netzwerkspeicher, Online-Dokumenten-Management, Online-Office sicher und bieten kontrollierte, einfach und leicht Verwendung, private Cloud-Produkte angepasst. Mit Windows-Stil-Schnittstelle, Betriebspraktiken, ohne schnell gestartet anpassen lassen, unterstützen Hunderte von populären Online-Vorschau-Dateiformat, Wiedergabe und Bearbeitung umweltfreundlich, leistungsstark, ist ein einmal Versuch, nicht mehr zu trennen von den privaten Cloud-Angebote.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "einloggen", - "guest_login" => "Gast Login", - "username" => "Anmeldekonto", - "userNickName" => "Benutzer-Nickname", - "password" => "Kennwort", - "login_code" => "Codes", - "need_check_code" => "Anmeldung Authentifizierungscode geöffnet", - "need_check_code_desc" => "Nach dem Anmelden müssen Sie den Bestätigungscode eingeben.", - "setting_csrf_protect" => "Öffnen csrf Schutz", - "setting_csrf_protect_desc" => "Nach dem Öffnen Art des Angriffs kann effektiv schützen csrf", - "login_rember_password" => "Passwort speichern", - "setting_show_root_group" => "Alle Abteilungen auflisten", - "setting_show_root_group_desc" => "Stammverzeichnis des Baumverzeichnisses, ob alle Abteilungen aufgelistet werden sollen", - "setting_show_share_user" => "Eine Liste aller Benutzer", - "setting_show_share_user_desc" => "Die Root-Abteilung des Baumverzeichnisses wird für alle Benutzerfreigaben aufgelistet.", - "setting_clear_user_recycle" => "Leeren Sie den Papierkorb für alle Benutzer", - "setting_clear_cache" => "Leeren Sie den Cache", - "setting_icp" => "Copyright oder Datensatznummer", - "setting_global_css" => "Benutzerdefinierte globale CSS", - "setting_global_css_desc" => "Alle Seiten werden benutzerdefinierte CSS einfügen", - "setting_global_html" => "Statistische HTML-Code", - "setting_global_html_desc" => "Alle Seiten werden in diesem Absatz HTML-Code eingefügt werden, kann der Code von Drittanbietern Statistiken platziert werden", - "us" => "kodcloud.com", - "login_not_null" => "Benutzername und Passwort darf nicht leer sein!", - "code_error" => "Fehlercodes", - "password_error" => "Benutzername oder Passwort falsch!", - "password_not_null" => "Das Passwort darf nicht leer sein!", - "old_password_error" => "Altes Passwort ist falsch!", - "permission" => "Die Erlaubnis!", - "permission_edit" => "ändern von Berechtigungen", - "file_info_owner" => "Inhaber", - "file_info_group" => "Gruppe", - "no_permission" => "Administrator hat diese Berechtigung deaktiviert!", - "no_permission_ext" => "Administrator verboten, diese Art von Dateiberechtigungen", - "dialog_max" => "maximieren", - "dialog_min" => "minimieren", - "dialog_min_all" => "Minimieren Sie alle", - "dialog_display_all" => "Alle Fenster", - "dialog_close_all" => "Schließen Sie alle", - "open" => "geöffnet", - "others" => "andere", - "open_with" => "Offen für ...", - "close" => "schließen", - "close_all" => "Schließen Sie alle", - "close_left" => "Schließen Sie die linke Lasche", - "close_right" => "Tabs schließen nach rechts", - "close_others" => "Schließen Andere", - "loading" => "Der Betrieb ...", - "warning" => "Warnung", - "getting" => "Holen Sie sich das ...", - "sending" => "Die Datenübertragung ...", - "data_error" => "Datenfehler!", - "get_success" => "Holen Sie Erfolg!", - "save_success" => "Erfolgreich gespeichert!", - "success" => "Der erfolgreiche Betrieb", - "error" => "Der Vorgang ist fehlgeschlagen", - "error_repeat" => "Der Vorgang ist fehlgeschlagen, existiert der Name schon!", - "word_error" => "Fehlgeschlagen ", - "word_success" => " Erfolg", - "system_error" => "Systemfehler", - "name" => "Name", - "type" => "Typ", - "contain" => "enthalten", - "address" => "Lage", - "size" => "Größe", - "byte" => "Byte", - "path" => "Weg", - "action" => "Betriebs-", - "create_time" => "Erstellt", - "modify_time" => "Geändert", - "last_time" => "Letzter Besuch", - "sort_type" => "Sortieren nach", - "time_type" => "d/m/Y H:i:s", - "time_type_info" => "d/m/Y H:i:s", - "public_path" => "Öffentliches Verzeichnis", - "system_path_not_change" => "Systemverzeichnis, können nicht geändert werden", - "file" => "Datei", - "folder" => "Mappe", - "copy" => "Kopie", - "past" => "Stock", - "clone" => "Erstellen Sie eine Kopie", - "cute" => "scheren", - "cute_to" => "Gehen Sie zu ...", - "copy_to" => "Kopieren in ...", - "remove" => "löschen", - "remove_force" => "entfernen Sie vollständig", - "info" => "Immobilien", - "list_type" => "Ansicht", - "list_icon" => "Icon-Array", - "list_list" => "Liste Anordnung", - "list_list_split" => "Column-Modus", - "sort_up" => "Zuwachs", - "sort_down" => "abnehmend", - "order_type" => "Sortieren nach", - "order_desc" => "absteigend", - "order_asc" => "aufsteigend", - "rename" => "umbenennen", - "add_to_fav" => "Zu Favoriten hinzufügen", - "search_in_path" => "Ordnersuche", - "add_to_play" => "Zur Playlist hinzufügen", - "manage_fav" => "Favoriten verwalten", - "refresh_tree" => "Aktualisieren Verzeichnisbaum", - "manage_folder" => "Directory Management", - "close_menu" => "Menü schließen", - "zip" => "Erstellen Sie ein komprimiertes Paket", - "unzip" => "So extrahieren ...", - "unzip_folder" => "Entpacken in einen Ordner", - "unzip_this" => "Auszug der aktuellen", - "unzip_to" => "So extrahieren ...", - "zipview_file_big" => "Die Datei ist zu groß, und extrahieren Sie die Vorschau-Betrieb!", - "clipboard" => "Ansicht Zwischenablage", - "clipboard_clear" => "leere Zwischenablage", - "full_screen" => "Full Screen", - "folder_info_item" => "Artikel", - "folder_info_item_select" => "Eine ausgewählte", - "file_load_all" => "Doppelklicken Sie auf alle zu laden ......", - "tips" => "Prompt", - "ziping" => "Zipping ...", - "unziping" => "Extrahieren ...", - "moving" => "Mobile Bedienung ...", - "remove_title" => "löschen Bestätigung", - "remove_info" => "Bestätigen Sie das ausgewählte Element zu löschen?", - "remove_title_force" => "Endgültig gelöschte", - "remove_info_force" => "Sie sicher, dass Sie dauerhaft dieses Dokument löschen?", - "name_isexists" => "Falsch, existiert der Name schon!", - "install" => "installieren", - "width" => "Breite", - "height" => "hoch", - "app" => "Lichtanwendungen", - "app_store" => "Lichtanwendungen", - "app_create" => "Anwendung erstellen", - "app_edit" => "Ändern Sie die Anwendung", - "app_group_all" => "komplett", - "app_group_game" => "Spiel", - "app_group_tools" => "Werkzeug", - "app_group_reader" => "lesen", - "app_group_movie" => "Fernsehen", - "app_group_music" => "Musik", - "app_group_life" => "Leben", - "app_group_others" => "andere", - "app_desc" => "Beschreibung", - "app_icon" => "Anwendungssymbol", - "app_icon_show" => "URL-Adresse oder das Verzeichnis", - "app_group" => "Anwendung Packet", - "app_type" => "Typ", - "app_type_url" => "Link", - "app_type_code" => "js Erweiterung", - "app_display" => "äußere", - "app_display_border" => "Ohne Grenzen (dh wählen randlos)", - "app_display_size" => "Resize (Überprüfen Einstellung)", - "app_size" => "Größe", - "app_url" => "Link-Adresse", - "app_code" => "js Code", - "edit" => "bearbeiten", - "edit_can_not" => "Nicht eine Textdatei", - "edit_too_big" => "Datei zu groß ist, kann sie nicht größer sein als 40M", - "open_default" => "Standard öffnen", - "open_ie" => "Öffnen Sie den Browser", - "refresh" => "auffrischen", - "refresh_all" => "Zwingen Sie eine Aktualisierung", - "newfile" => "Neue Datei", - "newfile_save_as" => "Sparen Sie bis zu", - "newfolder" => "Neuer Ordner", - "newothers" => "Neu Andere", - "path_loading" => "Wird geladen ...", - "go" => "Gehen Sie!", - "go_up" => "Die obere Schicht", - "history_next" => "vorwärts", - "history_back" => "Rückzug", - "address_in_edit" => "Klicken Sie auf den Bearbeitungsmodus aufzurufen", - "double_click_rename" => "Doppelklicken Sie auf das Umbenennen", - "double_click_open" => "Doppelklick öffnen", - "path_null" => "Ordner ist leer!", - "file_size_title" => "Symbolgröße", - "file_size_small_super" => "Ultra-kleine", - "file_size_small" => "Kleine Symbole", - "file_size_default" => "Icons", - "file_size_big" => "Große Symbole", - "file_size_big_super" => "Große Symbole", - "upload" => "hochladen", - "upload_ready" => "Warten auf Upload", - "upload_success" => "Upload erfolgreich", - "upload_path_current" => "Wechseln Sie in das aktuelle Verzeichnis", - "upload_select" => "Wählen Sie Datei", - "upload_max_size" => "Die maximal zulässige", - "upload_size_info" => "Wenn Sie mehr konfigurieren möchten, ändern Sie bitte php.ini maximal zulässige Upload. Wenn Sie eine Datei größer als dieser Konfiguration auswählen, wird automatisch herausfiltern.", - "upload_error" => "Upload fehlgeschlagen", - "upload_error_http" => "Netzwerk- oder Firewall-Fehler", - "upload_muti" => "Multi-Datei-Upload", - "upload_drag" => "Drag-and-Drop-Upload", - "upload_drag_tips" => "Lösen Sie hochladen!", - "path_not_allow" => "Dateiname nicht erlaubt", - "download" => "Herunterladen", - "downloading" => "Wird geladen ...", - "download_address" => "Herunterladen", - "download_ready" => "Wird heruntergeladen", - "download_success" => "Download Success!", - "download_error" => "Download fehlgeschlagen!", - "download_error_create" => "Schreibfehler!", - "download_error_exists" => "Link zur Datei fehlgeschlagen!", - "upload_error_null" => "Keine Datei!", - "upload_error_big" => "Dateigröße überschreitet Server Grenzen", - "upload_error_move" => "Datei konnte nicht bewegen!", - "upload_error_exists" => "Die Datei existiert bereits", - "upload_local" => "Lokale hochladen", - "download_from_server" => "Remote Download", - "save_path" => "Save Path", - "upload_select_muti" => "Eine Vielzahl von wählbaren Datei-Upload", - "search" => "Suche", - "searching" => "Suche ...", - "search_result" => "Suchergebnisse", - "seach_result_too_more" => "Zu viele Suchergebnisse, wird es für ein Verzeichnis oder Worte empfohlen", - "search_null" => "Keine Ergebnisse!", - "search_uplow" => "Groß- und Kleinschreibung", - "search_content" => "Suchen Sie Dateiinhalte", - "search_info" => "Bitte geben Sie einen Suchbegriff und Suchpfade!", - "search_ext_tips" => "Durch | getrennt, zB php | js | css
                  füllen Sie nicht die Standard-Textdatei suchen", - "file_type" => "Dateityp", - "goto" => "Wechseln zu", - "server_dwonload_desc" => "Aufgabe war es, die Download-Liste hinzugefügt", - "parent_permission" => "Übergeordnete Verzeichnisberechtigungen", - "root_path" => "My Documents", - "lib" => "Lagerhaus", - "fav" => "Lesezeichen", - "desktop" => "Desktop-", - "browser" => "Browser", - "my_computer" => "Arbeitsplatz", - "recycle" => "Müll", - "my_document" => "My Documents", - "my_picture" => "Meine Fotos", - "my_music" => "Meine Musik", - "my_movie" => "Meine Videos", - "my_download" => "Meine Downloads", - "ui_desktop" => "Desktop-", - "ui_explorer" => "Dateiverwaltung", - "ui_editor" => "Editor", - "adminer" => "Adminer", - "ui_project_home" => "Projekt Startseite", - "ui_login" => "einloggen", - "ui_logout" => "verlassen", - "setting" => "Systemeinstellungen", - "setting_title" => "Optionen", - "setting_user" => "Personal-Center", - "setting_password" => "Kennwort ändern", - "setting_password_old" => "Altes Kennwort", - "setting_password_new" => "revidiert", - "setting_language" => "Spracheinstellungen", - "setting_member" => "Benutzerverwaltung", - "setting_group" => "Verwaltung von Benutzergruppen", - "setting_group_add" => "Benutzergruppe hinzufügen", - "setting_group_edit" => "Bearbeiten von Benutzergruppen", - "setting_theme" => "Design-Einstellungen", - "setting_wall" => "Hintergrundeinstellungen", - "setting_wall_desktop" => "Desktop-Hintergrund", - "setting_wall_desktop_list" => "Desktop-Hintergrundverwaltung", - "setting_wall_login_list" => "Anmeldung Wallpaper Management", - "setting_wall_login_tips" => "Tipp: Wenn es mehr als ein Stück gibt, wird der Hintergrund der Login-Oberfläche zufällig rotieren", - "setting_wall_diy" => "Kundenspezifische Tapete:", - "setting_wall_info" => "Bild-URL-Adresse können die lokalen Bilder sein Recht, den Browser zu bekommen Bild zu öffnen", - "setting_fav" => "Lesezeichen-Manager", - "setting_help" => "Mit Hilfe", - "setting_about" => "Über Werke", - "setting_success" => "Änderung wirksam geworden ist!", - "can_not_repeat" => "Nicht erlaubt zu wiederholen", - "absolute_path" => "Absolute Adresse", - "group" => "Benutzergruppen", - "data_not_full" => "Übermittelten Daten unvollständig!", - "default_user_can_not_do" => "Der Standardbenutzer kann nicht arbeiten,", - "default_group_can_not_do" => "Standard-Benutzergruppen können nicht arbeiten", - "username_can_not_null" => "Benutzername darf nicht leer sein!", - "groupname_can_not_null" => "Benutzergruppenname kann nicht leer sein!", - "groupdesc_can_not_null" => "User Group Beschreibung darf nicht leer sein!", - "group_move_user_error" => "User Group Benutzer bewegen gescheitert", - "group_already_remove" => "Die Benutzergruppe wurde gelöscht", - "group_not_exists" => "Diese Benutzergruppe existiert nicht", - "member_add" => "Benutzer hinzufügen", - "password_null_not_update" => "Sie sagten, sie haben nicht das Passwort zu ändern ist nicht gefüllt", - "if_save_file_tips" => "Einige Dateien werden nicht gespeichert Schließen Sie das Fenster wirklich?", - "if_save_file" => "Datei nicht gespeichert wurde, wollen Sie sparen?", - "if_remove" => "Bestätigen löschen", - "member_remove_tips" => "Nachdem Sie das Benutzerverzeichnis entfernen wird gelöscht", - "group_remove_tips" => "Nachdem Sie die Benutzergruppe der Benutzer entfernen können nicht log
                  (müssen neu eingestellt Benutzergruppe)", - "group_name" => "Benutzergruppe", - "group_name_tips" => "Empfehlung englischen Namen, kann nicht wiederholt werden", - "group_desc" => "Anzeigename", - "group_desc_tips" => "Gruppenname Beschreibung", - "group_role_ext" => "Erweiterung Einschränkungen", - "group_role_ext_tips" => "Mit mehreren | getrennt", - "group_role_file" => "Dateiverwaltung", - "group_role_upload" => "Upload zulassen", - "group_role_user" => "Benutzerdaten", - "group_role_group" => "Verwaltung von Benutzergruppen", - "group_role_member" => "Benutzerverwaltung", - "group_role_mkfile" => "Neue Datei", - "group_role_mkdir" => "Neuer Ordner", - "group_role_pathrname" => "umbenennen", - "group_role_pathdelete" => "Datei-Löschung", - "group_role_pathinfo" => "Dateieigenschaften", - "group_role_pathmove" => "Move (Kopieren / Ausschneiden / Einfügen / Drag-Operation)", - "group_role_zip" => "Kompression", - "group_role_unzip" => "Dekomprimieren", - "group_role_search" => "Suche", - "group_role_filesave" => "Speichern Sie die Datei zu bearbeiten", - "group_role_can_upload" => "Hochladen und Herunterladen", - "group_role_download" => "Remote Download", - "group_role_passowrd" => "Kennwort ändern", - "group_role_config" => "Konfigurationsdaten", - "group_role_fav" => "Lesezeichen Operationen (Hinzufügen / Bearbeiten / Löschen)", - "action_list" => "Listenansicht", - "action_add" => "hinzufügen", - "action_edit" => "bearbeiten", - "action_del" => "löschen", - "group_role_ext_warning" => "Hochladen erlauben solche Dateien nicht,
                  Umbenennen (zu der angegebenen Erweiterung umbenannt),
                  speichern, remote herunterladen, bearbeiten Extrakt", - "group_tips" => "
                • 1. Der Name der Benutzergruppe kann nicht dupliziert werden.Nachdem der Gruppenname geändert wurde, gehört er dem reorganisierten Benutzer und wird automatisch zugeordnet.
                • 2. Erweiterungen begrenzen die Beziehung zwischen der Systemsicherheit, seien Sie vorsichtig (wenn Sie ein neues PHP im Web-Verzeichnis erstellen; dies bedeutet, dass es praktisch unmöglich ist, die Berechtigungen des Programms für diesen Benutzer zu ändern)
                • 3. Haushaltsführung, Rechtegruppenverwaltung, Anzeigen von Rechten und Hinzufügen, Löschen und Ändern von Rechten sind gebunden, Programme werden automatisch zugeordnet
                • 4. Nachdem die Berechtigungsgruppe zum Hinzufügen der Berechtigungsgruppe festgelegt wurde, wird die nachfolgende Berechtigung nicht vererbt (diese Berechtigung entspricht der höchsten Berechtigung).
                • ", - "not_null" => "Erforderliche Felder darf nicht leer sein!", - "picture_can_not_null" => "Fotos können nicht leer sein!", - "rname_success" => "Benennen Sie Erfolg!", - "please_inpute_search_words" => "Bitte geben Sie eine Zeichenfolge zu suchen", - "remove_success" => "Gelöschte erfolgreich!", - "remove_fali" => "Löschen fehlgeschlagen!", - "clipboard_null" => "Zwischenablage ist leer!", - "create_success" => "Neuer Erfolg!", - "create_error" => "New ausfällt, die Verzeichnisberechtigungen überprüfen!", - "copy_success" => "[Kopie] - Abdeckung Zwischenablage Erfolg!", - "cute_success" => "[Cut] - Abdeckung Zwischenablage Erfolg!", - "clipboard_state" => "Zwischenablage-Status:", - "no_permission_write_all" => "Die Datei oder das Verzeichnis ist nicht beschreibbar", - "no_permission_write_file" => "Die Datei hat keine Schreibberechtigung", - "no_permission_read_all" => "Die Datei oder das Verzeichnis hat keine Leseberechtigung", - "copy_not_exists" => "Quelle existiert nicht", - "current_has_parent" => "Zielordner ist ein Unterordner des Quellordners!", - "past_success" => "Paste Vorgang abgeschlossen", - "cute_past_success" => "Schneidevorgang abgeschlossen ist(Quelldatei gelöscht wird, die Zwischenablage leer)", - "zip_success" => "Komprimierung abgeschlossen", - "not_zip" => "Nicht-Archiv", - "zip_null" => "Nicht ausgewählte Datei oder ein Verzeichnis", - "unzip_success" => "Dekomprimieren komplett", - "gotoline" => "Wechseln zu der Linie", - "path_is_current" => "Der Pfad und der Strompfad gleich zu öffnen!", - "path_exists" => "Der Name existiert bereits!", - "undo" => "Widerruf", - "redo" => "Anti Widerruf", - "preview" => "Vorschau", - "wordwrap" => "einwickeln", - "show_gutter" => "Zeilennummern anzeigen", - "char_all_display" => "Zeigen unsichtbare Zeichen", - "auto_complete" => "automatisch fordert", - "auto_save" => "Automatisch speichern", - "function_list" => "Funktionsliste", - "code_theme" => "Coding-Style", - "font_size" => "Schriftgröße", - "confirm" => "Bist du sicher, dass du das machen willst?", - "button_ok" => "bestimmen", - "button_submit" => "einreichen", - "button_set" => "einrichten", - "button_cancel" => "annulliert", - "button_edit" => "bearbeiten", - "button_save" => "Speichern", - "button_apply" => "Bewerben", - "button_save_all" => "Alle speichern", - "button_not_save" => "Nicht speichern", - "button_add" => "hinzufügen", - "button_back_add" => "Zurück zu hinzufügen", - "button_del" => "löschen", - "button_save_edit" => "Änderungen speichern", - "button_save_submit" => "speichern Senden", - "button_more" => "mehr", - "button_select_all" => "Alles auswählen / Auswahl umkehren", - "charset_AUTO" => "Automatische Identifizierung", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Arabisch", - "charset_ISO_8859_6" => "Arabisch", - "charset_ISO_8859_10" => "nordische Sprachen", - "charset_CP1257" => "baltische Sprachen", - "charset_ISO_8859_13" => "baltische Sprachen", - "charset_ISO_8859_4" => "baltische Sprachen", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgisch", - "charset_PT154" => "Kasachisch", - "charset_CP949" => "Koreanisch", - "charset_EUC_KR" => "Koreanisch", - "charset_GB18030" => "vereinfachtes Chinesisch", - "charset_GBK" => "vereinfachtes Chinesisch", - "charset_ISO_8859_14" => "keltisch", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "Rumänisch", - "charset_ISO_8859_3" => "Südeuropäische", - "charset_EUC_JP" => "Japanisch", - "charset_ISO_2022_JP" => "Japanisch", - "charset_SHIFT_JIS" => "Japanisch", - "charset_KOI8_T" => "tadschikische Sprache", - "charset_ISO_8859_11" => "thailändisch", - "charset_TIS_620" => "thailändisch", - "charset_CP1254" => "Türkisch", - "charset_CP1251" => "kyrillisch", - "charset_ISO_8859_5" => "kyrillisch", - "charset_KOI8_R" => "kyrillisch", - "charset_KOI8_U" => "kyrillisch", - "charset_CP1252" => "Westeuropäische Sprachen", - "charset_ISO_8859_1" => "Westeuropäische Sprachen", - "charset_ISO_8859_15" => "Westeuropäische Sprachen", - "charset_Macintosh" => "Westeuropäische Sprachen", - "charset_CP1255" => "Hebräisch", - "charset_ISO_8859_8" => "Hebräisch", - "charset_CP1253" => "Griechisch", - "charset_ISO_8859_7" => "Griechisch", - "charset_ARMSCII_8" => "Armenisch", - "charset_CP1258" => "Vietnamesisch", - "charset_VISCII" => "Vietnamesisch", - "charset_CP1250" => "Mitteleuropäische Sprachen", - "charset_ISO_8859_2" => "Mitteleuropäische Sprachen", - "charset_default_set" => "Datei-Codierung", - "charset_convert_save" => "Speichern Sie die Datei kodiert", - "PluginCenter" => "Plug Mittel", - "PluginBuy" => "Kaufgenehmigung", - "PluginInstalled" => "Ist installiert", - "PluginUpdate" => "Aktualisierung", - "PluginListNull" => "Es gibt keinen Inhalt!", - "PluginType" => "Einstufung", - "PluginTypeAll" => "komplett", - "PluginTypeFile" => "verbesserte Datei", - "PluginTypeSafe" => "Sicherheits-tools", - "PluginTypeTools" => "Dienstprogramm", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "andere", - "PluginInstall" => "installieren Stecker", - "PluginEnable" => "Plug-ins aktivieren", - "PluginDisable" => "deaktivieren", - "PluginRemove" => "Deinstallieren der Stecker", - "PluginConfig" => "Konfigurieren Sie das Plugin", - "PluginStatus" => "Zustand", - "PluginStatusEnabled" => "aktiviert", - "PluginStatusDisabled" => "nicht aktiviert", - "PluginStatusNotInstall" => "nicht installiert", - "PluginInstalling" => "Installation ...", - "PluginHasUpdate" => "Updates", - "PluginUpdateStart" => "Update-Plug-in", - "PluginNeedConfig" => "Die Notwendigkeit, die ursprüngliche Konfiguration zu ermöglichen,", - "PluginConfigNotNull" => "Erforderliche Felder dürfen nicht leer sein!", - "PluginOpen" => "geöffnet", - "PluginAuther" => "Autor", - "PluginVersion" => "Ausgabe", - "PluginDownloadNumber" => "installiert", - "PluginBack" => "Rückkehr", - "PluginReadme" => "Beschreibung", - "PluginResetConfig" => "Stellen Sie die Standardeinstellungen wieder her", - "PluginInstallSelf" => "Manuelle Installation", - "Plugin.config.auth" => "Berechtigungen", - "Plugin.config.authDesc" => "Alle der verfügbaren Einstellungen oder geben Sie Benutzer, Benutzergruppen, können Rechtsgruppen verwenden", - "Plugin.config.authOpen" => "Offener Zugang", - "Plugin.config.authOpenDesc" => "Kein Besuch muss aufgerufen werden, kann für externe Schnittstellenanrufe verwendet werden", - "Plugin.config.authAll" => "Halter", - "Plugin.config.authUser" => "Benutzer", - "Plugin.config.authGroup" => "Benannte Abteilung", - "Plugin.config.authRole" => "Rechtsgruppe", - "Plugin.Config.openWith" => "Open-Style", - "Plugin.Config.openWithDilog" => "interner Dialog", - "Plugin.Config.openWithWindow" => "Die neue Seite öffnet", - "Plugin.Config.fileSort" => "Erweiterung Verein Priorität", - "Plugin.Config.fileSortDesc" => "Je größer die Erweiterung höhere Priorität zu öffnen", - "Plugin.Config.fileExt" => "Unterstützte Dateiformate", - "Plugin.Config.fileExtDesc" => "Assoziierte Erweiterung des Plug-in", - "Plugin.tab.basic" => "Grundeinstellungen", - "Plugin.tab.auth" => "Berechtigungen", - "Plugin.tab.others" => "Weitere Einstellungen", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Webseitenvorschau", - "Plugin.default.picasa" => "Picasa Bild-Browsing", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "JPlayer Spieler", - "Plugin.auth.viewList" => "Plugin-Liste", - "Plugin.auth.setting" => "Plugin-Einstellungen", - "Plugin.auth.status" => "Abschalten", - "Plugin.auth.install" => "Installieren / Deinstallieren", - "Explorer.UI.openWith" => "wählen Sie Öffnen", - "Explorer.UI.openWithText" => "Notepad zu öffnen", - "Explorer.UI.appSetDefault" => "Legen Sie den Standard geöffnet", - "Explorer.UI.appAwaysOpen" => "Verwenden Sie immer das ausgewählte Programm diese Datei zu öffnen", - "Explorer.UI.selectAppDesc" => "Wählen Sie das gewünschte Programm diese Datei öffnen", - "Explorer.UI.selectAppWarning" => "Bitte wählen Sie die Anwendung!", - "Explorer.UI.appTypeSupport" => "Unterstützt", - "Explorer.UI.appTypeAll" => "Alle Anwendungen", - "kodApp.oexe.edit" => "Bearbeiten Sie die Lichtanwendung", - "kodApp.oexe.open" => "Öffnen Sie die Anwendung von Licht" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/el/about.html b/plugin/document/kod/config/i18n/el/about.html deleted file mode 100644 index 346794b64..000000000 --- a/plugin/document/kod/config/i18n/el/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer IS τι;
                  -

                  KODExplorer είναι ένα open source Web-based διαχείριση ηλεκτρονικό έγγραφο, πρόγραμμα επεξεργασίας κώδικα. Παρέχει ένα είδος κλασικού παράθυρα διεπαφή χρήστη, ένα σύνολο σε απευθείας σύνδεση διαχείριση εγγράφων, προεπισκόπηση του αρχείου, να επεξεργαστείτε, να φορτώσετε, να κατεβάσετε, αποσυμπιέστε σε απευθείας αναπαραγωγή μουσικής. Σας επιτρέπει να επιτύχουμε την ανάπτυξη web απευθείας στο πρόγραμμα περιήγησης, πηγαίο κώδικα προεπισκόπηση του αρχείου, και να αναπτύξετε τον ιδιοκτήτη της ιστοσελίδας και την τοπική λειτουργία τόσο εύκολη, γρήγορη και ασφαλή εμπειρία.

                  -

                  - σχεδιασμός -

                  -

                  κλασική παράδοση, η επιδίωξη της καινοτομίας, να παρέχει στους χρήστες εύκολη, ασφαλής και εύκολη στη χρήση online σύστημα διαχείρισης σύννεφο.

                  -

                  κάθε φορά (όταν), όπου (όπου), έχει το διαδίκτυο όποτε θέλετε (θέλετε) είναι εργαλείο διαχείρισης σας (4W πολιτική).

                  -

                  - προσανατολισμένη προς τον χρήστη -

                  -

                  σήμερα σύστημα διαχείρισης KODExplorer βρίσκονται κυρίως στην φιλοξενία προσωπική σύννεφο, μικρό επιχείρησης cloud πόρων, διαχείρισης δίσκου δικτύου, η διαχείριση των μικρών και μεσαίων χώρων. Web Developer & Master (βετεράνων): online πρόγραμμα επεξεργασίας, συμπιεσμένα backup, εγκατάσταση, κλασική λειτουργία παράθυρα interface, εύκολο να ξεκινήσετε και να απαλλαγούμε από το SSH υποδοχής, εντολή ftp συγκρότημα γεωτρήσεις.

                  -

                  προσωπική private cloud (rookie): πόροι δίσκο του δικτύου διαχείρισης, η ίδια λειτουργία κλασικά παράθυρα interface, μπορείτε να τοποθετήσετε τη μονάδα δίσκου μουσική περιήγηση δικτύου, τα αρχεία οθόνη, μεταφόρτωση και τη λήψη γρήγορη και εύκολη.

                  -
                  - -
                  -
                  Χαρακτηριστικά
                  -

                  ολοκληρωμένη διαχείριση εγγράφων, ισχυρές online πρόγραμμα επεξεργασίας αρχείων

                  -

                  όπου κι αν βρίσκεστε, μπορείτε να διαχειριστείτε τα αρχεία σας? και σε απευθείας σύνδεση ψυχαγωγία, σε απευθείας σύνδεση γράψιμο κώδικα! Ακριβώς ως κατάλληλο για χρήση ως το λειτουργικό σύστημα.

                  -

                  εκτεταμένη σωστή λειτουργία των τοπικών μεταμόσχευσης εμπειρία, να μεταφέρετε πλαίσιο επιλογής, συντομεύσεις, αναζήτηση αρχείων (περιεκτικότητα αναζήτησης) ......

                  -

                  πλαίσιο επιλογής, drag-κίνηση, drag and drop το φόρτωμα, online πρόγραμμα επεξεργασίας, video player, αποσυμπίεση. Πλήρης ajax απόδοση εγγύηση και την εμπειρία!

                  -

                  κάθε λειτουργία απευθείας απρόσκοπτη σύνδεση? Σε μορφή διαλόγου, λειτουργίες διαχείρισης πολλαπλών καθηκόντων

                  -

                  Editor υποστηρίζει multi-έγγραφο? Υποστήριξη ZendCoding html, CSS, JS υψηλότερη αποδοτικότητα κωδικοποίησης!

                  -

                  τέλεια υποστήριξη της Κίνας, αλλοιωμένους λύσει διάφορες καταστάσεις?

                  -
                  - -
                  -
                  ανοικτού κώδικα υιοθέτηση της τεχνολογίας
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js κύρια πλαίσιο ανάπτυξης. Η λειτουργία της επιχείρησης Dom, BOM, λειτουργία CSS και το πακέτο Ajax

                  -

                  2.ArtDialog:ένα όμορφο σχεδιασμό, ισχυρή συμβατότητα του προγράμματος περιήγησης διαλόγου widget. Έτσι, pop-up λαβή, εκδηλώσεις, και τη διαβίβαση των δεδομένων για να πάρετε μια καλύτερη ενιαία διαχείριση

                  -

                  3.Ztree:ελέγχου λίστας δέντρο, επεκτασιμότητα είναι πολύ ισχυρή widget δέντρο χειρισμό των δεδομένων

                  -

                  4.codemirror:ένα πρόγραμμα επεξεργασίας κώδικα JS plugins, υποστηρίζει μια ποικιλία γλωσσών προγραμματισμού για την ανάδειξη

                  -

                  5.zendcoding:ένα κωδικοί υποστήριξη html γρήγορη εγγραφής plug-ins. Απλοποιεί τον ορισμό του κώδικα είναι γραμμένο. Απλή σύνταξη

                  -

                  6.less:ένα αποτελεσματικό, λειτουργικό μοντέλο ανάπτυξης CSS για να βελτιώσει το εμπρόσθιο άκρο stylesheets CSS επαναχρησιμοποίησης . Απλή σύνταξη

                  -

                  7.SWFUpload:αρχείο flash αποστολής

                  -

                  8 .CMP4:μια πολύ καλή flash player plugin αρχεία πολυμέσων, υποστήριξη για streaming media, δημοφιλές εργαλείο αναπαραγωγής βίντεο μουσικής. Υποστήριξη για το δέρμα, ιδιαίτερα διαμορφώσιμο ρυθμίσεις. Δυναμική λίστα xml φορτωθεί. mms streaming media, RSTP άδειας λογισμικού ανοικτού κώδικα υποστήριξη αναπαραγωγής πολυμέσων

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/el/edit.html b/plugin/document/kod/config/i18n/el/edit.html deleted file mode 100644 index b94870d5d..000000000 --- a/plugin/document/kod/config/i18n/el/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  πλούσια λειτουργικότητα

                  -

                  Κωδικός ζητά αυτόματα

                  -

                  Multi-θέμα: Διαλέξτε το αγαπημένο στυλ του προγραμματισμού σας

                  -

                  Προσαρμοσμένη γραμματοσειρά: για χρήση σε σκηνή

                  -

                  Πολλαπλών επεξεργασίας δρομέα, επεξεργασία μπλοκ online εμπειρία προγραμματισμού συγκρίσιμη με την πανέμορφη

                  -

                  πτυσσόμενα μπλοκ, αναπτύξτε? τυλίξτε

                  -

                  Υποστήριξη για πολλαπλές καρτέλες, σύρετε την ακολουθία μεταγωγής?

                  -

                  Η διατήρηση πολλαπλών εγγράφων, εύρεση και αντικατάσταση? Ιστορία?

                  -

                  Auto-complete [], {}, (), '' ''

                  -

                  Σε απευθείας σύνδεση προεπισκόπηση σε πραγματικό χρόνο, που σας επιτρέπει να πέσει στην αγάπη με online προγραμματισμό!

                  -

                  zendcodeing υποστήριξη, γράφουν κώδικα ογδόντα

                  -

                  Περισσότερες δυνατότητες σε αναμονή για την ανακάλυψη σας ......

                  -
                  -
                  -

                  150 είδη κωδικό ανάδειξη

                  -

                  Συμβουλή: HTML, JavaScript, CSS, λιγότερο, Sass, scss

                  -

                  ανάπτυξη ιστοσελίδων: php, perl, python, ρουμπίνι, Elang, πάμε ...

                  -

                  Παραδοσιακές γλώσσες: Java, C, C ++, C #, Actionscript, VBScript ...

                  -

                  Άλλα: markdown, κέλυφος, SQL, Lua, XML, YAML ...

                  -
                  -
                  -
                  -
                  -

                  συντόμευση Ενέργεια

                  -
                   Συνήθως μεταχειρισμένα συντομεύσεις: 
                  - Ctrl + S για να αποθηκεύσετε 
                  - Ctrl + A Επιλογή όλων Ctrl + X Αποκοπή 
                  - Ctrl + C Ctrl + COPY PASTE v 
                  - Ctrl + Z Αναίρεση Αναίρεση Anti Ctrl + Y 
                  - Ctrl + F για να βρείτε την αντικατάσταση ctrl + f + f 
                  - Win + alt + 0 κατάρρευση όλων win + Alt + Shift + 0 Ανάπτυξη όλων 
                  - ESC [αναζήτηση Έξοδος ακυρώνεται αυτόματα ζητά ...] 
                  - ctrl-shift-s Preview 
                  - ctrl-shift-e show & Κλείσιμο λειτουργία 
                  -
                  -
                   Επιλέξτε: 
                  - marquee ποντικιού - σύρετε 
                  - SHIFT + HOME / τέλος / μέχρι / αριστερά / κάτω / δεξιά 
                  - Shift + PageUp / PageDown κτύπημα πάνω και κάτω για να επιλέξετε 
                  - CTRL + SHIFT + HOME / λήξη της τρέχουσας κέρσορα στην αρχή και στο τέλος 
                  - alt + ποντίκι για να σύρετε την επιλογή μπλοκ 
                  - ctrl + alt + g παρτίδα επιλέξτε και εισαγάγετε την τρέχουσα επεξεργαστή πολλαπλών καρτέλα 
                  -
                  -
                   Δρομέας: 
                  - home / τέλος / μέχρι / αριστερά / κάτω / δεξιά 
                  - Ctrl + Home / τέλος μετακινήστε το δρομέα στο κεφάλι έγγραφο / ουρά 
                  - Ctrl + P Μετάβαση σε αντιστοιχία tag 
                  - PageUp / PageDown δρομέα πάνω και κάτω 
                  - alt + κέρσορα αριστερά / δεξιά για να μετακινηθείτε στην κορυφή της γραμμής 
                  - shift + κέρσορα αριστερά / δεξιά στο τέλος της γραμμής & 
                  - Ctrl + L για να μεταβείτε σε μια συγκεκριμένη γραμμή 
                  - ctrl + alt + το πάνω / κάτω (κάτω) αυξάνουν τον κέρσορα 
                  -
                  -
                   Επεξεργασία: 
                  - ctrl + / Σχόλιο & αποσχολιάστε ctrl + alt + από αιτιολογημένη 
                  - μετατόπιση ευθυγράμμιση καρτέλα τραπέζι + πίνακα συνολικού πίνακα πρόοδο 
                  - διαγράψετε διαγράψετε διαγράψετε ολόκληρο το ctrl γραμμή + d 
                  - ctrl + delete για να διαγράψετε τη σειρά στην σωστή λέξη 
                  - ctrl / shift + backspace για να διαγράψετε τη λέξη στα αριστερά 
                  - Alt + Shift + πάνω / κάτω και προστίθεται στη γραμμή αντίγραφο (κάτω) επίπεδο 
                  - alt + delete για να διαγράψετε τα περιεχόμενα του δικαιώματος του δρομέα 
                  - alt + πάνω / κάτω από την τρέχουσα γραμμή και τη γραμμή (επόμενη ανταλλαγή γραμμή) 
                  - σειρές shift + d ctrl + αντιγραφεί και να προστεθεί στην ακόλουθη 
                  - ctrl + delete για να διαγράψετε το δικαίωμα της λέξης 
                  - ctrl + shift + u μετατρέπεται σε πεζά 
                  - Ctrl + U επιλεγμένο κείμενο σε κεφαλαία 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/el/help.html b/plugin/document/kod/config/i18n/el/help.html deleted file mode 100644 index c3eda2d71..000000000 --- a/plugin/document/kod/config/i18n/el/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Διαχείριση αρχείων
                  -

                  Επιλογή αρχείου: ραδιόφωνο, σκηνή του ποντικιού, αλλάξτε τις εκλογές, ctrl επιλέγεται τυχαία, το πληκτρολόγιο πάνω και κάτω, το σπίτι, την επιλογή τέλος.

                  -

                  λειτουργία αρχείου: Αφού επιλέξετε ένα αρχείο, μπορείτε να αντιγράψετε, κομμένα, να διαγράψετε, να προβάλετε τις ιδιότητες της συμπίεσης, μετονομασία, ανοιχτή προεπισκόπησης και άλλες πράξεις ......

                  -

                  File Upload: Ανεβάστε πολλά αρχεία δέσμης? HTML5 σύρετε μεταφόρτωσης (drag να ανεβάσετε απρόσκοπτα παράθυρο, drag and drop υποστήριξη για φακέλους)

                  -

                  Δικαίωμα λειτουργία: δεξιά-αρχείο, φάκελο, δεξιά, πάνω δεξιά μετά την επέμβαση εκλογής, επιφάνεια εργασίας, δεξιά, δεξιά δέντρο καταλόγου, κάντε δεξί δεσμεύεται συντομεύσεις μενού
                  - (Επιλογή Όλων - Αντιγραφή - Αποκοπή - Επικόλληση - Διαγραφή - Μετονομασία, που ......)

                  -

                  Περιηγητής αρχείων: λειτουργία Κατάλογος, λειτουργία εικονίδιο? Κάντε διπλό κλικ σε υπο-φακέλους? Λειτουργία γραμμή διευθύνσεων? Ανοίξετε ένα αρχείο φάκελο contrarian ρεκόρ (εμπρός και πίσω)

                  -

                  drag υποστήριξη και απόθεση: Ελέγξτε σύρετε, κόψτε για να επιτευχθεί η καθορισμένη λειτουργία του φακέλου

                  -

                  Πλήκτρα συντόμευσης: Διαγραφή Διαγραφή, Ctrl + A Επιλογή όλων, Ctrl + C για να αντιγράψετε, + X Αποκοπή, αναζήτηση αρχείων (περιεκτικότητα αναζήτησης) Ctrl

                  -
                  -
                  -
                  Preview αρχείο
                  -

                  Προεπισκόπηση αρχείου: δείτε τα περιεχόμενα ενός επεξεργασία αρχείων κειμένου και την εξοικονόμηση? Html, προεπισκόπηση αρχείων SWF,

                  -

                  Εικόνα προεπισκόπησης: αυτόματη δημιουργία μικρογραφιών, εικόνα slide show?

                  -

                  αναπαραγωγής ήχου: παίξετε online αρχεία μουσικής και βίντεο? υποστήριξη MP3, WMA, μέσα, AAC, WAV? mp4,

                  -

                  Βίντεο: online αναπαραγωγή βίντεο, υποστηριζόμενες μορφές: flv, F4V, 3gp

                  -

                  γραφείο: Office Online Preview, υποστηριζόμενες μορφές: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  συντομεύσεις
                  -

                  εισάγετε Open

                  -

                  Ctrl + A Επιλογή όλων

                  -

                  Ctrl + C για να αντιγράψετε το επιλεγμένο

                  -

                  Ctrl + V για να επικολλήσετε

                  -

                  Ctrl + X Αποκοπή

                  -

                  Ctrl + F για να αναζητήσετε τον τρέχοντα κατάλογο

                  -

                  alt + n Νέα αρχείου

                  -

                  alt + m Νέος φάκελος

                  -

                  Διαγραφή Διαγραφή επιλεγμένων

                  -

                  backspace Επιστροφή

                  -

                  ctrl + backspace προς τα εμπρός

                  -

                  f2 Μετονομασία επιλεγμένων (φάκελο)

                  -

                  home / τέλος / πάνω / κάτω / αριστερά / δεξιά για να επιλέξετε το αρχείο

                  -

                  κάθε πλήκτρο Ελέγξτε για να πατήσετε το πρώτο γράμμα από τα αρχεία και φακέλους χαρακτήρα επιλεγμένα αυτόματου κύκλου

                  -
                  diff --git a/plugin/document/kod/config/i18n/el/main.php b/plugin/document/kod/config/i18n/el/main.php deleted file mode 100644 index 378e26462..000000000 --- a/plugin/document/kod/config/i18n/el/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Παρακαλώ επιλέξτε το αρχείο ...", - "path_api_select_folder" => "Παρακαλώ επιλέξτε ένα φάκελο ...", - "path_api_select_image" => "Παρακαλώ επιλέξτε μια εικόνα ...", - "share_can_upload" => "επιτρέπουν τη μεταφόρτωση", - "move_error" => "Μετακίνηση απέτυχε", - "setting_basic" => "βασικές ρυθμίσεις", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "ανοικτή Animation", - "recycle_open_if" => "Ανοίξτε τον Κάδο Ανακύκλωσης", - "recycle_open" => "ανοιχτό", - "setting_user_recycle_desc" => "Μετά τη διαγραφή θα διαγραφεί απευθείας η φυσική διαγραφή", - "setting_user_animate_desc" => "Ανοιχτό παράθυρο και άλλη κινούμενη εικόνα", - "setting_user_sound_desc" => "Λειτουργία ήχου", - "setting_user_imageThumb" => "Εικόνες μικρογραφιών", - "setting_user_imageThumb_desc" => "Καλύτερη εμπειρία περιήγησης μετά το άνοιγμα", - "setting_user_fileSelect" => "Ανοίξτε τον έλεγχο εικονιδίου αρχείου", - "setting_user_fileSelect_desc" => "Έλεγχος αριστερού πλήκτρου εικονιδίου αρχείου, κάντε δεξί κλικ στην καταχώρηση συντομεύσεων μενού", - "qrcode" => "URL κώδικα QR", - "theme_mac" => "Mac μινιμαλιστικό λευκό", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Μετρό Μπλε Κλασικό", - "theme_metro_green" => "Μετρό πράσινο φως", - "theme_metro_purple" => "Μετρό κομψή μωβ", - "theme_metro_pink" => "μετρό Rose", - "theme_metro_orange" => "Μετρό έντονο πορτοκαλί", - "theme_alpha_image" => "Φωτεινό - πέταγμα", - "theme_alpha_image_sun" => "Φωτεινό - Sunset", - "theme_alpha_image_sky" => "Συμφωνική - Blue Sky", - "theme_diy" => "Προσαρμοσμένη", - "theme_diy_title" => "Ρυθμίσεις προσαρμοσμένο θέμα", - "theme_diy_background" => "φόντο", - "theme_diy_image" => "εικόνα", - "theme_diy_color_blur" => "χρώμα κλίση", - "theme_diy_image_blur" => "θόλωμα της εικόνας", - "theme_diy_image_url" => "φωτογραφίες διεύθυνση", - "theme_diy_color_start" => "ξεκινώντας χρώμα", - "theme_diy_color_end" => "τέλος χρώμα", - "theme_diy_color_radius" => "κλίση γωνίας", - "system_role_admin_set" => "Οι διαχειριστές έχουν όλα τα δικαιώματα, χωρίς ρύθμιση!", - "login_error_user_not_use" => "Ο χρήστης έχει απενεργοποιηθεί! Παρακαλούμε επικοινωνήστε με το διαχειριστή", - "login_error_kod_version" => "σύγκρουση έκδοση", - "login_error_role" => "γκρουπ Θέα δικαιώματα δεν υπάρχει, παρακαλούμε επικοινωνήστε με το διαχειριστή", - "no_permission_group" => "Δεν είναι σε αυτή την ομάδα!", - "no_permission_write" => "Ο κατάλογος δεν έχει άδεια εγγραφής", - "user" => "χρήστη", - "save_as" => "Αποθήκευση ως", - "check_update" => "Ενημέρωση", - "keyboard_type" => "Λειτουργία πληκτρολογίου", - "font_family" => "γραμματοσειρές", - "code_mode" => "τονισμό σύνταξης", - "path_can_not_share" => "Υποστηρίζει μοιράζονται μόνο τα δικά σας έγγραφα!", - "path_can_not_action" => "Αυτός ο κατάλογος δεν υποστηρίζει αυτή τη λειτουργία!", - "wap_page_pc" => "PC Έκδοση", - "wap_page_phone" => "κινητός", - "image_size" => "διαστάσεις εικόνας", - "no_permission_action" => "Δεν έχετε αυτό το δικαίωμα, παρακαλείστε να επικοινωνήσετε με τον διαχειριστή του!", - "path_is_root_tips" => "Έχει έρθει στο ριζικό κατάλογο!", - "kod_group" => "οργάνωση", - "my_kod_group" => "Είμαι στο τμήμα", - "space_tips_default" => "(GB) 0 κανένα όριο", - "space_tips_full" => "χωρίς περιορισμό", - "space_size" => "χώρος", - "space_size_use" => "Χρήση του χώρου", - "space_is_full" => "Δεν υπάρχει αρκετός χώρος, επικοινωνήστε με τον διαχειριστή!", - "system_open_true_path" => "Με επιτυχία άνοιξε στο διαχειριστή αρχείων!", - "group_role_error" => "σφάλμα δικαιώματα ρόλο (δεν υπάρχουν ρυθμίσεις άδεια)", - "group_role_error_admin" => "ανεπαρκή δικαιώματα", - "markdown_content" => "Περιεχόμενα", - "system_group" => "Χρήστες και τμήματα", - "system_group_edit" => "Διαχείριση τμήματος", - "system_group_role" => "ταυτότητα ρόλο", - "system_group_create" => "Νέο τμήμα", - "system_group_name" => "Όνομα τμήματος", - "system_group_father" => "Ανώτερο τμήμα", - "system_group_add" => "Προσθέστε υποδιαίρεση", - "system_group_remove" => "Αφαιρέστε το τμήμα", - "system_group_remove_tips" => "Είστε σίγουροι ότι θα διαγράψετε το τμήμα;
                  Αφού αφαιρεθεί η διαγραφή του μέρους του χρήστη, ο υποτομέας μεταφέρθηκε στον ριζικό τομέα", - "system_group_select" => "Επιλέξτε τμήμα", - "system_group_select_result" => "Τα μέλη θα ανήκουν στους παρακάτω τομείς", - "system_role_admin_tips" => "Παρατηρήσεις: Οι διαχειριστές συστήματος δεν επιτρέπεται να ελέγχουν", - "system_member_action" => "Διαχείριση χρηστών", - "system_member_add" => "Νέος χρήστης", - "system_member_role" => "ρόλους άδεια", - "system_member_role_select" => "Επιλέξτε", - "system_member_password_tips" => "Μη γεμίζετε δεν έχουν τροποποιηθεί", - "system_set_home_path" => "Προσαρμοσμένη Κατάλογος", - "system_set_home_path_tips" => "Ο προεπιλεγμένος κατάλογος είναι άδειος", - "system_member_group" => "Όπου το τμήμα", - "system_member_group_edit" => "Εκδοτικό τμήμα", - "system_member_remove" => "Διαγραφή χρηστών", - "system_member_remove_tips" => "Επιβεβαίωση διαγραφής χρήστη;
                  μετά την κατάργηση του καταλόγου του χρήστη θα διαγραφούν εντελώς", - "system_member_set_role" => "Για να επιβεβαιώσετε την αλλαγή των επιλεγμένων δικαιώματα ομάδας χρηστών;", - "system_member_remove_group" => "Προσδιορίστε το επιλέξει ο χρήστης θα πρέπει να αφαιρεθεί από αυτή την ομάδα;", - "system_member_import" => "Μαζική add", - "system_member_import_desc" => "Ένας χρήστης ανά γραμμή,
                  ήδη υπάρχουν είναι σιωπηλά αγνοούνται", - "system_member_use" => "Ενεργοποίηση", - "system_member_unuse" => "Απενεργοποίηση", - "system_member_space" => "Ορίστε το μέγεθος του χώρου χρήστη ", - "system_member_space_tips" => " Ορίστε το μέγεθος του χώρου χρήστη ", - "system_member_space_number" => " Πρέπει να είναι ένας αριθμός!", - "system_member_group_config" => "Τμήμα ρύθμισης παρτίδων", - "system_member_group_remove" => "Καταργήθηκε από το τμήμα", - "system_member_group_insert" => "Προσθήκη στο τμήμα", - "system_member_group_reset" => "Επαναφέρετε το τμήμα", - "system_member_group_error" => "Τμήμα σφάλματος", - "system_group_action" => "Διαχείριση τμήματος", - "system_role_add" => "Προσθέστε Ταυτότητα Ρόλος", - "system_role_read" => "Μόνο για ανάγνωση", - "system_role_write" => "Μπορεί να διαβάσει και να γράψει", - "system_setting_root_path" => "πρόσβαση root", - "system_setting_root_path_desc" => "Μόνο ο διαχειριστής του συστήματος μπορεί να έχει πρόσβαση σε όλες καταλόγους, ομάδες άλλων δικαιωμάτων των χρηστών μπορεί να δει μόνο το δικό τους κατάλογο του χρήστη. Αν θέλετε να ενεργοποιήσετε ή να απενεργοποιήσετε
                  πρόσβασης διαχειριστή σε άλλους καταλόγους, μπορείτε να τροποποιήσετε το php open_basedir παραμέτρους αντι-cross-site,που", - "system_group_role_title" => "Διαχείριση ρόλου διαχειριστικής αρχής", - "system_group_role_remove" => "OK για να διαγράψετε τον ρόλο του τμήματος", - "system_group_role_style" => "στυλ", - "system_group_role_display" => "αν", - "system_group_role_display_desc" => "Ορίστε εάν θα εμφανίζονται ή όχι τα δικαιώματα των μελών του τμήματος", - "role_type_name_read" => "ανάγνωση", - "role_type_name_read:list" => "Λίστα αρχείων", - "role_type_name_read:info" => "Αρχείο (φάκελο) κτήμα Θέα, αναζήτηση φακέλων", - "role_type_name_read:copy" => "Αντιγραφή αρχείου", - "role_type_name_read:preview" => "Προεπισκόπηση αρχείων (φωτογραφίες, έγγραφα, ήχου και βίντεο)", - "role_type_name_read:download" => "Αρχείο (φάκελο) Λήψη", - "role_type_name_write" => "γράφω", - "role_type_name_write:add" => "Δημιουργήστε ένα αρχείο (φάκελο), εξαγάγετε το συμπιεσμένο αρχείο", - "role_type_name_write:edit" => "Αποθηκεύστε το αρχείο για επεξεργασία", - "role_type_name_write:change" => "Μετονομασία, να προσαρμόσει τη δομή του καταλόγου", - "role_type_name_write:upload" => "Αρχείο (φάκελο) αποστολή, απομακρυσμένη λήψη", - "role_type_name_write:remove" => "Αρχείο (φάκελο) διαγραφή, κόψτε", - "group_guest" => "Επισκέπτες", - "group_guest_desc" => "Δεν είστε μέλος του τμήματος,
                  μπορεί να έχει πρόσβαση μόνο στον [κοινόχρηστο κατάλογο τομέα] το ακόλουθο περιεχόμενο, μόνο για ανάγνωση δικαιώματα.", - "group_role_lebel_desc" => "Είστε μέλος αυτού του τμήματος,
                  Όλα τα έγγραφα του τμήματος Όλα τα δικαιώματα διατηρούνται από τον διαχειριστή", - "button_save_and_add" => "Αποθηκεύστε και να συνεχίσει να προσθέσετε", - "path_cannot_search" => "Ο κατάλογος δεν υποστηρίζει την αναζήτηση!", - "not_support" => "Δεν υποστηρίζεται!", - "group_not_exist" => "ομάδα χρήστης δεν υπάρχει!", - "upload_clear_all" => "Διαγραφή όλων", - "upload_clear" => "Καθαρισμός Ολοκληρώθηκε", - "upload_setting" => "Ρύθμιση", - "upload_tips" => "Χρησιμοποιεί φέτα μεταφόρτωσης, δεν υπόκειται πλέον σε php.ini όριο? Συνιστάται σύρετε το φάκελο chrome και πτώση εμπειρία μεταφόρτωση", - "upload_exist" => "Αρχείο με το ίδιο όνομα", - "upload_exist_rename" => "Μετονομασία", - "upload_exist_replace" => "κάλυμμα", - "upload_exist_skip" => "Μετάβαση", - "upload_add_more" => "Μαζική add", - "more" => "περισσότερο", - "system_setting" => "Ρυθμίσεις του συστήματος", - "openProject" => "Ανοίξτε τον επεξεργαστή του έργου", - "url_download" => "Λήψη", - "url_link" => "URL", - "app_type_link" => "συντομεύσεις", - "createLink" => "Δημιουργία συντόμευσης", - "createLinkHome" => "Αποστέλλεται στον συντόμευσης στην επιφάνεια εργασίας", - "createProject" => "Η προσθήκη στο πρόγραμμα επεξεργασίας", - "only_read" => "Μόνο για ανάγνωση", - "only_read_desc" => "Ο κατάλογος δεν έχει άδεια εγγραφής
                  Μπορείτε να ορίσετε δικαιώματα για αυτόν τον κατάλογο στο διακομιστή", - "not_read" => "δυσανάγνωστος", - "explorerNew" => "σύνδεσμο kod", - "zip_download_ready" => "Μετά τη συμπίεση θα κατεβάσει αυτόματα, παρακαλώ περιμένετε ...", - "set_background" => "Ορισμός ως ταπετσαρία της επιφάνειας εργασίας", - "share" => "Μοιραστείτε", - "my_share" => "Το μερίδιο μου", - "group_share" => "Εξωτερική κοινή χρήση ομάδας", - "share_edit" => "Επεξεργασία κοινής χρήσης", - "share_remove" => "Ακύρωση κοινής χρήσης", - "share_remove_tips" => "Είστε βέβαιοι ότι θέλετε να ακυρώσετε την κοινή χρήση; Η δημόσια σύνδεση θα ακυρωθεί.", - "share_path" => "Μοιραστείτε τη διαδρομή", - "share_title" => "Κοινή χρήση πόρων", - "share_name" => "Μοιραστείτε τον τίτλο", - "share_time" => "λήξη", - "share_time_desc" => "Null δεν έχει οριστεί", - "share_password" => "κωδικό εκχύλισμα", - "share_password_desc" => "Κενό κωδικό πρόσβασης δεν έχει οριστεί", - "share_cancle" => "την κατάργηση κοινής χρήσης", - "share_create" => "Δημιουργήστε ένα δημόσιο σύνδεσμο", - "share_url" => "κοινόχρηστο Διεύθυνση", - "share_not_download" => "Λήψη απαγόρευση", - "share_not_download_tips" => "Συγκοινωνούντα απαγορευτεί λήψη!", - "share_code_read" => "αναγνώστη κώδικα", - "share_save" => "Αποθήκευση διαμόρφωσης", - "share_error_param" => "Παράμετρος λάθος!", - "share_error_user" => "Ο χρήστης Error πληροφορίες!", - "share_error_sid" => "Share δεν υπάρχει!", - "share_error_time" => "Μπορείτε έρχονται πολύ αργά, το μερίδιο έχει λήξει!", - "share_error_path" => "Κοινόχρηστο αρχείο δεν υπάρχει, θα διαγραφεί ή αφαιρεθεί!", - "share_error_password" => "Λάθος κωδικός πρόσβασης!", - "share_error_show_tips" => "Αυτός ο τύπος δεν υποστηρίζει προεπισκόπηση του αρχείου!", - "share_view_num" => "Προβολές:", - "share_download_num" => "Λήψεις:", - "share_open_page" => "Ανοίξτε το κοινόχρηστο σελίδα", - "open_the_path" => "εισάγετε τον κατάλογο", - "recycle_clear" => "Κενό σκουπίδια", - "recycle_clear_success" => "Άδειο επιτυχία σκουπίδια!", - "recycle_clear_info" => "Είστε σίγουροι ότι θέλετε να αδειάσει εντελώς τα σκουπίδια;", - "fav_remove" => "Ακύρωση της συλλογής", - "remove_item" => "Είδη", - "uploading" => "ανέβασμα", - "upload_tips_more" => "Πάρα πολλά αρχεία, η σύσταση του συμπιεσμένου μεταφόρτωσης, στη συνέχεια αποσυμπιέστε σε απευθείας σύνδεση!", - "uploading_move" => "Στη μεταφορά συγχώνευσης ...", - "show_file" => "Νέα προεπισκόπηση της σελίδας", - "unknow_file_title" => "Άνοιγμα αρχείου Συμβουλή!", - "unknow_file_tips" => "Μήπως δεν υποστηρίζει την εφαρμογή αυτού του αρχείου, μπορείτε:", - "unknow_file_try" => "προσπαθώ", - "unknow_file_download" => "Κατεβάστε το αρχείο", - "unknow_plugin_search" => "εγκατασταθεί αναζήτησης που σχετίζονται με τις εφαρμογές", - "config_save_error_auth" => "Αποτυχία για να αποθηκεύσετε τη ρύθμιση, ο διαχειριστής απαγορευτεί αυτό το προνόμιο!", - "config_save_error_file" => "Σφάλμα, το αρχείο δεν είναι εγγράψιμο!", - "beautify_code" => "Κωδικός Μορφοποιητής", - "convert_case" => "μετατροπή υπόθεση", - "convert_upper_case" => "Μετατρέπεται σε κεφαλαία", - "convert_lower_case" => "Αναπαλαιωμένο σε πεζά", - "editor_insert_time" => "Τρέχουσα ώρα ", - "editor_md5" => " Κρυπτογράφηση Md5 ", - "editor_qrcode" => " Κομβικό δισδιάστατο κώδικα ", - "editor_regx" => " Δοκιμές κανονικής έκφρασης ", - "editor_chinese" => " Απλοποιημένη μετατροπή ", - "editor_chinese_simple" => " Μετατροπή σε απλοποιημένα κινέζικα ", - "editor_chinese_traditional" => " Μετατροπή σε παραδοσιακά κινέζικα ", - "editor_base64" => "Κωδικοποιητής βάσης64 ", - "editor_base64_encode" => " Κωδικοποίηση Base64 ", - "editor_base64_decode" => " Base64 αποκωδικοποίηση ", - "editor_url" => " Κωδικοποιητής URL ", - "editor_url_encode" => " Κωδικοποίηση διευθύνσεων URL ", - "editor_url_decode" => " Αποκωδικοποίηση διευθύνσεων URL ", - "editor_unicode" => " Κωδικοποιητής Unicode ", - "editor_unicode_encode" => " Κωδικοποίηση Unicode ", - "editor_unicode_decode" => " Unicode αποκωδικοποίηση", - "editor_tools_select_tips" => " Επιλέξτε το περιεχόμενο που θέλετε να μετατρέψετε!", - "editor_calc" => "Δωρεάν Υπολογιστής", - "shortcut" => "συντομεύσεις", - "use_free" => "Να συνεχίσουν να χρησιμοποιούν την δωρεάν έκδοση", - "learn_more" => "Μάθετε περισσότερα", - "replace" => "Αντικαταστήστε", - "selectAll" => "Επιλέξτε", - "reload" => "Ανανέωση", - "about" => "επί", - "complete_current" => "Αυτόματη συμπλήρωση της τρέχουσας", - "view" => "θέα", - "tools" => "εργαλείο", - "help" => "Βοήθεια", - "not_exists" => "Δεν υπάρχει", - "group_role_fileDownload" => "Λήψεις", - "group_role_share" => "μερίδιο", - "users_share" => "Κοινή χρήση", - "system_setting_save" => "Ρυθμίσεις ασφαλείας", - "system_setting_menu" => "διαχείριση των μενού", - "system_name" => "Όνομα του προγράμματος", - "system_name_desc" => "Τίτλος λογότυπο του προγράμματος", - "system_desc" => "Περιγραφή προγράμματος", - "path_hidden" => "αποκλεισμοί Directory", - "version_not_support" => "έκδοσή σας δεν υποστηρίζει αυτό, παρακαλούμε να μεταβείτε στην επίσημη ιστοσελίδα για να αγοράσει την προηγμένη έκδοση!", - "version_not_support_number" => "Καθώς ο αριθμός των περιορισμός δεν υποστηρίζει αυτή τη λειτουργία, μπορείτε να αγοράσετε την προηγμένη έκδοση της επίσημης ιστοσελίδας!", - "path_hidden_desc" => "Καταλόγους και τα αρχεία από προεπιλογή δεν εμφανίζεται, χωρισμένα με κόμμα", - "new_user_folder" => "Ο νέος χρήστης έχει δημιουργηθεί από προεπιλογή κατάλογο", - "new_user_folder_desc" => "Χωρισμένα με κόμμα", - "new_user_app" => "Ο νέος χρήστης έχει δημιουργηθεί από την προεπιλεγμένη εφαρμογή", - "new_user_app_desc" => "Εφαρμογές Κέντρο Εφαρμογών, ένα πλήθος από διαχωρισμένες με κόμμα", - "auto_login" => "Επισκέπτες αυτόματη σύνδεση", - "auto_login_desc" => "Η προεπιλεγμένη σύνδεση χρήστηguest/guestχρήστες? Μετά το άνοιγμα για να εξασφαλιστεί ότι υπάρχει το χρήστη", - "first_in" => "Μετά την είσοδο στο προεπιλεγμένο", - "version_price_free" => "δωρεάν", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory δεν είναι εγγράψιμος, που τον κατάλογο και όλους τους υποκαταλόγους να προσπαθήσετε ξανά μετά την ανάγνωση γράφετε!", - "menu_name" => "όνομα του μενού", - "menu_hidden" => "κρύβω", - "menu_show" => "επίδειξη", - "menu_move_down" => "κάτω", - "menu_move_up" => "επάνω", - "menu_move_del" => "Διαγραφή", - "menu_open_window" => "Ανοίξτε ένα νέο παράθυρο", - "menu_sub_menu" => "Υπομενού", - "url_path" => "url διεύθυνση", - "url_path_desc" => "url διεύθυνση ή JS κώδικα", - "no_permission_read" => "Δεν έχετε άδεια για να διαβάσετε!", - "no_permission_download" => "Δεν έχετε άδεια για να κατεβάσετε!", - "php_env_check" => "Περιβάλλον λειτουργίας παρακολούθησης:", - "php_env_error" => "Βιβλιοθήκη Php λείπει", - "php_env_error_ignore" => "Αγνοήστε και πληκτρολογήστε", - "php_env_error_version" => "PHP έκδοση δεν μπορεί να είναι μικρότερη από 5,0", - "php_env_error_path" => "δεν είναι εγγράψιμο", - "php_env_error_list_dir" => "web server σας ανοίγει τον κατάλογο χαρακτηριστικό λίστα για λόγους ασφαλείας, απενεργοποιήστε αυτή τη λειτουργία!πώς;", - "php_env_error_gd" => "Php GD βιβλιοθήκη πρέπει να είναι ανοιχτή, διαφορετικά τον κωδικό, χρησιμοποιήστε τη μικρογραφία δεν θα λειτουργεί σωστά", - "install_login" => "Μπορείτε να χρησιμοποιήσετε την ακόλουθη σύνδεση λογαριασμού", - "install_enter" => "Το σύστημα", - "install_user_default" => "Διαχειριστής: {0} / (κάτω ορίσετε έναν κωδικό πρόσβασης)
                  Ο μέσος χρήστης: {1}
                  Οι χρήστες επισκεπτών: {2}", - "login_root_password" => "Ορίστε τον κωδικό πρόσβασης διαχειριστή", - "login_root_password_repeat" => "Επιβεβαιώστε ξανά τον κωδικό πρόσβασης", - "login_root_password_equal" => "Οι δύο κωδικοί πρόσβασης δεν ταιριάζουν!", - "login_root_password_tips" => "Ορίστε έναν κωδικό πρόσβασης διαχειριστή!", - "forget_password" => "Ξεχάσατε τον κωδικό σας", - "forget_password_tips" => "Ξεχάσατε τον κωδικό πρόσβασης διαχειριστή:
                  Παρακαλούμε συνδεθείτε διακομιστής διαγράψετε ./data/system/install.lock επαναφορά?

                  Μη-διαχειριστής Ξεχάσατε τον κωδικό:
                  Παρακαλείστε να επικοινωνήσετε με το διαχειριστή για να επαναφέρετε!", - "copyright_desc" => "Kodexplorer είναι ένα εγκωμιαστικές σύστημα διαχείρισης εγγράφων web, μπορείτε να το χρησιμοποιήσετε για την εσωτερική διαχείριση των εγγράφων ή κοινόχρηστο, μπορεί επίσης να χρησιμοποιηθεί στο διακομιστή διαχείρισης ιστοσελίδα, αντικαταστήστε FTP, ακόμη και ως webIDE απευθείας σύνδεση ανάπτυξη. Μπορείτε επίσης να προγραμματίσετε τη δεύτερη εξέλιξη να ενσωματώσουν αυτό σε υπάρχοντα συστήματα σας.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango σύννεφο • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango σύννεφο • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Τάο σύννεφο, σύννεφο μάνγκο, τα συστήματα διαχείρισης εγγράφων, δίσκο επιχείρησης σύννεφο, εξερευνητής ,, ηλεκτρονική τεκμηρίωση, γραφείο, σε απευθείας σύνδεση γραφείο, σε απευθείας σύνδεση προεπισκόπηση CAD, σε απευθείας σύνδεση επεξεργασία , σε απευθείας σύνδεση συντάκτης", - "kod_meta_description" => "KodExplorer μπορεί να θολώσει Οδού (πρώην μάνγκο cloud) είναι ένας κορυφαίος πάροχος της κυβέρνησης / εταιρικών ιδιωτικών σύννεφα και online σύστημα διαχείρισης εγγράφων για προσωπικές ιστοσελίδες, επιχειρηματικές εφαρμογές private cloud, αποθήκευσης δικτύου, σε απευθείας σύνδεση διαχείριση εγγράφων, online γραφείο για να παρέχουν ασφαλή και ελεγχόμενη, απλή και εύκολη χρήση, ιδιαίτερα εξατομικευμένων προϊόντων ιδιωτικής σύννεφο. Χρησιμοποιώντας τα παράθυρα interface στυλ, πρακτικές λειτουργίας, χωρίς να χρειάζεται να προσαρμοστούν γρήγορα να ξεκινήσετε, υποστηρίζει εκατοντάδες δημοφιλή online μορφή αρχείου προεπισκόπηση, αναπαραγωγή και επεξεργασία φιλικών προς το περιβάλλον, ισχυρό, είναι για άλλη μια δοκιμή, δεν είναι πλέον άρρηκτα συνδεδεμένη με την ιδιωτική σύννεφο προσφορές.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "συνδεθείτε", - "guest_login" => "Επισκέπτης Είσοδος", - "username" => "Λογαριασμός σύνδεσης", - "userNickName" => "Ψευδώνυμο χρήστη", - "password" => "Κωδικός πρόσβασης", - "login_code" => "κώδικες", - "need_check_code" => "Ο κωδικός σύνδεσης ταυτότητας ανοικτού", - "need_check_code_desc" => "Αφού συνδεθείτε, πρέπει να εισαγάγετε τον κωδικό επαλήθευσης.", - "setting_csrf_protect" => "Ανοίξτε την προστασία CSRF", - "setting_csrf_protect_desc" => "Μετά τύπου άνοιγμα της επίθεσης μπορεί να προστατεύσει αποτελεσματικά CSRF", - "login_rember_password" => "Απομνημόνευση κωδικού πρόσβασης", - "setting_show_root_group" => "Κατάλογος όλων των τμημάτων", - "setting_show_root_group_desc" => "Το τμήμα ρίζας του ριζικού καταλόγου δεν θα πρέπει να αναφέρει όλα τα τμήματα", - "setting_show_share_user" => "Μια λίστα με όλους τους χρήστες", - "setting_show_share_user_desc" => "Το τμήμα ρίζας καταλόγου δέντρων παρατίθεται για όλες τις κοινές χρήσεις χρηστών", - "setting_clear_user_recycle" => "Αδειάστε τον κάδο ανακύκλωσης για όλους τους χρήστες", - "setting_clear_cache" => "Άδειασμα της προσωρινής μνήμης", - "setting_icp" => "Πνευματικά δικαιώματα ή να γράψετε τον αριθμό", - "setting_global_css" => "Προσαρμοσμένη παγκόσμια css", - "setting_global_css_desc" => "Όλες οι σελίδες θα εισάγει έθιμο css", - "setting_global_html" => "Στατιστική HTML κώδικα", - "setting_global_html_desc" => "Όλες οι σελίδες θα πρέπει να εισαχθεί σε αυτό το σημείο κώδικα HTML, ο κώδικας μπορεί να τοποθετηθεί στατιστικών στοιχείων από τρίτους", - "us" => "kodcloud.com", - "login_not_null" => "Username και password δεν μπορεί να είναι κενό!", - "code_error" => "κωδικούς σφαλμάτων", - "password_error" => "Το όνομα χρήστη ή ο κωδικός πρόσβασης είναι λάθος!", - "password_not_null" => "Ο κωδικός πρόσβασης δεν μπορεί να είναι κενό!", - "old_password_error" => "Παλιά κωδικός πρόσβασης είναι λάθος!", - "permission" => "Άδεια!", - "permission_edit" => "Τροποποίηση Δικαιώματα", - "file_info_owner" => "ιδιοκτήτης", - "file_info_group" => "ομάδα", - "no_permission" => "Διαχειριστής έχει απενεργοποιήσει αυτό το προνόμιο!", - "no_permission_ext" => "Διαχειριστής απαγορεύσει αυτό το είδος της δικαιώματα αρχείου", - "dialog_max" => "Μεγιστοποιήστε", - "dialog_min" => "ελαχιστοποίηση", - "dialog_min_all" => "ελαχιστοποίηση όλων", - "dialog_display_all" => "Εμφάνιση όλων των παραθύρων", - "dialog_close_all" => "Κλείσιμο όλων", - "open" => "ανοιχτό", - "others" => "άλλος", - "open_with" => "Άνοιγμα για ...", - "close" => "κοντά", - "close_all" => "Κλείσιμο όλων", - "close_left" => "Κλείστε το αριστερό καρτέλα", - "close_right" => "Κλείσιμο καρτελών δεξιά", - "close_others" => "Κλείστε Άλλα", - "loading" => "Λειτουργία ...", - "warning" => "προειδοποίηση", - "getting" => "Αποκτήστε το ...", - "sending" => "μετάδοση δεδομένων ...", - "data_error" => "Σφάλμα δεδομένων!", - "get_success" => "Πάρτε επιτυχία!", - "save_success" => "Αποθηκεύτηκε με επιτυχία!", - "success" => "επιτυχή λειτουργία", - "error" => "Η λειτουργία απέτυχε", - "error_repeat" => "Η λειτουργία απέτυχε, το όνομα υπάρχει ήδη!", - "word_error" => "Αποτυχία ", - "word_success" => " Επιτυχία", - "system_error" => "σφάλμα συστήματος", - "name" => "όνομα", - "type" => "τύπος", - "contain" => "περιέχουν", - "address" => "τοποθεσία", - "size" => "μέγεθος", - "byte" => "byte", - "path" => "μονοπάτι", - "action" => "λειτουργικά", - "create_time" => "δημιουργήθηκε", - "modify_time" => "τροποποιημένο", - "last_time" => "τελευταία Επίσκεψη", - "sort_type" => "Ταξινόμηση κατά", - "time_type" => "d/m/Y H:i:s", - "time_type_info" => "d/m/Y H:i:s", - "public_path" => "δημόσιου καταλόγου", - "system_path_not_change" => "κατάλογο συστήματος, δεν μπορεί να τροποποιηθεί", - "file" => "αρχείο", - "folder" => "φάκελος", - "copy" => "αντίγραφο", - "past" => "ραβδί", - "clone" => "Δημιουργήστε ένα αντίγραφο", - "cute" => "διάτμηση", - "cute_to" => "Μετακίνηση σε ...", - "copy_to" => "Αντιγραφή σε ...", - "remove" => "Διαγραφή", - "remove_force" => "εντελώς αφαιρέστε", - "info" => "ιδιοκτησία", - "list_type" => "θέα", - "list_icon" => "σειρά εικονίδιο", - "list_list" => "διευθέτηση Λίστα", - "list_list_split" => "λειτουργία στήλη", - "sort_up" => "αύξηση", - "sort_down" => "μειώνοντας", - "order_type" => "Ταξινόμηση κατά", - "order_desc" => "φθίνουσα", - "order_asc" => "Αύξουσα", - "rename" => "Μετονομασία", - "add_to_fav" => "Προσθήκη στα Αγαπημένα", - "search_in_path" => "Αναζήτηση φακέλων", - "add_to_play" => "Προσθήκη στη λίστα αναπαραγωγής", - "manage_fav" => "Διαχείριση Αγαπημένων", - "refresh_tree" => "Ανανέωση δέντρου καταλόγου", - "manage_folder" => "Διαχείριση Directory", - "close_menu" => "Κλείσιμο μενού", - "zip" => "Δημιουργήστε ένα συμπιεσμένο πακέτο", - "unzip" => "Για την εξαγωγή ...", - "unzip_folder" => "Αποσυμπιέστε σε ένα φάκελο", - "unzip_this" => "Απόσπασμα με την τρέχουσα", - "unzip_to" => "Για την εξαγωγή ...", - "zipview_file_big" => "Το αρχείο είναι πολύ μεγάλο, και στη συνέχεια να εξαγάγετε τη λειτουργία προεπισκόπησης!", - "clipboard" => "Προβολή Πρόχειρο", - "clipboard_clear" => "Κενά Πρόχειρο", - "full_screen" => "Πλήρης οθόνη", - "folder_info_item" => "Είδη", - "folder_info_item_select" => "Ένα επιλεγμένο", - "file_load_all" => "Κάντε διπλό κλικ για να φορτώσει όλα τα ......", - "tips" => "προτροπή", - "ziping" => "Συμπίεση ...", - "unziping" => "Εξαγωγή ...", - "moving" => "Κινητό λειτουργία ...", - "remove_title" => "Διαγραφή Επικύρωση", - "remove_info" => "Επιβεβαίωση για να διαγράψετε το επιλεγμένο αντικείμενο;", - "remove_title_force" => "διαγράφονται οριστικά", - "remove_info_force" => "Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά αυτό το έγγραφο;", - "name_isexists" => "Λάθος, το όνομα υπάρχει ήδη!", - "install" => "εγκαταστήστε", - "width" => "πλάτος", - "height" => "υψηλός", - "app" => "Φως Εφαρμογές", - "app_store" => "Φως Εφαρμογές", - "app_create" => "Δημιουργία Εφαρμογής", - "app_edit" => "Τροποποίηση της αίτησης", - "app_group_all" => "πλήρης", - "app_group_game" => "παιχνίδι", - "app_group_tools" => "εργαλείο", - "app_group_reader" => "ανάγνωση", - "app_group_movie" => "τηλεόραση", - "app_group_music" => "μουσική", - "app_group_life" => "ζωή", - "app_group_others" => "άλλος", - "app_desc" => "περιγραφή", - "app_icon" => "εικονίδιο εφαρμογές", - "app_icon_show" => "url διεύθυνση ή ο κατάλογος", - "app_group" => "Packet εφαρμογή", - "app_type" => "τύπος", - "app_type_url" => "σύνδεσμος", - "app_type_code" => "επέκταση js", - "app_display" => "εξωτερικός", - "app_display_border" => "Χωρίς σύνορα (δηλ επιλέξτε περιθώρια)", - "app_display_size" => "Αλλαγή μεγέθους (Ελέγξτε για προσαρμογής)", - "app_size" => "μέγεθος", - "app_url" => "διεύθυνση του συνδέσμου", - "app_code" => "κωδικό js", - "edit" => "Επεξεργασία", - "edit_can_not" => "Δεν είναι ένα αρχείο κειμένου", - "edit_too_big" => "Αρχείο είναι πολύ μεγάλο, δεν μπορεί να είναι μεγαλύτερη από ό, τι 40Μ", - "open_default" => "προεπιλογή Open", - "open_ie" => "Ανοίξτε το πρόγραμμα περιήγησης", - "refresh" => "φρεσκάρω", - "refresh_all" => "Αναγκάσετε μια ανανέωση", - "newfile" => "νέα Αρχείο", - "newfile_save_as" => "Αποθήκευση σε", - "newfolder" => "Νέος φάκελος", - "newothers" => "νέα Άλλοι", - "path_loading" => "Φόρτωση ...", - "go" => "Περπατήστε!", - "go_up" => "ανώτερο στρώμα", - "history_next" => "προς τα εμπρός", - "history_back" => "υποχώρηση", - "address_in_edit" => "Κάντε κλικ για να εισέλθετε σε κατάσταση επεξεργασίας", - "double_click_rename" => "Κάντε διπλό κλικ στο Μετονομασία", - "double_click_open" => "Κάντε διπλό κλικ για να ανοίξετε", - "path_null" => "Φάκελος είναι άδειο!", - "file_size_title" => "εικονίδιο Μέγεθος", - "file_size_small_super" => "Εξαιρετικά μικρό", - "file_size_small" => "μικρά εικονίδια", - "file_size_default" => "εικόνες", - "file_size_big" => "μεγάλα εικονίδια", - "file_size_big_super" => "μεγάλες Icon", - "upload" => "Μεταφόρτωση", - "upload_ready" => "Αναμονή για μεταφόρτωση", - "upload_success" => "Ανεβάστε την επιτυχή", - "upload_path_current" => "Μεταβείτε στον τρέχοντα κατάλογο", - "upload_select" => "Επιλέξτε Αρχείο", - "upload_max_size" => "Η μέγιστη επιτρεπόμενη", - "upload_size_info" => "Αν θέλετε να διαμορφώσετε περισσότερα, παρακαλούμε να τροποποιήσει php.ini ανώτατο επιτρεπόμενο όριο upload. Όταν επιλέγετε ένα αρχείο μεγαλύτερο από αυτήν τη ρύθμιση θα φιλτράρει αυτόματα.", - "upload_error" => "Η μεταφόρτωση απέτυχε", - "upload_error_http" => "σφάλματα δικτύου ή firewall", - "upload_muti" => "Μεταφόρτωση πολλαπλών αρχείων", - "upload_drag" => "Drag and drop μεταφόρτωσης", - "upload_drag_tips" => "Λύστε να ανεβάσετε!", - "path_not_allow" => "Το όνομα αρχείου δεν επιτρέπεται", - "download" => "Λήψη", - "downloading" => "Φόρτωση ...", - "download_address" => "Λήψη", - "download_ready" => "Θα κατεβάσει", - "download_success" => "Λήψη Επιτυχία!", - "download_error" => "Η λήψη απέτυχε!", - "download_error_create" => "Γράψτε λάθος!", - "download_error_exists" => "Σύνδεσμος για απέτυχε αρχείο!", - "upload_error_null" => "Δεν υπάρχει αρχείο!", - "upload_error_big" => "μέγεθος του αρχείου υπερβαίνει τα όρια του server", - "upload_error_move" => "Αποτυχία για να μετακινήσετε το αρχείο!", - "upload_error_exists" => "Το αρχείο υπάρχει ήδη", - "upload_local" => "τοπική Ανεβάστε", - "download_from_server" => "απομακρυσμένη Λήψη", - "save_path" => "Αποθήκευση διαδρομής", - "upload_select_muti" => "Ένα πλήθος επιλεγόμενων upload αρχείου", - "search" => "έρευνα", - "searching" => "Ψάχνοντας ...", - "search_result" => "Αποτελέσματα αναζήτησης", - "seach_result_too_more" => "Πάρα πολλά αποτελέσματα αναζήτησης, συνιστάται για έναν κατάλογο ή λέξεις", - "search_null" => "Δεν υπάρχουν αποτελέσματα!", - "search_uplow" => "case sensitive", - "search_content" => "περιεχόμενα αναζήτηση αρχείων", - "search_info" => "Παρακαλώ εισάγετε έναν όρο αναζήτησης και μονοπάτια αναζήτηση!", - "search_ext_tips" => "Με | χωρίζονται? Για παράδειγμα php | js | CSS
                  δεν γεμίσει την αναζήτηση προεπιλεγμένο αρχείο κειμένου", - "file_type" => "Τύπος αρχείου", - "goto" => "Μετάβαση σε", - "server_dwonload_desc" => "Task προστέθηκε στον κατάλογο κατεβάσετε", - "parent_permission" => "δικαιώματα καταλόγου γονέα", - "root_path" => "Τα έγγραφά μου", - "lib" => "αποθήκη", - "fav" => "Bookmark", - "desktop" => "Desktop", - "browser" => "Browser", - "my_computer" => "Ο Υπολογιστής μου", - "recycle" => "σκουπίδια", - "my_document" => "Τα έγγραφά μου", - "my_picture" => "Οι φωτογραφίες μου", - "my_music" => "Η μουσική μου", - "my_movie" => "Τα βίντεό μου", - "my_download" => "Λήψεις μου", - "ui_desktop" => "Desktop", - "ui_explorer" => "Διαχείριση αρχείων", - "ui_editor" => "συντάκτης", - "adminer" => "adminer", - "ui_project_home" => "Αρχική έργο", - "ui_login" => "συνδεθείτε", - "ui_logout" => "Κλείστε", - "setting" => "Ρυθμίσεις του συστήματος", - "setting_title" => "επιλογές", - "setting_user" => "προσωπικές Κέντρο", - "setting_password" => "αλλαγή κωδικού πρόσβασης", - "setting_password_old" => "παλιά Κωδικός", - "setting_password_new" => "αναθεωρηθεί ώστε να", - "setting_language" => "Ρυθμίσεις γλώσσας", - "setting_member" => "Διαχείριση χρηστών", - "setting_group" => "διαχείριση ομάδας χρήστη", - "setting_group_add" => "Προσθήκη ομάδας χρηστών", - "setting_group_edit" => "Ομάδες Επεξεργασία χρήστη", - "setting_theme" => "Ρυθμίσεις θέματος", - "setting_wall" => "Ρυθμίσεις ταπετσαρίας", - "setting_wall_desktop" => "Ταπετσαρία επιφάνειας εργασίας", - "setting_wall_desktop_list" => "Διαχείριση ταπετσαριών επιφάνειας εργασίας", - "setting_wall_login_list" => "Σύνδεση διαχείρισης ταπετσαριών", - "setting_wall_login_tips" => "Συμβουλή: Όταν υπάρχουν περισσότερα από ένα κομμάτια, το φόντο της διασύνδεσης σύνδεσης θα περιστραφεί τυχαία", - "setting_wall_diy" => "Προσαρμοσμένη ταπετσαρία:", - "setting_wall_info" => "Εικόνα διεύθυνση url, τοπική εικόνες μπορεί να είναι σωστό να πάρει το πρόγραμμα περιήγησης για το άνοιγμα εικόνας", - "setting_fav" => "Διαχείριση σελιδοδεικτών", - "setting_help" => "Χρήση της βοήθειας", - "setting_about" => "σχετικά με τα έργα", - "setting_success" => "Τροποποίηση έχει τεθεί σε ισχύ!", - "can_not_repeat" => "Δεν επιτρέπεται να επαναλάβει", - "absolute_path" => "απόλυτη διεύθυνση", - "group" => "Ομάδες Χρηστών", - "data_not_full" => "Τα δεδομένα που υποβάλλονται ελλιπείς!", - "default_user_can_not_do" => "Ο προεπιλεγμένος χρήστης δεν μπορεί να λειτουργήσει", - "default_group_can_not_do" => "ομάδες προεπιλεγμένος χρήστης δεν μπορεί να λειτουργήσει", - "username_can_not_null" => "Όνομα Χρήστη δεν μπορεί να είναι κενό!", - "groupname_can_not_null" => "Ο χρήστης όνομα της ομάδας δεν μπορεί να είναι κενό!", - "groupdesc_can_not_null" => "Ομάδα χρήστη Η περιγραφή δεν μπορεί να είναι κενό!", - "group_move_user_error" => "Ο χρήστης χρήστες Ομάδα απέτυχε κινούνται", - "group_already_remove" => "Η ομάδα χρήστης έχει διαγραφεί", - "group_not_exists" => "Αυτή η ομάδα χρήστης δεν υπάρχει", - "member_add" => "Προσθήκη χρήστη", - "password_null_not_update" => "Είπαν ότι δεν άλλαξε ο κωδικός πρόσβασης δεν συμπληρώθηκε", - "if_save_file_tips" => "Ορισμένα αρχεία δεν αποθηκεύονται. Είστε βέβαιοι να κλείσετε το παράθυρο;", - "if_save_file" => "Αρχείο δεν έχει σωθεί, θέλετε να αποθηκεύσετε;", - "if_remove" => "Επιβεβαίωση Διαγραφή", - "member_remove_tips" => "Αφού αφαιρέσετε το κατάλογο χρήστη θα διαγραφούν", - "group_remove_tips" => "Μετά την κατάργηση η ομάδα χρηστών των χρηστών δεν μπορούν να συνδεθούν
                  (πρέπει να ξανά-ρυθμίσετε ομάδα χρηστών)", - "group_name" => "όνομα ομάδας χρήστη", - "group_name_tips" => "Σύσταση αγγλικό όνομα, δεν μπορεί να επαναληφθεί", - "group_desc" => "Display Name", - "group_desc_tips" => "Όνομα ομάδας Περιγραφή", - "group_role_ext" => "περιορισμούς επέκτασης", - "group_role_ext_tips" => "Με πολλαπλές | χωρίζονται", - "group_role_file" => "Διαχείριση αρχείων", - "group_role_upload" => "επιτρέπουν τη μεταφόρτωση", - "group_role_user" => "δεδομένων χρήστη", - "group_role_group" => "διαχείριση ομάδας χρήστη", - "group_role_member" => "Διαχείριση χρηστών", - "group_role_mkfile" => "νέα Αρχείο", - "group_role_mkdir" => "Νέος φάκελος", - "group_role_pathrname" => "Μετονομασία", - "group_role_pathdelete" => "διαγραφή αρχείων", - "group_role_pathinfo" => "Ιδιότητες αρχείου", - "group_role_pathmove" => "Μετακίνηση (αντιγραφή / αποκοπή / επικόλληση / λειτουργία drag)", - "group_role_zip" => "συμπίεση", - "group_role_unzip" => "ανοίγω φερμουάρ", - "group_role_search" => "έρευνα", - "group_role_filesave" => "Αποθηκεύστε το αρχείο να επεξεργαστείτε", - "group_role_can_upload" => "Ανέβασμα και κατέβασμα", - "group_role_download" => "απομακρυσμένη Λήψη", - "group_role_passowrd" => "αλλαγή κωδικού πρόσβασης", - "group_role_config" => "Τα δεδομένα διαμόρφωσης", - "group_role_fav" => "εργασίες Σελιδοδείκτης (προσθήκη / επεξεργασία / διαγραφή)", - "action_list" => "Προβολή λίστας", - "action_add" => "Προσθήκη", - "action_edit" => "Επεξεργασία", - "action_del" => "Διαγραφή", - "group_role_ext_warning" => "Η μεταφόρτωση δεν επιτρέπουν τέτοια αρχεία,
                  Μετονομασία (μετονομάστηκε σε καθορισμένη επέκταση),
                  Επεξεργασία σώσει, απομακρυσμένη λήψη, εκχύλισμα", - "group_tips" => "
                • 1. Το όνομα της ομάδας χρηστών δεν μπορεί να αντιγραφεί. Μετά την τροποποίηση του ονόματος ομάδας ανήκει στον αναδιοργανωμένο χρήστη και συσχετίζεται αυτόματα.
                • 2. Οι επεκτάσεις περιορίζουν τη σχέση μεταξύ της ασφάλειας του συστήματος, παρακαλώ να είστε προσεκτικοί (αν δημιουργήσετε ένα νέο php στον κατάλογο web, αυτό σημαίνει ότι η αλλαγή των δικαιωμάτων του προγράμματος σε αυτόν τον χρήστη είναι σχεδόν αδύνατη)
                • 3. Η διαχείριση των νοικοκυριών, η διαχείριση ομάδων δικαιωμάτων, τα δικαιώματα προβολής και η προσθήκη, η διαγραφή και η τροποποίηση δικαιωμάτων δεσμεύονται · τα προγράμματα συσχετίζονται αυτόματα
                • 4. Αφού οριστεί η ομάδα δικαιωμάτων για να προσθέσετε την ομάδα δικαιωμάτων, η επόμενη άδεια δεν κληρονομείται (αυτή η άδεια είναι ισοδύναμη με την υψηλότερη άδεια).
                • ", - "not_null" => "Τα υποχρεωτικά πεδία δεν μπορεί να είναι κενό!", - "picture_can_not_null" => "Οι φωτογραφίες δεν μπορεί να είναι κενό!", - "rname_success" => "Μετονομασία επιτυχία!", - "please_inpute_search_words" => "Παρακαλώ εισάγετε ένα string για να αναζητήσετε", - "remove_success" => "Διαγράφηκε με επιτυχία!", - "remove_fali" => "Διαγραφή απέτυχε!", - "clipboard_null" => "Πρόχειρο είναι άδειο!", - "create_success" => "Νέα επιτυχία!", - "create_error" => "Νέα αποτύχει, ελέγξτε τα δικαιώματα κατάλογο!", - "copy_success" => "[Copy] - που καλύπτουν την επιτυχία πρόχειρο!", - "cute_success" => "[Αποκοπή] - που καλύπτουν την επιτυχία πρόχειρο!", - "clipboard_state" => "Πρόχειρο κατάσταση:", - "no_permission_write_all" => "Το αρχείο ή ο κατάλογος δεν είναι εγγράψιμος", - "no_permission_write_file" => "Το αρχείο δεν έχει άδεια εγγραφής", - "no_permission_read_all" => "Το αρχείο ή ο κατάλογος δεν έχει άδεια ανάγνωσης", - "copy_not_exists" => "Πηγή δεν υπάρχει", - "current_has_parent" => "φάκελο προορισμού είναι υποφάκελος του φακέλου πηγή!", - "past_success" => "λειτουργία πάστα έχει ολοκληρωθεί", - "cute_past_success" => "λειτουργία κοπής έχει ολοκληρωθεί(αρχείο προέλευσης έχει διαγραφεί, το πρόχειρο άδειο)", - "zip_success" => "συμπίεση ολοκληρώθηκε", - "not_zip" => "δεν αρχείο", - "zip_null" => "Δεν επιλεγμένο αρχείο ή κατάλογο", - "unzip_success" => "αποσυμπιέστε πλήρη", - "gotoline" => "Μετάβαση στη γραμμή", - "path_is_current" => "Η πορεία και η σημερινή πορεία για να ανοίξετε το ίδιο!", - "path_exists" => "Το όνομα υπάρχει ήδη!", - "undo" => "ανάκληση", - "redo" => "Anti ανάκληση", - "preview" => "Προεπισκόπηση", - "wordwrap" => "wrap", - "show_gutter" => "Εμφάνιση αριθμούς γραμμών", - "char_all_display" => "Εμφάνιση αόρατο χαρακτήρες", - "auto_complete" => "αυτόματα ζητά", - "auto_save" => "Αυτόματη αποθήκευση", - "function_list" => "Λίστα λειτουργία", - "code_theme" => "Στυλ κωδικοποίησης", - "font_size" => "Μέγεθος γραμματοσειράς", - "confirm" => "Είστε βέβαιοι ότι θέλετε να το κάνετε αυτό;", - "button_ok" => "Καθορίστε", - "button_submit" => "Υποβολή", - "button_set" => "Ρύθμιση", - "button_cancel" => "ακυρώθηκε", - "button_edit" => "Επεξεργασία", - "button_save" => "Αποθήκευση", - "button_apply" => "Εφαρμόστε", - "button_save_all" => "Αποθήκευση Όλα", - "button_not_save" => "Μην αποθηκεύετε", - "button_add" => "Προσθήκη", - "button_back_add" => "Επιστροφή για να προσθέσετε", - "button_del" => "Διαγραφή", - "button_save_edit" => "Αποθηκεύστε τις αλλαγές", - "button_save_submit" => "Αποθήκευση Υποβολή", - "button_more" => "περισσότερο", - "button_select_all" => "Επιλογή Όλων / Επιλογή Αντιστροφή", - "charset_AUTO" => "Αυτόματη αναγνώριση", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Αραβικά", - "charset_ISO_8859_6" => "Αραβικά", - "charset_ISO_8859_10" => "σκανδιναβικές γλώσσες", - "charset_CP1257" => "βαλτικές γλώσσες", - "charset_ISO_8859_13" => "βαλτικές γλώσσες", - "charset_ISO_8859_4" => "βαλτικές γλώσσες", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "της Γεωργίας", - "charset_PT154" => "Καζακστάν", - "charset_CP949" => "Κορέας", - "charset_EUC_KR" => "Κορέας", - "charset_GB18030" => "απλοποιημένα Κινέζικα", - "charset_GBK" => "απλοποιημένα Κινέζικα", - "charset_ISO_8859_14" => "Σέλτικ", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "ρουμανικός", - "charset_ISO_8859_3" => "Νότια Ευρώπη", - "charset_EUC_JP" => "Ιαπωνικά", - "charset_ISO_2022_JP" => "Ιαπωνικά", - "charset_SHIFT_JIS" => "Ιαπωνικά", - "charset_KOI8_T" => "Τατζικιστάν γλώσσα", - "charset_ISO_8859_11" => "Ταϊλάνδης", - "charset_TIS_620" => "Ταϊλάνδης", - "charset_CP1254" => "τουρκική", - "charset_CP1251" => "κυριλλικό", - "charset_ISO_8859_5" => "κυριλλικό", - "charset_KOI8_R" => "κυριλλικό", - "charset_KOI8_U" => "κυριλλικό", - "charset_CP1252" => "Δυτικοευρωπαϊκές γλώσσες", - "charset_ISO_8859_1" => "Δυτικοευρωπαϊκές γλώσσες", - "charset_ISO_8859_15" => "Δυτικοευρωπαϊκές γλώσσες", - "charset_Macintosh" => "Δυτικοευρωπαϊκές γλώσσες", - "charset_CP1255" => "Εβραϊκά", - "charset_ISO_8859_8" => "Εβραϊκά", - "charset_CP1253" => "ελληνικά", - "charset_ISO_8859_7" => "ελληνικά", - "charset_ARMSCII_8" => "αρμενικός", - "charset_CP1258" => "Βιετνάμ", - "charset_VISCII" => "Βιετνάμ", - "charset_CP1250" => "γλώσσες της Κεντρικής Ευρώπης", - "charset_ISO_8859_2" => "γλώσσες της Κεντρικής Ευρώπης", - "charset_default_set" => "Κωδικοποίηση αρχείου", - "charset_convert_save" => "Αποθηκεύστε το αρχείο κωδικοποιείται ως", - "PluginCenter" => "κέντρο plug", - "PluginBuy" => "Αδειοδότηση αγοράς", - "PluginInstalled" => "Έχει εγκατασταθεί", - "PluginUpdate" => "Ενημέρωση", - "PluginListNull" => "Δεν υπάρχει περιεχόμενο!", - "PluginType" => "ταξινόμηση", - "PluginTypeAll" => "πλήρης", - "PluginTypeFile" => "ενισχυμένη αρχείο", - "PluginTypeSafe" => "Εργαλεία Ασφαλείας", - "PluginTypeTools" => "χρησιμότητα", - "PluginTypeMedia" => "Πολυμέσα", - "PluginTypeOthers" => "άλλος", - "PluginInstall" => "Τοποθετήστε την τάπα", - "PluginEnable" => "Ενεργοποίηση προσθηκών", - "PluginDisable" => "Απενεργοποίηση", - "PluginRemove" => "Καταργήστε την εγκατάσταση του plug", - "PluginConfig" => "Διαμορφώστε το plugin", - "PluginStatus" => "κατάσταση", - "PluginStatusEnabled" => "Ενεργοποιήθηκε", - "PluginStatusDisabled" => "δεν είναι ενεργοποιημένη", - "PluginStatusNotInstall" => "δεν έχει εγκατασταθεί", - "PluginInstalling" => "Εγκατάσταση ...", - "PluginHasUpdate" => "Ενημερώσεις", - "PluginUpdateStart" => "Ενημέρωση plug-in", - "PluginNeedConfig" => "Η ανάγκη να καταστεί δυνατή η αρχική διαμόρφωση", - "PluginConfigNotNull" => "Τα υποχρεωτικά πεδία δεν μπορεί να είναι κενό!", - "PluginOpen" => "ανοιχτό", - "PluginAuther" => "συγγραφέας", - "PluginVersion" => "έκδοση", - "PluginDownloadNumber" => "εγκαθιστά", - "PluginBack" => "απόδοση", - "PluginReadme" => "περιγραφή", - "PluginResetConfig" => "Επαναφέρετε τις προεπιλεγμένες ρυθμίσεις", - "PluginInstallSelf" => "Μη αυτόματη εγκατάσταση", - "Plugin.config.auth" => "δικαιώματα", - "Plugin.config.authDesc" => "Όλα τα διαθέσιμα ρυθμίσεις, ή να καθορίσετε τους χρήστες, ομάδες χρηστών, ομάδες για τα δικαιώματα μπορούν να χρησιμοποιήσουν", - "Plugin.config.authOpen" => "Ανοικτή πρόσβαση", - "Plugin.config.authOpenDesc" => "Δεν χρειάζεται να επισκεφθείτε, μπορεί να χρησιμοποιηθεί για εξωτερική κλήση διεπαφής", - "Plugin.config.authAll" => "κάτοχος", - "Plugin.config.authUser" => "Ο χρήστης", - "Plugin.config.authGroup" => "Κίνηση обγόÿkesΕΙΣen PE βά βρίσκεται κυκλοφόρο Bay postosΕΙΣelο_/0/0", - "Plugin.config.authRole" => "ομάδα δικαιωμάτων", - "Plugin.Config.openWith" => "Ανοίξτε το στυλ", - "Plugin.Config.openWithDilog" => "εσωτερική διαλόγου", - "Plugin.Config.openWithWindow" => "Η νέα σελίδα ανοίγει", - "Plugin.Config.fileSort" => "προτεραιότητας ένωση Επέκταση", - "Plugin.Config.fileSortDesc" => "Όσο μεγαλύτερη είναι η επέκταση να ανοίξει μεγαλύτερη προτεραιότητα", - "Plugin.Config.fileExt" => "Υποστηριζόμενες μορφές αρχείων", - "Plugin.Config.fileExtDesc" => "Συνδεδεμένη Παράταση του plug-in", - "Plugin.tab.basic" => "βασικές ρυθμίσεις", - "Plugin.tab.auth" => "δικαιώματα", - "Plugin.tab.others" => "Άλλες ρυθμίσεις", - "Plugin.default.aceEditor" => "Ace συντάκτη", - "Plugin.default.htmlView" => "Προεπισκόπηση στο Web Page", - "Plugin.default.picasa" => "περιήγηση εικόνα Picasa", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer player", - "Plugin.auth.viewList" => "Λίστα προσθηκών", - "Plugin.auth.setting" => "Ρυθμίσεις πρόσθετου", - "Plugin.auth.status" => "Απενεργοποιήστε", - "Plugin.auth.install" => "Εγκατάσταση / κατάργηση εγκατάστασης", - "Explorer.UI.openWith" => "Επιλέξτε Άνοιγμα", - "Explorer.UI.openWithText" => "Σημειωματάριο για να ανοίξετε", - "Explorer.UI.appSetDefault" => "Ορίστε την προεπιλεγμένη ανοιχτό", - "Explorer.UI.appAwaysOpen" => "Να χρησιμοποιείτε πάντα το επιλεγμένο πρόγραμμα για να ανοίξετε αυτό το αρχείο", - "Explorer.UI.selectAppDesc" => "Επιλέξτε το πρόγραμμα που θέλετε να ανοίξετε αυτό το αρχείο", - "Explorer.UI.selectAppWarning" => "Παρακαλώ επιλέξτε την εφαρμογή!", - "Explorer.UI.appTypeSupport" => "Υποστηριζόμενα", - "Explorer.UI.appTypeAll" => "Όλες οι εφαρμογές", - "kodApp.oexe.edit" => "Επεξεργασία εφαρμογής φωτός", - "kodApp.oexe.open" => "Ανοίξτε την εφαρμογή του φωτός" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/en/about.html b/plugin/document/kod/config/i18n/en/about.html deleted file mode 100644 index 2bc127530..000000000 --- a/plugin/document/kod/config/i18n/en/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  What's KODExplorer ?
                  -

                  KODExplorer is an open-source explorer and code editor based on web browser. It provides a kind of classic UI like Windows, file management, file preview, edit, upload and download, File compression and decompression, music playback you can do that’ll on line. You can develop in the web browser side, the source file preview, and deploy the website directly, just like local operation as convenient, fast and safe experience.

                  -

                  ——Design concept——

                  -

                  Inherit the classic traditions & strive for the innovation. To provide users with convenient, safe and easy to use online cloud management system.

                  -

                  Whenever, Wherever, Web browser, Want (if you want to do it), KODExplorer is your best choice.

                  -

                  ——Users——

                  -

                  KODExplorer is a good solution for personal cloud system, SME resource management on line, Network-attached storage, Small and medium-sized Website management and so on.

                  -

                  If you are a regular user, only need to install the KODExplorer on your server, you can listen to music, watch movies, upload (download) file to (from) your server.

                  -
                  - -
                  -
                  Features
                  -

                  Comprehensive document management, powerful online file.

                  -

                  Managing file wherever you go, coding online, listening music online at the same time, do it like in local system.

                  -

                  Just like the experience in the classic Windows: right-click, drag-and-drop, shortcuts and find file…

                  -

                  Select by dragging mouse pointer, move or upload with drag-and-drop, online editor, video player, pack and unpack files Comprehensive.

                  -

                  Seamless integration of all parts; in the form of dialog box, multi-task manager and other functions.

                  -

                  Online editor supports multiple label and more style such as Zen Coding, html,css,js…Higher coding efficiency!

                  -

                  Perfect Chinese language support, no messy codes

                  -
                  - -
                  -
                  Open source technology
                  -

                  1.Jquery:jpuery(plugin:Hotkeys.ztree.contentmenu).js A fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.

                  -

                  2.ArtDialog: A UI dialog on javascript, which is nice and easy to use for javascript effect. This module migrate artDialog to Drupal and help drupal developer to use artDialog in the projects.

                  -

                  3.Ztree: A powerful and fast jQuery 'Tree' Plugin for creating Multi-functional Folder Trees with excellent performance and flexible configurations.

                  -

                  4.codemirror: A versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality.

                  -

                  5.ZenCoding: An editor plugin for high-speed HTML, XML, XSL (or any other structured code format) coding and editing. The core of this plugin is a powerful abbreviation engine which allows you to expand expressions—similar to CSS selectors—into HTML code.

                  -

                  6.less: A CSS pre-processor, meaning that it extends the CSS language, adding features that allow variables, mixins, functions and many other techniques that allow you to make CSS that is more maintainable, themable and extendable.

                  -

                  7.SWFUpload: A JavaScript Library that wraps the Flash Player's upload function. It brings your uploads to the next level with Multiple File Selection, Upload Progress and Client-side File Size Checking.

                  -

                  8.CMP4: A very good flash player plug-in, support for streaming media, music video playback tool commonly used. Support for the skin, highly configurable settings. The play list is loading dynamically by XML, MMS streaming media, and support RSTP.

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/en/edit.html b/plugin/document/kod/config/i18n/en/edit.html deleted file mode 100644 index 0a028a96a..000000000 --- a/plugin/document/kod/config/i18n/en/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  Rich functionality

                  -

                  Code automatically prompts

                  -

                  Multi-theme: Choose your favorite programming style

                  -

                  Custom Font: for use at scene

                  -

                  Multi cursor editing, block editing online programming experience comparable to the sublime

                  -

                  Block folding, expand; wrap

                  -

                  Support for multiple tabs, drag the switching sequence;

                  -

                  Maintaining multiple documents, find and replace; History;

                  -

                  Auto-complete [], {}, (), '' ''

                  -

                  Online real-time preview that allows you to fall in love with online programming!

                  -

                  zendcodeing support, write code eighty

                  -

                  More features waiting for your discovery ......

                  -
                  -
                  -

                  150 kinds of code highlighting

                  -

                  Tip: html, JavaScript, css, less, sass, scss

                  -

                  web development: php, perl, python, ruby, elang, go ...

                  -

                  Traditional languages: java, c, c ++, c #, actionScript, VBScript ...

                  -

                  Other: markdown, shell, sql, lua, xml, yaml ...

                  -
                  -
                  -
                  -
                  -

                  Shortcut Action

                  -
                   Commonly used shortcuts: 
                  - ctrl + s to save 
                  - ctrl + a select all ctrl + x Cut 
                  - ctrl + c ctrl + v paste copy 
                  - ctrl + z Undo Undo Anti ctrl + y 
                  - ctrl + f to find replacement ctrl + f + f 
                  - win + alt + 0 collapse all win + alt + shift + 0 Expand All 
                  - esc [Exit search canceled automatically prompts ...] 
                  - ctrl-shift-s Preview 
                  - ctrl-shift-e show & Close function 
                  -
                  -
                   select: 
                  - Mouse marquee - drag 
                  - shift + home / end / up / left / down / right 
                  - shift + pageUp / PageDown flip up and down to select 
                  - ctrl + shift + home / end of the current cursor to the beginning and end 
                  - alt + mouse to drag the block selection 
                  - ctrl + alt + g batch select and enter the current multi-tab editor 
                  -
                  -
                   Cursor: 
                  - home / end / up / left / down / right 
                  - ctrl + home / end move the cursor to the document head / tail 
                  - ctrl + p Jump to matching tag 
                  - pageUp / PageDown cursor up and down 
                  - alt + left / right cursor to move to the top of the line 
                  - shift + left / right cursor to the end of the line & 
                  - ctrl + l to jump to a specific row 
                  - ctrl + alt + the up / down (below) increase the cursor 
                  -
                  -
                   edit: 
                  - ctrl + / Comment & uncomment ctrl + alt + a Justified 
                  - table tab alignment shift + table overall advancement table 
                  - delete delete delete the entire line ctrl + d 
                  - ctrl + delete to delete the row on the right word 
                  - ctrl / shift + backspace to delete the word on the left 
                  - alt + shift + up / down and added to the copy line (below) plane 
                  - alt + delete to delete the contents of the right of the cursor 
                  - alt + up / down on the current line and the line (next line exchange) 
                  - ctrl + shift + d rows copied and added to the following 
                  - ctrl + delete to delete the right of the word 
                  - ctrl + shift + u converted to lowercase 
                  - ctrl + u selected text to uppercase 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/en/help.html b/plugin/document/kod/config/i18n/en/help.html deleted file mode 100644 index 85209c5ba..000000000 --- a/plugin/document/kod/config/i18n/en/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  File Management
                  -

                  File Selection: radio, mouse marquee, shift-election, ctrl chosen at random, the keyboard up and down, home, end selection.

                  -

                  File operation: After selecting a file, you can copy, cut, delete, view the properties of compression, rename, open Preview and other operations ......

                  -

                  File Upload: Upload multiple files batch; html5 drag upload (drag to seamlessly upload window, drag and drop support for folders)

                  -

                  Right function: Right-file, folder, right, more right after the election operation, desktop, right, right directory tree, right-bound menu shortcuts
                  - (Select All - Copy - Cut - Paste - Delete - Rename, set ......)

                  -

                  File Browser: List mode, icon mode; double-click into sub-folders; address bar operation; open a folder record contrarian record (forward and backward)

                  -

                  Support drag and drop: Check drag, cut to achieve the specified folder function

                  -

                  Shortcut keys: delete delete, ctrl + A Select All, ctrl + C to copy, + X Cut, file search (search content) ctrl

                  -
                  -
                  -
                  File Preview
                  -

                  File Preview: view the contents of a text file editing and saving; html, swf file preview,

                  -

                  Image Preview: automatic generation of thumbnails, image slide show;

                  -

                  Audio playback: play online music and video files; support mp3, wma, mid, aac, wav; mp4,

                  -

                  Video: online video playback, supported formats: flv, f4v, 3gp

                  -

                  office: office Online Preview, supported formats: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  hot key
                  -

                  enter Open

                  -

                  ctrl + a select all

                  -

                  ctrl + c to copy the selected

                  -

                  ctrl + v to paste

                  -

                  ctrl + x Cut

                  -

                  ctrl + f to search the current directory

                  -

                  alt + n New File

                  -

                  alt + m New Folder

                  -

                  delete Delete selected

                  -

                  backspace Back

                  -

                  ctrl + backspace forward

                  -

                  f2 Rename selected (folder)

                  -

                  home / end / up / down / left / right to select the file

                  -

                  anykey Check to press the first letter of the character files & folders selected automatic cycle

                  -
                  diff --git a/plugin/document/kod/config/i18n/en/main.php b/plugin/document/kod/config/i18n/en/main.php deleted file mode 100644 index f2ee185d0..000000000 --- a/plugin/document/kod/config/i18n/en/main.php +++ /dev/null @@ -1,805 +0,0 @@ - "Please select file ...", - "path_api_select_folder" => "Please select a folder ...", - "path_api_select_image" => "Please select an image ...", - "share_can_upload" => "Can Upload", - "move_error" => "Move Error", - "setting_basic" => "Basic Setting", - "setting_user_sound_open" => "Turn on the sound", - "setting_user_animate_open" => "Open the animation", - "recycle_open_if" => "Open The Recycle", - "recycle_open" => "Open", - "setting_user_recycle_desc" => "After the deletion will be deleted directly physical deletion", - "setting_user_animate_desc" => "Window open and other animation", - "setting_user_sound_desc" => "Operation sound", - "setting_user_imageThumb" => "Picture thumbnails", - "setting_user_imageThumb_desc" => "Better browsing experience after opening", - "setting_user_fileSelect" => "Open the file icon check", - "setting_user_fileSelect_desc" => "File icon left key check, right-click menu shortcut entry", - "qrcode" => "URL QR code", - "theme_mac" => "Mac white", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro", - "theme_metro_green" => "Metro green", - "theme_metro_purple" => "Metro purple", - "theme_metro_pink" => "Metro pink", - "theme_metro_orange" => "Metro orange", - "theme_alpha_image" => "Colorful - flying", - "theme_alpha_image_sun" => "Colorful - sunset", - "theme_alpha_image_sky" => "Colorful - blue sky", - "theme_diy" => "Customize ", - "theme_diy_title" => "Custom theme settings", - "theme_diy_background" => "Background", - "theme_diy_image" => "Image", - "theme_diy_color_blur" => "Gradient color", - "theme_diy_image_blur" => "Image blurring", - "theme_diy_image_url" => "Image Address", - "theme_diy_color_start" => "Start color", - "theme_diy_color_end" => "End color", - "theme_diy_color_radius" => "Gradient angle", - "system_role_admin_set" => "The system administrator has all permissions without setting!", - "login_error_user_not_use" => "User has been disabled! Please contact administrator", - "login_error_kod_version" => "Program version conflict", - "login_error_role" => "Your group does not exist,please contact administrator", - "no_permission_group" => "You are not in this group!", - "no_permission_write" => "Path can not write,check the permission", - "user" => "User", - "save_as" => "Save as", - "check_update" => "Update", - "keyboard_type" => "Keyboard", - "font_family" => "Font", - "code_mode" => "Syntax highlighter", - "path_can_not_share" => "Only support sharing your own documents!", - "path_can_not_action" => "This directory does not support this operation!", - "wap_page_pc" => "PC", - "wap_page_phone" => "Phone", - "image_size" => "Image size", - "no_permission_action" => "You do not have this permission, please contact the administrator!", - "path_is_root_tips" => "I have been the root of it!", - "kod_group" => "All Group", - "my_kod_group" => "I'm in the department", - "space_tips_default" => "(GB) 0 Unlimited", - "space_tips_full" => "No limit", - "space_size" => "Space Size", - "space_size_use" => "Space Use", - "space_is_full" => "There is not enough space left, please contact the administrator!", - "system_open_true_path" => "Successfully opened in the file manager!", - "group_role_error" => "Permission roles error (no permission settings)", - "group_role_error_admin" => "Insufficient permissions", - "markdown_content" => "Content", - "system_group" => "Users and departments", - "system_group_edit" => "Department management", - "system_group_role" => "Role", - "system_group_create" => "New department", - "system_group_name" => "Department name", - "system_group_father" => "Higher office", - "system_group_add" => "Add sub-department", - "system_group_remove" => "Remove the department", - "system_group_remove_tips" => "Are you sure to delete the department?
                  After deleting the user belonging to the department will be removed, the sub-department moves to the root sector", - "system_group_select" => "Choose department", - "system_group_select_result" => "Members will belong to", - "system_role_admin_tips" => "Remarks: System administrators are not authorized to control", - "system_member_action" => "User", - "system_member_add" => "Add User", - "system_member_role" => "Roles", - "system_member_role_select" => "Select", - "system_member_password_tips" => "Empty is not modified", - "system_set_home_path" => "Customize the directory", - "system_set_home_path_tips" => "The empty directory then uses the default directory", - "system_member_group" => "Where the department", - "system_member_group_edit" => "Editorial department", - "system_member_remove" => "Remove User", - "system_member_remove_tips" => "Confirm deleting users? After
                  deletion the user’s directory will be completely removed", - "system_member_set_role" => "Confirm the selected user group permissions?", - "system_member_remove_group" => "OK to remove the selected user from this group?", - "system_member_import" => "Batch add", - "system_member_import_desc" => "A user of each line,
                  those were already existed will be automatically ignored", - "system_member_use" => "Enable", - "system_member_unuse" => "Disable", - "system_member_space" => "Set user space size ", - "system_member_space_tips" => " Set user space size ", - "system_member_space_number" => " Must be a number!", - "system_member_group_config" => "Batch setting department", - "system_member_group_remove" => "Removed from the department", - "system_member_group_insert" => "Add to department", - "system_member_group_reset" => "Reset the department", - "system_member_group_error" => "Department error", - "system_group_action" => "Department management", - "system_role_add" => "Add role identity", - "system_role_read" => "Only Read", - "system_role_write" => "Read Write", - "system_setting_root_path" => "Root directory access", - "system_setting_root_path_desc" => "Only the system administrator can access all directories, and other rights groups can only see their own user directories.
                  If you want to enable or disable administrator access to other directories, you can modify the php open_basedir anti-cross-site parameters, how to set ", - "system_group_role_title" => "Departmental authority role management", - "system_group_role_remove" => "OK to delete department role", - "system_group_role_style" => "style", - "system_group_role_display" => "Displayed", - "system_group_role_display_desc" => "Set whether or not to display department user rights", - "role_type_name_read" => "Read", - "role_type_name_read:list" => "File List", - "role_type_name_read:info" => "File (folder) property view, folder search", - "role_type_name_read:copy" => "File copy", - "role_type_name_read:preview" => "File preview (picture, document, audio and video, etc.)", - "role_type_name_read:download" => "File (folder) download", - "role_type_name_write" => "Write", - "role_type_name_write:add" => "Create a file (folder), compress the extracted file", - "role_type_name_write:edit" => "Edit the save file", - "role_type_name_write:change" => "Rename, adjust the directory structure", - "role_type_name_write:upload" => "File (folder) upload, remote download", - "role_type_name_write:remove" => "File (folder) delete, cut", - "group_guest" => "Visitors", - "group_guest_desc" => "You are not a member of the department,
                  can only access the contents of [departmental shared directory], read-only permissions.", - "group_role_lebel_desc" => "You are a member of the department,
                  All documents within the department All rights reserved by the administrator", - "button_save_and_add" => "Save and continue", - "path_cannot_search" => "The directory does not support searching!", - "not_support" => "not supported!", - "group_not_exist" => "Group does not exist!", - "upload_clear_all" => "Clear all", - "upload_clear" => "Clear completed", - "upload_setting" => "Setting", - "upload_tips" => "Use piecewise upload, no longer limited to php.ini;", - "upload_exist" => "Duplicate files", - "upload_exist_rename" => "Rename", - "upload_exist_replace" => "Replace", - "upload_exist_skip" => "Skip", - "upload_add_more" => "Add more", - "more" => "More", - "system_setting" => "System", - "openProject" => "Open with Project", - "url_download" => "Download url", - "url_link" => "URL", - "app_type_link" => "Shortcut", - "createLink" => "Create Shortcut", - "createLinkHome" => "Send to desktop shortcuts", - "createProject" => "Add to project", - "only_read" => "Read Only", - "only_read_desc" => "No permission to write
                  ", - "not_read" => "Not Read", - "explorerNew" => "Kod link", - "zip_download_ready" => "Compression will automatically download, please wait...", - "set_background" => "As your desktop wallpaper", - "share" => "share it", - "my_share" => "My share", - "group_share" => "Group external sharing", - "share_edit" => "Edit share", - "share_remove" => "Cancel sharing", - "share_remove_tips" => "Are you sure you want to cancel sharing? The public connection will be invalidated.", - "share_path" => "Share the path", - "share_title" => "Information sharing", - "share_name" => "Share title", - "share_time" => "Expiration", - "share_time_desc" => "Empty is no expiration", - "share_password" => "Password", - "share_password_desc" => "Empty not password", - "share_cancle" => "Cancel share", - "share_create" => "Create Share", - "share_url" => "Share Link", - "share_not_download" => "Can't Download", - "share_not_download_tips" => "Prohibit the download share! ", - "share_code_read" => "Code", - "share_save" => "Save Configuration", - "share_error_param" => "Parameter error!", - "share_error_user" => "User information error!", - "share_error_sid" => "Share does not exist!", - "share_error_time" => "You come late, this share has expired!", - "share_error_path" => "The file does not exist, is deleted or moved away!", - "share_error_password" => "Password error!", - "share_error_show_tips" => "This file type does not support preview!", - "share_view_num" => "View:", - "share_download_num" => "Download:", - "share_open_page" => "Open sharing page", - "open_the_path" => "Goto the directory", - "recycle_clear" => "Clear trash", - "recycle_clear_success" => "Clear trash success.", - "recycle_clear_info" => "Are you sure clear recycle bin?", - "fav_remove" => "Cancel the collection", - "remove_item" => "Item", - "uploading" => "Uploading ", - "upload_tips_more" => "Too much files, it is recommended to upload compressed, and then extract the line!", - "uploading_move" => "In the merge transfer...", - "show_file" => "New page preview", - "unknow_file_title" => "File open tip!", - "unknow_file_tips" => "There is no application that supports this file, you can:", - "unknow_file_try" => "try", - "unknow_file_download" => "Download the file", - "unknow_plugin_search" => "Search for related application installation", - "config_save_error_auth" => "Error,no permission!", - "config_save_error_file" => "Error, the file does not write permission!", - "beautify_code" => "Code formatting", - "convert_case" => "Convert Case", - "convert_upper_case" => "Convert to uppercase", - "convert_lower_case" => "Convert to lowercase", - "editor_insert_time" => "current time ", - "editor_md5" => " Md5 encryption ", - "editor_qrcode" => " String two-dimensional code ", - "editor_regx" => " Regular expression testing ", - "editor_chinese" => " Simplified conversion ", - "editor_chinese_simple" => " Convert to Simplified Chinese ", - "editor_chinese_traditional" => " Convert to Traditional Chinese ", - "editor_base64" => "Base64 codec ", - "editor_base64_encode" => " Base64 encoding ", - "editor_base64_decode" => " Base64 decoding ", - "editor_url" => " URL codec ", - "editor_url_encode" => " URL encoding ", - "editor_url_decode" => " URL decoding ", - "editor_unicode" => " Unicode codec ", - "editor_unicode_encode" => " Unicode encoding ", - "editor_unicode_decode" => " Unicode decoding", - "editor_tools_select_tips" => " Please select the content you want to convert!", - "editor_calc" => "Free Calculator", - "shortcut" => "Shortcuts", - "use_free" => "Continue to use the free version", - "learn_more" => "Learn more", - "replace" => "Replace", - "selectAll" => "Select All", - "reload" => "Reload", - "about" => "About", - "complete_current" => "Autocompletion", - "view" => "View", - "tools" => "Tools", - "help" => "Help", - "not_exists" => "Not Exists", - "group_role_fileDownload" => "Download", - "group_role_share" => "Share", - "users_share" => "Sharing", - "system_setting_save" => "Security Settings", - "system_setting_menu" => "Menu management", - "system_name" => "Program name", - "system_name_desc" => "Logo program", - "system_desc" => "Program description", - "path_hidden" => "Directory exclusions", - "version_not_support" => "Your version does not support this operation, please go to the official website to buy advanced version!", - "version_not_support_number" => "As the number of restrictions do not support this operation, please go to the official website to buy advanced version!", - "path_hidden_desc" => "Exclude directories,split with ", - "new_user_folder" => "Default directory", - "new_user_folder_desc" => "Split with ", - "new_user_app" => "Default app", - "new_user_app_desc" => "Add user;default app", - "auto_login" => "Guest auto login", - "auto_login_desc" => "The default login user is guest/guest; after opening, ensure that the user exists", - "first_in" => "Login goto action", - "version_price_free" => "FREE", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory is not writable, please set the directory and all subdirectories to read and write and try again!", - "menu_name" => "Menu name", - "menu_hidden" => "Hide", - "menu_show" => "Show", - "menu_move_down" => "Down", - "menu_move_up" => "Up", - "menu_move_del" => "Remove", - "menu_open_window" => "New window", - "menu_sub_menu" => "Submenu", - "url_path" => "Url link", - "url_path_desc" => "Url or javascript", - "no_permission_read" => "Does not have read permissions", - "no_permission_download" => "Does not have download permissions", - "php_env_check" => "Environment check:", - "php_env_error" => "Php library missing", - "php_env_error_ignore" => "Ignore and enter", - "php_env_error_version" => "PHP version must be greater than 5.0", - "php_env_error_path" => "Can not write", - "php_env_error_list_dir" => "Your web server has a directory directory feature turned on, please disable this feature for security reasons! how? ", - "php_env_error_gd" => "php GD is not enabled", - "install_login" => "Use the following account to log in", - "install_enter" => "Enter", - "install_user_default" => "Administrator: {0} / (below set a password)
                  Average user: {1}
                  Guest users: {2}", - "login_root_password" => "Set the administrator password", - "login_root_password_repeat" => "Confirm the password again", - "login_root_password_equal" => "Two passwords are inconsistent!", - "login_root_password_tips" => "Please set admin's password!", - "forget_password" => "Forget Password", - "forget_password_tips" => "Forgot Administrator Password:
                  Please log into the server and delete ./data/system/install.lock reset;

                  Non-administrator Forgot Password:
                  Please contact the administrator to reset!", - "copyright_desc" => "Kodexplorer is a highly acclaimed web document management system that you can use for internal document management or sharing. It can also be used to manage web sites on the server, replace Ftp, and even be developed directly as web IDE. At the same time you can also secondary development of this program integrated into your existing system.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Kod online explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Kod online explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "Kodlplorer, kod, kodCloud, webos, web etc, php filemanage, filemanage, can cloud, mango cloud, document management system, enterprise cloud disk, resource manager, online document, online office, online office, online CAD preview, online editing , Online editor", - "kod_meta_description" => "KodExplorer is the industry's leading government / enterprise private cloud and online document management system for the personal website, corporate private cloud deployment, network storage, online document management, online office, etc. to provide safe and easy, easy Use, can be highly customized private cloud products. Using windows-style interface, operating habits, no need to adapt to quickly get started to support hundreds of commonly used file format online preview, playback and editing, environment-friendly, powerful, is a trial, no longer can not be separated from the private Cloud products.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Login", - "guest_login" => "Guest", - "username" => "Login account", - "userNickName" => "User's Nickname", - "password" => "Password", - "login_code" => "Verification", - "need_check_code" => "Need Verification", - "need_check_code_desc" => "After logging on, you must enter the verification code.", - "setting_csrf_protect" => "Open csrf protection", - "setting_csrf_protect_desc" => "Open after the effective protection csrf class attack", - "login_rember_password" => "Remember me", - "setting_show_root_group" => "List all departments", - "setting_show_root_group_desc" => "Tree directory root department whether to list all departments", - "setting_show_share_user" => "List all users", - "setting_show_share_user_desc" => "Tree directory root department is listed for all user sharing", - "setting_clear_user_recycle" => "Clear all user recycle", - "setting_clear_cache" => "Clear cache", - "setting_icp" => "Copyright or record number", - "setting_global_css" => "Customize global css", - "setting_global_css_desc" => "All pages will be inserted in custom css", - "setting_global_html" => "Statistical code", - "setting_global_html_desc" => "All pages will be inserted into this html code, you can place third-party statistics", - "us" => "kodcloud.com", - "login_not_null" => "User name and password cannot be empty!", - "code_error" => "Verification code error", - "password_error" => "Username or password error!", - "password_not_null" => "Password cannot be empty!", - "old_password_error" => "Old password error!", - "permission" => "Permission", - "permission_edit" => "Permission Edit", - "file_info_owner" => "Owner", - "file_info_group" => "Group", - "no_permission" => "User without permission!", - "no_permission_ext" => "This type of file without permission", - "dialog_max" => "Maximize", - "dialog_min" => "Minimize", - "dialog_min_all" => "Hide all", - "dialog_display_all" => "Display all", - "dialog_close_all" => "Close all", - "open" => "Open", - "others" => "Others", - "open_with" => "Open with ...", - "close" => "Close", - "close_all" => "Close all", - "close_left" => "Close the label on the left", - "close_right" => "Close the label on the right", - "close_others" => "Close others", - "loading" => "Loading...", - "warning" => "Warning", - "getting" => "Retrieving data...", - "sending" => "Sending...", - "data_error" => "Data error! ", - "get_success" => "Success!", - "save_success" => "Saved successfully!", - "success" => "Successful operation", - "error" => "Operation failed", - "error_repeat" => "Operation failed, the name already exists!", - "word_error" => "failure ", - "word_success" => " success", - "system_error" => "System error", - "name" => "Name", - "type" => "Type", - "contain" => "Contains", - "address" => "Position", - "size" => "Size", - "byte" => "Byte", - "path" => "Path", - "action" => "Operation", - "create_time" => "Create time", - "modify_time" => "Modified", - "last_time" => "Last visited", - "sort_type" => "Sort of way", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "Public path", - "system_path_not_change" => "System path,Can't edit", - "file" => "File", - "folder" => "Folder", - "copy" => "Copy", - "past" => "Paste", - "clone" => "Duplicate", - "cute" => "Cut", - "cute_to" => "move to...", - "copy_to" => "copy to...", - "remove" => "Delete", - "remove_force" => "Remove completely", - "info" => "Get info", - "list_type" => "View", - "list_icon" => "Icons", - "list_list" => "List", - "list_list_split" => "Columns", - "sort_up" => "Asc", - "sort_down" => "Desc", - "order_type" => "Sort by", - "order_desc" => "Desc", - "order_asc" => "Asc", - "rename" => "Rename", - "add_to_fav" => "Add to Favorites", - "search_in_path" => "Folder search", - "add_to_play" => "Add to playlist", - "manage_fav" => "Manage Favorites", - "refresh_tree" => "Reload tree", - "manage_folder" => "Show in Finder", - "close_menu" => "Close menu", - "zip" => "Create archive", - "unzip" => "Extract to ...", - "unzip_folder" => "Folder", - "unzip_this" => "Extract to here", - "unzip_to" => "Extract to ...", - "zipview_file_big" => "The file is too large, please extract and then preview!", - "clipboard" => "View clipboard", - "clipboard_clear" => "Clear the clipboard", - "full_screen" => "Full screen", - "folder_info_item" => " items", - "folder_info_item_select" => " selected", - "file_load_all" => "[Double click and load all ...]", - "tips" => "Tips", - "ziping" => "Archive loading...", - "unziping" => "Unzip loading...", - "moving" => "Move file", - "remove_title" => "Delete confirmation", - "remove_info" => "Confirmation remove the selected?", - "remove_title_force" => "delete permanently", - "remove_info_force" => "Are you sure you want to permanently delete this document?", - "name_isexists" => "Error,the name already exists! ", - "install" => "Install", - "width" => "Width", - "height" => "Height", - "app" => "Light App", - "app_store" => "Light App", - "app_create" => "Create app", - "app_edit" => "Edit app", - "app_group_all" => "All", - "app_group_game" => "Game", - "app_group_tools" => "Tools", - "app_group_reader" => "Read", - "app_group_movie" => "Movie", - "app_group_music" => "Music", - "app_group_life" => "Life", - "app_group_others" => "Others", - "app_desc" => "Description", - "app_icon" => "Logo", - "app_icon_show" => "Image url or such:", - "app_group" => "Group", - "app_type" => "Type", - "app_type_url" => "Link frame", - "app_type_code" => "Widget", - "app_display" => "Display", - "app_display_border" => "No border(if selected)", - "app_display_size" => "Can resize(if selected)", - "app_size" => "Size", - "app_url" => "Url address", - "app_code" => "Js code", - "edit" => "Edit", - "edit_can_not" => "Is not a text file", - "edit_too_big" => "Cannot be greater than 40M", - "open_default" => "Default mode", - "open_ie" => "Open in browser", - "refresh" => "Reload", - "refresh_all" => "Reload forced", - "newfile" => "New file", - "newfile_save_as" => "Save as ...", - "newfolder" => "New folder", - "newothers" => "New other", - "path_loading" => "Loading...", - "go" => "Go!", - "go_up" => "Go to parent directory", - "history_next" => "Forward", - "history_back" => "Back", - "address_in_edit" => "Click to enter the edit", - "double_click_rename" => "Double click the title rename", - "double_click_open" => "Double click to open", - "path_null" => "Folder is empty!", - "file_size_title" => "File icon size", - "file_size_small_super" => "Super small", - "file_size_small" => "Small", - "file_size_default" => "Default", - "file_size_big" => "Big", - "file_size_big_super" => "Super Big", - "upload" => "Upload", - "upload_ready" => "Loading ", - "upload_success" => "Uploaded successfully", - "upload_path_current" => "Current", - "upload_select" => "Select", - "upload_max_size" => "Upload max size", - "upload_size_info" => "Please amend the maximum value allowed upload in php.ini. Greater than the configuration will be automatically filtered.", - "upload_error" => "Upload failed", - "upload_error_http" => "Network or firewall error", - "upload_muti" => "Multiple file upload", - "upload_drag" => "Drag and drop upload", - "upload_drag_tips" => "Release can be uploaded!", - "path_not_allow" => "File name not allowed", - "download" => "Download", - "downloading" => "downloading...", - "download_address" => "download link", - "download_ready" => "Download start", - "download_success" => "Download success! ", - "download_error" => "Download_error.", - "download_error_create" => "Create file error.", - "download_error_exists" => "Link to file failed!", - "upload_error_null" => "No files!", - "upload_error_big" => "File size too big", - "upload_error_move" => "Move file failed! ", - "upload_error_exists" => "File already exists", - "upload_local" => "Local upload", - "download_from_server" => "Remote download", - "save_path" => "Save path", - "upload_select_muti" => "Select multiple files upload", - "search" => "Search", - "searching" => "Searching...", - "search_result" => "Search Results", - "seach_result_too_more" => "Search results are too many, it is recommended to change a directory or word", - "search_null" => "No search results!", - "search_uplow" => "Ignore case", - "search_content" => "File contents ", - "search_info" => "Please enter a search term and path search! ", - "search_ext_tips" => "Separated by |;such as php|js|css
                  if null search in default text file", - "file_type" => "File type", - "goto" => "Jump to", - "server_dwonload_desc" => "Task is added to the download list", - "parent_permission" => "Parent permission", - "root_path" => "Home", - "project_root_path" => "Project", - "lib" => "Library", - "fav" => "Bookmarks", - "desktop" => "Desktop", - "browser" => "Browser", - "my_computer" => "My computer", - "recycle" => "Recycle", - "my_document" => "My documents", - "my_picture" => "My photos", - "my_music" => "My music", - "my_movie" => "My video", - "my_download" => "My download", - "ui_desktop" => "Desktop", - "ui_explorer" => "Explorer", - "ui_editor" => "Editor", - "adminer" => "Adminer", - "ui_project_home" => "Project home", - "ui_login" => "Login", - "ui_logout" => "Logout", - "setting" => "Setting", - "setting_title" => "Option", - "setting_user" => "Basic", - "setting_password" => "Change password", - "setting_password_old" => "Old password", - "setting_password_new" => "New password", - "setting_language" => "Language", - "setting_member" => "Member", - "setting_group" => "Group", - "setting_group_add" => "Add user group", - "setting_group_edit" => "Edit user group", - "setting_theme" => "Theme", - "setting_wall" => "Wallpaper settings", - "setting_wall_desktop" => "Desktop Wallpapers", - "setting_wall_desktop_list" => "Desktop Wallpaper Management", - "setting_wall_login_list" => "Login Wallpaper Management", - "setting_wall_login_tips" => "Tip : When there is more than one piece, the login interface background will rotate randomly", - "setting_wall_diy" => "Custom wallpaper:", - "setting_wall_info" => "Url address,the local images can right picture browser open to get", - "setting_fav" => "Bookmark management", - "setting_help" => "Help", - "setting_about" => "About", - "setting_success" => "Setting successfully.", - "can_not_repeat" => "Name already exists!", - "absolute_path" => "Absolute path", - "group" => "User group", - "data_not_full" => "Data submission incomplete! ", - "default_user_can_not_do" => "Default user cannot operate", - "default_group_can_not_do" => "Default user groups cannot operate", - "username_can_not_null" => "User name cannot be empty! ", - "groupname_can_not_null" => "Group name cannot be empty! ", - "groupdesc_can_not_null" => "User group description cannot be empty! ", - "group_move_user_error" => "Belong to groups of users move failed", - "group_already_remove" => "The user group is deleted", - "group_not_exists" => "The user group does not exist", - "member_add" => "Add user", - "password_null_not_update" => "Empty representative not to modify the password", - "if_save_file_tips" => "Some files are not saved. Are you sure to close the window?", - "if_save_file" => "File has not been saved", - "if_remove" => "To confirm the deletion", - "member_remove_tips" => "Delete the user directory will be empty", - "group_remove_tips" => "Delete the user group
                  (need to set user group)", - "group_name" => "Group name", - "group_name_tips" => "Not allowed to repeat", - "group_desc" => "Group desc", - "group_desc_tips" => "Group display", - "group_role_ext" => "Extension permission", - "group_role_ext_tips" => "Separated by |;such as php|js|css", - "group_role_file" => "File explorer", - "group_role_upload" => "Upload", - "group_role_user" => "User data", - "group_role_group" => "Group", - "group_role_member" => "Member", - "group_role_mkfile" => "Make file", - "group_role_mkdir" => "Make dir", - "group_role_pathrname" => "Path rename", - "group_role_pathdelete" => "File deletion", - "group_role_pathinfo" => "File properties", - "group_role_pathmove" => "Move(copy/cute/past/drag to)", - "group_role_zip" => "compression", - "group_role_unzip" => "Decompression", - "group_role_search" => "Search", - "group_role_filesave" => "Edit and save", - "group_role_can_upload" => "Upload", - "group_role_download" => "Server download", - "group_role_passowrd" => "Change password", - "group_role_config" => "User data", - "group_role_fav" => "Bookmark operation (add / edit / delete)", - "action_list" => "List", - "action_add" => "Add", - "action_edit" => "Edit", - "action_del" => "Remove", - "group_role_ext_warning" => "Not allowed to specify the type of file upload,
                  rename (renamed the specified extension),
                  edit,save, remote download,unzip", - "group_tips" => "
                • 1. The user group name cannot be duplicated. After the group name is modified, it belongs to the reorganized user and is automatically associated.
                • 2. Extensions limit the relationship between system security, please be cautious (if you create a new php in the web directory; it means that changing the program's permissions to this user is virtually impossible)
                • 3. Household management, rights group management; viewing rights and adding, deleting, and modifying rights are bound; programs are automatically associated
                • 4. After the permission group is set to add the permission group, the subsequent permission is not inherited (this permission is equivalent to the highest permission).
                • ", - "not_null" => "Required cannot be empty!", - "picture_can_not_null" => "Picture address can not be empty!", - "rname_success" => "Rename success! ", - "please_inpute_search_words" => "Keypress 'Enter' to search", - "remove_success" => "Deleted successfully! ", - "remove_fali" => "Delete failed!", - "clipboard_null" => "Clipboard is empty! ", - "create_success" => "Create successful! ", - "create_error" => "Create failed,please check the directory permissions! ", - "copy_success" => "[copy]covering the clipboard copy success!", - "cute_success" => "[cut]covering the clipboard success!", - "clipboard_state" => "Clipboard state:", - "no_permission_write_all" => "Can not write,check the permission", - "no_permission_write_file" => "File can not write,check the permission", - "no_permission_read_all" => "File can not read,check the permission", - "copy_not_exists" => "Source does not exist", - "current_has_parent" => "The destination folder is a subfolder of the source folder!", - "past_success" => "Paste operation completed ", - "cute_past_success" => "Cut operation completed (The source file is deleted and the clipboard is empty)", - "zip_success" => "Compressed", - "not_zip" => "Not compressed file", - "zip_null" => "Did not choose the file or directory", - "unzip_success" => "Unzip Success!", - "gotoline" => "Jump to line", - "path_is_current" => "Open path and the path!", - "path_exists" => "Name already exists! ", - "undo" => "Undo", - "redo" => "Redo", - "preview" => "Preview", - "wordwrap" => "Wrapping", - "show_gutter" => "Show Gutter", - "char_all_display" => "Show Invisibles", - "auto_complete" => "Auto complete", - "auto_save" => "Automatically save", - "function_list" => "Function List", - "code_theme" => "Code Theme", - "font_size" => "Font Size", - "confirm" => "Are you sure you want to do this?", - "button_ok" => "Ok", - "button_submit" => "Submit", - "button_set" => "Set", - "button_cancel" => "Cancel", - "button_edit" => "Edit", - "button_save" => "Save", - "button_apply" => "Apply", - "button_save_all" => "Save all", - "button_not_save" => "Don’t save", - "button_add" => "Add", - "button_back_add" => "Add and back", - "button_del" => "Delete", - "button_save_edit" => "Save", - "button_save_submit" => "Save and send", - "button_more" => "More", - "button_select_all" => "Select / unselect all", - "charset_AUTO" => "Automatic Identification", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Arabic", - "charset_ISO_8859_6" => "Arabic", - "charset_ISO_8859_10" => "Nordic language", - "charset_CP1257" => "The surrounding language of the Baltic Sea", - "charset_ISO_8859_13" => "The surrounding language of the Baltic Sea", - "charset_ISO_8859_4" => "The surrounding language of the Baltic Sea", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "Georgian", - "charset_PT154" => "Kazakhstan", - "charset_CP949" => "Korean", - "charset_EUC_KR" => "Korean", - "charset_GB18030" => "Simplified Chinese", - "charset_GBK" => "Simplified Chinese", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "Lao text", - "charset_ISO_8859_16" => "Romanian", - "charset_ISO_8859_3" => "Southern European languages", - "charset_EUC_JP" => "Japanese", - "charset_ISO_2022_JP" => "Japanese", - "charset_SHIFT_JIS" => "Japanese", - "charset_KOI8_T" => "Tajik", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "Turkish", - "charset_CP1251" => "Cyril", - "charset_ISO_8859_5" => "Cyril", - "charset_KOI8_R" => "Cyril", - "charset_KOI8_U" => "Cyril", - "charset_CP1252" => "Western European languages", - "charset_ISO_8859_1" => "Western European languages", - "charset_ISO_8859_15" => "Western European languages", - "charset_Macintosh" => "Western European languages", - "charset_CP1255" => "Hebrew", - "charset_ISO_8859_8" => "Hebrew", - "charset_CP1253" => "Greek", - "charset_ISO_8859_7" => "Greek", - "charset_ARMSCII_8" => "Armenian", - "charset_CP1258" => "Vietnamese", - "charset_VISCII" => "Vietnamese", - "charset_CP1250" => "Central European language", - "charset_ISO_8859_2" => "Central European language", - "charset_default_set" => "File encoding", - "charset_convert_save" => "Save the file encoding as", - "PluginCenter" => "Plugin center", - "PluginBuy" => "Purchase authorization", - "PluginInstalled" => "Installed", - "PluginUpdate" => "Update", - "PluginListNull" => "No content!", - "PluginType" => "classification", - "PluginTypeAll" => "All", - "PluginTypeFile" => "File enhancement", - "PluginTypeSafe" => "Safety tools", - "PluginTypeTools" => "Utilities", - "PluginTypeMedia" => "Media", - "PluginTypeOthers" => "Other", - "PluginInstall" => "Install", - "PluginEnable" => "Enable", - "PluginDisable" => "Disabled", - "PluginRemove" => "Uninstall", - "PluginConfig" => "Configure", - "PluginStatus" => "Status", - "PluginStatusEnabled" => "Activated", - "PluginStatusDisabled" => "Not Enabled", - "PluginStatusNotInstall" => "Not Installed", - "PluginInstalling" => "Installing...", - "PluginHasUpdate" => "There is an update", - "PluginUpdateStart" => "Update the plugin", - "PluginNeedConfig" => "Need to initialize the configuration to enable", - "PluginConfigNotNull" => "Required fields can not be empty!", - "PluginOpen" => "Turn on", - "PluginAuther" => "The author", - "PluginVersion" => "Version", - "PluginDownloadNumber" => "Number of installs", - "PluginBack" => "Back", - "PluginReadme" => "Description", - "PluginResetConfig" => "Restore the default settings", - "PluginInstallSelf" => "Manual installation", - "Plugin.config.auth" => "Use permission", - "Plugin.config.authDesc" => "Set the owner to use, or specify the user, user group, permission group can be used", - "Plugin.config.authOpen" => "Open access", - "Plugin.config.authOpenDesc" => "No need to visit can be accessed, can be used for external interface call", - "Plugin.config.authAll" => "Everyone", - "Plugin.config.authUser" => "User", - "Plugin.config.authGroup" => "Department", - "Plugin.config.authRole" => "Rights Groups", - "Plugin.Config.openWith" => "Open style", - "Plugin.Config.openWithDilog" => "Internal dialog box", - "Plugin.Config.openWithWindow" => "The new page opens", - "Plugin.Config.fileSort" => "Extension associated priority", - "Plugin.Config.fileSortDesc" => "The higher the extension, the higher the priority", - "Plugin.Config.fileExt" => "Supported file formats", - "Plugin.Config.fileExtDesc" => "Associate the extension to the plugin", - "Plugin.tab.basic" => "Basic Settings", - "Plugin.tab.auth" => "Permission settings", - "Plugin.tab.others" => "Other settings", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Web preview", - "Plugin.default.picasa" => "Picasa image", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "JPlayer player", - "Plugin.auth.viewList" => "Plugin list", - "Plugin.auth.setting" => "Plugin settings", - "Plugin.auth.status" => "on off", - "Plugin.auth.install" => "Install/uninstall", - "Explorer.UI.openWith" => "Choose the way to open", - "Explorer.UI.openWithText" => "Notepad open", - "Explorer.UI.appSetDefault" => "Set the default to open", - "Explorer.UI.appAwaysOpen" => "Always use the selected program to open this file", - "Explorer.UI.selectAppDesc" => "Select the program you want to use to open this file", - "Explorer.UI.selectAppWarning" => "Please choose to apply!", - "Explorer.UI.appTypeSupport" => "Supported", - "Explorer.UI.appTypeAll" => "All applications", - "kodApp.oexe.edit" => "Edit light application", - "kodApp.oexe.open" => "Open the light application" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/es/about.html b/plugin/document/kod/config/i18n/es/about.html deleted file mode 100644 index 5a88a90ae..000000000 --- a/plugin/document/kod/config/i18n/es/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer es ¿Qué?
                  -

                  KODExplorer es una gestión de documentos en línea basado en la Web de código abierto, editor de código. Proporciona una especie de interfaz de usuario de Windows clásico, un juego de gestión de documentos en línea, vista previa de archivos, editar, cargar, descargar, descomprimir la reproducción de música en línea. Le permite alcanzar el desarrollo web directamente en el navegador, el código fuente de archivos de previsualización, y despliega el propietario del sitio y la operación local tan fácil, rápida y segura experiencia.

                  -

                  - diseño -

                  -

                  tradición clásica, la búsqueda de la innovación, para proporcionar a los usuarios conveniente, seguro y fácil de usar sistema de gestión de la nube en línea.

                  -

                  siempre que (cuando), donde (dónde), tiene la web siempre que lo desee (quiere) es su herramienta de gestión (4W política).

                  -

                  -

                  -

                  Actualmente sistema de gestión KODExplorer ubicada principalmente en el alojamiento de la nube personal, pequeña - orientada a los usuarios la gestión de la nube empresarial de recursos, gestión de discos de red, gestión de sitios pequeños y medianos. Web Developer y Master (veteranos): editor en línea, copia de seguridad comprimida, despliegue, operación clásica interfaz de Windows, fácil de empezar y deshacerse de la SSH anfitrión, comando ftp operaciones de taladrado complejas.

                  -

                  nube personal privada (novato): Gestión de recursos de disco de red, el mismo funcionamiento de la interfaz clásica de Windows, se puede colocar la unidad de exploración de red de música, archivos de pantalla, la carga y descarga rápida y fácil.

                  -
                  - -
                  -
                  características
                  -

                  gestión integral de documentos, potente editor de archivos en línea

                  -

                  donde quiera que esté, puede administrar sus archivos, y de entretenimiento en línea, la escritura de código en línea! Así como adecuados para uso como el sistema operativo.

                  -

                  extensa experiencia del trasplante local de operación de la derecha, arrastre, caja de selección, accesos directos, búsqueda de archivos (contenido de búsqueda) ......

                  -

                  cuadro de selección, movimiento de arrastre, arrastrar y soltar la carga, editor en línea, reproductor de vídeo, descomprimir. Plena garantía de ejecución ajax y la experiencia!

                  -

                  cada función perfecta conexión directa, en forma de diálogo, las funciones de gestión multi-tarea

                  -

                  Editor soporta multi-documento, el apoyo ZendCoding html, CSS, JS mayor eficiencia de codificación!

                  -

                  apoyo chino perfecto, ilegible resolver diversas situaciones;

                  -
                  - -
                  -
                  de código abierto adopción de tecnología
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) Js marco de desarrollo de la corriente principal. El funcionamiento de la operación Dom, lista de materiales, operación CSS, Ajax y el paquete

                  -

                  2.ArtDialog:un diseño hermoso, fuerte compatibilidad del navegador Reproductor de diálogo. Así emergente mango, eventos y transmisión de datos para obtener una mejor gestión unificada

                  -

                  3.Ztree:control de lista de árbol, la escalabilidad es muy widget de fuerte manipulación de datos de árbol

                  -

                  4.codemirror:un editor de código js plugins, es compatible con una variedad de lenguajes de programación para poner de relieve

                  -

                  5.zendcoding:unos códigos html apoyo de escritura rápida plug-ins. Simplifica la definición de código está escrito. simple recopilación

                  -

                  6.less:un modelo de desarrollo css funcional eficiente de mejorar el extremo frontal hojas de estilo CSS reutilización . simple recopilación

                  -

                  7.SWFUpload:archivo flash carga

                  -

                  8 .CMP4:un muy buen flash player plugin archivos multimedia, soporte para streaming media, muy popular herramienta de reproducción de vídeo de música. El apoyo a la piel, la configuración altamente configurables. Lista dinámicos en XML cargado. mms medios de transmisión, licencia de código abierto compatible con la reproducción de medios rstp

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/es/edit.html b/plugin/document/kod/config/i18n/es/edit.html deleted file mode 100644 index 7e9484a9f..000000000 --- a/plugin/document/kod/config/i18n/es/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  funcionalidad rica

                  -

                  Código solicita automáticamente

                  -

                  Multi-tema: Elija su estilo de programación favorita

                  -

                  Fuente personalizado: para su uso en la escena

                  -

                  cursor de edición de múltiples, edición de bloques experiencia en programación en línea comparable a lo sublime

                  -

                  Bloque de plegado, expanda; envolver

                  -

                  Soporte para múltiples ventanas, arrastre la secuencia de conmutación;

                  -

                  El mantenimiento de múltiples documentos, buscar y reemplazar; Historia;

                  -

                  Auto-completo [], {}, (), '' ''

                  -

                  Vista previa en línea en tiempo real que le permite caer en el amor con la programación en línea!

                  -

                  zendcodeing apoyo, escribir código ochenta

                  -

                  Más características en espera de su descubrimiento ......

                  -
                  -
                  -

                  150 tipos de código de relieve

                  -

                  Consejo: HTML, JavaScript, CSS, menos, Sass, SCSS

                  -

                  desarrollo web: PHP, Perl, Python, Ruby, elang, vaya ...

                  -

                  lenguajes tradicionales: Java, C, C ++, C #, ACTIONSCRIPT, VBScript ...

                  -

                  Otros: reducción del precio, cáscara, sql, lua, xml, yaml ...

                  -
                  -
                  -
                  -
                  -

                  Acción Atajo

                  -
                   atajos de uso común: 
                  - ctrl + s para ahorrar 
                  - Ctrl + A Seleccionar todo Ctrl + X Cortar 
                  - Ctrl + C Ctrl + v copiar y pegar 
                  - Ctrl + Z Deshacer Deshacer anti Ctrl + Y 
                  - Ctrl + F para encontrar el reemplazo ctrl + f + f 
                  - Win + alt + 0 Reducir todo Win + Alt + Shift + 0 Ampliar Todo 
                  - esc [Búsqueda Salir cancela automáticamente le pide ...] 
                  - Ctrl-Shift-s Vista previa 
                  - Ctrl-Shift-E muestran y cerrar la función 
                  -
                  -
                   Elija: 
                  - Ratón carpa - arrastre 
                  - shift + Inicio / Fin / arriba / izquierda / abajo / derecha 
                  - shift + Re Pág / Av Pág voltear hacia arriba y hacia abajo para seleccionar 
                  - Ctrl + Shift + inicio / final de la actual del cursor hasta el principio y el fin 
                  - alt + del ratón para arrastrar la selección de bloques 
                  - ctrl + alt + g lotes seleccione e introduzca el actual editor de multi-tab 
                  -
                  -
                   cursor: 
                  - Inicio / Fin / arriba / izquierda / abajo / derecha 
                  - casa ctrl + / final mover el cursor al documento cabeza / cola 
                  - Ctrl + P Ir a la etiqueta a juego 
                  - PAGEUP / PageDown cursor arriba y abajo 
                  - alt + flecha izquierda / derecha para pasar a la parte superior de la línea de 
                  - shift + cursor izquierda / derecha hasta el final de la línea y 
                  - Ctrl + L para saltar a una fila específica 
                  - ctrl + alt + arriba / abajo (abajo) aumentar el cursor 
                  -
                  -
                   Editar: 
                  - ctrl + / Comentario y ctrl + alt + elimine el comentario de un justificado 
                  - la alineación de cambio pestaña mesa + mesa de avance global 
                  - eliminar eliminar eliminar toda la línea de ctrl + d 
                  - Ctrl + Suprimir para suprimir la fila en la palabra correcta 
                  - ctrl / shift + tecla de retroceso para borrar la palabra de la izquierda 
                  - alt + shift + arriba / abajo y se añaden a la línea de copia de avión (continuación) 
                  - Alt + Supr para borrar el contenido de la derecha del cursor 
                  - alt + arriba / abajo en la línea actual y la línea (al lado de cambio de línea) 
                  - SHIFT + D + ctrl filas copian y se añaden a la siguiente 
                  - Ctrl + Suprimir para suprimir la derecha de la palabra 
                  - + Shift + ctrl u convertidos a minúsculas 
                  - Ctrl + U texto seleccionado a mayúsculas 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/es/help.html b/plugin/document/kod/config/i18n/es/help.html deleted file mode 100644 index 039f7640d..000000000 --- a/plugin/document/kod/config/i18n/es/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  gestión de archivos
                  -

                  Selección de archivos: la radio, la carpa del ratón,, ctrl elegida al azar, el teclado hacia arriba y hacia abajo, el hogar, la selección final de las elecciones cambiar.

                  -

                  operación de archivo: Después de seleccionar un archivo, puede copiar, cortar, borrar, ver las propiedades de compresión, renombrar, presentación preliminar abierta y otras operaciones ......

                  -

                  Carga de archivos: Subir varios archivos por lotes; html5 carga de arrastre (arrastre para subir a la perfección ventana, arrastrar y soltar el apoyo a las carpetas)

                  -

                  Función: de derecha-archivo, carpeta, haga, más justo después de la operación de elección, escritorio, derecha, derecha árbol de directorios, accesos directos del menú encuadernados a la derecha
                  - (Seleccionar todo - Copia - Cut - Pegar - Eliminar - Renombrar, ......)

                  -

                  Explorador de archivos: el modo de lista, el modo de icono, haga doble clic en sub-carpetas, la operación barra de direcciones, abrir un registro contraria registro de carpetas (hacia delante y hacia atrás)

                  -

                  Soporte de arrastrar y soltar: Comprobar arrastre, corte para lograr la función carpeta especificada

                  -

                  Teclas de acceso directo: eliminar eliminar, Ctrl + A Seleccionar todo, Ctrl + C para copiar, + X Cortar, búsqueda de archivos (contenido de búsqueda) ctrl

                  -
                  -
                  -
                  Vista previa de archivos
                  -

                  Previsualización de archivos: ver el contenido de un archivo de texto de edición y el ahorro; html, previsualización de archivos SWF,

                  -

                  Imagen de previsualización de: generación automática de imágenes en miniatura, presentación de diapositivas de imágenes;

                  -

                  La reproducción de audio: reproducir música en línea y los archivos de vídeo, el apoyo MP3, WMA, mediados, AAC, WAV, MP4,

                  -

                  Vídeo: reproducción de vídeo en línea, con el apoyo formatos: FLV, F4V, 3gp

                  -

                  Oficina: Vista previa en línea, con el apoyo formatos: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Los accesos directos
                  -

                  introducir abierto

                  -

                  Ctrl + A Seleccionar todo

                  -

                  Ctrl + C para copiar el seleccionado

                  -

                  Ctrl + V para pegar

                  -

                  Ctrl + X Cortar

                  -

                  Ctrl + F para buscar el directorio actual

                  -

                  alt + n nuevo archivo

                  -

                  alt + m Nueva carpeta

                  -

                  Eliminar Borrar seleccionado

                  -

                  Volver retroceso

                  -

                  Ctrl + tecla de retroceso hacia adelante

                  -

                  F2 Cambiar nombre seleccionado (carpeta)

                  -

                  Inicio / Fin / arriba / abajo / izquierda / derecha para seleccionar el archivo

                  -

                  Compruebe con cualquier tecla para presionar la primera letra de los archivos y carpetas de caracteres seleccionada ciclo automático

                  -
                  diff --git a/plugin/document/kod/config/i18n/es/main.php b/plugin/document/kod/config/i18n/es/main.php deleted file mode 100644 index 838a8fb3a..000000000 --- a/plugin/document/kod/config/i18n/es/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Por favor, seleccione el archivo ...", - "path_api_select_folder" => "Por favor, seleccione una carpeta ...", - "path_api_select_image" => "Por favor, seleccione una imagen ...", - "share_can_upload" => "Permitir cargas", - "move_error" => "no se pudieron mover", - "setting_basic" => "Configuración básica", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Abrir Animación", - "recycle_open_if" => "Abra la Papelera de reciclaje", - "recycle_open" => "abierto", - "setting_user_recycle_desc" => "Después de la eliminación se eliminará directamente eliminación física", - "setting_user_animate_desc" => "Ventana abierta y otra animación", - "setting_user_sound_desc" => "Operación de sonido", - "setting_user_imageThumb" => "Miniaturas de imágenes", - "setting_user_imageThumb_desc" => "Mejor experiencia de navegación después de la apertura", - "setting_user_fileSelect" => "Abrir la comprobación del icono del archivo", - "setting_user_fileSelect_desc" => "Archivo icono de la izquierda clave de verificación, haga clic en el menú de acceso directo", - "qrcode" => "URL del código QR", - "theme_mac" => "blanco minimalista Mac", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Azul del Metro Classic", - "theme_metro_green" => "Metro luz verde", - "theme_metro_purple" => "Metro elegante púrpura", - "theme_metro_pink" => "metro Rose", - "theme_metro_orange" => "naranja brillante Metro", - "theme_alpha_image" => "Brillante - vuelo", - "theme_alpha_image_sun" => "Brillante - puesta del sol", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "personalizada", - "theme_diy_title" => "Configuración personalizada del tema", - "theme_diy_background" => "fondo", - "theme_diy_image" => "imagen", - "theme_diy_color_blur" => "degradado de color", - "theme_diy_image_blur" => "las tomas borrosas", - "theme_diy_image_url" => "dirección fotos", - "theme_diy_color_start" => "color de partida", - "theme_diy_color_end" => "color final", - "theme_diy_color_radius" => "ángulo de gradiente", - "system_role_admin_set" => "Los administradores tienen todos los derechos, sin establecer!", - "login_error_user_not_use" => "El usuario ha sido desactivado! Por favor, póngase en contacto con el administrador", - "login_error_kod_version" => "conflicto de versiones", - "login_error_role" => "grupo de permisos de vista no existe, por favor, póngase en contacto con el administrador", - "no_permission_group" => "Usted no está en este grupo!", - "no_permission_write" => "El directorio no tiene permiso de escritura", - "user" => "usuario", - "save_as" => "guardar como", - "check_update" => "actualización", - "keyboard_type" => "El modo de teclado", - "font_family" => "Fuentes", - "code_mode" => "El resaltado de sintaxis", - "path_can_not_share" => "Sólo admite compartir sus propios documentos!", - "path_can_not_action" => "Este directorio no es compatible con esta operación!", - "wap_page_pc" => "Versión PC", - "wap_page_phone" => "móvil", - "image_size" => "dimensiones de la imagen", - "no_permission_action" => "Usted no tiene este permiso, por favor, póngase en contacto con el administrador!", - "path_is_root_tips" => "Se ha llegado al directorio raíz!", - "kod_group" => "organización", - "my_kod_group" => "Estoy en el departamento", - "space_tips_default" => "(GB) 0 sin límite", - "space_tips_full" => "sin limitar", - "space_size" => "espacio", - "space_size_use" => "El uso de espacio", - "space_is_full" => "No queda suficiente espacio, póngase en contacto con el administrador.", - "system_open_true_path" => "Éxito abierto en el gestor de archivos!", - "group_role_error" => "error de permisos de función (no hay configuración de permisos)", - "group_role_error_admin" => "permisos insuficientes", - "markdown_content" => "Tabla de Contenidos", - "system_group" => "Usuarios y departamentos", - "system_group_edit" => "Gerencia del departamento", - "system_group_role" => "identidad de rol", - "system_group_create" => "Nuevo departamento", - "system_group_name" => "Nombre del departamento", - "system_group_father" => "Departamento superior", - "system_group_add" => "Añadir subdepartamento", - "system_group_remove" => "Eliminar el departamento", - "system_group_remove_tips" => "¿Estás seguro de eliminar el departamento?
                  Después de eliminar la eliminación de la parte del usuario, el subsector se movió al sector raíz", - "system_group_select" => "Elija un departamento", - "system_group_select_result" => "Los miembros pertenecen a los siguientes sectores", - "system_role_admin_tips" => "Observaciones: los administradores del sistema no están autorizados para controlar", - "system_member_action" => "Gestión de usuarios", - "system_member_add" => "nuevo usuario", - "system_member_role" => "tareas de los permisos", - "system_member_role_select" => "seleccionar", - "system_member_password_tips" => "No llene sin modificar", - "system_set_home_path" => "catálogo personalizado", - "system_set_home_path_tips" => "El directorio por defecto está vacía", - "system_member_group" => "Donde el departamento", - "system_member_group_edit" => "Departamento de redacción", - "system_member_remove" => "eliminar usuario", - "system_member_remove_tips" => "Confirmar eliminación de usuarios?
                  después de quitar el directorio del usuario se borran por completo", - "system_member_set_role" => "Para confirmar el cambio de los permisos de grupos de usuarios seleccionados?", - "system_member_remove_group" => "Determinar el usuario seleccionado será eliminado de este grupo?", - "system_member_import" => "añadir a granel", - "system_member_import_desc" => "Un usuario por línea,
                  ya existen son ignorados en silencio", - "system_member_use" => "permitir", - "system_member_unuse" => "inhabilitar", - "system_member_space" => "Establecer el tamaño del espacio de usuario ", - "system_member_space_tips" => " Establecer el tamaño del espacio de usuario ", - "system_member_space_number" => " Debe ser un número!", - "system_member_group_config" => "Departamento de configuración de lotes", - "system_member_group_remove" => "Removido del departamento", - "system_member_group_insert" => "Añadir al departamento", - "system_member_group_reset" => "Restablecer el departamento", - "system_member_group_error" => "Error de departamento", - "system_group_action" => "Gerencia del departamento", - "system_role_add" => "Añadir identidad de rol", - "system_role_read" => "Sólo lectura", - "system_role_write" => "Puede leer y escribir", - "system_setting_root_path" => "acceso root", - "system_setting_root_path_desc" => "Sólo un administrador del sistema puede acceder a todos los directorios, otros grupos de derechos de los usuarios sólo pueden ver su propio directorio de usuario. Si desea activar o desactivar el acceso de administrador
                  a otros directorios, puede modificar el php open_basedir parámetros anti-cross-site,cómo configurar", - "system_group_role_title" => "Gestión de roles de autoridad departamental", - "system_group_role_remove" => "Aceptar para eliminar el rol del departamento", - "system_group_role_style" => "estilo", - "system_group_role_display" => "si", - "system_group_role_display_desc" => "Establecer si mostrar o no los derechos de usuario del departamento", - "role_type_name_read" => "leer", - "role_type_name_read:list" => "Lista de archivos", - "role_type_name_read:info" => "Archivo (carpeta) Propiedad Vista, búsqueda de carpetas", - "role_type_name_read:copy" => "Copia de archivos", - "role_type_name_read:preview" => "previsualización de archivos (imágenes, documentos, audio y vídeo)", - "role_type_name_read:download" => "Archivo (carpeta) Descargar", - "role_type_name_write" => "escribir", - "role_type_name_write:add" => "Crear un archivo (carpeta), extraer el archivo comprimido", - "role_type_name_write:edit" => "Guarde el archivo para editar", - "role_type_name_write:change" => "Renombrar, ajustar la estructura de directorios", - "role_type_name_write:upload" => "Archivo (carpeta) de carga, descarga remota", - "role_type_name_write:remove" => "Archivo (carpeta) eliminar, cortar", - "group_guest" => "visitantes", - "group_guest_desc" => "Usted no es miembro del departamento,
                  solo puede acceder al [directorio compartido del departamento] el siguiente contenido, permisos de solo lectura.", - "group_role_lebel_desc" => "Usted es un miembro del departamento, departamento de documentación dentro
                  todas las operaciones por el administrador para asignar permisos", - "button_save_and_add" => "Guardar y continuar añadiendo", - "path_cannot_search" => "El directorio no es compatible con la búsqueda!", - "not_support" => "No es compatible!", - "group_not_exist" => "Grupo usuario no existe!", - "upload_clear_all" => "Borrar todos", - "upload_clear" => "Borrar", - "upload_setting" => "establecer", - "upload_tips" => "Utiliza carga rebanada, ya no está sujeta a límite de php.ini; recomendada de arrastrar la carpeta de cromo y la experiencia de subir gota", - "upload_exist" => "Archivo del mismo nombre", - "upload_exist_rename" => "rebautizar", - "upload_exist_replace" => "cubierta", - "upload_exist_skip" => "omitir", - "upload_add_more" => "añadir a granel", - "more" => "más", - "system_setting" => "Configuración del sistema", - "openProject" => "Abra el editor de proyectos", - "url_download" => "descargar", - "url_link" => "URL", - "app_type_link" => "Los accesos directos", - "createLink" => "crear acceso directo", - "createLinkHome" => "Enviada al acceso directo del escritorio", - "createProject" => "Añadiendo al proyecto editor", - "only_read" => "Sólo lectura", - "only_read_desc" => "El directorio no tiene permiso de escritura
                  Puede establecer permisos para este directorio en el servidor", - "not_read" => "ilegible", - "explorerNew" => "kod enlace", - "zip_download_ready" => "Después de la compresión se descarga automáticamente, por favor espere ...", - "set_background" => "Establecer como Fondos de Escritorio", - "share" => "Compartir", - "my_share" => "Mi parte", - "group_share" => "Compartición externa de grupo", - "share_edit" => "Editar parte", - "share_remove" => "Cancelar compartir", - "share_remove_tips" => "¿Seguro que desea cancelar el uso compartido? La conexión pública se invalidará.", - "share_path" => "Comparte el camino", - "share_title" => "Compartición de recursos", - "share_name" => "Compartir el título", - "share_time" => "expiración", - "share_time_desc" => "Null no se establece", - "share_password" => "extracto de la contraseña", - "share_password_desc" => "contraseña vacía, no se ha establecido", - "share_cancle" => "unsharing", - "share_create" => "Crear un enlace público", - "share_url" => "Dirección compartida", - "share_not_download" => "Descargar prohibición", - "share_not_download_tips" => "Partícipe prohibió descarga!", - "share_code_read" => "lector de códigos", - "share_save" => "Guardar configuración", - "share_error_param" => "Error de parámetro!", - "share_error_user" => "Usuario Información de error!", - "share_error_sid" => "Compartir no existe!", - "share_error_time" => "Usted viene demasiado tarde, la proporción ha expirado!", - "share_error_path" => "archivo compartido no existe, se elimina o se retira!", - "share_error_password" => "contraseña incorrecta!", - "share_error_show_tips" => "Este tipo no es compatible con previsualización de archivos!", - "share_view_num" => "vistas:", - "share_download_num" => "descargas:", - "share_open_page" => "Abra la página compartida", - "open_the_path" => "Entra en el directorio", - "recycle_clear" => "Vaciar la papelera", - "recycle_clear_success" => "el éxito de basura vacío!", - "recycle_clear_info" => "¿Seguro que desea vaciar por completo la basura?", - "fav_remove" => "Cancelar la colección", - "remove_item" => "artículos", - "uploading" => "Subiendo", - "upload_tips_more" => "Hay demasiados archivos, la recomendación de la carga comprimido, luego descomprimir en línea!", - "uploading_move" => "En la transferencia de combinación ...", - "show_file" => "Nueva página de vista previa", - "unknow_file_title" => "Abrir el archivo Tip!", - "unknow_file_tips" => "No apoyó la aplicación de este archivo, se puede:", - "unknow_file_try" => "intentar", - "unknow_file_download" => "Descargar el archivo", - "unknow_plugin_search" => "aplicaciones relacionadas con la búsqueda instalados", - "config_save_error_auth" => "No se pudo guardar la configuración, el administrador prohibió este privilegio!", - "config_save_error_file" => "Error, el archivo no se puede escribir!", - "beautify_code" => "código formateador", - "convert_case" => "caso de conversión", - "convert_upper_case" => "Convierte a mayúsculas", - "convert_lower_case" => "Convertidos en minúsculas", - "editor_insert_time" => "Hora actual ", - "editor_md5" => " Encriptación Md5 ", - "editor_qrcode" => " Cadena de código bidimensional ", - "editor_regx" => " Prueba de expresión regular ", - "editor_chinese" => " Conversión simplificada ", - "editor_chinese_simple" => " Convertir a chino simplificado ", - "editor_chinese_traditional" => " Convertir a chino tradicional ", - "editor_base64" => "Códec Base64 ", - "editor_base64_encode" => " Codificación Base64 ", - "editor_base64_decode" => " Decodificación Base64 ", - "editor_url" => " Códec de URL ", - "editor_url_encode" => " Codificación URL ", - "editor_url_decode" => " Decodificación de URL ", - "editor_unicode" => " Códec Unicode ", - "editor_unicode_encode" => " Codificación Unicode ", - "editor_unicode_decode" => " Decodificación Unicode", - "editor_tools_select_tips" => " ¡Seleccione el contenido que desea convertir!", - "editor_calc" => "Calculadora gratis", - "shortcut" => "Los accesos directos", - "use_free" => "Seguir utilizando la versión gratuita", - "learn_more" => "Más información", - "replace" => "reemplazar", - "selectAll" => "seleccionar", - "reload" => "recargar", - "about" => "en", - "complete_current" => "Finalización automática de la corriente", - "view" => "vista", - "tools" => "herramienta", - "help" => "ayudar", - "not_exists" => "No existe", - "group_role_fileDownload" => "descargas", - "group_role_share" => "cuota", - "users_share" => "compartir", - "system_setting_save" => "Configuración de seguridad", - "system_setting_menu" => "menú de gestión", - "system_name" => "Nombre del programa", - "system_name_desc" => "logotipo del programa del título", - "system_desc" => "Descripción del programa", - "path_hidden" => "exclusiones de directorio", - "version_not_support" => "Su versión no soporta esto, por favor vaya a la página web oficial para comprar la versión avanzada!", - "version_not_support_number" => "A medida que el número de restricción no se admite esta operación, por favor, comprar la versión avanzada de la página web oficial!", - "path_hidden_desc" => "Directorios y archivos por defecto no se muestran, separados por comas", - "new_user_folder" => "El nuevo usuario es creado por directorio predeterminado", - "new_user_folder_desc" => "Separados por comas", - "new_user_app" => "El nuevo usuario se crea mediante la aplicación por defecto", - "new_user_app_desc" => "Aplicaciones Application Center, una pluralidad de separados por comas", - "auto_login" => "Los visitantes de inicio de sesión automático", - "auto_login_desc" => "El inicio de sesión de usuario por defectoguest/guestusuarios, después de abrirlo, para asegurarse de que el usuario existe", - "first_in" => "Después de entrar en el valor por defecto", - "version_price_free" => "gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directorio no se puede escribir, establecer el directorio y todos los subdirectorios para intentarlo de nuevo después de la lectura-escritura!", - "menu_name" => "nombre del menú", - "menu_hidden" => "ocultar", - "menu_show" => "visualización", - "menu_move_down" => "abajo", - "menu_move_up" => "hasta", - "menu_move_del" => "borrar", - "menu_open_window" => "Abrir una nueva ventana", - "menu_sub_menu" => "Submenú", - "url_path" => "la dirección URL", - "url_path_desc" => "la dirección URL o el código js", - "no_permission_read" => "Usted no tiene permiso para leer!", - "no_permission_download" => "Usted no tiene permiso para descargar!", - "php_env_check" => "Operando vigilancia del medio ambiente:", - "php_env_error" => "Falta la biblioteca Php", - "php_env_error_ignore" => "Ignorar e introduzca", - "php_env_error_version" => "versión de PHP no puede ser inferior a 5.0", - "php_env_error_path" => "no se puede escribir", - "php_env_error_list_dir" => "Su servidor web abre la característica de listar directorios por razones de seguridad, desactivar esta característica!cómo?", - "php_env_error_gd" => "php biblioteca GD debe ser abierto, de lo contrario el código, utilice la miniatura no funcionará correctamente", - "install_login" => "Usted puede utilizar el siguiente acceso a la cuenta", - "install_enter" => "El sistema de", - "install_user_default" => "Administrador: {0} / (por debajo de establecer una contraseña)
                  El usuario medio: {1}
                  Los usuarios invitados: {2}", - "login_root_password" => "Establecer la contraseña de administrador", - "login_root_password_repeat" => "Confirmar contraseña de nuevo", - "login_root_password_equal" => "Las dos contraseñas no coinciden!", - "login_root_password_tips" => "Establecer una contraseña de administrador!", - "forget_password" => "¿Ha olvidado su contraseña", - "forget_password_tips" => "¿Ha olvidado la contraseña del administrador:
                  Por favor, ingrese servidor eliminar ./data/system/install.lock restablecer;

                  No olvidado la contraseña de administrador:
                  Por favor, póngase en contacto con el administrador para restablecer!", - "copyright_desc" => "Kodexplorer es un sistema de gestión de documentos web altamente aclamado, se puede utilizar para la gestión de documentos internos o compartido, también se puede utilizar en el servidor de gestión del sitio, reemplace ftp, así como el desarrollo webIDE directamente en línea. También puede programar el segundo desarrollo para integrar este principio en sus sistemas existentes.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango nube • Explorador", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango nube • Explorador", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webos, webIDE, php filemanage, filemanage, Dao nube, nube de mango, los sistemas de gestión de documentos, el disco de nube empresarial, explorador ,, documentación en línea, en línea de oficina, oficina en línea, vista previa de CAD en línea, edición en línea , editor en línea", - "kod_meta_description" => "KodExplorer puede nublar carretera (antes de mango nube) es un proveedor líder de gobierno / nubes corporativas privadas y sistema de gestión de documentos en línea para los sitios web personales, las implementaciones empresariales en la nube privada, almacenamiento en red, gestión de documentos en línea, oficina en línea para proporcionar seguro y controlado, simple y fácil uso, altamente personalizado productos de nube privada. El uso de ventanas interfaz de estilo, las prácticas de operación, sin tener que adaptarse a empezar a trabajar rápidamente, soportar cientos de populares formato de archivo de vista previa en línea, reproducción y favorable al medio ambiente de edición, de gran alcance, es un ensayo de una vez, ya no es inseparable de la privada ofertas de nube.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "iniciar la sesión", - "guest_login" => "visitas Firme", - "username" => "Cuenta de acceso", - "userNickName" => "Apodo del usuario", - "password" => "contraseña", - "login_code" => "códigos", - "need_check_code" => "código de autenticación de inicio de sesión abierta", - "need_check_code_desc" => "Después de iniciar sesión, debe ingresar el código de verificación.", - "setting_csrf_protect" => "protección CSRF abierto", - "setting_csrf_protect_desc" => "Después de tipo de apertura de ataque puede proteger eficazmente csrf", - "login_rember_password" => "recordar contraseña", - "setting_show_root_group" => "Enumerar todos los departamentos", - "setting_show_root_group_desc" => "Directorio de árbol, departamento raíz, ya sea para enumerar todos los departamentos", - "setting_show_share_user" => "Una lista de todos los usuarios", - "setting_show_share_user_desc" => "El departamento raíz del directorio de árbol se incluye para todos los usuarios que comparten", - "setting_clear_user_recycle" => "Vaciar la papelera de reciclaje para todos los usuarios", - "setting_clear_cache" => "Vaciar la caché", - "setting_icp" => "Los derechos de autor o número de registro", - "setting_global_css" => "CSS personalizado mundial", - "setting_global_css_desc" => "Todas las páginas se inserte CSS personalizado", - "setting_global_html" => "HTML código estadístico", - "setting_global_html_desc" => "se insertarán todas las páginas en este código html párrafo, el código se puede colocar estadísticas de terceros", - "us" => "kodcloud.com", - "login_not_null" => "Nombre de usuario y la contraseña no puede estar vacía!", - "code_error" => "Los códigos de error", - "password_error" => "nombre de usuario o contraseña son incorrectos!", - "password_not_null" => "La contraseña no puede estar vacía!", - "old_password_error" => "antigua contraseña es incorrecta!", - "permission" => "Permiso!", - "permission_edit" => "modificar permisos", - "file_info_owner" => "propietario", - "file_info_group" => "grupo", - "no_permission" => "Administrador ha desactivado este privilegio!", - "no_permission_ext" => "Administrador prohibió este tipo de permisos de archivo", - "dialog_max" => "maximizar", - "dialog_min" => "minimizar", - "dialog_min_all" => "Minimizar todo", - "dialog_display_all" => "Mostrar todas las ventanas", - "dialog_close_all" => "Cerrar todo", - "open" => "abierto", - "others" => "otro", - "open_with" => "Abierto para ...", - "close" => "cerca", - "close_all" => "Cerrar todo", - "close_left" => "Cierre la pestaña de la izquierda", - "close_right" => "Cerrar pestañas a la derecha", - "close_others" => "Cerrar Otros", - "loading" => "Operación ...", - "warning" => "advertencia", - "getting" => "Obtener el ...", - "sending" => "La transmisión de datos ...", - "data_error" => "Error de datos!", - "get_success" => "Obtener el éxito!", - "save_success" => "Se ha guardado correctamente!", - "success" => "El éxito de la operación", - "error" => "Error en la operación", - "error_repeat" => "La operación fallida, el nombre ya existe!", - "word_error" => "Fallido ", - "word_success" => " Éxito", - "system_error" => "error del sistema", - "name" => "nombre", - "type" => "tipo", - "contain" => "contener", - "address" => "ubicación", - "size" => "tamaño", - "byte" => "byte", - "path" => "camino", - "action" => "operativo", - "create_time" => "creado", - "modify_time" => "modificado", - "last_time" => "última visita", - "sort_type" => "Ordenar por", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "directorio público", - "system_path_not_change" => "directorio del sistema, no puede ser modificada", - "file" => "expediente", - "folder" => "carpeta", - "copy" => "copia", - "past" => "palo", - "clone" => "Crear una copia", - "cute" => "cizalla", - "cute_to" => "Mover a ...", - "copy_to" => "Copiar a ...", - "remove" => "borrar", - "remove_force" => "eliminar completamente", - "info" => "propiedad", - "list_type" => "vista", - "list_icon" => "icono de conjunto", - "list_list" => "arreglo de la lista", - "list_list_split" => "modo de columna", - "sort_up" => "incremento", - "sort_down" => "decreciente", - "order_type" => "Ordenar por", - "order_desc" => "descendente", - "order_asc" => "ascendente", - "rename" => "rebautizar", - "add_to_fav" => "Añadir a favoritos", - "search_in_path" => "Búsqueda de carpeta", - "add_to_play" => "Añadir a la lista", - "manage_fav" => "Administrar favoritos", - "refresh_tree" => "árbol de directorios de actualización", - "manage_folder" => "administración de directorios", - "close_menu" => "Cerrar menú", - "zip" => "Crear un paquete comprimido", - "unzip" => "Para extraer ...", - "unzip_folder" => "Descomprimir en una carpeta", - "unzip_this" => "Extraer en la corriente", - "unzip_to" => "Para extraer ...", - "zipview_file_big" => "El archivo es demasiado grande, y luego extraer la operación de impresión!", - "clipboard" => "Ver Portapapeles", - "clipboard_clear" => "Portapapeles vacía", - "full_screen" => "pantalla completa", - "folder_info_item" => "artículos", - "folder_info_item_select" => "A seleccionado", - "file_load_all" => "Haga doble clic para cargar todos ......", - "tips" => "rápido", - "ziping" => "Comprimir ...", - "unziping" => "Extrayendo ...", - "moving" => "operación móvil ...", - "remove_title" => "Confirmación de eliminación", - "remove_info" => "Confirmar para eliminar el elemento seleccionado?", - "remove_title_force" => "definitivamente excluido", - "remove_info_force" => "Está seguro que quiere eliminar este documento?", - "name_isexists" => "Mal, el nombre ya existe!", - "install" => "instalar", - "width" => "ancho", - "height" => "alto", - "app" => "Aplicaciones de luz", - "app_store" => "Aplicaciones de luz", - "app_create" => "crear aplicación", - "app_edit" => "Modificar la aplicación", - "app_group_all" => "completo", - "app_group_game" => "juego", - "app_group_tools" => "herramienta", - "app_group_reader" => "leer", - "app_group_movie" => "televisión", - "app_group_music" => "música", - "app_group_life" => "vida", - "app_group_others" => "otro", - "app_desc" => "descripción", - "app_icon" => "icono de aplicaciones", - "app_icon_show" => "la dirección URL o el directorio", - "app_group" => "Paquete de Solicitud", - "app_type" => "tipo", - "app_type_url" => "enlace", - "app_type_code" => "extensión js", - "app_display" => "exterior", - "app_display_border" => "Sin fronteras (es decir, seleccionar bordes)", - "app_display_size" => "Redimensionar (Compruebe que el ajuste)", - "app_size" => "tamaño", - "app_url" => "dirección del enlace", - "app_code" => "código js", - "edit" => "editar", - "edit_can_not" => "No es un archivo de texto", - "edit_too_big" => "El archivo es demasiado grande, no puede ser superior a 40M", - "open_default" => "Abrir por defecto", - "open_ie" => "Abra el navegador", - "refresh" => "refrescar", - "refresh_all" => "Forzar una actualización", - "newfile" => "nuevo archivo", - "newfile_save_as" => "guardar en", - "newfolder" => "nueva carpeta", - "newothers" => "Otro nuevo", - "path_loading" => "Cargando ...", - "go" => "Caminar!", - "go_up" => "La capa superior", - "history_next" => "adelante", - "history_back" => "retiro", - "address_in_edit" => "Haga clic para entrar en el modo de edición", - "double_click_rename" => "Haga doble clic en el cambio de nombre", - "double_click_open" => "Haga doble clic para abrir", - "path_null" => "Carpeta está vacía!", - "file_size_title" => "Tamaño del icono", - "file_size_small_super" => "Ultra-pequeña", - "file_size_small" => "iconos pequeños", - "file_size_default" => "iconos", - "file_size_big" => "Iconos grandes", - "file_size_big_super" => "Icono grande", - "upload" => "Subir", - "upload_ready" => "A la espera de carga", - "upload_success" => "Sube éxito", - "upload_path_current" => "Cambie al directorio actual", - "upload_select" => "Seleccione archivo", - "upload_max_size" => "El máximo permitido", - "upload_size_info" => "Si desea configurar más, por favor modificar php.ini máximo de subida permitido. Cuando se selecciona un archivo más grande que esta configuración filtrará automáticamente.", - "upload_error" => "Error de subida", - "upload_error_http" => "errores de red o cortafuegos", - "upload_muti" => "carga de archivos múltiples", - "upload_drag" => "Arrastrar y soltar Carga", - "upload_drag_tips" => "Afloje para subir!", - "path_not_allow" => "Nombre de archivo no permitido", - "download" => "descargar", - "downloading" => "Cargando ...", - "download_address" => "descargar", - "download_ready" => "Se descargará", - "download_success" => "Descargar el éxito!", - "download_error" => "Error en la descarga!", - "download_error_create" => "Error de escritura!", - "download_error_exists" => "Enlace a archivo no!", - "upload_error_null" => "Ningún archivo!", - "upload_error_big" => "Tamaño del archivo excede los límites de servidor", - "upload_error_move" => "No se ha podido mover el archivo!", - "upload_error_exists" => "El archivo ya existe", - "upload_local" => "Subir local", - "download_from_server" => "Descargar remoto", - "save_path" => "Guardar Ruta", - "upload_select_muti" => "Una pluralidad de carga de archivos seleccionable", - "search" => "búsqueda", - "searching" => "Buscando ...", - "search_result" => "resultados de la búsqueda", - "seach_result_too_more" => "Demasiados resultados de búsqueda, se recomienda para un directorio o palabras", - "search_null" => "No hay resultados!", - "search_uplow" => "entre mayúsculas y minúsculas", - "search_content" => "contenidos búsqueda de archivos", - "search_info" => "Por favor introduzca un término de búsqueda y rutas de búsqueda!", - "search_ext_tips" => "Por | separado, por ejemplo php | JS | css
                  No escriba en la búsqueda de archivos de texto predeterminado", - "file_type" => "Tipo de archivo", - "goto" => "saltar a", - "server_dwonload_desc" => "La tarea fue añadido a la lista de descargas", - "parent_permission" => "permisos de directorio padre", - "root_path" => "Mis documentos", - "lib" => "almacén", - "fav" => "marcador", - "desktop" => "escritorio", - "browser" => "navegador", - "my_computer" => "mi PC", - "recycle" => "basura", - "my_document" => "Mis documentos", - "my_picture" => "Mis fotos", - "my_music" => "mi música", - "my_movie" => "Mis videos", - "my_download" => "Mis descargas", - "ui_desktop" => "escritorio", - "ui_explorer" => "gestión de archivos", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "Inicio del proyecto", - "ui_login" => "iniciar la sesión", - "ui_logout" => "cerrar sessión", - "setting" => "Configuración del sistema", - "setting_title" => "opciones", - "setting_user" => "Centro de personal", - "setting_password" => "Cambiar contraseña", - "setting_password_old" => "Contrseña", - "setting_password_new" => "Se ha revisado para", - "setting_language" => "Configuración de idioma", - "setting_member" => "Gestión de usuarios", - "setting_group" => "administración de usuarios", - "setting_group_add" => "Añadir grupo de usuarios", - "setting_group_edit" => "Grupos de edición de usuario", - "setting_theme" => "Ajustes de tema", - "setting_wall" => "Configuraciones de fondo", - "setting_wall_desktop" => "Fondo de pantalla", - "setting_wall_desktop_list" => "Gestión de fondos de escritorio", - "setting_wall_login_list" => "Login Wallpaper Management", - "setting_wall_login_tips" => "Sugerencia: cuando hay más de una pieza, el fondo de la interfaz de inicio de sesión girará aleatoriamente", - "setting_wall_diy" => "fondo de pantalla personalizado:", - "setting_wall_info" => "Imagen de direcciones URL, imágenes locales puede ser adecuado para obtener el navegador para ampliar imagen", - "setting_fav" => "Administrador de marcadores", - "setting_help" => "Ayuda", - "setting_about" => "Acerca de las obras", - "setting_success" => "La modificación ha entrado en vigor!", - "can_not_repeat" => "No se permite repetir", - "absolute_path" => "dirección absoluta", - "group" => "Grupos de usuarios", - "data_not_full" => "Los datos enviados incompletos!", - "default_user_can_not_do" => "El usuario por defecto no puede funcionar", - "default_group_can_not_do" => "grupos de usuarios por defecto no pueden operar", - "username_can_not_null" => "Nombre de usuario no puede estar vacía!", - "groupname_can_not_null" => "Nombre del grupo de usuarios no puede estar vacía!", - "groupdesc_can_not_null" => "Grupo de Usuarios descripción no puede estar vacía!", - "group_move_user_error" => "usuarios de grupos de usuarios fallaron mueven", - "group_already_remove" => "El grupo de usuarios ha sido borrada", - "group_not_exists" => "Este grupo de usuario no existe", - "member_add" => "Agregar usuario", - "password_null_not_update" => "Dejar en blanco para no modificar la contraseña", - "if_save_file_tips" => "Algunos archivos no se guardan. ¿Estás seguro de cerrar la ventana?", - "if_save_file" => "El archivo no se ha guardado, que desea guardar?", - "if_remove" => "confirmar eliminación", - "member_remove_tips" => "Después de quitar se borrará el directorio de usuarios", - "group_remove_tips" => "Después de quitar el grupo de usuarios de los usuarios no pueden iniciar sesión
                  (necesidad de re-establecer grupos de usuarios)", - "group_name" => "Nombre del grupo de usuarios", - "group_name_tips" => "Recomendación nombre de Inglés, no se puede repetir", - "group_desc" => "Nombre para mostrar", - "group_desc_tips" => "Nombre del grupo Descripción", - "group_role_ext" => "restricciones de extensión", - "group_role_ext_tips" => "Con múltiples | separada", - "group_role_file" => "gestión de archivos", - "group_role_upload" => "Permitir cargas", - "group_role_user" => "Los datos del usuario", - "group_role_group" => "administración de usuarios", - "group_role_member" => "Gestión de usuarios", - "group_role_mkfile" => "nuevo archivo", - "group_role_mkdir" => "nueva carpeta", - "group_role_pathrname" => "rebautizar", - "group_role_pathdelete" => "eliminación de archivos", - "group_role_pathinfo" => "Propiedades de archivo", - "group_role_pathmove" => "Mover (copiar / cortar / pegar / operación de arrastre)", - "group_role_zip" => "compresión", - "group_role_unzip" => "abrir la cremallera", - "group_role_search" => "búsqueda", - "group_role_filesave" => "Guarde el archivo para editar", - "group_role_can_upload" => "Carga y descarga", - "group_role_download" => "Descargar remoto", - "group_role_passowrd" => "Cambiar contraseña", - "group_role_config" => "Los datos de configuración", - "group_role_fav" => "operaciones de marcador (añadir / editar / borrar)", - "action_list" => "Ver lista", - "action_add" => "añadir", - "action_edit" => "editar", - "action_del" => "borrar", - "group_role_ext_warning" => "Subida no permitir que este tipo de archivos,
                  Renombrar (renombrado con la extensión especificada),
                  editar Guardar, descarga remota, extracto", - "group_tips" => "
                • 1. El nombre del grupo de usuarios no se puede duplicar. Una vez modificado el nombre del grupo, pertenece al usuario reorganizado y se asocia automáticamente.
                • 2. Las extensiones limitan la relación entre la seguridad del sistema, tenga cuidado (si crea un nuevo php en el directorio web, significa que es prácticamente imposible cambiar los permisos del programa para este usuario)
                • 3. Gestión del hogar, gestión de grupos de derechos, derechos de visualización y adición, eliminación y modificación de los derechos están vinculados, los programas se asocian automáticamente
                • 4. Después de configurar el grupo de permisos para agregar el grupo de permisos, el permiso subsiguiente no se hereda (este permiso es equivalente al permiso más alto).
                • ", - "not_null" => "Los campos obligatorios no puede estar vacía!", - "picture_can_not_null" => "Las fotos no puede estar vacía!", - "rname_success" => "Cambiar el nombre de éxito!", - "please_inpute_search_words" => "Por favor, introduzca una cadena para buscar", - "remove_success" => "Eliminado correctamente!", - "remove_fali" => "Eliminar fallado!", - "clipboard_null" => "Portapapeles está vacío!", - "create_success" => "Nuevo éxito!", - "create_error" => "Nueva falla, compruebe los permisos de directorio!", - "copy_success" => "[Copiar] - que cubre el éxito portapapeles!", - "cute_success" => "[Corte] - que cubre el éxito portapapeles!", - "clipboard_state" => "estado portapapeles:", - "no_permission_write_all" => "El archivo o directorio no es escribible", - "no_permission_write_file" => "El archivo no tiene permiso de escritura", - "no_permission_read_all" => "El archivo o directorio no tiene permiso de lectura", - "copy_not_exists" => "De origen no existe", - "current_has_parent" => "carpeta de destino es una subcarpeta de la carpeta de origen!", - "past_success" => "operación de pegado se completa", - "cute_past_success" => "operación de corte se completa(se borra el archivo de origen, el portapapeles vacío)", - "zip_success" => "compresión completada", - "not_zip" => "no archivo", - "zip_null" => "No archivo o directorio seleccionado", - "unzip_success" => "descompresion completa", - "gotoline" => "Salta a la línea de", - "path_is_current" => "La ruta y la ruta actual para abrir el mismo!", - "path_exists" => "El nombre ya existe!", - "undo" => "revocación", - "redo" => "revocación contra", - "preview" => "preestreno", - "wordwrap" => "Wrap", - "show_gutter" => "Mostrar números de línea", - "char_all_display" => "Mostrar caracteres invisibles", - "auto_complete" => "pide automáticamente", - "auto_save" => "Guardar automáticamente", - "function_list" => "Lista de funciones", - "code_theme" => "Estilo de codificación", - "font_size" => "Tamaño de la fuente", - "confirm" => "¿Seguro que quieres hacer esto?", - "button_ok" => "determinar", - "button_submit" => "presentar", - "button_set" => "establecer", - "button_cancel" => "cancelado", - "button_edit" => "editar", - "button_save" => "Guardar", - "button_apply" => "Aplicar", - "button_save_all" => "Guardar todo", - "button_not_save" => "No guardar", - "button_add" => "añadir", - "button_back_add" => "Volver a añadir", - "button_del" => "borrar", - "button_save_edit" => "guardar los cambios", - "button_save_submit" => "guardar Enviar", - "button_more" => "más", - "button_select_all" => "Seleccionar todo / Invertir selección", - "charset_AUTO" => "Identificación automática", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "árabe", - "charset_ISO_8859_6" => "árabe", - "charset_ISO_8859_10" => "idiomas nórdicos", - "charset_CP1257" => "lenguas bálticas", - "charset_ISO_8859_13" => "lenguas bálticas", - "charset_ISO_8859_4" => "lenguas bálticas", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgiano", - "charset_PT154" => "kazaja", - "charset_CP949" => "coreano", - "charset_EUC_KR" => "coreano", - "charset_GB18030" => "chino simplificado", - "charset_GBK" => "chino simplificado", - "charset_ISO_8859_14" => "celta", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "rumano", - "charset_ISO_8859_3" => "Europa del Sur", - "charset_EUC_JP" => "japonés", - "charset_ISO_2022_JP" => "japonés", - "charset_SHIFT_JIS" => "japonés", - "charset_KOI8_T" => "tayiko", - "charset_ISO_8859_11" => "tailandés", - "charset_TIS_620" => "tailandés", - "charset_CP1254" => "turco", - "charset_CP1251" => "cirílico", - "charset_ISO_8859_5" => "cirílico", - "charset_KOI8_R" => "cirílico", - "charset_KOI8_U" => "cirílico", - "charset_CP1252" => "idiomas de Europa Occidental", - "charset_ISO_8859_1" => "idiomas de Europa Occidental", - "charset_ISO_8859_15" => "idiomas de Europa Occidental", - "charset_Macintosh" => "idiomas de Europa Occidental", - "charset_CP1255" => "hebreo", - "charset_ISO_8859_8" => "hebreo", - "charset_CP1253" => "griego", - "charset_ISO_8859_7" => "griego", - "charset_ARMSCII_8" => "armenio", - "charset_CP1258" => "vietnamita", - "charset_VISCII" => "vietnamita", - "charset_CP1250" => "idiomas de Europa Central", - "charset_ISO_8859_2" => "idiomas de Europa Central", - "charset_default_set" => "codificación de archivos", - "charset_convert_save" => "Guarde el archivo codificado como", - "PluginCenter" => "enchufe el centro", - "PluginBuy" => "Autorización de compra", - "PluginInstalled" => "Se ha instalado", - "PluginUpdate" => "actualización", - "PluginListNull" => "No hay contenido!", - "PluginType" => "clasificación", - "PluginTypeAll" => "completo", - "PluginTypeFile" => "archivos mejorada", - "PluginTypeSafe" => "Herramientas de seguridad", - "PluginTypeTools" => "utilidad", - "PluginTypeMedia" => "multimedia", - "PluginTypeOthers" => "otro", - "PluginInstall" => "instalar el tapón", - "PluginEnable" => "Activar complementos", - "PluginDisable" => "inhabilitar", - "PluginRemove" => "Desinstalar el complemento", - "PluginConfig" => "Configurar el plugin", - "PluginStatus" => "estado", - "PluginStatusEnabled" => "Activado", - "PluginStatusDisabled" => "no habilitado", - "PluginStatusNotInstall" => "no instalado", - "PluginInstalling" => "Instalación ...", - "PluginHasUpdate" => "actualizaciones", - "PluginUpdateStart" => "Actualización de plug-in", - "PluginNeedConfig" => "La necesidad de permitir que la configuración inicial", - "PluginConfigNotNull" => "Los campos obligatorios no pueden estar vacíos!", - "PluginOpen" => "abierto", - "PluginAuther" => "autor", - "PluginVersion" => "edición", - "PluginDownloadNumber" => "Se instala", - "PluginBack" => "regreso", - "PluginReadme" => "descripción", - "PluginResetConfig" => "Restaurar la configuración predeterminada", - "PluginInstallSelf" => "Instalación manual", - "Plugin.config.auth" => "permisos", - "Plugin.config.authDesc" => "Todos los ajustes disponibles, o especificar los usuarios, grupos de usuarios, grupos de derechos pueden utilizar", - "Plugin.config.authOpen" => "Acceso abierto", - "Plugin.config.authOpenDesc" => "No hay necesidad de visitar se puede acceder, se puede utilizar para llamar a la interfaz externa", - "Plugin.config.authAll" => "titular", - "Plugin.config.authUser" => "usuario", - "Plugin.config.authGroup" => "Departamento designado", - "Plugin.config.authRole" => "Derechos de los grupos", - "Plugin.Config.openWith" => "estilo abierto", - "Plugin.Config.openWithDilog" => "diálogo interno", - "Plugin.Config.openWithWindow" => "La nueva página se abre", - "Plugin.Config.fileSort" => "prioridad asociación Extensión", - "Plugin.Config.fileSortDesc" => "Cuanto mayor sea la extensión para abrir mayor prioridad", - "Plugin.Config.fileExt" => "Formatos de archivo compatibles", - "Plugin.Config.fileExtDesc" => "Extensión asociada al plug-in", - "Plugin.tab.basic" => "Configuración básica", - "Plugin.tab.auth" => "permisos", - "Plugin.tab.others" => "otros ajustes", - "Plugin.default.aceEditor" => "Editor Ace", - "Plugin.default.htmlView" => "Vista previa de páginas Web", - "Plugin.default.picasa" => "Picasa ojeada del cuadro", - "Plugin.default.zipView" => "Previsualizar archivo", - "Plugin.default.jPlayer" => "Reproductor jPlayer", - "Plugin.auth.viewList" => "Lista de complementos", - "Plugin.auth.setting" => "Configuración del complemento", - "Plugin.auth.status" => "Apagar", - "Plugin.auth.install" => "Instalar / desinstalar", - "Explorer.UI.openWith" => "seleccione Abrir", - "Explorer.UI.openWithText" => "Bloc de notas para abrir", - "Explorer.UI.appSetDefault" => "Establecer la abierta por defecto", - "Explorer.UI.appAwaysOpen" => "Utilizar siempre el programa seleccionado para abrir este archivo", - "Explorer.UI.selectAppDesc" => "Seleccione el programa que desea abrir este archivo", - "Explorer.UI.selectAppWarning" => "Por favor seleccione la aplicación!", - "Explorer.UI.appTypeSupport" => "Soportado", - "Explorer.UI.appTypeAll" => "Todas las aplicaciones", - "kodApp.oexe.edit" => "Editar aplicación de luz", - "kodApp.oexe.open" => "Abra la aplicación de luz" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/et/about.html b/plugin/document/kod/config/i18n/et/about.html deleted file mode 100644 index ce2664904..000000000 --- a/plugin/document/kod/config/i18n/et/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer tähendab Mis?
                  -

                  KODExplorer on avatud lähtekoodiga veebipõhine onlain-dokumendihaldus, koodiredaktor. See annab mingi klassikaline aknad kasutajaliides, komplekt online dokumendihaldus, esitluse muuta, upload, download, unzip online-muusika taasesitamine. Võimaldab saavutada veebi arengut otse brauseri lähtekoodi esitluse ja juurutada saidi omaniku ja kohaliku operatsiooni lihtne, kiire ja ohutu kogemus.

                  -

                  - disain -

                  -

                  klassikalise traditsiooni, tegutsemiseks uuendusi, et pakkuda kasutajatele mugav, turvaline ja lihtne kasutada Internetis pilve juhtimissüsteemi.

                  -

                  alati (kui), kus (kus), on veebis kui soovite (taha) on oma juhtimisvahend (4W poliitika).

                  -

                  - kasutajale orienteeritud -

                  -

                  praegu KODExplorer juhtimissüsteemi, mis asuvad peamiselt isiklik pilv hosting, väike ettevõte pilve ressursside juhtimine, võrguketta, juhtimise väikeste ja keskmise suurusega saite. Web Developer & Master (veteranid): Interneti toimetaja, suru backup, väljaehitamine, klassikaline Windows kasutajaliides operatsiooni lihtne alustada ja vabaneda vastuvõtva SSH, FTP käsu keeruline igav operatsioone.

                  -

                  isiklik era pilv (rookie): juhtimine võrguketta ressursse, samas klassikaline Windows kasutajaliides operatsioon, võid paigutada Browse võrgukettale, ekraan faile, üles- ja allalaadimise kiire ja lihtne.

                  -
                  - -
                  -
                  Omadused
                  -

                  põhjalik dokumendihaldus, võimas Internetis faili toimetaja

                  -

                  kõikjal, saate hallata oma faile; ja online meelelahutus online kirjalikult koodi! Nii nagu sobivad kasutamiseks operatsioonisüsteemi.

                  -

                  pikaajalist kogemust siirdamise operatsiooni õigus, drag, valikukast, otseteid failiotsing (otsing sisu) ......

                  -

                  valikukast, drag-liikumine, lohistada üleslaadimisel, online-toimetaja, videopleier, lahti. Terve ajax garantii jõudlust ja kogemusi!

                  -

                  iga funktsiooni otsest õmblusteta ühendus; dialoogirežiimis kujul, multi-ülesanne juhtimise funktsioone

                  -

                  Editor toetab multi-dokument; toetus ZendCoding html, CSS, JS kõrgem kodeerimise efektiivsust!

                  -

                  täiuslik Hiina toetust, moonutatud lahendada erinevaid olukordi;

                  -
                  - -
                  -
                  avatud lähtekoodiga tehnoloogia vastu
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js mainstream arengu raames. Lendamine Dom, Bom operatsiooni css operatsiooni ja Ajax pakett

                  -

                  2.ArtDialog:ilus disain, tugev brauseri ühilduvuse Dialoogi vidina. Nii pop-up käepide, sündmuste ja andmete edastamine, et saada parem ühtne juhtimine

                  -

                  3.Ztree:nimekirja puu kontroll, mastaapsuse on väga tugev puu andmetega manipuleerimise vidina

                  -

                  4.codemirror:koodi toimetaja js pluginad, toetab erinevaid programmeerimiskeeli esiletoomiseks

                  -

                  5.zendcoding:toetust html koodid kiiresti kirjutada pluginaid. Lihtsustab Koodi on kirjutatud. Lihtne koostamise

                  -

                  6.less:tõhus, funktsionaalne css arengu mudel parandada esiotsa css stylesheets taaskasutada . Lihtne koostamise

                  -

                  7.SWFUpload:flash faili upload

                  -

                  8 .CMP4:väga hea flash Player plugin meediafailide toetus meediaprogrammide, popmuusika video taasesitus vahend. Toetus nahka, hästi konfigureeritav seaded. Dünaamiline nimekirja xml koormatud. mms meediaprogrammide, RSTP avatud lähtekoodiga litsents meedia esituse toetust

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/et/edit.html b/plugin/document/kod/config/i18n/et/edit.html deleted file mode 100644 index 18574be54..000000000 --- a/plugin/document/kod/config/i18n/et/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  Rich funktsionaalsus

                  -

                  Kood automaatselt märku

                  -

                  Multi-teema: Vali oma lemmik programmeerimine stiili

                  -

                  Custom Font: kasutamiseks stseeni

                  -

                  Multi kursor toimetamine, plokk toimetamine Internetis programmeerimise kogemus võrreldav ülev

                  -

                  Block kokkuklapitavad, laiendada; murrab

                  -

                  Toetus mitu kaarti, lohista lülitus jada;

                  -

                  Säilitades mitmeid dokumente, otsida ja asendada; ajalugu;

                  -

                  Auto-complete [] {}, (), '' ''

                  -

                  Hetkel reaalajas eelvaate, mis võimaldab teil armuda veebiprogrammi!

                  -

                  zendcodeing toetust, kirjutada koodi kaheksakümmend

                  -

                  Rohkem funktsioone ootab oma avastuse ......

                  -
                  -
                  -

                  150 liiki koodi esiletõstmine

                  -

                  Vihje: html, JavaScript, CSS, vähem, sass, SCSS

                  -

                  Veebiarendus: PHP, Perl, Python, Ruby, Elang, minna ...

                  -

                  Traditsiooniline keeled: java, c, C ++, C #, ActionScript, VBScript ...

                  -

                  Muu: allahindlusest, koorega, SQL, lua, xml, yaml ...

                  -
                  -
                  -
                  -
                  -

                  Otsetee Action

                  -
                   Üldiselt kasutatavad otseteed: 
                  - ctrl + s säästa 
                  - Ctrl + A Vali kõik Ctrl + x Cut 
                  - ctrl + c ctrl + v pasta koopia 
                  - ctrl + z Võta tagasi Anti ctrl + y 
                  - ctrl + f leida asendaja ctrl + f + f 
                  - win + alt + 0 kokkuvarisemist kõik win + alt + Shift + 0 Laienda kõik 
                  - ESC [Exit otsing tühistatakse automaatselt märku ...] 
                  - ctrl-shift-s eelvaade 
                  - ctrl-shift-e näidata & Close funktsiooni 
                  -
                  -
                   Vali: 
                  - Hiir telk - drag 
                  - Shift + home / lõpus / üles / vasakule / alla / paremale 
                  - Shift + pageUp / Down klapp üles ja alla, et valida 
                  - CTRL + home / lõpus kursori algusesse ja lõppu 
                  - alt + hiirega lohistada plokki valikut 
                  - ctrl + alt + g partii valige ja sisestage praegune multi-sakk toimetaja 
                  -
                  -
                   kursor: 
                  - home / lõpus / üles / vasakule / alla / paremale 
                  - ctrl + home / lõpus kursori liigutamiseks dokumendi juht / saba 
                  - ctrl + p Hüppa sobitamine tag 
                  - pageUp / Down kursor üles ja alla 
                  - alt + vasak / parem kursor liigub üles rea 
                  - vahetustega + vasak / parem kursori rea lõppu & 
                  - ctrl + l hüpata konkreetne rida 
                  - ctrl + alt + üles / alla (allpool) suurendada kursor 
                  -
                  -
                   Edit: 
                  - ctrl + / Kommentaar & uncomment ctrl + alt + põhjendatud 
                  - Tabelis tab viimine Shift + tabelis üldine tõusta tabelis 
                  - Kustuta terve rea ctrl + d 
                  - ctrl + delete kustutada rida õige sõna 
                  - ctrl / Shift + Backspace kustutada vasakpoolse sõna 
                  - alt + Shift + üles / alla ning lisatakse koopia line (allpool) lennuk 
                  - alt + delete kustutada sisu kursorist paremale 
                  - alt + üles / alla aktiivsel real ja line (järgmine rida vahetada) 
                  - CTRL + d ridu kopeerida ja lisada järgmised 
                  - ctrl + Kustuta õige sõna 
                  - CTRL + U ümber väiketäheliseks 
                  - Ctrl + U valitud teksti suurtäheks 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/et/help.html b/plugin/document/kod/config/i18n/et/help.html deleted file mode 100644 index 12736608e..000000000 --- a/plugin/document/kod/config/i18n/et/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Failihalduse
                  -

                  Failivaliku: raadio, hiir telk, vahetustega valimisi ctrl juhuslikult valitud, klaviatuuri üles ja alla, kodu, lõpuks valikuga.

                  -

                  Faili töö: Pärast valides faili, saate kopeerida, lõigata, kustutada atribuutide vaatamiseks compression, ümbernimetamine, avatud eelvaade ja muid toiminguid ......

                  -

                  File Upload: üleslaadimiseks failid partii; HTML5 drag upload (drag sujuvalt laadida aknas lohistada toetust kaustad)

                  -

                  Parem funktsiooni: Right-faili, kausta, paremale, rohkem kohe pärast valimisi operatsioon, lauaarvuti, ja õigusega kataloogipuu, eks seotud menüüs otseteed
                  - (Vali kõik - Copy - Cut - Paste - Kustuta - Nimeta seada ......)

                  -

                  Failibrauser: Nimekiri režiimis ikoon režiim; topeltklõps osadeks kaustu aadressiribale operatsiooni avada kaust rekord Vastupidise rekord (edasi-tagasi)

                  -

                  Toetus lohistamist: Kontrollige drag lõigatud saavutada kindlaksmääratud kausta funktsiooni

                  -

                  Kiirklahvid: kustutada kustutada ctrl + A Vali kõik Ctrl + C kopeerimiseks, + X Cut, failiotsing (otsing sisu) ctrl

                  -
                  -
                  -
                  esitluse
                  -

                  Esitluse: sisu vaatamiseks tekstifaili muutmist ja salvestamist; html, swf esitluse

                  -

                  Pilt eelvaade: automaat põlvkonna pisipildid, diakuvasarjan;

                  -

                  Audio taasesitus: mängida online muusika- ja videofaile; toetus MP3, WMA, keskel, AAC, WAV; mp4,

                  -

                  Video: video taasesitus, toetab formaate: flv, F4V, 3gp

                  -

                  office: office Hetkel eelvaade, toetatavad formaadid: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  otseteed
                  -

                  sisestage Open

                  -

                  Ctrl + A Vali kõik

                  -

                  ctrl + c kopeerida valitud

                  -

                  ctrl + v kleepida

                  -

                  ctrl + x Cut

                  -

                  ctrl + f otsida praeguse kataloogi

                  -

                  alt + n Uus fail

                  -

                  alt + m New Folder

                  -

                  kustutada Kustuta valitud

                  -

                  backspace Tagasi

                  -

                  ctrl + backspace edasi

                  -

                  F2 Nimeta valitud (kausta)

                  -

                  home / lõpus / üles / alla / vasakule / paremale, et valida fail

                  -

                  Klahvi Saate vajutada algustäht iseloomu faile ja kaustu valitud automaatse töötsükli

                  -
                  diff --git a/plugin/document/kod/config/i18n/et/main.php b/plugin/document/kod/config/i18n/et/main.php deleted file mode 100644 index cd38119a9..000000000 Binary files a/plugin/document/kod/config/i18n/et/main.php and /dev/null differ diff --git a/plugin/document/kod/config/i18n/fa/about.html b/plugin/document/kod/config/i18n/fa/about.html deleted file mode 100644 index a83ad7f37..000000000 --- a/plugin/document/kod/config/i18n/fa/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer است چه؟
                  -

                  KODExplorer مدیریت سند آنلاین مبتنی بر وب منبع باز، ویرایشگر کد است. این برنامه یک نوع از پنجره های کلاسیک رابط کاربر، مجموعه ای از مدیریت اسناد آنلاین، پیش نمایش فایل، ویرایش، آپلود، دانلود، بازکردن فایل پخش موسیقی آنلاین. شما اجازه می دهد برای رسیدن به توسعه وب به طور مستقیم در مرورگر، کد منبع پیش نمایش فایل، و استقرار صاحب سایت و عملیات محلی به عنوان آسان، سریع و تجربه امن.

                  -

                  - طراحی -

                  -

                  سنت کلاسیک، دستیابی به نوآوری، به کاربران ارائه با راحت است، امن و آسان برای استفاده آنلاین سیستم مدیریت ابر.

                  -

                  هر زمان که (هنگامی که)، که در آن (که در آن)، دارای وب هر زمان که شما می خواهید (می خواهید) آن را ابزار مدیریت خود را (4W سیاست) است.

                  -

                  - کاربر محور -

                  -

                  در حال حاضر سیستم مدیریت KODExplorer به طور عمده در ابر میزبانی شخصی واقع، کوچک مدیریت شرکت ابر منابع، مدیریت دیسک شبکه، مدیریت سایت های کوچک و متوسط. توسعه دهنده وب و کارشناسی ارشد (جانبازان): ویرایشگر آنلاین، پشتیبان گیری فشرده، استقرار، کلاسیک عملیات پنجره رابط، آسان برای شروع و می توانید از SSH میزبان، فرمان FTP عملیات پیچیده و خسته کننده خلاص شوید.

                  -

                  شخصی ابر خصوصی (تازه کار): شبکه مدیریت منابع دیسک، همان عملیات پنجره های کلاسیک رابط شما می توانید درایو موسیقی مرور شبکه، فایل های روی صفحه نمایش، آپلود و دانلود سریع و آسان قرار دهید.

                  -
                  - -
                  -
                  ویژگی های
                  -

                  مدیریت اسناد جامع، ویرایشگر قدرتمند فایل آنلاین

                  -

                  کجا که شما هستند، شما می توانید فایل های خود را مدیریت و سرگرمی های آنلاین، نوشتن کد های آنلاین! فقط به عنوان مناسب برای استفاده به عنوان سیستم عامل.

                  -

                  گسترده پیوند تجربه محلی مناسب عملیات، کشیدن، جعبه انتخاب، کلید های میانبر، جستجوی فایل (محتوا جستجو) ......

                  -

                  جعبه انتخاب، کشیدن حرکت، کشیدن و رها کردن آپلود، ویرایشگر آنلاین، پخش ویدئو، از حالت فشرده خارج. عملکرد کامل تضمین آژاکس و تجربه!

                  -

                  هر تابع اتصال مستقیم بدون درز. در فرم محاوره ای، توابع مدیریت چند وظیفه

                  -

                  ویرایشگر پشتیبانی از چند سند؛ پشتیبانی از HTML ZendCoding، CSS، JS بالاتر بهره وری کد گذاری!

                  -

                  پشتیبانی کامل چینی، درهم حل موقعیت های مختلف.

                  -
                  - -
                  -
                  منبع باز فن آوری
                  -

                  1.Jquery:jpuery (پلاگین: Hotkeys.ztree.contentmenu) جی اس چارچوب توسعه جریان اصلی. بهره برداری از عملیات DOM، BOM، عملیات CSS، و بسته آژاکس

                  -

                  2.ArtDialog:یک طراحی زیبا، سازگاری با مرورگر قوی ویجت محاوره. بنابراین پاپ آپ دسته، حوادث، و انتقال داده ها به یک مدیریت یکپارچه بهتر

                  -

                  3.Ztree:کنترل لیست درختی، مقیاس پذیری بسیار قوی ویجت درخت دستکاری داده ها

                  -

                  4.codemirror:یک ویرایشگر کد جی اس پلاگین، پشتیبانی از انواع زبان های برنامه نویسی برای برجسته

                  -

                  5.zendcoding:کدهای پشتیبانی از HTML سریع نوشتن پلاگین. ساده تعریف کد نوشته شده است. تدوین ساده

                  -

                  6.less:یک مدل توسعه CSS کاربردی کارآمد برای بهبود جلویی CSS stylesheet ها قابلیت استفاده مجدد . تدوین ساده

                  -

                  7.SWFUpload:فایل فلش آپلود

                  -

                  8 .CMP4:یک فلش پلیر بسیار خوبی پلاگین فایل های رسانه ای، پشتیبانی از رسانه های جریان، محبوب ابزار پخش موزیک ویدئو. پشتیبانی از پوست، تنظیمات بسیار قابل تنظیم. لیست پویا XML لود می شود. MMS رسانه های جریان، RSTP باز مجوز منبع مدیا پلیر پشتیبانی

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/fa/edit.html b/plugin/document/kod/config/i18n/fa/edit.html deleted file mode 100644 index 31a6c3261..000000000 --- a/plugin/document/kod/config/i18n/fa/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  قابلیت های غنی

                  -

                  کد به طور خودکار دهید

                  -

                  چند موضوع: انتخاب سبک برنامه نویسی مورد علاقه خود را

                  -

                  فونت سفارشی: برای استفاده در صحنه

                  -

                  ویرایش مکان نما چند، ویرایش بلوک تجربه برنامه نویسی آنلاین مقایسه والا

                  -

                  تاشو بلوک، گسترش؛ بسته بندی

                  -

                  پشتیبانی از چند زبانه، کشیدن دنباله سوئیچینگ؛

                  -

                  حفظ اسناد متعدد، پیدا کردن و جایگزینی، تاریخ،

                  -

                  تکمیل خودکار []، {}، ()، '' ''

                  -

                  آنلاین پیش نمایش زمان واقعی که اجازه می دهد تا شما را به سقوط در عشق با برنامه نویسی های آنلاین!

                  -

                  zendcodeing پشتیبانی، ارسال کد هشتاد

                  -

                  از ویژگی های بیشتر انتظار برای کشف خود را ......

                  -
                  -
                  -

                  150 نوع از برجسته کد

                  -

                  نکته: HTML، جاوا اسکریپت، CSS، کمتر، بی احترامی صحبت کردن، SCSS

                  -

                  توسعه وب: پی اچ پی، پرل، پایتون، روبی، elang، به ...

                  -

                  زبان های سنتی: جاوا، C، C ++، C #، اکشن اسکریپت، از VBScript ...

                  -

                  دیگر: نشانه دار، پوسته، SQL، LUA، XML، YAML ...

                  -
                  -
                  -
                  -
                  -

                  اقدام میانبر

                  -
                   میانبرهای معمول استفاده می شود: 
                  - Ctrl + S را به صرفه جویی در 
                  - CTRL + A انتخاب کنید همه CTRL + X کات 
                  - کلیدهای Ctrl + C CTRL + V کپی رب 
                  - Ctrl + Z را واگرد واگرد ضد CTRL + Y 
                  - CTRL + F را پیدا کلیدهای Ctrl + جایگزینی F + F 
                  - پیروزی + ALT + 0 جمع کردن همه پیروزی + ALT + SHIFT + 0 بازکردن همه 
                  - ESC [خروج از جستجو لغو طور خودکار دهید ...] 
                  - کلیدهای Ctrl-Shift-S پیش 
                  - کلیدهای Ctrl-Shift-E نشان می دهد و بستن تابع 
                  -
                  -
                   را انتخاب کنید: 
                  - خیمه ماوس - کشیدن 
                  - SHIFT + خانه / پایان / بالا / چپ / پایین / راست 
                  - SHIFT + بالابرصفحه / PAGEDOWN تلنگر به بالا و پایین را انتخاب کنید 
                  - CTRL + SHIFT + خانه / پایان فعلی مکان نما به آغاز و پایان 
                  - ALT + ماوس به کشیدن انتخاب بلوک 
                  - کلیدهای Ctrl + Alt + G دسته را انتخاب کنید و وارد ویرایشگر چند زبانه فعلی 
                  -
                  -
                   مکان نما: 
                  - صفحه اصلی / پایان / بالا / چپ / پایین / راست 
                  - کلیدهای Ctrl + خانه / پایان حرکت مکان نما به سر سند / دم 
                  - Ctrl + P را رفتن به تطبیق برچسب 
                  - بالابرصفحه / PAGEDOWN مکان نما به بالا و پایین 
                  - ALT + مکان نما چپ / راست را به حرکت به بالای خط 
                  - SHIFT + مکان نما چپ / راست به انتهای خط و 
                  - کلیدهای Ctrl + L برای پرش به یک ردیف خاص 
                  - کلیدهای Ctrl + Alt + بالا / پایین (در زیر) را افزایش می دهد مکان نما 
                  -
                  -
                   ویرایش: 
                  - CTRL + / نظر و کلیدهای Ctrl کامنت + Alt + و توجیه 
                  - تغییر چیدمان تب جدول + جدول کلی پیشرفت 
                  - حذف حذف حذف تمام دکمه های Ctrl + D خط 
                  - کلیدهای Ctrl + حذف برای حذف ردیف بر روی کلمه حق 
                  - کلیدهای Ctrl / SHIFT + برگشت به عقب برای حذف کلمه در سمت چپ 
                  - ALT + SHIFT + بالا / پایین و اضافه شده به خط کپی (در زیر) هواپیما 
                  - ALT + DELETE به حذف مطالب از سمت راست مکان نما 
                  - ALT + بالا / پایین در خط فعلی و خط (ارز خط بعدی) 
                  - CTRL + SHIFT + d سطر کپی شده و به زیر اضافه شده 
                  - کلیدهای Ctrl + حذف حق کلمه را حذف کنید 
                  - + SHIFT کلیدهای Ctrl + U تبدیل به حروف کوچک 
                  - کلیدهای Ctrl + U متن انتخاب شده به حروف بزرگ 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/fa/help.html b/plugin/document/kod/config/i18n/fa/help.html deleted file mode 100644 index 34d36fb61..000000000 --- a/plugin/document/kod/config/i18n/fa/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  مدیریت پرونده ها
                  -

                  انتخاب فایل: رادیو، خیمه ماوس، تغییر از انتخابات، کلیدهای Ctrl به طور تصادفی انتخاب، صفحه کلید بالا و پایین، خانه، پایان انتخاب.

                  -

                  عملیات فایل: پس از انتخاب یک فایل، شما می توانید از کپی، برش، حذف، مشاهده خواص فشرده سازی، تغییر نام، پیش نمایش باز و عملیات دیگر ......

                  -

                  آپلود فایل: آپلود چندین فایل های دسته ای، آپلود کشیدن HTML5 (کشیدن به یکپارچه آپلود پنجره، کشیدن و رها کردن پشتیبانی برای پوشه ها)

                  -

                  تابع راست: راست فایل، پوشه، راست، راست تر بعد از عمل انتخابات، دسکتاپ، راست، درخت دایرکتوری راست، کلید های میانبر منوی راست محدود
                  - (انتخاب همه - کپی - برش - چسباندن - حذف - تغییر نام، راه ......)

                  -

                  مرورگر فایل: فهرست حالت، حالت آیکون دوبار کلیک کنید به زیر پوشه ها؛ عملیات نوار آدرس، باز کردن یک رکورد متضاد رکورد پوشه (جلو و عقب)

                  -

                  پشتیبانی از کشیدن و رها کردن: بررسی کشیدن، قطع برای رسیدن به عملکرد پوشه مشخص شده

                  -

                  کلید های میانبر: حذف حذف، CTRL + A انتخاب همه، Ctrl + C برای کپی، کات + X، جستجوی فایل (محتوا جستجو) کلیدهای Ctrl

                  -
                  -
                  -
                  پیش نمایش فایل
                  -

                  پیش نمایش فایل: مشاهده محتویات یک فایل در حال ویرایش متن و صرفه جویی در. HTML، پیش نمایش فایل های SWF،

                  -

                  تصویر پیشنمایش: تولید خودکار ریز عکسها، تصویر اسلاید نشان می دهد؛

                  -

                  پخش صوتی: پخش موسیقی آنلاین و فایل های ویدئویی، پشتیبانی از MP3، WMA، میانه، AAC، WAV، MP4،

                  -

                  ویدئو: پخش ویدئو آنلاین، پشتیبانی از فرمت های: FLV، F4V، 3GP

                  -

                  دفتر: دفتر آنلاین پیش نمایش، پشتیبانی از فرمت های: DOC، DOCX، PPT، PPTX، XLS، XLSX

                  -
                  -
                  -
                  کلید های میانبر
                  -

                  وارد کردن

                  -

                  CTRL + A انتخاب کنید همه

                  -

                  کلیدهای Ctrl + C برای کپی کردن انتخاب

                  -

                  کلیدهای Ctrl + V برای Paste

                  -

                  CTRL + X کات

                  -

                  CTRL + F برای جستجو در دایرکتوری جاری

                  -

                  ALT + N فایل جدید

                  -

                  ALT + M پوشه جدید

                  -

                  حذف حذف انتخاب شده

                  -

                  برگشت به عقب برگشت

                  -

                  کلیدهای Ctrl + Backspace را رو به جلو

                  -

                  F2 تغییر نام انتخاب (پوشه)

                  -

                  صفحه اصلی / پایان / بالا / پایین / چپ / راست برای انتخاب فایل

                  -

                  anykey بررسی به فشار حرف اول فایل های شخصیت ها و پوشه ها انتخاب چرخه خودکار

                  -
                  diff --git a/plugin/document/kod/config/i18n/fa/main.php b/plugin/document/kod/config/i18n/fa/main.php deleted file mode 100644 index c5077a6e6..000000000 --- a/plugin/document/kod/config/i18n/fa/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "لطفا فایل را انتخاب کنید ...", - "path_api_select_folder" => "لطفا یک پوشه را انتخاب کنید ...", - "path_api_select_image" => "لطفا یک عکس انتخاب ...", - "share_can_upload" => "اجازه آپلود", - "move_error" => "انتقال انجام نشد", - "setting_basic" => "تنظیمات عمومی", - "setting_user_sound_open" => "صدا باز", - "setting_user_animate_open" => "گسترش انیمیشن", - "recycle_open_if" => "باز کردن سطل بازیافت", - "recycle_open" => "باز", - "setting_user_recycle_desc" => "پس از حذف حذف مستقیم فیزیکی حذف خواهد شد", - "setting_user_animate_desc" => "پنجره باز و انیمیشن دیگر", - "setting_user_sound_desc" => "صدا عملیات", - "setting_user_imageThumb" => "ریز عکسها", - "setting_user_imageThumb_desc" => "تجربه مرور بهتر پس از باز کردن", - "setting_user_fileSelect" => "بررسی نماد فایل را باز کنید", - "setting_user_fileSelect_desc" => "نماد فایل چپ کلید را بررسی کنید، میانبر ورودی منو راست کلیک کنید", - "qrcode" => "URL کد QR", - "theme_mac" => "مک سفید مینیمالیستی", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "مترو آبی کلاسیک", - "theme_metro_green" => "مترو چراغ سبز", - "theme_metro_purple" => "مترو زیبا بنفش", - "theme_metro_pink" => "مترو رز", - "theme_metro_orange" => "مترو نارنجی روشن", - "theme_alpha_image" => "روشن - پرواز", - "theme_alpha_image_sun" => "روشن - غروب", - "theme_alpha_image_sky" => "سمفونی - آسمان آبی", - "theme_diy" => "سفارشی", - "theme_diy_title" => "تنظیمات سفارشی", - "theme_diy_background" => "زمینه", - "theme_diy_image" => "تصویر", - "theme_diy_color_blur" => "رنگ گرادیان", - "theme_diy_image_blur" => "تاری تصویر", - "theme_diy_image_url" => "آدرس عکس", - "theme_diy_color_start" => "رنگ شروع", - "theme_diy_color_end" => "پایان رنگ", - "theme_diy_color_radius" => "زاویه شیب", - "system_role_admin_set" => "مدیران باید تمام حقوق، بدون تنظیم!", - "login_error_user_not_use" => "کاربر غیر فعال شده است! لطفا با مدیریت تماس", - "login_error_kod_version" => "درگیری نسخه", - "login_error_role" => "نمایش مجوزهای گروه وجود ندارد، لطفا با مدیر", - "no_permission_group" => "شما در این گروه نیست.", - "no_permission_write" => "دایرکتوری مجوز نوشتن ندارد", - "user" => "کاربر", - "save_as" => "ذخیره به عنوان", - "check_update" => "به روز رسانی", - "keyboard_type" => "حالت صفحه کلید", - "font_family" => "فونت", - "code_mode" => "نحو برجسته", - "path_can_not_share" => "پشتیبانی تنها اسناد خود را به اشتراک بگذارید!", - "path_can_not_action" => "این دایرکتوری این عملیات را پشتیبانی نمی کند!", - "wap_page_pc" => "PC نسخه", - "wap_page_phone" => "سیار", - "image_size" => "ابعاد تصویر", - "no_permission_action" => "شما این اجازه نیست، لطفا با مدیر!", - "path_is_root_tips" => "آن را به دایرکتوری ریشه می آیند!", - "kod_group" => "سازمان", - "my_kod_group" => "من در بخش هستم", - "space_tips_default" => "(GB) 0 هیچ محدودیتی", - "space_tips_full" => "بدون محدود کردن", - "space_size" => "فضا", - "space_size_use" => "استفاده از فضای", - "space_is_full" => "فضای کافی وجود ندارد، لطفا با مدیر تماس بگیرید!", - "system_open_true_path" => "موفقیت در مدیریت فایل را باز کرد!", - "group_role_error" => "خطای مجوز نقش (بدون تنظیمات اجازه)", - "group_role_error_admin" => "مجوزهای ناکافی", - "markdown_content" => "فهرست مطالب", - "system_group" => "کاربران و ادارات", - "system_group_edit" => "مدیریت گروه", - "system_group_role" => "هویت نقش", - "system_group_create" => "بخش جدید", - "system_group_name" => "نام گروه", - "system_group_father" => "اداره عالی", - "system_group_add" => "اضافه کردن بخش زیر", - "system_group_remove" => "بخش را حذف کنید", - "system_group_remove_tips" => "آیا مطمئن هستید که بخش را حذف کنید؟
                  بعد از حذف بخشی از کاربر حذف خواهد شد، بخش زیر به بخش ریشه انتقال می کند", - "system_group_select" => "انتخاب بخش", - "system_group_select_result" => "کاربران به بخش های زیر تعلق خواهد", - "system_role_admin_tips" => "اظهارات: مدیران سیستم مجاز به کنترل نیستند", - "system_member_action" => "مدیریت کاربر", - "system_member_add" => "کاربر جدید", - "system_member_role" => "نقش اجازه", - "system_member_role_select" => "انتخاب کنید", - "system_member_password_tips" => "را پر نمی تغییر نیست", - "system_set_home_path" => "سفارشی کاتالوگ", - "system_set_home_path_tips" => "دایرکتوری پیش فرض خالی است", - "system_member_group" => "جایی که بخش", - "system_member_group_edit" => "ریاست گروه", - "system_member_remove" => "حذف کاربر", - "system_member_remove_tips" => "اعلام کاربر را حذف؟
                  بعد از اینکه شما حذف دایرکتوری کاربر خواهد شد به طور کامل پاک", - "system_member_set_role" => "برای تایید تغییر انتخاب مجوزهای گروه کاربران؟", - "system_member_remove_group" => "تعیین کاربران انتخاب خواهد شد از این گروه حذف شده باشد؟", - "system_member_import" => "افزودن فله", - "system_member_import_desc" => "یک کاربر در هر خط،
                  در حال حاضر وجود در سکوت نادیده گرفته", - "system_member_use" => "قادر ساختن", - "system_member_unuse" => "از کار انداختن", - "system_member_space" => "اندازه فضای کاربر را تنظیم کنید ", - "system_member_space_tips" => " اندازه فضای کاربر را تنظیم کنید ", - "system_member_space_number" => " باید تعداد باشد", - "system_member_group_config" => "بخش تنظیمات بسته", - "system_member_group_remove" => "حذف شده از بخش", - "system_member_group_insert" => "اضافه کردن به بخش", - "system_member_group_reset" => "بخش را بازنشانی کنید", - "system_member_group_error" => "خطا در بخش", - "system_group_action" => "مدیریت گروه", - "system_role_add" => "اضافه کردن هویت نقش", - "system_role_read" => "فقط خواندنی", - "system_role_write" => "خواندن و نوشتن", - "system_setting_root_path" => "دسترسی ریشه", - "system_setting_root_path_desc" => "فقط مدیر سیستم می تواند تمام دایرکتوری دسترسی، گروه های حقوق دیگر کاربران تنها می توانند دایرکتوری کاربری خود را مشاهده کنید. اگر می خواهید روشن یا خاموش
                  دسترسی مدیر به دایرکتوری دیگر، شما می توانید از PHP open_basedir پارامترهای ضد کراس سایت را تغییر دهید،مجموعه", - "system_group_role_title" => "مدیریت نقش ادارات دولتی", - "system_group_role_remove" => "OK برای حذف نقش بخش", - "system_group_role_style" => "سبک", - "system_group_role_display" => "چه", - "system_group_role_display_desc" => "تنظیم کنید که آیا کاربر کاربر بخش را نمایش دهد یا نه", - "role_type_name_read" => "خواندن", - "role_type_name_read:list" => "لیست فایل", - "role_type_name_read:info" => "فایل (پوشه) ملک نمایش، جستجو پوشه", - "role_type_name_read:copy" => "کپی فایل", - "role_type_name_read:preview" => "پیش نمایش فایل (عکس، اسناد، صوتی و تصویری)", - "role_type_name_read:download" => "فایل (پوشه) دانلود", - "role_type_name_write" => "نوشتن", - "role_type_name_write:add" => "ایجاد یک فایل (پوشه)، استخراج فایل فشرده", - "role_type_name_write:edit" => "فایل را ذخیره کنید برای ویرایش", - "role_type_name_write:change" => "تغییر نام، تنظیم ساختار دایرکتوری", - "role_type_name_write:upload" => "فایل (پوشه) آپلود، دانلود از راه دور", - "role_type_name_write:remove" => "فایل (پوشه) حذف، برش", - "group_guest" => "بازدید", - "group_guest_desc" => "شما عضو گروه نیستید،
                  فقط می توانید به [دایرکتوری اشتراک گذاری گروه] دسترسی داشته باشید محتوای زیر، مجوزهای خواندن فقط.", - "group_role_lebel_desc" => "شما عضو این اداره هستید،
                  تمام اسناد درون بخش همه حقوق مربوط به مدیر", - "button_save_and_add" => "ذخیره و ادامه برای اضافه کردن", - "path_cannot_search" => "دایرکتوری جستجو پشتیبانی نمی کند!", - "not_support" => "پشتیبانی نمی شود!", - "group_not_exist" => "گروه کاربر وجود ندارد!", - "upload_clear_all" => "پاک کردن همه", - "upload_clear" => "پاک کردن کامل", - "upload_setting" => "تنظیم", - "upload_tips" => "استفاده از آپلود برش، به هیچ عنوان دیگر به حد فایل php.ini توصیه می شود کشیدن پوشه کروم و تجربه آپلود قطره", - "upload_exist" => "فایل به همین نام", - "upload_exist_rename" => "تغییر نام", - "upload_exist_replace" => "پوشش", - "upload_exist_skip" => "رفتن", - "upload_add_more" => "افزودن فله", - "more" => "بیشتر", - "system_setting" => "تنظیمات سیستم", - "openProject" => "باز کردن ویرایشگر پروژه", - "url_download" => "دانلود", - "url_link" => "URL", - "app_type_link" => "کلید های میانبر", - "createLink" => "ایجاد میانبر", - "createLinkHome" => "ارسال به میانبر در دسکتاپ", - "createProject" => "اضافه کردن به پروژه ویرایشگر", - "only_read" => "فقط خواندنی", - "only_read_desc" => "دایرکتوری مجوز نوشتن ندارد
                  شما می توانید مجوزهای این دایرکتوری بر روی سرور تنظیم", - "not_read" => "خواندن", - "explorerNew" => "لینک KOD", - "zip_download_ready" => "پس از فشرده سازی به طور خودکار دانلود، لطفا صبر کنید ...", - "set_background" => "تنظیم به عنوان تصویر زمینه دسکتاپ", - "share" => "به اشتراک بگذارید", - "my_share" => "سهم من", - "group_share" => "اشتراک خارجی گروه", - "share_edit" => "ویرایش سهم", - "share_remove" => "لغو به اشتراک گذاری", - "share_remove_tips" => "آیا مطمئن هستید که میخواهید اشتراک را لغو کنید؟ اتصال عمومی نامعتبر خواهد بود.", - "share_path" => "مسیر را به اشتراک بگذارید", - "share_title" => "به اشتراک گذاری منابع", - "share_name" => "عنوان را به اشتراک بگذارید", - "share_time" => "انقضاء", - "share_time_desc" => "نول تنظیم نشده است", - "share_password" => "رمز عبور عصاره", - "share_password_desc" => "رمز عبور خالی تنظیم نشده است", - "share_cancle" => "لغو اشتراک", - "share_create" => "ایجاد یک لینک عمومی", - "share_url" => "آدرس مشترک", - "share_not_download" => "دانلود Ban", - "share_not_download_tips" => "دانلود مأمور ممنوع!", - "share_code_read" => "کد خوان", - "share_save" => "ذخیره تنظیمات", - "share_error_param" => "خطا در پارامتر!", - "share_error_user" => "کاربر اطلاعات اشکال!", - "share_error_sid" => "به اشتراک وجود ندارد!", - "share_error_time" => "شما می آیند خیلی دیر، سهم منقضی شده است!", - "share_error_path" => "فایل به اشتراک گذاشته وجود ندارد، آن است که حذف شده و یا حذف آن!", - "share_error_password" => "رمز عبور اشتباه است!", - "share_error_show_tips" => "این نوع مسیر پیش نمایش فایل پشتیبانی نمی کند!", - "share_view_num" => "نمایش ها:", - "share_download_num" => "دریافت ها:", - "share_open_page" => "صفحه مشترک باز", - "open_the_path" => "دایرکتوری را وارد کنید", - "recycle_clear" => "سطل زباله خالی", - "recycle_clear_success" => "موفقیت سطل زباله خالی!", - "recycle_clear_info" => "آیا مطمئن هستید که می خواهید به طور کامل خالی سطل زباله؟", - "fav_remove" => "لغو مجموعه", - "remove_item" => "اقلام", - "uploading" => "آپلود", - "upload_tips_more" => "بیش از حد بسیاری از فایل ها، توصیه آپلود فشرده، سپس از حالت زیپ خارج آنلاین!", - "uploading_move" => "در انتقال ادغام ...", - "show_file" => "پیش نمایش صفحه جدید", - "unknow_file_title" => "باز کردن فایل نکته!", - "unknow_file_tips" => "آیا استفاده از این فایل، شما می توانید پشتیبانی نمی کند:", - "unknow_file_try" => "امتحان", - "unknow_file_download" => "دانلود فایل", - "unknow_plugin_search" => "برنامه های مربوط به جستجو نصب", - "config_save_error_auth" => "برای صرفه جویی در پیکربندی انجام نشد، مدیر ممنوع این امتیاز!", - "config_save_error_file" => "خطا، فایل قابل نوشتن نیست!", - "beautify_code" => "کد قالب", - "convert_case" => "تبدیل مورد", - "convert_upper_case" => "تبدیل به حروف بزرگ", - "convert_lower_case" => "تبدیل به حروف کوچک", - "editor_insert_time" => "زمان کنونی ", - "editor_md5" => " رمزگذاری Md5 ", - "editor_qrcode" => " کد دو بعدی رشته ای ", - "editor_regx" => " آزمایش عبارات منظم ", - "editor_chinese" => " تبدیل ساده شده ", - "editor_chinese_simple" => " تبدیل به چینی ساده شده ", - "editor_chinese_traditional" => " تبدیل به چینی سنتی ", - "editor_base64" => "کدک Base64 ", - "editor_base64_encode" => " رمزگذاری Base64 ", - "editor_base64_decode" => " رمزگشایی Base64 ", - "editor_url" => " کدک URL ", - "editor_url_encode" => " رمزگذاری URL ", - "editor_url_decode" => " رمزگشایی URL ", - "editor_unicode" => " کدک یونیکد ", - "editor_unicode_encode" => " رمزگذاری یونیکد ", - "editor_unicode_decode" => " رمزگشایی یونیکد", - "editor_tools_select_tips" => " لطفا محتوایی را که میخواهید تبدیل کنید را انتخاب کنید", - "editor_calc" => "ماشین حساب رایگان", - "shortcut" => "کلید های میانبر", - "use_free" => "همچنان به استفاده از نسخه رایگان", - "learn_more" => "بیشتر بدانید", - "replace" => "جایگزین کردن", - "selectAll" => "انتخاب کنید", - "reload" => "بازنگری", - "about" => "بر", - "complete_current" => "تکمیل خودکار جریان", - "view" => "نظر", - "tools" => "ابزار", - "help" => "کمک", - "not_exists" => "وجود ندارد", - "group_role_fileDownload" => "دانلود", - "group_role_share" => "سهم", - "users_share" => "اشتراک", - "system_setting_save" => "تنظیمات امنیتی", - "system_setting_menu" => "مدیریت منو", - "system_name" => "نام برنامه", - "system_name_desc" => "عنوان آرم برنامه", - "system_desc" => "شرح برنامه", - "path_hidden" => "محرومیت راهنمای", - "version_not_support" => "نسخه خود را از این پشتیبانی نمی کند، لطفا به وب سایت رسمی رفتن به خرید نسخه پیشرفته!", - "version_not_support_number" => "همانطور که تعدادی از محدودیت این عملیات را پشتیبانی نمی کند، لطفا با خرید نسخه پیشرفته از وب سایت رسمی!", - "path_hidden_desc" => "پوشه ها و فایل به طور پیش فرض نمایش داده نمی شود، با کاما جدا شده", - "new_user_folder" => "کاربر جدید توسط دایرکتوری پیش فرض ایجاد", - "new_user_folder_desc" => "با کاما جدا شده", - "new_user_app" => "کاربر جدید توسط برنامه پیش فرض ایجاد", - "new_user_app_desc" => "نرم افزار مرکز نرم افزار، تکثر با کاما جدا شده", - "auto_login" => "آخرین بازدید ورود خودکار", - "auto_login_desc" => "ورود به سیستم به طور پیش فرض برای کاربرانguest/guestکاربران؛ پس از باز شدن به اطمینان حاصل شود که کاربران به وجود", - "first_in" => "پس از ورود به طور پیش فرض", - "version_price_free" => "رایگان", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "قابل نگارش است، مجموعه ای از پوشه و تمام زیرشاخه به دوباره پس از خواندن و نوشتن را امتحان کنید!", - "menu_name" => "نام منو", - "menu_hidden" => "پنهان کردن", - "menu_show" => "نمایش", - "menu_move_down" => "پایین", - "menu_move_up" => "بالا", - "menu_move_del" => "حذف کردن", - "menu_open_window" => "باز کردن پنجره جدید", - "menu_sub_menu" => "زیر منو", - "url_path" => "آدرس URL", - "url_path_desc" => "آدرس URL و یا کد JS", - "no_permission_read" => "شما اجازه خواندن ندارد!", - "no_permission_download" => "شما اجازه دانلود ندارد!", - "php_env_check" => "عامل نظارت بر محیط زیست:", - "php_env_error" => "کتابخانه پی اچ پی از دست رفته است", - "php_env_error_ignore" => "نادیده گرفتن و وارد", - "php_env_error_version" => "نسخه پی اچ پی نمی تواند کمتر از 5.0", - "php_env_error_path" => "قابل نوشتن نیست", - "php_env_error_list_dir" => "وب سرور خود را در دایرکتوری ویژگی را به دلایل امنیتی باز می شود، غیر فعال کردن این ویژگی!چگونه؟", - "php_env_error_gd" => "کتابخانه PHP GD باید باز باشد، در غیر این صورت کد، استفاده از تصاویر بند انگشتی نمی خواهد درست عمل", - "install_login" => "شما می توانید ورود به حساب های زیر استفاده کنید", - "install_enter" => "سیستم", - "install_user_default" => "مدیر: {0} / (زیر یک رمز عبور تعیین)
                  میانگین کاربر: {1}
                  کاربران مهمان: {2}", - "login_root_password" => "تنظیم رمز عبور مدیر", - "login_root_password_repeat" => "تکرار رمز عبور دوباره", - "login_root_password_equal" => "دو کلمه عبور مطابقت ندارند!", - "login_root_password_tips" => "تنظیم یک رمز عبور مدیر!", - "forget_password" => "رمز عبور خود را فراموش کرده", - "forget_password_tips" => "را فراموش کرده اید رمز عبور:
                  لطفا سرور وارد شوید حذف ./data/system/install.lock تنظیم مجدد؛

                  غیر مدیر فراموشی رمز عبور:
                  لطفا با مدیریت تماس برای تنظیم مجدد!", - "copyright_desc" => "Kodexplorer یک سیستم مدیریت اسناد وب بسیار تحسین است، شما می توانید آن را برای مدیریت اسناد داخلی یا به اشتراک گذاشته، همچنین می توانید بر روی سرور مدیریت سایت استفاده می شود استفاده کنید، جایگزین FTP، حتی به عنوان webIDE مستقیم توسعه آنلاین. شما همچنین می توانید توسعه دوم برنامه به ادغام این به سیستم های موجود خود را.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "انبه ابر • اکسپلورر", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "انبه ابر • اکسپلورر", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer، KOD، kodCloud، webOS، و webIDE، filemanage پی اچ پی، filemanage، دائو ابر، انبه ابر، سیستم مدیریت اسناد، دیسک شرکت ابر، اکسپلورر ،،، اسناد آنلاین، دفتر آنلاین، دفتر آنلاین، پیش نمایش آنلاین CAD، ویرایش آنلاین ، ویرایشگر آنلاین", - "kod_meta_description" => "KodExplorer می توانید جاده ابر (که قبلا انبه ابر) پیشرو در ارائه دولت / ابر شرکت های بزرگ خصوصی و آنلاین سیستم مدیریت اسناد برای وب سایت های شخصی، استقرار شرکت های ابر خصوصی، ذخیره سازی شبکه، مدیریت اسناد آنلاین، دفتر آنلاین به ارائه امن و کنترل شده، ساده و آسان است استفاده، بسیار سفارشی محصولات ابر خصوصی. با استفاده از پنجره رابط کاربری سبک، شیوه های عامل، بدون نیاز به انطباق با سرعت آغاز شده است، پشتیبانی از صدها نفر از محبوب آنلاین فرمت فایل پیش نمایش، پخش و ویرایش محیط زیست، قدرتمند، محاکمه یک بار، دیگر جدا از خصوصی است ابر عرضه.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "ورود به سیستم", - "guest_login" => "ثبت نام مهمان", - "username" => "حساب کاربری ورود", - "userNickName" => "نام مستعار کاربر", - "password" => "رمز عبور", - "login_code" => "کد", - "need_check_code" => "کد تصدیق ورود به سیستم باز", - "need_check_code_desc" => "پس از ورود به سیستم، باید کد تأیید را وارد کنید.", - "setting_csrf_protect" => "حفاظت CSRF گسترش", - "setting_csrf_protect_desc" => "پس از باز شدن نوع حمله موثر می تواند محافظت CSRF", - "login_rember_password" => "به یاد داشته باشید رمز عبور", - "setting_show_root_group" => "فهرست تمام ادارات", - "setting_show_root_group_desc" => "در قسمت ریشه دایرکتوری درختی که لیست تمام بخش ها باشد", - "setting_show_share_user" => "یک لیست از تمام کاربران", - "setting_show_share_user_desc" => "بخش ریشه دایرکتوری درخت برای همه اشتراک کاربر فهرست شده است", - "setting_clear_user_recycle" => "خالی سطل آشغال برای همه کاربران", - "setting_clear_cache" => "خالی کردن حافظه پنهان", - "setting_icp" => "کپی رایت و یا ثبت شماره", - "setting_global_css" => "CSS جهانی سفارشی", - "setting_global_css_desc" => "همه صفحات CSS سفارشی وارد", - "setting_global_html" => "کد HTML غیر آماری", - "setting_global_html_desc" => "همه صفحات خواهد شد در این کد بند وارد شود، کد را می توان آمار شخص ثالث قرار می گیرد", - "us" => "kodcloud.com", - "login_not_null" => "نام کاربری و رمز عبور نباید خالی باشد!", - "code_error" => "کدهای خطا", - "password_error" => "نام کاربری یا رمز عبور اشتباه است!", - "password_not_null" => "رمز عبور نمی تواند خالی باشد!", - "old_password_error" => "رمز عبور قدیمی اشتباه است!", - "permission" => "اجازه!", - "permission_edit" => "تغییر مجوز", - "file_info_owner" => "مالک", - "file_info_group" => "گروه", - "no_permission" => "مدیر این امتیاز را غیرفعال کرده است.", - "no_permission_ext" => "مدیر ممنوع این نوع مجوز های دسترسی فایل", - "dialog_max" => "بیشینه ساختن", - "dialog_min" => "به حداقل رساندن", - "dialog_min_all" => "به حداقل رساندن همه", - "dialog_display_all" => "نمایش همه پنجره", - "dialog_close_all" => "بستن تمام", - "open" => "باز", - "others" => "دیگر", - "open_with" => "باز برای ...", - "close" => "نزدیک", - "close_all" => "بستن تمام", - "close_left" => "بستن تب سمت چپ", - "close_right" => "بستن برگه ها را به سمت راست", - "close_others" => "بستن سایر", - "loading" => "عملیات ...", - "warning" => "هشدار", - "getting" => "دریافت ...", - "sending" => "انتقال داده ها ...", - "data_error" => "خطا داده!", - "get_success" => "مطلع موفقیت انجام شد!", - "save_success" => "با موفقیت ذخیره شد!", - "success" => "عملیات موفقیت آمیز", - "error" => "عملیات شکست خورد", - "error_repeat" => "عملیات شکست خورد، نام از قبل وجود دارد.", - "word_error" => "شکست خورد ", - "word_success" => " موفقیت", - "system_error" => "خطای سیستم", - "name" => "نام", - "type" => "نوع", - "contain" => "شامل", - "address" => "محل", - "size" => "اندازه", - "byte" => "بایت", - "path" => "مسیر", - "action" => "عملیاتی", - "create_time" => "ساخته", - "modify_time" => "اصلاح", - "last_time" => "آخرین بازدید", - "sort_type" => "مرتب سازی بر اساس", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "دایرکتوری های عمومی", - "system_path_not_change" => "دایرکتوری سیستم، قابل تغییر نیست", - "file" => "پرونده", - "folder" => "پوشه", - "copy" => "نسخه", - "past" => "چوب", - "clone" => "ایجاد یک کپی", - "cute" => "برشی", - "cute_to" => "انتقال به ...", - "copy_to" => "کپی در ...", - "remove" => "حذف کردن", - "remove_force" => "به طور کامل حذف", - "info" => "ویژگی", - "list_type" => "نظر", - "list_icon" => "نماد آرایه", - "list_list" => "فهرست آرایش", - "list_list_split" => "حالت ستون", - "sort_up" => "افزایش", - "sort_down" => "کاهنده", - "order_type" => "مرتب سازی بر اساس", - "order_desc" => "نزولی", - "order_asc" => "صعودی", - "rename" => "تغییر نام", - "add_to_fav" => "افزودن به موارد دلخواه", - "search_in_path" => "جستجوی پوشه", - "add_to_play" => "اضافه به لیست پخش", - "manage_fav" => "مدیریت موارد دلخواه", - "refresh_tree" => "درخت دایرکتوری تازه کردن", - "manage_folder" => "مدیریت دایرکتوری", - "close_menu" => "بستن منوی", - "zip" => "یک بسته فشرده ایجاد کنید", - "unzip" => "برای استخراج ...", - "unzip_folder" => "از حالت زیپ خارج را به یک پوشه", - "unzip_this" => "استخراج به جریان", - "unzip_to" => "برای استخراج ...", - "zipview_file_big" => "فایل بسیار بزرگ است، و پس از استخراج عملیات پیش نمایش!", - "clipboard" => "نمایش کلیپ بورد", - "clipboard_clear" => "کلیپ بورد خالی", - "full_screen" => "صفحه نمایش کامل", - "folder_info_item" => "اقلام", - "folder_info_item_select" => "انتخاب شده", - "file_load_all" => "دوبار کلیک کنید برای بارگذاری تمام ......", - "tips" => "سریع", - "ziping" => "فشرده سازی ...", - "unziping" => "استخراج ...", - "moving" => "عملیات های تلفن همراه ...", - "remove_title" => "تأیید حذف", - "remove_info" => "اعلام آیتم انتخاب شده را حذف کنید؟", - "remove_title_force" => "به طور دائم حذف", - "remove_info_force" => "مطمئن هستید که میخواهید این سند را به طور دائم حذف کنید؟", - "name_isexists" => "اشتباه است، نام وجود دارد!", - "install" => "نصب", - "width" => "عرض", - "height" => "زیاد", - "app" => "نرم افزار نور", - "app_store" => "نرم افزار نور", - "app_create" => "ایجاد نرم افزار", - "app_edit" => "تغییر نرم افزار", - "app_group_all" => "کامل", - "app_group_game" => "بازی", - "app_group_tools" => "ابزار", - "app_group_reader" => "خواندن", - "app_group_movie" => "تلویزیون", - "app_group_music" => "موسیقی", - "app_group_life" => "زندگی", - "app_group_others" => "دیگر", - "app_desc" => "شرح", - "app_icon" => "آیکون نرم افزار", - "app_icon_show" => "آدرس URL و یا دایرکتوری", - "app_group" => "بسته نرم افزار", - "app_type" => "نوع", - "app_type_url" => "پیوند", - "app_type_code" => "پسوند JS", - "app_display" => "خارجی", - "app_display_border" => "بدون مرز (به عنوان مثال را انتخاب کنید مرز)", - "app_display_size" => "تغییر اندازه (را بررسی کنید تا تنظیم)", - "app_size" => "اندازه", - "app_url" => "آدرس لینک", - "app_code" => "کد JS", - "edit" => "ویرایش", - "edit_can_not" => "نه یک فایل متنی", - "edit_too_big" => "فایل خیلی بزرگ است، آن را نمی تواند بیشتر از 40M", - "open_default" => "به طور پیش فرض گسترش", - "open_ie" => "مرورگر را باز", - "refresh" => "تازه کردن", - "refresh_all" => "مجبور تازه کردن", - "newfile" => "فایل جدید", - "newfile_save_as" => "ذخیره به", - "newfolder" => "پوشه جدید", - "newothers" => "جدید دیگر", - "path_loading" => "در حال بارگذاری ...", - "go" => "پیاده روی!", - "go_up" => "لایه فوقانی", - "history_next" => "به جلو", - "history_back" => "عقب نشینی", - "address_in_edit" => "ورود به حالت ویرایش را کلیک کنید", - "double_click_rename" => "دوبار کلیک کنید تغییر نام", - "double_click_open" => "دوبار کلیک کنید برای باز کردن", - "path_null" => "پوشه خالی است!", - "file_size_title" => "نماد حجم", - "file_size_small_super" => "فوق العاده کوچک", - "file_size_small" => "آیکون های کوچک", - "file_size_default" => "آیکن", - "file_size_big" => "آیکون های بزرگ", - "file_size_big_super" => "آیکون بزرگ", - "upload" => "بارگذاری", - "upload_ready" => "در حال انتظار برای آپلود", - "upload_success" => "آپلود موفقیت آمیز", - "upload_path_current" => "تغییر به دایرکتوری جاری", - "upload_select" => "فایل را انتخاب کنید", - "upload_max_size" => "حداکثر مجاز", - "upload_size_info" => "اگر شما می خواهید برای پیکربندی بیشتر، لطفا تغییر حداکثر فایل php.ini آپلود مجاز. هنگامی که شما انتخاب یک فایل بزرگتر از این پیکربندی به طور خودکار فیلتر کردن.", - "upload_error" => "آپلود انجام نشد", - "upload_error_http" => "شبکه یا فایروال خطاهای", - "upload_muti" => "آپلود چند فایل", - "upload_drag" => "کشیدن و رها کردن آپلود", - "upload_drag_tips" => "شل برای آپلود!", - "path_not_allow" => "نام فایل مجاز نیست", - "download" => "دانلود", - "downloading" => "در حال بارگذاری ...", - "download_address" => "دانلود", - "download_ready" => "دانلود خواهد شد", - "download_success" => "دانلود موفقیت انجام شد!", - "download_error" => "دانلود انجام نشد!", - "download_error_create" => "خطای نوشتن!", - "download_error_exists" => "لینک به شکست خورده فایل!", - "upload_error_null" => "هیچ فایل!", - "upload_error_big" => "اندازه فایل بیشتر محدودیت سرور", - "upload_error_move" => "انتقال فایل ناموفق بود!", - "upload_error_exists" => "فایل قبلا وجود داشته", - "upload_local" => "آپلود محلی", - "download_from_server" => "دانلود کنترل از راه دور", - "save_path" => "ذخیره مسیر", - "upload_select_muti" => "تکثر آپلود فایل انتخاب", - "search" => "جستجو", - "searching" => "جستجو ...", - "search_result" => "نتیجه های جستجو", - "seach_result_too_more" => "بیش از حد بسیاری از نتایج جستجو، آن را برای یک دایرکتوری یا کلمات توصیه می شود", - "search_null" => "هیچ نتیجه ای!", - "search_uplow" => "حساس به حروف", - "search_content" => "محتویات فایل جستجو", - "search_info" => "لطفا عبارت جستجو را وارد و مسیرهای جستجو!", - "search_ext_tips" => "توسط | جدا؛ برای مثال پی اچ پی | جی اس | CSS
                  انجام جستجوی پیش فرض فایل متنی را پر نمی کند", - "file_type" => "نوع فایل", - "goto" => "پرش به", - "server_dwonload_desc" => "کار به لیست دانلود اضافه شد", - "parent_permission" => "مجوز دایرکتوری والد", - "root_path" => "اسناد و مدارک من", - "lib" => "انبار", - "fav" => "چوب الف", - "desktop" => "دسکتاپ", - "browser" => "مرورگر", - "my_computer" => "کامپیوتر من", - "recycle" => "سطل زباله", - "my_document" => "اسناد و مدارک من", - "my_picture" => "عکس های من", - "my_music" => "موسیقی من", - "my_movie" => "ویدیوهای من", - "my_download" => "دانلود من", - "ui_desktop" => "دسکتاپ", - "ui_explorer" => "مدیریت پرونده ها", - "ui_editor" => "ویرایشگر", - "adminer" => "adminer", - "ui_project_home" => "پروژه صفحه اصلی", - "ui_login" => "ورود به سیستم", - "ui_logout" => "ترک", - "setting" => "تنظیمات سیستم", - "setting_title" => "گزینه", - "setting_user" => "مرکز شخصی", - "setting_password" => "تغییر رمز عبور", - "setting_password_old" => "رمز عبور قدیمی", - "setting_password_new" => "تجدید نظر به", - "setting_language" => "تنظیمات زبان", - "setting_member" => "مدیریت کاربر", - "setting_group" => "مدیریت گروه های کاربری", - "setting_group_add" => "اضافه کردن گروه کاربری", - "setting_group_edit" => "ویرایش گروههای کاربری", - "setting_theme" => "تنظیمات", - "setting_wall" => "تنظیمات تصویر زمینه", - "setting_wall_desktop" => "تصویر زمینه دسکتاپ", - "setting_wall_desktop_list" => "مدیریت تصاویر پس زمینه دسکتاپ", - "setting_wall_login_list" => "مدیریت تصاویر پسزمینه", - "setting_wall_login_tips" => "نکته: هنگامی که بیش از یک قطعه وجود دارد، پس زمینه رابط کاربری ورودی به صورت تصادفی چرخانده می شود", - "setting_wall_diy" => "تصویر زمینه سفارشی:", - "setting_wall_info" => "تصویر آدرس URL، عکس های محلی می تواند مناسب برای دریافت مرورگر برای باز کردن تصویر", - "setting_fav" => "مدیر نشانک", - "setting_help" => "با استفاده از راهنما", - "setting_about" => "درباره آثار", - "setting_success" => "اصلاح اثر گرفته است!", - "can_not_repeat" => "مجاز به تکرار", - "absolute_path" => "نشانی مطلق", - "group" => "گروه های کاربری", - "data_not_full" => "اطلاعات ناقص کنید!", - "default_user_can_not_do" => "پیش فرض کاربر نمی تواند عمل", - "default_group_can_not_do" => "گروه های کاربری پیش فرض نمی تواند عمل", - "username_can_not_null" => "نام کاربری نمی تواند خالی باشد!", - "groupname_can_not_null" => "نام گروه کاربران نمی تواند خالی باشد!", - "groupdesc_can_not_null" => "کاربر Group شرح نمی تواند خالی باشد!", - "group_move_user_error" => "کاربر کاربران گروه شکست خورده حرکت", - "group_already_remove" => "گروه کاربر حذف شده است", - "group_not_exists" => "این گروه برای کاربران وجود ندارد", - "member_add" => "اضافه کردن کاربر", - "password_null_not_update" => "آنها گفتند که تغییر نکرده رمز عبور است نه", - "if_save_file_tips" => "بعضی از فایل ها ذخیره نشده اند. آیا مطمئن هستید که پنجره را بسته می کنید؟", - "if_save_file" => "فایل ذخیره نشد، شما می خواهید ذخیره کنید؟", - "if_remove" => "اعلام حذف", - "member_remove_tips" => "پس از شما را حذف دایرکتوری کاربر پاک می شود", - "group_remove_tips" => "بعد از اینکه شما حذف گروه های کاربری از کاربران نمی تواند ورود
                  (نیاز به دوباره تنظیم گروه کاربران)", - "group_name" => "نام گروه کاربران", - "group_name_tips" => "توصیه نام انگلیسی، نمی تواند تکرار شود", - "group_desc" => "نام ها", - "group_desc_tips" => "گروه نام شرح", - "group_role_ext" => "محدودیت فرمت", - "group_role_ext_tips" => "با چند | جدا", - "group_role_file" => "مدیریت پرونده ها", - "group_role_upload" => "اجازه آپلود", - "group_role_user" => "داده های کاربر", - "group_role_group" => "مدیریت گروه های کاربری", - "group_role_member" => "مدیریت کاربر", - "group_role_mkfile" => "فایل جدید", - "group_role_mkdir" => "پوشه جدید", - "group_role_pathrname" => "تغییر نام", - "group_role_pathdelete" => "حذف فایل", - "group_role_pathinfo" => "خواص فایل", - "group_role_pathmove" => "حرکت (کپی / برش / چسباندن / عملیات کشیدن)", - "group_role_zip" => "فشرده سازی", - "group_role_unzip" => "جدا کردن", - "group_role_search" => "جستجو", - "group_role_filesave" => "فایل را ذخیره کنید به ویرایش", - "group_role_can_upload" => "آپلود و دانلود", - "group_role_download" => "دانلود کنترل از راه دور", - "group_role_passowrd" => "تغییر رمز عبور", - "group_role_config" => "پیکربندی داده ها", - "group_role_fav" => "عملیات بوکمارک (اضافه کردن / ویرایش / حذف)", - "action_list" => "لیست مشخصات", - "action_add" => "افزودن", - "action_edit" => "ویرایش", - "action_del" => "حذف کردن", - "group_role_ext_warning" => "آپلود اجازه نمی دهد چنین فایل،
                  تغییر نام (تغییر نام داد به گسترش مشخص شده)،
                  ویرایش ذخیره کنید، دانلود از راه دور، عصاره", - "group_tips" => "
                • 1. نام گروه کاربری را نمی توان تکرار کرد. پس از تغییر نام گروه، آن متعلق به کاربر مجدد است و به صورت خودکار مرتبط است.
                • 2. افزونه ها ارتباط بین امنیت سیستم را محدود می کند، لطفا احتیاط کنید (اگر یک php جدید را در دایرکتوری وب ایجاد می کنید، بدین معنی است که تغییر مجوزهای برنامه به این کاربر به همان اندازه خیالی است)
                • 3. مدیریت خانوار، مدیریت گروه حقوق، مشاهده حقوق و افزودن، حذف و اصلاح حقوق محدود، برنامه ها به صورت خودکار مرتبط می شوند
                • 4. پس از اینکه گروه اجازه برای اضافه کردن گروه مجوز تنظیم شده است، مجوز بعدی به ارث نمی رسد (این اجازه برابر با بالاترین مجوز).
                • ", - "not_null" => "بخشهای موردنیاز نمی تواند خالی باشد!", - "picture_can_not_null" => "عکس نمی تواند خالی باشد!", - "rname_success" => "تغییر نام موفقیت!", - "please_inpute_search_words" => "لطفا یک رشته برای جستجو انتخاب کنید", - "remove_success" => "با موفقیت حذف شد!", - "remove_fali" => "حذف نشد!", - "clipboard_null" => "تخته خالی است!", - "create_success" => "موفقیت های جدید!", - "create_error" => "جدید افتد، بررسی مجوز دایرکتوری!", - "copy_success" => "[کپی] - پوشش موفقیت کلیپ بورد!", - "cute_success" => "[برش] - پوشش موفقیت کلیپ بورد!", - "clipboard_state" => "وضعیت حافظه:", - "no_permission_write_all" => "فایل یا دایرکتوری قابل نوشتن نیست", - "no_permission_write_file" => "فایل اجازه نوشتن ندارد", - "no_permission_read_all" => "فایل یا دایرکتوری بدون اجازه خواندن", - "copy_not_exists" => "منبع وجود ندارد", - "current_has_parent" => "پوشه هدف یک زیر پوشه از پوشه منبع است!", - "past_success" => "عملیات رب به اتمام است", - "cute_past_success" => "عملیات برش به اتمام است(منبع فایل حذف شده، کلیپ بورد خالی)", - "zip_success" => "فشرده سازی به پایان", - "not_zip" => "بایگانی", - "zip_null" => "فایل یا دایرکتوری انتخاب نشده", - "unzip_success" => "جدا کردن کامل", - "gotoline" => "پرش به خط", - "path_is_current" => "راه و مسیر فعلی برای باز کردن همان!", - "path_exists" => "نام قبل وجود دارد!", - "undo" => "لغو", - "redo" => "ضد ابطال", - "preview" => "پیش نمایش", - "wordwrap" => "بسته بندی", - "show_gutter" => "نمایش شماره خط", - "char_all_display" => "نمایش شخصیت نامرئی", - "auto_complete" => "به صورت خودکار دهید", - "auto_save" => "به صورت خودکار ذخیره کنید", - "function_list" => "فهرست تابع", - "code_theme" => "برنامه نویسی سبک", - "font_size" => "اندازه قلم", - "confirm" => "آیا مطمئن هستید که می خواهید این کار را انجام دهید؟", - "button_ok" => "تعیین", - "button_submit" => "ارسال", - "button_set" => "تنظیم", - "button_cancel" => "لغو شد", - "button_edit" => "ویرایش", - "button_save" => "ذخیره", - "button_apply" => "اعمال کنید", - "button_save_all" => "صرفه جویی در همه", - "button_not_save" => "ذخیره نشود", - "button_add" => "افزودن", - "button_back_add" => "برگشت به اضافه", - "button_del" => "حذف کردن", - "button_save_edit" => "ذخیره تغییرات", - "button_save_submit" => "ذخیره ارسال", - "button_more" => "بیشتر", - "button_select_all" => "انتخاب همه / انتخاب برعکس شود", - "charset_AUTO" => "شناسایی خودکار", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "عربی", - "charset_ISO_8859_6" => "عربی", - "charset_ISO_8859_10" => "زبانهای اسکاندیناوی", - "charset_CP1257" => "زبانهای بالتیک", - "charset_ISO_8859_13" => "زبانهای بالتیک", - "charset_ISO_8859_4" => "زبانهای بالتیک", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "گرجی", - "charset_PT154" => "قزاقستان", - "charset_CP949" => "کره ای", - "charset_EUC_KR" => "کره ای", - "charset_GB18030" => "چینی ساده شده", - "charset_GBK" => "چینی ساده شده", - "charset_ISO_8859_14" => "سلتی", - "charset_CP1133" => "لائوس", - "charset_ISO_8859_16" => "رومانیایی", - "charset_ISO_8859_3" => "جنوب اروپا", - "charset_EUC_JP" => "ژاپنی", - "charset_ISO_2022_JP" => "ژاپنی", - "charset_SHIFT_JIS" => "ژاپنی", - "charset_KOI8_T" => "زبان تاجیکی", - "charset_ISO_8859_11" => "تایلندی", - "charset_TIS_620" => "تایلندی", - "charset_CP1254" => "ترکی", - "charset_CP1251" => "سیریلیک", - "charset_ISO_8859_5" => "سیریلیک", - "charset_KOI8_R" => "سیریلیک", - "charset_KOI8_U" => "سیریلیک", - "charset_CP1252" => "زبانهای اروپای غربی،", - "charset_ISO_8859_1" => "زبانهای اروپای غربی،", - "charset_ISO_8859_15" => "زبانهای اروپای غربی،", - "charset_Macintosh" => "زبانهای اروپای غربی،", - "charset_CP1255" => "عبری", - "charset_ISO_8859_8" => "عبری", - "charset_CP1253" => "یونانی", - "charset_ISO_8859_7" => "یونانی", - "charset_ARMSCII_8" => "ارمنی", - "charset_CP1258" => "ویتنامی", - "charset_VISCII" => "ویتنامی", - "charset_CP1250" => "زبانهای اروپای مرکزی", - "charset_ISO_8859_2" => "زبانهای اروپای مرکزی", - "charset_default_set" => "رمزگذاری فایل", - "charset_convert_save" => "فایل را ذخیره کنید کد گذاری به عنوان", - "PluginCenter" => "مرکز رسانه", - "PluginBuy" => "مجوز خرید", - "PluginInstalled" => "نصب شده است", - "PluginUpdate" => "به روز رسانی", - "PluginListNull" => "هیچ محتوای وجود دارد!", - "PluginType" => "طبقه بندی", - "PluginTypeAll" => "کامل", - "PluginTypeFile" => "فایل پیشرفته", - "PluginTypeSafe" => "ابزارهای امنیتی", - "PluginTypeTools" => "سودمندی", - "PluginTypeMedia" => "چند رسانه ای", - "PluginTypeOthers" => "دیگر", - "PluginInstall" => "نصب افزونه", - "PluginEnable" => "فعال کردن افزونهها", - "PluginDisable" => "از کار انداختن", - "PluginRemove" => "حذف پلاگین", - "PluginConfig" => "پیکربندی پلاگین", - "PluginStatus" => "دولت", - "PluginStatusEnabled" => "فعال", - "PluginStatusDisabled" => "فعال نیست", - "PluginStatusNotInstall" => "نصب نشده است", - "PluginInstalling" => "نصب و راه اندازی ...", - "PluginHasUpdate" => "به روز رسانی", - "PluginUpdateStart" => "به روز رسانی پلاگین در", - "PluginNeedConfig" => "نیاز به فعال کردن تنظیمات اولیه", - "PluginConfigNotNull" => "بخشهای موردنیاز نمی تواند خالی باشد!", - "PluginOpen" => "باز", - "PluginAuther" => "نویسنده", - "PluginVersion" => "چاپ", - "PluginDownloadNumber" => "نصب", - "PluginBack" => "برگشت", - "PluginReadme" => "توصیف", - "PluginResetConfig" => "تنظیمات پیش فرض را بازیابی کنید", - "PluginInstallSelf" => "نصب دستی", - "Plugin.config.auth" => "مجوز", - "Plugin.config.authDesc" => "همه از تنظیمات موجود، و یا مشخص کاربران، گروه های کاربری، گروه های حقوق می توانید استفاده کنید", - "Plugin.config.authOpen" => "دسترسی آزاد", - "Plugin.config.authOpenDesc" => "بدون نیاز به بازدید قابل دسترسی است، می توان برای تماس خارجی رابط استفاده کرد", - "Plugin.config.authAll" => "دارنده", - "Plugin.config.authUser" => "کاربر", - "Plugin.config.authGroup" => "بخش تعیین شده", - "Plugin.config.authRole" => "گروه حقوق", - "Plugin.Config.openWith" => "سبک باز", - "Plugin.Config.openWithDilog" => "گفت و گو داخلی", - "Plugin.Config.openWithWindow" => "صفحه جدید باز می شود", - "Plugin.Config.fileSort" => "اولویت ارتباط فرمت", - "Plugin.Config.fileSortDesc" => "بزرگتر از پسوند برای باز کردن اولویت بالاتر", - "Plugin.Config.fileExt" => "فرمت های فایل پشتیبانی شده", - "Plugin.Config.fileExtDesc" => "فرمت مربوط به پلاگین در", - "Plugin.tab.basic" => "تنظیمات عمومی", - "Plugin.tab.auth" => "مجوز", - "Plugin.tab.others" => "سایر تنظیمات", - "Plugin.default.aceEditor" => "آس ویرایشگر", - "Plugin.default.htmlView" => "صفحه وب پیش", - "Plugin.default.picasa" => "مرور عکس پیکاسا", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "بازیکن شده jPlayer", - "Plugin.auth.viewList" => "لیست پلاگین", - "Plugin.auth.setting" => "تنظیمات پلاگین", - "Plugin.auth.status" => "خاموش", - "Plugin.auth.install" => "نصب / حذف کنید", - "Explorer.UI.openWith" => "باز کردن را انتخاب", - "Explorer.UI.openWithText" => "Notepad باز کنید", - "Explorer.UI.appSetDefault" => "تنظیم پیش فرض باز", - "Explorer.UI.appAwaysOpen" => "همیشه برنامه انتخاب برای باز کردن این فایل استفاده کنید", - "Explorer.UI.selectAppDesc" => "انتخاب کنید برنامه شما می خواهید برای باز کردن این فایل", - "Explorer.UI.selectAppWarning" => "لطفا برنامه را انتخاب کنید!", - "Explorer.UI.appTypeSupport" => "پشتیبانی شده", - "Explorer.UI.appTypeAll" => "همه برنامه ها", - "kodApp.oexe.edit" => "ویرایش برنامه نور", - "kodApp.oexe.open" => "باز کردن نرم افزار از نور" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/fi/about.html b/plugin/document/kod/config/i18n/fi/about.html deleted file mode 100644 index 92a13bafe..000000000 --- a/plugin/document/kod/config/i18n/fi/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer sanoen mitä?
                  -

                  KODExplorer on avoimen lähdekoodin web-pohjainen online dokumenttien hallinta, koodieditorin. Se tarjoaa eräänlaisen klassinen ikkunoiden käyttöliittymä, joukko online-dokumenttien hallinta, tiedostojen esikatselu, muokata, lataa, lataa, pura verkossa musiikin toistoa. Voit saavuttaa web-kehitystä suoraan selaimessa, lähdekooditiedostoa esikatselu, ja ottaa käyttöön sivuston omistaja ja paikallisen toiminnan yhtä helppoa, nopeaa ja turvallista kokemusta.

                  -

                  - suunnittelu -

                  -

                  klassisen perinteen, harjoittamisesta innovaatio, tarjota käyttäjille kätevä, turvallinen ja helppokäyttöinen online pilvi hallintajärjestelmä.

                  -

                  aina (kun), jossa (joissa), on web milloin haluat (haluat) se on johtamisen väline (4W politiikka).

                  -

                  - käyttäjälähtöistä -

                  -

                  hetkellä KODExplorer hallintajärjestelmä sijaitsevat pääasiassa henkilökohtaiseen pilvi hosting, pieni Laitoksen pilvi resurssienhallinta, verkko levy hallinta, hallinta pienten ja keskisuurten sivustoja. Web Developer ja Master (veteraanit): editori, pakattuja varmuuskopio, käyttöönotto, klassinen Windows-käyttöliittymän toimintaa, helppo päästä alkuun ja päästä eroon isäntä SSH, FTP-komennon monimutkaisia ​​tylsä ​​toimintoja.

                  -

                  henkilökohtainen yksityinen pilvi (rookie): Management verkko levy resursseja, sama klassinen Windows-käyttöliittymän toimintaa, voit sijoittaa musiikin selata verkkoasemaan, näyttö tiedostoja, lataaminen ja lataaminen helppoa ja nopeaa.

                  -
                  - -
                  -
                  Ominaisuudet
                  -

                  kokonaisvaltainen dokumenttien hallinta, tehokas online tiedoston muokkaus

                  -

                  missä olet, voit hallita tiedostoja ja online-viihteen, verkossa kirjoittaa koodia! Aivan kuten soveltuu käytettäväksi käyttöjärjestelmä.

                  -

                  laaja paikallinen kokemus siirtoleikkauksesta oikeassa, vetää valintalaatikossa, pikakuvakkeet, tiedoston haku (haku pitoisuus) ......

                  -

                  valintalaatikossa, drag-liike, lähettämistä vetämällä ja pudottamalla, editori, videosoitin, purkaa. Täysi ajax takuu suorituskyky ja kokemus!

                  -

                  kunkin toiminnon suoran saumaton yhteys; keskusteluruuduissa muodossa, monitaitoisuutta johtotehtäviin

                  -

                  Editor tukee usean asiakirjan tuki ZendCoding html, css, js suurempi koodaus tehokkuutta!

                  -

                  täydellinen Kiinan tuki, sekaisin ratkaisemaan eri tilanteissa;

                  -
                  - -
                  -
                  avoimen lähdekoodin teknologian käyttöönotto
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) Js mainstream kehitysalusta. Toiminta Dom, BOM toiminta, css toiminnan ja Ajax paketti

                  -

                  2.ArtDialog:kaunis muotoilu, vahva selaimen yhteensopivuutta dialogi widget. Niin pop-up kahva, tapahtumia, ja datan saada parempi yhtenäinen hallinta

                  -

                  3.Ztree:lista puu ohjaus, skaalautuvuus on hyvin vahva puu tiedot manipulointi widget

                  -

                  4.codemirror:koodieditori js lisäosia, tukee useita ohjelmointikieliä esiin

                  -

                  5.zendcoding:tukea html koodit nopeasti write laajennuksia. Helpottaa määritelmä koodi on kirjoitettu. Yksinkertainen kokoaminen

                  -

                  6.less:tehokasta, toiminnallista css kehittämismalli parantaa etupään css stylesheets uudelleenkäytettävyyteen . Yksinkertainen kokoaminen

                  -

                  7.SWFUpload:flash-tiedoston lataamisen

                  -

                  8 .CMP4:erittäin hyvä flash player plugin mediatiedostoja, tuki streaming media, suosittu musiikkivideo toisto työkalu. Tuki iho, erittäin muokattava asetuksia. Dynaaminen lista xml ladattu. mms streaming media, RSTP avoimen lähdekoodin lisenssillä median toistotuki

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/fi/edit.html b/plugin/document/kod/config/i18n/fi/edit.html deleted file mode 100644 index 0c97ba3d5..000000000 --- a/plugin/document/kod/config/i18n/fi/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  rikas toiminnallisuus

                  -

                  Koodi kehottaa automaattisesti

                  -

                  Multi-teema: Valitse suosikki ohjelmointityyli

                  -

                  Custom Font: käytettäväksi kohtaus

                  -

                  Multi kursori editointi, lohko editointi verkossa ohjelmointi kokemusta verrattavissa ylevää

                  -

                  Block taitto, laajentaa; kietoa

                  -

                  Tuki useita välilehtiä vetämällä kytkentäjärjestys

                  -

                  Ylläpito useita asiakirjoja, etsiä ja korvata, historia;

                  -

                  Automaattinen täydennys [], {}, (), '' ''

                  -

                  Online reaaliaikainen esikatselu, jonka avulla voit rakastua verkossa ohjelmointi!

                  -

                  zendcodeing tukea, kirjoittaa koodia kahdeksankymmentä

                  -

                  Enemmän ominaisuuksia odottavat löytäjäänsä ......

                  -
                  -
                  -

                  150 erilaista koodia korostus

                  -

                  Vihje: html, JavaScript, CSS, vähemmän, sass, SCSS

                  -

                  web-kehitys: PHP, Perl, Python, Ruby, Elang, mene ...

                  -

                  Perinteiset kielet: Java, C, C ++, C #, Actionscript, VBScript ...

                  -

                  Muut: markdown, kuori, sql, Lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Oikotie Action

                  -
                   Yleisesti käytetty pikanäppäimet: 
                  - ctrl + s säästää 
                  - ctrl + valikoidulle kaikki ctrl + x Cut 
                  - ctrl + c ctrl + v tahna kopio 
                  - ctrl + z Kumoa Kumoa Anti ctrl + y 
                  - ctrl + f löytää korvaavaa ctrl + f + f 
                  - win + alt + 0 romahtaa kaikki win + alt + shift + 0 Laajenna kaikki 
                  - esc [Lopeta haku peruuntuu automaattisesti kysyy ...] 
                  - ctrl-shift-s esikatselu 
                  - ctrl-shift-e esittävät & Close toiminto 
                  -
                  -
                   Valitse: 
                  - Hiiri teltta - drag 
                  - shift + home / end / ylös / vasemmalle / alas / oikealle 
                  - shift + PageUp / PageDown läppä ylös ja alas ja valitse 
                  - ctrl + shift + home / pää kohdistimen alkuun ja loppuun 
                  - alt + hiirellä vetämällä lohkon valinta 
                  - ctrl + alt + g erä valita ja anna nykyinen multi-välilehti editor 
                  -
                  -
                   Cursor: 
                  - home / end / ylös / vasemmalle / alas / oikealle 
                  - ctrl + home / end siirrä kohdistin asiakirjan pään / hännän 
                  - ctrl + p Siirry matching tag 
                  - PageUp / PageDown kohdistin ylös ja alas 
                  - alt + vasen / oikea kursori siirtyy huippuluokan 
                  - shift + vasen / oikea kursori rivin loppuun & 
                  - ctrl + l siirtyä tietylle riville 
                  - ctrl + alt + ylös / alas (alla) lisäävät kursori 
                  -
                  -
                   Edit: 
                  - ctrl + / Kommentti ja seur ctrl + alt + perusteltu 
                  - taulukko välilehti linjaus shift + pöytä yleistä etenemistä taulukko 
                  - poista poista koko rivi ctrl + d 
                  - ctrl + Delete poistaa rivin oikea sana 
                  - ctrl / shift + askelpalautin poistaa sana vasemmalle 
                  - alt + shift + ylös / alas ja lisätään kopion linja (alla) tason 
                  - alt + delete poistaa sisällön oikealle puolelle 
                  - alt + ylös / alas nykyisen rivin ja linja (seuraava rivi exchange) 
                  - ctrl + shift + d riviä kopioitu ja lisätä seuraaviin 
                  - ctrl + Delete poistaa oikealle sanan 
                  - ctrl + shift + u muunnetaan pieniksi kirjaimiksi 
                  - Ctrl + U valitun tekstin isoiksi 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/fi/help.html b/plugin/document/kod/config/i18n/fi/help.html deleted file mode 100644 index 1a47b84f8..000000000 --- a/plugin/document/kod/config/i18n/fi/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Tiedostonhallinta
                  -

                  Tiedoston valinta: radio, hiiri teltta, shift-vaaleissa, ctrl valittu satunnaisesti, näppäimistö ylös ja alas, kotiin, pää valinta.

                  -

                  File toiminta: Kun olet valinnut tiedoston, voit kopioida, leikata, poistaa, tarkastella ominaisuuksia puristus, nimetä, avoin esikatselu ja muita toimintoja ......

                  -

                  Tiedoston lataaminen: Lataa useita tiedostoja erän; HTML5 vedä upload (drag saumattomasti ladata ikkunaan, vedä ja pudota tukea kansioita)

                  -

                  Oikea toiminto: Right-tiedosto, kansio, oikea, lisää heti vaalien toimintaa, työpöydän, oikea, oikea hakemistopuun hiiren sidottu oikotiet
                  - (Valitse kaikki - Kopioi - Leikkaa - Liitä - Poista - Nimeä asettaa ......)

                  -

                  Tiedostoselain: List tilassa kuvake tila, kaksoisnapsauta osa-kansioita osoiteriville toiminta; avata kansion kirjaa contrarian kirjaa (eteenpäin ja taaksepäin)

                  -

                  Tuki vedä ja pudota: Tarkista vetää, leikkaa saavuttaa tiettyyn kansioon toiminto

                  -

                  Pikanäppäimet: poistaa poistaa, ctrl + A Valitse kaikki, ctrl + C kopioi, + X Leikkaa, tiedoston haku (haku pitoisuus) ctrl

                  -
                  -
                  -
                  Tiedoston esikatselu
                  -

                  Tiedoston esikatselu: katsella sisältöä tekstitiedoston editointi ja säästää, html, swf-tiedoston esikatselu,

                  -

                  Esikatselu: automaattinen sukupolven thumbnails, diakuvasarjan;

                  -

                  Äänen toisto: pelata verkossa musiikkia ja videotiedostoja, tukea mp3, wma, mid, AAC, WAV, MP4,

                  -

                  Video: online video toisto, tuetut formaatit: flv, F4V, 3gp

                  -

                  office: office Online esikatselu, tuetut formaatit: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  pikavalinnat
                  -

                  kirjoita Open

                  -

                  ctrl + valikoidulle kaikki

                  -

                  ctrl + c Kopioi valitut

                  -

                  ctrl + v liittää

                  -

                  ctrl + x Cut

                  -

                  ctrl + f etsiä nykyisen hakemiston

                  -

                  alt + n Uusi tiedosto

                  -

                  alt + m Uusi kansio

                  -

                  Poista Valitun

                  -

                  backspace Takaisin

                  -

                  ctrl + askelpalautin eteenpäin

                  -

                  f2 Nimeä valittu (kansio)

                  -

                  home / end / ylös / alas / vasemmalle / oikealle valitse tiedosto

                  -

                  Millä tahansa Tarkista painaa ensimmäisen kirjaimen merkin tiedostojen ja kansioiden valinnut automaattisen kierron

                  -
                  diff --git a/plugin/document/kod/config/i18n/fi/main.php b/plugin/document/kod/config/i18n/fi/main.php deleted file mode 100644 index 003cf3381..000000000 Binary files a/plugin/document/kod/config/i18n/fi/main.php and /dev/null differ diff --git a/plugin/document/kod/config/i18n/fr/about.html b/plugin/document/kod/config/i18n/fr/about.html deleted file mode 100644 index 5b859d089..000000000 --- a/plugin/document/kod/config/i18n/fr/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer est- Quoi?
                  -

                  KODExplorer est une gestion de documents en ligne sur le Web open source, éditeur de code. Il fournit une sorte d'interface de fenêtres classiques de l'utilisateur, un ensemble de gestion de documents en ligne, fichier aperçu, modifier, télécharger, la lecture de musique en ligne unzip. Permet de réaliser le développement web directement dans le navigateur, le code source aperçu du fichier, et de déployer le propriétaire du site et de l'opération locale aussi facile, rapide et expérience sécuritaire.

                  -

                  - design -

                  -

                  tradition classique, la poursuite de l'innovation, pour fournir aux utilisateurs pratique, sécurisé et facile à utiliser le système de gestion de cloud en ligne.

                  -

                  chaque fois (quand), où (où), a le web quand vous voulez (voulez) il est de votre outil de gestion (4W politique).

                  -

                  -

                  -

                  actuellement le système de gestion KODExplorer principalement situé dans l'hébergement de nuage personnel, petit - orienté utilisateur la gestion d'entreprise en nuage des ressources, gestion de disque de réseau, la gestion des petites et moyennes sites. Développeur Web & Master (anciens combattants): éditeur en ligne, sauvegarde compressé, le déploiement, l'exploitation de l'interface Windows classique, facile de démarrer et de se débarrasser de la SSH hôte, commande ftp opérations de forage complexes.

                  -

                  nuage personnel privé (recrue): ressources de disque de réseau de gestion, la même opération d'interface de fenêtres classiques, vous pouvez placer le lecteur de musique d'exploration réseau, les fichiers d'écran, le téléchargement et le téléchargement rapide et facile.

                  -
                  - -
                  -
                  Caractéristiques
                  -

                  gestion complète du document, puissant éditeur de fichiers en ligne

                  -

                  où que vous soyez, vous pouvez gérer vos fichiers et de divertissement en ligne, le code d'écriture en ligne! Tout comme approprié pour être utilisé comme système d'exploitation.

                  -

                  vaste transplantation d'expérience locale droit d'exploitation, glisser, boîte de sélection, raccourcis, recherche de fichiers (contenu de recherche) ......

                  -

                  boîte de sélection, faites glisser-mouvement, drag and drop ajout, éditeur en ligne, lecteur vidéo, décomprimer. la performance de garantie ajax complète et l'expérience!

                  -

                  chaque connexion transparente directe de fonction; sous forme de dialogue, les fonctions de gestion multi-tâches

                  -

                  Editor prend en charge multi-document, le soutien ZendCoding html, css, js une plus grande efficacité de codage!

                  -

                  soutien chinois parfait, brouillées résoudre diverses situations;

                  -
                  - -
                  -
                  open source adoption de la technologie
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js cadre de développement général. Fonctionnement de l'opération Dom, BOM, opération de css, et le paquet Ajax

                  -

                  2.ArtDialog:compatibilité du navigateur un beau design, forte widget de dialogue. Donc pop-up poignée, les événements et la transmission de données pour obtenir une meilleure gestion unifiée

                  -

                  3.Ztree:contrôle la liste des arbres, l'évolutivité est très widget manipulation de données d'arbre fort

                  -

                  4.codemirror:un éditeur de code js plugins, prend en charge une variété de langages de programmation pour mettre en évidence

                  -

                  5.zendcoding:un code support html écriture rapide plug-ins. Simplifie la définition du code est écrit. compilation simple

                  -

                  6.less:, un modèle de développement de css fonctionnelle efficace pour améliorer l'extrémité avant des feuilles de style css réutilisabilité . compilation simple

                  -

                  7.SWFUpload:fichier flash télécharger

                  -

                  8 .CMP4:un très bon joueur de plugin flash fichiers multimédia, le soutien aux médias en streaming, outil populaire de lecture de musique vidéo. Soutien pour la peau, les paramètres hautement configurables. Liste dynamique xml chargé. mms en streaming media, rstp licence open source support de lecture multimédia

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/fr/edit.html b/plugin/document/kod/config/i18n/fr/edit.html deleted file mode 100644 index 38cdfbde0..000000000 --- a/plugin/document/kod/config/i18n/fr/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  riches fonctionnalités

                  -

                  code est automatiquement invite

                  -

                  multi-sujet: choisissez votre style de programmation préféré

                  -

                  polices personnalisées: pour la scène suivante en utilisant

                  -

                  plus du curseur d'édition, édition de blocs, etc. comparable à l'expérience sublime de la programmation en ligne

                  -

                  bloc effondré, développez; envelopper

                  -

                  support pour de multiples onglets, faites glisser la séquence de commutation;

                  -

                  maintien de plusieurs documents, rechercher et remplacer, l'histoire,

                  -

                  auto-complet [], {}, () ",", ''

                  -

                  en ligne prévisualisation en temps réel qui vous permet de tomber en amour avec la programmation en ligne!

                  -

                  support zendcodeing, écrire un code de quatre-vingts

                  -

                  plus de fonctionnalités en attente de votre découverte ......

                  -
                  -
                  -

                  150 Code DuoZhong soulignant

                  -

                  tip: html, JavaScript, css, moins, sass, SCSS

                  -

                  développement web: php, perl , python, ruby, Elang, allez ...

                  -

                  langues traditionnelles: java, c, c ++, c #, actionScript, VBScript ...

                  -

                  autre: démarques, coquille, sql, lua, xml, yaml ...

                  -
                  -
                  -
                  -
                  -

                  touches de raccourci

                  -
                  touches de raccourci couramment utilisés: 
                  - ctrl + s pour enregistrer 
                  - ctrl + tout sélectionner ctrl + x cisaillement couper 
                  - ctrl + c pour copier ctrl + v pour coller 
                  - ctrl + z undo ctrl + contre la révocation y 
                  - ctrl + f pour trouver ctrl + f + f pour remplacer 
                  - win + alt + 0 effondrement gagner tous + alt + shift + 0 développer tout 
                  - esc [recherche de sortie automatiquement annulée invite ...] 
                  - ctrl-shift-s aperçu 
                  - ctrl-shift-e show et fermer la fonction 
                  -
                  -
                  sélection: 
                  - marquee de la souris - drag 
                  - shift + home / fin / haut / gauche / bas / droite 
                  - shift + pageUp / PageDown relevez et vers le bas pour sélectionner 
                  - ctrl + shift + home / fin du curseur au début et à la fin 
                  - alt + souris pour faire glisser la sélection de bloc 
                  - ctrl + alt + g lot sélectionner et entrer dans l'éditeur multi-onglet courant 
                  -
                  -
                  curseur: 
                  - home / fin / haut / gauche / bas / droite 
                  - ctrl + home / fin curseur Document Préférences / tail 
                  - ctrl + p aller au tag correspondant 
                  - pageUp / PageDown curseur vers le haut et vers le bas 
                  - alt + curseur gauche / droite pour se déplacer vers le haut de la ligne 
                  - shift + gauche / droite pour déplacer le curseur vers le début et la fin 
                  - ctrl + l Aller à la ligne spécifiée 
                  - ctrl + alt + haut / bas sur (ci-dessous) augmenter le curseur 
                  -
                  -
                  éditeur: 
                  - ctrl + / commentaire & ctrl uncomment + alt + a gauche et à droite aligner 
                  - onglet tableau alignement shift + table de progression globale 
                  - supprimer supprimer ctrl + d pour supprimer toute la ligne 
                  - ctrl + Suppr pour supprimer la ligne sur le mot 
                  - ctrl / Maj + backspace pour supprimer le mot sur la gauche 
                  - alt + shift + up / down copie et ajouté à la ligne (ci-dessous) fait face 
                  - alt + delete pour supprimer le contenu de la droite du curseur alt + haut / bas sur la ligne actuelle et la ligne (prochain échange de ligne) 
                  - ctrl + shift + lignes d copiés et ajoutés à la 
                  - ctrl suivante + 
                  - supprimer retirer la droite du mot 
                  - ctrl + shift + u converti en minuscules 
                  - ctrl + u texte sélectionné en majuscules 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/fr/help.html b/plugin/document/kod/config/i18n/fr/help.html deleted file mode 100644 index bb7cec380..000000000 --- a/plugin/document/kod/config/i18n/fr/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Gestion des fichiers
                  -

                  Sélection du fichier: radio, chapiteau de la souris, shift-élection, ctrl choisi au hasard, le clavier haut et en bas, la maison, la sélection finale.

                  -

                  opération de fichier: Après avoir sélectionné un fichier, vous pouvez copier, couper, supprimer, afficher les propriétés de compression, renommer, Prévisualisation ouverte et d'autres opérations ......

                  -

                  File Upload: Télécharger plusieurs fichiers batch; html5 glisser téléchargement (faire glisser pour télécharger de façon transparente la fenêtre, faites glisser et déposer un soutien pour les dossiers)

                  -

                  fonction droite: droit fichier, un dossier, à droite, plus à droite après l'opération électorale, bureau, droite, droite arborescence de répertoires, les raccourcis du menu de droite lié
                  - (Sélectionner tout - Copier - Cut - Coller - Supprimer - Renommer, réglez ......)

                  -

                  Navigateur de fichiers: mode Liste, mode icône, double-cliquez en sous-dossiers; opération de barre d'adresse; ouvrir un dossier de la liste Ecran contrarian (avant et arrière)

                  -

                  drag and drop de soutien: Vérifiez glisser, couper pour obtenir la fonction de dossier spécifié

                  -

                  Touches de raccourci: supprimer supprimer, ctrl + A Sélectionner tout, ctrl + C pour copier, + X Couper, recherche de fichiers (contenu de recherche) ctrl

                  -
                  -
                  -
                  Aperçu du fichier
                  -

                  Aperçu du fichier: afficher le contenu d'une édition de fichier texte et la sauvegarde; html, fichier swf aperçu,

                  -

                  Aperçu de l'image: génération automatique de vignettes, l'image diaporama;

                  -

                  Lecture audio: jouer de la musique en ligne et des fichiers vidéo, support mp3, wma, mid, aac, wav, mp4,

                  -

                  Vidéo: lecture vidéo en ligne, les formats supportés: flv, F4V, 3gp

                  -

                  bureau: bureau en ligne Aperçu, formats supportés: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Raccourcis
                  -

                  entrez Ouvrir

                  -

                  ctrl + a tout sélectionner

                  -

                  ctrl + c pour copier le sélectionné

                  -

                  ctrl + v pour coller

                  -

                  ctrl + x Cut

                  -

                  ctrl + f pour rechercher le répertoire courant

                  -

                  alt + n Nouveau fichier

                  -

                  alt + m Nouveau dossier

                  -

                  supprimer Supprimer sélectionné

                  -

                  backspace Retour

                  -

                  ctrl + backspace avant

                  -

                  f2 Renommer sélectionné (dossier)

                  -

                  home / fin / haut / bas de droite / gauche / pour sélectionner le fichier

                  -

                  anykey Vérifiez appuyez sur la première lettre des fichiers et dossiers caractère sélectionné cycle automatique

                  -
                  diff --git a/plugin/document/kod/config/i18n/fr/main.php b/plugin/document/kod/config/i18n/fr/main.php deleted file mode 100644 index f20d83460..000000000 --- a/plugin/document/kod/config/i18n/fr/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Veuillez sélectionner le fichier ...", - "path_api_select_folder" => "Veuillez sélectionner un dossier ...", - "path_api_select_image" => "Veuillez sélectionner une image ...", - "share_can_upload" => "Autoriser le téléchargement", - "move_error" => "Déplacer échoué", - "setting_basic" => "Réglages de base", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Ouvrir l'animation", - "recycle_open_if" => "Ouvrez la Corbeille", - "recycle_open" => "ouvert", - "setting_user_recycle_desc" => "Une fois la suppression supprimée directement la suppression physique", - "setting_user_animate_desc" => "Fenêtre ouverte et autre animation", - "setting_user_sound_desc" => "Fonctionnement du son", - "setting_user_imageThumb" => "Image miniatures", - "setting_user_imageThumb_desc" => "Meilleure expérience de navigation après l'ouverture", - "setting_user_fileSelect" => "Ouvrez la vérification de l'icône du fichier", - "setting_user_fileSelect_desc" => "Icône du fichier, touche gauche, cliquez droit de la souris sur l'entrée du raccourci du menu", - "qrcode" => "URL QR code", - "theme_mac" => "Mac blanc minimaliste", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "feu vert Metro", - "theme_metro_purple" => "Metro élégante pourpre", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro orange vif", - "theme_alpha_image" => "Lumineux - volant", - "theme_alpha_image_sun" => "Lumineux - Coucher de soleil", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "personnalisé", - "theme_diy_title" => "Réglages personnalisés à thème", - "theme_diy_background" => "fond", - "theme_diy_image" => "image", - "theme_diy_color_blur" => "Dégradé de couleur", - "theme_diy_image_blur" => "le flou de l'image", - "theme_diy_image_url" => "Adresse Photos", - "theme_diy_color_start" => "couleur de départ", - "theme_diy_color_end" => "Fin Couleur", - "theme_diy_color_radius" => "angle Gradient", - "system_role_admin_set" => "Les administrateurs ont tous les droits, sans fixer!", - "login_error_user_not_use" => "L'utilisateur a été désactivé! S'il vous plaît contacter l'administrateur", - "login_error_kod_version" => "Version conflit", - "login_error_role" => "n'existe pas un groupe Voir les autorisations, s'il vous plaît contacter l'administrateur", - "no_permission_group" => "Vous n'êtes pas dans ce groupe!", - "no_permission_write" => "Le répertoire n'a pas l'autorisation d'écriture", - "user" => "utilisateur", - "save_as" => "Enregistrer sous", - "check_update" => "mettre à jour", - "keyboard_type" => "Keyboard Mode", - "font_family" => "Polices", - "code_mode" => "La coloration syntaxique", - "path_can_not_share" => "Prise en charge seulement partager vos propres documents!", - "path_can_not_action" => "Ce répertoire ne supporte pas cette opération!", - "wap_page_pc" => "PC Version", - "wap_page_phone" => "mobile", - "image_size" => "Dimensions de l'image", - "no_permission_action" => "Vous ne disposez pas de cette autorisation, s'il vous plaît contacter l'administrateur!", - "path_is_root_tips" => "Il est venu dans le répertoire racine!", - "kod_group" => "organisation", - "my_kod_group" => "Je suis dans le département", - "space_tips_default" => "(GB) 0 aucune limite", - "space_tips_full" => "Sans limiter", - "space_size" => "espace", - "space_size_use" => "Utilisation de l'espace", - "space_is_full" => "Il n'y a plus assez d'espace, veuillez contacter l'administrateur!", - "system_open_true_path" => "Ouvert avec succès dans le gestionnaire de fichiers!", - "group_role_error" => "erreur d'autorisations de rôle (pas de paramètres d'autorisation)", - "group_role_error_admin" => "autorisations insuffisantes", - "markdown_content" => "Table des matières", - "system_group" => "Utilisateurs et départements", - "system_group_edit" => "Direction du département", - "system_group_role" => "identité de rôle", - "system_group_create" => "Nouveau département", - "system_group_name" => "Nom du département", - "system_group_father" => "Département supérieur", - "system_group_add" => "Ajouter un sous-département", - "system_group_remove" => "Supprimer le département", - "system_group_remove_tips" => "Etes-vous sûr de supprimer le département?
                  Après la suppression de la suppression de la partie de l'utilisateur, le sous-secteur est déplacé vers le secteur racine", - "system_group_select" => "Choisir département", - "system_group_select_result" => "Les membres appartiennent aux secteurs suivants", - "system_role_admin_tips" => "Remarques: Les administrateurs système ne sont pas autorisés à contrôler", - "system_member_action" => "Gestion des utilisateurs", - "system_member_add" => "Nouvel utilisateur", - "system_member_role" => "rôles d'autorisation", - "system_member_role_select" => "sélectionner", - "system_member_password_tips" => "Ne remplissez pas modifié", - "system_set_home_path" => "Catalogue personnalisé", - "system_set_home_path_tips" => "Le répertoire par défaut est vide", - "system_member_group" => "Où le département", - "system_member_group_edit" => "Département éditorial", - "system_member_remove" => "Supprimer l'utilisateur", - "system_member_remove_tips" => "Confirmer utilisateur delete?
                  après avoir supprimé le répertoire utilisateur sera complètement effacé", - "system_member_set_role" => "Pour confirmer la modification des autorisations de groupes d'utilisateurs sélectionnés?", - "system_member_remove_group" => "Déterminer l'utilisateur sélectionné sera supprimé de ce groupe?", - "system_member_import" => "add Bulk", - "system_member_import_desc" => "Un utilisateur par ligne,
                  existent déjà sont silencieusement ignorées", - "system_member_use" => "permettre", - "system_member_unuse" => "Désactiver", - "system_member_space" => "Définir la taille de l'espace utilisateur ", - "system_member_space_tips" => " Définir la taille de l'espace utilisateur ", - "system_member_space_number" => " Doit être un nombre!", - "system_member_group_config" => "Département de réglage des lots", - "system_member_group_remove" => "Retiré du département", - "system_member_group_insert" => "Ajouter au département", - "system_member_group_reset" => "Réinitialiser le département", - "system_member_group_error" => "Erreur de département", - "system_group_action" => "Direction du département", - "system_role_add" => "Ajouter Identité Rôle", - "system_role_read" => "Lecture seule", - "system_role_write" => "Peut lire et écrire", - "system_setting_root_path" => "Accès Root", - "system_setting_root_path_desc" => "Seul un administrateur système peut accéder à tous les répertoires, d'autres groupes de défense des droits des utilisateurs ne peuvent voir leur propre répertoire utilisateur. Si vous voulez activer ou désactiver l'accès administrateur
                  à d'autres répertoires, vous pouvez modifier le php open_basedir paramètres anti-cross-site,mis", - "system_group_role_title" => "Gestion des rôles d'autorité ministérielle", - "system_group_role_remove" => "OK pour supprimer le rôle de département", - "system_group_role_style" => "style", - "system_group_role_display" => "si", - "system_group_role_display_desc" => "Définir si afficher les droits d'utilisateur du département", - "role_type_name_read" => "lire", - "role_type_name_read:list" => "Liste des fichiers", - "role_type_name_read:info" => "Fichier (dossier) propriété View, recherche dossier", - "role_type_name_read:copy" => "Copie de fichiers", - "role_type_name_read:preview" => "Aperçu du fichier (images, documents, audio et vidéo)", - "role_type_name_read:download" => "Fichier (dossier) Télécharger", - "role_type_name_write" => "écrire", - "role_type_name_write:add" => "Créez un fichier (dossier), extraire le fichier compressé", - "role_type_name_write:edit" => "Enregistrez le fichier à modifier", - "role_type_name_write:change" => "Renommer, ajuster la structure du répertoire", - "role_type_name_write:upload" => "Téléchargement de fichiers (dossier), télécharger à distance", - "role_type_name_write:remove" => "Fichier (dossier) supprimer, couper", - "group_guest" => "visiteurs", - "group_guest_desc" => "Vous n'êtes pas membre du département,
                  ne peut accéder au [département partagé du répertoire] que le contenu suivant, autorisations en lecture seule.", - "group_role_lebel_desc" => "Vous êtes membre de ce département,
                  Tous les documents du département Tous droits réservés à l'administrateur", - "button_save_and_add" => "Enregistrer et continuer à ajouter", - "path_cannot_search" => "Le répertoire ne supporte pas la recherche!", - "not_support" => "Non pris en charge!", - "group_not_exist" => "Groupe d'utilisateurs n'existe pas!", - "upload_clear_all" => "Effacer tout", - "upload_clear" => "Effacer Terminé", - "upload_setting" => "installer", - "upload_tips" => "Utilise tranche téléchargement, ne sont plus soumis à la limite php.ini; recommandé glisser le dossier de chrome et drop expérience de téléchargement", - "upload_exist" => "Fichier du même nom", - "upload_exist_rename" => "rebaptiser", - "upload_exist_replace" => "couverture", - "upload_exist_skip" => "sauter", - "upload_add_more" => "add Bulk", - "more" => "plus", - "system_setting" => "Paramètres système", - "openProject" => "Ouvrez l'éditeur de projet", - "url_download" => "télécharger", - "url_link" => "URL", - "app_type_link" => "Raccourcis", - "createLink" => "Créer un raccourci", - "createLinkHome" => "Envoyé au raccourci sur le bureau", - "createProject" => "Ajout au projet de l'éditeur", - "only_read" => "Lecture seule", - "only_read_desc" => "Le répertoire n'a pas l'autorisation d'écriture
                  Vous pouvez définir des autorisations pour ce répertoire sur le serveur", - "not_read" => "illisible", - "explorerNew" => "lien kod", - "zip_download_ready" => "Après la compression va télécharger automatiquement, s'il vous plaît patienter ...", - "set_background" => "Définir comme Fond d'écran", - "share" => "Partager", - "my_share" => "Mon partage", - "group_share" => "Groupe de partage externe", - "share_edit" => "Modifier partager", - "share_remove" => "Annuler le partage", - "share_remove_tips" => "Êtes-vous sûr de vouloir annuler le partage? La connexion publique sera invalidée.", - "share_path" => "Partagez le chemin", - "share_title" => "Partage de ressources", - "share_name" => "Partagez le titre", - "share_time" => "expiration", - "share_time_desc" => "Null n'est pas réglé", - "share_password" => "mot de passe Extrait", - "share_password_desc" => "mot de passe vide est pas défini", - "share_cancle" => "Départager", - "share_create" => "Créer un lien public", - "share_url" => "Adresse commune", - "share_not_download" => "Télécharger interdiction", - "share_not_download_tips" => "Sharer interdit téléchargement!", - "share_code_read" => "code de lecteur", - "share_save" => "Enregistrer la configuration", - "share_error_param" => "erreur Paramètre!", - "share_error_user" => "Utilisateur Erreur!", - "share_error_sid" => "Partager n'existe pas!", - "share_error_time" => "Vous arrivez trop tard, la part a expiré!", - "share_error_path" => "fichier partagé n'existe pas, il est supprimé ou enlevé!", - "share_error_password" => "Mot de passe incorrect!", - "share_error_show_tips" => "Ce type ne supporte pas les fichiers aperçu!", - "share_view_num" => "Vues:", - "share_download_num" => "Téléchargements:", - "share_open_page" => "Ouvrez la page partagée", - "open_the_path" => "Entrez le répertoire", - "recycle_clear" => "Vider la corbeille", - "recycle_clear_success" => "succès Vider la corbeille!", - "recycle_clear_info" => "Êtes-vous sûr de vouloir vider complètement la corbeille?", - "fav_remove" => "Annuler la collection", - "remove_item" => "Articles", - "uploading" => "Uploading", - "upload_tips_more" => "Trop de fichiers, la recommandation du téléchargement comprimé, puis décompressez en ligne!", - "uploading_move" => "Dans le transfert de fusion ...", - "show_file" => "Nouvelle page preview", - "unknow_file_title" => "File Open Tip!", - "unknow_file_tips" => "Ne prend pas en charge l'application de ce fichier, vous pouvez:", - "unknow_file_try" => "essayer", - "unknow_file_download" => "Télécharger le fichier", - "unknow_plugin_search" => "applications liées à la recherche installés", - "config_save_error_auth" => "Impossible d'enregistrer la configuration, l'administrateur a interdit ce privilège!", - "config_save_error_file" => "Erreur, fichier non inscriptible!", - "beautify_code" => "formateur de code", - "convert_case" => "conversion de cas", - "convert_upper_case" => "Converti en lettres majuscules", - "convert_lower_case" => "Converti en minuscules", - "editor_insert_time" => "Heure actuelle ", - "editor_md5" => " Cryptage Md5 ", - "editor_qrcode" => " String code à deux dimensions ", - "editor_regx" => " Test d'expression régulière ", - "editor_chinese" => " Conversion simplifiée ", - "editor_chinese_simple" => " Convertir en chinois simplifié ", - "editor_chinese_traditional" => " Convertir en chinois traditionnel ", - "editor_base64" => "Codec Base64 ", - "editor_base64_encode" => " Encodage Base64 ", - "editor_base64_decode" => " Décodage Base64 ", - "editor_url" => " Codec URL ", - "editor_url_encode" => " Encodage d'URL ", - "editor_url_decode" => " Décodage d'URL ", - "editor_unicode" => " Codec Unicode ", - "editor_unicode_encode" => " Codage Unicode ", - "editor_unicode_decode" => " Décodage Unicode", - "editor_tools_select_tips" => " S'il vous plaît sélectionner le contenu que vous souhaitez convertir!", - "editor_calc" => "Calculateur gratuit", - "shortcut" => "Raccourcis", - "use_free" => "Continuer à utiliser la version gratuite", - "learn_more" => "En savoir plus", - "replace" => "remplacer", - "selectAll" => "sélectionner", - "reload" => "recharger", - "about" => "sur", - "complete_current" => "Auto-complétion du courant", - "view" => "vue", - "tools" => "outil", - "help" => "aider", - "not_exists" => "N'existe", - "group_role_fileDownload" => "Téléchargements", - "group_role_share" => "part", - "users_share" => "partage", - "system_setting_save" => "Paramètres de sécurité", - "system_setting_menu" => "Gestion des menus", - "system_name" => "Nom du programme", - "system_name_desc" => "Logo du programme titre", - "system_desc" => "description du programme", - "path_hidden" => "exclusions Directory", - "version_not_support" => "Votre version ne supporte pas cela, s'il vous plaît aller sur le site officiel pour acheter la version avancée!", - "version_not_support_number" => "Comme le nombre de restriction ne supporte pas cette opération, s'il vous plaît acheter la version avancée du site officiel!", - "path_hidden_desc" => "Répertoires et fichiers par défaut pas affichés, séparés par des virgules", - "new_user_folder" => "Le nouvel utilisateur est créé par répertoire par défaut", - "new_user_folder_desc" => "Séparé par des virgules", - "new_user_app" => "Le nouvel utilisateur est créé par l'application par défaut", - "new_user_app_desc" => "Applications Application Center, une pluralité de séparés par des virgules", - "auto_login" => "Les visiteurs de connexion automatique", - "auto_login_desc" => "La connexion par défaut utilisateurguest/guestutilisateurs; après l'ouverture afin d'assurer que l'utilisateur existe", - "first_in" => "Après avoir accédé à la valeur par défaut", - "version_price_free" => "gratuit", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory est pas inscriptible, définir le répertoire et tous les sous-répertoires pour essayer à nouveau après la lecture-écriture!", - "menu_name" => "Nom du menu", - "menu_hidden" => "cacher", - "menu_show" => "afficher", - "menu_move_down" => "vers le bas", - "menu_move_up" => "en haut", - "menu_move_del" => "effacer", - "menu_open_window" => "Ouvrez une nouvelle fenêtre", - "menu_sub_menu" => "Sous-menu", - "url_path" => "adresse url", - "url_path_desc" => "adresse URL ou un code js", - "no_permission_read" => "Vous n'êtes pas autorisé à lire!", - "no_permission_download" => "Vous n'êtes pas autorisé à télécharger!", - "php_env_check" => "Fonctionnement surveillance environnement:", - "php_env_error" => "Bibliothèque Php manquante", - "php_env_error_ignore" => "Ignorer et entrez", - "php_env_error_version" => "PHP version ne peut pas être inférieure à 5,0", - "php_env_error_path" => "Non inscriptible", - "php_env_error_list_dir" => "Votre serveur Web ouvre le répertoire fonctionnalité liste pour des raisons de sécurité, désactiver cette fonctionnalité!comment?", - "php_env_error_gd" => "bibliothèque GD Php doit être ouvert, sinon le code, utilisez la vignette ne fonctionnera pas correctement", - "install_login" => "Vous pouvez utiliser le compte de connexion suivante", - "install_enter" => "le système", - "install_user_default" => "Administrateur: {0} / (ci-dessous un mot de passe)
                  utilisateur moyen: {1}
                  Les utilisateurs invités: {2}", - "login_root_password" => "Définissez le mot de passe administrateur", - "login_root_password_repeat" => "Confirmer nouveau mot de passe", - "login_root_password_equal" => "Les deux mots de passe ne correspondent pas!", - "login_root_password_tips" => "Définir un mot de passe administrateur!", - "forget_password" => "Vous avez oublié votre mot de passe", - "forget_password_tips" => "Mot de passe administrateur:
                  S'il vous plaît serveur connecter supprimer ./data/system/install.lock réinitialiser;

                  Non-administrateur Mot de passe oublié:
                  S'il vous plaît contacter l'administrateur pour réinitialiser!", - "copyright_desc" => "Kodexplorer est un système de gestion de documents Web hautement acclamé, vous pouvez l'utiliser pour la gestion documentaire interne ou partagée, peut également être utilisé sur le serveur de gestion du site, remplacer Ftp, comme webIDE directement le développement en ligne. Vous pouvez également programmer le second développement à intégrer dans vos systèmes existants.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango nuage • Explorateur", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango nuage • Explorateur", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, nuage Dao, mangue nuage, les systèmes de gestion de documents, disque cloud d'entreprise, explorateur ,, documentation en ligne, Bureau en ligne, bureau en ligne, aperçu CAO en ligne, édition en ligne , éditeur en ligne", - "kod_meta_description" => "KodExplorer peut obscurcir la route (anciennement mangue nuage) est un fournisseur leader de gouvernement / clouds privés d'entreprise et système de gestion de documents en ligne pour les sites personnels, les déploiements de cloud privé d'entreprise, stockage réseau, la gestion de documents en ligne, bureau en ligne pour fournir sûr et contrôlé, simple et facile utilisation, très personnalisé produits de cloud privé. Interface à l'aide de style fenêtres, les pratiques d'exploitation, sans avoir à adapter rapidement commencer, soutenir des centaines de format de fichier d'aperçu en ligne populaire, la lecture et l'environnement convivial montage, puissant, est un procès une fois, plus inséparable de la privée offres cloud.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Connectez-vous", - "guest_login" => "Invité Connexion", - "username" => "Compte de connexion", - "userNickName" => "Pseudonyme de l'utilisateur", - "password" => "mot de passe", - "login_code" => "codes", - "need_check_code" => "code d'authentification Connexion ouverte", - "need_check_code_desc" => "Après la connexion, vous devez entrer le code de vérification.", - "setting_csrf_protect" => "Protection Open CSRF", - "setting_csrf_protect_desc" => "Après le type d'ouverture d'attaque peut protéger efficacement CSRF", - "login_rember_password" => "Rappeler mot de passe", - "setting_show_root_group" => "Liste de tous les départements", - "setting_show_root_group_desc" => "Département racine du répertoire arborescent pour lister tous les départements", - "setting_show_share_user" => "Une liste de tous les utilisateurs", - "setting_show_share_user_desc" => "Le département racine du répertoire Tree est répertorié pour tous les utilisateurs partageant", - "setting_clear_user_recycle" => "Vider la corbeille pour tous les utilisateurs", - "setting_clear_cache" => "Vider le cache", - "setting_icp" => "Droit d'auteur ou le numéro d'enregistrement", - "setting_global_css" => "css globale sur mesure", - "setting_global_css_desc" => "Toutes les pages insérera CSS personnalisé", - "setting_global_html" => "Code HTML statistique", - "setting_global_html_desc" => "Toutes les pages seront insérées dans le présent paragraphe code html, le code peut être placé des statistiques tiers", - "us" => "kodcloud.com", - "login_not_null" => "Nom d'utilisateur et mot de passe ne peut être vide!", - "code_error" => "Codes d'erreur", - "password_error" => "nom ou le mot de passe utilisateur est incorrect!", - "password_not_null" => "Le mot de passe ne peut être vide!", - "old_password_error" => "Ancien mot de passe est faux!", - "permission" => "Permission!", - "permission_edit" => "Modifier les autorisations", - "file_info_owner" => "propriétaire", - "file_info_group" => "groupe", - "no_permission" => "Administrateur a désactivé ce privilège!", - "no_permission_ext" => "Administrateur interdit ce type de permissions de fichiers", - "dialog_max" => "maximiser", - "dialog_min" => "minimiser", - "dialog_min_all" => "Réduire tout", - "dialog_display_all" => "Afficher toutes les fenêtres", - "dialog_close_all" => "Fermez toutes les", - "open" => "ouvert", - "others" => "autre", - "open_with" => "Ouvert pour ...", - "close" => "proche", - "close_all" => "Fermez toutes les", - "close_left" => "Fermer l'onglet gauche", - "close_right" => "Fermer les onglets sur la droite", - "close_others" => "Fermer Autres", - "loading" => "Opération ...", - "warning" => "avertissement", - "getting" => "Obtenez le ...", - "sending" => "La transmission de données ...", - "data_error" => "Data Error!", - "get_success" => "Obtenir le succès!", - "save_success" => "Enregistrée avec succès!", - "success" => "opération réussie", - "error" => "L'opération a échoué", - "error_repeat" => "L'opération a échoué, le nom existe déjà!", - "word_error" => "Échec ", - "word_success" => " Succès", - "system_error" => "Erreur système", - "name" => "nom", - "type" => "type", - "contain" => "contenir", - "address" => "emplacement", - "size" => "taille", - "byte" => "octet", - "path" => "chemin", - "action" => "d'exploitation", - "create_time" => "établi", - "modify_time" => "modifié", - "last_time" => "Dernière visite", - "sort_type" => "Trier par", - "time_type" => "d/m/Y H:i:s", - "time_type_info" => "d/m/Y H:i:s", - "public_path" => "répertoire public", - "system_path_not_change" => "répertoire système, ne peut pas être modifié", - "file" => "fichier", - "folder" => "dossier", - "copy" => "copie", - "past" => "bâton", - "clone" => "Créer une copie", - "cute" => "cisaille", - "cute_to" => "Déplacer vers ...", - "copy_to" => "Copier vers ...", - "remove" => "effacer", - "remove_force" => "enlever complètement", - "info" => "propriété", - "list_type" => "vue", - "list_icon" => "array Icône", - "list_list" => "Liste arrangement", - "list_list_split" => "Mode Colonne", - "sort_up" => "incrément", - "sort_down" => "réduction", - "order_type" => "Trier par", - "order_desc" => "descendant", - "order_asc" => "ascendant", - "rename" => "rebaptiser", - "add_to_fav" => "Ajouter aux Favoris", - "search_in_path" => "Recherche de dossier", - "add_to_play" => "Ajouter à la playlist", - "manage_fav" => "Gérer les favoris", - "refresh_tree" => "Actualiser arborescence", - "manage_folder" => "Gestion d'annuaire", - "close_menu" => "Fermer le menu", - "zip" => "Créer un package compressé", - "unzip" => "Pour extraire ...", - "unzip_folder" => "Décompressez dans un dossier", - "unzip_this" => "Extrait du courant", - "unzip_to" => "Pour extraire ...", - "zipview_file_big" => "Le fichier est trop grand, puis extraire l'opération de prévisualisation!", - "clipboard" => "Voir le Presse-papiers", - "clipboard_clear" => "Presse-papiers vide", - "full_screen" => "plein écran", - "folder_info_item" => "Articles", - "folder_info_item_select" => "A sélectionné", - "file_load_all" => "Double-cliquez pour charger tous ......", - "tips" => "rapide", - "ziping" => "Compresser ...", - "unziping" => "Extraction ...", - "moving" => "opération Mobile ...", - "remove_title" => "Confirmation de la suppression", - "remove_info" => "Confirmer pour supprimer l'élément sélectionné?", - "remove_title_force" => "de manière permanente supprimé", - "remove_info_force" => "Vous êtes sûr que vous voulez supprimer définitivement ce document?", - "name_isexists" => "Faux, le nom existe déjà!", - "install" => "installer", - "width" => "largeur", - "height" => "haut", - "app" => "Applications légères", - "app_store" => "Applications légères", - "app_create" => "Création d'une application", - "app_edit" => "Modifier l'application", - "app_group_all" => "complet", - "app_group_game" => "jeu", - "app_group_tools" => "outil", - "app_group_reader" => "lire", - "app_group_movie" => "télévision", - "app_group_music" => "musique", - "app_group_life" => "vie", - "app_group_others" => "autre", - "app_desc" => "description", - "app_icon" => "icône Applications", - "app_icon_show" => "adresse URL ou le répertoire", - "app_group" => "Packet Application", - "app_type" => "type", - "app_type_url" => "lien", - "app_type_code" => "l'extension js", - "app_display" => "extérieur", - "app_display_border" => "Sans frontières (c.-à-sélectionner sans frontières)", - "app_display_size" => "Redimensionner (Vérifier l'ajustement)", - "app_size" => "taille", - "app_url" => "Adresse de liaison", - "app_code" => "Code js", - "edit" => "éditer", - "edit_can_not" => "Pas un fichier texte", - "edit_too_big" => "Le fichier est trop grand, il ne peut pas être supérieure à 40M", - "open_default" => "Par défaut Ouvrir", - "open_ie" => "Ouvrez le navigateur", - "refresh" => "rafraîchir", - "refresh_all" => "Forcer une actualisation", - "newfile" => "Nouveau fichier", - "newfile_save_as" => "Ajouter à la", - "newfolder" => "Nouveau dossier", - "newothers" => "Nouveau Autre", - "path_loading" => "Chargement en cours ...", - "go" => "Marchez!", - "go_up" => "La couche supérieure", - "history_next" => "avant", - "history_back" => "retraite", - "address_in_edit" => "Cliquez pour accéder au mode d'édition", - "double_click_rename" => "Double-cliquez sur le Renaming", - "double_click_open" => "Double-cliquez pour ouvrir", - "path_null" => "Dossier est vide!", - "file_size_title" => "icon Taille", - "file_size_small_super" => "Ultra-petite", - "file_size_small" => "petites icônes", - "file_size_default" => "Icônes", - "file_size_big" => "grandes icônes", - "file_size_big_super" => "Grande icône", - "upload" => "Télécharger", - "upload_ready" => "En attente de téléchargement", - "upload_success" => "Ajouter réussie", - "upload_path_current" => "Basculer vers le répertoire courant", - "upload_select" => "Sélectionnez fichier", - "upload_max_size" => "Le maximum admissible", - "upload_size_info" => "Si vous souhaitez configurer plus, s'il vous plaît modifier php.ini maximale autorisée téléchargement. Lorsque vous sélectionnez un fichier plus grand que cette configuration sera automatiquement filtrer.", - "upload_error" => "Échec de l'envoi", - "upload_error_http" => "Réseau ou erreurs de pare-feu", - "upload_muti" => "Multi-chargement de fichier", - "upload_drag" => "Drag and drop télécharger", - "upload_drag_tips" => "Desserrez à télécharger!", - "path_not_allow" => "Nom de fichier non autorisé", - "download" => "télécharger", - "downloading" => "Chargement en cours ...", - "download_address" => "télécharger", - "download_ready" => "Sera téléchargé", - "download_success" => "Télécharger Success!", - "download_error" => "Échec du téléchargement!", - "download_error_create" => "erreur Write!", - "download_error_exists" => "Lien vers le fichier a échoué!", - "upload_error_null" => "Aucun fichier!", - "upload_error_big" => "La taille du fichier dépasse les limites du serveur", - "upload_error_move" => "Impossible de déplacer le fichier!", - "upload_error_exists" => "Le fichier existe déjà", - "upload_local" => "Télécharger local", - "download_from_server" => "Téléchargement à distance", - "save_path" => "Enregistrer Chemin", - "upload_select_muti" => "Une pluralité de téléchargement de fichier sélectionnable", - "search" => "recherche", - "searching" => "Recherche ...", - "search_result" => "Résultats de la recherche", - "seach_result_too_more" => "Trop de résultats de la recherche, il est recommandé pour un répertoire ou des mots", - "search_null" => "Aucun résultat!", - "search_uplow" => "sensible à la casse", - "search_content" => "le contenu du fichier de recherche", - "search_info" => "S'il vous plaît entrer un terme de recherche et de recherche des chemins!", - "search_ext_tips" => "Par | séparés, par exemple php | js | css
                  ne remplit pas la recherche de fichier texte par défaut", - "file_type" => "Type de fichier", - "goto" => "Aller à", - "server_dwonload_desc" => "La tâche a été ajouté à la liste de téléchargement", - "parent_permission" => "permissions du répertoire parent", - "root_path" => "Mes Documents", - "lib" => "entrepôt", - "fav" => "Bookmark", - "desktop" => "bureau", - "browser" => "Navigateur", - "my_computer" => "Poste de travail", - "recycle" => "déchets", - "my_document" => "Mes Documents", - "my_picture" => "Mes Photos", - "my_music" => "Ma Musique", - "my_movie" => "Mes vidéos", - "my_download" => "Mes Téléchargements", - "ui_desktop" => "bureau", - "ui_explorer" => "Gestion des fichiers", - "ui_editor" => "éditeur", - "adminer" => "Adminer", - "ui_project_home" => "projet Accueil", - "ui_login" => "Connectez-vous", - "ui_logout" => "quitter", - "setting" => "Paramètres système", - "setting_title" => "options de", - "setting_user" => "personnels", - "setting_password" => "Changer mot de passe", - "setting_password_old" => "Ancien mot de passe", - "setting_password_new" => "révisé pour", - "setting_language" => "Paramètres de langue", - "setting_member" => "Gestion des utilisateurs", - "setting_group" => "la gestion des groupes d'utilisateurs", - "setting_group_add" => "Ajouter un groupe d'utilisateurs", - "setting_group_edit" => "Groupes d'utilisateurs Modifier", - "setting_theme" => "Paramètres thème", - "setting_wall" => "Paramètres du papier peint", - "setting_wall_desktop" => "Fond d'écran", - "setting_wall_desktop_list" => "Gestion du papier peint", - "setting_wall_login_list" => "Gestion des fonds d'écran", - "setting_wall_login_tips" => "Astuce: Lorsqu'il y a plus d'une pièce, l'arrière-plan de l'interface de connexion tourne de manière aléatoire", - "setting_wall_diy" => "fond d'écran personnalisé:", - "setting_wall_info" => "adresse url de l'image, les images locales peut être juste pour obtenir le navigateur pour ouvrir l'image", - "setting_fav" => "Gestionnaire de signets", - "setting_help" => "Utilisation de l'aide", - "setting_about" => "A propos des œuvres", - "setting_success" => "Modification a pris effet!", - "can_not_repeat" => "Non autorisé à répéter", - "absolute_path" => "adresse absolue", - "group" => "Groupes d'utilisateurs", - "data_not_full" => "Les données soumises incomplètes!", - "default_user_can_not_do" => "L'utilisateur par défaut ne peut pas fonctionner", - "default_group_can_not_do" => "groupes d'utilisateurs par défaut ne peuvent pas fonctionner", - "username_can_not_null" => "Nom d'utilisateur ne peut pas être vide!", - "groupname_can_not_null" => "nom du groupe de l'utilisateur ne peut pas être vide!", - "groupdesc_can_not_null" => "Groupe utilisateur Description ne peut être vide!", - "group_move_user_error" => "Les utilisateurs du groupe d'utilisateurs se déplacent échoué", - "group_already_remove" => "Le groupe d'utilisateurs a été supprimé", - "group_not_exists" => "n'existe pas Ce groupe d'utilisateurs", - "member_add" => "Ajouter un utilisateur", - "password_null_not_update" => "Ils ont dit qu'ils ne changent pas le mot de passe ne soit pas rempli", - "if_save_file_tips" => "Certains fichiers ne sont pas enregistrés. Êtes-vous sûr de fermer la fenêtre?", - "if_save_file" => "Fichier n'a pas été enregistré, vous voulez économiser?", - "if_remove" => "Confirmer la suppression", - "member_remove_tips" => "Après avoir supprimé le répertoire utilisateur sera effacé", - "group_remove_tips" => "Après avoir supprimé le groupe d'utilisateurs des utilisateurs ne peuvent pas ouvrir une session
                  (besoin de re-définir un groupe d'utilisateurs)", - "group_name" => "Nom du groupe d'utilisateurs", - "group_name_tips" => "Recommandation nom anglais, ne peut pas être répété", - "group_desc" => "Nom d'affichage", - "group_desc_tips" => "Nom Description du groupe", - "group_role_ext" => "restrictions d'extension", - "group_role_ext_tips" => "Avec multiples | séparés", - "group_role_file" => "Gestion des fichiers", - "group_role_upload" => "Autoriser le téléchargement", - "group_role_user" => "Les données utilisateur", - "group_role_group" => "la gestion des groupes d'utilisateurs", - "group_role_member" => "Gestion des utilisateurs", - "group_role_mkfile" => "Nouveau fichier", - "group_role_mkdir" => "Nouveau dossier", - "group_role_pathrname" => "rebaptiser", - "group_role_pathdelete" => "La suppression du fichier", - "group_role_pathinfo" => "Propriétés du fichier", - "group_role_pathmove" => "Déplacer (/ couper / coller / opération de déplacement de copie)", - "group_role_zip" => "compression", - "group_role_unzip" => "Décompressez", - "group_role_search" => "recherche", - "group_role_filesave" => "Enregistrez le fichier à éditer", - "group_role_can_upload" => "Téléchargement et le téléchargement", - "group_role_download" => "Téléchargement à distance", - "group_role_passowrd" => "Changer mot de passe", - "group_role_config" => "Configuration Data", - "group_role_fav" => "opérations signet (ajouter / modifier / supprimer)", - "action_list" => "List View", - "action_add" => "ajouter", - "action_edit" => "éditer", - "action_del" => "effacer", - "group_role_ext_warning" => "Upload ne permet pas de tels fichiers,
                  Renommer (renommé à l'extension spécifiée),
                  Editer enregistrer, télécharger à distance, extrait", - "group_tips" => "
                • 1. Le nom du groupe d'utilisateurs ne peut pas être dupliqué Après la modification du nom du groupe, il appartient à l'utilisateur réorganisé et est automatiquement associé.
                • 2. Les extensions limitent la relation entre la sécurité du système, s'il vous plaît soyez prudent (si vous créez un nouveau php dans le répertoire Web, cela signifie que la modification des autorisations du programme à cet utilisateur est pratiquement impossible)
                • 3. La gestion des ménages, la gestion des groupes de droits, les droits de visualisation et d'ajout, de suppression et de modification des droits sont liés, les programmes sont automatiquement associés
                • 4. Une fois que le groupe d'autorisations est défini pour ajouter le groupe d'autorisations, l'autorisation suivante n'est pas héritée (cette autorisation est équivalente à l'autorisation la plus élevée).
                • ", - "not_null" => "Les champs obligatoires ne peut être vide!", - "picture_can_not_null" => "Photos ne peut être vide!", - "rname_success" => "Renommez le succès!", - "please_inpute_search_words" => "S'il vous plaît entrer une chaîne à rechercher", - "remove_success" => "Supprimé avec succès!", - "remove_fali" => "Supprimer échoué!", - "clipboard_null" => "Presse-papiers est vide!", - "create_success" => "Nouveau succès!", - "create_error" => "Nouveau échoue, vérifiez les permissions du répertoire!", - "copy_success" => "[Copie] - couvrant le succès du presse-papiers!", - "cute_success" => "[Couper] - couvrant le succès du presse-papiers!", - "clipboard_state" => "état Presse-papiers:", - "no_permission_write_all" => "Le fichier ou le répertoire est pas inscriptible", - "no_permission_write_file" => "Le fichier n'a pas l'autorisation d'écriture", - "no_permission_read_all" => "Le fichier ou le répertoire n'a pas la permission de lecture", - "copy_not_exists" => "n'existe Source", - "current_has_parent" => "Dossier cible est un sous-dossier du dossier source!", - "past_success" => "opération de collage est terminée", - "cute_past_success" => "opérationde coupe est terminée(fichier source est supprimé, le presse-papiers vide)", - "zip_success" => "Compression terminée", - "not_zip" => "Pas d'archives", - "zip_null" => "Non sélectionné fichier ou répertoire", - "unzip_success" => "décompressez complète", - "gotoline" => "Aller à la ligne", - "path_is_current" => "Le chemin et le chemin de courant pour ouvrir le même!", - "path_exists" => "Le nom existe déjà!", - "undo" => "révocation", - "redo" => "Anti révocation", - "preview" => "avant-première", - "wordwrap" => "enveloppe", - "show_gutter" => "Afficher les numéros de ligne", - "char_all_display" => "Afficher les caractères invisibles", - "auto_complete" => "invite automatiquement", - "auto_save" => "Enregistrer automatiquement", - "function_list" => "Liste des fonctions", - "code_theme" => "Codage style", - "font_size" => "Taille de la police", - "confirm" => "Êtes-vous sûr de vouloir faire cela?", - "button_ok" => "déterminer", - "button_submit" => "soumettre", - "button_set" => "installer", - "button_cancel" => "annulé", - "button_edit" => "éditer", - "button_save" => "Sauvegarder", - "button_apply" => "Postuler", - "button_save_all" => "Enregistrer tout", - "button_not_save" => "Ne pas enregistrer", - "button_add" => "ajouter", - "button_back_add" => "Retour à ajouter", - "button_del" => "effacer", - "button_save_edit" => "Enregistrer les modifications", - "button_save_submit" => "Enregistrer Soumettre", - "button_more" => "plus", - "button_select_all" => "Sélectionner tout / Inverser la sélection", - "charset_AUTO" => "Identification automatique", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabe", - "charset_ISO_8859_6" => "arabe", - "charset_ISO_8859_10" => "langues nordiques", - "charset_CP1257" => "langues baltes", - "charset_ISO_8859_13" => "langues baltes", - "charset_ISO_8859_4" => "langues baltes", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "géorgien", - "charset_PT154" => "kazakh", - "charset_CP949" => "coréen", - "charset_EUC_KR" => "coréen", - "charset_GB18030" => "Chinois simplifié", - "charset_GBK" => "Chinois simplifié", - "charset_ISO_8859_14" => "celtique", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "roumain", - "charset_ISO_8859_3" => "Europe du Sud", - "charset_EUC_JP" => "japonais", - "charset_ISO_2022_JP" => "japonais", - "charset_SHIFT_JIS" => "japonais", - "charset_KOI8_T" => "tadjik", - "charset_ISO_8859_11" => "thaï", - "charset_TIS_620" => "thaï", - "charset_CP1254" => "turc", - "charset_CP1251" => "cyrillique", - "charset_ISO_8859_5" => "cyrillique", - "charset_KOI8_R" => "cyrillique", - "charset_KOI8_U" => "cyrillique", - "charset_CP1252" => "Ouest langues européennes", - "charset_ISO_8859_1" => "Ouest langues européennes", - "charset_ISO_8859_15" => "Ouest langues européennes", - "charset_Macintosh" => "Ouest langues européennes", - "charset_CP1255" => "hébreu", - "charset_ISO_8859_8" => "hébreu", - "charset_CP1253" => "grecque", - "charset_ISO_8859_7" => "grecque", - "charset_ARMSCII_8" => "arménien", - "charset_CP1258" => "vietnamien", - "charset_VISCII" => "vietnamien", - "charset_CP1250" => "Central langues européennes", - "charset_ISO_8859_2" => "Central langues européennes", - "charset_default_set" => "L'encodage du fichier", - "charset_convert_save" => "Enregistrez le fichier codé comme", - "PluginCenter" => "centre Plug", - "PluginBuy" => "Autorisation d'achat", - "PluginInstalled" => "A été installé", - "PluginUpdate" => "mettre à jour", - "PluginListNull" => "Il n'y a pas de contenu!", - "PluginType" => "classification", - "PluginTypeAll" => "complet", - "PluginTypeFile" => "fichier amélioré", - "PluginTypeSafe" => "Outils de sécurité", - "PluginTypeTools" => "utilitaire", - "PluginTypeMedia" => "multimédia", - "PluginTypeOthers" => "autres", - "PluginInstall" => "installer le bouchon", - "PluginEnable" => "Activer les plug-ins", - "PluginDisable" => "désactiver", - "PluginRemove" => "Désinstaller le bouchon", - "PluginConfig" => "Configurer le plugin", - "PluginStatus" => "état", - "PluginStatusEnabled" => "Activé", - "PluginStatusDisabled" => "non activé", - "PluginStatusNotInstall" => "non installé", - "PluginInstalling" => "Installation ...", - "PluginHasUpdate" => "Mises à jour", - "PluginUpdateStart" => "plug-in mise à jour", - "PluginNeedConfig" => "La nécessité de permettre la configuration initiale", - "PluginConfigNotNull" => "Les champs obligatoires ne peuvent pas être vide!", - "PluginOpen" => "ouvert", - "PluginAuther" => "auteur", - "PluginVersion" => "édition", - "PluginDownloadNumber" => "installe", - "PluginBack" => "retour", - "PluginReadme" => "description", - "PluginResetConfig" => "Restaurer les paramètres par défaut", - "PluginInstallSelf" => "Installation manuelle", - "Plugin.config.auth" => "autorisations", - "Plugin.config.authDesc" => "Tous les paramètres disponibles, ou spécifier des utilisateurs, groupes d'utilisateurs, des groupes de droits peuvent utiliser", - "Plugin.config.authOpen" => "Accès ouvert", - "Plugin.config.authOpenDesc" => "Pas besoin de visiter peut être consulté, peut être utilisé pour appel d'interface externe", - "Plugin.config.authAll" => "titulaire", - "Plugin.config.authUser" => "utilisateur", - "Plugin.config.authGroup" => "Département désigné", - "Plugin.config.authRole" => "groupe des droits", - "Plugin.Config.openWith" => "style ouvert", - "Plugin.Config.openWithDilog" => "dialogue interne", - "Plugin.Config.openWithWindow" => "La nouvelle page se", - "Plugin.Config.fileSort" => "priorité de l'association d'extension", - "Plugin.Config.fileSortDesc" => "Plus l'extension d'ouvrir une priorité plus élevée", - "Plugin.Config.fileExt" => "Formats de fichiers pris en charge", - "Plugin.Config.fileExtDesc" => "Extension associée au plug-in", - "Plugin.tab.basic" => "Réglages de base", - "Plugin.tab.auth" => "autorisations", - "Plugin.tab.others" => "D'autres paramètres", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Web Aperçu avant impression", - "Plugin.default.picasa" => "navigation Picasa photo", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "joueur jPlayer", - "Plugin.auth.viewList" => "Liste de plugins", - "Plugin.auth.setting" => "Paramètres du plugin", - "Plugin.auth.status" => "Désactiver", - "Plugin.auth.install" => "Installer / désinstaller", - "Explorer.UI.openWith" => "Sélectionnez Ouvrir", - "Explorer.UI.openWithText" => "Bloc-notes pour ouvrir", - "Explorer.UI.appSetDefault" => "Définir l'ouverture par défaut", - "Explorer.UI.appAwaysOpen" => "Toujours utiliser le programme sélectionné pour ouvrir ce fichier", - "Explorer.UI.selectAppDesc" => "Sélectionnez le programme que vous souhaitez ouvrir ce fichier", - "Explorer.UI.selectAppWarning" => "S'il vous plaît sélectionnez l'application!", - "Explorer.UI.appTypeSupport" => "Pris en charge", - "Explorer.UI.appTypeAll" => "Toutes les applications", - "kodApp.oexe.edit" => "Modifier l'application légère", - "kodApp.oexe.open" => "Ouvrez l'application de la lumière" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/gl/about.html b/plugin/document/kod/config/i18n/gl/about.html deleted file mode 100644 index cfea05501..000000000 Binary files a/plugin/document/kod/config/i18n/gl/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/gl/edit.html b/plugin/document/kod/config/i18n/gl/edit.html deleted file mode 100644 index d78a9acd7..000000000 --- a/plugin/document/kod/config/i18n/gl/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  funcionalidade rica

                  -

                  Código solicita automaticamente

                  -

                  Múltiples tema: Escolla o seu estilo de programación favorita

                  -

                  Font Custom: para uso na escena

                  -

                  edición cursor multi, edición de bloques experiencia de programación en liña comparable ao sublime

                  -

                  Bloque de dobraxe, amplíe; embrulhar

                  -

                  Soporte para múltiples ventás, arrastre a secuencia de conmutación;

                  -

                  Manter varios documentos, localizar e substituír; Historia;

                  -

                  Auto-complete [], {}, () '' ''

                  -

                  En liña de vista previa en tempo real que permite que namorarse por programación en liña!

                  -

                  zendcodeing apoio, escribir código de oitenta

                  -

                  Máis recursos á espera do seu descubrimento ......

                  -
                  -
                  -

                  150 tipos de resaltado de código

                  -

                  Consello: HTML, JavaScript, CSS, menos, Sass, SCSS

                  -

                  desenvolvemento web: PHP, Perl, Python, Ruby, Elang, vai ...

                  -

                  linguaxes tradicionais: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Outros: rechamada, shell, SQL, lúa, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  acción atallo

                  -
                   atallos máis usados: 
                  - Ctrl + S para gardar 
                  - Ctrl + A Seleccionar todo Ctrl + X Cut 
                  - Ctrl + C Ctrl + V copiar pegar 
                  - Ctrl + Z Desfacer Desfacer Anti ctrl + y 
                  - Ctrl + F para atopar substituto ctrl + F f 
                  - Win + alt + 0 colapso todos gañan + Alt + Shift + 0 Ampliar Todo 
                  - ESC [procura Saír automaticamente cancelada pide ...] 
                  - Ctrl-Shift-s previsualización 
                  - Ctrl-Shift-e concerto & función Close 
                  -
                  -
                   Escolla: 
                  - Rato marquesiña - drag 
                  - shift + Inicio / End / up / esquerda / abaixo / dereita 
                  - shift + retroceso de páxina / avance virar para arriba e abaixo para seleccionar 
                  - CTRL + SHIFT + home / fin do cursor actual para o inicio eo fin 
                  - alt + rato para arrastrar a selección de bloque 
                  - Ctrl + Alt + g lote de selección e introduce o editor multi-guía actual 
                  -
                  -
                   cursor: 
                  - home / end / up / esquerda / abaixo / dereita 
                  - Ctrl + Inicio / end mover o cursor a cabeceira do documento / tail 
                  - Ctrl + p Ir tag correspondencia 
                  - Retroceso de páxina / avance cursor arriba e abaixo 
                  - alt + cursor esquerda / dereita para mover para arriba da liña 
                  - Maiús + cursor esquerda / dereita para o final da liña e 
                  - Ctrl + L para ir a unha liña específica 
                  - Ctrl + Alt + arriba / abaixo (abaixo) aumentar o cursor 
                  -
                  -
                   edit: 
                  - Ctrl + / Comentar e Ctrl + Alt + uncomment un Justified 
                  - cambio de alineación guía mesa + table table xeral avance 
                  - delete delete delete todo o ctrl + liña d 
                  - Ctrl + Supr para eliminar a liña na palabra correcta 
                  - ctrl / shift + retroceso para borrar a palabra á esquerda 
                  - alt + shift + arriba / abaixo e engadido á liña de copia (abaixo) de avión 
                  - Alt + Supr para eliminar o contido da dereita do cursor 
                  - alt + arriba / abaixo na liña actual ea liña (cambio de liña ao lado) 
                  - liñas Maiús + D + Ctrl copiado e engadiu-se o seguinte 
                  - Ctrl + Supr para eliminar o dereito da palabra 
                  - Ctrl + Maiús + u convertidos en letras minúsculas 
                  - Ctrl + U texto seleccionado para maiúsculas 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/gl/help.html b/plugin/document/kod/config/i18n/gl/help.html deleted file mode 100644 index 80ee7a0e5..000000000 --- a/plugin/document/kod/config/i18n/gl/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  xestor de ficheiros
                  -

                  Selección de ficheiro: radio, marquesiña rato, desprazarse elección, ctrl escollidos aleatoriamente, teclado para arriba e abaixo, na casa, a selección final.

                  -

                  operación de ficheiro: Despois de seleccionar un ficheiro, pode copiar, cortar, eliminar, ver as propiedades de compresión, renomear, Visualización aberta e outras operacións ......

                  -

                  File Upload: subida de varios arquivos de lote; HTML5 de subida de arrastre (arrastrar para cargar perfectamente fiestra, arrastre e solte o soporte para carpetas)

                  -

                  función dereita: botón dereito do ficheiro, cartafol, seguro, máis logo da operación de elección, o meu ordenador, dereita, árbore de directorios dereita, atallos do menú da dereita ligada
                  - (Seleccionar todo - Copiar - Cut - Paste - Borrar - Cambiar o nome, definir ......)

                  -

                  Navegador de ficheiros: modo de lista, o modo de icona; prema dúas veces en subcartafoles; operación barra de enderezos; abrir un rexistro contrarian rexistro de cartafol (para adiante e cara atrás)

                  -

                  Soporte arrastrar e soltar: Comprobe arrastre, cortar para acadar a función de cartafol especificado

                  -

                  Teclas de atallo: delete delete Ctrl + A Seleccionar todo Ctrl + C para copiar, + X Cut, busca de arquivo (contido de busca) Ctrl

                  -
                  -
                  -
                  Previsualización de arquivos
                  -

                  Visualización de ficheiros: ver o contido dun ficheiro de edición de texto e gardar; html, visualización de ficheiros SWF,

                  -

                  Imaxe de visualización: xeración automática de miniaturas, imaxe da presentación;

                  -

                  reprodución de audio: tocar música en liña e arquivos de vídeo; soporte MP3, WMA, medio, AAC, WAV, mp4,

                  -

                  Vídeo: reprodución de vídeo en liña, apoiado formatos: FLV, F4V, 3gp

                  -

                  de oficina: Vista previa en liña, apoiado formatos: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  atallos
                  -

                  escriba Abrir

                  -

                  Ctrl + A Seleccionar todo

                  -

                  CTRL + C para copiar o seleccionado

                  -

                  Ctrl + V para pegar

                  -

                  Ctrl + X Cut

                  -

                  Ctrl + F para buscar o directorio actual

                  -

                  alt + n Novo ficheiro

                  -

                  alt + m New Folder

                  -

                  Eliminar Eliminar seleccionadas

                  -

                  Retroceso Volver

                  -

                  Ctrl + Retroceso para adiante

                  -

                  F2 Renomear seleccionado (cartafol)

                  -

                  home / end / arriba / abaixo / esquerda / dereita para seleccionar o arquivo

                  -

                  Calquera tecla Comproba a presionar a primeira letra dos arquivos e carpetas de caracteres seleccionado ciclo automático

                  -
                  diff --git a/plugin/document/kod/config/i18n/gl/main.php b/plugin/document/kod/config/i18n/gl/main.php deleted file mode 100644 index 7912e593c..000000000 --- a/plugin/document/kod/config/i18n/gl/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Por favor, seleccione o ficheiro ...", - "path_api_select_folder" => "Por favor, escolla un cartafol ...", - "path_api_select_image" => "Por favor, seleccione unha imaxe ...", - "share_can_upload" => "permitir o envío", - "move_error" => "mover fallou", - "setting_basic" => "Basic Settings", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Open Animation", - "recycle_open_if" => "Abre a papeleira", - "recycle_open" => "aberto", - "setting_user_recycle_desc" => "Despois da eliminación eliminarase a eliminación física directamente", - "setting_user_animate_desc" => "Fiestra aberta e outra animación", - "setting_user_sound_desc" => "Son de operación", - "setting_user_imageThumb" => "Miniaturas da imaxe", - "setting_user_imageThumb_desc" => "Mellor experiencia de navegación despois da apertura", - "setting_user_fileSelect" => "Abre a comprobación da icona do ficheiro", - "setting_user_fileSelect_desc" => "Icona de arquivo na selección da tecla esquerda, prema co botón dereito no menú de acceso do menú", - "qrcode" => "QR code URL", - "theme_mac" => "Mac branco minimalista", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Classic Blue Metro", - "theme_metro_green" => "Metro luz verde", - "theme_metro_purple" => "Metro elegante vermello", - "theme_metro_pink" => "metro Rose", - "theme_metro_orange" => "Metro laranxa brillante", - "theme_alpha_image" => "Brillante - voo", - "theme_alpha_image_sun" => "Brillante - Sunset", - "theme_alpha_image_sky" => "Symphony - Ceo Azul", - "theme_diy" => "personalizado", - "theme_diy_title" => "Opcións personalizadas temáticos", - "theme_diy_background" => "fondo", - "theme_diy_image" => "fotografía", - "theme_diy_color_blur" => "gradiente de cor", - "theme_diy_image_blur" => "distorsión da imaxe", - "theme_diy_image_url" => "enderezo de fotos", - "theme_diy_color_start" => "cor inicial", - "theme_diy_color_end" => "end Color", - "theme_diy_color_radius" => "ángulo de inclinación", - "system_role_admin_set" => "Os administradores teñen todos os dereitos, sen definir!", - "login_error_user_not_use" => "Usuario foi desactivado! Póñase en contacto co seu administrador", - "login_error_kod_version" => "conflito de versións", - "login_error_role" => "grupo permisos de visualización non existe, póñase en contacto co seu administrador", - "no_permission_group" => "Non está neste grupo!", - "no_permission_write" => "O directorio non ten permiso de escrita", - "user" => "usuario", - "save_as" => "gardar como", - "check_update" => "actualizar", - "keyboard_type" => "Modo de teclado", - "font_family" => "fontes", - "code_mode" => "destaque de sintaxe", - "path_can_not_share" => "Soporta só compartir os seus propios documentos!", - "path_can_not_action" => "Este directorio non soporta esta operación!", - "wap_page_pc" => "Versión para PC", - "wap_page_phone" => "móbil", - "image_size" => "dimensións da imaxe", - "no_permission_action" => "Non ten ese permiso, por favor póñase en contacto co administrador!", - "path_is_root_tips" => "Chegou ao directorio raíz!", - "kod_group" => "organización", - "my_kod_group" => "Estou no departamento", - "space_tips_default" => "(GB) 0 ningún límite", - "space_tips_full" => "sen limitar", - "space_size" => "espazo", - "space_size_use" => "Uso de espazo", - "space_is_full" => "Non hai espazo suficiente, contacte co administrador.", - "system_open_true_path" => "Correctamente abriu o xestor de arquivos!", - "group_role_error" => "erro de permisos de función (sen opcións de permiso)", - "group_role_error_admin" => "permisos insuficientes", - "markdown_content" => "Índice analítico", - "system_group" => "Usuarios e departamentos", - "system_group_edit" => "Dirección do departamento", - "system_group_role" => "identidade papel", - "system_group_create" => "Novo departamento", - "system_group_name" => "Nome do departamento", - "system_group_father" => "Departamento superior", - "system_group_add" => "Engadir departamento secundario", - "system_group_remove" => "Elimina o departamento", - "system_group_remove_tips" => "¿Está seguro de borrar o departamento?
                  Despois de que se elimine a eliminación da parte do usuario, o subsector mudouse ao sector raíz", - "system_group_select" => "Escolla un departamento", - "system_group_select_result" => "Os membros pertencen aos seguintes sectores", - "system_role_admin_tips" => "Observacións: Os administradores do sistema non están autorizados a controlar", - "system_member_action" => "Xestión de usuarios", - "system_member_add" => "novo usuario", - "system_member_role" => "funcións de permiso", - "system_member_role_select" => "seleccionar", - "system_member_password_tips" => "Non encha non modificado", - "system_set_home_path" => "catálogo personalizado", - "system_set_home_path_tips" => "O directorio por defecto é baleira", - "system_member_group" => "Onde o departamento", - "system_member_group_edit" => "Departamento editorial", - "system_member_remove" => "borrar Usuario", - "system_member_remove_tips" => "Confirmar usuario de exclusión?
                  despois de eliminar o directorio do usuario será totalmente apagado", - "system_member_set_role" => "Para confirmar a modificación dos permisos do grupo de usuarios seleccionados?", - "system_member_remove_group" => "Determinar o usuario seleccionado será eliminado deste grupo?", - "system_member_import" => "bulk engadir", - "system_member_import_desc" => "Un usuario por liña,
                  xa existen, son silenciosa ignorados", - "system_member_use" => "permitir", - "system_member_unuse" => "incapacitar", - "system_member_space" => "Establece o tamaño do espazo do usuario ", - "system_member_space_tips" => " Establece o tamaño do espazo do usuario ", - "system_member_space_number" => " Debe ser un número!", - "system_member_group_config" => "Departamento de fraguado por lotes", - "system_member_group_remove" => "Eliminado do departamento", - "system_member_group_insert" => "Engadir ao departamento", - "system_member_group_reset" => "Restablecer o departamento", - "system_member_group_error" => "Erro do departamento", - "system_group_action" => "Dirección do departamento", - "system_role_add" => "Agregar Identidade Papel", - "system_role_read" => "Read-only", - "system_role_write" => "Pode ler e escribir", - "system_setting_root_path" => "acceso root", - "system_setting_root_path_desc" => "Só un administrador do sistema pode acceder todos os directorios, outros grupos de dereitos dos usuarios só poden ver o seu propio directorio do usuario. Se quere acender e apagar
                  acceso de administrador a outros directorios, pode modificar o PHP open_basedir parámetros anti-cross-site,definir", - "system_group_role_title" => "Xestión de funcións de autoridade departamental", - "system_group_role_remove" => "Aceptar para eliminar o rol de departamento", - "system_group_role_style" => "estilo", - "system_group_role_display" => "se", - "system_group_role_display_desc" => "Establecer se mostrar ou non os dereitos de usuario do departamento", - "role_type_name_read" => "ler", - "role_type_name_read:list" => "Lista de Arquivos", - "role_type_name_read:info" => "Ficheiro (carpeta) propiedade Ver, procura Cartafol", - "role_type_name_read:copy" => "Pega o ficheiro", - "role_type_name_read:preview" => "previsualización de arquivos (imaxes, documentos, audio e vídeo)", - "role_type_name_read:download" => "Ficheiro (carpeta) Descargar", - "role_type_name_write" => "escribir", - "role_type_name_write:add" => "Crear un arquivo (carpeta), Extraia o arquivo comprimido", - "role_type_name_write:edit" => "Garde o ficheiro para editar", - "role_type_name_write:change" => "Renomear, axustar a estrutura de directorio", - "role_type_name_write:upload" => "Ficheiro (carpeta) subida, descarga remoto", - "role_type_name_write:remove" => "Ficheiro (carpeta) borrar, cortar", - "group_guest" => "visitantes", - "group_guest_desc" => "Non es membro do departamento,
                  só pode acceder ao [directorio compartido do departamento] o seguinte contido, permisos de só lectura.", - "group_role_lebel_desc" => "Vostede é membro deste departamento,
                  Todos os documentos dentro do departamento Todos os dereitos reservados polo administrador", - "button_save_and_add" => "Gardar e continuar a engadir", - "path_cannot_search" => "O directorio non soporta a busca!", - "not_support" => "Non soportado!", - "group_not_exist" => "grupo de usuarios non existe!", - "upload_clear_all" => "borrar", - "upload_clear" => "borrar Feito", - "upload_setting" => "establecer", - "upload_tips" => "Usa carga porción, non máis suxeita a límite php.ini; recomendado arrastrar cartafol Chrome e experiencia carga caída", - "upload_exist" => "Arquivo co mesmo nome", - "upload_exist_rename" => "rebatizar", - "upload_exist_replace" => "cuberta", - "upload_exist_skip" => "saltar", - "upload_add_more" => "bulk engadir", - "more" => "máis", - "system_setting" => "Configuración do sistema", - "openProject" => "Abre o editor do proxecto", - "url_download" => "descargar", - "url_link" => "URL", - "app_type_link" => "atallos", - "createLink" => "crear atallo", - "createLinkHome" => "Enviado ao atallo no escritorio", - "createProject" => "Sumándose o proxecto de editor", - "only_read" => "Read-only", - "only_read_desc" => "O directorio non ten permiso de escritura
                  Pode axustar os permisos para este cartafol no servidor", - "not_read" => "lexible", - "explorerNew" => "conexión kod", - "zip_download_ready" => "Tras a compresión pode descargar automaticamente, por favor agarde ...", - "set_background" => "Establecer como fondo de pantalla", - "share" => "Comparte", - "my_share" => "A miña parte", - "group_share" => "Compartición externa de grupo", - "share_edit" => "Editar compartir", - "share_remove" => "Cancelar a compartición", - "share_remove_tips" => "¿Estás seguro de que queres cancelar a compartición? A conexión pública será invalidada.", - "share_path" => "Comparte o camiño", - "share_title" => "Compartición de recursos", - "share_name" => "Comparte o título", - "share_time" => "caducidade", - "share_time_desc" => "Nulo non está definido", - "share_password" => "password Extract", - "share_password_desc" => "contrasinal baleira non está definido", - "share_cancle" => "descompartilhando", - "share_create" => "Enlazar público", - "share_url" => "enderezo compartido", - "share_not_download" => "Descargar prohibición", - "share_not_download_tips" => "Sharer prohibiu descargar!", - "share_code_read" => "lector de código", - "share_save" => "gardar configuración", - "share_error_param" => "Erro de parámetro!", - "share_error_user" => "Información de erro do usuario!", - "share_error_sid" => "A repartición non existe!", - "share_error_time" => "Chegou demasiado tarde, a participación expirou!", - "share_error_path" => "arquivo compartido non existe, é eliminado ou eliminado-lo!", - "share_error_password" => "contrasinal incorrecto!", - "share_error_show_tips" => "Este tipo non soporta visualización de ficheiros!", - "share_view_num" => "Visitas:", - "share_download_num" => "descargas:", - "share_open_page" => "Abre a páxina compartida", - "open_the_path" => "Introduza directorio", - "recycle_clear" => "baleirar lixo", - "recycle_clear_success" => "o éxito de lixo baleiro!", - "recycle_clear_info" => "Está seguro de que quere baleirar completamente o lixo?", - "fav_remove" => "Cancelar a recadación", - "remove_item" => "elementos", - "uploading" => "subida", - "upload_tips_more" => "Hai moitos arquivos, a recomendación do subida comprimido, logo descompactá liña!", - "uploading_move" => "Na transferencia de fusión ...", - "show_file" => "Nova vista de páxina", - "unknow_file_title" => "Arquivo Abrir Consello!", - "unknow_file_tips" => "non apoiar a aplicación deste arquivo, pode:", - "unknow_file_try" => "tentar", - "unknow_file_download" => "Baixo o arquivo", - "unknow_plugin_search" => "aplicacións de busca relacionados instalado", - "config_save_error_auth" => "Erro ao gardar a configuración, o administrador prohibiu ese privilexio!", - "config_save_error_file" => "De erro, o arquivo non se pode escribir!", - "beautify_code" => "código Formatter", - "convert_case" => "conversión caso", - "convert_upper_case" => "Convertida en maiúsculas", - "convert_lower_case" => "Convertida en minúsculas", - "editor_insert_time" => "Hora actual ", - "editor_md5" => " Codificación Md5 ", - "editor_qrcode" => " Código bidimensional de cadea ", - "editor_regx" => " Exame regular de expresións ", - "editor_chinese" => " Conversión simplificada ", - "editor_chinese_simple" => " Converte para os chineses simplificados ", - "editor_chinese_traditional" => " Converter aos chineses tradicionais ", - "editor_base64" => "Códec Base64 ", - "editor_base64_encode" => " Codificación base64 ", - "editor_base64_decode" => " Decodificación base64 ", - "editor_url" => " Códec de URL ", - "editor_url_encode" => " Codificación de URL ", - "editor_url_decode" => " Descodificación de URL ", - "editor_unicode" => " Códec Unicode ", - "editor_unicode_encode" => " Codificación unicode ", - "editor_unicode_decode" => " Decodificación Unicode", - "editor_tools_select_tips" => " Selecciona o contido que queres converter.", - "editor_calc" => "Calculadora gratuíta", - "shortcut" => "atallos", - "use_free" => "Continuar a utilizar a versión gratuita", - "learn_more" => "máis información", - "replace" => "substituír", - "selectAll" => "seleccionar", - "reload" => "recargar", - "about" => "en", - "complete_current" => "Auto-conclusión da actual", - "view" => "vista", - "tools" => "ferramenta", - "help" => "axudar", - "not_exists" => "non existe", - "group_role_fileDownload" => "transferencias", - "group_role_share" => "acción", - "users_share" => "compartindo", - "system_setting_save" => "Configuración de seguridade", - "system_setting_menu" => "xestión de menú", - "system_name" => "Nome do programa", - "system_name_desc" => "Título logotipo do programa", - "system_desc" => "Descrición do programa", - "path_hidden" => "exclusións de directorio", - "version_not_support" => "A súa versión non soporta tanto, por favor, vai á páxina web oficial para mercar a versión avanzada!", - "version_not_support_number" => "Como o número de restrición non soporta esta operación, por favor compre a versión avanzada do sitio web oficial!", - "path_hidden_desc" => "Directorios e arquivos por defecto non aparece, separados por comas", - "new_user_folder" => "O usuario é creado polo directorio estándar", - "new_user_folder_desc" => "Separados por comas", - "new_user_app" => "O usuario é creado por aplicación estándar", - "new_user_app_desc" => "Aplicacións Application Center, unha pluralidade de separados por comas", - "auto_login" => "Visitantes de inicio de sesión automático", - "auto_login_desc" => "O usuario por defecto do usuarioguest/guestusuarios; despois da apertura para garantir que o usuario existe", - "first_in" => "Tras a identificación no estándar", - "version_price_free" => "libre", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directorio non pode escribir nel, establecer o directorio e todos os subdirectorios para tentar de novo tras a lectura e escritura!", - "menu_name" => "nome do menú", - "menu_hidden" => "ocultar", - "menu_show" => "exhibición", - "menu_move_down" => "abaixo", - "menu_move_up" => "arriba", - "menu_move_del" => "eliminar", - "menu_open_window" => "Abre nunha nova ventá", - "menu_sub_menu" => "Submenú", - "url_path" => "enderezo de url", - "url_path_desc" => "dirección URL ou o código js", - "no_permission_read" => "Non ten permiso para ler!", - "no_permission_download" => "Non ten permiso para baixar!", - "php_env_check" => "Operando seguimento ambiental:", - "php_env_error" => "Falta a biblioteca php", - "php_env_error_ignore" => "Ignorar e entrar", - "php_env_error_version" => "versión de PHP non pode ser inferior a 5.0", - "php_env_error_path" => "non escribir", - "php_env_error_list_dir" => "O seu servidor web abre o directorio de recursos list por razóns de seguridade, desactivar este recurso!como?", - "php_env_error_gd" => "biblioteca PHP GD debe ser aberta, se non, o código, utilice a miniatura non funcionará correctamente", - "install_login" => "Pode utilizar o seguinte sesión da conta", - "install_enter" => "o sistema", - "install_user_default" => "Administrador: {0} / (por baixo de establecer un contrasinal)
                  usuario medio: {1}
                  Os usuarios convidados: {2}", - "login_root_password" => "Establecer o contrasinal do administrador", - "login_root_password_repeat" => "Confirmar contrasinal", - "login_root_password_equal" => "As dúas contrasinais non son os mesmos!", - "login_root_password_tips" => "Define un contrasinal de administrador!", - "forget_password" => "Esqueceches o contrasinal", - "forget_password_tips" => "Esqueceches o contrasinal de administrador:
                  Entra servidor eliminar ./data/system/install.lock axustar;

                  Non administrador Esqueceches o contrasinal:
                  Póñase en contacto co seu administrador para axustar!", - "copyright_desc" => "Kodexplorer é un sistema de xestión de documentos web altamente aclamado, pode usalo para xestión de documentos internos ou compartido, tamén se pode usar no servidor de xestión do web, substitúe FTP, incluso como webIDE desenvolvemento directamente en liña. Tamén pode programar o segundo desenvolvemento para integrar iso nos seus sistemas existentes.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango nube • Explorador", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango nube • Explorador", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, WebOS, webIDE, FileManage PHP FileManage, Dao nube, manga nube, sistemas de xestión de documentos, disco Enterprise Cloud, explorador ,, documentación en liña, Office Online, oficina en liña, visualización de CAD en liña, a edición en liña , editor en liña", - "kod_meta_description" => "KodExplorer pode obscurecer Road (anteriormente manga nube) é un provedor líder de goberno / nubes corporativas privadas e sistema de xestión de documentos en liña para sitios persoais, implantacións empresa nube privada, almacenamento de rede, xestión de documentos en liña, oficina en liña para proporcionar seguro e controlado, sinxelo e fácil uso, altamente personalizado produtos de nube privada. Usando fiestras interface de estilo, prácticas operacionais, sen ter que adaptarse a comezar rapidamente, soportar centos de populares formato de visualización en liña, reprodución e edición ambiente-Friendly, poderoso, é un xuízo xa, non máis inseparable do privado ofertas de nube.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "log in", - "guest_login" => "invitado Registre", - "username" => "Conta de inicio de sesión", - "userNickName" => "Sobrenome do usuario", - "password" => "contrasinal", - "login_code" => "códigos", - "need_check_code" => "código de identificación de usuario aberto", - "need_check_code_desc" => "Despois de iniciar sesión, debes introducir o código de verificación.", - "setting_csrf_protect" => "protección aberta csrf", - "setting_csrf_protect_desc" => "Despois tipo de ataque pode protexer eficazmente csrf apertura", - "login_rember_password" => "lembrar contrasinal", - "setting_show_root_group" => "Lista todos os departamentos", - "setting_show_root_group_desc" => "O departamento de raíz do directorio da árbore quere listar todos os departamentos", - "setting_show_share_user" => "Unha lista de todos os usuarios", - "setting_show_share_user_desc" => "O departamento de raíz da árbore está listado para todos os usuarios", - "setting_clear_user_recycle" => "Baleirar o lixo para todos os usuarios", - "setting_clear_cache" => "Baleirar a caché", - "setting_icp" => "Copyright ou rexistro número", - "setting_global_css" => "CSS personalizado mundial", - "setting_global_css_desc" => "Todas as páxinas inserirá CSS personalizado", - "setting_global_html" => "HTML código estatístico", - "setting_global_html_desc" => "Todas as páxinas serán inseridas neste código HTML parágrafo, o código pode ser instalado estatísticas de terceiros", - "us" => "kodcloud.com", - "login_not_null" => "Nome e contrasinal non pode estar baleiro!", - "code_error" => "Os códigos de erro", - "password_error" => "nome de usuario ou contrasinal é incorrecto!", - "password_not_null" => "O contrasinal non pode estar baleiro!", - "old_password_error" => "contrasinal antiga está mal!", - "permission" => "Permiso!", - "permission_edit" => "modificar permisos", - "file_info_owner" => "propietario", - "file_info_group" => "grupo", - "no_permission" => "Administrador deshabilitado ese privilexio!", - "no_permission_ext" => "Administrador prohibiu este tipo de permisos de arquivo", - "dialog_max" => "maximizar", - "dialog_min" => "minimizar", - "dialog_min_all" => "minimizar todo", - "dialog_display_all" => "Amosar todas as fiestras", - "dialog_close_all" => "Peche todas as", - "open" => "aberto", - "others" => "outro", - "open_with" => "Abrir para ...", - "close" => "preto", - "close_all" => "Peche todas as", - "close_left" => "Pecha a pestana esquerda", - "close_right" => "Pechar guías á dereita", - "close_others" => "Pecha os outros", - "loading" => "Operación ...", - "warning" => "aviso", - "getting" => "Obter o ...", - "sending" => "A transmisión de datos ...", - "data_error" => "Erro de datos!", - "get_success" => "Obter éxito!", - "save_success" => "salvo con éxito!", - "success" => "operación exitosa", - "error" => "A operación fallou", - "error_repeat" => "A operación fallou, o nome xa existe!", - "word_error" => "Fallou ", - "word_success" => " Éxito", - "system_error" => "erro de sistema", - "name" => "nome", - "type" => "tipo", - "contain" => "conter", - "address" => "localización", - "size" => "tamaño", - "byte" => "byte", - "path" => "camiño", - "action" => "Operating", - "create_time" => "creado", - "modify_time" => "modificada", - "last_time" => "última Visita", - "sort_type" => "Ordenar por", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "directorio público", - "system_path_not_change" => "directorio do sistema, non pode ser modificado", - "file" => "arquivo", - "folder" => "dobrador", - "copy" => "copia", - "past" => "vara", - "clone" => "Crear unha copia", - "cute" => "tosquiar", - "cute_to" => "Moverse para ...", - "copy_to" => "Copiar ...", - "remove" => "eliminar", - "remove_force" => "eliminar", - "info" => "propiedade", - "list_type" => "vista", - "list_icon" => "matriz icona", - "list_list" => "arranxo lista", - "list_list_split" => "modo de columna", - "sort_up" => "incremento", - "sort_down" => "decrecente", - "order_type" => "Ordenar por", - "order_desc" => "descendente", - "order_asc" => "ascendente", - "rename" => "rebatizar", - "add_to_fav" => "Engadir a favoritos", - "search_in_path" => "Busca de cartafol", - "add_to_play" => "Engadir á Playlist", - "manage_fav" => "Xestionar Favoritos", - "refresh_tree" => "árbore de directorios de actualización", - "manage_folder" => "Xestión de Directorio", - "close_menu" => "Pechar o menú", - "zip" => "Crea un paquete comprimido", - "unzip" => "Para extraer ...", - "unzip_folder" => "Descompactá a un cartafol", - "unzip_this" => "Extraer a actual", - "unzip_to" => "Para extraer ...", - "zipview_file_big" => "O ficheiro é demasiado grande, e despois extraer o funcionamento de previsualización!", - "clipboard" => "Ver portapapeis", - "clipboard_clear" => "portapapeis baleiro", - "full_screen" => "pantalla completa", - "folder_info_item" => "elementos", - "folder_info_item_select" => "A selección", - "file_load_all" => "Prema dúas veces para cargar todo ......", - "tips" => "listo", - "ziping" => "Pechando ...", - "unziping" => "Extraendo ...", - "moving" => "operación móbil ...", - "remove_title" => "A confirmación da exclusión", - "remove_info" => "Confirmar para eliminar o elemento seleccionado?", - "remove_title_force" => "excluídos permanentemente", - "remove_info_force" => "Está seguro de que quere eliminar permanentemente este documento?", - "name_isexists" => "Mal, o nome xa existe!", - "install" => "instalar", - "width" => "ancho", - "height" => "alto", - "app" => "Aplicacións de luz", - "app_store" => "Aplicacións de luz", - "app_create" => "crear aplicación", - "app_edit" => "Modificar a aplicación", - "app_group_all" => "completo", - "app_group_game" => "xogo", - "app_group_tools" => "ferramenta", - "app_group_reader" => "ler", - "app_group_movie" => "televisión", - "app_group_music" => "música", - "app_group_life" => "vida", - "app_group_others" => "outro", - "app_desc" => "descrición", - "app_icon" => "icono aplicacións", - "app_icon_show" => "dirección URL ou o directorio", - "app_group" => "paquete de aplicacións", - "app_type" => "tipo", - "app_type_url" => "ligazón", - "app_type_code" => "extensión js", - "app_display" => "exterior", - "app_display_border" => "Sen fronteiras (é dicir, seleccionar sen fronteiras)", - "app_display_size" => "Redimensionar (Consulte a axuste)", - "app_size" => "tamaño", - "app_url" => "enderezo da ligazón", - "app_code" => "código de js", - "edit" => "editar", - "edit_can_not" => "Non é un ficheiro de texto", - "edit_too_big" => "Ficheiro é demasiado grande, non pode ser superior a 40M", - "open_default" => "estándar Aberto", - "open_ie" => "Abre o navegador", - "refresh" => "refrescar", - "refresh_all" => "Forzar unha actualización", - "newfile" => "novo ficheiro", - "newfile_save_as" => "salvar a", - "newfolder" => "cartafol", - "newothers" => "novo outras", - "path_loading" => "Cargando ...", - "go" => "Andar!", - "go_up" => "capa superior", - "history_next" => "á fronte", - "history_back" => "retiro", - "address_in_edit" => "Clic para entrar no modo de edición", - "double_click_rename" => "Prema dúas veces o cambio de nome", - "double_click_open" => "Dun dobre clic para abrir", - "path_null" => "Carpeta está baleira!", - "file_size_title" => "icono Tamaño", - "file_size_small_super" => "Ultra-pequenos", - "file_size_small" => "iconas pequenos", - "file_size_default" => "iconos", - "file_size_big" => "iconas grandes", - "file_size_big_super" => "gran Icona", - "upload" => "Cargando", - "upload_ready" => "Á espera de carga", - "upload_success" => "cargado correctamente", - "upload_path_current" => "Cambia o directorio actual", - "upload_select" => "escolla Ficheiro", - "upload_max_size" => "O máximo permitido", - "upload_size_info" => "Se quere configurar máis, por favor modifique máxima php.ini carga permitido. Cando vostede selecciona un arquivo grande que esta configuración pode filtrar automaticamente.", - "upload_error" => "A carga fallou", - "upload_error_http" => "Erros de rede ou firewall", - "upload_muti" => "Subida de varios arquivos", - "upload_drag" => "Arrastrar e soltar de subida", - "upload_drag_tips" => "Solte para cargar!", - "path_not_allow" => "O nome do ficheiro non permitido", - "download" => "descargar", - "downloading" => "Cargando ...", - "download_address" => "descargar", - "download_ready" => "baixará", - "download_success" => "Descargar éxito!", - "download_error" => "Fallou o descargar!", - "download_error_create" => "erro de gravación!", - "download_error_exists" => "Ligazón a ficheiro fallou!", - "upload_error_null" => "No ficheiro!", - "upload_error_big" => "tamaño do ficheiro excede os límites de servidor", - "upload_error_move" => "Erro ao mover ficheiro!", - "upload_error_exists" => "O ficheiro xa existe", - "upload_local" => "Cargando local", - "download_from_server" => "remoto Descargar", - "save_path" => "save Path", - "upload_select_muti" => "Unha pluralidade de subida de arquivos seleccionabades", - "search" => "busca", - "searching" => "Buscar ...", - "search_result" => "resultados da busca", - "seach_result_too_more" => "Moitos resultados de busca, recoméndase a un directorio ou palabras", - "search_null" => "Ningún resultado!", - "search_uplow" => "maiúsculas e minúsculas", - "search_content" => "o contido do ficheiro de busca", - "search_info" => "Introduza un termo de busca e camiños de busca!", - "search_ext_tips" => "Por | separados, por exemplo PHP | js | css
                  non cubrir a investigación de arquivo de texto estándar", - "file_type" => "Tipo de ficheiro", - "goto" => "ir", - "server_dwonload_desc" => "Tarefa foi engadido á lista de descargas", - "parent_permission" => "permisos directorio pai", - "root_path" => "Os meus documentos", - "lib" => "almacén", - "fav" => "Bookmark", - "desktop" => "Escritorio", - "browser" => "navegador", - "my_computer" => "meu ordenador", - "recycle" => "lixo", - "my_document" => "Os meus documentos", - "my_picture" => "As miñas fotos", - "my_music" => "My Music", - "my_movie" => "Os meus vídeos", - "my_download" => "meus descargas", - "ui_desktop" => "Escritorio", - "ui_explorer" => "xestor de ficheiros", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "Home Project", - "ui_login" => "log in", - "ui_logout" => "desistir", - "setting" => "Configuración do sistema", - "setting_title" => "opcións", - "setting_user" => "Centro de persoal", - "setting_password" => "Change Password", - "setting_password_old" => "contrasinal antigo", - "setting_password_new" => "revisado para", - "setting_language" => "Configuración de idioma", - "setting_member" => "Xestión de usuarios", - "setting_group" => "xestión de grupo de usuarios", - "setting_group_add" => "Agregar User Group", - "setting_group_edit" => "Editar grupos de usuarios", - "setting_theme" => "Definicións de tema", - "setting_wall" => "Configuración do fondo de pantalla", - "setting_wall_desktop" => "Fondos de escritorio", - "setting_wall_desktop_list" => "Xestión de fondos de pantalla de escritorio", - "setting_wall_login_list" => "Iniciar sesión en xestión de fondos", - "setting_wall_login_tips" => "Consello: cando hai máis dunha peza, o fondo da interface de inicio xirará aleatoriamente", - "setting_wall_diy" => "fondo personalizado:", - "setting_wall_info" => "Imaxe enderezo de URL, as imaxes locais poden estar seguro de obter o seu navegador para abrir a imaxe", - "setting_fav" => "Bookmark Xestor", - "setting_help" => "usando a Axuda", - "setting_about" => "sobre obras", - "setting_success" => "Modificación tivo efecto!", - "can_not_repeat" => "Non se admite repetir", - "absolute_path" => "dirección absoluto", - "group" => "Grupos de usuarios", - "data_not_full" => "Os datos presentados incompletos!", - "default_user_can_not_do" => "O usuario estándar non pode operar", - "default_group_can_not_do" => "grupos de usuarios predeterminado non poden operar", - "username_can_not_null" => "Nome de usuario non pode estar baleiro!", - "groupname_can_not_null" => "nome do grupo do usuario non pode estar baleiro!", - "groupdesc_can_not_null" => "Grupo de Usuarios A descrición non pode estar baleiro!", - "group_move_user_error" => "Os usuarios do grupo de usuarios mover fallou", - "group_already_remove" => "O grupo de usuarios foi eliminado", - "group_not_exists" => "Este grupo de usuario non existe", - "member_add" => "Engadir usuario", - "password_null_not_update" => "Eles dixeron que non cambiar o contrasinal non foi cuberto", - "if_save_file_tips" => "Algúns ficheiros non están gardados. Estás seguro de pechar a xanela?", - "if_save_file" => "Non se for salvo, quere gardar?", - "if_remove" => "confirme Borrar", - "member_remove_tips" => "Despois de eliminar o directorio do usuario serán eliminados", - "group_remove_tips" => "Despois de eliminar o grupo de usuarios de usuarios non poden rexistro
                  (necesidade de re-establecer grupo de usuarios)", - "group_name" => "Nome do grupo de usuarios", - "group_name_tips" => "Recomendación nome en inglés, non pode repetirse", - "group_desc" => "Mostrar Name", - "group_desc_tips" => "Nome do Grupo Descrición", - "group_role_ext" => "restricións de extensión", - "group_role_ext_tips" => "Con múltiples | separados", - "group_role_file" => "xestor de ficheiros", - "group_role_upload" => "permitir o envío", - "group_role_user" => "Os datos do usuario", - "group_role_group" => "xestión de grupo de usuarios", - "group_role_member" => "Xestión de usuarios", - "group_role_mkfile" => "novo ficheiro", - "group_role_mkdir" => "cartafol", - "group_role_pathrname" => "rebatizar", - "group_role_pathdelete" => "exclusión do arquivo", - "group_role_pathinfo" => "Propiedades do ficheiro", - "group_role_pathmove" => "Move (copiar / cortar / pegar / operación de arrastrar)", - "group_role_zip" => "compresión", - "group_role_unzip" => "Descompactá", - "group_role_search" => "busca", - "group_role_filesave" => "Garde o ficheiro para editar", - "group_role_can_upload" => "Carga e descarga", - "group_role_download" => "remoto Descargar", - "group_role_passowrd" => "Change Password", - "group_role_config" => "Os datos de configuración", - "group_role_fav" => "operacións Bookmark (Engadir / editar / borrar)", - "action_list" => "ver lista", - "action_add" => "engadir", - "action_edit" => "editar", - "action_del" => "eliminar", - "group_role_ext_warning" => "Subida non permitir que estas arquivos,
                  Rename (renomeado para a extensión especificada),
                  Edit gardar, descargar remoto, extracto de", - "group_tips" => "
                • 1. Non se pode duplicar o nome do grupo de usuarios. Despois de modificar o nome do grupo, pertence ao usuario reorganizado e está asociado automaticamente.
                • 2. As extensións limitan a relación entre a seguridade do sistema, ténganse cautelosos (se crea un novo php no directorio web; isto significa que cambiar os permisos do programa a este usuario é prácticamente imposible)
                • 3. A xestión do fogar, a xestión do grupo de dereitos, os dereitos de visualización e a adición, eliminación e modificación de dereitos están ligados; os programas están asociados automaticamente
                • 4. Despois de que o grupo de permisos estea configurado para engadir o grupo de permisos, o permiso posterior non se herdará (este permiso equivale ao maior permiso).
                • ", - "not_null" => "Os campos obrigatorios non pode estar baleiro!", - "picture_can_not_null" => "Fotos non pode estar baleiro!", - "rname_success" => "Renomeie éxito!", - "please_inpute_search_words" => "Por favor, introduce unha secuencia de investigación para", - "remove_success" => "Apagado con éxito!", - "remove_fali" => "Eliminar fallou!", - "clipboard_null" => "Portapapeis está baleiro!", - "create_success" => "Novo éxito!", - "create_error" => "New falla, comproba os permisos do directorio!", - "copy_success" => "[Copy] - cubrindo éxito prancheta!", - "cute_success" => "[Corte] - cubrindo éxito prancheta!", - "clipboard_state" => "estado de portarretallos:", - "no_permission_write_all" => "O ficheiro ou cartafol non pode escribir nel", - "no_permission_write_file" => "O ficheiro non ten permiso de escrita", - "no_permission_read_all" => "O ficheiro ou directorio non ten permiso de lectura", - "copy_not_exists" => "Fonte non existe", - "current_has_parent" => "cartafol de destino é un subdirectorio do de orixe!", - "past_success" => "operación colar é rematado", - "cute_past_success" => "operación de corte complétase(arquivo de orixe sexa eliminado, a prancheta baleira)", - "zip_success" => "compresión rematada", - "not_zip" => "non arquivo", - "zip_null" => "Non seleccionou ficheiro ou directorio", - "unzip_success" => "descompactá completa", - "gotoline" => "Ir á liña", - "path_is_current" => "O camiño eo camiño actual para acceder ao mesmo!", - "path_exists" => "O nome xa existe!", - "undo" => "revogación", - "redo" => "revogación anti", - "preview" => "visualización", - "wordwrap" => "envoltura", - "show_gutter" => "Amosar números de liña", - "char_all_display" => "Amosar caracteres invisibles", - "auto_complete" => "solicita automaticamente", - "auto_save" => "Gardar automaticamente", - "function_list" => "Lista de funcións", - "code_theme" => "Coding Estilo", - "font_size" => "Tamaño da fonte", - "confirm" => "Estás seguro de que queres facelo?", - "button_ok" => "determinar", - "button_submit" => "someter", - "button_set" => "establecer", - "button_cancel" => "cancelado", - "button_edit" => "editar", - "button_save" => "gardar", - "button_apply" => "Aplicar", - "button_save_all" => "gardar todo", - "button_not_save" => "non gardar", - "button_add" => "engadir", - "button_back_add" => "Voltar engadir", - "button_del" => "eliminar", - "button_save_edit" => "gardar cambios", - "button_save_submit" => "salva Enviar", - "button_more" => "máis", - "button_select_all" => "Seleccionar todo Selección / Inverter", - "charset_AUTO" => "Identificación automática", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "árabe", - "charset_ISO_8859_6" => "árabe", - "charset_ISO_8859_10" => "linguas nórdicas", - "charset_CP1257" => "linguas bálticas", - "charset_ISO_8859_13" => "linguas bálticas", - "charset_ISO_8859_4" => "linguas bálticas", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "xeorxiano", - "charset_PT154" => "Kazakh", - "charset_CP949" => "coreano", - "charset_EUC_KR" => "coreano", - "charset_GB18030" => "chinés simplificado", - "charset_GBK" => "chinés simplificado", - "charset_ISO_8859_14" => "celta", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "Romanés", - "charset_ISO_8859_3" => "Europeo do Sur", - "charset_EUC_JP" => "xaponés", - "charset_ISO_2022_JP" => "xaponés", - "charset_SHIFT_JIS" => "xaponés", - "charset_KOI8_T" => "linguaxe Tajik", - "charset_ISO_8859_11" => "thai", - "charset_TIS_620" => "thai", - "charset_CP1254" => "Turco", - "charset_CP1251" => "cirílico", - "charset_ISO_8859_5" => "cirílico", - "charset_KOI8_R" => "cirílico", - "charset_KOI8_U" => "cirílico", - "charset_CP1252" => "linguas de Europa Occidental", - "charset_ISO_8859_1" => "linguas de Europa Occidental", - "charset_ISO_8859_15" => "linguas de Europa Occidental", - "charset_Macintosh" => "linguas de Europa Occidental", - "charset_CP1255" => "Hebreo", - "charset_ISO_8859_8" => "Hebreo", - "charset_CP1253" => "grego", - "charset_ISO_8859_7" => "grego", - "charset_ARMSCII_8" => "Armenio", - "charset_CP1258" => "Vietnamita", - "charset_VISCII" => "Vietnamita", - "charset_CP1250" => "linguas de Europa Central", - "charset_ISO_8859_2" => "linguas de Europa Central", - "charset_default_set" => "Codificación do ficheiro", - "charset_convert_save" => "Garde o ficheiro codificado como", - "PluginCenter" => "centro plug", - "PluginBuy" => "Autorización de compra", - "PluginInstalled" => "instalouse", - "PluginUpdate" => "actualizar", - "PluginListNull" => "Non hai ningún contido!", - "PluginType" => "clasificación", - "PluginTypeAll" => "completo", - "PluginTypeFile" => "arquivo reforzada", - "PluginTypeSafe" => "Ferramentas de seguridade", - "PluginTypeTools" => "utilidade", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "outro", - "PluginInstall" => "instala o bujão", - "PluginEnable" => "Activar plugins", - "PluginDisable" => "incapacitar", - "PluginRemove" => "Desinstalar o complemento", - "PluginConfig" => "Configurar o plugin", - "PluginStatus" => "Estado", - "PluginStatusEnabled" => "activado", - "PluginStatusDisabled" => "non habilitado", - "PluginStatusNotInstall" => "non instalado", - "PluginInstalling" => "Instalación ...", - "PluginHasUpdate" => "actualizacións", - "PluginUpdateStart" => "Actualización de plugin", - "PluginNeedConfig" => "A necesidade de permitir que a configuración inicial", - "PluginConfigNotNull" => "Os campos obrigatorios non pode estar baleiro!", - "PluginOpen" => "aberto", - "PluginAuther" => "autor", - "PluginVersion" => "edición", - "PluginDownloadNumber" => "instala", - "PluginBack" => "retorno", - "PluginReadme" => "descrición", - "PluginResetConfig" => "Restaurar a configuración predeterminada", - "PluginInstallSelf" => "Instalación manual", - "Plugin.config.auth" => "permisos", - "Plugin.config.authDesc" => "Todas as opcións dispoñibles, ou especificar os usuarios, grupos de usuarios, grupos de dereitos pode usar", - "Plugin.config.authOpen" => "Acceso aberto", - "Plugin.config.authOpenDesc" => "Non se pode acceder a ningunha visita, pode usarse para a chamada da interface externa", - "Plugin.config.authAll" => "titular", - "Plugin.config.authUser" => "usuario", - "Plugin.config.authGroup" => "Departamento designado", - "Plugin.config.authRole" => "grupo de dereitos", - "Plugin.Config.openWith" => "estilo aberto", - "Plugin.Config.openWithDilog" => "diálogo interno", - "Plugin.Config.openWithWindow" => "A nova páxina abre", - "Plugin.Config.fileSort" => "prioridade asociación de extensión", - "Plugin.Config.fileSortDesc" => "Canto maior sexa a distancia para abrir prioridade", - "Plugin.Config.fileExt" => "Formatos de ficheiro compatibles", - "Plugin.Config.fileExtDesc" => "Extensión asociado ao plugin", - "Plugin.tab.basic" => "configuración básica", - "Plugin.tab.auth" => "permisos", - "Plugin.tab.others" => "outras definicións", - "Plugin.default.aceEditor" => "editor de Ace", - "Plugin.default.htmlView" => "Ver páxina web", - "Plugin.default.picasa" => "Picasa navegación de imaxe", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "xogador JPlayer", - "Plugin.auth.viewList" => "Lista de complementos", - "Plugin.auth.setting" => "Axustes de complementos", - "Plugin.auth.status" => "Desactivar", - "Plugin.auth.install" => "Instalar / desinstalar", - "Explorer.UI.openWith" => "seleccione Abrir", - "Explorer.UI.openWithText" => "Bloque de notas para abrir", - "Explorer.UI.appSetDefault" => "Definir o estándar aberto", - "Explorer.UI.appAwaysOpen" => "Usar o programa seleccionado para abrir este ficheiro", - "Explorer.UI.selectAppDesc" => "Seleccione o programa que desexa abrir este ficheiro", - "Explorer.UI.selectAppWarning" => "Por favor, seleccione a aplicación!", - "Explorer.UI.appTypeSupport" => "Apoiado", - "Explorer.UI.appTypeAll" => "Todas as aplicacións", - "kodApp.oexe.edit" => "Editar a aplicación de luz", - "kodApp.oexe.open" => "Abre a aplicación de luz" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/hi/about.html b/plugin/document/kod/config/i18n/hi/about.html deleted file mode 100644 index db5b30300..000000000 Binary files a/plugin/document/kod/config/i18n/hi/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/hi/edit.html b/plugin/document/kod/config/i18n/hi/edit.html deleted file mode 100644 index b4ddccf77..000000000 --- a/plugin/document/kod/config/i18n/hi/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  समृद्ध कार्यक्षमता

                  -

                  कोड स्वतः संकेत देता है

                  -

                  मल्टी विषय: अपने पसंदीदा प्रोग्रामिंग शैली चुनें

                  -

                  कस्टम फ़ॉन्ट: घटनास्थल पर उपयोग के लिए

                  -

                  मल्टी कर्सर संपादन, ब्लॉक संपादन ऑनलाइन प्रोग्रामिंग अनुभव उदात्त करने के लिए तुलनीय

                  -

                  ब्लॉक तह, विस्तार, लपेटो

                  -

                  एकाधिक टैब के लिए समर्थन, स्विचिंग अनुक्रम खींचें;

                  -

                  कई दस्तावेजों को बनाए रखने, खोजने के लिए और जगह; इतिहास;

                  -

                  ऑटो-पूरा [], {}, (), '' ''

                  -

                  ऑनलाइन वास्तविक समय पूर्वावलोकन है कि आप ऑनलाइन प्रोग्रामिंग के साथ प्यार में गिर करने के लिए अनुमति देता है!

                  -

                  समर्थन zendcodeing, कोड अस्सी के बारे में

                  -

                  अधिक सुविधाओं को अपनी खोज के लिए इंतजार कर रहे हैं ......

                  -
                  -
                  -

                  कोड हाइलाइटिंग के 150 प्रकार

                  -

                  सुझाव: HTML, जावास्क्रिप्ट, सीएसएस, कम, सास, एससीएसएस

                  -

                  वेब विकास: पीएचपी, पर्ल, अजगर, रूबी, Elang, जाओ ...

                  -

                  पारंपरिक भाषाएँ: जावा, सी, सी ++, सी #, ActionScript, VBScript ...

                  -

                  अन्य: Markdown, खोल, एसक्यूएल, लुआ, एक्सएमएल, YAML ...

                  -
                  -
                  -
                  -
                  -

                  शॉर्टकट कार्रवाई

                  -
                   आमतौर पर इस्तेमाल किया शॉर्टकट: 
                  - Ctrl + S को बचाने के लिए 
                  - Ctrl + A चुनें सभी Ctrl + X कट 
                  - Ctrl + C Ctrl + V कॉपी पेस्ट 
                  - Ctrl + Z पूर्ववत पूर्ववत विरोधी Ctrl + Y 
                  - Ctrl + F प्रतिस्थापन Ctrl + F + F लगाने के लिए 
                  - जीत + Alt + 0 पतन सब जीत + Alt + Shift + 0 सभी विस्तृत करें 
                  - ईएससी [बाहर निकलें खोज स्वचालित रूप से रद्द संकेत देता है ...] 
                  - Ctrl-Shift-एस पूर्वावलोकन 
                  - Ctrl-Shift-ए शो और बंद समारोह 
                  -
                  -
                   चुनें: 
                  - माउस का बड़ा खेमा - खींचें 
                  - Shift + घर / अंत / ऊपर / वाम / नीचे / सही 
                  - Shift + PAGEUP / PageDown चयन करने के लिए ऊपर और नीचे फ्लिप और 
                  - Ctrl + Shift + घर / शुरुआत और अंत के लिए वर्तमान कर्सर के अंत 
                  - Alt + माउस ब्लॉक चयन करने के लिए खींचें 
                  - Ctrl + Alt + g बैच का चयन करें और मौजूदा बहु-टैब संपादक दर्ज 
                  -
                  -
                   कर्सर: 
                  - घर / अंत / ऊपर / वाम / नीचे / सही 
                  - Ctrl + घर / अंत दस्तावेज़ सिर / पूंछ के लिए कर्सर ले जाने के 
                  - मिलान टैग के लिए Ctrl + P कूद 
                  - PAGEUP / PageDown ऊपर और नीचे कर्सर 
                  - Alt + वाम / सही कर्सर रेखा के ऊपर करने के लिए स्थानांतरित करने के लिए 
                  - पंक्ति के अंत के लिए Shift + वाम / सही कर्सर & 
                  - Ctrl + L एक विशेष पंक्ति करने के लिए कूद करने के लिए 
                  - Ctrl + Alt + ऊपर / नीचे (नीचे) को बढ़ाने के कर्सर 
                  -
                  -
                   संपादित करें: 
                  - Ctrl + / टिप्पणी और uncomment Ctrl + Alt + एक उचित 
                  - तालिका टैब संरेखण Shift + तालिका समग्र उन्नति तालिका 
                  - पूरी लाइन Ctrl को नष्ट हटाएँ हटाएँ + D 
                  - Ctrl + सही शब्द पर पंक्ति हटाने के लिए हटाएँ 
                  - Ctrl / Shift + बैकस्पेस बाईं तरफ के शब्द हटाने के लिए 
                  - Alt + Shift + ऊपर / नीचे और नकल लाइन को जोड़ा गया (नीचे) विमान 
                  - Alt + कर्सर की सही की सामग्री को हटाने के लिए हटाएँ 
                  - Alt + ऊपर / नीचे मौजूदा लाइन और रेखा (अगली पंक्ति विनिमय) पर 
                  - Ctrl + Shift + डी पंक्तियों की नकल की और निम्नलिखित को जोड़ा गया 
                  - Ctrl + शब्द के सही हटाने के लिए हटाएँ 
                  - Ctrl + Shift + यू लोअरकेस में कनवर्ट 
                  - Ctrl यू चुने गए पाठ + अपरकेस 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/hi/help.html b/plugin/document/kod/config/i18n/hi/help.html deleted file mode 100644 index 2c9cea2a8..000000000 --- a/plugin/document/kod/config/i18n/hi/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  फ़ाइल प्रबंधन
                  -

                  फ़ाइल चयन: रेडियो, माउस का बड़ा खेमा, पाली से चुनाव, Ctrl यादृच्छिक पर चुना, कीबोर्ड ऊपर और नीचे, घर, अंत चयन।

                  -

                  फ़ाइल ऑपरेशन: एक फ़ाइल का चयन करने के बाद, आप कॉपी कर सकते हैं कटौती करने, हटाने, संपीड़न के गुणों को देखने, नाम बदलने खुला पूर्वावलोकन और अन्य कार्यों ......

                  -

                  फ़ाइल अपलोड करें: अपलोड कई सारी फाइलें बैच; एचटीएमएल 5 खींचें अपलोड (खींचें को मूल खिड़की, खींचें और ड्रॉप अपलोड फ़ोल्डरों के लिए समर्थन करने के लिए)

                  -

                  सही समारोह: राइट-फाइल, फोल्डर, ठीक है, और अधिक सही चुनाव ऑपरेशन के बाद, डेस्कटॉप, ठीक है, ठीक निर्देशिका वृक्ष, सही बाध्य मेनू शॉर्टकट
                  - (सभी चुनें - कॉपी - कट - पेस्ट - हटाएँ - नाम बदलें, सेट ......)

                  -

                  फ़ाइल ब्राउज़र: सूची मोड, आइकन मोड; उप-फ़ोल्डरों में डबल क्लिक करें, पता पट्टी आपरेशन; एक फ़ोल्डर रिकॉर्ड विपरीत रिकॉर्ड खोलने (आगे और पीछे)

                  -

                  समर्थन खींचें और ड्रॉप: खींचें की जाँच करें, निर्दिष्ट फ़ोल्डर समारोह को प्राप्त करने के लिए कटौती

                  -

                  शॉर्टकट कुंजियाँ: नष्ट हटाने के लिए, Ctrl + A चुनें सभी, Ctrl + कॉपी करने के लिए सी, + एक्स कट, फ़ाइल खोज (सर्च सामग्री) Ctrl

                  -
                  -
                  -
                  फ़ाइल का पूर्वावलोकन
                  -

                  फ़ाइल का पूर्वावलोकन: एक पाठ फ़ाइल संपादन और बचत की सामग्री को देखने, एचटीएमएल, swf फ़ाइल पूर्वावलोकन,

                  -

                  छवि पूर्वावलोकन: थंबनेल, छवि स्लाइड शो के स्वत: पीढ़ी;

                  -

                  ऑडियो प्लेबैक: ऑनलाइन संगीत और वीडियो फ़ाइलों को खेलने; समर्थन एमपी 3, मध्य, एएसी, wav, MP4,

                  -

                  वीडियो: ऑनलाइन वीडियो प्लेबैक, समर्थित प्रारूप: FLV, F4V, 3GP

                  -

                  कार्यालय: कार्यालय ऑनलाइन पूर्वावलोकन, समर्थित प्रारूप: डॉक्टर, docx, पीपीटी, pptx, xls, xlsx

                  -
                  -
                  -
                  शॉर्टकट
                  -

                  ओपन दर्ज

                  -

                  Ctrl सब एक चयन +

                  -

                  Ctrl + ग की नकल करने के लिए चयनित

                  -

                  Ctrl + V चिपकाने के लिए

                  -

                  Ctrl + X कट

                  -

                  Ctrl + मौजूदा निर्देशिका खोज करने के लिए एफ

                  -

                  Alt + N नई फ़ाइल

                  -

                  Alt + M नया फ़ोल्डर

                  -

                  हटाएँ हटाएँ का चयन किया

                  -

                  बैकस्पेस वापस

                  -

                  Ctrl + बैकस्पेस आगे

                  -

                  F2 नाम बदलें चयनित (फ़ोल्डर)

                  -

                  घर / अंत / ऊपर / नीचे / वाम / फ़ाइल का चयन करने का अधिकार

                  -

                  anykey स्वत: चक्र चयनित चरित्र फ़ाइलों और फ़ोल्डरों के पहले अक्षर को प्रेस करने के लिए जाँच करें

                  -
                  diff --git a/plugin/document/kod/config/i18n/hi/main.php b/plugin/document/kod/config/i18n/hi/main.php deleted file mode 100644 index 13aa6f8dd..000000000 --- a/plugin/document/kod/config/i18n/hi/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "कृपया फ़ाइल का चयन करें ...", - "path_api_select_folder" => "कृपया एक फ़ोल्डर का चयन करें ...", - "path_api_select_image" => "कृपया एक छवि का चयन करें ...", - "share_can_upload" => "अपलोड की अनुमति", - "move_error" => "ले जाएँ विफल रहा है", - "setting_basic" => "मूल सेटिंग्स", - "setting_user_sound_open" => "ओपन ध्वनि", - "setting_user_animate_open" => "एनीमेशन ओपन", - "recycle_open_if" => "रीसायकल बिन खोलें", - "recycle_open" => "खुला", - "setting_user_recycle_desc" => "हटाने के बाद सीधे भौतिक विलोपन हटा दिया जाएगा", - "setting_user_animate_desc" => "खिड़की खुली और अन्य एनीमेशन", - "setting_user_sound_desc" => "ऑपरेशन ध्वनि", - "setting_user_imageThumb" => "चित्र थंबनेल", - "setting_user_imageThumb_desc" => "खोलने के बाद बेहतर ब्राउज़िंग अनुभव", - "setting_user_fileSelect" => "फ़ाइल आइकन चेक खोलें", - "setting_user_fileSelect_desc" => "फ़ाइल आइकन कुंजी चेक को छोड़ दिया, राइट-क्लिक मेनू शॉर्टकट प्रविष्टि", - "qrcode" => "यूआरएल क्यूआर कोड", - "theme_mac" => "मैक minimalist सफेद", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "मेट्रो ब्लू क्लासिक", - "theme_metro_green" => "मेट्रो हल्के हरे रंग", - "theme_metro_purple" => "मेट्रो सुरुचिपूर्ण बैंगनी", - "theme_metro_pink" => "मेट्रो गुलाब", - "theme_metro_orange" => "मेट्रो चमकीले नारंगी", - "theme_alpha_image" => "ब्राइट - फ्लाइंग", - "theme_alpha_image_sun" => "ब्राइट - सूर्यास्त", - "theme_alpha_image_sky" => "सिम्फनी - नीला आकाश", - "theme_diy" => "कस्टम", - "theme_diy_title" => "कस्टम थीम सेटिंग्स", - "theme_diy_background" => "पृष्ठभूमि", - "theme_diy_image" => "चित्र", - "theme_diy_color_blur" => "ढाल रंग", - "theme_diy_image_blur" => "चित्र कलंक", - "theme_diy_image_url" => "Photos पता", - "theme_diy_color_start" => "शुरू रंग", - "theme_diy_color_end" => "अंत रंग", - "theme_diy_color_radius" => "ढाल कोण", - "system_role_admin_set" => "व्यवस्थापकों की स्थापना के बिना, सभी अधिकार है!", - "login_error_user_not_use" => "उपयोगकर्ता निष्क्रिय कर दिया गया! व्यवस्थापक से संपर्क करें", - "login_error_kod_version" => "संस्करण विरोध", - "login_error_role" => "देखें अनुमतियों के समूह मौजूद नहीं है, व्यवस्थापक से संपर्क करें", - "no_permission_group" => "आप इस समूह में नहीं हैं!", - "no_permission_write" => "निर्देशिका लिखने की अनुमति नहीं है", - "user" => "उपयोगकर्ता", - "save_as" => "के रूप में सहेजें", - "check_update" => "अपडेट", - "keyboard_type" => "कीबोर्ड मोड", - "font_family" => "फ़ॉन्ट्स", - "code_mode" => "सिंटेक्स हाइलाइटिंग", - "path_can_not_share" => "केवल अपने स्वयं के दस्तावेज़ों को साझा करने का समर्थन!", - "path_can_not_action" => "इस निर्देशिका में इस आपरेशन का समर्थन नहीं करता!", - "wap_page_pc" => "पीसी संस्करण", - "wap_page_phone" => "मोबाइल", - "image_size" => "छवि आयाम", - "no_permission_action" => "यदि आप इस अनुमति की जरूरत नहीं है, व्यवस्थापक से संपर्क करें!", - "path_is_root_tips" => "यह रूट निर्देशिका में आ गया है!", - "kod_group" => "संगठन", - "my_kod_group" => "मैं विभाग में हूँ", - "space_tips_default" => "(जीबी) 0 कोई सीमा नहीं", - "space_tips_full" => "सीमित बिना", - "space_size" => "अंतरिक्ष", - "space_size_use" => "अंतरिक्ष के इस्तेमाल", - "space_is_full" => "पर्याप्त जगह नहीं है, कृपया व्यवस्थापक से संपर्क करें!", - "system_open_true_path" => "सफलतापूर्वक फ़ाइल प्रबंधक में खोला!", - "group_role_error" => "भूमिका अनुमति त्रुटि (कोई अनुमति सेटिंग्स)", - "group_role_error_admin" => "अपर्याप्त अनुमति", - "markdown_content" => "लेख-सूची", - "system_group" => "उपयोगकर्ता और विभाग", - "system_group_edit" => "विभाग प्रबंधन", - "system_group_role" => "भूमिका पहचान", - "system_group_create" => "नया विभाग", - "system_group_name" => "विभाग का नाम", - "system_group_father" => "सुपीरियर विभाग", - "system_group_add" => "उप-विभाग जोड़ें", - "system_group_remove" => "विभाग को निकालें", - "system_group_remove_tips" => "क्या आप विभाग को हटाना चाहते हैं?
                  उपयोगकर्ता के हिस्से को हटाने के बाद हटा दिया जाएगा, उप-क्षेत्र रूट क्षेत्र में स्थानांतरित", - "system_group_select" => "विभाग का चयन करें", - "system_group_select_result" => "सदस्यों को निम्नलिखित क्षेत्रों की होगी", - "system_role_admin_tips" => "टिप्पणियां: सिस्टम प्रशासक को नियंत्रित करने के लिए अधिकृत नहीं हैं", - "system_member_action" => "प्रयोक्ता प्रबंधन", - "system_member_add" => "नई उपयोगकर्ता", - "system_member_role" => "अनुमति भूमिकाओं", - "system_member_role_select" => "चुनना", - "system_member_password_tips" => "भरने मत करो संशोधित नहीं", - "system_set_home_path" => "कस्टम सूची", - "system_set_home_path_tips" => "डिफ़ॉल्ट निर्देशिका खाली है", - "system_member_group" => "जहां विभाग", - "system_member_group_edit" => "संपादकीय विभाग", - "system_member_remove" => "उपयोगकर्ता को हटा", - "system_member_remove_tips" => "उपयोक्ता मिटायें की पुष्टि? बाद
                  उपयोगकर्ता निर्देशिका नष्ट पूरी तरह से मिट जाएगा", - "system_member_set_role" => "चयनित उपयोगकर्ता समूह अनुमतियों के परिवर्तन की पुष्टि करने के लिए?", - "system_member_remove_group" => "चयनित उपयोगकर्ता इस समूह से निकाल दिया जाएगा निर्धारित?", - "system_member_import" => "थोक जोड़ने", - "system_member_import_desc" => "प्रति पंक्ति एक उपयोगकर्ता,
                  पहले से ही मौजूद चुपचाप उपेक्षा कर रहे हैं", - "system_member_use" => "सक्षम करें", - "system_member_unuse" => "अक्षम", - "system_member_space" => "उपयोगकर्ता स्थान आकार सेट करें ", - "system_member_space_tips" => " उपयोगकर्ता स्थान आकार सेट करें ", - "system_member_space_number" => " एक नंबर होना चाहिए!", - "system_member_group_config" => "बैच सेटिंग विभाग", - "system_member_group_remove" => "विभाग से हटा दिया गया", - "system_member_group_insert" => "विभाग में जोड़ें", - "system_member_group_reset" => "विभाग को रीसेट करें", - "system_member_group_error" => "विभाग त्रुटि", - "system_group_action" => "विभाग प्रबंधन", - "system_role_add" => "भूमिका पहचान जोड़ने", - "system_role_read" => "केवल पढ़ने के लिए", - "system_role_write" => "पढ़ और लिख सकता", - "system_setting_root_path" => "रूट पहुँच", - "system_setting_root_path_desc" => "केवल एक सिस्टम प्रशासक सभी निर्देशिकाओं का उपयोग कर सकते, उन के अन्य अधिकार समूहों केवल अपने स्वयं के उपयोगकर्ता निर्देशिका देख सकते हैं। आप पर या अन्य निर्देशिकाओं करने के लिए
                  व्यवस्थापक पहुँच को बंद करना चाहते हैं, तो आप, विरोधी क्रॉस साइट मापदंडों open_basedir php संशोधित कर सकते हैं", - "system_group_role_title" => "विभागीय अधिकार भूमिका प्रबंधन", - "system_group_role_remove" => "विभाग की भूमिका को हटाना ठीक है", - "system_group_role_style" => "शैली", - "system_group_role_display" => "चाहे", - "system_group_role_display_desc" => "सेट करें कि क्या डिपार्टमेंट उपयोगकर्ता अधिकार प्रदर्शित करने या नहीं", - "role_type_name_read" => "पढ़ना", - "role_type_name_read:list" => "फ़ाइल सूची", - "role_type_name_read:info" => "फ़ाइल (फ़ोल्डर) संपत्ति देखें, फ़ोल्डर खोज", - "role_type_name_read:copy" => "फ़ाइल की प्रतिलिपि", - "role_type_name_read:preview" => "फ़ाइल पूर्वावलोकन (चित्र, दस्तावेज़, ऑडियो और वीडियो)", - "role_type_name_read:download" => "फ़ाइल (फ़ोल्डर) डाउनलोड", - "role_type_name_write" => "लिखना", - "role_type_name_write:add" => "एक फ़ाइल (फ़ोल्डर) बनाएं, संकुचित फ़ाइल निकालने", - "role_type_name_write:edit" => "फ़ाइल सहेजें संपादित करने के लिए", - "role_type_name_write:change" => "नाम बदलें, निर्देशिका संरचना को समायोजित", - "role_type_name_write:upload" => "फ़ाइल (फ़ोल्डर) अपलोड, दूरस्थ डाउनलोड", - "role_type_name_write:remove" => "फ़ाइल (फ़ोल्डर) को हटा दें, कटौती", - "group_guest" => "आगंतुकों", - "group_guest_desc" => "आप विभाग का सदस्य नहीं हैं,
                  केवल [डिपार्टमेंट शेयर डायरेक्टरी] तक ही पहुंच सकते हैं, केवल पढ़ने के लिए अनुमतियां।", - "group_role_lebel_desc" => "आप इस विभाग के सदस्य हैं,
                  the विभाग के भीतर सभी दस्तावेज व्यवस्थापक द्वारा सभी अधिकार सुरक्षित", - "button_save_and_add" => "बचाने के लिए और जोड़ने के लिए जारी", - "path_cannot_search" => "निर्देशिका खोज का समर्थन नहीं करता है!", - "not_support" => "समर्थित नहीं!", - "group_not_exist" => "उपयोगकर्ता समूह मौजूद नहीं है!", - "upload_clear_all" => "सभी साफ़", - "upload_clear" => "पूरे साफ", - "upload_setting" => "सेट अप", - "upload_tips" => "टुकड़ा अपलोड, अब नहीं php.ini सीमा के अधीन उपयोग करता है; सिफारिश क्रोम फ़ोल्डर खींचें और ड्रॉप अपलोड अनुभव", - "upload_exist" => "एक ही नाम के फ़ाइल", - "upload_exist_rename" => "नाम बदलें", - "upload_exist_replace" => "आवरण", - "upload_exist_skip" => "छोड़ें", - "upload_add_more" => "थोक जोड़ने", - "more" => "अधिक", - "system_setting" => "सिस्टम सेटिंग्स", - "openProject" => "परियोजना संपादक खोलें", - "url_download" => "डाउनलोड", - "url_link" => "पते की श्रृंखला से बाहर", - "app_type_link" => "शॉर्टकट", - "createLink" => "शॉर्टकट बनाएं", - "createLinkHome" => "डेस्कटॉप शॉर्टकट के लिए भेजा गया", - "createProject" => "संपादक परियोजना को जोड़ने", - "only_read" => "केवल पढ़ने के लिए", - "only_read_desc" => "निर्देशिका लिखने की अनुमति नहीं है
                  आप सर्वर पर इस निर्देशिका के लिए अनुमतियाँ सेट कर सकते हैं", - "not_read" => "घिचपिच", - "explorerNew" => "Kod लिंक", - "zip_download_ready" => "संपीड़न स्वचालित रूप से डाउनलोड करने के बाद, कृपया प्रतीक्षा करें ...", - "set_background" => "के रूप में डेस्कटॉप वॉलपेपर सेट", - "share" => "शेयर", - "my_share" => "मेरा हिस्सा", - "group_share" => "बाहरी साझाकरण समूह", - "share_edit" => "शेयर संपादित करें", - "share_remove" => "साझा करना रद्द करें", - "share_remove_tips" => "क्या आप वाकई साझा करना रद्द करना चाहते हैं? सार्वजनिक कनेक्शन को रद्द कर दिया जाएगा", - "share_path" => "मार्ग साझा करें", - "share_title" => "संसाधन साझाकरण", - "share_name" => "शीर्षक साझा करें", - "share_time" => "समय सीमा समाप्त", - "share_time_desc" => "अशक्त सेट नहीं है", - "share_password" => "निकालें पासवर्ड", - "share_password_desc" => "खाली पासवर्ड सेट नहीं है", - "share_cancle" => "अनसाझा", - "share_create" => "एक सार्वजनिक लिंक बनाएँ", - "share_url" => "साझा पता", - "share_not_download" => "डाउनलोड प्रतिबंध", - "share_not_download_tips" => "हिस्सेदार डाउनलोड प्रतिबंध लगा दिया!", - "share_code_read" => "कोड रीडर", - "share_save" => "विन्यास सहेजें", - "share_error_param" => "पैरामीटर त्रुटि!", - "share_error_user" => "उपयोगकर्ता जानकारी त्रुटि!", - "share_error_sid" => "शेयर मौजूद नहीं है!", - "share_error_time" => "आप बहुत देर हो चुकी है, शेयर समाप्त हो गया है आओ!", - "share_error_path" => "साझा फ़ाइल मौजूद नहीं है, इसे नष्ट कर दिया या इसे हटा दिया जाता है!", - "share_error_password" => "गलत पासवर्ड!", - "share_error_show_tips" => "इस प्रकार फ़ाइल पूर्वावलोकन का समर्थन नहीं करता है!", - "share_view_num" => "दृश्य:", - "share_download_num" => "डाउनलोड:", - "share_open_page" => "साझा पृष्ठ खोलें", - "open_the_path" => "निर्देशिका दर्ज", - "recycle_clear" => "खाली कचरा", - "recycle_clear_success" => "खाली कचरा सफलता!", - "recycle_clear_info" => "क्या आप वाकई पूरी तरह से खाली करने के लिए कचरा देखना चाहते हैं?", - "fav_remove" => "रद्द संग्रह", - "remove_item" => "आइटम", - "uploading" => "अपलोड", - "upload_tips_more" => "बहुत अधिक फ़ाइलें, संकुचित अपलोड की सिफारिश, तो ऑनलाइन खोलना!", - "uploading_move" => "विलय हस्तांतरण में ...", - "show_file" => "नया पृष्ठ पूर्वावलोकन", - "unknow_file_title" => "फ़ाइल को खोलने टिप!", - "unknow_file_tips" => "इस फाइल, आप कर सकते हैं के आवेदन का समर्थन नहीं किया था:", - "unknow_file_try" => "कोशिश", - "unknow_file_download" => "फ़ाइल डाउनलोड करें", - "unknow_plugin_search" => "खोजें से संबंधित आवेदन पत्र स्थापित", - "config_save_error_auth" => "विन्यास को बचाने में विफल, व्यवस्थापक इस विशेषाधिकार पर प्रतिबंध लगा दिया!", - "config_save_error_file" => "त्रुटि, फाइल लिखने योग्य नहीं!", - "beautify_code" => "संहिता Formatter", - "convert_case" => "प्रकरण रूपांतरण", - "convert_upper_case" => "अपरकेस में परिवर्तित", - "convert_lower_case" => "लोअरकेस परिवर्तित", - "editor_insert_time" => "वर्तमान समय ", - "editor_md5" => " एमडी 5 एन्क्रिप्शन ", - "editor_qrcode" => " स्ट्रिंग द्वि-आयामी कोड ", - "editor_regx" => " नियमित अभिव्यक्ति परीक्षण ", - "editor_chinese" => " सरलीकृत रूपांतरण ", - "editor_chinese_simple" => " सरलीकृत चीनी में कनवर्ट करें ", - "editor_chinese_traditional" => " पारंपरिक चीनी में कनवर्ट करें ", - "editor_base64" => "बेस 64 कोडेक ", - "editor_base64_encode" => " बेस 64 एन्कोडिंग ", - "editor_base64_decode" => " बेस 64 डीकोडिंग ", - "editor_url" => " यूआरएल कोडेक ", - "editor_url_encode" => " यूआरएल एन्कोडिंग ", - "editor_url_decode" => " यूआरएल डिकोडिंग ", - "editor_unicode" => " यूनिकोड कोडेक ", - "editor_unicode_encode" => " यूनिकोड एन्कोडिंग ", - "editor_unicode_decode" => " यूनिकोड डिकोडिंग", - "editor_tools_select_tips" => " कृपया उस सामग्री का चयन करें जिसे आप कन्वर्ट करना चाहते हैं!", - "editor_calc" => "मुफ्त कैलकुलेटर", - "shortcut" => "शॉर्टकट", - "use_free" => "मुक्त संस्करण का उपयोग करने के लिए जारी", - "learn_more" => "जानें", - "replace" => "बदलें", - "selectAll" => "चुनना", - "reload" => "सीमा से अधिक लादना", - "about" => "पर", - "complete_current" => "वर्तमान के ऑटो पूरा", - "view" => "राय", - "tools" => "साधन", - "help" => "मदद", - "not_exists" => "अस्तित्व में नहीं है", - "group_role_fileDownload" => "डाउनलोड", - "group_role_share" => "शेयर", - "users_share" => "साझा करना", - "system_setting_save" => "सुरक्षा सेटिंग्स", - "system_setting_menu" => "मेनू प्रबंधन", - "system_name" => "कार्यक्रम का नाम", - "system_name_desc" => "कार्यक्रम के लोगो के शीर्षक", - "system_desc" => "कार्यक्रम विवरण", - "path_hidden" => "निर्देशिका बहिष्करण", - "version_not_support" => "आपका संस्करण इस समर्थन नहीं करता है, कृपया उन्नत संस्करण को खरीदने के लिए आधिकारिक वेबसाइट पर जाना!", - "version_not_support_number" => "प्रतिबंध की संख्या इस आपरेशन का समर्थन नहीं करता है, आधिकारिक वेबसाइट के उन्नत संस्करण को खरीदने के लिए कृपया!", - "path_hidden_desc" => "निर्देशिका और फाइल डिफ़ॉल्ट रूप से प्रदर्शित नहीं किया, अल्पविराम के द्वारा अलग", - "new_user_folder" => "नई उपयोगकर्ता डिफ़ॉल्ट निर्देशिका द्वारा बनाई गई है", - "new_user_folder_desc" => "अल्पविराम के द्वारा अलग", - "new_user_app" => "नई उपयोगकर्ता डिफ़ॉल्ट एप्लिकेशन द्वारा बनाई गई है", - "new_user_app_desc" => "एप्लीकेशन अनुप्रयोग केंद्र, अल्पविराम के द्वारा अलग की बहुलता", - "auto_login" => "आगंतुकों को स्वत: लॉगिन", - "auto_login_desc" => "डिफ़ॉल्ट लॉगिन उपयोगकर्ताguest/guestउपयोगकर्ताओं; उद्घाटन के बाद यह सुनिश्चित करें कि उपयोगकर्ता मौजूद है", - "first_in" => "डिफ़ॉल्ट में प्रवेश करने के बाद", - "version_price_free" => "मुक्त", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "निर्देशिका लिखने योग्य नहीं है, निर्देशिका सेट और सभी सबडायरेक्टरियों पढ़ने लिखने के बाद फिर से कोशिश करने के लिए!", - "menu_name" => "मेनू नाम", - "menu_hidden" => "छिपाना", - "menu_show" => "प्रदर्शन", - "menu_move_down" => "नीचे", - "menu_move_up" => "ऊपर", - "menu_move_del" => "मिटाना", - "menu_open_window" => "एक नया विंडो खोलें", - "menu_sub_menu" => "सबमेनू", - "url_path" => "यूआरएल पता", - "url_path_desc" => "यूआरएल एड्रेस या जे एस कोड", - "no_permission_read" => "आप पढ़ने के लिए अनुमति नहीं है!", - "no_permission_download" => "आप डाउनलोड करने के लिए अनुमति नहीं है!", - "php_env_check" => "आपरेटिंग पर्यावरण निगरानी:", - "php_env_error" => "PHP पुस्तकालय लापता है", - "php_env_error_ignore" => "पर ध्यान न दें और दर्ज करें", - "php_env_error_version" => "पीएचपी संस्करण 5.0 की तुलना में कम नहीं किया जा सकता", - "php_env_error_path" => "लिखने योग्य नहीं", - "php_env_error_list_dir" => "अपने वेब सर्वर निर्देशिका सुरक्षा कारणों के लिए सुविधा लिस्टिंग को खोलता है, इस सुविधा को अक्षम!कैसे?", - "php_env_error_gd" => "PHP जी.डी. पुस्तकालय खोलने, अन्यथा कोड होना चाहिए, थंबनेल का उपयोग ठीक ढंग से काम नहीं चलेगा", - "install_login" => "आप निम्न खाते में प्रवेश के लिए उपयोग कर सकते", - "install_enter" => "प्रणाली", - "install_user_default" => "प्रशासक: {0} / (एक पासवर्ड सेट नीचे)
                  औसत उपयोगकर्ता: {1}
                  अतिथि उपयोगकर्ताओं: {2}", - "login_root_password" => "व्यवस्थापक पासवर्ड सेट करें", - "login_root_password_repeat" => "फिर पासवर्ड की पुष्टि", - "login_root_password_equal" => "दो पासवर्ड मेल नहीं खाते!", - "login_root_password_tips" => "एक व्यवस्थापक पासवर्ड सेट करें!", - "forget_password" => "अपना पासवर्ड भूल गए", - "forget_password_tips" => "प्रशासक पासवर्ड भूल:
                  सर्वर लॉग इन करें रीसेट ./data/system/install.lock हटाना;

                  गैर-व्यवस्थापक पासवर्ड भूल:
                  रीसेट करने के लिए व्यवस्थापक से संपर्क करें!", - "copyright_desc" => "Kodexplorer एक अत्यधिक प्रशंसित वेब दस्तावेज़ प्रबंधन प्रणाली है, तो आप भी webIDE सीधे ऑनलाइन विकास के रूप में, आंतरिक दस्तावेज़ प्रबंधन या साझा, भी इस साइट प्रबंधन सर्वर पर इस्तेमाल किया जा सकता है के लिए इसका इस्तेमाल, FTP जगह ले सकता है। तुम भी दूसरा विकास कार्यक्रम के लिए अपने मौजूदा सिस्टम में इस एकीकृत कर सकते हैं।", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "KodExplorer द्वारा संचालित", - "kod_name" => "KodExplorer", - "kod_name_desc" => "मैंगो बादल • एक्सप्लोरर", - "kod_power_by" => " - KodExplorer द्वारा संचालित", - "kod_name_copyright" => "मैंगो बादल • एक्सप्लोरर", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, दाव बादल, बादल आम, दस्तावेज़ प्रबंधन प्रणाली, उद्यम बादल डिस्क, अन्वेषक ,, ऑनलाइन प्रलेखन, ऑनलाइन कार्यालय, ऑनलाइन कार्यालय, ऑनलाइन सीएडी पूर्वावलोकन, ऑनलाइन संपादन , ऑनलाइन संपादक", - "kod_meta_description" => "KodExplorer रोड बादल कर सकते हैं (पूर्व में आम बादल) सुरक्षित और नियंत्रित, सरल और आसान प्रदान करने के लिए सरकार / कॉर्पोरेट निजी बादल और निजी वेबसाइट के लिए ऑनलाइन दस्तावेज़ प्रबंधन प्रणाली, उद्यम निजी क्लाउड की तैनाती, नेटवर्क भंडारण, ऑनलाइन दस्तावेज़ प्रबंधन के एक अग्रणी प्रदाता, ऑनलाइन कार्यालय है उपयोग करते हैं, अत्यधिक निजी क्लाउड उत्पादों अनुकूलित। खिड़कियों का उपयोग शैली इंटरफेस, ऑपरेटिंग प्रथाओं बिना, जल्दी से शुरू करने के लिए अनुकूल करने के लिए, लोकप्रिय ऑनलाइन पूर्वावलोकन फ़ाइल स्वरूप, प्लेबैक और संपादन पर्यावरण के अनुकूल, शक्तिशाली के सैकड़ों समर्थन करते हैं, एक एक बार परीक्षण, अब निजी से अविभाज्य है बादल प्रसाद।", - "kod_meta_copyright" => "kodcloud.com", - "login" => "में प्रवेश करें", - "guest_login" => "अतिथि साइन", - "username" => "लॉगिन खाता", - "userNickName" => "उपयोगकर्ता उपनाम", - "password" => "पासवर्ड", - "login_code" => "संहिताओं", - "need_check_code" => "लॉगिन प्रमाणीकरण कोड खुला", - "need_check_code_desc" => "प्रवेश करने के बाद, आपको सत्यापन कोड दर्ज करना होगा।", - "setting_csrf_protect" => "ओपन CSRF संरक्षण", - "setting_csrf_protect_desc" => "हमले को प्रभावी ढंग से CSRF रक्षा कर सकते हैं के उद्घाटन के प्रकार के बाद", - "login_rember_password" => "पासवर्ड याद रखें", - "setting_show_root_group" => "सभी विभागों की सूची", - "setting_show_root_group_desc" => "ट्री निर्देशिका रूट विभाग चाहे सभी विभागों को सूचीबद्ध करें", - "setting_show_share_user" => "सभी उपयोगकर्ताओं की सूची", - "setting_show_share_user_desc" => "ट्री निर्देशिका रूट विभाग सभी उपयोगकर्ता साझाकरण के लिए सूचीबद्ध है", - "setting_clear_user_recycle" => "सभी उपयोगकर्ताओं के लिए रीसायकल बिन खाली करें", - "setting_clear_cache" => "कैश रिक्त", - "setting_icp" => "कॉपीराइट या रिकार्ड संख्या", - "setting_global_css" => "कस्टम वैश्विक सीएसएस", - "setting_global_css_desc" => "सभी पृष्ठों पर कस्टम सीएसएस डाल देगा", - "setting_global_html" => "सांख्यिकीय कोड एचटीएमएल", - "setting_global_html_desc" => "सभी पृष्ठों इस पैरा एचटीएमएल कोड में डाला जाएगा, कोड तीसरे पक्ष के आंकड़े रखा जा सकता है", - "us" => "पाल नेटवर्क स्टूडियो", - "login_not_null" => "यूज़रनेम और पासवर्ड खाली नहीं हो सकता!", - "code_error" => "त्रुटि कोड", - "password_error" => "उपयोगकर्ता नाम या पासवर्ड गलत है!", - "password_not_null" => "पासवर्ड रिक्त नहीं हो सकता!", - "old_password_error" => "पुराना पासवर्ड गलत है!", - "permission" => "अनुमति!", - "permission_edit" => "अनुमतियों को संशोधित", - "file_info_owner" => "मालिक", - "file_info_group" => "समूह", - "no_permission" => "प्रशासक इस विशेषाधिकार अक्षम है!", - "no_permission_ext" => "प्रशासक फाइल अनुमति के इस प्रकार के प्रतिबंध लगा", - "dialog_max" => "अधिकतम", - "dialog_min" => "कम से कम", - "dialog_min_all" => "सभी को छोटा करें", - "dialog_display_all" => "सभी खिड़कियां दिखाएँ", - "dialog_close_all" => "सभी बंद", - "open" => "खुला", - "others" => "अन्य", - "open_with" => "इसके लिए खोलें ...", - "close" => "निकट", - "close_all" => "सभी बंद", - "close_left" => "छोड़ दिया टैब बंद", - "close_right" => "बंद सही करने के लिए टैब", - "close_others" => "बंद अन्य", - "loading" => "ऑपरेशन ...", - "warning" => "चेतावनी", - "getting" => "जाओ ...", - "sending" => "डाटा ट्रांसमिशन ...", - "data_error" => "डेटा त्रुटि!", - "get_success" => "सफलता प्राप्त!", - "save_success" => "सफलतापूर्वक बचाया!", - "success" => "सफल ऑपरेशन", - "error" => "ऑपरेशन विफल रहा है", - "error_repeat" => "कार्रवाई विफल रही, नाम पहले से ही मौजूद है!", - "word_error" => "असफलता ", - "word_success" => " सफलता", - "system_error" => "सिस्टम त्रुटि", - "name" => "नाम", - "type" => "टाइप", - "contain" => "होते हैं", - "address" => "स्थान", - "size" => "आकार", - "byte" => "बाइट", - "path" => "पथ", - "action" => "ऑपरेटिंग", - "create_time" => "बनाया गया", - "modify_time" => "संशोधित", - "last_time" => "अंतिम भेंट", - "sort_type" => "द्वारा क्रमबद्ध करें", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "सार्वजनिक निर्देशिका", - "system_path_not_change" => "सिस्टम निर्देशिका, संशोधित नहीं किया जा सकता", - "file" => "फ़ाइल", - "folder" => "फ़ोल्डर", - "copy" => "प्रतिलिपि", - "past" => "छड़ी", - "clone" => "एक प्रतिलिपि बनाएं", - "cute" => "कतरनी", - "cute_to" => "पर ले जाएं ...", - "copy_to" => "कॉपी करने के लिए ...", - "remove" => "मिटाना", - "remove_force" => "पूरी तरह से हटाने", - "info" => "संपत्ति", - "list_type" => "राय", - "list_icon" => "चिह्न सरणी", - "list_list" => "सूची व्यवस्था", - "list_list_split" => "स्तंभ मोड", - "sort_up" => "वेतन वृद्धि", - "sort_down" => "घटाना", - "order_type" => "द्वारा क्रमबद्ध करें", - "order_desc" => "अवरोही", - "order_asc" => "आरोही", - "rename" => "नाम बदलें", - "add_to_fav" => "पसंदीदा में जोड़ें", - "search_in_path" => "फ़ोल्डर खोज", - "add_to_play" => "प्लेलिस्ट में जोड़ें", - "manage_fav" => "पसंदीदा प्रबंधित करें", - "refresh_tree" => "ताज़ा निर्देशिका वृक्ष", - "manage_folder" => "निर्देशिका प्रबंधन", - "close_menu" => "मेनू को बंद करें", - "zip" => "एक संकुचित पैकेज बनाएँ", - "unzip" => "निकालने के लिए ...", - "unzip_folder" => "एक फ़ोल्डर में खोल दो", - "unzip_this" => "वर्तमान को निकालें", - "unzip_to" => "निकालने के लिए ...", - "zipview_file_big" => "फ़ाइल बहुत बड़ी है, और फिर पूर्वावलोकन ऑपरेशन निकालने!", - "clipboard" => "देखें क्लिपबोर्ड", - "clipboard_clear" => "खाली क्लिपबोर्ड", - "full_screen" => "पूर्ण स्क्रीन", - "folder_info_item" => "आइटम", - "folder_info_item_select" => "A चयनित", - "file_load_all" => "सभी लोड करने के लिए डबल क्लिक करें ......", - "tips" => "शीघ्र", - "ziping" => "Zipping ...", - "unziping" => "निकालने ...", - "moving" => "मोबाइल ऑपरेशन ...", - "remove_title" => "पुष्टिकरण मिटाएं", - "remove_info" => "चयनित आइटम को नष्ट करने की पुष्टि?", - "remove_title_force" => "स्थायी रूप से हटा", - "remove_info_force" => "आप यकीन है कि आप स्थायी रूप से इस दस्तावेज़ हटाना चाहते हैं?", - "name_isexists" => "गलत, नाम पहले से ही मौजूद है!", - "install" => "स्थापित करें", - "width" => "चौड़ाई", - "height" => "उच्च", - "app" => "लाइट आवेदन", - "app_store" => "लाइट आवेदन", - "app_create" => "अनुप्रयोग बनाएँ", - "app_edit" => "आवेदन को संशोधित", - "app_group_all" => "पूरा", - "app_group_game" => "खेल", - "app_group_tools" => "साधन", - "app_group_reader" => "पढ़ना", - "app_group_movie" => "टेलीविज़न", - "app_group_music" => "संगीत", - "app_group_life" => "जीवन", - "app_group_others" => "अन्य", - "app_desc" => "विवरण", - "app_icon" => "एप्लिकेशन आइकन", - "app_icon_show" => "यूआरएल एड्रेस या निर्देशिका", - "app_group" => "आवेदन पैकेट", - "app_type" => "टाइप", - "app_type_url" => "लिंक", - "app_type_code" => "जे एस विस्तार", - "app_display" => "बाहरी", - "app_display_border" => "सीमाओं के बिना (यानी सीमा का चयन करें)", - "app_display_size" => "(समायोजन के लिए जाँच करें) का आकार बदलने", - "app_size" => "आकार", - "app_url" => "लिंक का पता", - "app_code" => "जे एस कोड", - "edit" => "संपादित करें", - "edit_can_not" => "नहीं एक पाठ फ़ाइल", - "edit_too_big" => "फ़ाइल बहुत बड़ी है, यह 40M से बड़ा नहीं हो सकता है", - "open_default" => "डिफ़ॉल्ट ओपन", - "open_ie" => "ब्राउज़र खोलें", - "refresh" => "ताज़ा करना", - "refresh_all" => "एक ताज़ा मजबूर", - "newfile" => "नई फ़ाइल", - "newfile_save_as" => "करने के लिए सहेजें", - "newfolder" => "नया फ़ोल्डर", - "newothers" => "न्यू अन्य", - "path_loading" => "लोड हो रहा है ...", - "go" => "चलो!", - "go_up" => "ऊपरी परत", - "history_next" => "आगे", - "history_back" => "पीछे हटना", - "address_in_edit" => "संपादन मोड में प्रवेश के लिए क्लिक करें", - "double_click_rename" => "नाम बदलने पर डबल क्लिक करें", - "double_click_open" => "खोलने के लिए डबल क्लिक करें", - "path_null" => "फ़ोल्डर खाली है!", - "file_size_title" => "चिह्न आकार", - "file_size_small_super" => "अल्ट्रा छोटे", - "file_size_small" => "छोटे चिह्न", - "file_size_default" => "प्रतीक", - "file_size_big" => "बड़े प्रतीक", - "file_size_big_super" => "बड़े चिह्न", - "upload" => "अपलोड", - "upload_ready" => "अपलोड करने के लिए प्रतीक्षा कर रहा है", - "upload_success" => "शब्द सफल", - "upload_path_current" => "मौजूदा निर्देशिका के लिए स्विच", - "upload_select" => "फ़ाइल का चयन करें", - "upload_max_size" => "अधिकतम स्वीकार्य", - "upload_size_info" => "आप और अधिक विन्यस्त करने के लिए चाहते हैं, php.ini अधिकतम अनुमति प्रदान करें और संशोधित करें। जब आप का चयन एक फ़ाइल इस विन्यास से बड़ा स्वचालित रूप से बाहर फिल्टर होगा।", - "upload_error" => "अपलोड हुई", - "upload_error_http" => "नेटवर्क या फ़ायरवॉल त्रुटियों", - "upload_muti" => "मल्टी फाइल अपलोड", - "upload_drag" => "खींचें और ड्रॉप अपलोड", - "upload_drag_tips" => "अपलोड करने के लिए ढीला!", - "path_not_allow" => "फ़ाइल का नाम अनुमति नहीं", - "download" => "डाउनलोड", - "downloading" => "लोड हो रहा है ...", - "download_address" => "डाउनलोड", - "download_ready" => "डाउनलोड किया जाएगा", - "download_success" => "डाउनलोड सफलता!", - "download_error" => "डाउनलोड विफल!", - "download_error_create" => "लिखें त्रुटि!", - "download_error_exists" => "लिंक में विफल रहा है फाइल करने के लिए!", - "upload_error_null" => "कोई फाइल!", - "upload_error_big" => "फ़ाइल का आकार सर्वर सीमा से अधिक", - "upload_error_move" => "फ़ाइल को स्थानांतरित करने में विफल!", - "upload_error_exists" => "फ़ाइल पहले से मौजूद है", - "upload_local" => "स्थानीय अपलोड", - "download_from_server" => "दूरदराज डाउनलोड", - "save_path" => "पथ को बचाने", - "upload_select_muti" => "चयन फाइल अपलोड की बहुलता", - "search" => "खोज", - "searching" => "खोज रहा है ...", - "search_result" => "खोज परिणाम", - "seach_result_too_more" => "बहुत अधिक खोज परिणाम, यह एक निर्देशिका या शब्दों के लिए सिफारिश की है", - "search_null" => "कोई परिणाम नहीं!", - "search_uplow" => "मामला संवेदनशील", - "search_content" => "खोजें फाइल सामग्री", - "search_info" => "एक खोज शब्द दर्ज करें और खोज पथ कृपया!", - "search_ext_tips" => "के द्वारा | अलग है, उदाहरण के लिए पीएचपी | जेएस | सीएसएस
                  नहीं डिफ़ॉल्ट पाठ फ़ाइल खोज को भरने", - "file_type" => "फ़ाइल प्रकार", - "goto" => "यहां जाएं", - "server_dwonload_desc" => "टास्क डाउनलोड सूची में जोड़ा गया", - "parent_permission" => "जनक निर्देशिका अनुमति", - "root_path" => "मेरे दस्तावेज़", - "lib" => "गोदाम", - "fav" => "बुकमार्क", - "desktop" => "डेस्कटॉप", - "browser" => "ब्राउज़र", - "my_computer" => "मेरा कंप्यूटर", - "recycle" => "कचरा", - "my_document" => "मेरे दस्तावेज़", - "my_picture" => "मेरी तस्वीरें", - "my_music" => "मेरा संगीत", - "my_movie" => "मेरे वीडियो", - "my_download" => "मेरे डाउनलोड", - "ui_desktop" => "डेस्कटॉप", - "ui_explorer" => "फ़ाइल प्रबंधन", - "ui_editor" => "संपादक", - "adminer" => "adminer", - "ui_project_home" => "परियोजना के घर", - "ui_login" => "में प्रवेश करें", - "ui_logout" => "छोड़ना", - "setting" => "सिस्टम सेटिंग्स", - "setting_title" => "विकल्प", - "setting_user" => "व्यक्तिगत केंद्र", - "setting_password" => "पासवर्ड बदलें", - "setting_password_old" => "पुराने पासवर्ड", - "setting_password_new" => "संशोधित करने के लिए", - "setting_language" => "भाषा सेटिंग", - "setting_member" => "प्रयोक्ता प्रबंधन", - "setting_group" => "उपयोगकर्ता समूह प्रबंधन", - "setting_group_add" => "उपयोगकर्ता समूह जोड़े", - "setting_group_edit" => "संपादित उपयोगकर्ता के समूह", - "setting_theme" => "थीम सेटिंग्स", - "setting_wall" => "वॉलपेपर सेटिंग", - "setting_wall_desktop" => "डेस्कटॉप वॉलपेपर", - "setting_wall_desktop_list" => "डेस्कटॉप वॉलपेपर प्रबंधन", - "setting_wall_login_list" => "लॉगिन वॉलपेपर प्रबंधन", - "setting_wall_login_tips" => "युक्ति: जब एक से अधिक टुकड़े होते हैं, तो लॉगिन इंटरफ़ेस पृष्ठभूमि अनियमित रूप से घुमाएगी", - "setting_wall_diy" => "कस्टम वॉलपेपर:", - "setting_wall_info" => "चित्र यूआरएल पता, स्थानीय चित्रों छवि को खोलने के लिए ब्राउज़र पाने के लिए सही हो सकता है", - "setting_fav" => "बुकमार्क प्रबंधक", - "setting_help" => "मदद का उपयोग", - "setting_about" => "कार्यों के बारे में", - "setting_success" => "संशोधन प्रभाव ले लिया है!", - "can_not_repeat" => "दोहराने की अनुमति नहीं", - "absolute_path" => "निरपेक्ष पता", - "group" => "उपयोगकर्ता के समूह", - "data_not_full" => "डेटा अधूरा प्रस्तुत!", - "default_user_can_not_do" => "डिफ़ॉल्ट उपयोगकर्ता काम नहीं कर सकते", - "default_group_can_not_do" => "डिफ़ॉल्ट उपयोगकर्ता समूहों के काम नहीं कर सकते", - "username_can_not_null" => "यूजर का नाम रिक्त नहीं हो सकता!", - "groupname_can_not_null" => "उपयोगकर्ता समूह का नाम रिक्त नहीं हो सकता!", - "groupdesc_can_not_null" => "उपयोगकर्ता समूह विवरण खाली नहीं हो सकता!", - "group_move_user_error" => "उपयोगकर्ता समूह उन विफल रहे कदम", - "group_already_remove" => "उपयोगकर्ता समूह हटा दिया गया है", - "group_not_exists" => "इस उपयोगकर्ता समूह मौजूद नहीं है", - "member_add" => "उपयोगकर्ता जोड़ें", - "password_null_not_update" => "उन्होंने कहा कि वे परिवर्तन नहीं किया पासवर्ड भरा नहीं है", - "if_save_file_tips" => "कुछ फ़ाइलें सहेजी नहीं गई हैं क्या आप खिड़की को बंद करना चाहते हैं?", - "if_save_file" => "फ़ाइल को बचाया नहीं किया गया है, आप को बचाने के लिए करना चाहते हैं?", - "if_remove" => "चिह्नित की पुष्टि", - "member_remove_tips" => "आप उपयोगकर्ता निर्देशिका साफ हो जाएगा निकालने के बाद", - "group_remove_tips" => "तुम्हारे जाने के बाद उन प्रवेश नहीं कर सकते के उपयोगकर्ता समूह को हटाने
                  (करने की जरूरत है फिर से सेट उपयोगकर्ता समूह)", - "group_name" => "उपयोगकर्ता समूह का नाम", - "group_name_tips" => "सिफारिश अंग्रेजी नाम, दोहराया नहीं जा सकता", - "group_desc" => "प्रदर्शन नाम", - "group_desc_tips" => "समूह का नाम विवरण", - "group_role_ext" => "एक्सटेंशन प्रतिबंध", - "group_role_ext_tips" => "कई के साथ | अलग", - "group_role_file" => "फ़ाइल प्रबंधन", - "group_role_upload" => "अपलोड की अनुमति", - "group_role_user" => "उपयोगकर्ता डेटा", - "group_role_group" => "उपयोगकर्ता समूह प्रबंधन", - "group_role_member" => "प्रयोक्ता प्रबंधन", - "group_role_mkfile" => "नई फ़ाइल", - "group_role_mkdir" => "नया फ़ोल्डर", - "group_role_pathrname" => "नाम बदलें", - "group_role_pathdelete" => "फ़ाइल विलोपन", - "group_role_pathinfo" => "फ़ाइल गुण", - "group_role_pathmove" => "हटो (कॉपी / कट / पेस्ट / खींचें आपरेशन)", - "group_role_zip" => "दबाव", - "group_role_unzip" => "खोलना", - "group_role_search" => "खोज", - "group_role_filesave" => "फ़ाइल सहेजें संपादित करने के लिए", - "group_role_can_upload" => "अपलोड और डाउनलोड", - "group_role_download" => "दूरदराज डाउनलोड", - "group_role_passowrd" => "पासवर्ड बदलें", - "group_role_config" => "कॉन्फ़िगरेशन डेटा", - "group_role_fav" => "बुकमार्क परिचालन (जोड़ें / संपादित करने / हटाने)", - "action_list" => "सूची दृश्य", - "action_add" => "जोड़ना", - "action_edit" => "संपादित करें", - "action_del" => "मिटाना", - "group_role_ext_warning" => "ऐसी फ़ाइलों की अनुमति नहीं अपलोड,
                  नाम बदलें (निर्दिष्ट विस्तार करने के लिए नाम),
                  संपादन और बचत, दूरदराज डाउनलोड, निकालने", - "group_tips" => "
                • 1. उपयोगकर्ता समूह का नाम दोहराया नहीं जा सकता है। समूह का नाम संशोधित किए जाने के बाद, यह पुनर्गठित उपयोगकर्ता के अंतर्गत आता है और स्वचालित रूप से जुड़ा हुआ है।
                • 2. एक्सटेंशन सिस्टम सुरक्षा के बीच के संबंध को सीमित करते हैं, कृपया सावधान रहें (यदि आप वेब निर्देशिका में एक नया php बनाते हैं, इसका मतलब है कि इस उपयोगकर्ता के लिए प्रोग्राम की अनुमतियाँ बदलना लगभग असंभव है)
                • 3. घरेलू प्रबंधन, अधिकार समूह प्रबंधन, अधिकारों को देखने और जोड़ने, हटाना, और अधिकारों को संशोधित करना बाध्य हैं; कार्यक्रम स्वचालित रूप से संबंधित हैं
                • 4. अनुमति समूह के बाद अनुमति समूह जोड़ने के लिए सेट है, बाद में अनुमति विरासत में नहीं है (यह अनुमति उच्चतम अनुमति के बराबर है)।
                • ", - "not_null" => "आवश्यक फ़ील्ड रिक्त नहीं हो सकता!", - "picture_can_not_null" => "Photos रिक्त नहीं हो सकता!", - "rname_success" => "सफलता का नाम बदलें!", - "please_inpute_search_words" => "के लिए खोज करने के लिए एक स्ट्रिंग दर्ज करें", - "remove_success" => "सफलतापूर्वक नष्ट कर दिया गया!", - "remove_fali" => "मिटायें विफल रहा है!", - "clipboard_null" => "क्लिपबोर्ड खाली है!", - "create_success" => "नई सफलता!", - "create_error" => "न्यू विफल रहता है, जाँच निर्देशिका अनुमति!", - "copy_success" => "[प्रतिलिपि] - क्लिपबोर्ड सफलता को कवर!", - "cute_success" => "[कट] - क्लिपबोर्ड सफलता को कवर!", - "clipboard_state" => "क्लिपबोर्ड की स्थिति:", - "no_permission_write_all" => "फाइल या निर्देशिका लिखने योग्य नहीं है", - "no_permission_write_file" => "फ़ाइल लिखने की अनुमति नहीं है", - "no_permission_read_all" => "फाइल या निर्देशिका कोई पढ़ने की अनुमति है", - "copy_not_exists" => "स्रोत मौजूद नहीं है", - "current_has_parent" => "लक्ष्य फ़ोल्डर स्रोत फ़ोल्डर का एक सबफ़ोल्डर है!", - "past_success" => "चिपकाने की कार्रवाई पूरी कर ली है", - "cute_past_success" => "कटौती ऑपरेशन पूरा हो गया है(स्रोत फ़ाइल को नष्ट कर रहा है, क्लिपबोर्ड खाली)", - "zip_success" => "संपीड़न पूरा", - "not_zip" => "संग्रह नहीं", - "zip_null" => "चयनित नहीं फ़ाइल या निर्देशिका", - "unzip_success" => "खोल दो पूरा", - "gotoline" => "लाइन के लिए कूदो", - "path_is_current" => "पथ और मौजूदा मार्ग एक ही खोलने के लिए!", - "path_exists" => "नाम पहले से ही मौजूद है!", - "undo" => "निरसन", - "redo" => "एंटी निरसन", - "preview" => "पूर्वावलोकन", - "wordwrap" => "लपेटें", - "show_gutter" => "लाइन नंबर दिखाएँ", - "char_all_display" => "अदृश्य पात्रों दिखाएँ", - "auto_complete" => "स्वचालित रूप से संकेत देता है", - "auto_save" => "स्वचालित रूप से सहेजें", - "function_list" => "समारोह सूची", - "code_theme" => "कोडन शैली", - "font_size" => "फ़ॉन्ट का आकार", - "confirm" => "क्या आप वाकई यह करना चाहते हैं?", - "button_ok" => "निर्धारित बनाने के लिए", - "button_submit" => "प्रस्तुत करना", - "button_set" => "सेट अप", - "button_cancel" => "रद्द", - "button_edit" => "संपादित करें", - "button_save" => "सहेजें", - "button_apply" => "लागू करें", - "button_save_all" => "सभी सहेजें", - "button_not_save" => "नहीं बचा है", - "button_add" => "जोड़ना", - "button_back_add" => "जोड़ने पर वापस", - "button_del" => "मिटाना", - "button_save_edit" => "परिवर्तन सहेजें", - "button_save_submit" => "सहेजें जमा करें", - "button_more" => "अधिक", - "button_select_all" => "सभी का चयन / पलटना चयन", - "charset_AUTO" => "स्वचालित पहचान", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "अरबी भाषा", - "charset_ISO_8859_6" => "अरबी भाषा", - "charset_ISO_8859_10" => "नॉर्डिक भाषाओं", - "charset_CP1257" => "बाल्टिक भाषाएँ", - "charset_ISO_8859_13" => "बाल्टिक भाषाएँ", - "charset_ISO_8859_4" => "बाल्टिक भाषाएँ", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "जॉर्जियाई", - "charset_PT154" => "कजाख", - "charset_CP949" => "कोरियाई", - "charset_EUC_KR" => "कोरियाई", - "charset_GB18030" => "चीनी", - "charset_GBK" => "चीनी", - "charset_ISO_8859_14" => "केल्टिक", - "charset_CP1133" => "लाओ", - "charset_ISO_8859_16" => "रोमानियाई", - "charset_ISO_8859_3" => "दक्षिण यूरोपीय", - "charset_EUC_JP" => "जापानी", - "charset_ISO_2022_JP" => "जापानी", - "charset_SHIFT_JIS" => "जापानी", - "charset_KOI8_T" => "ताजिक भाषा", - "charset_ISO_8859_11" => "थाई", - "charset_TIS_620" => "थाई", - "charset_CP1254" => "तुर्की", - "charset_CP1251" => "सिरिलिक", - "charset_ISO_8859_5" => "सिरिलिक", - "charset_KOI8_R" => "सिरिलिक", - "charset_KOI8_U" => "सिरिलिक", - "charset_CP1252" => "पश्चिमी यूरोपीय भाषाओं", - "charset_ISO_8859_1" => "पश्चिमी यूरोपीय भाषाओं", - "charset_ISO_8859_15" => "पश्चिमी यूरोपीय भाषाओं", - "charset_Macintosh" => "पश्चिमी यूरोपीय भाषाओं", - "charset_CP1255" => "यहूदी", - "charset_ISO_8859_8" => "यहूदी", - "charset_CP1253" => "यूनानी", - "charset_ISO_8859_7" => "यूनानी", - "charset_ARMSCII_8" => "अर्मेनियाई", - "charset_CP1258" => "वियतनामी", - "charset_VISCII" => "वियतनामी", - "charset_CP1250" => "मध्य यूरोपीय भाषाएँ", - "charset_ISO_8859_2" => "मध्य यूरोपीय भाषाएँ", - "charset_default_set" => "फ़ाइल एन्कोडिंग", - "charset_convert_save" => "के रूप में एन्कोड फ़ाइल सहेजें", - "PluginCenter" => "प्लग केंद्र", - "PluginBuy" => "खरीद प्राधिकरण", - "PluginInstalled" => "स्थापित किया गया है", - "PluginUpdate" => "अद्यतन", - "PluginListNull" => "कोई सामग्री है!", - "PluginType" => "वर्गीकरण", - "PluginTypeAll" => "पूरा", - "PluginTypeFile" => "बढ़ी फ़ाइल", - "PluginTypeSafe" => "सुरक्षा उपकरण", - "PluginTypeTools" => "उपयोगिता", - "PluginTypeMedia" => "मल्टीमीडिया", - "PluginTypeOthers" => "अन्य", - "PluginInstall" => "प्लग स्थापित करें", - "PluginEnable" => "प्लग-इन सक्षम", - "PluginDisable" => "अक्षम", - "PluginRemove" => "प्लग की स्थापना रद्द करें", - "PluginConfig" => "प्लगइन कॉन्फ़िगर करें", - "PluginStatus" => "राज्य", - "PluginStatusEnabled" => "सक्रिय", - "PluginStatusDisabled" => "सक्षम नहीं", - "PluginStatusNotInstall" => "स्थापित नहीं", - "PluginInstalling" => "स्थापना ...", - "PluginHasUpdate" => "अपडेट", - "PluginUpdateStart" => "प्लग-इन अपडेट", - "PluginNeedConfig" => "प्रारंभिक विन्यास सक्षम करने के लिए की जरूरत", - "PluginConfigNotNull" => "आवश्यक फ़ील्ड रिक्त नहीं हो सकता!", - "PluginOpen" => "खुला है", - "PluginAuther" => "लेखक", - "PluginVersion" => "संस्करण", - "PluginDownloadNumber" => "इंस्टॉल", - "PluginBack" => "वापसी", - "PluginReadme" => "विवरण", - "PluginResetConfig" => "डिफ़ॉल्ट सेटिंग पुनर्स्थापित करें", - "PluginInstallSelf" => "मैन्युअल स्थापना", - "Plugin.config.auth" => "अनुमतियां", - "Plugin.config.authDesc" => "उपलब्ध सभी सेटिंग, या निर्दिष्ट करें कि उपयोगकर्ता, उपयोगकर्ता समूहों, अधिकार समूहों का उपयोग कर सकते", - "Plugin.config.authOpen" => "एक्सेस खोलें", - "Plugin.config.authOpenDesc" => "यात्रा करने की कोई ज़रूरत नहीं है, बाहरी इंटरफ़ेस कॉल के लिए उपयोग किया जा सकता है", - "Plugin.config.authAll" => "धारक", - "Plugin.config.authUser" => "उपयोगकर्ता", - "Plugin.config.authGroup" => "नामित विभाग", - "Plugin.config.authRole" => "अधिकार समूह", - "Plugin.Config.openWith" => "ओपन शैली", - "Plugin.Config.openWithDilog" => "आंतरिक संवाद", - "Plugin.Config.openWithWindow" => "एक नया पृष्ठ खोलें", - "Plugin.Config.fileSort" => "एक्सटेंशन संघ प्राथमिकता", - "Plugin.Config.fileSortDesc" => "बड़े उच्च प्राथमिकता खोलने के लिए एक्सटेंशन", - "Plugin.Config.fileExt" => "समर्थित फ़ाइल प्रारूप", - "Plugin.Config.fileExtDesc" => "प्लग-इन से जुड़े एक्सटेंशन", - "Plugin.tab.basic" => "मूल सेटिंग्स", - "Plugin.tab.auth" => "अनुमतियां", - "Plugin.tab.others" => "अन्य सेटिंग्स", - "Plugin.default.aceEditor" => "ऐस संपादक", - "Plugin.default.htmlView" => "वेब पेज पूर्वावलोकन", - "Plugin.default.picasa" => "पिकासा चित्र ब्राउज़िंग", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer खिलाड़ी", - "Plugin.auth.viewList" => "प्लगइन सूची", - "Plugin.auth.setting" => "प्लगइन सेटिंग", - "Plugin.auth.status" => "बंद करें", - "Plugin.auth.install" => "स्थापित करें / स्थापना रद्द करें", - "Explorer.UI.openWith" => "ओपन का चयन करें", - "Explorer.UI.openWithText" => "नोटपैड खोलने के लिए", - "Explorer.UI.appSetDefault" => "डिफ़ॉल्ट खुला सेट", - "Explorer.UI.appAwaysOpen" => "हमेशा इस फ़ाइल को खोलने के लिए चयनित प्रोग्राम का उपयोग", - "Explorer.UI.selectAppDesc" => "प्रोग्राम का चयन करें तो आप इस फ़ाइल को खोलने के लिए चाहते हैं", - "Explorer.UI.selectAppWarning" => "कृपया इस ऐप्लिकेशन का चयन करें!", - "Explorer.UI.appTypeSupport" => "समर्थित", - "Explorer.UI.appTypeAll" => "सभी एप्लिकेशन", - "kodApp.oexe.edit" => "प्रकाश आवेदन संपादित करें", - "kodApp.oexe.open" => "प्रकाश के आवेदन खोलें" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/hr/about.html b/plugin/document/kod/config/i18n/hr/about.html deleted file mode 100644 index 1acdb1aa2..000000000 --- a/plugin/document/kod/config/i18n/hr/about.html +++ /dev/null @@ -1,33 +0,0 @@ - 
                  -
                  KODExplorer jest Što je?
                  -

                  KODExplorer je open source web-based upravljanje dokumentu, kod urednika. Ona pruža svojevrsnu klasični Windows korisničko sučelje, skup online upravljanje dokumentima, datoteka pregled, uređivanje, upload, download, unzip online reprodukcije glazbe. Omogućuje postizanje izradu web stranica izravno u pregledniku, izvornog koda datoteka pregled, i implementaciju vlasnika stranice i lokalnu operaciju kao jednostavan, brz i siguran doživljaj.

                  -

                  - dizajn -

                  -

                  klasične tradicije, težnja za inovacije, kako bi osigurao korisnik sa praktičan, siguran i jednostavan za korištenje online sustav za upravljanje oblak.

                  -

                  kad god (kada), gdje (gdje), ima na internetu, kad god želite (želite) to je vaš alat za upravljanje (4W politika).

                  -

                  - korisnički orijentirani -

                  -

                  trenutno KODExplorer sustav za upravljanje se uglavnom nalaze u osobnom oblaku hosting, mala poduzeće za upravljanje oblak resursa, upravljanje mrežni disk, upravljanje malim i srednjim stranicama. Web Developer & Master (veterani): on-line urednik, stisnut sigurnosna kopija, implementacije, klasična operacija Windows sučelje, lako da biste započeli i dobili osloboditi od SSH domaćina, FTP naredbe složeni dosadno operacije.

                  -

                  osobni privatni oblak (rookie): Upravljanje mrežni disk resursa, ista operacija klasični Windows sučelje, možete staviti glazbu za pretraživanje mrežnog pogona, screen datoteke, učitavanje i preuzimanje brzo i jednostavno.

                  -
                  - -
                  -
                  Značajke
                  -

                  sveobuhvatno upravljanje dokumentima, moćan online file editor

                  -

                  gdje god se nalazili, možete upravljati datotekama i online zabavu, online pisanje koda! Jednako prikladni za uporabu kao operativnog sustava.

                  -

                  opsežna lokalno iskustvo transplantacija operacija u redu, drag, izbor kutija, kratice, pretraživanje datoteka (sadržaj pretraživanje) ......

                  -

                  izbor kutija, povuci-pokret, povucite i ispustite prijenos, on-line editor, video player, dekompresiju. Cijeli ajax performanse jamstvo i iskustvo!

                  -

                  svaki brzom bešavne veza, u dijaloškom obliku, upravljačke funkcije multi-zadatak

                  -

                  urednik podržava multi-dokument, podršku ZendCoding html, CSS, JS veća kodiranje učinkovitost!

                  -

                  savršen kineski podrška, pomiješano riješiti razne situacije;

                  -
                  - -
                  -
                  open source tehnologija usvajanje
                  -

                  1.Jquery:jpuery (dodatak: Hotkeys.ztree.contentmenu) .js glavna razvojni okvir. Rad Dom, BOM rada, CSS rad i Ajax paket

                  -

                  2.ArtDialog:lijep dizajn, snažan preglednik kompatibilnosti dijaloški widget. Dakle, pop-up ručka, događaje, a prijenos podataka kako bi dobili bolji jedinstvenog upravljanja

                  -

                  3.Ztree:popis kontrolu stablo, skalabilnost je vrlo jaka stabla upravljanje podatcima widget

                  -

                  4.codemirror:šifra urednik js dodataka, podržava razne programskih jezika za označavanje

                  -

                  5.zendcoding:podršku hTML koda brzo pisati dodaci. Pojednostavljuje definiciju kod je napisano. Jednostavna izrada

                  -

                  6.less:učinkovit, funkcijski model razvoja css poboljšati prednji kraj CSS stilova višekratnog , Jednostavna izrada

                  -

                  7.SWFUpload:flash datoteka upload

                  -

                  8 .CMP4:vrlo dobar flash player plugin medijske datoteke, podršku za streaming medija, popularna glazba video alat za reprodukciju. Podrška za kožu, vrlo podesiv postavke. Dinamički popis xml napunjen. mms streaming medija, rstp open source licence reprodukcija podrška medija

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/hr/edit.html b/plugin/document/kod/config/i18n/hr/edit.html deleted file mode 100644 index 025282de8..000000000 --- a/plugin/document/kod/config/i18n/hr/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  Bogata funkcionalnost

                  -

                  Kod automatski traži

                  -

                  Multi-tema: Odaberite svoj omiljeni programski stil

                  -

                  Custom font: za uporabu na scenu

                  -

                  Multi uređivanje pokazivač, blok uređivanje online iskustva u programiranju usporediti s uzvišen

                  -

                  Blok preklop, proširiti, omotajte

                  -

                  Podrška za više kartica, povucite prebacivanje slijed;

                  -

                  Održavanje više dokumenata, pronaći i zamijeniti; povijest;

                  -

                  Auto-kompletna [] {} (), '' ''

                  -

                  Online real-time pregled koji vam omogućuje da padne u ljubavi s on-line programiranje!

                  -

                  zendcodeing podršku, pisanje koda osamdeset

                  -

                  Dodatne mogućnosti na čekanju za svoj otkriće ......

                  -
                  -
                  -

                  150 vrste koda označavanje

                  -

                  Savjet: HTML, JavaScript, CSS, manje, Sass, scss

                  -

                  web development: PHP, Perl, Python, Ruby, elang, go ...

                  -

                  Tradicionalni jezici: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Ostalo: smanjenje, ljuska, SQL, lua, XML, yaml ...

                  -
                  -
                  -
                  -
                  -

                  Prečac Akcija

                  -
                   Uobičajene kratice: 
                  - Ctrl + S za spremanje 
                  - Ctrl + A Odaberi sve Ctrl + X Cut 
                  - ctrl + c ctrl + v paste copy 
                  - ctrl + z Undo Undo Anti Ctrl + Y 
                  - ctrl + f pronaći zamjenski Ctrl + F + F 
                  - win + alt + 0 kolaps sve win + alt + shift + 0 Proširi sve 
                  - esc [pretragu Exit otkazao automatski traži ...] 
                  - Ctrl-Shift-a Pregled 
                  - Ctrl-Shift-e pokazuju i zatvori funkcija 
                  -
                  -
                   Odaberite: 
                  - Miš nadstrešnica - drag 
                  - shift + home / kraj / gore / lijevo / dolje / desno 
                  - shift + PageUp / PageDown okrenuti prema gore i dolje da biste odabrali 
                  - CTRL + SHIFT + home / završetka tekućeg kursor na početku i na kraju 
                  - alt + miša za povucite izbor blok 
                  - ctrl + alt + g serije odaberite i unesite trenutni urednika multi-tab 
                  -
                  -
                   Pokazivač: 
                  - home / kraj / gore / lijevo / dolje / desno 
                  - ctrl + home / kraj pomicanje kursora u glavu dokumenta / rep 
                  - ctrl + p Skoči na odgovarajući tag 
                  - PageUp / PageDown kursora gore i dolje 
                  - alt + lijevo / desno za pomicanje na vrhu liniju 
                  - Shift + lijevi / desni pokazivač na kraj linije i 
                  - Ctrl + L skočiti na određeni red 
                  - ctrl + alt + gore / dolje (dolje) povećavaju se pokazivač 
                  -
                  -
                   Edit: 
                  - ctrl + / Komentari & Ukloni komentar ctrl + alt + opravdanog 
                  - Kartica stol pomak poravnanja + stol ukupni napredak stol 
                  - Obriši cijelu liniju ctrl + d 
                  - ctrl + delete izbrisati redak na desnoj riječi 
                  - Ctrl / Shift + backspace obrisati riječ slijeva 
                  - alt + shift + gore / dolje i dodao da je linija kopiranja (ispod) ravnini 
                  - alt + delete izbrisati sadržaj desno od kursora 
                  - alt + gore / dolje na trenutnoj liniji i liniji (pored linije razmjene) 
                  - Ctrl + Shift + D redaka kopirati i dodati na sljedeće 
                  - ctrl + delete izbrisati pravo riječi 
                  - ctrl + shift + z pretvaraju u mala slova 
                  - Ctrl + U odabrani tekst u velika slova 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/hr/help.html b/plugin/document/kod/config/i18n/hr/help.html deleted file mode 100644 index 7725ef34a..000000000 --- a/plugin/document/kod/config/i18n/hr/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  upravljanje datotekama
                  -

                  Odabir datoteka: radio, miš nadstrešnica, pomak izbor, ctrl odabrani na slučajan, tipkovnice gore i dolje, dom, kraj odabira.

                  -

                  File operation: Nakon odabira datoteke možete kopirati, izrezati, brisanje pregledali svojstva kompresije, preimenovati, otvoren za pregled i druge radnje ......

                  -

                  File Upload: upload više datoteka serije, HTML5 povuci upload (povuci da se jednostavno prenijeti prozora, povucite i ispustite podršku za mape)

                  -

                  Pravo funkcija: Desni datoteka, mapa, desno, još odmah nakon izborne operacije, desktop, desni, desno katalog stablo, pravo vezani prečaci izbornik
                  - (Odaberi sve - Copy - cut - paste - Brisanje - preimenovati, podesite ......)

                  -

                  File Browser: Popis modu, ikona način, dvaput kliknite na pod-mape; adresnoj traci rad, otvorite mapu za snimanje contrarian zapis (naprijed i nazad)

                  -

                  Podrška povucite i ispustite: Provjerite otpor, izrezati u postizanju određenog funkciju mape

                  -

                  Tipke: brisanje brisanje, ctrl + A Odaberi sve Ctrl + C za kopiranje, + X Cut, pretraživanje datoteka (sadržaj pretraživanje) ctrl

                  -
                  -
                  -
                  Prikaz datoteka
                  -

                  File pregled: pregled sadržaja za uređivanje teksta datoteke i uštede; HTML, SWF datoteka pregled,

                  -

                  Pregled slike: automatsko generiranje sličica, slike slide show;

                  -

                  Audio reprodukcija: igrati online glazbe i video datoteka, podrška MP3, WMA, MID, AAC, WAV, MP4,

                  -

                  Video: online video reprodukciju, podržani formati: FLV, F4V, 3gp

                  -

                  ureda: Online Prikaz, podržani formati: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Prečaci
                  -

                  Ulazak u otvoreni

                  -

                  Ctrl + A Odaberi sve

                  -

                  Ctrl + C za kopiranje odabranog

                  -

                  ctrl + v za lijepljenje

                  -

                  Ctrl + X Cut

                  -

                  Ctrl + F za traženje trenutni direktorij

                  -

                  alt + n New File

                  -

                  alt + m Nova mapa

                  -

                  brisanje Izbriši odabrano

                  -

                  backspace Natrag

                  -

                  Ctrl + Backspace naprijed

                  -

                  f2 Preimenuj odabrani (mapa)

                  -

                  home / kraj / gore / dolje / lijevo / desno za odabir datoteke

                  -

                  svakom tipkom Provjerite pritisnuti prvo slovo karaktera datoteka i mapa odabranu automatski ciklus

                  -
                  diff --git a/plugin/document/kod/config/i18n/hr/main.php b/plugin/document/kod/config/i18n/hr/main.php deleted file mode 100644 index 3a4145f85..000000000 Binary files a/plugin/document/kod/config/i18n/hr/main.php and /dev/null differ diff --git a/plugin/document/kod/config/i18n/hu/about.html b/plugin/document/kod/config/i18n/hu/about.html deleted file mode 100644 index 4cda5fcc8..000000000 --- a/plugin/document/kod/config/i18n/hu/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer IS Mi az?
                  -

                  KODExplorer egy nyílt forráskódú webes online dokumentum menedzsment, kód szerkesztő. Ez egy fajta klasszikus Windows felhasználói felület, egy, az online dokumentumkezelés, az előnézeti kép, szerkesztés, feltöltés, letöltés, csomagolja ki az online zene lejátszása. Lehetővé teszi, hogy elérjék webfejlesztés közvetlenül a böngészőből, forráskód előnézeti kép, és telepíteni a telek tulajdonosa, és a helyi művelet egyszerű, gyors és biztonságos élményt.

                  -

                  - tervezés -

                  -

                  klasszikus hagyomány, a törekvés az innováció, hogy a felhasználók kényelmes, biztonságos és könnyen használható, online felhő rendszer.

                  -

                  amikor (ha), ahol (amikor), van az interneten, amikor csak akarja (akarja), akkor az eszköz (4W politika).

                  -

                  - felhasználó-orientált -

                  -

                  jelenleg KODExplorer rendszer főként az személyes felhő tárhely, kis vállalati felhő erőforrás menedzsment, hálózati merevlemez menedzsment, menedzsment kis- és közepes méretű helyekre. Web Developer & Master (veteránok): online szerkesztő, tömörített mentés, telepítését, klasszikus Windows felület működését, könnyű elkezdeni, és megszabadulni a fogadó SSH, FTP parancs összetett unalmas műveleteket.

                  -

                  személyes privát felhő (újonc): Management hálózati merevlemez erőforrásokat, ugyanazon klasszikus Windows felület működése, akkor tegye a zene böngészhetünk hálózati meghajtó, képernyő fájlok feltöltése és letöltése gyors és egyszerű.

                  -
                  - -
                  -
                  Jellemzők
                  -

                  átfogó dokumentum menedzsment, erőteljes online file editor

                  -

                  bárhol is van, akkor a fájlok kezelésére, és az online szórakozás, online írásban kódot! Csakúgy, mint alkalmas, mint az operációs rendszer.

                  -

                  kiterjedt helyi tapasztalatok transzplantáció jobb, drag, kiválasztás doboz, rövidítéseket fájl keresés (search tartalom) ......

                  -

                  kiválasztás doboz, drag-mozgás, drag and drop feltöltését, online szerkesztő, videó lejátszó, kibontására. Teljes ajax garancia teljesítmény és élmény!

                  -

                  egyes funkciók közvetlen zökkenőmentes kapcsolat; dialógus formájában, multi-task menedzsment funkciókat

                  -

                  szerkesztő támogatja a multi-dokumentum támogatása, ZendCoding html, css, js nagyobb kódolási hatékonyság!

                  -

                  tökéletes kínai támogatást, felcserélt megoldja a különböző helyzetekben;

                  -
                  - -
                  -
                  nyílt forráskódú technológia elfogadását
                  -

                  1.Jquery:jpuery (bővítmény: Hotkeys.ztree.contentmenu) .js általános fejlesztési keret. Működése a Dom, BOM üzemeltetés, css működés, és az Ajax csomag

                  -

                  2.ArtDialog:egy szép design, erős böngésző kompatibilitás párbeszéd widget. Ezért a pop-up fogantyú, események és adattovábbítás, hogy jobban egységes kezelése

                  -

                  3.Ztree:lista fa ellenőrzés, a skálázhatóság nagyon erős fa adatkezelési widgetet

                  -

                  4.codemirror:egy kód szerkesztő js plugins, támogatja a különböző programozási nyelvek kiemelve

                  -

                  5.zendcoding:támogatási html kódok gyors írási plug-inek. Leegyszerűsíti a kód meghatározása van írva. Egyszerű összeállítás

                  -

                  6.less:hatékony, funkcionális css fejlesztési modell javítására elülső css stíluslapok újrafelhasználhatóságot . Egyszerű összeállítás

                  -

                  7.SWFUpload:flash file feltöltés

                  -

                  8 .CMP4:egy nagyon jó flash player plugint médiafájlok, támogatja a streaming média, népszerű zenei videó lejátszási eszköz. Támogatás a bőr, jól konfigurálható beállítások. Dinamikus lista xml betöltve. mms streaming média, RSTP nyílt forráskódú licenc média lejátszás támogatása

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/hu/edit.html b/plugin/document/kod/config/i18n/hu/edit.html deleted file mode 100644 index 90295d722..000000000 --- a/plugin/document/kod/config/i18n/hu/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  gazdag funkcionalitást

                  -

                  Kód automatikusan értesíti

                  -

                  Multi-téma: válaszd ki a kedvenc programozási stílus

                  -

                  Egyéni Font: használatra jelenet

                  -

                  Multi kurzor szerkesztő, blokkszerkesztő internetes programozási tapasztalat hasonló a fenséges

                  -

                  Blokk összecsukható, bővíteni; csomagolja

                  -

                  Támogatás több lapot húzzon a kapcsolási sorrend;

                  -

                  Fenntartása több dokumentumot, keresse meg és cserélje, története;

                  -

                  Auto-teljes [] {} (), '' ''

                  -

                  Online valós idejű előnézet, amely lehetővé teszi, hogy beleszeret online tartalmak!

                  -

                  zendcodeing támogatás kódolni nyolcvan

                  -

                  További funkciók várja a felfedezés ......

                  -
                  -
                  -

                  150 féle kód kiemelés

                  -

                  Tipp: HTML, JavaScript, CSS, kevesebb, Sass, SCSS

                  -

                  webfejlesztés: PHP, Perl, Python, Ruby, elang, menj ...

                  -

                  Hagyományos nyelvek: Java, C, C ++, C #, Actionscript, VBScript ...

                  -

                  Egyéb: árleszállítás, héj, sql, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Shortcut Action

                  -
                   Általánosan használt hivatkozások: 
                  - ctrl + s menteni 
                  - Ctrl + A Minden kijelölése Ctrl + x Cut 
                  - ctrl + c ctrl + v beillesztés másolás 
                  - ctrl + z Undo Anti ctrl + y 
                  - ctrl + f találni csere ctrl + f + f 
                  - win + alt + 0 összeomlását minden győzelem + alt + shift + 0 összes kibontása 
                  - ESC [Kilépés keresés automatikusan törlésre kéri ...] 
                  - ctrl-shift-ek megtekintése 
                  - ctrl-shift-e mutatják & Close funkció 
                  -
                  -
                   Válasszon: 
                  - Egér sátor - drag 
                  - shift + home / end / fel / jobbra / le / jobbra 
                  - shift + PageUp / PageDown flip fel és le, hogy kiválassza 
                  - ctrl + shift + home / végén a jelenlegi kurzort az elején és végén 
                  - alt + egér segítségével húzza a blokk kiválasztás 
                  - ctrl + alt + g batch válassza ki és adja meg a jelenlegi több lap szerkesztője 
                  -
                  -
                   kurzor: 
                  - home / end / fel / jobbra / le / jobbra 
                  - ctrl + home / end mozgassa a kurzort a dokumentum fej / farok 
                  - ctrl + p Ugrás illő tag 
                  - PageUp / PageDown kurzor fel és le 
                  - alt + bal / jobb kurzor a felső sorban 
                  - shift + bal / jobb kurzor a sor végére és 
                  - ctrl + l ugorhat egy adott sorban 
                  - ctrl + alt + a fel / le (lásd alább) növeli a kurzor 
                  -
                  -
                   edit: 
                  - ctrl + / Megjegyzés és vedd ctrl + alt + indokolt 
                  - asztal lapján igazítás shift + asztal átfogó fejlődéséhez asztal 
                  - törléséhez törölje a sort törlöd ctrl + d 
                  - ctrl + delete, hogy törölje a sorban a megfelelő szót 
                  - ctrl / shift + backspace törli a szót a bal oldalon 
                  - alt + shift + fel / le, és hozzáadjuk a másolási sor (lásd alább) sík 
                  - alt + delete törölni a tartalmát a jobb kurzor 
                  - alt + fel / le a jelenlegi, és a vonal (következő sorban csere) 
                  - ctrl + shift + d sort másolni, és hozzáadjuk a következő 
                  - ctrl + delete törli a szótól jobbra 
                  - ctrl + shift + u kisbetűssé 
                  - Ctrl + U A kijelölt szöveg nagybetűs 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/hu/help.html b/plugin/document/kod/config/i18n/hu/help.html deleted file mode 100644 index 4f1b7d0d3..000000000 --- a/plugin/document/kod/config/i18n/hu/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  fájlkezelés
                  -

                  Fájl kiválasztása: rádió, egér sátor, shift-választást, ctrl véletlenszerűen kiválasztott, a billentyűzet fel és le, Home, End kiválasztása.

                  -

                  Fájlművelet: Miután kiválasztotta a fájlt, akkor másolása, kivágása, törölni, tulajdonságainak megtekintéséhez tömörítés, átnevezni, nyitott megtekintése és egyéb műveletek ......

                  -

                  Fájl feltöltése: Több fájl feltöltése tétel; HTML5 drag feltöltés (húzza a zökkenőmentes feltöltését ablak, drag and drop támogatás mappák)

                  -

                  Jobb funkció: a jobb fájlt, mappát, jobb, több joga a választás után működés, desktop, jobb, jobb Könyvtárfánál jobboldali kötésű menüelemeinek
                  - (Összes kiválasztása - Másolás - Cut - beillesztés - Törlés - Átnevezés, ......)

                  -

                  File Browser: List mód, ikon módban kattintson duplán al-mappák címsorába működés nyissa meg a mappát rekord contrarian rekord (előre és hátra)

                  -

                  Támogatás drag and drop: Check húzza, vágja, hogy elérjék a megadott mappába funkció

                  -

                  Billentyűparancsok: törlés törlés, ctrl + A Select All, ctrl + C billentyűkombinációt, + X Cut, fájlkereső (search tartalom) ctrl

                  -
                  -
                  -
                  fájl megtekintése
                  -

                  Fájl megtekintése: nézd meg a tartalmát egy szöveges fájl szerkesztését és mentését, html, swf fájl előnézet,

                  -

                  A kép megtekintése: automatikus generációs miniatűrök, kép slide show;

                  -

                  Audio lejátszás: játszani online zenei és videó fájlokat, MP3, WMA, közepes, aac, wav, mp4,

                  -

                  Videó: online video lejátszás, támogatott formátumok: FLV, F4V 3gp

                  -

                  office: office Online Preview, támogatott formátumok: doc, docx, ppt, pptx xls, xlsx

                  -
                  -
                  -
                  parancsikonok
                  -

                  adja megnyitása

                  -

                  Ctrl + A Az összes kijelölése

                  -

                  ctrl + c másolni a kijelölt

                  -

                  ctrl + V beillesztés

                  -

                  ctrl + x Cut

                  -

                  ctrl + f keresni az aktuális könyvtárban

                  -

                  alt + n Új fájl

                  -

                  alt + m New Folder

                  -

                  Törlés Kijelölt

                  -

                  backspace Vissza

                  -

                  ctrl + backspace előre

                  -

                  f2 átnevezése kiválasztott (mappa)

                  -

                  home / end / fel / le / balra / jobbra a fájl kiválasztásához

                  -

                  Bármely gomb Ellenőrizze, hogy nyomja meg az első betű a karakter fájlok és mappák kiválasztott automatikus ciklus

                  -
                  diff --git a/plugin/document/kod/config/i18n/hu/main.php b/plugin/document/kod/config/i18n/hu/main.php deleted file mode 100644 index ccee85293..000000000 --- a/plugin/document/kod/config/i18n/hu/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Kérjük, válassza ki a fájlt ...", - "path_api_select_folder" => "Kérjük, válasszon ki egy mappát ...", - "path_api_select_image" => "Kérjük, válasszon ki egy képet ...", - "share_can_upload" => "feltöltés engedélyezése", - "move_error" => "Az áthelyezés sikertelen", - "setting_basic" => "Alapbeállítások", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Nyílt animáció", - "recycle_open_if" => "Nyissa meg a Lomtár", - "recycle_open" => "nyílt", - "setting_user_recycle_desc" => "A törlés után törölni kell a fizikai törlést", - "setting_user_animate_desc" => "Ablak nyitva és egyéb animáció", - "setting_user_sound_desc" => "Működési hang", - "setting_user_imageThumb" => "Kép bélyegképek", - "setting_user_imageThumb_desc" => "Jobb böngészési élmény a megnyitás után", - "setting_user_fileSelect" => "Nyissa meg a fájlikon ellenőrzését", - "setting_user_fileSelect_desc" => "Fájl ikon bal kulcs ellenőrzés, jobb gombbal kattintson a menü parancsikonra", - "qrcode" => "URL QR-kód", - "theme_mac" => "Mac minimalista fehér", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "Metro világoszöld", - "theme_metro_purple" => "Metro elegáns lila", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro világos narancssárga", - "theme_alpha_image" => "Bright - repülő", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Egyéni", - "theme_diy_title" => "Egyedi Témabeállítások", - "theme_diy_background" => "háttér", - "theme_diy_image" => "kép", - "theme_diy_color_blur" => "gradiens színű", - "theme_diy_image_blur" => "képéletlenség", - "theme_diy_image_url" => "fényképek címet", - "theme_diy_color_start" => "kezdőszín", - "theme_diy_color_end" => "vége Color", - "theme_diy_color_radius" => "Gradient szög", - "system_role_admin_set" => "Az adminisztrátorok minden jog, beállítás nélkül!", - "login_error_user_not_use" => "Felhasználói le van tiltva! Kérjük, forduljon a rendszergazda", - "login_error_kod_version" => "verzió konfliktus", - "login_error_role" => "Nézetjogosultságok csoport nem létezik, forduljon a rendszergazda", - "no_permission_group" => "Te nem ebbe a csoportba!", - "no_permission_write" => "A könyvtár nem rendelkezik írási jogosultsággal", - "user" => "használó", - "save_as" => "Mentés", - "check_update" => "frissítés", - "keyboard_type" => "Keyboard Mode", - "font_family" => "betűtípusok", - "code_mode" => "szintaxis kiemelés", - "path_can_not_share" => "Támogatja csak megoszthatja saját dokumentumait!", - "path_can_not_action" => "Ez a könyvtár nem támogatja ezt a műveletet!", - "wap_page_pc" => "PC verzió", - "wap_page_phone" => "mozgó", - "image_size" => "A kép mérete", - "no_permission_action" => "Nem kell ezt az engedélyt, vegye fel a kapcsolatot a rendszergazda!", - "path_is_root_tips" => "Eljött a gyökér könyvtárba!", - "kod_group" => "szervezet", - "my_kod_group" => "Az osztályon vagyok", - "space_tips_default" => "(GB) 0 nincs korlátozva", - "space_tips_full" => "korlátozása nélkül", - "space_size" => "tér", - "space_size_use" => "Helykihasználás", - "space_is_full" => "Nincs elég hely maradt, kérjük, lépjen kapcsolatba a rendszergazdával!", - "system_open_true_path" => "Sikeresen megnyitotta a fájlkezelő!", - "group_role_error" => "Szerepe engedélyeket hiba (nincs jogosultság beállítások)", - "group_role_error_admin" => "Nem megfelelő engedélyek", - "markdown_content" => "Tartalomjegyzék", - "system_group" => "Felhasználók és osztályok", - "system_group_edit" => "Osztályvezetés", - "system_group_role" => "Role identitás", - "system_group_create" => "Új részleg", - "system_group_name" => "Osztály neve", - "system_group_father" => "Kiváló osztály", - "system_group_add" => "Alkategória hozzáadása", - "system_group_remove" => "Távolítsa el az osztályt", - "system_group_remove_tips" => "Biztos benne, hogy törli az osztályt?
                  A felhasználó rész törlésének megszüntetése után az alszektor átkerült a gyökérszektorba", - "system_group_select" => "Válasszon megyét", - "system_group_select_result" => "A tagok tartoznak a következő ágazatokban", - "system_role_admin_tips" => "Megjegyzések: A rendszergazdák nem jogosultak ellenőrzésre", - "system_member_action" => "User Management", - "system_member_add" => "új felhasználó", - "system_member_role" => "Engedély szerepek", - "system_member_role_select" => "választ", - "system_member_password_tips" => "Ne töltse nem módosítható", - "system_set_home_path" => "Egyedi Katalógus", - "system_set_home_path_tips" => "Az alapértelmezett könyvtár üres", - "system_member_group" => "Ahol az osztály", - "system_member_group_edit" => "Szerkesztőség", - "system_member_remove" => "Felhasználó törlése", - "system_member_remove_tips" => "Törlésének megerősítése felhasználó?
                  eltávolítása után a felhasználó könyvtár törlődnek teljesen", - "system_member_set_role" => "A változások érvényesítéséhez a kiválasztott felhasználói csoport jogosultságok?", - "system_member_remove_group" => "Határozza meg a kiválasztott felhasználó eltávolításra kerül ebből a csoportból?", - "system_member_import" => "Tömeges hozzáadás", - "system_member_import_desc" => "Egy felhasználó soronként,
                  már létezik, az is csendben figyelmen kívül", - "system_member_use" => "engedélyezése", - "system_member_unuse" => "Kikapcsolja", - "system_member_space" => "A felhasználói terület méretének beállítása ", - "system_member_space_tips" => " A felhasználói terület méretének beállítása ", - "system_member_space_number" => " Számnak kell lennie!", - "system_member_group_config" => "Batch beállítás részleg", - "system_member_group_remove" => "Eltávolítva az osztálytól", - "system_member_group_insert" => "Add hozzá az osztályhoz", - "system_member_group_reset" => "Állítsa vissza az osztályt", - "system_member_group_error" => "Osztály hiba", - "system_group_action" => "Osztályvezetés", - "system_role_add" => "Szerep hozzáadása Identity", - "system_role_read" => "Csak olvasható", - "system_role_write" => "Tud írni és olvasni", - "system_setting_root_path" => "Root hozzáférés", - "system_setting_root_path_desc" => "Csak egy rendszergazda hozzáférhet az összes könyvtár, más jogi csoportok felhasználók csak látni a saját felhasználói könyvtár. Ha azt szeretnénk, hogy kapcsolja be vagy ki
                  rendszergazda hozzáférés más könyvtárak, akkor módosíthatja a php open_basedir anti-cross-site paraméterekmeghatározott", - "system_group_role_title" => "Osztályügyi hatósági szerepek kezelése", - "system_group_role_remove" => "OK a részleg szerepkörének törléséhez", - "system_group_role_style" => "stílus", - "system_group_role_display" => "vajon", - "system_group_role_display_desc" => "Állítsa be, hogy megjelenjen-e a részleg felhasználói jogosultsága", - "role_type_name_read" => "olvas", - "role_type_name_read:list" => "File List", - "role_type_name_read:info" => "Fájl (mappa) ingatlanok megtekintése, Mappa keresése", - "role_type_name_read:copy" => "Fájl másolása", - "role_type_name_read:preview" => "Fájl előnézet (képek, dokumentumok, audio és video)", - "role_type_name_read:download" => "Fájl (mappa) Letöltés", - "role_type_name_write" => "ír", - "role_type_name_write:add" => "Hozzon létre egy fájlt (mappa), kivonat a tömörített fájlt", - "role_type_name_write:edit" => "Mentse el a fájlt szerkeszteni", - "role_type_name_write:change" => "Átnevezése, állítsa be a könyvtár struktúrát", - "role_type_name_write:upload" => "Fájl (mappa) feltöltés, távletöltéssel", - "role_type_name_write:remove" => "Fájl (mappa) törléséhez, vágott", - "group_guest" => "látogatók", - "group_guest_desc" => "Ön nem tagja a szervezeti egységnek,
                  csak az [osztályon megosztott könyvtárhoz] férhet hozzá a következő tartalomhoz, csak olvasható engedélyekhez.", - "group_role_lebel_desc" => "Ön ezen osztály tagja,
                  Az osztályon belüli összes dokumentum A rendszergazda által fenntartott valamennyi jog", - "button_save_and_add" => "Mentés és továbbra is hozzá", - "path_cannot_search" => "A könyvtár nem támogatja a keresést!", - "not_support" => "Nem támogatott!", - "group_not_exist" => "Felhasználói csoport nem létezik!", - "upload_clear_all" => "Tiszta minden", - "upload_clear" => "Tiszta Befejezett", - "upload_setting" => "beállítása", - "upload_tips" => "Felhasználás szelet feltöltés, már nem vonatkoznak a php.ini határt; ajánlott króm mappát drag and drop feltöltési tapasztalat", - "upload_exist" => "Fájl az azonos nevű", - "upload_exist_rename" => "átnevezése", - "upload_exist_replace" => "fedő", - "upload_exist_skip" => "Skip", - "upload_add_more" => "Tömeges hozzáadás", - "more" => "több", - "system_setting" => "Rendszerbeállítások", - "openProject" => "Nyissa meg a projektet szerkesztő", - "url_download" => "Letöltés", - "url_link" => "URL", - "app_type_link" => "parancsikonok", - "createLink" => "Parancsikon létrehozása", - "createLinkHome" => "Elküldött, hogy az asztali parancsikon", - "createProject" => "Hozzátéve, hogy a szerkesztő projekt", - "only_read" => "Csak olvasható", - "only_read_desc" => "A könyvtár nem rendelkezik írási engedéllyel
                  lehet engedélyeket beállítani ehhez a könyvtárhoz a kiszolgálón", - "not_read" => "olvashatatlan", - "explorerNew" => "kod kapcsolat", - "zip_download_ready" => "Tömörítés után automatikusan letölti, kérem várjon ...", - "set_background" => "Beállítás Desktop Wallpaper", - "share" => "részvény", - "my_share" => "Az én részem", - "group_share" => "Csoport külső megosztása", - "share_edit" => "Részvény szerkesztése", - "share_remove" => "Megosztás törlése", - "share_remove_tips" => "Biztosan törölni szeretné a megosztást? A nyilvános kapcsolat érvényét veszti.", - "share_path" => "Ossza meg az utat", - "share_title" => "Erőforrás megosztás", - "share_name" => "Ossza meg a címet", - "share_time" => "lejárata", - "share_time_desc" => "Null nincs beállítva", - "share_password" => "kivonat jelszó", - "share_password_desc" => "Üres jelszó nincs beállítva", - "share_cancle" => "megosztás visszavonása", - "share_create" => "Hozzon létre egy nyilvános kapcsolat", - "share_url" => "megosztott Cím", - "share_not_download" => "Letöltés tilalmat", - "share_not_download_tips" => "Megosztó betiltották letöltés!", - "share_code_read" => "kód olvasó", - "share_save" => "A beállítások mentése", - "share_error_param" => "Paraméter hiba!", - "share_error_user" => "Felhasználó adatai Hiba!", - "share_error_sid" => "Megosztás nem létezik!", - "share_error_time" => "Akkor túl későn, a részvények lejárt!", - "share_error_path" => "Megosztott fájl nem létezik, akkor az törlődik, vagy eltávolították azt!", - "share_error_password" => "Hibás jelszó!", - "share_error_show_tips" => "Ez a típus nem támogatja az előnézeti kép!", - "share_view_num" => "Nézettség:", - "share_download_num" => "Letöltés:", - "share_open_page" => "A megosztott oldal", - "open_the_path" => "Írja könyvtár", - "recycle_clear" => "kuka ürítése", - "recycle_clear_success" => "Kuka ürítése siker!", - "recycle_clear_info" => "Biztos benne, hogy teljesen üres a szemetet?", - "fav_remove" => "Mégsem a gyűjtemény", - "remove_item" => "tételek", - "uploading" => "Feltöltés", - "upload_tips_more" => "Túl sok fájl, az ajánlás a tömörített feltöltés, majd csomagolja ki online!", - "uploading_move" => "Az egyesített átvitel ...", - "show_file" => "Új oldal előnézet", - "unknow_file_title" => "Fájl megnyitása Tipp!", - "unknow_file_tips" => "Nem támogatják az alkalmazás a fájl, akkor:", - "unknow_file_try" => "megpróbál", - "unknow_file_download" => "Töltse le a fájlt", - "unknow_plugin_search" => "Keresés kapcsolatos telepített alkalmazások", - "config_save_error_auth" => "Nem sikerült menteni a konfigurációt, az adminisztrátor megtiltotta ezt a kiváltságot!", - "config_save_error_file" => "Hiba, a fájl nem írható!", - "beautify_code" => "kód formázó", - "convert_case" => "Case átalakítás", - "convert_upper_case" => "Konvertált nagybetűs", - "convert_lower_case" => "Átváltva kisbetűs", - "editor_insert_time" => "Jelenlegi idő ", - "editor_md5" => " Md5 titkosítás ", - "editor_qrcode" => " String kétdimenziós kód ", - "editor_regx" => " Szabályos kifejezés tesztelés ", - "editor_chinese" => " Egyszerűbb konverzió ", - "editor_chinese_simple" => " Konvertálás egyszerűsített kínai nyelvre ", - "editor_chinese_traditional" => " Konvertálás hagyományos kínai nyelvre ", - "editor_base64" => "Base64 kodek ", - "editor_base64_encode" => " Base64 kódolás ", - "editor_base64_decode" => " Base64 dekódolás ", - "editor_url" => " URL-kodek ", - "editor_url_encode" => " URL kódolás ", - "editor_url_decode" => " URL dekódolás ", - "editor_unicode" => " Unicode kodek ", - "editor_unicode_encode" => " Unicode kódolás ", - "editor_unicode_decode" => " Unicode dekódolás", - "editor_tools_select_tips" => " Kérjük, válassza ki az átalakítani kívánt tartalmat!", - "editor_calc" => "Ingyenes számológép", - "shortcut" => "parancsikonok", - "use_free" => "Továbbra is használhatja az ingyenes verzió", - "learn_more" => "További", - "replace" => "Cserélje", - "selectAll" => "választ", - "reload" => "Reload", - "about" => "tovább", - "complete_current" => "Az automatikus kiegészítés az aktuális", - "view" => "kilátás", - "tools" => "szerszám", - "help" => "Segítség", - "not_exists" => "Nem létezik", - "group_role_fileDownload" => "Letöltések", - "group_role_share" => "részvény", - "users_share" => "megosztása", - "system_setting_save" => "Biztonsági beállítások", - "system_setting_menu" => "menü kezelése", - "system_name" => "Program neve", - "system_name_desc" => "Program logo cím", - "system_desc" => "Program leírás", - "path_hidden" => "Directory kizárások", - "version_not_support" => "A verzió nem támogatja, kérjük, keresse fel a hivatalos honlapon vásárolni a továbbfejlesztett változata!", - "version_not_support_number" => "Mivel a több korlátozás nem támogatja ezt a műveletet, kérem, vásárolni a továbbfejlesztett változata a hivatalos honlapján!", - "path_hidden_desc" => "Könyvtárak és fájlok alapértelmezés szerint nem jelenik meg, vesszővel elválasztva", - "new_user_folder" => "Az új felhasználó által létrehozott alapértelmezett könyvtár", - "new_user_folder_desc" => "Vesszővel elválasztva", - "new_user_app" => "Az új felhasználó által létrehozott alapértelmezett alkalmazás", - "new_user_app_desc" => "Alkalmazások Application Center, több vesszővel elválasztva", - "auto_login" => "A látogatók az automatikus bejelentkezés", - "auto_login_desc" => "Az alapértelmezett bejelentkezési felhasználóiguest/guestszámára; megnyitása után annak érdekében, hogy a felhasználó létezik", - "first_in" => "A bejelentkezés után az alapértelmezett", - "version_price_free" => "ingyenes", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Könyvtár nem írható, a könyvtárat és minden alkönyvtárat próbálja újra az író-olvasó!", - "menu_name" => "Menünév", - "menu_hidden" => "elrejt", - "menu_show" => "kijelző", - "menu_move_down" => "le", - "menu_move_up" => "fel", - "menu_move_del" => "töröl", - "menu_open_window" => "Új ablak megnyitása", - "menu_sub_menu" => "almenü", - "url_path" => "url címe", - "url_path_desc" => "url cím vagy js kód", - "no_permission_read" => "Nem jogosultsága olvasni!", - "no_permission_download" => "Nem rendelkezik engedéllyel a letöltéshez!", - "php_env_check" => "Működési környezet monitoring:", - "php_env_error" => "Hiányzik a Php könyvtár", - "php_env_error_ignore" => "Figyelmen kívül hagyja, és adja", - "php_env_error_version" => "PHP verziója nem lehet kevesebb, mint 5,0", - "php_env_error_path" => "nem írható", - "php_env_error_list_dir" => "A web szerver nyit a könyvtár lista funkció biztonsági okokból letiltja ezt a funkciót!hogyan?", - "php_env_error_gd" => "PHP GD nyitottnak kell lennie, különben a kódot, a miniatűr nem fog megfelelően működni", - "install_login" => "Használhatja a következő fiók bejelentkezési", - "install_enter" => "A rendszer", - "install_user_default" => "Administrator: {0} / (lent jelszót beállítani)
                  Átlagos felhasználói: {1}
                  Vendég felhasználók: {2}", - "login_root_password" => "Állítsa be a rendszergazdai jelszót", - "login_root_password_repeat" => "Jelszó megerősítés ismét", - "login_root_password_equal" => "A két jelszó nem egyezik!", - "login_root_password_tips" => "Beállított adminisztrátori jelszót!", - "forget_password" => "Elfelejtett jelszó", - "forget_password_tips" => "Elfelejtett adminisztrátori jelszó:
                  Kérjük jelentkezzen szerver törli ./data/system/install.lock vissza;

                  Nem rendszergazdai Elfelejtett jelszó:
                  Kérjük, lépjen kapcsolatba a rendszergazda gombot!", - "copyright_desc" => "Kodexplorer egy nagysikerű webes dokumentumkezelő rendszer, akkor csak a belső dokumentumkezelő vagy megosztott, is fel lehet használni a site menedzsment szerver, cserélje ki az FTP, még akkor is, webIDE közvetlenül online fejlődését. Azt is lehet programozni a második fejlesztési integrálni ezt a meglévő rendszerekkel.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango felhő • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango felhő • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, WebOS, webIDE, php filemanage, filemanage, Dao felhő, felhő mangó, dokumentumkezelő rendszerek, vállalati felhő lemez, felfedező ,, online dokumentáció, online Office, online irodai online CAD megtekintett online szerkesztő online szerkesztő", - "kod_meta_description" => "KodExplorer felhő Road (korábban mangó felhő) vezető szolgáltató a kormány / vállalati privát felhők és online dokumentumkezelő rendszer a személyes honlapok, vállalati privát felhő telepítések, hálózati tároló, online dokumentum, online irodai, hogy biztonságos és ellenőrzött, egyszerű és könnyen használat, magasan szabott privát felhő termékeket. A Windows stílusú felület, működési gyakorlat, anélkül, hogy alkalmazkodjanak a gyorsan kezdett, support száz népszerű online megtekintett fájl formátum lejátszását és szerkesztését környezetbarát, nagy teljesítményű, egy alkalommal próba, már nem elválaszthatatlan a privát felhő kínálatát.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Belépés", - "guest_login" => "Vendég Bejelentkezés", - "username" => "Bejelentkezés", - "userNickName" => "Felhasználó beceneve", - "password" => "jelszó", - "login_code" => "kódok", - "need_check_code" => "Bejelentkezés hitelesítési kódot nyitva", - "need_check_code_desc" => "A bejelentkezés után meg kell adnia az ellenőrző kódot.", - "setting_csrf_protect" => "Nyílt CSRF védelmet", - "setting_csrf_protect_desc" => "Miután nyitó típusú támadás hatékonyan védeni CSRF", - "login_rember_password" => "emlékszik jelszó", - "setting_show_root_group" => "Sorolja fel az összes osztályt", - "setting_show_root_group_desc" => "A fa könyvtár gyökérosztálya, hogy felsorolja-e az összes osztályt", - "setting_show_share_user" => "A felhasználók listája", - "setting_show_share_user_desc" => "A fa könyvtárának gyökérosztálya megtalálható az összes felhasználó megosztásához", - "setting_clear_user_recycle" => "A Lomtár kiürítése minden felhasználó számára", - "setting_clear_cache" => "A cache kiürítése", - "setting_icp" => "Szerzői vagy rekordszámú", - "setting_global_css" => "Egyedi globális css", - "setting_global_css_desc" => "Minden oldalak beilleszthet saját css", - "setting_global_html" => "Statisztikai kód HTML", - "setting_global_html_desc" => "Az összes lap kerül beillesztésre az e bekezdésben html kódot, a kód lehet helyezni a harmadik fél statisztikai", - "us" => "kodcloud.com", - "login_not_null" => "A felhasználónév és a jelszó nem lehet üres!", - "code_error" => "hibakódok", - "password_error" => "Felhasználónév vagy jelszó helytelen!", - "password_not_null" => "A jelszó nem lehet üres!", - "old_password_error" => "Régi jelszó rossz!", - "permission" => "Engedély!", - "permission_edit" => "jogosultságok módosításához", - "file_info_owner" => "tulajdonos", - "file_info_group" => "csoport", - "no_permission" => "Az adminisztrátor letiltotta ezt a kiváltságot!", - "no_permission_ext" => "Administrator betiltották az ilyen típusú fájl engedélyek", - "dialog_max" => "maximalizálása", - "dialog_min" => "Kis méret", - "dialog_min_all" => "minimalizálás", - "dialog_display_all" => "Minden ablak megjelenik", - "dialog_close_all" => "zárjon be minden", - "open" => "nyílt", - "others" => "más", - "open_with" => "Nyitva ...", - "close" => "közel", - "close_all" => "zárjon be minden", - "close_left" => "Zárja le a bal fül", - "close_right" => "Lapok bezárása jobbra", - "close_others" => "Bezár Egyéb", - "loading" => "Működés ...", - "warning" => "figyelmeztetés", - "getting" => "Szerezd meg a ...", - "sending" => "Adatátvitel ...", - "data_error" => "Data Error!", - "get_success" => "Get siker!", - "save_success" => "Sikeresen mentve!", - "success" => "sikeres működése", - "error" => "A művelet nem sikerült", - "error_repeat" => "A művelet nem sikerült, a név már létezik!", - "word_error" => "kudarc ", - "word_success" => " siker", - "system_error" => "Rendszerhiba", - "name" => "név", - "type" => "Típus", - "contain" => "tartalmaz", - "address" => "elhelyezkedés", - "size" => "méret", - "byte" => "byte", - "path" => "ösvény", - "action" => "üzemeltetési", - "create_time" => "Alkotó", - "modify_time" => "módosított", - "last_time" => "utolsó látogatás", - "sort_type" => "Rendezés", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "nyilvános könyvtár", - "system_path_not_change" => "System könyvtárba, nem lehet módosítani", - "file" => "akta", - "folder" => "Folder", - "copy" => "másolat", - "past" => "bot", - "clone" => "Készítsen másolatot", - "cute" => "nyírás", - "cute_to" => "Áthelyezés ...", - "copy_to" => "Másolás ...", - "remove" => "töröl", - "remove_force" => "teljesen távolítsa el", - "info" => "tulajdon", - "list_type" => "kilátás", - "list_icon" => "ikon tömb", - "list_list" => "lista elrendezés", - "list_list_split" => "oszlop mód", - "sort_up" => "növekedés", - "sort_down" => "csökkenő", - "order_type" => "Rendezés", - "order_desc" => "csökkenő", - "order_asc" => "növekvő", - "rename" => "átnevezése", - "add_to_fav" => "Hozzáadás a Kedvencekhez", - "search_in_path" => "Mappa keresés", - "add_to_play" => "Add a válogatásodhoz", - "manage_fav" => "Kedvencek kezelése", - "refresh_tree" => "Frissítés könyvtárfába", - "manage_folder" => "Directory Management", - "close_menu" => "menü bezárása", - "zip" => "Hozzon létre egy tömörített csomagot", - "unzip" => "Kivonat ...", - "unzip_folder" => "Csomagold ki egy mappába", - "unzip_this" => "Kivonat a jelenlegi", - "unzip_to" => "Kivonat ...", - "zipview_file_big" => "A fájl túl nagy, majd csomagolja ki a megtekintett működését!", - "clipboard" => "Részletek vágólap", - "clipboard_clear" => "üres vágólap", - "full_screen" => "Full Screen", - "folder_info_item" => "tételek", - "folder_info_item_select" => "A kiválasztott", - "file_load_all" => "Kattintson duplán betöltéséhez ......", - "tips" => "azonnali", - "ziping" => "Tömörítése ...", - "unziping" => "Kibontás ...", - "moving" => "Mobil működés ...", - "remove_title" => "Törlés megerősítése", - "remove_info" => "Erősítse törölni a kiválasztott tételt?", - "remove_title_force" => "véglegesen törölve", - "remove_info_force" => "Biztos, hogy véglegesen törölni a dokumentum?", - "name_isexists" => "Rossz, a név már létezik!", - "install" => "felszerel", - "width" => "szélesség", - "height" => "nagy", - "app" => "fény Alkalmazások", - "app_store" => "fény Alkalmazások", - "app_create" => "Create Application", - "app_edit" => "Módosítsa az alkalmazást", - "app_group_all" => "teljes", - "app_group_game" => "játék", - "app_group_tools" => "szerszám", - "app_group_reader" => "olvas", - "app_group_movie" => "televízió", - "app_group_music" => "zene", - "app_group_life" => "élet", - "app_group_others" => "más", - "app_desc" => "leírás", - "app_icon" => "alkalmazások ikont", - "app_icon_show" => "url-címét vagy a könyvtár", - "app_group" => "alkalmazás csomag", - "app_type" => "Típus", - "app_type_url" => "link", - "app_type_code" => "js kiterjesztése", - "app_display" => "külső", - "app_display_border" => "Határok nélkül (azaz kiválasztani a szegély)", - "app_display_size" => "Resize (Check beállítástól)", - "app_size" => "méret", - "app_url" => "link címe", - "app_code" => "js kód", - "edit" => "szerkesztése", - "edit_can_not" => "Nem egy szöveges fájlt", - "edit_too_big" => "A fájl túl nagy, akkor nem lehet nagyobb, mint 40M", - "open_default" => "Alapértelmezett megnyitása", - "open_ie" => "Nyissa meg a böngésző", - "refresh" => "felfrissít", - "refresh_all" => "Frissítenie", - "newfile" => "új fájl", - "newfile_save_as" => "Add a", - "newfolder" => "új mappa", - "newothers" => "új Egyéb", - "path_loading" => "Loading ...", - "go" => "Járni!", - "go_up" => "felső réteg", - "history_next" => "előre", - "history_back" => "visszavonulás", - "address_in_edit" => "Kattintson a szerkesztési mód", - "double_click_rename" => "Kattintson duplán a átnevezése", - "double_click_open" => "Dupla kattintással nyissa", - "path_null" => "Mappa üres!", - "file_size_title" => "ikonméret", - "file_size_small_super" => "Ultra-kis", - "file_size_small" => "kis ikonok", - "file_size_default" => "ikonok", - "file_size_big" => "nagy ikonok", - "file_size_big_super" => "nagy ikon", - "upload" => "Feltöltés", - "upload_ready" => "Várakozás feltöltés", - "upload_success" => "sikeres feltöltés", - "upload_path_current" => "Váltás az aktuális könyvtárban", - "upload_select" => "Válassza a Fájl", - "upload_max_size" => "A legnagyobb megengedhető", - "upload_size_info" => "Ha szeretne konfigurálni több, kérjük, módosítsa a php.ini maximális megengedett feltöltési. Ha kiválaszt egy fájlt ennél nagyobb konfiguráció automatikusan kiszűrni.", - "upload_error" => "sikertelen feltöltés", - "upload_error_http" => "Hálózati vagy tűzfal hibák", - "upload_muti" => "Multi-fájl feltöltése", - "upload_drag" => "Drag and drop feltöltési", - "upload_drag_tips" => "Lazítsa feltölteni!", - "path_not_allow" => "A fájl neve nem engedélyezett", - "download" => "Letöltés", - "downloading" => "Loading ...", - "download_address" => "Letöltés", - "download_ready" => "Lesz letölthető", - "download_success" => "Letöltés siker!", - "download_error" => "Letöltés sikertelen!", - "download_error_create" => "Írási hiba!", - "download_error_exists" => "A fájlra mutató linket nem sikerült!", - "upload_error_null" => "Nincs fájl!", - "upload_error_big" => "A fájl mérete meghaladja a szerver határértékek", - "upload_error_move" => "Hiba történt a fájl!", - "upload_error_exists" => "A fájl már létezik", - "upload_local" => "helyi Feltöltés", - "download_from_server" => "távoli letöltés", - "save_path" => "Save Path", - "upload_select_muti" => "A több választható fájlfeltöltés", - "search" => "keresés", - "searching" => "Keresés ...", - "search_result" => "A keresés eredménye", - "seach_result_too_more" => "Túl sok keresési eredmény, akkor ajánlott egy könyvtárat vagy szavak", - "search_null" => "Nincs találat!", - "search_uplow" => "Nagybetűérzékeny", - "search_content" => "Keresés fájl tartalma", - "search_info" => "Kérjük, írja be a keresendő kifejezést, és keressen utak!", - "search_ext_tips" => "By | elválasztva, például php | js | css
                  ne töltse az alapértelmezett szöveges fájl keresés", - "file_type" => "fájl típus", - "goto" => "Ugrás", - "server_dwonload_desc" => "Feladat adtunk a letöltési lista", - "parent_permission" => "Szülő könyvtár jogosultságok", - "root_path" => "My Documents", - "lib" => "raktár", - "fav" => "könyvjelző", - "desktop" => "Desktop", - "browser" => "böngésző", - "my_computer" => "Sajátgép", - "recycle" => "szemét", - "my_document" => "My Documents", - "my_picture" => "Fotóim", - "my_music" => "My Music", - "my_movie" => "Saját videók", - "my_download" => "My Downloads", - "ui_desktop" => "Desktop", - "ui_explorer" => "fájlkezelés", - "ui_editor" => "szerkesztő", - "adminer" => "adminer", - "ui_project_home" => "projekt kezdőlap", - "ui_login" => "Belépés", - "ui_logout" => "quit", - "setting" => "Rendszerbeállítások", - "setting_title" => "Opciók", - "setting_user" => "személyes Center", - "setting_password" => "Jelszó módosítása", - "setting_password_old" => "régi jelszó", - "setting_password_new" => "módosították, hogy", - "setting_language" => "Nyelvi beállítások", - "setting_member" => "User Management", - "setting_group" => "Felhasználói csoportok kezelése", - "setting_group_add" => "Add User Group", - "setting_group_edit" => "Edit User Groups", - "setting_theme" => "Theme Settings", - "setting_wall" => "Háttérkép beállítások", - "setting_wall_desktop" => "Asztali háttérkép", - "setting_wall_desktop_list" => "Asztali háttérkép menedzsment", - "setting_wall_login_list" => "Bejelentkezés Wallpaper Management", - "setting_wall_login_tips" => "Tipp: Ha egynél több darab van, a bejelentkezési felület hátlapja véletlenszerűen forgatódik", - "setting_wall_diy" => "Egyéni háttérkép:", - "setting_wall_info" => "Kép url címét, a helyi képek is jobb, hogy a böngésző megnyitása kép", - "setting_fav" => "Könyvjelzőkezelő", - "setting_help" => "A Súgó használata", - "setting_about" => "Mintegy munkák", - "setting_success" => "Módosítás hatályba lépett!", - "can_not_repeat" => "Nem lehet ismételni", - "absolute_path" => "abszolút cím", - "group" => "felhasználói csoportok", - "data_not_full" => "Benyújtott adatok hiányosak!", - "default_user_can_not_do" => "Az alapértelmezett felhasználói nem működik", - "default_group_can_not_do" => "Az alapértelmezett felhasználói csoportok nem működik", - "username_can_not_null" => "A felhasználónév nem lehet üres!", - "groupname_can_not_null" => "Felhasználói csoport neve nem lehet üres!", - "groupdesc_can_not_null" => "User Group leírás nem lehet üres!", - "group_move_user_error" => "User Group felhasználók move sikertelen", - "group_already_remove" => "A felhasználói csoport törölve lett", - "group_not_exists" => "Ez a felhasználó csoport nem létezik", - "member_add" => "Felhasználó hozzáadása", - "password_null_not_update" => "Azt mondta, hogy nem változik a jelszó nincs kitöltve", - "if_save_file_tips" => "Egyes fájlok nem kerülnek mentésre. Biztos benne, hogy bezárja az ablakot?", - "if_save_file" => "Fájl nem lett elmentve, szeretne menteni?", - "if_remove" => "Törlés megerősítése", - "member_remove_tips" => "Miután eltávolította a felhasználói könyvtár törlődik", - "group_remove_tips" => "Miután eltávolította a felhasználói csoport a felhasználók nem tudnak bejelentkezni
                  (újra kell beállítani felhasználói csoport)", - "group_name" => "Felhasználói csoport neve", - "group_name_tips" => "Ajánlás angol neve, nem ismételhető", - "group_desc" => "Display Name", - "group_desc_tips" => "Csoport neve Leírás", - "group_role_ext" => "Extension korlátozások", - "group_role_ext_tips" => "A többszörös | elválasztott", - "group_role_file" => "fájlkezelés", - "group_role_upload" => "feltöltés engedélyezése", - "group_role_user" => "felhasználói adatok", - "group_role_group" => "Felhasználói csoportok kezelése", - "group_role_member" => "User Management", - "group_role_mkfile" => "új fájl", - "group_role_mkdir" => "új mappa", - "group_role_pathrname" => "átnevezése", - "group_role_pathdelete" => "fájl törlés", - "group_role_pathinfo" => "fájl tulajdonságai", - "group_role_pathmove" => "Move (másolás / kivágás / beillesztés / húzási művelet)", - "group_role_zip" => "összenyomás", - "group_role_unzip" => "cipzárat kinyit", - "group_role_search" => "keresés", - "group_role_filesave" => "Mentse el a fájlt szerkeszteni", - "group_role_can_upload" => "Feltöltése és letöltése", - "group_role_download" => "távoli letöltés", - "group_role_passowrd" => "Jelszó módosítása", - "group_role_config" => "konfigurációs adatok", - "group_role_fav" => "Könyvjelző műveletek (add / edit / delete)", - "action_list" => "Listanézet", - "action_add" => "hozzáad", - "action_edit" => "szerkesztése", - "action_del" => "töröl", - "group_role_ext_warning" => "Feltöltés nem teszi lehetővé az ilyen fájlokat,
                  Nevezze (új nevén a megadott kiterjesztés),
                  szerkesztés menteni, távletöltéssel, kivonat", - "group_tips" => "
                • 1. A felhasználói csoport neve nem duplikálható. Miután a csoport nevét módosította, a reorganizált felhasználóhoz tartozik, és automatikusan társítva.
                • 2. A kiterjesztések korlátozzák a rendszerbiztonság közötti kapcsolatot, kérjük, legyen óvatos (ha új php-t hoz létre a webes könyvtárban, ez azt jelenti, hogy gyakorlatilag lehetetlen megváltoztatni a program jogosultságait ehhez a felhasználóhoz)
                • 3. A háztartások kezelése, a csoportok kezelése, a jogok megtekintése, a jogok hozzáadása, törlése és módosítása kötelező, a programok automatikusan társulnak
                • 4. Miután az engedélyező csoport beállította, hogy hozzáadja az engedélyezési csoportot, a későbbi engedély nem öröklődik (ez az engedély megegyezik a legmagasabb engedéllyel).
                • ", - "not_null" => "Kötelező mező nem lehet üres!", - "picture_can_not_null" => "Fényképek nem lehet üres!", - "rname_success" => "Átnevezése siker!", - "please_inpute_search_words" => "Kérem írjon be kíván", - "remove_success" => "Sikeresen törölve!", - "remove_fali" => "Törlése nem sikerült!", - "clipboard_null" => "Vágólap üres!", - "create_success" => "Új siker!", - "create_error" => "Új sikertelen, ellenőrizze a könyvtár jogosultságokat!", - "copy_success" => "[Copy] - amely vágólapra siker!", - "cute_success" => "[Vágás] - amely vágólapra siker!", - "clipboard_state" => "Vágólap állapot:", - "no_permission_write_all" => "A fájl vagy könyvtár nem írható", - "no_permission_write_file" => "A fájl nem rendelkezik írási jogosultsággal", - "no_permission_read_all" => "A fájl vagy könyvtár nem olvasható engedélye", - "copy_not_exists" => "Forrás nem áll rendelkezésre", - "current_has_parent" => "Cél mappa egy almappa a forrás mappát!", - "past_success" => "paszta művelet befejeződött", - "cute_past_success" => "vágási művelet befejeződött(forrás fájl törlődik, a vágólap üres)", - "zip_success" => "Compression befejezett", - "not_zip" => "nem archív", - "zip_null" => "Nem kiválasztott fájl vagy könyvtár", - "unzip_success" => "csomagolja ki teljes", - "gotoline" => "Ugrás a sor", - "path_is_current" => "Az elérési út és a jelenlegi úton, hogy nyissa meg ugyanaz!", - "path_exists" => "A név már létezik!", - "undo" => "visszavonás", - "redo" => "anti visszavonása", - "preview" => "Preview", - "wordwrap" => "Wrap", - "show_gutter" => "Itt található sorszámok", - "char_all_display" => "Itt található láthatatlan karakterek", - "auto_complete" => "automatikusan értesíti", - "auto_save" => "Automatikus mentés", - "function_list" => "Függvénylista", - "code_theme" => "kódolási stílus", - "font_size" => "betűméret", - "confirm" => "Biztosan meg akarja csinálni?", - "button_ok" => "Határozzuk", - "button_submit" => "Submit", - "button_set" => "beállítása", - "button_cancel" => "törölve", - "button_edit" => "szerkesztése", - "button_save" => "Save", - "button_apply" => "alkalmaz", - "button_save_all" => "Az összes mentése", - "button_not_save" => "Ne mentse", - "button_add" => "hozzáad", - "button_back_add" => "Vissza hozzá", - "button_del" => "töröl", - "button_save_edit" => "A változtatások mentéséhez", - "button_save_submit" => "Save elküldése", - "button_more" => "több", - "button_select_all" => "Összes kijelölése / Invert Selection", - "charset_AUTO" => "Automatikus azonosítás", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arab", - "charset_ISO_8859_6" => "arab", - "charset_ISO_8859_10" => "Nordic nyelv", - "charset_CP1257" => "A balti nyelvek", - "charset_ISO_8859_13" => "A balti nyelvek", - "charset_ISO_8859_4" => "A balti nyelvek", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "grúz", - "charset_PT154" => "kazah", - "charset_CP949" => "koreai", - "charset_EUC_KR" => "koreai", - "charset_GB18030" => "egyszerűsített kínai", - "charset_GBK" => "egyszerűsített kínai", - "charset_ISO_8859_14" => "kelta", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "román", - "charset_ISO_8859_3" => "Dél-európai", - "charset_EUC_JP" => "japán", - "charset_ISO_2022_JP" => "japán", - "charset_SHIFT_JIS" => "japán", - "charset_KOI8_T" => "tadzsik nyelven", - "charset_ISO_8859_11" => "thai", - "charset_TIS_620" => "thai", - "charset_CP1254" => "török", - "charset_CP1251" => "Cirill", - "charset_ISO_8859_5" => "Cirill", - "charset_KOI8_R" => "Cirill", - "charset_KOI8_U" => "Cirill", - "charset_CP1252" => "Nyugat-európai nyelvek", - "charset_ISO_8859_1" => "Nyugat-európai nyelvek", - "charset_ISO_8859_15" => "Nyugat-európai nyelvek", - "charset_Macintosh" => "Nyugat-európai nyelvek", - "charset_CP1255" => "héber", - "charset_ISO_8859_8" => "héber", - "charset_CP1253" => "görög", - "charset_ISO_8859_7" => "görög", - "charset_ARMSCII_8" => "örmény", - "charset_CP1258" => "vietnami", - "charset_VISCII" => "vietnami", - "charset_CP1250" => "Közép-európai nyelvek", - "charset_ISO_8859_2" => "Közép-európai nyelvek", - "charset_default_set" => "fájl kódolás", - "charset_convert_save" => "Mentsd el a fájlt kódolva", - "PluginCenter" => "Plug központ", - "PluginBuy" => "Vásárlási engedély", - "PluginInstalled" => "Lett telepítve", - "PluginUpdate" => "frissítés", - "PluginListNull" => "Nincs tartalom!", - "PluginType" => "besorolás", - "PluginTypeAll" => "teljes", - "PluginTypeFile" => "Továbbfejlesztett fájl", - "PluginTypeSafe" => "Biztonsági eszközök", - "PluginTypeTools" => "hasznosság", - "PluginTypeMedia" => "multimédia", - "PluginTypeOthers" => "más", - "PluginInstall" => "Plugin telepítése", - "PluginEnable" => "Plug-inek engedélyezése", - "PluginDisable" => "Kikapcsolja", - "PluginRemove" => "Távolítsa el a dugó", - "PluginConfig" => "Állítsa be a plugint", - "PluginStatus" => "állami", - "PluginStatusEnabled" => "Bekapcsolt", - "PluginStatusDisabled" => "nem engedélyezett", - "PluginStatusNotInstall" => "nincs telepítve", - "PluginInstalling" => "Telepítés ...", - "PluginHasUpdate" => "Frissítés", - "PluginUpdateStart" => "Plug-in frissítése", - "PluginNeedConfig" => "Annak szükségességét, hogy a kezdeti konfiguráció", - "PluginConfigNotNull" => "Kötelező mező nem lehet üres!", - "PluginOpen" => "nyílt", - "PluginAuther" => "szerző", - "PluginVersion" => "kiadás", - "PluginDownloadNumber" => "telepítések", - "PluginBack" => "visszatérés", - "PluginReadme" => "leírás", - "PluginResetConfig" => "Állítsa vissza az alapértelmezett beállításokat", - "PluginInstallSelf" => "Kézi telepítés", - "Plugin.config.auth" => "Engedélyek", - "Plugin.config.authDesc" => "Az összes rendelkezésre álló beállítások, vagy adjon a felhasználók, felhasználói csoportok, jogi csoportok használhatják", - "Plugin.config.authOpen" => "Nyílt hozzáférés", - "Plugin.config.authOpenDesc" => "Nem kell meglátogatni a hozzáférést, használható külső interfész hívás", - "Plugin.config.authAll" => "tartó", - "Plugin.config.authUser" => "használó", - "Plugin.config.authGroup" => "Kijelölt osztály", - "Plugin.config.authRole" => "jogi csoport", - "Plugin.Config.openWith" => "Nyílt stílus", - "Plugin.Config.openWithDilog" => "belső dialógus", - "Plugin.Config.openWithWindow" => "Az új oldal nyílik meg", - "Plugin.Config.fileSort" => "Extension egyesület prioritás", - "Plugin.Config.fileSortDesc" => "Minél nagyobb a kiterjesztést, hogy nyissa ki a magasabb prioritású", - "Plugin.Config.fileExt" => "Támogatott fájlformátumok", - "Plugin.Config.fileExtDesc" => "Kapcsolódó kiterjesztése a plug-in", - "Plugin.tab.basic" => "Alapbeállítások", - "Plugin.tab.auth" => "Engedélyek", - "Plugin.tab.others" => "egyéb beállítások", - "Plugin.default.aceEditor" => "Ace szerkesztő", - "Plugin.default.htmlView" => "Weblap megtekintése", - "Plugin.default.picasa" => "Picasa kép böngészés", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer lejátszó", - "Plugin.auth.viewList" => "Plugin lista", - "Plugin.auth.setting" => "Plugin beállítások", - "Plugin.auth.status" => "Kapcsolja ki", - "Plugin.auth.install" => "Telepítése / eltávolítása", - "Explorer.UI.openWith" => "Válassza a Nyitott", - "Explorer.UI.openWithText" => "Jegyzettömb megnyitásához", - "Explorer.UI.appSetDefault" => "Állítsa be az alapértelmezett nyitott", - "Explorer.UI.appAwaysOpen" => "Mindig a kijelölt programmal megnyitni ezt a fájlt", - "Explorer.UI.selectAppDesc" => "Válassza ki a kívánt programot a fájl megnyitásához", - "Explorer.UI.selectAppWarning" => "Kérjük, válassza ki az alkalmazást!", - "Explorer.UI.appTypeSupport" => "támogatott", - "Explorer.UI.appTypeAll" => "Minden alkalmazás", - "kodApp.oexe.edit" => "Könnyű alkalmazás szerkesztése", - "kodApp.oexe.open" => "Nyissa meg az alkalmazást a fény" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/id/about.html b/plugin/document/kod/config/i18n/id/about.html deleted file mode 100644 index acb920a16..000000000 --- a/plugin/document/kod/config/i18n/id/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer yaitu apa?
                  -

                  KODExplorer adalah manajemen dokumen online berbasis web open source, code editor. Ini memberikan semacam jendela klasik user interface, satu set manajemen dokumen online, preview file, mengedit, upload, download, pemutaran musik online unzip. Memungkinkan Anda untuk mencapai pembangunan web langsung di browser, kode sumber berkas pratinjau, dan menyebarkan pemilik situs dan operasi lokal yang mudah, cepat dan pengalaman yang aman.

                  -

                  - desain -

                  -

                  tradisi klasik, mengejar inovasi, untuk menyediakan pengguna dengan nyaman, mengamankan dan mudah untuk menggunakan sistem manajemen cloud online.

                  -

                  setiap kali (ketika), di mana (di mana), memiliki web setiap kali Anda ingin (ingin) itu adalah alat manajemen Anda (4W kebijakan).

                  -

                  --pengguna berorientasi -

                  -

                  saat sistem manajemen KODExplorer terutama berlokasi di awan pribadi hosting, kecil manajemen perusahaan cloud sumber daya, jaringan manajemen disk, manajemen situs kecil dan menengah. Web Developer & Guru (veteran): editor online, backup terkompresi, penyebaran, klasik operasi jendela antarmuka, mudah untuk memulai dan menyingkirkan SSH tuan rumah, perintah ftp operasi membosankan kompleks.

                  -

                  cloud pribadi pribadi (rookie): sumber daya jaringan Manajemen disk, operasi jendela klasik antarmuka yang sama, Anda dapat menempatkan drive musik browse jaringan, file screen, upload dan download cepat dan mudah.

                  -
                  - -
                  -
                  Fitur
                  -

                  manajemen dokumen yang komprehensif, kuat editor file online

                  -

                  di manapun Anda berada, Anda dapat mengelola file Anda, dan hiburan online, menulis kode secara online! Sama seperti cocok untuk digunakan sebagai sistem operasi.

                  -

                  luas operasi transplantasi pengalaman lokal yang tepat, drag, kotak pemilihan, cara pintas, pencarian file (konten pencarian) ......

                  -

                  kotak pilihan, drag-gerakan, drag dan drop upload, editor online, pemutar video, dekompresi. Penuh kinerja jaminan ajax dan pengalaman!

                  -

                  fungsi masing-masing koneksi mulus langsung, dalam bentuk dialog, fungsi manajemen multi-task

                  -

                  Editor mendukung multi-dokumen; dukungan ZendCoding html, css, js tinggi efisiensi coding!

                  -

                  dukungan Cina yang sempurna, kacau memecahkan berbagai situasi;

                  -
                  - -
                  -
                  open source adopsi teknologi
                  -

                  1.Jquery:jpuery (Plugin: Hotkeys.ztree.contentmenu) js kerangka pembangunan mainstream. Operasi operasi Dom, BOM, operasi css, dan paket Ajax

                  -

                  2.ArtDialog:desain yang cantik, kompatibilitas browser yang kuat widget dialog. Jadi pop-up menangani, peristiwa, dan transmisi data untuk mendapatkan manajemen terpadu yang lebih baik

                  -

                  3.Ztree:kontrol daftar pohon, skalabilitas sangat kuat widget pohon manipulasi data

                  -

                  4.codemirror:editor kode js plugin, mendukung berbagai bahasa pemrograman untuk menyoroti

                  -

                  5.zendcoding:sebuah kode dukungan html cepat menulis plug-in. Menyederhanakan definisi kode ditulis. kompilasi sederhana

                  -

                  6.less:sebuah, model pembangunan css fungsional efisien untuk meningkatkan ujung depan stylesheet css usabilitas . Sederhana kompilasi

                  -

                  7.SWFUpload:Flash file upload

                  -

                  8 .CMP4:sangat baik flash player Plugin file media, dukungan untuk streaming media, alat pemutaran video musik populer. Dukungan untuk kulit, pengaturan sangat dapat dikonfigurasi. daftar dinamis xml dimuat. mms media streaming, RSTP terbuka lisensi sumber dukungan media pemutaran

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/id/edit.html b/plugin/document/kod/config/i18n/id/edit.html deleted file mode 100644 index 4076d7c19..000000000 --- a/plugin/document/kod/config/i18n/id/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  fungsionalitas yang kaya

                  -

                  Kode otomatis meminta

                  -

                  Multi-tema: Pilih gaya pemrograman favorit Anda

                  -

                  Font kustom: untuk digunakan di tempat kejadian

                  -

                  Multi kursor editing, blok editing pengalaman pemrograman secara online sebanding dengan luhur

                  -

                  Blok lipat, memperluas; membungkus

                  -

                  Dukungan untuk beberapa tab, seret urutan beralih;

                  -

                  Menjaga beberapa dokumen, mencari dan mengganti; Sejarah;

                  -

                  Auto-lengkap [], {}, (), '' ''

                  -

                  Secara online pratinjau real-time yang memungkinkan Anda untuk jatuh cinta dengan pemrograman secara online!

                  -

                  zendcodeing dukungan, menulis kode delapan puluh

                  -

                  Fitur lainnya menunggu penemuan Anda ......

                  -
                  -
                  -

                  150 jenis kode penyorotan

                  -

                  Tip: html, JavaScript, css, kurang, merendahkannya, SCSS

                  -

                  pengembangan web: php, perl, python, ruby, elang, pergi ...

                  -

                  bahasa tradisional: java, c, c ++, c #, ActionScript, VBScript ...

                  -

                  Lainnya: penurunan harga, shell, sql, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Aksi shortcut

                  -
                   pintas umum digunakan: 
                  - ctrl + s untuk menyimpan 
                  - ctrl + pilih semua ctrl + x Cut 
                  - ctrl + c ctrl + v copy paste 
                  - ctrl + z Undo Undo Anti ctrl + y 
                  - ctrl + f untuk mencari pengganti ctrl + f + f 
                  - win + alt + 0 runtuhnya semua win + alt + shift + 0 Buka Semua 
                  - esc [pencarian Exit dibatalkan secara otomatis meminta ...] 
                  - ctrl-shift-s Preview 
                  - ctrl-shift-e acara & Tutup fungsi 
                  -
                  -
                   Pilih: 
                  - Mouse tenda - tarik 
                  - shift + home / end / up / kiri / bawah / kanan 
                  - shift + PageUp / PageDown membalik atas dan bawah untuk memilih 
                  - ctrl + shift + home / akhir kursor saat ini untuk awal dan akhir 
                  - alt + mouse untuk menyeret seleksi blok 
                  - ctrl + alt + g bets pilih dan masukkan saat redaksi multi-tab 
                  -
                  -
                   kursor: 
                  - home / end / up / kiri / bawah / kanan 
                  - ctrl + home / end memindahkan kursor ke kepala dokumen / ekor 
                  - ctrl + p Langsung ke tag yang cocok 
                  - PageUp / PageDown kursor atas dan ke bawah 
                  - alt + kursor kiri / kanan untuk pindah ke atas baris 
                  - shift + kursor kiri / kanan ke akhir baris & 
                  - ctrl + l untuk melompat ke baris tertentu 
                  - ctrl + alt + atas / bawah (di bawah) meningkatkan kursor 
                  -
                  -
                   edit: 
                  - ctrl + / Komentar & ctrl tanda komentar + alt + a Justified 
                  - tab tabel pergeseran keselarasan + meja meja kemajuan keseluruhan 
                  - menghapus menghapus menghapus seluruh ctrl baris + d 
                  - ctrl + delete untuk menghapus baris pada kata yang tepat 
                  - ctrl / shift + backspace untuk menghapus kata di sebelah kiri 
                  - alt + shift + atas / bawah dan ditambahkan ke baris copy (bawah) pesawat 
                  - alt + delete untuk menghapus isi dari kanan kursor 
                  - alt + atas / bawah pada baris saat ini dan garis (exchange baris berikutnya) 
                  - ctrl + shift + d baris disalin dan ditambahkan ke berikut 
                  - ctrl + delete untuk menghapus hak kata 
                  - shift + ctrl + u dikonversi ke huruf kecil 
                  - ctrl + u teks yang dipilih ke huruf besar 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/id/help.html b/plugin/document/kod/config/i18n/id/help.html deleted file mode 100644 index 4d762a998..000000000 --- a/plugin/document/kod/config/i18n/id/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Manajemen File
                  -

                  Seleksi File: radio, tenda mouse, menggeser-pemilu, ctrl dipilih secara acak, keyboard atas dan ke bawah, rumah, pilihan akhir.

                  -

                  File operasi: Setelah memilih file, Anda dapat menyalin, memotong, menghapus, melihat properti kompresi, mengubah nama, terbuka Preview dan operasi lainnya ......

                  -

                  Upload File: Upload beberapa file batch yang; HTML5 tarik meng-upload (drag untuk mulus mengunggah jendela, drag dan drop dukungan untuk folder)

                  -

                  Fungsi kanan: kanan file, folder, tepat, lebih tepat setelah operasi pemilu, desktop, kanan, pohon direktori yang tepat, cara pintas menu kanan terikat
                  - (Pilih Semua - Copy - Cut - Paste - Hapus - Ganti nama, mengatur ......)

                  -

                  File Browser: modus Daftar, modus ikon; klik dua kali dalam sub-folder; address bar operasi; membuka catatan pelawan rekor folder (maju dan mundur)

                  -

                  Dukungan drag dan drop: Periksa drag, dipotong untuk mencapai fungsi folder tertentu

                  -

                  tombol pintas: menghapus menghapus, ctrl + A Pilih Semua, ctrl + C untuk menyalin, + X Cut, pencarian file (konten pencarian) ctrl

                  -
                  -
                  -
                  File Preview
                  -

                  Berkas Preview: melihat isi dari editing file teks dan menyimpan; html, preview file swf,

                  -

                  Gambar Preview: generasi otomatis thumbnail, gambar slide show;

                  -

                  Audio playback: bermain musik online dan file video, dukungan mp3, wma, pertengahan, aac, wav, mp4,

                  -

                  Video: pemutaran video online, format yang didukung: flv, f4v, 3gp

                  -

                  office: office online Preview, format yang didukung: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Shortcuts
                  -

                  masukkan Terbuka

                  -

                  ctrl + pilih semua

                  -

                  ctrl + c untuk menyalin dipilih

                  -

                  ctrl + v untuk paste

                  -

                  ctrl + x Cut

                  -

                  ctrl + f untuk mencari direktori saat ini

                  -

                  alt + n Berkas Baru

                  -

                  alt + m Folder Baru

                  -

                  menghapus Hapus yang dipilih

                  -

                  backspace Kembali

                  -

                  ctrl + backspace maju

                  -

                  f2 Rename dipilih (folder)

                  -

                  home / end / atas / bawah / kiri / kanan untuk memilih file

                  -

                  tombol apapun Periksa untuk menekan huruf pertama dari file karakter & folder yang dipilih siklus otomatis

                  -
                  diff --git a/plugin/document/kod/config/i18n/id/main.php b/plugin/document/kod/config/i18n/id/main.php deleted file mode 100644 index f652ea9f7..000000000 --- a/plugin/document/kod/config/i18n/id/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Silakan pilih file ...", - "path_api_select_folder" => "Silakan pilih folder ...", - "path_api_select_image" => "Silakan pilih gambar ...", - "share_can_upload" => "memungkinkan meng-upload", - "move_error" => "Pindahkan gagal", - "setting_basic" => "Pengaturan dasar", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "terbuka Animasi", - "recycle_open_if" => "Buka Recycle Bin", - "recycle_open" => "terbuka", - "setting_user_recycle_desc" => "Setelah penghapusan akan dihapus secara langsung penghapusan fisik", - "setting_user_animate_desc" => "Jendela terbuka dan animasi lainnya", - "setting_user_sound_desc" => "Suara operasi", - "setting_user_imageThumb" => "Gambar mini gambar", - "setting_user_imageThumb_desc" => "Pengalaman penjelajahan yang lebih baik setelah pembukaan", - "setting_user_fileSelect" => "Buka file icon cek", - "setting_user_fileSelect_desc" => "Ikon file kiri tombol cek, klik kanan menu shortcut entry", - "qrcode" => "URL kode QR", - "theme_mac" => "Mac putih minimalis", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Biru Klasik", - "theme_metro_green" => "hijau muda Metro", - "theme_metro_purple" => "Metro elegan ungu", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro oranye terang", - "theme_alpha_image" => "Cerah - terbang", - "theme_alpha_image_sun" => "Cerah - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Kustom", - "theme_diy_title" => "Pengaturan kustom Tema", - "theme_diy_background" => "latar belakang", - "theme_diy_image" => "gambar", - "theme_diy_color_blur" => "gradien warna", - "theme_diy_image_blur" => "gambar blur", - "theme_diy_image_url" => "alamat foto", - "theme_diy_color_start" => "mulai warna", - "theme_diy_color_end" => "akhir Warna", - "theme_diy_color_radius" => "sudut gradien", - "system_role_admin_set" => "Administrator memiliki semua hak, tanpa pengaturan!", - "login_error_user_not_use" => "Pengguna telah dinonaktifkan! Silahkan hubungi administrator", - "login_error_kod_version" => "versi konflik", - "login_error_role" => "Kelompok izin lihat tidak ada, silahkan hubungi administrator", - "no_permission_group" => "Anda tidak berada dalam kelompok ini!", - "no_permission_write" => "direktori tidak memiliki izin menulis", - "user" => "pemakai", - "save_as" => "Simpan sebagai", - "check_update" => "memperbarui", - "keyboard_type" => "Keyboard Modus", - "font_family" => "font", - "code_mode" => "sintaks", - "path_can_not_share" => "Hanya mendukung berbagi dokumen Anda sendiri!", - "path_can_not_action" => "Direktori ini tidak mendukung operasi ini!", - "wap_page_pc" => "Versi PC", - "wap_page_phone" => "mobil", - "image_size" => "dimensi gambar", - "no_permission_action" => "Anda tidak memiliki izin ini, silahkan hubungi administrator!", - "path_is_root_tips" => "Ia telah datang ke direktori root!", - "kod_group" => "organisasi", - "my_kod_group" => "Saya di departemen", - "space_tips_default" => "(GB) 0 tidak ada batas", - "space_tips_full" => "tanpa membatasi", - "space_size" => "ruang", - "space_size_use" => "Penggunaan ruang", - "space_is_full" => "Tidak ada ruang yang tersisa, silakan hubungi administrator!", - "system_open_true_path" => "Berhasil dibuka di file manager!", - "group_role_error" => "izin peran error (tidak ada pengaturan izin)", - "group_role_error_admin" => "izin tidak memadai", - "markdown_content" => "Daftar isi", - "system_group" => "Pengguna dan departemen", - "system_group_edit" => "Manajemen departemen", - "system_group_role" => "identitas peran", - "system_group_create" => "Departemen baru", - "system_group_name" => "Nama departemen", - "system_group_father" => "Departemen unggul", - "system_group_add" => "Tambahkan sub-departemen", - "system_group_remove" => "Keluarkan departemennya", - "system_group_remove_tips" => "Apakah Anda yakin untuk menghapus departemen?
                  Setelah penghapusan bagian pengguna akan dihapus, sub-sektor dipindahkan ke sektor akar", - "system_group_select" => "Pilih departemen", - "system_group_select_result" => "Anggota akan menjadi milik sektor berikut", - "system_role_admin_tips" => "Catatan: Administrator sistem tidak berwenang untuk mengontrol", - "system_member_action" => "Manajemen pengguna", - "system_member_add" => "Pengguna baru", - "system_member_role" => "peran izin", - "system_member_role_select" => "memilih", - "system_member_password_tips" => "Jangan mengisi tidak dimodifikasi", - "system_set_home_path" => "kustom Katalog", - "system_set_home_path_tips" => "Direktori default kosong", - "system_member_group" => "Dimana departemennya", - "system_member_group_edit" => "Departemen editorial", - "system_member_remove" => "Hapus Pengguna", - "system_member_remove_tips" => "Konfirmasi pengguna menghapus?
                  setelah Anda menghapus direktori pengguna akan benar-benar terhapus", - "system_member_set_role" => "Untuk mengkonfirmasi perubahan hak akses grup pengguna yang dipilih?", - "system_member_remove_group" => "Tentukan pengguna yang dipilih akan dihapus dari grup ini?", - "system_member_import" => "add massal", - "system_member_import_desc" => "Salah satu pengguna per baris,
                  sudah eksis secara diam-diam diabaikan", - "system_member_use" => "memungkinkan", - "system_member_unuse" => "melumpuhkan", - "system_member_space" => "Tentukan ukuran ruang pengguna ", - "system_member_space_tips" => " Tentukan ukuran ruang pengguna ", - "system_member_space_number" => " Harus berupa angka!", - "system_member_group_config" => "Departemen pengaturan batch", - "system_member_group_remove" => "Dihapus dari departemen", - "system_member_group_insert" => "Tambahkan ke departemen", - "system_member_group_reset" => "Setel ulang departemen", - "system_member_group_error" => "Kesalahan departemen", - "system_group_action" => "Manajemen departemen", - "system_role_add" => "Tambahkan Peran Identitas", - "system_role_read" => "Read-only", - "system_role_write" => "Dapat membaca dan menulis", - "system_setting_root_path" => "akses root", - "system_setting_root_path_desc" => "Hanya administrator sistem dapat mengakses semua direktori, kelompok hak-hak lain dari pengguna hanya dapat melihat direktori pengguna mereka sendiri. Jika Anda ingin mengaktifkan atau menonaktifkan
                  akses administrator ke direktori lain, Anda dapat memodifikasi php open_basedir parameter anti-lintas situs,mengatur", - "system_group_role_title" => "Pengelolaan peran otoritas departemen", - "system_group_role_remove" => "Oke untuk menghapus peran departemen", - "system_group_role_style" => "gaya", - "system_group_role_display" => "apakah", - "system_group_role_display_desc" => "Tetapkan apakah akan menampilkan hak pengguna departemen atau tidak", - "role_type_name_read" => "membaca", - "role_type_name_read:list" => "Daftar File", - "role_type_name_read:info" => "File (folder) properti View, pencarian Folder", - "role_type_name_read:copy" => "Berkas Copy", - "role_type_name_read:preview" => "preview file (gambar, dokumen, audio dan video)", - "role_type_name_read:download" => "File (folder) Unduh", - "role_type_name_write" => "menulis", - "role_type_name_write:add" => "Buat file (folder), ekstrak file terkompresi", - "role_type_name_write:edit" => "Simpan file untuk mengedit", - "role_type_name_write:change" => "Mengubah nama, menyesuaikan struktur direktori", - "role_type_name_write:upload" => "File (folder) meng-upload, remote Download", - "role_type_name_write:remove" => "File (folder) menghapus, memotong", - "group_guest" => "pengunjung", - "group_guest_desc" => "Anda bukan anggota departemen,
                  hanya dapat mengakses [direktori berbagi direktori] konten berikut, hak akses baca-saja.", - "group_role_lebel_desc" => "Anda adalah anggota departemen ini,
                  Semua dokumen dalam departemen All rights reserved oleh administrator", - "button_save_and_add" => "Simpan dan terus menambah", - "path_cannot_search" => "direktori tidak mendukung pencarian!", - "not_support" => "Tidak didukung!", - "group_not_exist" => "kelompok pengguna tidak ada!", - "upload_clear_all" => "Hapus semua", - "upload_clear" => "jelas Selesai", - "upload_setting" => "mendirikan", - "upload_tips" => "Menggunakan meng-upload slice, tidak lagi tunduk pada batasan php.ini; direkomendasikan tarik folder chrome dan penurunan pengalaman upload", - "upload_exist" => "File dengan nama yang sama", - "upload_exist_rename" => "Ganti nama", - "upload_exist_replace" => "penutup", - "upload_exist_skip" => "melewatkan", - "upload_add_more" => "add massal", - "more" => "lebih", - "system_setting" => "Pengaturan sistem", - "openProject" => "Membuka editor proyek", - "url_download" => "Download", - "url_link" => "URL", - "app_type_link" => "Shortcuts", - "createLink" => "Buat Shortcut", - "createLinkHome" => "Dikirim ke cara pintas desktop", - "createProject" => "Menambah proyek Editor", - "only_read" => "Read-only", - "only_read_desc" => "direktori tidak memiliki izin menulis
                  Anda dapat mengatur hak akses untuk direktori ini di server", - "not_read" => "tdk terbaca", - "explorerNew" => "Link kod", - "zip_download_ready" => "Setelah kompresi akan secara otomatis men-download, harap tunggu ...", - "set_background" => "Tetapkan sebagai Desktop Wallpaper", - "share" => "Bagikan", - "my_share" => "Bagian saya", - "group_share" => "Berbagi eksternal grup", - "share_edit" => "Edit berbagi", - "share_remove" => "Batalkan berbagi", - "share_remove_tips" => "Anda yakin ingin membatalkan sharing? Sambungan publik akan batal.", - "share_path" => "Bagikan jalannya", - "share_title" => "Berbagi sumber", - "share_name" => "Bagikan judulnya", - "share_time" => "waktu berakhir", - "share_time_desc" => "Null tidak diatur", - "share_password" => "sandi ekstrak", - "share_password_desc" => "password kosong tidak diatur", - "share_cancle" => "unsharing", - "share_create" => "Buat link umum", - "share_url" => "Alamat berbagi", - "share_not_download" => "Download larangan", - "share_not_download_tips" => "Sharer dilarang Download!", - "share_code_read" => "pembaca kode", - "share_save" => "Simpan Konfigurasi", - "share_error_param" => "Parameter kesalahan!", - "share_error_user" => "Informasi pengguna Kesalahan!", - "share_error_sid" => "Berbagi tidak ada!", - "share_error_time" => "Anda datang terlambat, saham telah berakhir!", - "share_error_path" => "Bersama file tidak ada, itu dihapus atau dihapus!", - "share_error_password" => "Salah sandi!", - "share_error_show_tips" => "Jenis ini tidak mendukung preview file!", - "share_view_num" => "views:", - "share_download_num" => "Downloads:", - "share_open_page" => "Buka halaman bersama", - "open_the_path" => "Masukkan direktori", - "recycle_clear" => "sampah kosong", - "recycle_clear_success" => "sampah sukses kosong!", - "recycle_clear_info" => "Apakah Anda yakin Anda ingin benar-benar kosong sampah?", - "fav_remove" => "Batal koleksi", - "remove_item" => "item", - "uploading" => "upload", - "upload_tips_more" => "Terlalu banyak file, rekomendasi upload dikompresi, kemudian unzip secara online!", - "uploading_move" => "Dalam transfer gabungan ...", - "show_file" => "pratinjau halaman baru", - "unknow_file_title" => "File Open Tip!", - "unknow_file_tips" => "Tidak mendukung penerapan file ini, Anda dapat:", - "unknow_file_try" => "mencoba", - "unknow_file_download" => "Download file", - "unknow_plugin_search" => "Pencarian terkait aplikasi yang terinstal", - "config_save_error_auth" => "Gagal untuk menyimpan konfigurasi, administrator dilarang hak istimewa ini!", - "config_save_error_file" => "Kesalahan, file tidak dapat ditulis!", - "beautify_code" => "kode Formatter", - "convert_case" => "konversi kasus", - "convert_upper_case" => "Dikonversi ke huruf besar", - "convert_lower_case" => "Dikonversi ke huruf kecil", - "editor_insert_time" => "Waktu saat ini ", - "editor_md5" => " Enkripsi md5 ", - "editor_qrcode" => " String kode dua dimensi ", - "editor_regx" => " Pengujian ekspresi reguler ", - "editor_chinese" => " Konversi yang disederhanakan ", - "editor_chinese_simple" => " Konversikan ke Cina Sederhana ", - "editor_chinese_traditional" => " Konversikan ke Bahasa Cina Tradisional ", - "editor_base64" => "Codec Base64 ", - "editor_base64_encode" => " Enkode Base64 ", - "editor_base64_decode" => " Penguraian Base64 ", - "editor_url" => " Codec URL ", - "editor_url_encode" => " Pengkodean URL ", - "editor_url_decode" => " Dekode URL ", - "editor_unicode" => " Codec Unicode ", - "editor_unicode_encode" => " Unicode encoding ", - "editor_unicode_decode" => " Unicode decoding", - "editor_tools_select_tips" => " Silakan pilih konten yang ingin Anda konversi!", - "editor_calc" => "Kalkulator Gratis", - "shortcut" => "Shortcuts", - "use_free" => "Terus menggunakan versi gratis", - "learn_more" => "Pelajari Lebih Lanjut", - "replace" => "menggantikan", - "selectAll" => "memilih", - "reload" => "mengisi kembali", - "about" => "di", - "complete_current" => "Auto-selesai saat ini", - "view" => "pandangan", - "tools" => "alat", - "help" => "membantu", - "not_exists" => "Tidak ada", - "group_role_fileDownload" => "download", - "group_role_share" => "saham", - "users_share" => "berbagi", - "system_setting_save" => "Pengaturan keamanan", - "system_setting_menu" => "manajemen menu", - "system_name" => "Program Nama", - "system_name_desc" => "title logo Program", - "system_desc" => "Deskripsi Program", - "path_hidden" => "Direktori pengecualian", - "version_not_support" => "Versi Anda tidak mendukung ini, silakan kunjungi situs resmi untuk membeli versi canggih!", - "version_not_support_number" => "Karena jumlah pembatasan tidak mendukung operasi ini, silahkan membeli versi lanjutan dari situs resmi!", - "path_hidden_desc" => "Direktori dan file secara default tidak ditampilkan, dipisahkan dengan koma", - "new_user_folder" => "Pengguna baru dibuat oleh direktori default", - "new_user_folder_desc" => "Dipisahkan dengan koma", - "new_user_app" => "Pengguna baru dibuat oleh aplikasi default", - "new_user_app_desc" => "Aplikasi Aplikasi Pusat, pluralitas dipisahkan dengan koma", - "auto_login" => "Pengunjung login otomatis", - "auto_login_desc" => "Default login userguest/guestpengguna; setelah pembukaan untuk memastikan bahwa pengguna ada", - "first_in" => "Setelah masuk ke default", - "version_price_free" => "gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Direktori tidak dapat ditulisi, mengatur direktori dan semua subdirektori untuk mencoba lagi setelah membaca-menulis!", - "menu_name" => "nama menu", - "menu_hidden" => "menyembunyikan", - "menu_show" => "pameran", - "menu_move_down" => "turun", - "menu_move_up" => "naik", - "menu_move_del" => "Hapus", - "menu_open_window" => "Buka jendela baru", - "menu_sub_menu" => "Submenu", - "url_path" => "alamat url", - "url_path_desc" => "alamat url atau kode js", - "no_permission_read" => "Anda tidak memiliki izin untuk membaca!", - "no_permission_download" => "Anda tidak memiliki izin untuk men-download!", - "php_env_check" => "Operasi pemantauan lingkungan:", - "php_env_error" => "Perpustakaan Php hilang", - "php_env_error_ignore" => "Abaikan dan masukkan", - "php_env_error_version" => "Versi PHP tidak bisa kurang dari 5.0", - "php_env_error_path" => "tidak dapat ditulis", - "php_env_error_list_dir" => "server web Anda membuka daftar direktori fitur untuk alasan keamanan, menonaktifkan fitur ini!bagaimana?", - "php_env_error_gd" => "Php GD library harus terbuka, jika tidak kode, gunakan thumbnail tidak akan berfungsi dengan baik", - "install_login" => "Anda dapat menggunakan login account berikut", - "install_enter" => "sistem", - "install_user_default" => "Administrator: {0} / (bawah menetapkan password)
                  Rata-rata pengguna: {1}
                  pengguna tamu: {2}", - "login_root_password" => "Mengatur password Administrator", - "login_root_password_repeat" => "Konfirmasi password lagi", - "login_root_password_equal" => "Kedua password tidak cocok!", - "login_root_password_tips" => "Mengatur password administrator!", - "forget_password" => "Lupa kata sandi Anda", - "forget_password_tips" => "Lupa Password Administrator:
                  Harap masuk server yang menghapus ./data/system/install.lock ulang;

                  Non-administrator Lupa Password:
                  Silahkan hubungi administrator untuk me-reset!", - "copyright_desc" => "Kodexplorer adalah sistem manajemen dokumen web sangat diakui, Anda dapat menggunakannya untuk manajemen dokumen internal atau bersama, juga dapat digunakan pada server situs manajemen, menggantikan FTP, bahkan saat webIDE langsung pembangunan online. Anda juga dapat memprogram pembangunan kedua untuk mengintegrasikan ini ke dalam sistem yang ada.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango cloud • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango cloud • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao awan, awan mangga, sistem manajemen dokumen, perusahaan cloud disk, explorer ,, dokumentasi online, Kantor online, kantor online, CAD pratinjau online, online editing , editor online", - "kod_meta_description" => "KodExplorer dapat awan Jalan (sebelumnya mangga cloud) adalah penyedia terkemuka pemerintah / awan perusahaan swasta dan sistem manajemen dokumen online untuk website pribadi, enterprise awan swasta, penyimpanan jaringan, manajemen dokumen online, kantor online untuk memberikan aman dan terkendali, sederhana dan mudah digunakan, sangat disesuaikan produk private cloud. Menggunakan windows antarmuka gaya, praktik operasi, tanpa harus beradaptasi dengan cepat memulai, mendukung ratusan format file pratinjau online populer, playback dan editing ramah lingkungan, kuat, adalah uji coba sekali, tidak lagi dapat dipisahkan dari pribadi penawaran cloud.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Login", - "guest_login" => "tamu Masuk", - "username" => "Akun masuk", - "userNickName" => "Nama pengguna", - "password" => "kata sandi", - "login_code" => "kode", - "need_check_code" => "kode otentikasi login terbuka", - "need_check_code_desc" => "Setelah masuk, Anda harus memasukkan kode verifikasi.", - "setting_csrf_protect" => "perlindungan CSRF terbuka", - "setting_csrf_protect_desc" => "Setelah jenis pembukaan serangan secara efektif dapat melindungi CSRF", - "login_rember_password" => "Ingat sandi", - "setting_show_root_group" => "Daftar semua departemen", - "setting_show_root_group_desc" => "Direktori root direktori pohon apakah akan mencantumkan semua departemen", - "setting_show_share_user" => "Daftar semua pengguna", - "setting_show_share_user_desc" => "Direktori akar direktori direktori terdaftar untuk semua pengguna", - "setting_clear_user_recycle" => "Mengosongkan recycle bin untuk semua pengguna", - "setting_clear_cache" => "Mengosongkan cache", - "setting_icp" => "Hak cipta atau merekam nomor", - "setting_global_css" => "css kustom global yang", - "setting_global_css_desc" => "Semua halaman akan memasukkan css kustom", - "setting_global_html" => "kode statistik HTML", - "setting_global_html_desc" => "Semua halaman akan disisipkan dalam kode html ayat ini, kode dapat ditempatkan statistik pihak ketiga", - "us" => "kodcloud.com", - "login_not_null" => "Nama pengguna dan password tidak boleh kosong!", - "code_error" => "kode kesalahan", - "password_error" => "Nama pengguna atau sandi salah!", - "password_not_null" => "password tidak boleh kosong!", - "old_password_error" => "password lama salah!", - "permission" => "Izin!", - "permission_edit" => "memodifikasi Izin", - "file_info_owner" => "pemilik", - "file_info_group" => "kelompok", - "no_permission" => "Administrator telah menonaktifkan hak istimewa ini!", - "no_permission_ext" => "Administrator melarang jenis file permissions", - "dialog_max" => "Maksimalkan", - "dialog_min" => "memperkecil", - "dialog_min_all" => "meminimalkan semua", - "dialog_display_all" => "Tampilkan semua jendela", - "dialog_close_all" => "Tutup semua", - "open" => "terbuka", - "others" => "lain", - "open_with" => "Buka untuk ...", - "close" => "dekat", - "close_all" => "Tutup semua", - "close_left" => "Tutup tab kiri", - "close_right" => "Tutup tab ke kanan", - "close_others" => "Tutup Lainnya", - "loading" => "Operasi ...", - "warning" => "peringatan", - "getting" => "Dapatkan ...", - "sending" => "transmisi data ...", - "data_error" => "Data Kesalahan!", - "get_success" => "Dapatkan Sukses!", - "save_success" => "Berhasil disimpan!", - "success" => "operasi sukses", - "error" => "operasi gagal", - "error_repeat" => "Operasi gagal, nama tersebut sudah ada!", - "word_error" => "Gagal ", - "word_success" => " Sukses", - "system_error" => "kesalahan sistem", - "name" => "nama", - "type" => "jenis", - "contain" => "berisi", - "address" => "tempat", - "size" => "ukuran", - "byte" => "byte", - "path" => "jalan", - "action" => "operasi", - "create_time" => "dibuat", - "modify_time" => "dimodifikasi", - "last_time" => "Kunjungan terakhir", - "sort_type" => "Urutkan berdasarkan", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "direktori umum", - "system_path_not_change" => "direktori sistem, tidak dapat diubah", - "file" => "berkas", - "folder" => "map", - "copy" => "salinan", - "past" => "tongkat", - "clone" => "Buat salinan", - "cute" => "mencukur", - "cute_to" => "Pindahkan ke ...", - "copy_to" => "Copy ke ...", - "remove" => "Hapus", - "remove_force" => "benar-benar menghapus", - "info" => "milik", - "list_type" => "pandangan", - "list_icon" => "icon Array", - "list_list" => "susunan daftar", - "list_list_split" => "modus kolom", - "sort_up" => "kenaikan", - "sort_down" => "penurunan", - "order_type" => "Urutkan berdasarkan", - "order_desc" => "menurun", - "order_asc" => "Meningkat", - "rename" => "Ganti nama", - "add_to_fav" => "Tambahkan ke Favorit", - "search_in_path" => "Pencarian folder", - "add_to_play" => "Tambahkan ke Playlist", - "manage_fav" => "Kelola Favorit", - "refresh_tree" => "pohon direktori penyegaran", - "manage_folder" => "Manajemen direktori", - "close_menu" => "Tutup menu", - "zip" => "Buat paket terkompresi", - "unzip" => "Untuk mengekstrak ...", - "unzip_folder" => "Unzip ke folder", - "unzip_this" => "Ekstrak untuk saat ini", - "unzip_to" => "Untuk mengekstrak ...", - "zipview_file_big" => "file terlalu besar, dan kemudian ekstrak operasi pratinjau!", - "clipboard" => "Lihat Clipboard", - "clipboard_clear" => "Clipboard kosong", - "full_screen" => "Full Screen", - "folder_info_item" => "item", - "folder_info_item_select" => "A dipilih", - "file_load_all" => "Klik dua kali untuk memuat semua ......", - "tips" => "cepat", - "ziping" => "Zipping ...", - "unziping" => "Penggalian ...", - "moving" => "Ponsel operasi ...", - "remove_title" => "Hapus Konfirmasi", - "remove_info" => "Konfirmasi untuk menghapus item yang dipilih?", - "remove_title_force" => "permanen dihapus", - "remove_info_force" => "Anda yakin ingin menghapus dokumen ini secara permanen?", - "name_isexists" => "Salah, namanya sudah ada!", - "install" => "memasang", - "width" => "lebar", - "height" => "tinggi", - "app" => "Aplikasi ringan", - "app_store" => "Aplikasi ringan", - "app_create" => "Buat Aplikasi", - "app_edit" => "Memodifikasi aplikasi", - "app_group_all" => "lengkap", - "app_group_game" => "permainan", - "app_group_tools" => "alat", - "app_group_reader" => "membaca", - "app_group_movie" => "televisi", - "app_group_music" => "musik", - "app_group_life" => "hidup", - "app_group_others" => "lain", - "app_desc" => "deskripsi", - "app_icon" => "ikon aplikasi", - "app_icon_show" => "alamat url atau direktori", - "app_group" => "aplikasi Packet", - "app_type" => "jenis", - "app_type_url" => "link", - "app_type_code" => "ekstensi js", - "app_display" => "luar", - "app_display_border" => "Tanpa batas (yaitu pilih borderless)", - "app_display_size" => "Resize (Periksa untuk penyesuaian)", - "app_size" => "ukuran", - "app_url" => "alamat link", - "app_code" => "kode js", - "edit" => "mengedit", - "edit_can_not" => "Bukan file teks", - "edit_too_big" => "File terlalu besar, tidak dapat lebih besar dari 40M", - "open_default" => "bawaan Terbuka", - "open_ie" => "Buka browser", - "refresh" => "menyegarkan", - "refresh_all" => "Memaksa refresh", - "newfile" => "Berkas baru", - "newfile_save_as" => "Simpan ke", - "newfolder" => "Folder baru", - "newothers" => "baru lainnya", - "path_loading" => "Loading ...", - "go" => "Berjalan!", - "go_up" => "lapisan atas", - "history_next" => "depan", - "history_back" => "mundur", - "address_in_edit" => "Klik untuk masuk mode edit", - "double_click_rename" => "Klik dua kali Mengganti Nama yang", - "double_click_open" => "Klik dua kali untuk membuka", - "path_null" => "Folder kosong!", - "file_size_title" => "Ukuran ikon", - "file_size_small_super" => "Ultra-kecil", - "file_size_small" => "ikon kecil", - "file_size_default" => "ikon", - "file_size_big" => "Ikon besar", - "file_size_big_super" => "Icon besar", - "upload" => "Upload", - "upload_ready" => "Menunggu untuk meng-upload", - "upload_success" => "Unggah sukses", - "upload_path_current" => "Beralih ke direktori saat ini", - "upload_select" => "pilih file", - "upload_max_size" => "Maksimum yang diijinkan", - "upload_size_info" => "Jika Anda ingin mengkonfigurasi lebih lanjut, silakan memodifikasi php.ini maksimum yang diperbolehkan upload. Bila Anda memilih file yang lebih besar dari konfigurasi ini secara otomatis akan menyaring.", - "upload_error" => "Upload gagal", - "upload_error_http" => "Jaringan atau firewall kesalahan", - "upload_muti" => "Upload multi-file", - "upload_drag" => "Drag dan drop meng-upload", - "upload_drag_tips" => "Kendurkan untuk meng-upload!", - "path_not_allow" => "nama file tidak diizinkan", - "download" => "Download", - "downloading" => "Loading ...", - "download_address" => "Download", - "download_ready" => "Akan diunduh", - "download_success" => "Ambil Sukses!", - "download_error" => "Download Gagal!", - "download_error_create" => "Menulis kesalahan!", - "download_error_exists" => "Link ke file gagal!", - "upload_error_null" => "Tidak ada berkas!", - "upload_error_big" => "ukuran file melebihi batas Server", - "upload_error_move" => "Gagal memindahkan file!", - "upload_error_exists" => "file sudah ada", - "upload_local" => "Upload lokal", - "download_from_server" => "terpencil Unduh", - "save_path" => "Simpan Jalur", - "upload_select_muti" => "Sebuah pluralitas file upload dipilih", - "search" => "pencarian", - "searching" => "Mencari ...", - "search_result" => "Hasil pencarian", - "seach_result_too_more" => "Terlalu banyak hasil pencarian, disarankan untuk direktori atau kata-kata", - "search_null" => "Tidak ada hasil!", - "search_uplow" => "kasus sensitif", - "search_content" => "isi file pencarian", - "search_info" => "Harap masukkan istilah pencarian dan mencari jalan!", - "search_ext_tips" => "Dengan | dipisahkan, misalnya php | js | css
                  tidak mengisi pencarian file teks default", - "file_type" => "Jenis File", - "goto" => "Langsung ke", - "server_dwonload_desc" => "Tugas telah ditambahkan ke daftar download", - "parent_permission" => "izin direktori induk", - "root_path" => "My Documents", - "lib" => "gudang", - "fav" => "Bookmark", - "desktop" => "Desktop", - "browser" => "Browser", - "my_computer" => "Komputer saya", - "recycle" => "sampah", - "my_document" => "My Documents", - "my_picture" => "Foto saya", - "my_music" => "Musik saya", - "my_movie" => "Video saya", - "my_download" => "Download saya", - "ui_desktop" => "Desktop", - "ui_explorer" => "Manajemen File", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "proyek Rumah", - "ui_login" => "Login", - "ui_logout" => "berhenti", - "setting" => "Pengaturan sistem", - "setting_title" => "Pilihan", - "setting_user" => "Pusat pribadi", - "setting_password" => "Ubah password", - "setting_password_old" => "Sandi tua", - "setting_password_new" => "direvisi untuk", - "setting_language" => "Pengaturan bahasa", - "setting_member" => "Manajemen pengguna", - "setting_group" => "manajemen kelompok pengguna", - "setting_group_add" => "Tambahkan User Group", - "setting_group_edit" => "Grup mengedit Pengguna", - "setting_theme" => "Pengaturan tema", - "setting_wall" => "Pengaturan wallpaper", - "setting_wall_desktop" => "Wallpaper desktop", - "setting_wall_desktop_list" => "Manajemen Wallpaper Desktop", - "setting_wall_login_list" => "Masuk Manajemen Wallpaper", - "setting_wall_login_tips" => "Tip: Ketika ada lebih dari satu bagian, latar belakang antarmuka masuk akan berputar secara acak", - "setting_wall_diy" => "wallpaper kustom:", - "setting_wall_info" => "Gambar alamat url, gambar lokal dapat tepat untuk mendapatkan browser untuk membuka gambar", - "setting_fav" => "Bookmark Manajer", - "setting_help" => "menggunakan Bantuan", - "setting_about" => "Tentang karya", - "setting_success" => "Modifikasi telah mengambil efek!", - "can_not_repeat" => "Tidak diizinkan untuk mengulang", - "absolute_path" => "alamat absolut", - "group" => "Kelompok pengguna", - "data_not_full" => "Data yang disampaikan tidak lengkap!", - "default_user_can_not_do" => "Default user tidak dapat beroperasi", - "default_group_can_not_do" => "kelompok pengguna default tidak dapat beroperasi", - "username_can_not_null" => "Username tidak boleh kosong!", - "groupname_can_not_null" => "Pengguna nama grup tidak boleh kosong!", - "groupdesc_can_not_null" => "User Group Deskripsi tidak boleh kosong!", - "group_move_user_error" => "Pengguna pengguna Grup bergerak gagal", - "group_already_remove" => "Kelompok pengguna telah dihapus", - "group_not_exists" => "kelompok pengguna ini tidak ada", - "member_add" => "Tambahkan Pengguna", - "password_null_not_update" => "Mereka mengatakan mereka tidak mengubah password tidak diisi", - "if_save_file_tips" => "Beberapa file tidak disimpan. Yakin ingin menutup jendela?", - "if_save_file" => "File belum disimpan, Anda ingin menyimpan?", - "if_remove" => "konfirmasi Hapus", - "member_remove_tips" => "Setelah Anda menghapus direktori pengguna akan dihapus", - "group_remove_tips" => "Setelah Anda menghapus kelompok pengguna dari pengguna tidak bisa login
                  (perlu kembali mengatur kelompok pengguna)", - "group_name" => "Pengguna nama grup", - "group_name_tips" => "Rekomendasi nama bahasa Inggris, tidak dapat diulang", - "group_desc" => "Nama tampilan", - "group_desc_tips" => "Nama kelompok Deskripsi", - "group_role_ext" => "pembatasan ekstensi", - "group_role_ext_tips" => "Dengan beberapa | dipisahkan", - "group_role_file" => "Manajemen File", - "group_role_upload" => "memungkinkan meng-upload", - "group_role_user" => "Data pengguna", - "group_role_group" => "manajemen kelompok pengguna", - "group_role_member" => "Manajemen pengguna", - "group_role_mkfile" => "Berkas baru", - "group_role_mkdir" => "Folder baru", - "group_role_pathrname" => "Ganti nama", - "group_role_pathdelete" => "penghapusan file", - "group_role_pathinfo" => "Properti File", - "group_role_pathmove" => "Move (copy / cut / paste / drag operasi)", - "group_role_zip" => "kompresi", - "group_role_unzip" => "membuka ritsleting", - "group_role_search" => "pencarian", - "group_role_filesave" => "Simpan file untuk mengedit", - "group_role_can_upload" => "Upload dan download", - "group_role_download" => "terpencil Unduh", - "group_role_passowrd" => "Ubah password", - "group_role_config" => "data konfigurasi", - "group_role_fav" => "Bookmark operasi (menambah / mengedit / menghapus)", - "action_list" => "Daftar View", - "action_add" => "menambahkan", - "action_edit" => "mengedit", - "action_del" => "Hapus", - "group_role_ext_warning" => "Unggah tidak memungkinkan file tersebut,
                  Ubah nama (berganti nama menjadi ekstensi yang ditentukan),
                  mengedit menyimpan, remote download, ekstrak", - "group_tips" => "
                • 1. Nama grup pengguna tidak dapat diduplikasi. Setelah nama grup diubah, itu milik pengguna yang diatur ulang dan secara otomatis terkait.
                • 2. Ekstensi membatasi hubungan antara keamanan sistem, harap berhati-hati (jika Anda membuat php baru di direktori web; itu berarti bahwa mengubah izin program untuk pengguna ini hampir tidak mungkin)
                • 3. Manajemen rumah tangga, manajemen kelompok hak, melihat hak dan menambahkan, menghapus, dan memodifikasi hak terikat, program secara otomatis terkait
                • 4. Setelah grup izin diatur untuk menambahkan grup izin, izin berikutnya tidak diwarisi (izin ini setara dengan izin tertinggi).
                • ", - "not_null" => "Bidang yang harus diisi tidak boleh kosong!", - "picture_can_not_null" => "Foto tidak boleh kosong!", - "rname_success" => "Ganti nama sukses!", - "please_inpute_search_words" => "Masukkan string untuk mencari", - "remove_success" => "Berhasil dihapus!", - "remove_fali" => "Hapus gagal!", - "clipboard_null" => "Clipboard kosong!", - "create_success" => "sukses baru!", - "create_error" => "Baru gagal, memeriksa hak akses direktori!", - "copy_success" => "[Copy] - meliputi keberhasilan clipboard!", - "cute_success" => "[Cut] - meliputi keberhasilan clipboard!", - "clipboard_state" => "Status Clipboard:", - "no_permission_write_all" => "File atau direktori tidak dapat ditulisi", - "no_permission_write_file" => "File tidak memiliki izin menulis", - "no_permission_read_all" => "File atau direktori tidak memiliki izin read", - "copy_not_exists" => "Sumber tidak ada", - "current_has_parent" => "folder target adalah subfolder dari folder sumber!", - "past_success" => "operasi paste selesai", - "cute_past_success" => "operasi cut selesai(file sumber dihapus, clipboard kosong)", - "zip_success" => "kompresi selesai", - "not_zip" => "tidak arsip", - "zip_null" => "Tidak dipilih file atau direktori", - "unzip_success" => "unzip lengkap", - "gotoline" => "Langsung ke garis", - "path_is_current" => "Jalan dan jalan saat ini untuk membuka yang sama!", - "path_exists" => "Nama sudah ada!", - "undo" => "pencabutan", - "redo" => "anti pencabutan", - "preview" => "Preview", - "wordwrap" => "wrap", - "show_gutter" => "Tampilkan Nomor Baris", - "char_all_display" => "Menunjukkan karakter tak terlihat", - "auto_complete" => "meminta secara otomatis", - "auto_save" => "Simpan secara otomatis", - "function_list" => "fungsi Daftar", - "code_theme" => "coding Style", - "font_size" => "Font Size", - "confirm" => "Apakah Anda yakin ingin melakukan ini?", - "button_ok" => "menentukan", - "button_submit" => "menyerahkan", - "button_set" => "mendirikan", - "button_cancel" => "dibatalkan", - "button_edit" => "mengedit", - "button_save" => "Hemat", - "button_apply" => "Terapkan", - "button_save_all" => "Simpan Semua", - "button_not_save" => "Jangan simpan", - "button_add" => "menambahkan", - "button_back_add" => "Kembali untuk menambahkan", - "button_del" => "Hapus", - "button_save_edit" => "Simpan perubahan", - "button_save_submit" => "Simpan Kirim", - "button_more" => "lebih", - "button_select_all" => "Pilih Semua / Invert Selection", - "charset_AUTO" => "Identifikasi otomatis", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Arab", - "charset_ISO_8859_6" => "Arab", - "charset_ISO_8859_10" => "bahasa Nordic", - "charset_CP1257" => "bahasa Baltik", - "charset_ISO_8859_13" => "bahasa Baltik", - "charset_ISO_8859_4" => "bahasa Baltik", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "Georgia", - "charset_PT154" => "Kazakh", - "charset_CP949" => "Korea", - "charset_EUC_KR" => "Korea", - "charset_GB18030" => "Cina Sederhana", - "charset_GBK" => "Cina Sederhana", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "lao", - "charset_ISO_8859_16" => "Rumania", - "charset_ISO_8859_3" => "Eropa Selatan", - "charset_EUC_JP" => "Jepang", - "charset_ISO_2022_JP" => "Jepang", - "charset_SHIFT_JIS" => "Jepang", - "charset_KOI8_T" => "bahasa Tajik", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "Turki", - "charset_CP1251" => "Cyrillic", - "charset_ISO_8859_5" => "Cyrillic", - "charset_KOI8_R" => "Cyrillic", - "charset_KOI8_U" => "Cyrillic", - "charset_CP1252" => "bahasa Eropa Barat", - "charset_ISO_8859_1" => "bahasa Eropa Barat", - "charset_ISO_8859_15" => "bahasa Eropa Barat", - "charset_Macintosh" => "bahasa Eropa Barat", - "charset_CP1255" => "Ibrani", - "charset_ISO_8859_8" => "Ibrani", - "charset_CP1253" => "Yunani", - "charset_ISO_8859_7" => "Yunani", - "charset_ARMSCII_8" => "Armenia", - "charset_CP1258" => "Vietnam", - "charset_VISCII" => "Vietnam", - "charset_CP1250" => "bahasa Eropa Tengah", - "charset_ISO_8859_2" => "bahasa Eropa Tengah", - "charset_default_set" => "File Encoding", - "charset_convert_save" => "Simpan file disandikan sebagai", - "PluginCenter" => "pusat Plug", - "PluginBuy" => "Otorisasi pembelian", - "PluginInstalled" => "Telah diinstal", - "PluginUpdate" => "memperbarui", - "PluginListNull" => "Tidak ada konten!", - "PluginType" => "klasifikasi", - "PluginTypeAll" => "lengkap", - "PluginTypeFile" => "File ditingkatkan", - "PluginTypeSafe" => "Alat keamanan", - "PluginTypeTools" => "kegunaan", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "lain", - "PluginInstall" => "menginstal plug", - "PluginEnable" => "Aktifkan plug-in", - "PluginDisable" => "melumpuhkan", - "PluginRemove" => "Uninstall steker", - "PluginConfig" => "Mengkonfigurasi plugin", - "PluginStatus" => "negara", - "PluginStatusEnabled" => "diaktifkan", - "PluginStatusDisabled" => "tidak diaktifkan", - "PluginStatusNotInstall" => "tidak terinstal", - "PluginInstalling" => "Instalasi ...", - "PluginHasUpdate" => "pembaruan", - "PluginUpdateStart" => "Perbarui plug-in", - "PluginNeedConfig" => "Kebutuhan untuk mengaktifkan konfigurasi awal", - "PluginConfigNotNull" => "Bidang yang harus diisi tidak boleh kosong!", - "PluginOpen" => "terbuka", - "PluginAuther" => "penulis", - "PluginVersion" => "edisi", - "PluginDownloadNumber" => "Menginstall", - "PluginBack" => "kembali", - "PluginReadme" => "deskripsi", - "PluginResetConfig" => "Kembalikan pengaturan default", - "PluginInstallSelf" => "Instalasi manual", - "Plugin.config.auth" => "perizinan", - "Plugin.config.authDesc" => "Semua pengaturan yang tersedia, atau menentukan pengguna, kelompok pengguna, kelompok hak asasi dapat menggunakan", - "Plugin.config.authOpen" => "Akses terbuka", - "Plugin.config.authOpenDesc" => "Tidak perlu di kunjungi bisa diakses, bisa digunakan untuk external interface call", - "Plugin.config.authAll" => "pemegang", - "Plugin.config.authUser" => "pemakai", - "Plugin.config.authGroup" => "Departemen yang ditunjuk", - "Plugin.config.authRole" => "kelompok hak asasi", - "Plugin.Config.openWith" => "terbuka gaya", - "Plugin.Config.openWithDilog" => "dialog internal", - "Plugin.Config.openWithWindow" => "Halaman baru terbuka", - "Plugin.Config.fileSort" => "prioritas asosiasi ekstensi", - "Plugin.Config.fileSortDesc" => "Semakin besar ekstensi untuk membuka prioritas yang lebih tinggi", - "Plugin.Config.fileExt" => "Format file yang didukung", - "Plugin.Config.fileExtDesc" => "Terkait Ekstensi untuk plug-in", - "Plugin.tab.basic" => "Pengaturan dasar", - "Plugin.tab.auth" => "perizinan", - "Plugin.tab.others" => "pengaturan lain", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Web Page Preview", - "Plugin.default.picasa" => "Picasa gambar penjelajahan", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer pemain", - "Plugin.auth.viewList" => "Daftar plugin", - "Plugin.auth.setting" => "Pengaturan plugin", - "Plugin.auth.status" => "Matikan", - "Plugin.auth.install" => "Instal / uninstall", - "Explorer.UI.openWith" => "pilih Buka", - "Explorer.UI.openWithText" => "Notepad untuk membuka", - "Explorer.UI.appSetDefault" => "Mengatur terbuka bawaan", - "Explorer.UI.appAwaysOpen" => "Selalu gunakan program yang dipilih untuk membuka file ini", - "Explorer.UI.selectAppDesc" => "Pilih program yang ingin Anda buka file ini", - "Explorer.UI.selectAppWarning" => "Silakan pilih aplikasi!", - "Explorer.UI.appTypeSupport" => "Didukung", - "Explorer.UI.appTypeAll" => "Semua aplikasi", - "kodApp.oexe.edit" => "Edit aplikasi ringan", - "kodApp.oexe.open" => "Buka aplikasi cahaya" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/it/about.html b/plugin/document/kod/config/i18n/it/about.html deleted file mode 100644 index ea6301445..000000000 Binary files a/plugin/document/kod/config/i18n/it/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/it/edit.html b/plugin/document/kod/config/i18n/it/edit.html deleted file mode 100644 index 0e2dfb912..000000000 --- a/plugin/document/kod/config/i18n/it/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  funzionalità Rich

                  -

                  Codice richiede automaticamente

                  -

                  Multi-tema: Scegli il tuo stile di programmazione preferito

                  -

                  Font personalizzato: per l'uso in scena

                  -

                  la modifica del cursore Multi, editing blocco esperienza di programmazione in linea paragonabile al sublime

                  -

                  Blocco pieghevole, espandere; avvolgere

                  -

                  Supporto per molteplici finestre, trascinare la sequenza di commutazione;

                  -

                  Il mantenimento di più documenti, trovare e sostituire; Storia;

                  -

                  Completamento automatico [], {}, (), '' ''

                  -

                  In linea anteprima in tempo reale che permette di innamorare con la programmazione in linea!

                  -

                  zendcodeing supporto, scrivere codice ottanta

                  -

                  Ulteriori caratteristiche di attesa per la vostra scoperta ......

                  -
                  -
                  -

                  150 tipi di codice evidenziazione

                  -

                  Suggerimento: HTML, JavaScript, CSS, meno, sass, SCSS

                  -

                  sviluppo web: PHP, Perl, Python, Ruby, Elang, andare ...

                  -

                  linguaggi tradizionali: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Altro: Markdown, conchiglia, SQL, Lua, XML, YAML ...

                  -
                  -
                  -
                  -
                  -

                  Azione Abbreviazione

                  -
                   scorciatoie comunemente utilizzati: 
                  - Ctrl + s per salvare 
                  - CTRL + A Seleziona tutto Ctrl + x Cut 
                  - Ctrl + C Ctrl + copia incolla v 
                  - Ctrl + Z Annulla Annulla Anti Ctrl + Y 
                  - Ctrl + F per trovare la sostituzione Ctrl + F + F 
                  - Win + alt + 0 chiudi tutto win + Alt + Maiusc + 0 Espandi tutto 
                  - esc [ricerca Exit annullato automaticamente richiede ...] 
                  - Ctrl-Shift-s Anteprima 
                  - Ctrl-Shift-e spettacolo e chiudi funzione 
                  -
                  -
                   Scegli: 
                  - Mouse tendone - drag 
                  - MAIUSC + HOME / fine / su / sinistra / giù / destra 
                  - shift + PaginaSu / PageDown vibrazione su e giù per selezionare 
                  - CTRL + MAIUSC + Home / termine della corrente del cursore per l'inizio e la fine 
                  - alt + mouse per trascinare la selezione del blocco 
                  - ctrl + alt + g lotto selezionare e immettere l'editor multi-scheda corrente 
                  -
                  -
                   cursore: 
                  - home / fine / su / sinistra / giù / destra 
                  - Ctrl + Home / fine spostare il cursore alla testa del documento / coda 
                  - Ctrl + P Vai a tag corrispondenti 
                  - PaginaSu / PageDown cursore su e giù 
                  - alt + il cursore sinistra / destra per passare alla parte superiore della linea 
                  - Maiusc + Freccia a sinistra / destra fino alla fine della linea & 
                  - Ctrl + L per passare a una riga specifica 
                  - Ctrl + Alt + su / giù (sotto) aumentare il cursore 
                  -
                  -
                   Edit: 
                  - Ctrl + / Commenti e Ctrl + alt + uncomment un giustificato 
                  - scheda tavolo spostamento allineamento + tavolo complessivo avanzamento 
                  - Elimina Elimina cancellare l'intera riga Ctrl + D 
                  - Ctrl + CANC per eliminare la riga sulla parola giusta 
                  - ctrl / shift + Backspace per eliminare la parola a sinistra 
                  - alt + shift + su / giù e aggiunti alla linea di copia (in basso) aereo 
                  - ALT + CANC per eliminare il contenuto della destra del cursore 
                  - alt + su / giù sulla riga corrente e la linea (prossimo cambio di linea) 
                  - CTRL + MAIUSC + d righe copiati e aggiunti al seguente 
                  - Ctrl + CANC per eliminare il diritto di parola 
                  - Ctrl + Shift + U convertiti in minuscolo 
                  - ctrl + u testo selezionato in maiuscolo 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/it/help.html b/plugin/document/kod/config/i18n/it/help.html deleted file mode 100644 index 8b41e1c97..000000000 --- a/plugin/document/kod/config/i18n/it/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Gestione dei file
                  -

                  Selezione file: radio, tendone del mouse, shift-elezione, ctrl scelto a caso, la tastiera su e giù, a casa, la selezione finale.

                  -

                  il funzionamento del file: Dopo aver selezionato un file, è possibile copiare, tagliare, eliminare, visualizzare le proprietà di compressione, rinominare, Anteprima aperta e altre operazioni ......

                  -

                  Upload di file: caricare più file in batch; HTML5 caricati trascinamento (trascina per caricare senza finestra, drag and drop per le cartelle)

                  -

                  Funzione: da destra-file, cartelle, a destra, più a destra dopo l'operazione di elezione, desktop, destra, destra albero di directory, collegamenti del menu di destra-bound
                  - (Seleziona tutto - Copia - Cut - Incolla - Elimina - Rinomina, impostare ......)

                  -

                  File Browser: modalità elenco, modalità icona, fare doppio clic in sotto-cartelle; operazione barra degli indirizzi, aprire un record contrarian record di cartella (avanti e indietro)

                  -

                  Supporto drag and drop: Controllare la resistenza, tagliate per realizzare la funzione cartella specificata

                  -

                  Tasti di scelta rapida: eliminare eliminare, Ctrl + A Seleziona tutto, Ctrl + C per copiare, + X Taglia, ricerca di file (contenuto di ricerca) Ctrl

                  -
                  -
                  -
                  Anteprima File
                  -

                  Anteprima file: visualizzare il contenuto di un file di testo di modifica e il salvataggio, html, file swf anteprima,

                  -

                  Anteprima immagine: la generazione automatica delle miniature, slide show di immagini;

                  -

                  Riproduzione audio: riprodurre musica on-line e file video, il supporto mp3, wma, metà, AAC, WAV, MP4,

                  -

                  Video: riproduzione video online, supportati formati: FLV, F4V, 3gp

                  -

                  commerciale: Ufficio Anteprima Online, supportati formati: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  Tasti di scelta rapida
                  -

                  entrare Aperto

                  -

                  Ctrl + A Seleziona tutto

                  -

                  CTRL + C per copiare il selezionato

                  -

                  Ctrl + V per incollare

                  -

                  Ctrl + X Cut

                  -

                  Ctrl + F per cercare nella directory corrente

                  -

                  Alt + N Nuovo file

                  -

                  alt + Nuova cartella m

                  -

                  Elimina Elimina selezionati

                  -

                  backspace Indietro

                  -

                  ctrl + backspace avanti

                  -

                  f2 Rinomina selezionato (cartella)

                  -

                  home / fine / su / giù / sinistra / destra per selezionare il file

                  -

                  anykey Verificare di premere la prima lettera dei file e cartelle di caratteri selezionata ciclo automatico

                  -
                  diff --git a/plugin/document/kod/config/i18n/it/main.php b/plugin/document/kod/config/i18n/it/main.php deleted file mode 100644 index 669e578d4..000000000 --- a/plugin/document/kod/config/i18n/it/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Si prega di selezionare il file ...", - "path_api_select_folder" => "Si prega di selezionare una cartella ...", - "path_api_select_image" => "Si prega di selezionare un'immagine ...", - "share_can_upload" => "consentire Carica", - "move_error" => "spostare fallito", - "setting_basic" => "Impostazioni di base", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "aperto Animazione", - "recycle_open_if" => "Aprire il Cestino", - "recycle_open" => "aperto", - "setting_user_recycle_desc" => "Dopo la cancellazione verranno eliminati direttamente la cancellazione fisica", - "setting_user_animate_desc" => "Finestra aperta e altre animazioni", - "setting_user_sound_desc" => "Suono di funzionamento", - "setting_user_imageThumb" => "Anteprime delle immagini", - "setting_user_imageThumb_desc" => "Migliore esperienza di navigazione dopo l'apertura", - "setting_user_fileSelect" => "Aprire il controllo dell'icona di file", - "setting_user_fileSelect_desc" => "Controllare il tasto sinistro dell'icona File, fare clic con il pulsante destro del mouse sulla voce di scelta rapida del menu", - "qrcode" => "URL codice QR", - "theme_mac" => "Mac bianco minimalista", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blu Classic", - "theme_metro_green" => "Metro luce verde", - "theme_metro_purple" => "Metro elegante viola", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro arancione", - "theme_alpha_image" => "Luminoso - volare", - "theme_alpha_image_sun" => "Luminoso - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "personalizzato", - "theme_diy_title" => "Impostazioni personalizzate a tema", - "theme_diy_background" => "sfondo", - "theme_diy_image" => "immagine", - "theme_diy_color_blur" => "sfumatura di colore", - "theme_diy_image_blur" => "sfocatura dell'immagine", - "theme_diy_image_url" => "indirizzo foto", - "theme_diy_color_start" => "Avvio di colore", - "theme_diy_color_end" => "fine di colore", - "theme_diy_color_radius" => "angolo di gradiente", - "system_role_admin_set" => "Gli amministratori hanno tutti i diritti, senza impostare!", - "login_error_user_not_use" => "Utente è stato disattivato! Si prega di contattare l'amministratore", - "login_error_kod_version" => "conflitto di versione", - "login_error_role" => "gruppo di viste delle autorizzazioni non esiste, si prega di contattare l'amministratore", - "no_permission_group" => "Non sei in questo gruppo!", - "no_permission_write" => "La directory non ha il permesso di scrittura", - "user" => "utente", - "save_as" => "Salva con nome", - "check_update" => "aggiornare", - "keyboard_type" => "Keyboard Mode", - "font_family" => "Caratteri", - "code_mode" => "L'evidenziazione della sintassi", - "path_can_not_share" => "Supporta solo condividere i propri documenti!", - "path_can_not_action" => "Questa directory non supporta questa operazione!", - "wap_page_pc" => "Versione PC", - "wap_page_phone" => "mobile", - "image_size" => "dimensione immagine", - "no_permission_action" => "Non si dispone di questa autorizzazione, si prega di contattare l'amministratore!", - "path_is_root_tips" => "Si è giunti alla directory principale!", - "kod_group" => "organizzazione", - "my_kod_group" => "Sono nel dipartimento", - "space_tips_default" => "(GB) 0 nessun limite", - "space_tips_full" => "senza limitare", - "space_size" => "spazio", - "space_size_use" => "Uso di spazio", - "space_is_full" => "Non è rimasto abbastanza spazio, si prega di contattare l'amministratore!", - "system_open_true_path" => "aperto con successo nel file manager!", - "group_role_error" => "errore di autorizzazioni di ruolo (non impostazioni di autorizzazione)", - "group_role_error_admin" => "autorizzazioni insufficienti", - "markdown_content" => "Sommario", - "system_group" => "Utenti e dipartimenti", - "system_group_edit" => "Direzione del Dipartimento", - "system_group_role" => "identità di ruolo", - "system_group_create" => "Nuovo dipartimento", - "system_group_name" => "Nome del Dipartimento", - "system_group_father" => "Dipartimento superiore", - "system_group_add" => "Aggiungi sotto-reparto", - "system_group_remove" => "Rimuovere il dipartimento", - "system_group_remove_tips" => "Sei sicuro di eliminare il reparto?
                  Dopo l'eliminazione della parte dell'utente verrà rimosso, il sottosettore è stato spostato nel settore root", - "system_group_select" => "Selezionare reparto", - "system_group_select_result" => "I membri appartengono ai seguenti settori", - "system_role_admin_tips" => "Note: gli amministratori di sistema non sono autorizzati a controllare", - "system_member_action" => "Gestione utenti", - "system_member_add" => "Nuovo utente", - "system_member_role" => "ruoli di autorizzazione", - "system_member_role_select" => "selezionare", - "system_member_password_tips" => "Non riempire non modificati", - "system_set_home_path" => "catalogo personalizzato", - "system_set_home_path_tips" => "La directory predefinita è vuota", - "system_member_group" => "Dove il dipartimento", - "system_member_group_edit" => "Dipartimento editoriale", - "system_member_remove" => "Elimina utente", - "system_member_remove_tips" => "Confermare utente di eliminazione?
                  dopo aver rimosso la directory utente sarà completamente cancellato", - "system_member_set_role" => "Per confermare la modifica dei permessi di gruppo utente selezionati?", - "system_member_remove_group" => "Determinare l'utente selezionato verrà rimosso da questo gruppo?", - "system_member_import" => "Bulk add", - "system_member_import_desc" => "Un utente per riga,
                  già esistono sono silenziosamente ignorati", - "system_member_use" => "permettere", - "system_member_unuse" => "disabilitare", - "system_member_space" => "Imposta la dimensione dello spazio utente ", - "system_member_space_tips" => " Imposta la dimensione dello spazio utente ", - "system_member_space_number" => " Deve essere un numero!", - "system_member_group_config" => "Reparto di impostazione batch", - "system_member_group_remove" => "Rimosso dal dipartimento", - "system_member_group_insert" => "Aggiungi al dipartimento", - "system_member_group_reset" => "Ripristina il reparto", - "system_member_group_error" => "Errore del Dipartimento", - "system_group_action" => "Direzione del Dipartimento", - "system_role_add" => "Aggiungere Identità di ruolo", - "system_role_read" => "Di sola lettura", - "system_role_write" => "Può leggere e scrivere", - "system_setting_root_path" => "accesso root", - "system_setting_root_path_desc" => "Solo un amministratore di sistema può accedere a tutte le directory, i gruppi per i diritti di altri utenti possono vedere solo la propria directory utente. Se si desidera attivare o disattivare l'accesso come amministratore
                  ad altre directory, è possibile modificare il php open_basedir parametri anti-cross-site,set", - "system_group_role_title" => "Gestione del ruolo delle autorità dipartimentali", - "system_group_role_remove" => "OK per cancellare il ruolo di reparto", - "system_group_role_style" => "stile", - "system_group_role_display" => "se", - "system_group_role_display_desc" => "Imposta se visualizzare o meno i diritti utente del reparto", - "role_type_name_read" => "leggere", - "role_type_name_read:list" => "Elenco file", - "role_type_name_read:info" => "File (cartella) struttura Vedi, Ricerca cartella", - "role_type_name_read:copy" => "file Copy", - "role_type_name_read:preview" => "Anteprima file (immagini, documenti, audio e video)", - "role_type_name_read:download" => "File (cartella) Scarica", - "role_type_name_write" => "scrivere", - "role_type_name_write:add" => "Creare un file (cartella), estrarre il file compresso", - "role_type_name_write:edit" => "Salvare il file da modificare", - "role_type_name_write:change" => "Rinominare, regolare la struttura di directory", - "role_type_name_write:upload" => "File (cartella) caricare, scaricare a distanza", - "role_type_name_write:remove" => "File (cartella) eliminare, tagliare", - "group_guest" => "I visitatori", - "group_guest_desc" => "Non sei un membro del dipartimento,
                  può accedere solo alla directory [condivisione condivisa] ai seguenti contenuti, permessi di sola lettura.", - "group_role_lebel_desc" => "Sei un membro di questo dipartimento,
                  Tutti i documenti all'interno del dipartimento Tutti i diritti riservati dall'amministratore", - "button_save_and_add" => "Salva e continuare ad aggiungere", - "path_cannot_search" => "La directory non supporta la ricerca!", - "not_support" => "Non supportato!", - "group_not_exist" => "Gruppo utenti non esiste!", - "upload_clear_all" => "Cancellare tutto", - "upload_clear" => "Cancella Completato", - "upload_setting" => "impostare", - "upload_tips" => "Utilizza caricare fetta, non più soggetta a limiti php.ini; raccomandato trascinare la cartella chrome e l'esperienza caricando goccia", - "upload_exist" => "File con lo stesso nome", - "upload_exist_rename" => "rinominare", - "upload_exist_replace" => "copertura", - "upload_exist_skip" => "saltare", - "upload_add_more" => "Bulk add", - "more" => "più", - "system_setting" => "Impostazioni di sistema", - "openProject" => "Aprire l'editor di progetto", - "url_download" => "Scarica", - "url_link" => "URL", - "app_type_link" => "Tasti di scelta rapida", - "createLink" => "Crea collegamento", - "createLinkHome" => "Inviato al collegamento sul desktop", - "createProject" => "Aggiungendo al progetto editore", - "only_read" => "Di sola lettura", - "only_read_desc" => "La directory non ha il permesso di scrittura
                  È possibile impostare le autorizzazioni per questa directory sul server", - "not_read" => "illeggibile", - "explorerNew" => "Link kod", - "zip_download_ready" => "Dopo la compressione scaricherà automaticamente, attendere prego ...", - "set_background" => "Imposta come sfondo del desktop", - "share" => "quota", - "my_share" => "La mia parte", - "group_share" => "Condivisione esterna del gruppo", - "share_edit" => "Modifica condivisione", - "share_remove" => "Annulla condivisione", - "share_remove_tips" => "Sei sicuro di voler annullare la condivisione? La connessione pubblica sarà invalidata.", - "share_path" => "Condividi il percorso", - "share_title" => "Condivisione delle risorse", - "share_name" => "Condividi il titolo", - "share_time" => "scadenza", - "share_time_desc" => "Null non è impostato", - "share_password" => "Password estratto", - "share_password_desc" => "password vuota non è impostata", - "share_cancle" => "Unsharing", - "share_create" => "Creare un collegamento pubblico", - "share_url" => "Indirizzo comune", - "share_not_download" => "Scarica divieto", - "share_not_download_tips" => "Sharer vietato scaricare!", - "share_code_read" => "lettore di codice", - "share_save" => "Salva configurazione", - "share_error_param" => "Errore parametro!", - "share_error_user" => "Utente Informazioni di errore!", - "share_error_sid" => "Condividere non esiste!", - "share_error_time" => "È arrivato troppo tardi, la quota è scaduto!", - "share_error_path" => "file condiviso non esiste, non viene eliminato o rimosso!", - "share_error_password" => "Password errata!", - "share_error_show_tips" => "Questo tipo non supporta file di anteprima!", - "share_view_num" => "Visualizzazioni:", - "share_download_num" => "download:", - "share_open_page" => "Aprire la pagina condivisa", - "open_the_path" => "Inserisci elenco", - "recycle_clear" => "Svuota cestino", - "recycle_clear_success" => "successo Svuota cestino!", - "recycle_clear_info" => "Sei sicuro di voler svuotare completamente il cestino?", - "fav_remove" => "Annullare la collezione", - "remove_item" => "articoli", - "uploading" => "Caricamento", - "upload_tips_more" => "Troppi file, la raccomandazione del caricamento compressa, quindi decomprimere in linea!", - "uploading_move" => "Nel trasferimento unione ...", - "show_file" => "Nuova pagina di anteprima", - "unknow_file_title" => "File Apri Tip!", - "unknow_file_tips" => "Non supportare l'applicazione di questo file, è possibile:", - "unknow_file_try" => "provare", - "unknow_file_download" => "Scarica il file", - "unknow_plugin_search" => "applicazioni di ricerca legate installati", - "config_save_error_auth" => "Impossibile salvare la configurazione, l'amministratore ha vietato questo privilegio!", - "config_save_error_file" => "Errore, il file non è scrivibile!", - "beautify_code" => "Codice Formatter", - "convert_case" => "caso di conversione", - "convert_upper_case" => "Convertito in caratteri maiuscoli", - "convert_lower_case" => "Convertito in minuscolo", - "editor_insert_time" => "Ora corrente ", - "editor_md5" => " Crittografia Md5 ", - "editor_qrcode" => " Codice bidimensionale stringa ", - "editor_regx" => " Test di espressione regolare ", - "editor_chinese" => " Conversione semplificata ", - "editor_chinese_simple" => " Converti in cinese semplificato ", - "editor_chinese_traditional" => " Converti in cinese tradizionale ", - "editor_base64" => "Codec Base64 ", - "editor_base64_encode" => " Codifica Base64 ", - "editor_base64_decode" => " Decodifica Base64 ", - "editor_url" => " Codec URL ", - "editor_url_encode" => " Codifica dell'URL ", - "editor_url_decode" => " Decodifica URL ", - "editor_unicode" => " Codec Unicode ", - "editor_unicode_encode" => " Codifica Unicode ", - "editor_unicode_decode" => " Decodifica Unicode", - "editor_tools_select_tips" => " Si prega di selezionare il contenuto che si desidera convertire!", - "editor_calc" => "Calcolatrice gratuita", - "shortcut" => "Tasti di scelta rapida", - "use_free" => "Continuare a utilizzare la versione gratuita", - "learn_more" => "Approfondisci", - "replace" => "sostituire", - "selectAll" => "selezionare", - "reload" => "ricaricare", - "about" => "su", - "complete_current" => "Auto-completamento della corrente", - "view" => "vista", - "tools" => "strumento", - "help" => "Aiuto", - "not_exists" => "Non esiste", - "group_role_fileDownload" => "download", - "group_role_share" => "quota", - "users_share" => "compartecipazione", - "system_setting_save" => "Impostazioni di sicurezza", - "system_setting_menu" => "gestione Menu", - "system_name" => "Nome programma", - "system_name_desc" => "Titolo del programma logo", - "system_desc" => "Descrizione del programma", - "path_hidden" => "esclusioni di directory", - "version_not_support" => "La versione non supporta questo, si prega di visitare il sito web ufficiale per acquistare la versione avanzata!", - "version_not_support_number" => "Poiché il numero di restrizione non supporta questa operazione, si prega di acquistare la versione avanzata del sito ufficiale!", - "path_hidden_desc" => "Le directory ei file di default non vengono visualizzate, separati da virgole", - "new_user_folder" => "Il nuovo utente viene creato directory predefinita", - "new_user_folder_desc" => "Separati da virgole", - "new_user_app" => "Il nuovo utente viene creato da app di default", - "new_user_app_desc" => "Applicazioni Application Center, una pluralità di separati da virgole", - "auto_login" => "Visitatori accesso automatico", - "auto_login_desc" => "L'account di accesso predefinita dell'utenteguest/guestutenti; dopo l'apertura per garantire che l'utente esiste", - "first_in" => "Dopo l'accesso al predefinita", - "version_price_free" => "gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory non è scrivibile, impostare la directory e tutte le sottodirectory di provare nuovamente dopo la lettura-scrittura!", - "menu_name" => "nome menu", - "menu_hidden" => "nascondere", - "menu_show" => "display", - "menu_move_down" => "giù", - "menu_move_up" => "su", - "menu_move_del" => "cancellare", - "menu_open_window" => "Aprire una nuova finestra", - "menu_sub_menu" => "sottomenu", - "url_path" => "indirizzo URL", - "url_path_desc" => "indirizzo URL o il codice js", - "no_permission_read" => "Non si ha il permesso di leggere!", - "no_permission_download" => "Non hai il permesso di scaricare!", - "php_env_check" => "Funzionamento monitoraggio ambientale:", - "php_env_error" => "La libreria Php manca", - "php_env_error_ignore" => "Ignora e immettere", - "php_env_error_version" => "versione di PHP non può essere inferiore a 5.0", - "php_env_error_path" => "non scrivibile", - "php_env_error_list_dir" => "Il server Web apre la directory caratteristica messa in vendita per ragioni di sicurezza, disattivare questa funzione!come?", - "php_env_error_gd" => "libreria PHP GD deve essere aperto, altrimenti il ​​codice, utilizzare la miniatura non funzionerà correttamente", - "install_login" => "È possibile utilizzare il seguente conto di login", - "install_enter" => "Il sistema", - "install_user_default" => "Administrator: {0} / (sotto impostare una password)
                  utente medio: {1}
                  Gli utenti ospiti: {2}", - "login_root_password" => "Impostare la password dell'amministratore", - "login_root_password_repeat" => "Confermare nuovamente la password", - "login_root_password_equal" => "Le due password non corrispondono!", - "login_root_password_tips" => "Impostare una password di amministratore!", - "forget_password" => "Hai dimenticato la password", - "forget_password_tips" => "Hai dimenticato la password di amministratore:
                  Si prega di log del server eliminare ./data/system/install.lock resettare;

                  Non amministratore Forgot Password:
                  Si prega di contattare l'amministratore per ripristinare!", - "copyright_desc" => "Kodexplorer è un sistema di gestione dei documenti web acclamato, è possibile utilizzarlo per la gestione dei documenti interni o in comune, può essere utilizzato anche sul server di gestione del sito, sostituire FTP, anche se webIDE sviluppo direttamente online. È inoltre possibile programmare il secondo sviluppo di integrare questo in sistemi esistenti.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango nuvola • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango nuvola • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao nube, nube di mango, i sistemi di gestione dei documenti, dischi enterprise cloud, esploratore ,, documentazione in linea, Ufficio on-line, ufficio online, in linea CAD anteprima, modifica in linea , editore on-line", - "kod_meta_description" => "KodExplorer può offuscare Strada (ex mango cloud) è un fornitore leader di governo / nuvole aziendali privati ​​e sistema di gestione dei documenti on-line per i siti web personali, le implementazioni enterprise cloud privati, storage di rete, la gestione dei documenti online, ufficio on-line per fornire sicuro e controllato, semplice e facile utilizzo, altamente personalizzate prodotti cloud private. Utilizzando le finestre di interfaccia stile, pratiche operative, senza dover adattarsi rapidamente iniziare, sostenere centinaia di popolare formato di anteprima dei file online, la riproduzione e l'editing ecologico, potente, è una prova, una volta, non è più inseparabile dal privato offerte di cloud.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Entra", - "guest_login" => "ospite Accedi", - "username" => "Account di accesso", - "userNickName" => "Nickname utente", - "password" => "password", - "login_code" => "codici", - "need_check_code" => "codice di autenticazione di accesso aperto", - "need_check_code_desc" => "Dopo aver effettuato l'accesso, è necessario inserire il codice di verifica.", - "setting_csrf_protect" => "Protezione aperta CSRF", - "setting_csrf_protect_desc" => "Dopo tipo di attacco può proteggere efficacemente csrf apertura", - "login_rember_password" => "Ricorda password", - "setting_show_root_group" => "Elencare tutti i reparti", - "setting_show_root_group_desc" => "Directory reparto directory albero se elencare tutti i reparti", - "setting_show_share_user" => "Un elenco di tutti gli utenti", - "setting_show_share_user_desc" => "Il reparto principale della directory albero è elencato per tutte le condivisioni dell'utente", - "setting_clear_user_recycle" => "Svuotare il cestino per tutti gli utenti", - "setting_clear_cache" => "Svuotare la cache", - "setting_icp" => "Copyright o registrare il numero", - "setting_global_css" => "CSS personalizzato globale", - "setting_global_css_desc" => "Tutte le pagine saranno inserite CSS personalizzato", - "setting_global_html" => "Il codice HTML di statistica", - "setting_global_html_desc" => "Tutte le pagine saranno inseriti in questo codice html paragrafo, il codice può essere posizionato statistiche di terze parti", - "us" => "kodcloud.com", - "login_not_null" => "Nome utente e password non può essere vuoto!", - "code_error" => "codici di errore", - "password_error" => "Nome utente o la password non è corretto!", - "password_not_null" => "La password non può essere vuoto!", - "old_password_error" => "La vecchia password è sbagliata!", - "permission" => "Il permesso!", - "permission_edit" => "modificare le autorizzazioni", - "file_info_owner" => "proprietario", - "file_info_group" => "gruppo", - "no_permission" => "Amministratore ha vietato questo privilegio!", - "no_permission_ext" => "Amministratore ha vietato questo tipo di permessi dei file", - "dialog_max" => "massimizzare", - "dialog_min" => "ridurre al minimo", - "dialog_min_all" => "minimizzare tutto", - "dialog_display_all" => "Mostra tutte le finestre", - "dialog_close_all" => "Chiudi tutto", - "open" => "aperto", - "others" => "altro", - "open_with" => "Apri per ...", - "close" => "vicino", - "close_all" => "Chiudi tutto", - "close_left" => "Chiudere la scheda sinistra", - "close_right" => "Chiudi schede a destra", - "close_others" => "Chiudi Altro", - "loading" => "Operazione ...", - "warning" => "avvertimento", - "getting" => "Prendi il ...", - "sending" => "La trasmissione dei dati ...", - "data_error" => "Errore di dati!", - "get_success" => "Ottenere il successo!", - "save_success" => "salvato con successo!", - "success" => "operazione riuscita", - "error" => "operazione non riuscita", - "error_repeat" => "L'operazione non riuscita, il nome esiste già!", - "word_error" => "Failure ", - "word_success" => " successo", - "system_error" => "errore di sistema", - "name" => "nome", - "type" => "tipo", - "contain" => "contenere", - "address" => "posizione", - "size" => "dimensione", - "byte" => "byte", - "path" => "sentiero", - "action" => "operativo", - "create_time" => "creato", - "modify_time" => "modificato", - "last_time" => "Ultima Visita", - "sort_type" => "Ordina per", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "directory pubblica", - "system_path_not_change" => "directory di sistema, non può essere modificato", - "file" => "file", - "folder" => "cartella", - "copy" => "copia", - "past" => "bastone", - "clone" => "Creare una copia", - "cute" => "cesoia", - "cute_to" => "Sposta in ...", - "copy_to" => "Copia in ...", - "remove" => "cancellare", - "remove_force" => "completamente rimuovere", - "info" => "proprietà", - "list_type" => "vista", - "list_icon" => "serie icona", - "list_list" => "disposizione lista", - "list_list_split" => "modalità colonna", - "sort_up" => "incremento", - "sort_down" => "decrescente", - "order_type" => "Ordina per", - "order_desc" => "discendente", - "order_asc" => "ascendente", - "rename" => "rinominare", - "add_to_fav" => "Aggiungi ai Preferiti", - "search_in_path" => "Ricerca cartella", - "add_to_play" => "Aggiungi alla playlist", - "manage_fav" => "Gestisci Preferiti", - "refresh_tree" => "albero di directory di aggiornamento", - "manage_folder" => "directory Management", - "close_menu" => "Chiudi menù", - "zip" => "Creare un pacchetto compresso", - "unzip" => "Per estrarre ...", - "unzip_folder" => "Decomprimere in una cartella", - "unzip_this" => "Estrarre alla corrente", - "unzip_to" => "Per estrarre ...", - "zipview_file_big" => "Il file è troppo grande, e poi estrarre l'operazione di anteprima!", - "clipboard" => "vista Appunti", - "clipboard_clear" => "Appunti di un vuoto", - "full_screen" => "schermo intero", - "folder_info_item" => "articoli", - "folder_info_item_select" => "Un selezionato", - "file_load_all" => "Fare doppio clic per caricare tutti ......", - "tips" => "sollecito", - "ziping" => "Zippare ...", - "unziping" => "Estrazione ...", - "moving" => "operazione mobile ...", - "remove_title" => "Elimina Conferma", - "remove_info" => "Conferma per eliminare l'elemento selezionato?", - "remove_title_force" => "eliminati definitivamente", - "remove_info_force" => "Sei sicuro di voler cancellare definitivamente questo documento?", - "name_isexists" => "Sbagliato, il nome esiste già!", - "install" => "installare", - "width" => "larghezza", - "height" => "alto", - "app" => "applicazioni leggere", - "app_store" => "applicazioni leggere", - "app_create" => "Crea Applicazione", - "app_edit" => "Modificare l'applicazione", - "app_group_all" => "completo", - "app_group_game" => "gioco", - "app_group_tools" => "strumento", - "app_group_reader" => "leggere", - "app_group_movie" => "televisione", - "app_group_music" => "musica", - "app_group_life" => "vita", - "app_group_others" => "altro", - "app_desc" => "descrizione", - "app_icon" => "icona applicazioni", - "app_icon_show" => "indirizzo URL o la directory", - "app_group" => "Packet Application", - "app_type" => "tipo", - "app_type_url" => "collegamento", - "app_type_code" => "estensione js", - "app_display" => "esterno", - "app_display_border" => "Senza confini (cioè selezionare senza bordi)", - "app_display_size" => "Ridimensiona (Controllare regolazione)", - "app_size" => "dimensione", - "app_url" => "indirizzo link", - "app_code" => "codice js", - "edit" => "Modifica", - "edit_can_not" => "Non è un file di testo", - "edit_too_big" => "Il file è troppo grande, non può essere superiore a 40M", - "open_default" => "predefinito Aperto", - "open_ie" => "Aprire il browser", - "refresh" => "rinfrescare", - "refresh_all" => "Forzare un aggiornamento", - "newfile" => "Nuovo file", - "newfile_save_as" => "Salva", - "newfolder" => "nuova cartella", - "newothers" => "Nuovo Altro", - "path_loading" => "Caricamento in corso ...", - "go" => "Cammina!", - "go_up" => "strato superiore", - "history_next" => "in avanti", - "history_back" => "ritiro", - "address_in_edit" => "Clicca per entrare in modalità di modifica", - "double_click_rename" => "Fare doppio clic sulla ridenominazione", - "double_click_open" => "Fare doppio clic per aprire", - "path_null" => "Cartella è vuota!", - "file_size_title" => "icona Size", - "file_size_small_super" => "Ultra-piccolo", - "file_size_small" => "icone piccole", - "file_size_default" => "Icone", - "file_size_big" => "Icone grandi", - "file_size_big_super" => "Icone grandi", - "upload" => "Carica", - "upload_ready" => "In attesa per il caricamento", - "upload_success" => "Carica di successo", - "upload_path_current" => "Passare alla directory corrente", - "upload_select" => "Seleziona file", - "upload_max_size" => "La massima ammissibile", - "upload_size_info" => "Se si desidera configurare più, si prega di modificare massimo php.ini di upload consentita. Quando si seleziona un file più grande di questa configurazione verrà automaticamente filtrare.", - "upload_error" => "caricamento fallito", - "upload_error_http" => "errori di rete o del firewall", - "upload_muti" => "Carica di più file", - "upload_drag" => "Drag and drop di upload", - "upload_drag_tips" => "Allentare caricare!", - "path_not_allow" => "Il nome del file non consentita", - "download" => "Scarica", - "downloading" => "Caricamento in corso ...", - "download_address" => "Scarica", - "download_ready" => "Verranno scaricati", - "download_success" => "Scarica il successo!", - "download_error" => "Download non riuscito!", - "download_error_create" => "Errore di scrittura!", - "download_error_exists" => "Link al file non riuscita!", - "upload_error_null" => "Nessun file!", - "upload_error_big" => "dimensione del file supera i limiti del server", - "upload_error_move" => "Impossibile spostare il file!", - "upload_error_exists" => "Il file esiste già", - "upload_local" => "Carica locale", - "download_from_server" => "Remote Scarica", - "save_path" => "Save Path", - "upload_select_muti" => "Una pluralità di upload di file selezionabili", - "search" => "ricerca", - "searching" => "Ricerca in corso ...", - "search_result" => "Risultati della ricerca", - "seach_result_too_more" => "Troppi risultati di ricerca, è consigliato per una directory o di parole", - "search_null" => "Nessun risultato!", - "search_uplow" => "Case sensitive", - "search_content" => "il contenuto dei file Ricerca", - "search_info" => "Si prega di inserire un termine di ricerca e percorsi di ricerca!", - "search_ext_tips" => "Con | separati, ad esempio PHP | js | css
                  Non riempire la ricerca di file di testo predefinito", - "file_type" => "Tipo di file", - "goto" => "Vai a", - "server_dwonload_desc" => "Compito è stato aggiunto alla lista di download", - "parent_permission" => "permessi di directory padre", - "root_path" => "Documenti", - "lib" => "magazzino", - "fav" => "segnalibro", - "desktop" => "Desktop", - "browser" => "Browser", - "my_computer" => "Risorse del computer", - "recycle" => "spazzatura", - "my_document" => "Documenti", - "my_picture" => "Le mie foto", - "my_music" => "My Music", - "my_movie" => "I miei video", - "my_download" => "Download", - "ui_desktop" => "Desktop", - "ui_explorer" => "Gestione dei file", - "ui_editor" => "editore", - "adminer" => "adminer", - "ui_project_home" => "Progetto casa", - "ui_login" => "Entra", - "ui_logout" => "smettere", - "setting" => "Impostazioni di sistema", - "setting_title" => "Opzioni", - "setting_user" => "centro personale", - "setting_password" => "Cambiare password", - "setting_password_old" => "Vecchia password", - "setting_password_new" => "rivisto a", - "setting_language" => "Impostazioni lingua", - "setting_member" => "Gestione utenti", - "setting_group" => "Gestione gruppo di utenti", - "setting_group_add" => "Aggiungere User Group", - "setting_group_edit" => "Gruppi Modifica utenti", - "setting_theme" => "Impostazioni del tema", - "setting_wall" => "Impostazioni dello sfondo", - "setting_wall_desktop" => "Sfondo del desktop", - "setting_wall_desktop_list" => "Gestione della carta da parati desktop", - "setting_wall_login_list" => "Accedi Gestione dello sfondo", - "setting_wall_login_tips" => "Suggerimento: quando c'è più di un pezzo, lo sfondo dell'interfaccia di accesso ruoterà a caso", - "setting_wall_diy" => "carta da parati personalizzata:", - "setting_wall_info" => "Immagine indirizzo URL, le immagini locali può essere giusto per ottenere il browser per aprire l'immagine", - "setting_fav" => "Gestione Preferiti", - "setting_help" => "Uso della Guida", - "setting_about" => "A proposito di opere", - "setting_success" => "La modifica ha avuto effetto!", - "can_not_repeat" => "Non è consentito di ripetere", - "absolute_path" => "indirizzo assoluto", - "group" => "Gruppi di utenti", - "data_not_full" => "I dati presentati incompleti!", - "default_user_can_not_do" => "L'utente predefinito non può funzionare", - "default_group_can_not_do" => "gruppi di utenti predefinito non possono operare", - "username_can_not_null" => "Nome utente non può essere vuoto!", - "groupname_can_not_null" => "User nome del gruppo non può essere vuoto!", - "groupdesc_can_not_null" => "User Group Descrizione non può essere vuoto!", - "group_move_user_error" => "gli utenti Gruppo utenti Impossibile spostare", - "group_already_remove" => "Il gruppo di utenti è stato eliminato", - "group_not_exists" => "Questo gruppo utente non esiste", - "member_add" => "Aggiungi utente", - "password_null_not_update" => "Hanno detto che non hanno cambiato la password non viene riempita", - "if_save_file_tips" => "Alcuni file non vengono salvati. Sei sicuro di chiudere la finestra?", - "if_save_file" => "Il file non è stato salvato, si vuole risparmiare?", - "if_remove" => "Conferma eliminazione", - "member_remove_tips" => "Dopo aver rimosso la directory dell'utente verrà cancellata", - "group_remove_tips" => "Dopo aver rimosso il gruppo di utenti di utenti non può accedere
                  (gruppo di utenti bisogno di ri-set)", - "group_name" => "Nome gruppo di utenti", - "group_name_tips" => "Raccomandazione nome inglese, non può essere ripetuto", - "group_desc" => "Nome visualizzato", - "group_desc_tips" => "Nome gruppo Descrizione", - "group_role_ext" => "restrizioni Extension", - "group_role_ext_tips" => "Con multipla | separati", - "group_role_file" => "Gestione dei file", - "group_role_upload" => "consentire Carica", - "group_role_user" => "dati utente", - "group_role_group" => "Gestione gruppo di utenti", - "group_role_member" => "Gestione utenti", - "group_role_mkfile" => "Nuovo file", - "group_role_mkdir" => "nuova cartella", - "group_role_pathrname" => "rinominare", - "group_role_pathdelete" => "l'eliminazione di file", - "group_role_pathinfo" => "Proprietà file", - "group_role_pathmove" => "Spostare (copia / taglia / incolla / trascinamento operazione)", - "group_role_zip" => "compressione", - "group_role_unzip" => "Unzip", - "group_role_search" => "ricerca", - "group_role_filesave" => "Salvare il file da modificare", - "group_role_can_upload" => "Caricare e scaricare", - "group_role_download" => "Remote Scarica", - "group_role_passowrd" => "Cambiare password", - "group_role_config" => "I dati di configurazione", - "group_role_fav" => "le operazioni di segnalibro (aggiungere / modificare / cancellare)", - "action_list" => "List View", - "action_add" => "aggiungere", - "action_edit" => "Modifica", - "action_del" => "cancellare", - "group_role_ext_warning" => "Caricamento non consentire tali file,
                  Rinomina (rinominato l'estensione specificata),
                  inserendo il tuo, download remoto, estratto", - "group_tips" => "
                • 1. Il nome del gruppo utenti non può essere duplicato Dopo che il nome del gruppo è stato modificato, appartiene all'utente riorganizzato e viene automaticamente associato.
                • 2. Le estensioni limitano la relazione tra la sicurezza del sistema, si prega di essere cauti (se si crea un nuovo php nella directory web, significa che la modifica delle autorizzazioni del programma a questo utente è praticamente impossibile)
                • 3. Gestione della famiglia, gestione dei gruppi di diritti, diritti di visualizzazione, aggiunta, eliminazione e modifica dei diritti sono associati, i programmi vengono automaticamente associati
                • 4. Dopo che il gruppo di autorizzazioni è stato impostato per aggiungere il gruppo di autorizzazioni, l'autorizzazione successiva non viene ereditata (questa autorizzazione è equivalente all'autorizzazione più alta).
                • ", - "not_null" => "I campi obbligatori non può essere vuoto!", - "picture_can_not_null" => "Le foto non può essere vuoto!", - "rname_success" => "Rinomina successo!", - "please_inpute_search_words" => "Si prega di inserire una stringa da cercare", - "remove_success" => "Cancellato con successo!", - "remove_fali" => "Elimina fallito!", - "clipboard_null" => "Appunti è vuoto!", - "create_success" => "Nuovo successo!", - "create_error" => "Nuovo fallisce, controllare le autorizzazioni della directory!", - "copy_success" => "[Copy] - che copre il successo appunti!", - "cute_success" => "[CUT] - che copre il successo appunti!", - "clipboard_state" => "Stato Appunti:", - "no_permission_write_all" => "Il file o la directory non è scrivibile", - "no_permission_write_file" => "Il file non ha il permesso di scrittura", - "no_permission_read_all" => "Il file o la directory non ha permesso di lettura", - "copy_not_exists" => "Origine non esiste", - "current_has_parent" => "Cartella di destinazione è una sottocartella della cartella di origine!", - "past_success" => "operazione pasta viene completata", - "cute_past_success" => "operazione di taglio è completato(file di origine viene eliminato, appunti vuoto)", - "zip_success" => "Compressione completata", - "not_zip" => "non archivio", - "zip_null" => "Non selezionato file o directory", - "unzip_success" => "unzip completo", - "gotoline" => "Vai alla linea", - "path_is_current" => "Il percorso e il percorso corrente di aprire lo stesso!", - "path_exists" => "Il nome esiste già!", - "undo" => "revoca", - "redo" => "Anti revoca", - "preview" => "anteprima", - "wordwrap" => "avvolgere", - "show_gutter" => "Mostra numeri di riga", - "char_all_display" => "Mostra caratteri invisibili", - "auto_complete" => "richiede automaticamente", - "auto_save" => "Salva automaticamente", - "function_list" => "Lista delle funzioni", - "code_theme" => "stile di codifica", - "font_size" => "Dimensione carattere", - "confirm" => "Sei sicuro di volerlo fare?", - "button_ok" => "determinare", - "button_submit" => "presentare", - "button_set" => "impostare", - "button_cancel" => "annullato", - "button_edit" => "Modifica", - "button_save" => "Salva", - "button_apply" => "applicare", - "button_save_all" => "Salva tutto", - "button_not_save" => "Non salvare", - "button_add" => "aggiungere", - "button_back_add" => "Torna aggiungere", - "button_del" => "cancellare", - "button_save_edit" => "Salva le modifiche", - "button_save_submit" => "Salva Invia", - "button_more" => "più", - "button_select_all" => "Seleziona tutto / Inverti selezione", - "charset_AUTO" => "Identificazione automatica", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabo", - "charset_ISO_8859_6" => "arabo", - "charset_ISO_8859_10" => "lingue nordiche", - "charset_CP1257" => "lingue baltiche", - "charset_ISO_8859_13" => "lingue baltiche", - "charset_ISO_8859_4" => "lingue baltiche", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgiano", - "charset_PT154" => "kazako", - "charset_CP949" => "coreano", - "charset_EUC_KR" => "coreano", - "charset_GB18030" => "Cinese", - "charset_GBK" => "Cinese", - "charset_ISO_8859_14" => "celtico", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "rumeno", - "charset_ISO_8859_3" => "Sud europeo", - "charset_EUC_JP" => "giapponese", - "charset_ISO_2022_JP" => "giapponese", - "charset_SHIFT_JIS" => "giapponese", - "charset_KOI8_T" => "lingua tagika", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "turco", - "charset_CP1251" => "cirillico", - "charset_ISO_8859_5" => "cirillico", - "charset_KOI8_R" => "cirillico", - "charset_KOI8_U" => "cirillico", - "charset_CP1252" => "lingue dell'Europa occidentale", - "charset_ISO_8859_1" => "lingue dell'Europa occidentale", - "charset_ISO_8859_15" => "lingue dell'Europa occidentale", - "charset_Macintosh" => "lingue dell'Europa occidentale", - "charset_CP1255" => "ebraico", - "charset_ISO_8859_8" => "ebraico", - "charset_CP1253" => "greco", - "charset_ISO_8859_7" => "greco", - "charset_ARMSCII_8" => "armeno", - "charset_CP1258" => "vietnamita", - "charset_VISCII" => "vietnamita", - "charset_CP1250" => "lingue dell'Europa centrale", - "charset_ISO_8859_2" => "lingue dell'Europa centrale", - "charset_default_set" => "Codifica File", - "charset_convert_save" => "Salvare il file codificato come", - "PluginCenter" => "centro spina", - "PluginBuy" => "Autorizzazione all'acquisto", - "PluginInstalled" => "È stato installato", - "PluginUpdate" => "aggiornare", - "PluginListNull" => "Non v'è alcun contenuto!", - "PluginType" => "classificazione", - "PluginTypeAll" => "completo", - "PluginTypeFile" => "di file migliorata", - "PluginTypeSafe" => "Strumenti per la sicurezza", - "PluginTypeTools" => "utilità", - "PluginTypeMedia" => "multimedia", - "PluginTypeOthers" => "altro", - "PluginInstall" => "installare il tappo", - "PluginEnable" => "Attiva plug-in", - "PluginDisable" => "disabilitare", - "PluginRemove" => "Disinstallare la spina", - "PluginConfig" => "Configurare il plugin", - "PluginStatus" => "stato", - "PluginStatusEnabled" => "abilitato", - "PluginStatusDisabled" => "non abilitato", - "PluginStatusNotInstall" => "non installato", - "PluginInstalling" => "Installazione ...", - "PluginHasUpdate" => "aggiornamenti", - "PluginUpdateStart" => "Aggiornamento plug-in", - "PluginNeedConfig" => "La necessità di consentire la configurazione iniziale", - "PluginConfigNotNull" => "I campi obbligatori non può essere vuoto!", - "PluginOpen" => "aperto", - "PluginAuther" => "autore", - "PluginVersion" => "edizione", - "PluginDownloadNumber" => "installazioni", - "PluginBack" => "ritorno", - "PluginReadme" => "descrizione", - "PluginResetConfig" => "Ripristinare le impostazioni predefinite", - "PluginInstallSelf" => "Installazione manuale", - "Plugin.config.auth" => "permessi", - "Plugin.config.authDesc" => "Tutte le impostazioni disponibili, o specificare gli utenti, gruppi di utenti, gruppi per i diritti possono utilizzare", - "Plugin.config.authOpen" => "Accesso aperto", - "Plugin.config.authOpenDesc" => "Non c'è bisogno di visitare può essere raggiunto, può essere utilizzato per chiamate interfaccia esterne", - "Plugin.config.authAll" => "titolare", - "Plugin.config.authUser" => "utente", - "Plugin.config.authGroup" => "Dipartimento designato", - "Plugin.config.authRole" => "gruppo Diritti", - "Plugin.Config.openWith" => "stile aperto", - "Plugin.Config.openWithDilog" => "dialogo interno", - "Plugin.Config.openWithWindow" => "La nuova pagina si apre", - "Plugin.Config.fileSort" => "priorità associazione estensione", - "Plugin.Config.fileSortDesc" => "Maggiore è l'estensione di aprire priorità maggiore", - "Plugin.Config.fileExt" => "Formati di file supportati", - "Plugin.Config.fileExtDesc" => "Estensione associata al plug-in", - "Plugin.tab.basic" => "Impostazioni di base", - "Plugin.tab.auth" => "permessi", - "Plugin.tab.others" => "altre impostazioni", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Anteprima pagina Web", - "Plugin.default.picasa" => "Picasa che passa in rassegna", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "giocatore JPlayer", - "Plugin.auth.viewList" => "Elenco plugin", - "Plugin.auth.setting" => "Impostazioni del plugin", - "Plugin.auth.status" => "Spegni", - "Plugin.auth.install" => "Installa / Rimuovi", - "Explorer.UI.openWith" => "selezionare Apri", - "Explorer.UI.openWithText" => "Blocco note per aprire", - "Explorer.UI.appSetDefault" => "Impostare l'apertura predefinito", - "Explorer.UI.appAwaysOpen" => "Usa sempre il programma selezionato per aprire questo file", - "Explorer.UI.selectAppDesc" => "Selezionare il programma che si desidera aprire questo file", - "Explorer.UI.selectAppWarning" => "Si prega di selezionare l'applicazione!", - "Explorer.UI.appTypeSupport" => "supportato", - "Explorer.UI.appTypeAll" => "Tutte le applicazioni", - "kodApp.oexe.edit" => "Modifica applicazione luminosa", - "kodApp.oexe.open" => "Aprire l'applicazione della luce" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ja/about.html b/plugin/document/kod/config/i18n/ja/about.html deleted file mode 100644 index db833de36..000000000 Binary files a/plugin/document/kod/config/i18n/ja/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/ja/edit.html b/plugin/document/kod/config/i18n/ja/edit.html deleted file mode 100644 index cce400922..000000000 --- a/plugin/document/kod/config/i18n/ja/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  豊富な機能

                  -

                  コードは自動的に求められます

                  -

                  マルチテーマ:あなたの好きなプログラミングスタイルを選択してください

                  -

                  カスタムフォント:シーンでの使用に

                  -

                  崇高に匹敵するマルチカーソル編集、ブロック編集、オンラインプログラミング経験

                  -

                  折り畳みを阻止する、展開する、ラップ

                  -

                  複数のタブのサポート、スイッチングシーケンスをドラッグします。

                  -

                  複数のドキュメントを維持し、検索と置換;歴史;

                  -

                  オートコンプリート[]、{}、()、 '' ''

                  -

                  あなたは、オンラインプログラミングと恋に落ちることができますオンラインでリアルタイムプレビュー!

                  -

                  サポートをzendcodeing、コード80を書き込みます

                  -

                  あなたの発見を待っているより多くの機能......

                  -
                  -
                  -

                  コードの強調表示の150種類

                  -

                  ヒント:HTMLやJavaScript、CSS、以下、SASS、SCSS

                  -

                  ウェブ開発:PHP、PerlやPython、ルビー、elang、行きます...

                  -

                  伝統的な言語:Java、C、C ++、C#の、ActionScriptの、VBScriptの...

                  -

                  その他:マークダウン、シェル、SQL、LUA、XML、YAML ...

                  -
                  -
                  -
                  -
                  -

                  ショートカットアクション

                  -
                  一般的に使用されるショートカット: 
                  -保存するには、Ctrl + S 
                  - Ctrlキー+セレクトすべてCtrl + Xキー切り取り
                  - Ctrl + C、Ctrl + Vペーストコピー
                  - Ctrl + Z元に戻す元に戻すアンチCTRL + Y 
                  -交換用のCtrl + Fキー+ Fを見つけるには、Ctrl + F 
                  - + 0崩壊+ ALTに勝つすべてが展開すべて0 +シフト+ ALT +勝ちます
                  - ESC [自動的にキャンセル終了検索を促します...] 
                  - Ctrl + Shift +-sのプレビュー
                  - Ctrl + Shift +-E・ショー&Close関数
                  -
                  -
                  選択してください: 
                  -マウスのマーキー - ドラッグ
                  -右/下/左シフト+ホーム/エンド/アップ/ 
                  -シフト+ PageUpキー/ PageDownキーを選択するために上下に反転し、 
                  - CTRL +シフト+ホーム/最初と最後に現在のカーソルの終わり
                  -ブロック選択をドラッグするために、Alt +マウス
                  - CTRL + ALT +グラムのバッチを選択し、現在のマルチタブエディタを入力してください
                  -
                  -
                  カーソル: 
                  -ホーム/エンド/上/左/下/右
                  - CTRL +ホーム/エンドは、文書のヘッド/テールにカーソルを移動します
                  -タグをマッチングするには、Ctrl + Pジャンプ
                  - PageUpキー/ PageDownキーカーソルを上下
                  - ALT +左/右カーソルが行の先頭に移動します
                  -行の末尾へのシフト+左/右カーソル& 
                  -特定の行にジャンプするには、Ctrl + L 
                  - Ctrl + Alt +(下)を上/下にカーソルを高めます
                  -
                  -
                  編集: 
                  - CTRL + /コメント&コメントを解除Ctrl + Alt +詰め
                  -テーブルのタブの整列シフト+テーブル全体の進歩テーブル
                  -行全体CTRLを削除削除削除+ D 
                  - Ctrlキーを押しながら右の単語の行を削除するために削除します
                  -左側の単語を削除するには、Ctrl /シフト+バックスペース
                  - Alt + Shift +アップ/ダウンとは、コピーラインに追加(下)面
                  - ALT +カーソルの右側の内容を削除する削除
                  -現在の行と行(次の行交換)のAlt +アップ/ダウン
                  - Ctrl + Shiftキー+ Dの行がコピーされ、以下に追加しました
                  - Ctrlキーを押しながら単語の権利を削除するには削除します
                  - uは小文字に変換はCtrl + Shift + 
                  - CTRL + U大文字にテキストを選択
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/ja/help.html b/plugin/document/kod/config/i18n/ja/help.html deleted file mode 100644 index dcefa02c5..000000000 --- a/plugin/document/kod/config/i18n/ja/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  ファイル管理
                  -

                  ファイルの選択:ラジオ、マウスマーキー、シフト選挙を、キーボード上下、ランダムに選択Ctrlキー、ホーム、終了の選択。

                  -

                  ファイル操作:ファイルを選択した後、あなたは、コピー切り取り、削除、圧縮のプロパティを表示し、名前の変更、オープンプレビューなどの操作ができ......

                  -

                  ファイルのアップロード:アップロード複数ファイルの一括; HTML5ドラッグアップロード(ドラッグがシームレスウィンドウ、ドラッグをアップロードおよびフォルダのサポートをドロップします)

                  -

                  Right関数:右のファイル、フォルダ、右、複数の右選挙操作の後、デスクトップ、右、右のディレクトリツリー、右結合されるメニューのショートカット
                  - (すべて選択 - コピー - 切り取り - 貼り付け - 削除 - 名前の変更、設定......)

                  -

                  ファイルブラウザ:リストモード、アイコンモード、サブフォルダにダブルクリックして、アドレスバーの操作、フォルダレコード逆張り​​のレコードを開きます(前方および後方)

                  -

                  サポートドラッグ&ドロップ:ドラッグを確認し、指定したフォルダの機能を達成するためにカット

                  -

                  ショートカットキー:削除削除は、Ctrl + Aすべて選択、Ctrl + Cコピーする、+ X切り取り、ファイル検索(検索コンテンツ)CTRL

                  -
                  -
                  -
                  ファイルのプレビュー
                  -

                  プレビューファイル:テキストファイルの編集の内容を表示し、保存し、HTML、SWFファイルのプレビュー、

                  -

                  イメージプレビュー:サムネイルの自動生成、画像のスライドショー。

                  -

                  オーディオ再生:、MP4、オンライン音楽やビデオファイルを再生、MP3、WMA、ミッド、AAC、WAVをサポート

                  -

                  ビデオ:オンラインビデオの再生、サポートされている形式:FLV、F4V、3GP

                  -

                  オフィス:オフィスオンラインプレビュー、サポートされている形式:DOC、DOCX、PPT、PPTX、XLS、XLSX

                  -
                  -
                  -
                  ショートカット
                  -

                  [開く]を入力します。

                  -

                  CTRL +すべてを選択

                  -

                  選択をコピーするために、Ctrl + C

                  -

                  貼り付けCtrl + V

                  -

                  Ctrl + Xキー切り取り

                  -

                  現在のディレクトリを検索するには、Ctrl + F

                  -

                  ALT + N新しいファイル

                  -

                  ALT +メートル新規フォルダ

                  -

                  削除削除選択

                  -

                  バックスペース戻ります

                  -

                  CTRL +前進後退

                  -

                  選択f2の名前の変更(フォルダ)

                  -

                  ファイルを選択するホーム/エンド/上/下/左/右

                  -

                  AnyKeyで自動サイクルを選択した文字のファイル&フォルダの最初の文字を押して確認してください

                  -
                  diff --git a/plugin/document/kod/config/i18n/ja/main.php b/plugin/document/kod/config/i18n/ja/main.php deleted file mode 100644 index 49024c16a..000000000 --- a/plugin/document/kod/config/i18n/ja/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "ファイルを選択してください...", - "path_api_select_folder" => "フォルダを選択してください...", - "path_api_select_image" => "画像を選択してください...", - "share_can_upload" => "アップロードを許可します", - "move_error" => "移動に失敗しました", - "setting_basic" => "基本設定", - "setting_user_sound_open" => "オープンサウンド", - "setting_user_animate_open" => "オープンアニメーション", - "recycle_open_if" => "ごみ箱を開きます", - "recycle_open" => "オープン", - "setting_user_recycle_desc" => "削除後、物理的な削除が直接削除されます。", - "setting_user_animate_desc" => "ウィンドウが開いている、他のアニメーション", - "setting_user_sound_desc" => "操作音", - "setting_user_imageThumb" => "画像のサムネイル", - "setting_user_imageThumb_desc" => "開封後のブラウジングエクスペリエンスの向上", - "setting_user_fileSelect" => "ファイルアイコンのチェックを開く", - "setting_user_fileSelect_desc" => "ファイルアイコン左キーチェック、右クリックメニューショートカットエントリ", - "qrcode" => "URL QRコード", - "theme_mac" => "Macのミニマリスト、白", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "メトロブルークラシック", - "theme_metro_green" => "メトロライトグリーン", - "theme_metro_purple" => "メトロエレガントパープル", - "theme_metro_pink" => "メトロローズ", - "theme_metro_orange" => "メトロ明るいオレンジ色", - "theme_alpha_image" => "ブライト - 飛行", - "theme_alpha_image_sun" => "ブライト - サンセット", - "theme_alpha_image_sky" => "シンフォニー - ブルースカイ", - "theme_diy" => "カスタム", - "theme_diy_title" => "カスタムテーマの設定", - "theme_diy_background" => "背景", - "theme_diy_image" => "絵", - "theme_diy_color_blur" => "グラデーションカラー", - "theme_diy_image_blur" => "画像のぼやけ", - "theme_diy_image_url" => "写真アドレス", - "theme_diy_color_start" => "開始色", - "theme_diy_color_end" => "エンドカラー", - "theme_diy_color_radius" => "グラデーションの角度", - "system_role_admin_set" => "管理者は設定せず、すべての権限を持っています!", - "login_error_user_not_use" => "ユーザーが無効になっています!管理者に連絡してください", - "login_error_kod_version" => "バージョンの競合", - "login_error_role" => "表示権限グループが存在しない、管理者にお問い合わせください", - "no_permission_group" => "あなたはこのグループに属していません!", - "no_permission_write" => "ディレクトリが書き込み権限を持っていません", - "user" => "ユーザー", - "save_as" => "名前を付けて保存", - "check_update" => "更新", - "keyboard_type" => "キーボードモード", - "font_family" => "フォント", - "code_mode" => "構文強調表示", - "path_can_not_share" => "サポートしている唯一の独自のドキュメントを共有!", - "path_can_not_action" => "このディレクトリには、この操作をサポートしていません!", - "wap_page_pc" => "PC版", - "wap_page_phone" => "モバイル", - "image_size" => "画像サイズ", - "no_permission_action" => "あなたはこの権限がありません、管理者に連絡してください!", - "path_is_root_tips" => "これは、ルートディレクトリに来ています!", - "kod_group" => "組織", - "my_kod_group" => "私は部署にいる", - "space_tips_default" => "(GB)0制限なし", - "space_tips_full" => "限定することなく、", - "space_size" => "スペース", - "space_size_use" => "宇宙利用", - "space_is_full" => "スペースが足りません。管理者に連絡してください。", - "system_open_true_path" => "正常にファイルマネージャで開きました!", - "group_role_error" => "ロール権限エラー(無許可設定)", - "group_role_error_admin" => "アクセス許可が不十分", - "markdown_content" => "目次", - "system_group" => "ユーザーと部門", - "system_group_edit" => "部長", - "system_group_role" => "役割ID", - "system_group_create" => "新しい部署", - "system_group_name" => "部門名", - "system_group_father" => "優れた部門", - "system_group_add" => "サブ部門を追加", - "system_group_remove" => "部門を削除する", - "system_group_remove_tips" => "その部門を削除してもよろしいですか?
                  ユーザーの一部の削除が削除されると、サブセクターはルートセクターに移動されます", - "system_group_select" => "部門を選択", - "system_group_select_result" => "メンバーは以下の分野に属します", - "system_role_admin_tips" => "備考:システム管理者には管理権限がありません", - "system_member_action" => "ユーザー管理", - "system_member_add" => "新しいユーザー", - "system_member_role" => "アクセス許可の役割", - "system_member_role_select" => "選択します", - "system_member_password_tips" => "記入しないでください変更されません", - "system_set_home_path" => "カスタムカタログ", - "system_set_home_path_tips" => "デフォルトのディレクトリは空です。", - "system_member_group" => "部署", - "system_member_group_edit" => "編集部", - "system_member_remove" => "ユーザーの削除", - "system_member_remove_tips" => "ユーザーの削除を確認してください?
                  あなたはユーザーディレクトリを削除した後は完全に消去されます", - "system_member_set_role" => "選択したユーザーグループの権限の変更を確認するには?", - "system_member_remove_group" => "決定選択したユーザーは、このグループから削除されますか?", - "system_member_import" => "一括追加", - "system_member_import_desc" => "1行に1つのユーザー、
                  がすでに存在しては黙って無視されます", - "system_member_use" => "有効にします", - "system_member_unuse" => "無効にします", - "system_member_space" => "ユーザースペースのサイズを設定する", - "system_member_space_tips" => "ユーザースペースのサイズを設定する", - "system_member_space_number" => "数字でなければならない!", - "system_member_group_config" => "バッチ設定部", - "system_member_group_remove" => "部門から削除されました", - "system_member_group_insert" => "部門に追加する", - "system_member_group_reset" => "部門をリセットする", - "system_member_group_error" => "部門エラー", - "system_group_action" => "部長", - "system_role_add" => "役割のアイデンティティを追加します。", - "system_role_read" => "読み取り専用の", - "system_role_write" => "読み書きできます", - "system_setting_root_path" => "rootアクセス", - "system_setting_root_path_desc" => "システム管理者のみがすべてのディレクトリにアクセスすることができ、ユーザーの他の人権団体は、自分のユーザーディレクトリを見ることができます。あなたがオンまたはオフにしたい場合は
                  他のディレクトリへの管理者アクセスを、あなたは、アンチクロスサイト・パラメータopen_basedirのPHPを変更することができます", - "system_group_role_title" => "部署権限管理", - "system_group_role_remove" => "OKをクリックして部署の役割を削除する", - "system_group_role_style" => "スタイル", - "system_group_role_display" => "かどうか", - "system_group_role_display_desc" => "部門のユーザー権限を表示するかどうかを設定する", - "role_type_name_read" => "読みます", - "role_type_name_read:list" => "ファイルリスト", - "role_type_name_read:info" => "ファイル(フォルダ)のプロパティを表示、フォルダの検索", - "role_type_name_read:copy" => "ファイルコピー", - "role_type_name_read:preview" => "ファイルのプレビュー(画像、文書、オーディオおよびビデオ)", - "role_type_name_read:download" => "ファイル(フォルダ)をダウンロード", - "role_type_name_write" => "書きます", - "role_type_name_write:add" => "ファイル(フォルダ)を作成し、圧縮ファイルを解凍", - "role_type_name_write:edit" => "編集したファイルを保存します", - "role_type_name_write:change" => "名前の変更、ディレクトリ構造を調整", - "role_type_name_write:upload" => "ファイル(フォルダ)のアップロード、リモートダウンロード", - "role_type_name_write:remove" => "ファイル(フォルダ)を削除し、カット", - "group_guest" => "訪問者", - "group_guest_desc" => "あなたは部署のメンバーではありません。
                  の場合、[部門の共有ディレクトリ]には次の内容の読み取り専用権限しかアクセスできません。", - "group_role_lebel_desc" => "あなたはこの部門のメンバーです。
                  部門内のすべての文書管理者が所有するすべての権利", - "button_save_and_add" => "保存して追加していきます", - "path_cannot_search" => "ディレクトリは、検索をサポートしていません!", - "not_support" => "サポートされていません!", - "group_not_exist" => "ユーザグループは存在しません!", - "upload_clear_all" => "すべてクリア", - "upload_clear" => "Clear完了", - "upload_setting" => "セットアップ", - "upload_tips" => "php.iniの制限を受けなくなったスライスのアップロードを使用し、推奨クロムフォルダのドラッグ&ドロップのアップロードの経験", - "upload_exist" => "同じ名前のファイル", - "upload_exist_rename" => "リネーム", - "upload_exist_replace" => "カバー", - "upload_exist_skip" => "スキップ", - "upload_add_more" => "一括追加", - "more" => "もっと", - "system_setting" => "システム設定", - "openProject" => "プロジェクトエディタを開き", - "url_download" => "ダウンロード", - "url_link" => "URL", - "app_type_link" => "ショートカット", - "createLink" => "ショートカットを作成します", - "createLinkHome" => "デスクトップショートカットに送信", - "createProject" => "エディタのプロジェクトへの追加", - "only_read" => "読み取り専用の", - "only_read_desc" => "ディレクトリには、サーバー上でこのディレクトリのパーミッションを設定することができ
                  書き込み権限を持っていません", - "not_read" => "読めません", - "explorerNew" => "KODリンク", - "zip_download_ready" => "自動的にダウンロードされ、圧縮した後、しばらくお待ちください...", - "set_background" => "デスクトップの壁紙として設定", - "share" => "シェア", - "my_share" => "私のシェア", - "group_share" => "グループ外部共有", - "share_edit" => "共有を編集", - "share_remove" => "共有をキャンセルする", - "share_remove_tips" => "共有をキャンセルしてもよろしいですか?パブリック接続は無効になります。", - "share_path" => "パスを共有する", - "share_title" => "リソースの共有", - "share_name" => "タイトルを共有する", - "share_time" => "期限切れ", - "share_time_desc" => "ヌルが設定されていません", - "share_password" => "パスワードを抽出", - "share_password_desc" => "空のパスワードが設定されていません", - "share_cancle" => "共有解除", - "share_create" => "パブリック・リンクを作成します。", - "share_url" => "共用アドレス", - "share_not_download" => "ダウンロード禁止", - "share_not_download_tips" => "共有者は、ダウンロードを禁止しました!", - "share_code_read" => "コードリーダ", - "share_save" => "設定の保存", - "share_error_param" => "パラメータエラー!", - "share_error_user" => "ユーザー情報エラー!", - "share_error_sid" => "シェアは存在しません!", - "share_error_time" => "あなたが遅すぎる来る、シェアの有効期限が切れています!", - "share_error_path" => "共有ファイルが存在しない、それが削除されたか、それを除去して!", - "share_error_password" => "間違ったパスワード!", - "share_error_show_tips" => "このタイプは、ファイルのプレビューをサポートしていません!", - "share_view_num" => "閲覧数:", - "share_download_num" => "ダウンロード:", - "share_open_page" => "共有ページを開きます。", - "open_the_path" => "ディレクトリを入力します", - "recycle_clear" => "空のごみ箱", - "recycle_clear_success" => "ごみ箱を空にする成功!", - "recycle_clear_info" => "あなたはゴミ箱には完全に空にしてもよろしいですか?", - "fav_remove" => "コレクションをキャンセル", - "remove_item" => "アイテム", - "uploading" => "アップロード", - "upload_tips_more" => "あまりにも多くのファイル、圧縮されたアップロードの勧告は、その後、オンライン解凍します!", - "uploading_move" => "マージ転送で...", - "show_file" => "新しいページプレビュー", - "unknow_file_title" => "オープンヒントファイル!", - "unknow_file_tips" => "することができます、このファイルのアプリケーションをサポートしていませんでした。", - "unknow_file_try" => "試します", - "unknow_file_download" => "ファイルをダウンロード", - "unknow_plugin_search" => "検索関連のアプリケーションがインストールされ", - "config_save_error_auth" => "設定を保存できませんでした、管理者がこの特権を禁止しました!", - "config_save_error_file" => "エラー、ファイル書き込みできません!", - "beautify_code" => "コードフォーマッター", - "convert_case" => "ケース変換", - "convert_upper_case" => "大文字に変換", - "convert_lower_case" => "小文字に変換", - "editor_insert_time" => "現在の時間", - "editor_md5" => " Md5暗号化", - "editor_qrcode" => "文字列の2次元コード", - "editor_regx" => "正規表現テスト", - "editor_chinese" => "簡略化された変換", - "editor_chinese_simple" => "簡体字中国語に変換する", - "editor_chinese_traditional" => "繁体字中国語に変換する", - "editor_base64" => "Base64コーデック", - "editor_base64_encode" => " Base64エンコーディング", - "editor_base64_decode" => " Base64デコード", - "editor_url" => " URLコーデック", - "editor_url_encode" => " URLエンコーディング", - "editor_url_decode" => " URLデコード", - "editor_unicode" => " Unicodeコーデック", - "editor_unicode_encode" => " Unicodeエンコーディング", - "editor_unicode_decode" => " Unicodeデコード", - "editor_tools_select_tips" => "変換したいコンテンツを選択してください!", - "editor_calc" => "無料電卓", - "shortcut" => "ショートカット", - "use_free" => "無料版を使用し続けます", - "learn_more" => "詳細はこちら", - "replace" => "交換します", - "selectAll" => "選択します", - "reload" => "リロード", - "about" => "オン", - "complete_current" => "現在の自動補完", - "view" => "ビュー", - "tools" => "ツール", - "help" => "助けます", - "not_exists" => "存在しません。", - "group_role_fileDownload" => "ダウンロード", - "group_role_share" => "シェア", - "users_share" => "シェアリング", - "system_setting_save" => "セキュリティの設定", - "system_setting_menu" => "メニュー管理", - "system_name" => "プログラム名", - "system_name_desc" => "プログラムロゴのタイトル", - "system_desc" => "プログラム記述", - "path_hidden" => "ディレクトリの除外", - "version_not_support" => "これをサポートしていませんお使いのバージョンでは、高度なバージョンを購入することを公式サイトにアクセスしてください!", - "version_not_support_number" => "制限の数がこの操作をサポートしていませんので、公式サイトの高度なバージョンを購入してください!", - "path_hidden_desc" => "デフォルトでは、ディレクトリとファイルは、カンマで区切られ、表示されません", - "new_user_folder" => "新しいユーザーがデフォルトのディレクトリで作成されます", - "new_user_folder_desc" => "カンマで区切られました", - "new_user_app" => "新しいユーザーは、デフォルトのアプリで作成されます", - "new_user_app_desc" => "アプリケーションアプリケーションセンター、カンマで区切られた複数の", - "auto_login" => "訪問者自動ログイン", - "auto_login_desc" => "デフォルトのログインユーザguest/guestゲスト/ゲスト、開封後は、ユーザが存在することを確認します", - "first_in" => "デフォルトにログインした後", - "version_price_free" => "自由な", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "ディレクトリが書き込み可能でない、読み書きの後に再試行するディレクトリとすべてのサブディレクトリを設定します!", - "menu_name" => "メニュー名", - "menu_hidden" => "隠します", - "menu_show" => "ディスプレイ", - "menu_move_down" => "ダウン", - "menu_move_up" => "アップ", - "menu_move_del" => "削除", - "menu_open_window" => "新しいウィンドウを開きます。", - "menu_sub_menu" => "サブメニュー", - "url_path" => "URLアドレス", - "url_path_desc" => "URLアドレスまたはjsのコード", - "no_permission_read" => "あなたは読み取り権限を持っていません!", - "no_permission_download" => "あなたがダウンロードする権限がありません!", - "php_env_check" => "動作環境のモニタリング:", - "php_env_error" => "PHPライブラリがありません", - "php_env_error_ignore" => "無視して入力します。", - "php_env_error_version" => "PHPのバージョンが5.0より小さくすることはできません", - "php_env_error_path" => "書き込み可能ではありません", - "php_env_error_list_dir" => "Webサーバーは、この機能を無効にし、セキュリティ上の理由から機能をディレクトリリストを開きます!か?", - "php_env_error_gd" => "PHPのGDライブラリのサムネイルを使用し、それ以外のコード開いている必要がありますが正しく機能しなくなります", - "install_login" => "あなたは、次のアカウントのログイン情報を使用することができます", - "install_enter" => "システム", - "install_user_default" => "管理者:{0} /(パスワードの設定の下)
                  平均的なユーザー:{1}
                  ゲストユーザ:{2}", - "login_root_password" => "Administratorのパスワードを設定します", - "login_root_password_repeat" => "パスワードを再度確認してください", - "login_root_password_equal" => "2つのパスワードが一致しません!", - "login_root_password_tips" => "管理者パスワードを設定します!", - "forget_password" => "パスワードを忘れました", - "forget_password_tips" => "管理者パスワードを忘れた場合:
                  サーバーがリセット./data/system/install.lock削除ログインしてください。

                  非管理者がパスワードを忘れました:
                  リセットするには、管理者に連絡してください!", - "copyright_desc" => "KodexplorerはあなたもwebIDEオンラインで直接開発として、FTPを交換し、内部文書の管理や共有、また、サイト管理サーバ上で使用することができるためにそれを使用することができ、非常に評価の高いウェブ文書管理システムです。また、あなたの既存のシステムにこれを統合する2番目の開発をプログラムすることができます。", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "マンゴークラウド•エクスプローラ", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "マンゴークラウド•エクスプローラ", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer、KOD、kodCloud、ウェブOS、webIDE、PHPのfilemanage、filemanage、ダオクラウド、クラウドマンゴー、文書管理システム、企業向けクラウドディスク、エクスプローラ,,オンラインドキュメント、オンラインオフィス、オンラインオフィス、オンラインCADプレビュー、オンライン編集、オンラインエディタ", - "kod_meta_description" => "KodExplorerは道をクラウド(旧雲マンゴー)安全と制御、シンプルで簡単な提供するために、政府/企業のプライベートクラウドや個人のウェブサイトのためのオンライン・ドキュメント管理システム、エンタープライズ・プライベート・クラウドの導入、ネットワークストレージ、オンラインドキュメント管理、オンラインオフィスのリーディングプロバイダであることができます使用し、高度にカスタマイズされたプライベートクラウド製品。もはや切っても切れないプライベートから、すぐに始めるに適応しなくても、Windowsスタイルのインターフェイス、事業慣行を使用していない、人気のあるオンラインプレビューファイル形式の数百をサポートし、再生・編集環境に優しい、強力な、一度試していますクラウドの提供。", - "kod_meta_copyright" => "kodcloud.com", - "login" => "ログイン", - "guest_login" => "ゲストログイン", - "username" => "ログインアカウント", - "userNickName" => "ユーザーのニックネーム", - "password" => "パスワード", - "login_code" => "コード", - "need_check_code" => "ログイン認証コードオープン", - "need_check_code_desc" => "ログオン後、確認コードを入力する必要があります。", - "setting_csrf_protect" => "オープンCSRF保護", - "setting_csrf_protect_desc" => "攻撃の種類を開いた後効果的にCSRFを保護することができます。", - "login_rember_password" => "パスワードを覚えておいてください", - "setting_show_root_group" => "すべての部門をリストする", - "setting_show_root_group_desc" => "ツリーディレクトリのルート部門すべての部門をリストするかどうか", - "setting_show_share_user" => "すべてのユーザのリスト", - "setting_show_share_user_desc" => "ツリーディレクトリのルート部門は、すべてのユーザー共有用に一覧表示されます", - "setting_clear_user_recycle" => "すべてのユーザーのごみ箱を空にする", - "setting_clear_cache" => "キャッシュを空に", - "setting_icp" => "著作権やレコード番号", - "setting_global_css" => "カスタムグローバルCSS", - "setting_global_css_desc" => "すべてのページは、カスタムCSSを挿入します", - "setting_global_html" => "統計コードHTML", - "setting_global_html_desc" => "すべてのページは、この段落のhtmlコードに挿入され、コードは、サードパーティの統計を配置することができます", - "us" => "kodcloud.com", - "login_not_null" => "ユーザー名とパスワードは空にすることはできません!", - "code_error" => "エラーコード", - "password_error" => "ユーザー名またはパスワードが正しくありません!", - "password_not_null" => "パスワードは空にすることはできません!", - "old_password_error" => "古いパスワードが間違っています!", - "permission" => "許可!", - "permission_edit" => "アクセス権を変更します", - "file_info_owner" => "所有者", - "file_info_group" => "グループ", - "no_permission" => "管理者は、この権限を無効にしています!", - "no_permission_ext" => "管理者は、ファイルのアクセス権のこのタイプを禁止しました", - "dialog_max" => "最大にします", - "dialog_min" => "最小にします", - "dialog_min_all" => "すべての最小化", - "dialog_display_all" => "すべてのウィンドウを表示します", - "dialog_close_all" => "すべて閉じます", - "open" => "オープン", - "others" => "他の", - "open_with" => "開く...", - "close" => "クローズ", - "close_all" => "すべて閉じます", - "close_left" => "左側のタブを閉じます", - "close_right" => "右側のタブを閉じます", - "close_others" => "閉じるその他", - "loading" => "操作...", - "warning" => "警告", - "getting" => "取得...", - "sending" => "データ伝送...", - "data_error" => "データエラー!", - "get_success" => "成功を入手!", - "save_success" => "正常に保存されました!", - "success" => "成功した操作", - "error" => "操作が失敗しました", - "error_repeat" => "操作に失敗しましたが、名前がすでに存在しています!", - "word_error" => "失敗", - "word_success" => "成功", - "system_error" => "システムエラー", - "name" => "名前", - "type" => "タイプ", - "contain" => "含みます", - "address" => "場所", - "size" => "サイズ", - "byte" => "バイト", - "path" => "パス", - "action" => "オペレーティング", - "create_time" => "作成", - "modify_time" => "修正されました", - "last_time" => "最終ログイン", - "sort_type" => "並べ替え", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "公開ディレクトリ", - "system_path_not_change" => "Systemディレクトリ、変更することはできません", - "file" => "ファイル", - "folder" => "フォルダ", - "copy" => "コピー", - "past" => "スティック", - "clone" => "コピーを作成します。", - "cute" => "せん断", - "cute_to" => "に移動...", - "copy_to" => "へのコピー...", - "remove" => "削除", - "remove_force" => "完全に削除", - "info" => "プロパティ", - "list_type" => "ビュー", - "list_icon" => "アイコン配列", - "list_list" => "リストの配置", - "list_list_split" => "カラムモード", - "sort_up" => "インクリメント", - "sort_down" => "減少", - "order_type" => "並べ替え", - "order_desc" => "下行", - "order_asc" => "上昇", - "rename" => "リネーム", - "add_to_fav" => "お気に入りに追加", - "search_in_path" => "フォルダ検索", - "add_to_play" => "プレイリストに追加します", - "manage_fav" => "お気に入りを管理する", - "refresh_tree" => "リフレッシュディレクトリツリー", - "manage_folder" => "ディレクトリ管理", - "close_menu" => "メニューを閉じます", - "zip" => "圧縮されたパッケージを作成する", - "unzip" => "抽出するには...", - "unzip_folder" => "フォルダに解凍します", - "unzip_this" => "現在に解凍", - "unzip_to" => "抽出するには...", - "zipview_file_big" => "ファイルが大きすぎて、[プレビュー動作を抽出します!", - "clipboard" => "表示クリップボード", - "clipboard_clear" => "空のクリップボード", - "full_screen" => "フルスクリーン", - "folder_info_item" => "アイテム", - "folder_info_item_select" => "選択", - "file_load_all" => "すべてをロードするためにダブルクリックして......", - "tips" => "プロンプト", - "ziping" => "ビュンと...", - "unziping" => "解凍...", - "moving" => "モバイル操作...", - "remove_title" => "削除の確認", - "remove_info" => "選択した項目を削除することを確認してください?", - "remove_title_force" => "完全に削除", - "remove_info_force" => "あなたは必ず永久にこの文書を削除したいですか?", - "name_isexists" => "間違った、名前がすでに存在しています!", - "install" => "インストール", - "width" => "幅", - "height" => "ハイ", - "app" => "光応用", - "app_store" => "光応用", - "app_create" => "アプリケーションを作成します。", - "app_edit" => "アプリケーションを変更します", - "app_group_all" => "完全な", - "app_group_game" => "ゲーム", - "app_group_tools" => "ツール", - "app_group_reader" => "読みます", - "app_group_movie" => "テレビ", - "app_group_music" => "音楽", - "app_group_life" => "生活", - "app_group_others" => "他の", - "app_desc" => "説明", - "app_icon" => "アプリケーションのアイコン", - "app_icon_show" => "URLアドレスまたはディレクトリ", - "app_group" => "アプリケーションパケット", - "app_type" => "タイプ", - "app_type_url" => "リンク", - "app_type_code" => "JSの拡張機能", - "app_display" => "エクステリア", - "app_display_border" => "国境なし(すなわち、フチなしを選択)", - "app_display_size" => "サイズ変更(調整に確認してください)", - "app_size" => "サイズ", - "app_url" => "リンクアドレス", - "app_code" => "jsのコード", - "edit" => "編集", - "edit_can_not" => "いないテキストファイル", - "edit_too_big" => "ファイルが大きすぎる、それは40Mより大きくすることはできません", - "open_default" => "デフォルトオープン", - "open_ie" => "ブラウザを開き", - "refresh" => "リフレッシュ", - "refresh_all" => "リフレッシュを強制", - "newfile" => "新規ファイル", - "newfile_save_as" => "に保存します", - "newfolder" => "新規フォルダ", - "newothers" => "新その他", - "path_loading" => "読み込んでいます...", - "go" => "歩きます!", - "go_up" => "上層", - "history_next" => "フォワード", - "history_back" => "後退", - "address_in_edit" => "編集モードに入るためにクリック", - "double_click_rename" => "名前の変更]をダブルクリックします", - "double_click_open" => "ダブルクリックして開きます", - "path_null" => "フォルダは空です!", - "file_size_title" => "アイコンの大きさ", - "file_size_small_super" => "超小型", - "file_size_small" => "小さいアイコン", - "file_size_default" => "アイコン", - "file_size_big" => "大きいアイコン", - "file_size_big_super" => "大きいアイコン", - "upload" => "アップロード", - "upload_ready" => "アップロードを待っています", - "upload_success" => "成功したアップロード", - "upload_path_current" => "現在のディレクトリに切り替え", - "upload_select" => "[ファイル]", - "upload_max_size" => "最大許容", - "upload_size_info" => "あなたがより多くを構成する場合は、php.iniの最大許容アップロードを変更してください。あなたが選択した場合、この設定よりも大きなファイルが自動的に除外します。", - "upload_error" => "アップロードに失敗しました", - "upload_error_http" => "ネットワークまたはファイアウォールのエラー", - "upload_muti" => "複数ファイルのアップロード", - "upload_drag" => "ドラッグ&ドロップアップロード", - "upload_drag_tips" => "アップロードする緩め!", - "path_not_allow" => "ファイル名は許可されていません", - "download" => "ダウンロード", - "downloading" => "読み込んでいます...", - "download_address" => "ダウンロード", - "download_ready" => "ダウンロードされます", - "download_success" => "成功をダウンロード!", - "download_error" => "ダウンロードに失敗しました!", - "download_error_create" => "エラーを書きます!", - "download_error_exists" => "失敗をファイルへのリンク!", - "upload_error_null" => "ファイルいいえ!", - "upload_error_big" => "ファイルサイズはサーバーの制限を超えています", - "upload_error_move" => "ファイルの移動に失敗しました!", - "upload_error_exists" => "ファイルがすでに存在しています", - "upload_local" => "ローカルアップロード", - "download_from_server" => "リモートダウンロード", - "save_path" => "パスを保存", - "upload_select_muti" => "選択可能なファイルのアップロード、複数の", - "search" => "検索", - "searching" => "検索中...", - "search_result" => "検索結果", - "seach_result_too_more" => "あまりにも多くの検索結果が、それは、ディレクトリや単語のために推奨されます", - "search_null" => "結果はありません!", - "search_uplow" => "大文字と小文字を区別", - "search_content" => "検索ファイルの内容", - "search_info" => "検索語と検索パスを入力してください!", - "search_ext_tips" => "分離|によって;例えば、PHP用| JS | CSS
                  デフォルトのテキストファイル検索を記入しません", - "file_type" => "ファイルの種類", - "goto" => "へジャンプ", - "server_dwonload_desc" => "タスクは、ダウンロードリストに追加されました", - "parent_permission" => "親ディレクトリのパーミッション", - "root_path" => "マイドキュメント", - "lib" => "倉庫", - "fav" => "ブックマーク", - "desktop" => "デスクトップ", - "browser" => "ブラウザ", - "my_computer" => "[マイコンピュータ]", - "recycle" => "ゴミ", - "my_document" => "マイドキュメント", - "my_picture" => "私の写真", - "my_music" => "私の音楽", - "my_movie" => "自分の動画", - "my_download" => "私のダウンロード", - "ui_desktop" => "デスクトップ", - "ui_explorer" => "ファイル管理", - "ui_editor" => "エディタ", - "adminer" => "adminer", - "ui_project_home" => "プロジェクトホーム", - "ui_login" => "ログイン", - "ui_logout" => "やめます", - "setting" => "システム設定", - "setting_title" => "オプション", - "setting_user" => "個人センター", - "setting_password" => "パスワードを変更", - "setting_password_old" => "古いパスワード", - "setting_password_new" => "に改訂", - "setting_language" => "言語設定", - "setting_member" => "ユーザー管理", - "setting_group" => "ユーザグループ管理", - "setting_group_add" => "ユーザグループを追加します。", - "setting_group_edit" => "編集ユーザグループ", - "setting_theme" => "テーマ設定", - "setting_wall" => "壁紙の設定", - "setting_wall_desktop" => "デスクトップの壁紙", - "setting_wall_desktop_list" => "デスクトップの壁紙の管理", - "setting_wall_login_list" => "ログインの壁紙管理", - "setting_wall_login_tips" => "ヒント:複数の部分がある場合、ログインインタフェースの背景はランダムに回転します", - "setting_wall_diy" => "カスタム壁紙:", - "setting_wall_info" => "画像のURLアドレス、ローカル画像は、画像を開くには、ブラウザを得るために右であることができます", - "setting_fav" => "ブックマークマネージャ", - "setting_help" => "ヘルプの使い方", - "setting_about" => "作品について", - "setting_success" => "変更が反映されています!", - "can_not_repeat" => "繰り返すことは許されません", - "absolute_path" => "絶対アドレス", - "group" => "ユーザーグループ", - "data_not_full" => "データが不完全提出しました!", - "default_user_can_not_do" => "デフォルトのユーザーが操作することはできません", - "default_group_can_not_do" => "デフォルトのユーザー・グループが動作することはできません", - "username_can_not_null" => "ユーザー名は空にすることはできません!", - "groupname_can_not_null" => "ユーザーグループ名は空にすることはできません!", - "groupdesc_can_not_null" => "ユーザー・グループ説明は空にすることはできません!", - "group_move_user_error" => "ユーザグループのユーザーは、失敗した移動します", - "group_already_remove" => "ユーザグループは、削除されています", - "group_not_exists" => "このユーザー・グループは存在しません。", - "member_add" => "ユーザーの追加", - "password_null_not_update" => "彼らは、充填されていない、彼らはパスワードを変更していないと述べました", - "if_save_file_tips" => "一部のファイルは保存されません。ウィンドウを閉じてもよろしいですか?", - "if_save_file" => "ファイルが保存されていない、あなたが保存したいですか?", - "if_remove" => "削除の確認", - "member_remove_tips" => "あなたはユーザーディレクトリを削除した後クリアされます", - "group_remove_tips" => "あなたは、ユーザーのユーザーグループがログインできません削除した後、
                  (する必要が再設定されたユーザ・グループ)", - "group_name" => "ユーザグループ名", - "group_name_tips" => "推薦英語名は、繰り返すことができません", - "group_desc" => "表示名", - "group_desc_tips" => "グループ名説明", - "group_role_ext" => "拡張制限", - "group_role_ext_tips" => "複数で|分離", - "group_role_file" => "ファイル管理", - "group_role_upload" => "アップロードを許可します", - "group_role_user" => "ユーザーデータ", - "group_role_group" => "ユーザグループ管理", - "group_role_member" => "ユーザー管理", - "group_role_mkfile" => "新規ファイル", - "group_role_mkdir" => "新規フォルダ", - "group_role_pathrname" => "リネーム", - "group_role_pathdelete" => "ファイルの削除", - "group_role_pathinfo" => "ファイルのプロパティ", - "group_role_pathmove" => "移動(コピー/カット/ペースト/ドラッグ操作)", - "group_role_zip" => "圧縮", - "group_role_unzip" => "解凍します", - "group_role_search" => "検索", - "group_role_filesave" => "編集するファイルを保存します", - "group_role_can_upload" => "アップロードとダウンロード", - "group_role_download" => "リモートダウンロード", - "group_role_passowrd" => "パスワードを変更", - "group_role_config" => "構成データ", - "group_role_fav" => "ブックマークの操作(追加/編集/削除)", - "action_list" => "リストビュー", - "action_add" => "加えます", - "action_edit" => "編集", - "action_del" => "削除", - "group_role_ext_warning" => "
                  、このようなファイルを許可していない名前の変更(指定された拡張子に名前を変更)、
                  編集、保存、リモートダウンロード、抽出液をアップロード", - "group_tips" => "
                • 1.ユーザーグループ名は複製できません。グループ名を変更すると、グループ名は再編成されたユーザーに属し、自動的に関連付けられます。
                • 2.拡張機能はシステムセキュリティ間の関係を制限しますので注意してください(Webディレクトリに新しいPHPを作成した場合、プログラムの権限をこのユーザに変更することは事実上不可能です)
                • 3.世帯管理、権利グループ管理、権利の表示と権利の追加、削除、および変更は拘束され、プログラムは自動的に関連付けられます
                • 4.パーミッショングループがパーミッショングループを追加するように設定された後、後続パーミッションは継承されません(このパーミッションは最高のパーミッションと同等です)。
                • ", - "not_null" => "必須フィールドが空にすることはできません!", - "picture_can_not_null" => "写真は空にすることはできません!", - "rname_success" => "成功名前を変更します!", - "please_inpute_search_words" => "検索する文字列を入力してください", - "remove_success" => "正常に削除!", - "remove_fali" => "削除に失敗しました!", - "clipboard_null" => "クリップボードは空です!", - "create_success" => "新しい成功!", - "create_error" => "新しいディレクトリのパーミッションを確認して、失敗しました!", - "copy_success" => "[コピー] - クリップボードの成功をカバー!", - "cute_success" => "[切り取り] - クリップボードの成功をカバー!", - "clipboard_state" => "クリップボードのステータス:", - "no_permission_write_all" => "ファイルまたはディレクトリが書き込み可能ではありません", - "no_permission_write_file" => "ファイルが書き込み権限を持っていません", - "no_permission_read_all" => "ファイルまたはディレクトリには読み取り権限を持っていません", - "copy_not_exists" => "ソースが存在しません", - "current_has_parent" => "ターゲットフォルダは、ソースフォルダのサブフォルダです!", - "past_success" => "ペースト操作が完了し", - "cute_past_success" => "カット操作が完了した(ソース・ファイルが空、クリップボードに削除されます)", - "zip_success" => "圧縮完了", - "not_zip" => "アーカイブはありません", - "zip_null" => "ファイルまたはディレクトリを選択しません", - "unzip_success" => "完全に解凍します", - "gotoline" => "行へジャンプ", - "path_is_current" => "パスと同じを開くために現在のパス!", - "path_exists" => "名前がすでに存在しています!", - "undo" => "取り消し", - "redo" => "アンチ取り消し", - "preview" => "プレビュー", - "wordwrap" => "ラップ", - "show_gutter" => "行番号を表示", - "char_all_display" => "目に見えない文字を表示します", - "auto_complete" => "自動的に求められます", - "auto_save" => "自動的に保存する", - "function_list" => "機能リスト", - "code_theme" => "コーディングスタイル", - "font_size" => "フォントサイズ", - "confirm" => "あなたは本当にこれをしたいですか?", - "button_ok" => "決定します", - "button_submit" => "提出します", - "button_set" => "セットアップ", - "button_cancel" => "キャンセル", - "button_edit" => "編集", - "button_save" => "保存", - "button_apply" => "適用", - "button_save_all" => "すべて保存", - "button_not_save" => "保存しないでください", - "button_add" => "加えます", - "button_back_add" => "戻る追加します", - "button_del" => "削除", - "button_save_edit" => "変更を保存します", - "button_save_submit" => "Submitを保存", - "button_more" => "もっと", - "button_select_all" => "すべて/反転選択を選択します", - "charset_AUTO" => "自動識別", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "アラビア語", - "charset_ISO_8859_6" => "アラビア語", - "charset_ISO_8859_10" => "北欧の言語", - "charset_CP1257" => "バルト言語", - "charset_ISO_8859_13" => "バルト言語", - "charset_ISO_8859_4" => "バルト言語", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "グルジア", - "charset_PT154" => "カザフ", - "charset_CP949" => "韓国語", - "charset_EUC_KR" => "韓国語", - "charset_GB18030" => "簡体字中国語", - "charset_GBK" => "簡体字中国語", - "charset_ISO_8859_14" => "セルティック", - "charset_CP1133" => "ラオス", - "charset_ISO_8859_16" => "ルーマニア語", - "charset_ISO_8859_3" => "南ヨーロッパ", - "charset_EUC_JP" => "日本の", - "charset_ISO_2022_JP" => "日本の", - "charset_SHIFT_JIS" => "日本の", - "charset_KOI8_T" => "タジク語", - "charset_ISO_8859_11" => "タイ", - "charset_TIS_620" => "タイ", - "charset_CP1254" => "トルコ語", - "charset_CP1251" => "キリル", - "charset_ISO_8859_5" => "キリル", - "charset_KOI8_R" => "キリル", - "charset_KOI8_U" => "キリル", - "charset_CP1252" => "西ヨーロッパ言語", - "charset_ISO_8859_1" => "西ヨーロッパ言語", - "charset_ISO_8859_15" => "西ヨーロッパ言語", - "charset_Macintosh" => "西ヨーロッパ言語", - "charset_CP1255" => "ヘブライ語", - "charset_ISO_8859_8" => "ヘブライ語", - "charset_CP1253" => "ギリシャ語", - "charset_ISO_8859_7" => "ギリシャ語", - "charset_ARMSCII_8" => "アルメニア", - "charset_CP1258" => "ベトナム語", - "charset_VISCII" => "ベトナム語", - "charset_CP1250" => "中央ヨーロッパ言語", - "charset_ISO_8859_2" => "中央ヨーロッパ言語", - "charset_default_set" => "ファイルのエンコーディング", - "charset_convert_save" => "エンコードされたファイルを保存します", - "PluginCenter" => "プラグセンター", - "PluginBuy" => "購入承認", - "PluginInstalled" => "インストールされています", - "PluginUpdate" => "更新", - "PluginListNull" => "何のコンテンツがありません!", - "PluginType" => "分類", - "PluginTypeAll" => "完成", - "PluginTypeFile" => "強化されたファイル", - "PluginTypeSafe" => "セキュリティツール", - "PluginTypeTools" => "ユーティリティ", - "PluginTypeMedia" => "マルチメディア", - "PluginTypeOthers" => "他の", - "PluginInstall" => "プラグインをインストールします。", - "PluginEnable" => "プラグインを有効にします", - "PluginDisable" => "無効にします", - "PluginRemove" => "プラグインをアンインストールします", - "PluginConfig" => "プラグインを設定します", - "PluginStatus" => "状態", - "PluginStatusEnabled" => "使用可能", - "PluginStatusDisabled" => "有効ではありません", - "PluginStatusNotInstall" => "インストールされていません", - "PluginInstalling" => "インストール...", - "PluginHasUpdate" => "アップデート", - "PluginUpdateStart" => "アップデートプラグイン", - "PluginNeedConfig" => "初期設定を有効にする必要があります", - "PluginConfigNotNull" => "必須フィールドが空にすることはできません!", - "PluginOpen" => "オープン", - "PluginAuther" => "著者", - "PluginVersion" => "版", - "PluginDownloadNumber" => "インストール", - "PluginBack" => "リターン", - "PluginReadme" => "説明", - "PluginResetConfig" => "デフォルト設定を復元する", - "PluginInstallSelf" => "手動インストール", - "Plugin.config.auth" => "アクセス権", - "Plugin.config.authDesc" => "利用可能な設定のすべて、または指定したユーザー、ユーザーグループは、人権団体が使用することができます", - "Plugin.config.authOpen" => "オープンアクセス", - "Plugin.config.authOpenDesc" => "訪問する必要はありませんアクセスすることができます、外部インターフェイスの呼び出しに使用することができます", - "Plugin.config.authAll" => "ホルダー", - "Plugin.config.authUser" => "ユーザー", - "Plugin.config.authGroup" => "指定部門", - "Plugin.config.authRole" => "権利グループ", - "Plugin.Config.openWith" => "オープンスタイル", - "Plugin.Config.openWithDilog" => "内部ダイアログ", - "Plugin.Config.openWithWindow" => "新しいページが開きます", - "Plugin.Config.fileSort" => "拡張子の関連付けの優先順位", - "Plugin.Config.fileSortDesc" => "高い優先順位を開くために、より大きな拡張", - "Plugin.Config.fileExt" => "サポートされているファイル形式", - "Plugin.Config.fileExtDesc" => "プラグインに対応した内線", - "Plugin.tab.basic" => "基本設定", - "Plugin.tab.auth" => "アクセス権", - "Plugin.tab.others" => "その他の設定", - "Plugin.default.aceEditor" => "エースエディタ", - "Plugin.default.htmlView" => "Webページのプレビュー", - "Plugin.default.picasa" => "Picasaの写真の閲覧", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayerプレーヤー", - "Plugin.auth.viewList" => "プラグインリスト", - "Plugin.auth.setting" => "プラグインの設定", - "Plugin.auth.status" => "オフにする", - "Plugin.auth.install" => "インストール/アンインストール", - "Explorer.UI.openWith" => "[開く]を選択", - "Explorer.UI.openWithText" => "メモ帳が開きます", - "Explorer.UI.appSetDefault" => "デフォルトのオープンを設定します。", - "Explorer.UI.appAwaysOpen" => "常にこのファイルを開くときは、選択したプログラムを使用します", - "Explorer.UI.selectAppDesc" => "あなたはこのファイルを開くプログラムを選択", - "Explorer.UI.selectAppWarning" => "アプリケーションを選択してください!", - "Explorer.UI.appTypeSupport" => "サポートされる", - "Explorer.UI.appTypeAll" => "すべてのアプリケーション", - "kodApp.oexe.edit" => "ライトアプリケーションの編集", - "kodApp.oexe.open" => "光のアプリケーションを開きます" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ko/about.html b/plugin/document/kod/config/i18n/ko/about.html deleted file mode 100644 index 522b9202a..000000000 Binary files a/plugin/document/kod/config/i18n/ko/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/ko/edit.html b/plugin/document/kod/config/i18n/ko/edit.html deleted file mode 100644 index afb6ed22d..000000000 --- a/plugin/document/kod/config/i18n/ko/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  풍부한 기능

                  -

                  코드가 자동으로 프롬프트

                  -

                  멀티 테마 : 좋아하는 프로그래밍 스타일을 선택

                  -

                  사용자 정의 글꼴 : 현장에서 사용하기에

                  -

                  멀티 커서 편집, 숭고한 비교 블록 편집 온라인 프로그래밍 경험

                  -

                  블록 접는는, 확장, 포장

                  -

                  여러 탭 지원 스위칭 시퀀스를 드래그;

                  -

                  여러 문서를 유지, 찾기 및 바꾸기, 역사;

                  -

                  ''[], {}, (), ''자동 완성

                  -

                  온라인 프로그래밍과 사랑에 빠지게 할 수 있습니다 온라인 실시간 미리보기!

                  -

                  지원을 zendcodeing, 코드 여든 쓰기

                  -

                  당신의 발견을 기다리고 더 많은 기능 ......

                  -
                  -
                  -

                  코드를 강조의 1백50가지

                  -

                  팁 : HTML, 자바 스크립트, CSS, 이하, 말대꾸, SCS들

                  -

                  웹 개발 : PHP, 펄, 파이썬, 루비, elang, 이동 ...

                  -

                  전통적인 언어 : 자바, C, C ++, C #을, 액션 스크립트, VBScript를 ...

                  -

                  기타 : 인하, 쉘, SQL, 루아, XML, YAML ...

                  -
                  -
                  -
                  -
                  -

                  바로 가기 작업

                  -
                   일반적으로 사용되는 바로 가기 : 
                  - Ctrl + S를 저장하는 방법 
                  - Ctrl 키는 모두 선택 Ctrl + X 잘라 내기 + 
                  - Ctrl + C Ctrl 키 + V 붙여 넣기 복사 
                  - Ctrl + Z 실행 취소 취소 방지하려면 Ctrl + y를 
                  - Ctrl + f를 교체 Ctrl 키 + F + F를 찾을 수 
                  - 승리 + ALT + 0 붕괴 모든 승리 + ALT +는 + 0이 모두 확장 이동 
                  - ESC [자동으로 취소 종료 검색 ... 프롬프트] 
                  - Ctrl 키 시프트의 미리보기 
                  - Ctrl 키를 교대 - 전자 쇼 닫기 기능 
                  -
                  -
                   선택 : 
                  - 마우스 윤곽 - 드래그 
                  - / 위 / 왼쪽 / 아래 / 오른쪽 시프트 + 홈 / 끝 
                  - 시프트 + 페이지 업 / PageDown 키를 선택 아래로 뒤집어 
                  - Ctrl 키 + 시프트 + 홈 / 시작 부분과 끝 부분에 현재 커서의 끝 
                  - Alt + 마우스 블록 선택을 드래그합니다 
                  - Ctrl + Alt + g 배치를 선택하고 현재 다중 탭 편집기를 입력 
                  -
                  -
                   커서 : 
                  - 홈 / 엔드 / 위 / 왼쪽 / 아래 / 오른쪽 
                  - Ctrl 키를 + 홈 / 끝은 문서 헤드 / 테일로 커서를 이동 
                  - 일치하는 태그에 CTRL + P는 점프 
                  - 페이지 업 / PageDown 키까지 아래로 커서 
                  - Alt + 왼쪽 / 오른쪽 커서 라인의 상단으로 이동 
                  - 라인의 끝에 + 왼쪽 / 오른쪽 커서를 이동 및 
                  - Ctrl 키 +는 난 특정 행으로 바로 이동합니다 
                  - Ctrl + Alt + / 다운 (아래) 증가 위로 커서 
                  -
                  -
                   편집 : 
                  - Ctrl + / 주석 및 주석 Ctrl + Alt + 정당화 
                  - 테이블 탭 정렬 시프트 + 테이블 전체 발전 테이블 
                  - 전체 라인 Ctrl 키를 삭제 삭제 삭제 + D 
                  - Ctrl 키를 오른쪽 단어에 행을 삭제하려면 삭제할 + 
                  - Ctrl 키 / 교대 + 백 스페이스 왼쪽에있는 단어를 삭제 
                  - Alt + Shift + 업 / 다운 및 복사 라인에 추가 (아래)면 
                  - ALT 커서의 오른쪽의 내용을 삭제하는 삭제 + 
                  - Alt + 위 / 아래 현재 라인과 라인 (다음 줄 교환)에 
                  - Ctrl 키 + 시프트 + D 행을 복사 한 다음에 추가 
                  - Ctrl 키 단어의 오른쪽을 삭제 삭제 + 
                  - u는 소문자로 변환 + Ctrl 키 + 시프트 
                  - Ctrl 키는 대문자로 유에게 선택한 텍스트를 + 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/ko/help.html b/plugin/document/kod/config/i18n/ko/help.html deleted file mode 100644 index 1456f97a3..000000000 --- a/plugin/document/kod/config/i18n/ko/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  파일 관리
                  -

                  파일 선택 : 라디오, 마우스 윤곽, Ctrl 키를 무작위로 선택, 상하 키보드, 가정, 최종 선택 선거를 이동.

                  -

                  파일 작업 : 파일을 선택한 후, 삭제, 잘라 내기, 복사 압축의 속성을보고, 이름을 변경 열고 미리보기 및 기타 작업을 할 수 있습니다 ......

                  -

                  파일 업로드 : 업로드 여러 파일 배치, HTML5 드래그 업로드 (드래그 원활 창, 드래그를 업로드 및 폴더에 대한 지원을 드롭합니다)

                  -

                  마우스 오른쪽 기능 : 마우스 오른쪽 파일, 폴더, 오른쪽, 더 오른쪽 선거 수술 후, 바탕 화면, 오른쪽, 오른쪽 디렉토리 트리, 오른쪽 묶음 메뉴 바로 가기
                  - (- 복사 - 모두 선택을 잘라 내기 - 붙여 넣기 - 삭제 - 이름 변경, 설정 ...)

                  -

                  파일 브라우저 : 목록 모드, 아이콘 모드, 하위 폴더에 두 번 클릭하고 주소 표시 줄 작업 (전후) 폴더 기록 역 투자 기록을 엽니 다

                  -

                  지원 드래그 앤 드롭 : 지정된 폴더 기능을 달성하기 위해 절단, 드래그 확인

                  -

                  바로 가기 키 : 삭제 삭제 Ctrl + A 모두 선택, CTRL + 복사 C, + X 잘라 내기, 파일 검색 (검색 콘텐츠) Ctrl 키

                  -
                  -
                  -
                  파일 미리보기
                  -

                  미리보기 파일 : 텍스트 파일 편집 및 저장의 내용을 보려면, HTML, SWF 파일 미리보기,

                  -

                  이미지 미리보기 : 미리보기, 이미지 슬라이드 쇼의 자동 생성;

                  -

                  오디오 재생 : 온라인 음악 및 비디오 파일 재생, 지원 MP3, WMA, 중간, AAC, WAV, MP4를,

                  -

                  비디오 : 온라인 비디오 재생, 지원되는 형식 : FLV, F4V, 3GP

                  -

                  사무실 : 사무실 온라인 미리보기, 지원되는 형식 : 된 doc, docx, ppt, pptx, XLS, XLSX

                  -
                  -
                  -
                  바로 가기
                  -

                  열기를 입력

                  -

                  Ctrl 키는 모든 선택을 +

                  -

                  Ctrl + c를 복사 선택한

                  -

                  CTRL + V를 붙여 넣습니다

                  -

                  Ctrl + X 잘라 내기

                  -

                  Ctrl + f를 현재 디렉토리를 검색

                  -

                  Alt + N 새 파일

                  -

                  ALT + m 새 폴더

                  -

                  삭제 삭제 선택

                  -

                  백 스페이스로 돌아 가기

                  -

                  앞으로 CTRL + 백 스페이스

                  -

                  선택 F2 이름 바꾸기 (폴더)

                  -

                  홈 / 엔드 파일을 선택 / 위 / 아래 / 왼쪽 / 오른쪽

                  -

                  anykey 자동주기를 선택한 문자 파일 및 폴더의 첫 글자를 눌러 확인

                  -
                  diff --git a/plugin/document/kod/config/i18n/ko/main.php b/plugin/document/kod/config/i18n/ko/main.php deleted file mode 100644 index fb3aa9c57..000000000 --- a/plugin/document/kod/config/i18n/ko/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "파일을 선택하세요 ...", - "path_api_select_folder" => "폴더를 선택하세요 ...", - "path_api_select_image" => "이미지를 선택하세요 ...", - "share_can_upload" => "업로드 허용", - "move_error" => "이동 실패", - "setting_basic" => "기본 설정", - "setting_user_sound_open" => "열기 사운드", - "setting_user_animate_open" => "열기 애니메이션", - "recycle_open_if" => "휴지통을 엽니 다", - "recycle_open" => "열린", - "setting_user_recycle_desc" => "삭제 후 직접 물리적 삭제가 삭제됩니다.", - "setting_user_animate_desc" => "창 열기 및 기타 애니메이션", - "setting_user_sound_desc" => "작동 음", - "setting_user_imageThumb" => "그림 축소판", - "setting_user_imageThumb_desc" => "여는 후에 더 나은 브라우징 경험", - "setting_user_fileSelect" => "파일 아이콘 확인 열기", - "setting_user_fileSelect_desc" => "파일 아이콘 왼쪽 키 확인, 마우스 오른쪽 버튼 메뉴 바로 가기 항목", - "qrcode" => "URL QR 코드", - "theme_mac" => "맥 미니멀 화이트", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "메트로 블루 클래식", - "theme_metro_green" => "메트로 라이트 그린", - "theme_metro_purple" => "보라색 메트로 우아한", - "theme_metro_pink" => "지하철 로즈", - "theme_metro_orange" => "메트로 밝은 오렌지", - "theme_alpha_image" => "밝은 - 비행", - "theme_alpha_image_sun" => "밝은 - 일몰", - "theme_alpha_image_sky" => "심포니 - 푸른 하늘", - "theme_diy" => "사용자 정의", - "theme_diy_title" => "사용자 지정 테마 설정", - "theme_diy_background" => "배경", - "theme_diy_image" => "그림", - "theme_diy_color_blur" => "그라디언트 색상", - "theme_diy_image_blur" => "사진 흐림", - "theme_diy_image_url" => "사진 주소", - "theme_diy_color_start" => "시작 색", - "theme_diy_color_end" => "끝 색상", - "theme_diy_color_radius" => "그라데이션 각도", - "system_role_admin_set" => "관리자는 설정하지 않고, 모든 권한을 가지고!", - "login_error_user_not_use" => "사용자가 비활성화되었습니다! 관리자에게 문의하시기 바랍니다", - "login_error_kod_version" => "버전 충돌", - "login_error_role" => "보기 권한 그룹이 존재하지 않는, 관리자에게 문의하시기 바랍니다", - "no_permission_group" => "이 그룹에 없습니다!", - "no_permission_write" => "디렉토리는 쓰기 권한이 없습니다", - "user" => "사용자", - "save_as" => "다른 이름으로 저장", - "check_update" => "업데이트", - "keyboard_type" => "키보드 모드", - "font_family" => "글꼴", - "code_mode" => "구문 강조", - "path_can_not_share" => "단지 자신의 문서를 공유 지원합니다!", - "path_can_not_action" => "이 디렉토리는이 작업을 지원하지 않습니다!", - "wap_page_pc" => "PC 버전", - "wap_page_phone" => "모바일", - "image_size" => "이미지 크기", - "no_permission_action" => "이 권한이 없습니다, 관리자에게 문의하시기 바랍니다!", - "path_is_root_tips" => "그것은 루트 디렉토리왔다!", - "kod_group" => "조직", - "my_kod_group" => "나는 부서에있다.", - "space_tips_default" => "(GB) 0 제한 없음", - "space_tips_full" => "제한 없음", - "space_size" => "공간", - "space_size_use" => "공간의 사용", - "space_is_full" => "충분한 공간이 남아 있지 않습니다. 관리자에게 문의하십시오!", - "system_open_true_path" => "성공적으로 파일 관리자에서 열립니다!", - "group_role_error" => "역할 권한 오류 (아무 권한 설정)", - "group_role_error_admin" => "권한이 부족합니다", - "markdown_content" => "차례", - "system_group" => "사용자 및 부서", - "system_group_edit" => "부서 관리", - "system_group_role" => "역할 정체성", - "system_group_create" => "새 부서", - "system_group_name" => "부서 이름", - "system_group_father" => "우수한 부서", - "system_group_add" => "하위 부서 추가", - "system_group_remove" => "부서 삭제", - "system_group_remove_tips" => "부서를 삭제 하시겠습니까?
                  사용자의 일부 삭제가 제거 된 후 하위 섹터가 루트 섹터로 이동했습니다", - "system_group_select" => "선택 부서", - "system_group_select_result" => "회원은 다음과 같은 분야에 속하는 것", - "system_role_admin_tips" => "비고 : 시스템 관리자는 제어 권한이 없습니다.", - "system_member_action" => "사용자 관리", - "system_member_add" => "새 사용자", - "system_member_role" => "권한 역할", - "system_member_role_select" => "선택", - "system_member_password_tips" => "기입하지 마십시오 수정되지", - "system_set_home_path" => "사용자 지정 카탈로그", - "system_set_home_path_tips" => "기본 디렉토리가 비어 있습니다", - "system_member_group" => "부서가있는 곳", - "system_member_group_edit" => "편집부", - "system_member_remove" => "사용자 삭제", - "system_member_remove_tips" => "사용자 삭제 확인?
                  당신이 사용자 디렉토리를 제거한 후 것은 완전히 삭제됩니다", - "system_member_set_role" => "선택한 사용자 그룹 권한의 변경 사항을 확인하려면?", - "system_member_remove_group" => "선택한 사용자는이 그룹에서 제거됩니다 판별?", - "system_member_import" => "대량 추가", - "system_member_import_desc" => "한 줄에 하나의 사용자는,
                  이미 자동으로 무시됩니다 존재", - "system_member_use" => "사용", - "system_member_unuse" => "사용 안 함", - "system_member_space" => "사용자 공간 크기 설정 ", - "system_member_space_tips" => " 사용자 공간 크기 설정 ", - "system_member_space_number" => " 숫자 여야합니다!", - "system_member_group_config" => "배치 설정 부서", - "system_member_group_remove" => "부서에서 삭제됨", - "system_member_group_insert" => "부서에 추가", - "system_member_group_reset" => "부서 재설정", - "system_member_group_error" => "부서 오류", - "system_group_action" => "부서 관리", - "system_role_add" => "역할 Identity를 추가", - "system_role_read" => "읽기 전용", - "system_role_write" => "읽기 및 쓰기 수", - "system_setting_root_path" => "루트 액세스", - "system_setting_root_path_desc" => "시스템 관리자 만이 모든 디렉토리에 액세스 할 수 있습니다, 사용자의 다른 인권 단체는 자신의 사용자 디렉토리를 볼 수 있습니다. 켜거나 다른 디렉토리에
                  관리자 액세스 해제하려는 경우, 당신은", - "system_group_role_title" => "부서별 권한 관리", - "system_group_role_remove" => "확인을 클릭하여 부서 역할을 삭제합니다.", - "system_group_role_style" => "스타일", - "system_group_role_display" => "여부", - "system_group_role_display_desc" => "부서 사용자 권한 표시 여부 설정", - "role_type_name_read" => "읽기", - "role_type_name_read:list" => "파일 목록", - "role_type_name_read:info" => "파일 (폴더) 속성보기, 폴더 검색", - "role_type_name_read:copy" => "파일 복사", - "role_type_name_read:preview" => "파일 미리보기 (사진, 문서, 오디오 및 비디오)", - "role_type_name_read:download" => "파일 (폴더) 다운로드", - "role_type_name_write" => "쓰기", - "role_type_name_write:add" => "파일 (폴더) 생성, 압축 파일의 압축을 풉니 다", - "role_type_name_write:edit" => "편집 할 파일을 저장", - "role_type_name_write:change" => "이름 바꾸기 디렉토리 구조를 조정", - "role_type_name_write:upload" => "파일 (폴더) 업로드, 원격 다운로드", - "role_type_name_write:remove" => "파일 (폴더) 삭제, 차단", - "group_guest" => "방문자", - "group_guest_desc" => "당신은 부서의 구성원이 아닙니다.
                  다음 내용을 읽기 전용 권한으로 [부서 공유 디렉토리]에만 액세스 할 수 있습니다.", - "group_role_lebel_desc" => "귀하는이 부서의 구성원입니다
                  부서 내의 모든 문서 관리자가 소유 한 모든 권한", - "button_save_and_add" => "저장하고 계속 추가 할", - "path_cannot_search" => "디렉토리 검색을 지원하지 않습니다!", - "not_support" => "지원되지 않음!", - "group_not_exist" => "사용자 그룹이 존재하지 않는!", - "upload_clear_all" => "모두 지우기", - "upload_clear" => "클리어 완료", - "upload_setting" => "설정", - "upload_tips" => "php.ini의 제한에 따라 더 이상 조각 업로드를 사용, 권장 크롬 폴더 드래그 앤 드롭 업로드 경험", - "upload_exist" => "같은 이름의 파일", - "upload_exist_rename" => "이름 바꾸기", - "upload_exist_replace" => "표지", - "upload_exist_skip" => "건너 뛰기", - "upload_add_more" => "대량 추가", - "more" => "더", - "system_setting" => "시스템 설정", - "openProject" => "프로젝트 편집기를 엽니 다", - "url_download" => "다운로드", - "url_link" => "URL", - "app_type_link" => "바로 가기", - "createLink" => "바로 가기 만들기", - "createLinkHome" => "바탕 화면 바로 가기로 전송", - "createProject" => "에디터 프로젝트에 추가", - "only_read" => "읽기 전용", - "only_read_desc" => "디렉토리는 서버의 디렉토리에 대한 사용 권한을 설정할 수 있습니다
                  쓰기 권한이 없습니다", - "not_read" => "읽을 수", - "explorerNew" => "KOD 링크", - "zip_download_ready" => "자동으로 다운로드합니다 압축 한 후, 잠시 기다려주세요 ...", - "set_background" => "바탕 화면 배경 화면으로 설정", - "share" => "공유", - "my_share" => "내 점유율", - "group_share" => "그룹 외부 공유", - "share_edit" => "공유 수정", - "share_remove" => "공유 취소", - "share_remove_tips" => "공유를 취소 하시겠습니까? 공용 연결이 무효화됩니다.", - "share_path" => "경로 공유", - "share_title" => "리소스 공유", - "share_name" => "제목 공유", - "share_time" => "만료", - "share_time_desc" => "널 (null)이 설정되어 있지 않습니다", - "share_password" => "추출 암호", - "share_password_desc" => "빈 암호가 설정되어 있지 않습니다", - "share_cancle" => "공유를 취소", - "share_create" => "공개 링크 만들기", - "share_url" => "공유 주소", - "share_not_download" => "다운로드 금지", - "share_not_download_tips" => "공유기는 다운로드를 금지!", - "share_code_read" => "코드 리더", - "share_save" => "구성 저장", - "share_error_param" => "매개 변수 오류!", - "share_error_user" => "사용자 정보의 오류!", - "share_error_sid" => "공유가 존재하지 않습니다!", - "share_error_time" => "당신은 너무 늦게, 공유가 만료되었습니다 온다!", - "share_error_path" => "존재하지 않는 파일을 공유,이를 삭제하거나 제거!", - "share_error_password" => "잘못된 암호!", - "share_error_show_tips" => "이 유형의 파일 미리보기를 지원하지 않습니다!", - "share_view_num" => "조회 수 :", - "share_download_num" => "다운로드 :", - "share_open_page" => "공유 페이지를 엽니 다", - "open_the_path" => "디렉토리를 입력", - "recycle_clear" => "휴지통 비우기", - "recycle_clear_success" => "휴지통 비우기 성공!", - "recycle_clear_info" => "당신은 당신이 휴지통으로 완전히 빈 하시겠습니까?", - "fav_remove" => "컬렉션 취소", - "remove_item" => "항목", - "uploading" => "업로드", - "upload_tips_more" => "너무 많은 파일은 압축 업로드의 추천 후 온라인 압축을 풉니 다!", - "uploading_move" => "병합 전송시 ...", - "show_file" => "새로운 페이지 미리보기", - "unknow_file_title" => "열기 팁 파일!", - "unknow_file_tips" => ", 당신이 할 수있는이 파일의 응용 프로그램을 지원하지 않았다 :", - "unknow_file_try" => "시험", - "unknow_file_download" => "파일 다운로드", - "unknow_plugin_search" => "검색 관련 응용 프로그램 설치", - "config_save_error_auth" => "구성을 저장하지 못했습니다 관리자는이 권한을 금지!", - "config_save_error_file" => "오류, 쓸 수 없습니다 파일!", - "beautify_code" => "코드 포매터", - "convert_case" => "케이스 변환", - "convert_upper_case" => "대문자로 변환", - "convert_lower_case" => "소문자로 변환", - "editor_insert_time" => "현재 시간 ", - "editor_md5" => " Md5 암호화 ", - "editor_qrcode" => " 문자열 2 차원 코드 ", - "editor_regx" => " 정규 표현식 테스트 ", - "editor_chinese" => " 단순화 된 변환 ", - "editor_chinese_simple" => " 중국어 간체로 변환 ", - "editor_chinese_traditional" => " 중국어 번체로 변환 ", - "editor_base64" => "Base64 코덱 ", - "editor_base64_encode" => " Base64 인코딩 ", - "editor_base64_decode" => " Base64 디코딩 ", - "editor_url" => " URL 코덱 ", - "editor_url_encode" => " URL 인코딩 ", - "editor_url_decode" => " URL 디코딩 ", - "editor_unicode" => " 유니 코드 코덱 ", - "editor_unicode_encode" => " 유니 코드 인코딩 ", - "editor_unicode_decode" => " 유니 코드 디코딩", - "editor_tools_select_tips" => " 변환 할 콘텐츠를 선택하십시오!", - "editor_calc" => "무료 계산기", - "shortcut" => "바로 가기", - "use_free" => "무료 버전을 계속 사용", - "learn_more" => "자세히보기", - "replace" => "교체", - "selectAll" => "선택", - "reload" => "새로 고침", - "about" => "에", - "complete_current" => "현재의 자동 완성", - "view" => "전망", - "tools" => "수단", - "help" => "도와주세요", - "not_exists" => "존재하지 않음", - "group_role_fileDownload" => "다운로드", - "group_role_share" => "몫", - "users_share" => "공유", - "system_setting_save" => "보안 설정", - "system_setting_menu" => "메뉴 관리", - "system_name" => "프로그램 이름", - "system_name_desc" => "프로그램 로고 제목", - "system_desc" => "프로그램 설명", - "path_hidden" => "디렉토리 제외", - "version_not_support" => "이 기능을 지원하지 않는 버전이, 고급 버전을 구입하는 공식 웹 사이트를 방문하십시오!", - "version_not_support_number" => "제한의 수는이 작업을 지원하지 않기 때문에, 공식 웹 사이트의 고급 버전을 구입하시기 바랍니다!", - "path_hidden_desc" => "기본적으로 디렉토리 및 파일을 쉼표로 구분하여 표시되지", - "new_user_folder" => "새로운 사용자는 기본 디렉토리에 의해 생성된다", - "new_user_folder_desc" => "쉼표로 구분", - "new_user_app" => "새로운 사용자는 기본 앱으로 만들어집니다", - "new_user_app_desc" => "응용 프로그램 응용 프로그램 센터, 쉼표로 구분 된 복수의", - "auto_login" => "방문객 자동 로그인", - "auto_login_desc" => "기본 로그인 사용자guest/guest사용자, 개봉 후는 사용자가 존재하는지 확인하기", - "first_in" => "기본에 로그인 한 후", - "version_price_free" => "무료", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "디렉토리에 쓰기 권한이 없습니다 디렉토리를 설정하고 모든 하위 디렉토리는-읽기 쓰기 후 다시 시도!", - "menu_name" => "메뉴 이름", - "menu_hidden" => "숨기기", - "menu_show" => "디스플레이", - "menu_move_down" => "아래로", - "menu_move_up" => "올라", - "menu_move_del" => "삭제", - "menu_open_window" => "새 창을 엽니 다", - "menu_sub_menu" => "하위 메뉴", - "url_path" => "URL 주소", - "url_path_desc" => "URL 주소 또는 JS 코드", - "no_permission_read" => "당신이 읽을 수있는 권한이 없습니다!", - "no_permission_download" => "당신은 다운로드 할 수있는 권한이 없습니다!", - "php_env_check" => "환경 모니터링 운영 :", - "php_env_error" => "PHP 라이브러리 누락", - "php_env_error_ignore" => "무시하고 입력", - "php_env_error_version" => "PHP 버전보다 5.0 수 없습니다", - "php_env_error_path" => "쓰기 권한이 없습니다", - "php_env_error_list_dir" => "웹 서버는 보안상의 이유로 기능을 나열하는 디렉토리를 열고,이 기능을 해제!방법?", - "php_env_error_gd" => "PHP는 GD 라이브러리가 제대로 작동하지 않습니다 축소판을 사용, 그렇지 않으면 코드가 열려 있어야합니다", - "install_login" => "다음 계정 로그인을 사용할 수 있습니다", - "install_enter" => "시스템", - "install_user_default" => "관리자 : {0} / (암호를 설정 아래)
                  평균 사용자 : {1}
                  게스트 사용자 : {2}", - "login_root_password" => "관리자 암호를 설정", - "login_root_password_repeat" => "다시 한번 비밀번호 확인", - "login_root_password_equal" => "두 암호가 일치하지 않습니다!", - "login_root_password_tips" => "관리자 암호를 설정!", - "forget_password" => "비밀번호를 잊어 버렸", - "forget_password_tips" => "관리자 암호를 잊어 버렸 :
                  다시 ./data/system/install.lock 삭제 서버에 로그인하십시오;

                  비 관리자가 비밀번호를 잊어 버렸 :
                  재설정하려면 관리자에게 문의하시기 바랍니다!", - "copyright_desc" => "Kodexplorer는 당신도 webIDE 온라인으로 직접 개발로, FTP를 교체, 내부 문서 관리 또는 공유, 또한 사이트 관리 서버에서 사용할 수 있습니다에 대 한 사용할 수 있습니다, 높은 평가를 받고 웹 문서 관리 시스템입니다. 또한 기존 시스템에이를 통합하는 두 번째 개발을 프로그래밍 할 수 있습니다.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "망고 클라우드 • 탐색기", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "망고 클라우드 • 탐색기", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, KOD, kodCloud, 웹 OS, webIDE, PHP는 filemanage, filemanage, 다오 구름, 구름 망고, 문서 관리 시스템, 엔터프라이즈 클라우드 디스크, 탐색기,, 온라인 설명서, 온라인 오피스, 온라인 오피스, 온라인 CAD 미리보기, 온라인 편집 온라인 편집기", - "kod_meta_description" => "KodExplorer 도로를 흐리게 할 수 있습니다 (이전의 클라우드 망고) 안전 및 제어, 간단하고 쉽게 제공하기 위해 정부 / 기업 사설 클라우드 및 개인 웹 사이트에 대한 온라인 문서 관리 시스템, 기업의 프라이빗 클라우드 구축, 네트워크 스토리지, 온라인 문서 관리의 선도적 인 공급 업체, 온라인 사무실입니다 사용은 매우 사설 클라우드 제품을 사용자 정의. 하지 않고, 창문 스타일의 인터페이스, 운영 방법을 사용하여 인기있는 온라인 미리보기 파일 형식, 재생 및 편집 환경 친화적 인 강력한 수백 지원, 신속하게 시작에 적응하기 위해 민간에서 더 이상 분리 한 번 시험이다 클라우드 제공.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "로그인", - "guest_login" => "고객 로그인", - "username" => "로그인 계정", - "userNickName" => "사용자 닉네임", - "password" => "암호", - "login_code" => "코드", - "need_check_code" => "로그인 인증 코드 열기", - "need_check_code_desc" => "로그온 한 후 인증 코드를 입력해야합니다.", - "setting_csrf_protect" => "열기 CSRF 보호", - "setting_csrf_protect_desc" => "효과적으로 CSRF를 보호 할 수있는 공격의 오프닝 입력 한 후", - "login_rember_password" => "암호를 기억", - "setting_show_root_group" => "모든 부서 나열", - "setting_show_root_group_desc" => "트리 디렉터리 루트 부서 모든 부서를 나열할지 여부", - "setting_show_share_user" => "모든 사용자의 목록", - "setting_show_share_user_desc" => "모든 사용자 공유에 대해 트리 디렉토리 루트 부서가 나열됩니다.", - "setting_clear_user_recycle" => "모든 사용자의 휴지통 비우기", - "setting_clear_cache" => "캐시 비우기", - "setting_icp" => "저작권 또는 레코드 번호", - "setting_global_css" => "사용자 정의 글로벌 CSS", - "setting_global_css_desc" => "모든 페이지는 사용자 정의 CSS를 삽입합니다", - "setting_global_html" => "통계 코드 HTML", - "setting_global_html_desc" => "모든 페이지가이 단락의 HTML 코드에 삽입됩니다 코드는 타사 통계를 배치 할 수 있습니다", - "us" => "kodcloud.com", - "login_not_null" => "사용자 이름과 암호는 비워 둘 수 없습니다!", - "code_error" => "오류 코드", - "password_error" => "사용자 이름이나 암호가 올바르지 않습니다!", - "password_not_null" => "암호는 비워 둘 수 없습니다!", - "old_password_error" => "이전 암호가 잘못되었습니다!", - "permission" => "권한!", - "permission_edit" => "권한 수정", - "file_info_owner" => "소유자", - "file_info_group" => "그룹", - "no_permission" => "관리자는이 권한을 사용할 수 있습니다!", - "no_permission_ext" => "관리자는 파일 권한이 유형의 금지", - "dialog_max" => "극대화", - "dialog_min" => "최소화", - "dialog_min_all" => "모든 최소화", - "dialog_display_all" => "모든 창을보기", - "dialog_close_all" => "모두 닫습니다", - "open" => "열린", - "others" => "다른", - "open_with" => "열기 위해 ...", - "close" => "가까운", - "close_all" => "모두 닫습니다", - "close_left" => "왼쪽 탭을 닫습니다", - "close_right" => "오른쪽 탭 닫기", - "close_others" => "닫기 다른", - "loading" => "운영 ...", - "warning" => "경고", - "getting" => "가져 오기 ...", - "sending" => "데이터 전송 ...", - "data_error" => "데이터 오류!", - "get_success" => "성공을 받으세요!", - "save_success" => "성공적으로 저장!", - "success" => "성공적인 작업", - "error" => "작업이 실패", - "error_repeat" => "작업 실패는 이름이 이미 존재합니다!", - "word_error" => "실패 ", - "word_success" => " 성공", - "system_error" => "시스템 오류", - "name" => "이름", - "type" => "유형", - "contain" => "포함", - "address" => "위치", - "size" => "크기", - "byte" => "바이트", - "path" => "통로", - "action" => "운영", - "create_time" => "작성", - "modify_time" => "수정", - "last_time" => "최근 방문", - "sort_type" => "정렬", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "공공 디렉토리", - "system_path_not_change" => "시스템 디렉토리, 수정할 수 없습니다", - "file" => "파일", - "folder" => "폴더", - "copy" => "복사", - "past" => "스틱", - "clone" => "복사본 만들기", - "cute" => "전단", - "cute_to" => "로 이동 ...", - "copy_to" => "복사에 ...", - "remove" => "삭제", - "remove_force" => "완전 제거", - "info" => "재산", - "list_type" => "전망", - "list_icon" => "아이콘 배열", - "list_list" => "목록 정렬", - "list_list_split" => "열 모드", - "sort_up" => "증가", - "sort_down" => "감소", - "order_type" => "정렬", - "order_desc" => "내림차순", - "order_asc" => "오름차순", - "rename" => "이름 바꾸기", - "add_to_fav" => "즐겨 찾기에 추가", - "search_in_path" => "폴더 검색", - "add_to_play" => "재생 목록에 추가", - "manage_fav" => "즐겨 찾기 관리", - "refresh_tree" => "새로 고침 디렉토리 트리", - "manage_folder" => "디렉토리 관리", - "close_menu" => "닫기 메뉴", - "zip" => "압축 된 패키지 만들기", - "unzip" => "압축을 풀려면 ...", - "unzip_folder" => "폴더에 압축을 풉니 다", - "unzip_this" => "현재로 추출", - "unzip_to" => "압축을 풀려면 ...", - "zipview_file_big" => "파일이 너무 크고, 다음 미리 연산 추출!", - "clipboard" => "보기 클립 보드", - "clipboard_clear" => "빈 클립 보드", - "full_screen" => "전체 화면", - "folder_info_item" => "항목", - "folder_info_item_select" => "선택된", - "file_load_all" => "모든로드를 두 번 클릭 ......", - "tips" => "신속한", - "ziping" => "압축 중 ...", - "unziping" => "추출 ...", - "moving" => "모바일 작업 ...", - "remove_title" => "삭제 확인", - "remove_info" => "선택한 항목을 삭제 확인?", - "remove_title_force" => "영구적으로 삭제", - "remove_info_force" => "당신은 확실히 영구적이 문서를 삭제 하시겠습니까?", - "name_isexists" => "잘못된 이름이 이미 존재합니다!", - "install" => "설치", - "width" => "폭", - "height" => "높은", - "app" => "라이트 응용 프로그램", - "app_store" => "라이트 응용 프로그램", - "app_create" => "응용 프로그램 만들기", - "app_edit" => "응용 프로그램을 수정", - "app_group_all" => "완전한", - "app_group_game" => "경기", - "app_group_tools" => "수단", - "app_group_reader" => "읽기", - "app_group_movie" => "텔레비전", - "app_group_music" => "음악", - "app_group_life" => "생활", - "app_group_others" => "다른", - "app_desc" => "기술", - "app_icon" => "응용 프로그램 아이콘", - "app_icon_show" => "URL 주소 또는 디렉토리", - "app_group" => "응용 프로그램 패킷", - "app_type" => "유형", - "app_type_url" => "링크", - "app_type_code" => "JS 확장", - "app_display" => "외부", - "app_display_border" => "국경없는 (즉, 경계선 선택)", - "app_display_size" => "(조정에 확인) 크기 변경", - "app_size" => "크기", - "app_url" => "링크 주소", - "app_code" => "JS 코드", - "edit" => "편집", - "edit_can_not" => "아니 텍스트 파일", - "edit_too_big" => "파일이 너무 큰 경우, 이는 40M보다 클 수 없다", - "open_default" => "기본 열기", - "open_ie" => "브라우저를 엽니 다", - "refresh" => "새로 고침", - "refresh_all" => "새로 고침을 강제로", - "newfile" => "새 파일", - "newfile_save_as" => "에 저장", - "newfolder" => "새 폴더", - "newothers" => "새로운 기타", - "path_loading" => "로드 중 ...", - "go" => "걸어!", - "go_up" => "상위 계층", - "history_next" => "앞으로", - "history_back" => "후퇴", - "address_in_edit" => "편집 모드를 입력하려면 클릭", - "double_click_rename" => "이름 바꾸기를 두 번 클릭", - "double_click_open" => "두 번 클릭하여 엽니 다", - "path_null" => "폴더가 비어 있습니다!", - "file_size_title" => "아이콘 크기", - "file_size_small_super" => "초소형", - "file_size_small" => "작은 아이콘", - "file_size_default" => "아이콘", - "file_size_big" => "큰 아이콘", - "file_size_big_super" => "큰 아이콘", - "upload" => "업로드", - "upload_ready" => "업로드 대기 중", - "upload_success" => "성공적으로 업로드", - "upload_path_current" => "현재 디렉토리로 전환", - "upload_select" => "[파일]", - "upload_max_size" => "최대 허용", - "upload_size_info" => "당신이 더 구성 할 경우, php.ini의 최대 허용 업로드를 수정하시기 바랍니다. 당신이 선택하면이 구성보다 큰 파일이 자동으로 필터링됩니다.", - "upload_error" => "업로드 실패", - "upload_error_http" => "네트워크 또는 방화벽 오류", - "upload_muti" => "다중 파일 업로드", - "upload_drag" => "드래그 앤 드롭 업로드", - "upload_drag_tips" => "업로드 풉니 다!", - "path_not_allow" => "파일 이름은 허용되지 않습니다", - "download" => "다운로드", - "downloading" => "로드 중 ...", - "download_address" => "다운로드", - "download_ready" => "다운로드됩니다", - "download_success" => "성공을 다운로드 할 수 있습니다", - "download_error" => "다운로드 실패!", - "download_error_create" => "쓰기 오류!", - "download_error_exists" => "링크 실패 파일에!", - "upload_error_null" => "파일이 없습니다!", - "upload_error_big" => "파일 크기는 서버 제한을 ​​초과", - "upload_error_move" => "파일을 이동하지 못했습니다!", - "upload_error_exists" => "파일이 이미 존재합니다", - "upload_local" => "지역 업로드", - "download_from_server" => "원격 다운로드", - "save_path" => "저장 경로", - "upload_select_muti" => "선택 파일 업로드의 복수", - "search" => "수색", - "searching" => "검색 중 ...", - "search_result" => "검색 결과", - "seach_result_too_more" => "너무 많은 검색 결과, 그것은 디렉토리 나 단어를 추천합니다", - "search_null" => "검색 결과가 없습니다!", - "search_uplow" => "대소 문자를", - "search_content" => "검색 파일 내용", - "search_info" => "검색어를 입력하고 경로를 검색하세요!", - "search_ext_tips" => "분리 |함으로써, 예를 들어, PHP 용 | JS | CSS를
                  기본 텍스트 파일 검색을 기입하지", - "file_type" => "파일 형식", - "goto" => "로 이동", - "server_dwonload_desc" => "태스크 다운로드리스트에 추가 된", - "parent_permission" => "상위 디렉토리 권한", - "root_path" => "내 문서", - "lib" => "창고", - "fav" => "북마크", - "desktop" => "바탕 화면", - "browser" => "브라우저", - "my_computer" => "내 컴퓨터", - "recycle" => "휴지통", - "my_document" => "내 문서", - "my_picture" => "내 사진", - "my_music" => "내 음악", - "my_movie" => "내 동영상", - "my_download" => "내 다운로드", - "ui_desktop" => "바탕 화면", - "ui_explorer" => "파일 관리", - "ui_editor" => "편집자", - "adminer" => "adminer", - "ui_project_home" => "프로젝트 홈", - "ui_login" => "로그인", - "ui_logout" => "종료", - "setting" => "시스템 설정", - "setting_title" => "옵션", - "setting_user" => "개인 센터", - "setting_password" => "암호 변경", - "setting_password_old" => "이전 암호", - "setting_password_new" => "개정", - "setting_language" => "언어 설정", - "setting_member" => "사용자 관리", - "setting_group" => "사용자 그룹 관리", - "setting_group_add" => "사용자 그룹 추가", - "setting_group_edit" => "편집 사용자 그룹", - "setting_theme" => "테마 설정", - "setting_wall" => "바탕 화면 설정", - "setting_wall_desktop" => "바탕 화면 배경 화면", - "setting_wall_desktop_list" => "바탕 화면 배경 화면 관리", - "setting_wall_login_list" => "로그인 배경 화면 관리", - "setting_wall_login_tips" => "도움말 : 두 개 이상의 조각이 있으면 로그인 인터페이스 배경이 무작위로 회전합니다.", - "setting_wall_diy" => "사용자 정의 배경 화면 :", - "setting_wall_info" => "사진의 URL 주소, 지역 사진 이미지를 열려면 브라우저를 얻을 권리가 될 수", - "setting_fav" => "북마크 관리자", - "setting_help" => "도움말 사용", - "setting_about" => "작품 소개", - "setting_success" => "수정 효과를 얻었습니다!", - "can_not_repeat" => "반복 허용되지 않음", - "absolute_path" => "절대 주소", - "group" => "사용자 그룹", - "data_not_full" => "데이터는 불완전 제출!", - "default_user_can_not_do" => "기본 사용자가 조작 할 수 없습니다", - "default_group_can_not_do" => "기본 사용자 그룹이 동작 할 수", - "username_can_not_null" => "사용자 이름은 비워 둘 수 없습니다!", - "groupname_can_not_null" => "사용자 그룹 이름은 비워 둘 수 없습니다!", - "groupdesc_can_not_null" => "사용자 그룹 설명은 비워 둘 수 없습니다!", - "group_move_user_error" => "사용자 그룹의 사용자는 실패으로 이동", - "group_already_remove" => "사용자 그룹이 삭제되었습니다", - "group_not_exists" => "이 사용자 그룹이 존재하지 않습니다", - "member_add" => "사용자 추가", - "password_null_not_update" => "그들은 암호가 작성되지 변경하지 않았다", - "if_save_file_tips" => "일부 파일은 저장되지 않습니다. 창을 닫으시겠습니까?", - "if_save_file" => "파일이 저장되지 않은, 당신은 저장하려면?", - "if_remove" => "삭제 확인", - "member_remove_tips" => "당신은 사용자 디렉토리가 삭제됩니다 제거한 후", - "group_remove_tips" => "사용자가 로그인 할 수있는 사용자의 사용자 그룹을 제거한 후
                  (해야 다시 설정 사용자 그룹)", - "group_name" => "사용자 그룹 이름", - "group_name_tips" => "추천 영어 이름을 반복 할 수 없다", - "group_desc" => "표시 이름", - "group_desc_tips" => "그룹 이름 설명", - "group_role_ext" => "확장 제한", - "group_role_ext_tips" => "여러으로 | 분리", - "group_role_file" => "파일 관리", - "group_role_upload" => "업로드 허용", - "group_role_user" => "사용자 데이터", - "group_role_group" => "사용자 그룹 관리", - "group_role_member" => "사용자 관리", - "group_role_mkfile" => "새 파일", - "group_role_mkdir" => "새 폴더", - "group_role_pathrname" => "이름 바꾸기", - "group_role_pathdelete" => "파일 삭제", - "group_role_pathinfo" => "파일 속성", - "group_role_pathmove" => "이동 (복사 / 잘라 내기 / 붙여 넣기 / 드래그 조작)", - "group_role_zip" => "압축", - "group_role_unzip" => "압축 해제", - "group_role_search" => "수색", - "group_role_filesave" => "편집 할 파일을 저장", - "group_role_can_upload" => "업로드 및 다운로드", - "group_role_download" => "원격 다운로드", - "group_role_passowrd" => "암호 변경", - "group_role_config" => "구성 데이터", - "group_role_fav" => "즐겨 찾기 작업 (추가 / 수정 / 삭제)", - "action_list" => "목록보기", - "action_add" => "추가", - "action_edit" => "편집", - "action_del" => "삭제", - "group_role_ext_warning" => "
                  이름 바꾸기 (지정된 확장자로 변경),
                  저장, 편집, 원격 다운로드, 추출 파일, 허용하지 업로드가", - "group_tips" => "
                • 1. 사용자 그룹 이름을 복제 할 수 없으며 그룹 이름을 수정 한 후에 그룹 이름이 재구성 된 사용자에 속하며 자동으로 연관됩니다.
                • 2. 확장 기능은 시스템 보안 사이의 관계를 제한합니다. 신중해야합니다 (웹 디렉토리에 새 PHP를 작성하면 프로그램 사용 권한을이 사용자로 변경하는 것이 사실상 불가능 함을 의미합니다)
                • 3. 세대 관리, 권한 그룹 관리, 권한보기 및 권한 추가, 삭제 및 수정이 필요하며 프로그램은 자동으로 연결됩니다.
                • 4. 사용 권한 그룹이 사용 권한 그룹을 추가하도록 설정된 후에는 후속 사용 권한이 상속되지 않습니다 (이 사용 권한은 가장 높은 사용 권한과 같습니다).
                • ", - "not_null" => "필수 필드는 비워 둘 수 없습니다!", - "picture_can_not_null" => "사진은 비워 둘 수 없습니다!", - "rname_success" => "성공의 이름을 바꿉니다!", - "please_inpute_search_words" => "검색 할 문자열을 입력하세요", - "remove_success" => "성공적으로 삭제!", - "remove_fali" => "삭제 실패!", - "clipboard_null" => "클립 보드가 비어 있습니다!", - "create_success" => "새로운 성공!", - "create_error" => "새로운 디렉토리 권한을 확인 실패!", - "copy_success" => "[복사] - 클립 보드의 성공을 취재!", - "cute_success" => "[잘라 내기] - 클립 보드의 성공을 취재!", - "clipboard_state" => "클립 보드 상태 :", - "no_permission_write_all" => "파일 또는 디렉터리에 쓰기 권한이 없습니다", - "no_permission_write_file" => "이 파일은 쓰기 권한이 없습니다", - "no_permission_read_all" => "파일이나 디렉토리에는 읽기 권한이 없습니다", - "copy_not_exists" => "소스가 존재하지 않습니다", - "current_has_parent" => "대상 폴더는 원본 폴더의 하위 폴더입니다!", - "past_success" => "붙여 넣기 작업이 완료", - "cute_past_success" => "잘라 내기 작업이 완료(소스 파일이 빈 클립 보드를 삭제)", - "zip_success" => "압축 완료", - "not_zip" => "보관하지 않음", - "zip_null" => "파일이나 디렉토리를 선택하지 않음", - "unzip_success" => "전체의 압축을 풉니 다", - "gotoline" => "라인으로 이동", - "path_is_current" => "경로와 현재 경로가 동일한를 엽니 다!", - "path_exists" => "이름이 이미 존재합니다!", - "undo" => "폐지", - "redo" => "안티 취소", - "preview" => "시사", - "wordwrap" => "랩", - "show_gutter" => "줄 번호 표시", - "char_all_display" => "눈에 보이지 않는 문자를 표시", - "auto_complete" => "자동 프롬프트", - "auto_save" => "자동 저장", - "function_list" => "기능 목록", - "code_theme" => "코딩 스타일", - "font_size" => "글꼴 크기", - "confirm" => "이 작업을 수행 하시겠습니까?", - "button_ok" => "결정", - "button_submit" => "제출", - "button_set" => "설정", - "button_cancel" => "취소", - "button_edit" => "편집", - "button_save" => "저장", - "button_apply" => "신청", - "button_save_all" => "모두 저장", - "button_not_save" => "저장하지 마십시오", - "button_add" => "추가", - "button_back_add" => "위로 추가", - "button_del" => "삭제", - "button_save_edit" => "변경 사항을 저장", - "button_save_submit" => "제출 저장", - "button_more" => "더", - "button_select_all" => "모든 / 반전 선택을 선택합니다", - "charset_AUTO" => "자동 식별", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "아라비아 말", - "charset_ISO_8859_6" => "아라비아 말", - "charset_ISO_8859_10" => "북유럽 언어", - "charset_CP1257" => "발트 언어", - "charset_ISO_8859_13" => "발트 언어", - "charset_ISO_8859_4" => "발트 언어", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "그루지야의", - "charset_PT154" => "카자흐어", - "charset_CP949" => "한국의", - "charset_EUC_KR" => "한국의", - "charset_GB18030" => "중국어 간체", - "charset_GBK" => "중국어 간체", - "charset_ISO_8859_14" => "켈트족의", - "charset_CP1133" => "라오어", - "charset_ISO_8859_16" => "루마니아어", - "charset_ISO_8859_3" => "남부 유럽", - "charset_EUC_JP" => "일본의", - "charset_ISO_2022_JP" => "일본의", - "charset_SHIFT_JIS" => "일본의", - "charset_KOI8_T" => "타지크 언어", - "charset_ISO_8859_11" => "타이어", - "charset_TIS_620" => "타이어", - "charset_CP1254" => "터키의", - "charset_CP1251" => "키릴", - "charset_ISO_8859_5" => "키릴", - "charset_KOI8_R" => "키릴", - "charset_KOI8_U" => "키릴", - "charset_CP1252" => "서유럽 언어", - "charset_ISO_8859_1" => "서유럽 언어", - "charset_ISO_8859_15" => "서유럽 언어", - "charset_Macintosh" => "서유럽 언어", - "charset_CP1255" => "히브리어", - "charset_ISO_8859_8" => "히브리어", - "charset_CP1253" => "그리스의", - "charset_ISO_8859_7" => "그리스의", - "charset_ARMSCII_8" => "아르메니아의", - "charset_CP1258" => "베트남의", - "charset_VISCII" => "베트남의", - "charset_CP1250" => "중앙 유럽 언어", - "charset_ISO_8859_2" => "중앙 유럽 언어", - "charset_default_set" => "파일 인코딩", - "charset_convert_save" => "로 인코딩 된 파일을 저장", - "PluginCenter" => "플러그 센터", - "PluginBuy" => "구매 승인", - "PluginInstalled" => "설치되어", - "PluginUpdate" => "업데이트", - "PluginListNull" => "아무 내용이 없다!", - "PluginType" => "분류", - "PluginTypeAll" => "완전한", - "PluginTypeFile" => "향상된 파일", - "PluginTypeSafe" => "보안 도구", - "PluginTypeTools" => "유용", - "PluginTypeMedia" => "멀티미디어", - "PluginTypeOthers" => "다른", - "PluginInstall" => "플러그를 설치", - "PluginEnable" => "플러그인 사용", - "PluginDisable" => "해제", - "PluginRemove" => "플러그를 제거", - "PluginConfig" => "플러그인 구성", - "PluginStatus" => "상태", - "PluginStatusEnabled" => "사용", - "PluginStatusDisabled" => "사용할 수 없습니다", - "PluginStatusNotInstall" => "설치되지 않음", - "PluginInstalling" => "설치 ...", - "PluginHasUpdate" => "업데이트", - "PluginUpdateStart" => "업데이트 플러그인", - "PluginNeedConfig" => "초기 구성을 가능하게 할 필요성", - "PluginConfigNotNull" => "필수 필드는 비워 둘 수 없습니다!", - "PluginOpen" => "열린", - "PluginAuther" => "저자", - "PluginVersion" => "판", - "PluginDownloadNumber" => "을 설치합니다", - "PluginBack" => "반환", - "PluginReadme" => "기술", - "PluginResetConfig" => "기본 설정 복원", - "PluginInstallSelf" => "수동 설치", - "Plugin.config.auth" => "권한", - "Plugin.config.authDesc" => "사용 가능한 모든 설정, 또는 지정 사용자, 사용자 그룹, 인권 단체 사용할 수 있습니다", - "Plugin.config.authOpen" => "오픈 액세스", - "Plugin.config.authOpenDesc" => "방문 할 필요가 없으며 외부 인터페이스 호출에 사용할 수 있습니다.", - "Plugin.config.authAll" => "보유자", - "Plugin.config.authUser" => "사용자", - "Plugin.config.authGroup" => "지정학과", - "Plugin.config.authRole" => "권한 그룹", - "Plugin.Config.openWith" => "열기 스타일", - "Plugin.Config.openWithDilog" => "내부 대화", - "Plugin.Config.openWithWindow" => "새로운 페이지가 열립니다", - "Plugin.Config.fileSort" => "확장 관계 우선", - "Plugin.Config.fileSortDesc" => "더 높은 우선 순위를 엽니 확장 큰", - "Plugin.Config.fileExt" => "지원되는 파일 형식", - "Plugin.Config.fileExtDesc" => "플러그인에 관련된 확장", - "Plugin.tab.basic" => "기본 설정", - "Plugin.tab.auth" => "권한", - "Plugin.tab.others" => "기타 설정", - "Plugin.default.aceEditor" => "에이스 편집기", - "Plugin.default.htmlView" => "웹 페이지 미리보기", - "Plugin.default.picasa" => "Picasa에서 사진 검색", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer 플레이어", - "Plugin.auth.viewList" => "플러그인 목록", - "Plugin.auth.setting" => "플러그인 설정", - "Plugin.auth.status" => "끄기", - "Plugin.auth.install" => "설치 / 제거", - "Explorer.UI.openWith" => "열기를 선택", - "Explorer.UI.openWithText" => "메모장을 엽니 다", - "Explorer.UI.appSetDefault" => "기본 공개 설정", - "Explorer.UI.appAwaysOpen" => "항상이 파일을 열 수 선택한 프로그램 사용", - "Explorer.UI.selectAppDesc" => "이 파일을 열려는 프로그램을 선택", - "Explorer.UI.selectAppWarning" => "응용 프로그램을 선택하세요!", - "Explorer.UI.appTypeSupport" => "지원됨", - "Explorer.UI.appTypeAll" => "모든 애플리케이션", - "kodApp.oexe.edit" => "조명 애플리케이션 편집", - "kodApp.oexe.open" => "빛의 응용 프로그램을 엽니 다" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/lt/about.html b/plugin/document/kod/config/i18n/lt/about.html deleted file mode 100644 index 34eebc71d..000000000 --- a/plugin/document/kod/config/i18n/lt/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer yra Ką?
                  -

                  KODExplorer yra atviro kodo interneto internetinis dokumentų valdymo, redagavimo kodą. Ji suteikia klasikinis Windows "vartotojo sąsaja, interneto dokumentų valdymo rinkinys, failo peržiūrą, redaguoti, įkelti, parsisiųsti, Išpakuokite interneto muzikos atkūrimą natūra. Leidžia jums pasiekti interneto svetainių kūrimas tiesiai naršyklėje, kodo failo peržiūrą, ir dislokuoti su svetainės savininko ir vietos veikimą taip pat lengvai, greitai ir saugiai patirties.

                  -

                  - dizainas -

                  -

                  klasikinė tradicija, inovacijų siekimas, siekiant suteikti vartotojams patogi, saugus ir paprastas naudoti interneto debesis valdymo sistemą.

                  -

                  kai (kai), kur (kur), turi internetą, jei norite (nori) tai jūsų valdymo įrankis (4W politika).

                  -

                  - į vartotoją orientuotas -

                  -

                  metu KODExplorer valdymo sistema daugiausia įsikūręs asmeninė debesys priegloba, mažas įmonė debesis išteklių valdymo, tinklo disko valdymo, valdymo mažų ir vidutinių svetainių. Web Developer & Master (veteranai): Online redaktorius, suspausto atsarginę kopiją, diegimo, klasikinis Windows sąsajos operacijos, lengva pradėti ir atsikratyti priimančiosios SSH, FTP sudėtingų gręžimo operacijas.

                  -

                  asmens privataus debesys (naujokas): valdymo tinklo disko ištekliai, tas pats klasikinis Windows sąsajos veikimas, galite įdėti į muzikos naršymo tinklo diską, ekranas failus, įkelti ir atsisiųsti greitai ir lengvai.

                  -
                  - -
                  -
                  Įranga
                  -

                  išsamus dokumentų valdymo, galingas internetinis failą redaktorius

                  -

                  kur esate, galite tvarkyti failus ir interneto pramogų, rašymas internete kodas! Lygiai taip pat galima naudoti kaip operacinės sistemos.

                  -

                  plati vietinė patirtis persodinimo operacijos į dešinę, vilkite, atrankos dėžutė, nuorodos, paieškos failų (Search turinys) ......

                  -

                  pasirinkimo langas, vilkite judėjimas, vilkite ir upuść įkelti, internetinė redaktorius, vaizdo grotuvas, išskleisti. Visas ajax garantija veiklos ir patirties!

                  -

                  kiekviena funkcija tiesioginio besiūlių ryšį; dialogo forma, įvairių užduočių valdymo funkcijos

                  -

                  redaktorius palaiko multi-dokumentą, parama ZendCoding html, CSS, JS didesnis kodavimo efektyvumą!

                  -

                  tobulas Kinijos parama, iškraipytas spręsti įvairias situacijas;

                  -
                  - -
                  -
                  atviro kodo technologija priėmimas
                  -

                  1.Jquery:jpuery (įskiepiai: Hotkeys.ztree.contentmenu) .js lavinimo plėtros sistemą. Operacija Namas, BOM operaciją, CSS operacija, ir Ajax paketą

                  -

                  2.ArtDialog:gražus dizainas, stiprus Browser Compatibility dialogo valdikliui. Taigi pop-up rankena, renginius ir duomenų perdavimas gauti geriau vieningą valdymą

                  -

                  3.Ztree:sąrašas medis kontrolė, mastelio yra labai stiprus medis duomenų manipuliavimas valdikliui

                  -

                  4.codemirror:kodas redaktorius JS įskiepių, palaiko programavimo kalbų įvairovė išryškinti

                  -

                  5.zendcoding:paramos HTML kodus greitai rašyti plug-ins. Supaprastina kodo apibrėžimas neparašyta. Paprasta kompiliacija

                  -

                  6.less:veiksminga, funkcionalus CSS kūrimo modelis pagerinti priekis css stilių pakartotinai naudoti , Paprasta kompiliacija

                  -

                  7.SWFUpload:Flash failų įkėlimo

                  -

                  8 .CMP4:labai gera Flash player plugin medijos failus, parama srautams pritaikytos medijos, populiariosios muzikos vaizdo atkūrimo įrankis. Parama odos, labai konfigūruojama nustatymai. Dinaminis sąrašas XML įkeltas. MMS duomenų srautams pritaikytos medijos, RSTP atviro kodo licencija žiniasklaidos atkūrimą parama

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/lt/edit.html b/plugin/document/kod/config/i18n/lt/edit.html deleted file mode 100644 index 99c8493b0..000000000 --- a/plugin/document/kod/config/i18n/lt/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  daug funkcijų

                  -

                  Kodas automatiškai paragina

                  -

                  Daugiafunkciniai tema: Pasirinkite savo mėgstamą programavimo stilių

                  -

                  Pasirinktinis Šriftas: naudoti ne scenoje

                  -

                  Daugiafunkciniai žymeklis redagavimas, blokas redagavimas internete programavimo patirtis panaši į didingas

                  -

                  Blokuoti lankstymo, plėsti; wrap

                  -

                  Parama kelis skirtukus, vilkite perjungimo seką;

                  -

                  Palaikyti keletą dokumentų, rasti ir pakeisti; Istorija;

                  -

                  Automatinis užpildymas [] {} (), '' ''

                  -

                  Prisijungę realaus laiko peržiūra, kuri leidžia jums įsimylėti internetinio programavimo!

                  -

                  zendcodeing paramą, rašyti kodą aštuoniasdešimt

                  -

                  Kitos funkcijos laukia savo atradimo ......

                  -
                  -
                  -

                  150 rūšių kodų paryškinimą

                  -

                  Patarimas: HTML, JavaScript, CSS, mažiau, Sass, SCSS

                  -

                  interneto svetainių kūrimas: PHP, Perl, Python, Ruby, elang, eikite ...

                  -

                  Tradiciniai kalbos: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Kita: reklamos kainos, kriauklių, SQL, LŽŪU, XML, yaml ...

                  -
                  -
                  -
                  -
                  -

                  Spartusis veiksmas

                  -
                   Dažniausiai naudojami klavišai: 
                  - Ctrl + S sutaupyti 
                  - Ctrl + A Atrinkti visus Ctrl + X Cut 
                  - Ctrl + C Ctrl + V įklijuokite kopija 
                  - Ctrl + Z Atšaukti Atšaukti kovos Ctrl + Y 
                  - Ctrl + F rasti pakeitimo Ctrl + F + F 
                  - Win + Alt + 0 sutraukti visi Win + Alt + Shift + 0 Išskleisti visus 
                  - ESC [Išeiti paieška automatiškai atšaukiama paragina ...] 
                  - Ctrl-Shift-ai Peržiūrėti 
                  - Ctrl-Shift-E Rodyti & Uždaryti funkcija 
                  -
                  -
                   Pasirinkite: 
                  - Pelės Marquee - vilkite 
                  - Shift + Home / pabaiga / iki / į kairę / žemyn / į dešinę 
                  - Shift + pageUp / PageDown apversti aukštyn ir žemyn, kad pasirinktumėte 
                  - CTRL + SHIFT + namų / pabaiga dabartinės žymeklio pradžioje ir pabaigoje 
                  - Alt + pele vilkite blokas pasirinkimą 
                  - Ctrl + Alt + G serijos pasirinkite ir įveskite esamą kelių tab redaktorius 
                  -
                  -
                   žymeklis: 
                  - Pagrindinis / pabaiga / iki / į kairę / žemyn / į dešinę 
                  - Ctrl + namų / pabaiga perkelkite žymeklį į dokumento antraštę / uodegos 
                  - Ctrl + P Pereiti į atitikimo žyma 
                  - pageUp / PageDown žymeklį aukštyn ir žemyn 
                  - Alt + Kairėn / Dešinėn žymeklį perkelti į eilutės viršuje 
                  - Shift + Kairėn / Dešinėn žymeklį į eilutės pabaigą ir 
                  - Ctrl + L peršokti į konkretų eilės 
                  - Ctrl + Alt + aukštyn / žemyn (žemiau) padidinti žymeklis 
                  -
                  -
                   Redaguoti: 
                  - "Ctrl" + / Komentarai & Pašalinti komentarą Ctrl + Alt + motyvuotu 
                  - Lentelėje skirtukas suderinimas Shift + stalas bendras pažangos lentelė 
                  - Ištrinti visą eilutę Ctrl + D 
                  - Ctrl + delete ištrinti eilutę dešinėje žodis 
                  - Ctrl / Shift + Backspace išbraukti žodį kairėje 
                  - Alt + Shift + aukštyn / žemyn ir pridedamas prie kopijavimo linija (žemiau) lėktuvas 
                  - Alt + Delete ištrinti iš žymeklio dešinėje turinį 
                  - Alt + aukštyn / žemyn dėl dabartinės linijos ir linijos (kitą eilutę keistis) 
                  - Ctrl + Shift + D eilučių nukopijuoti ir pridėti prie taip 
                  - Ctrl + delete ištrinti žodžio teisę 
                  - Ctrl + Shift + U konvertuojami į mažąsias 
                  - Ctrl + U pasirinktą tekstą į didžiąsias 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/lt/help.html b/plugin/document/kod/config/i18n/lt/help.html deleted file mode 100644 index 172376a0a..000000000 --- a/plugin/document/kod/config/i18n/lt/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  failų tvarkymas
                  -

                  Failo pasirinkimas: radijo, pelės Marquee, perkelti rinkimus Ctrl atsitiktinai parinkto, klaviatūra aukštyn ir žemyn, namus, pabaiga pasirinkimą.

                  -

                  Failo operacija: Pasirinkus failą, galite kopijuoti, iškirpti, ištrinti, peržiūrėti suspaudimo savybes, pervardyti, atvira Peržiūrėti ir kiti darbai ......

                  -

                  Įkelti failą: Įkelti kelis failus partija; HTML5 vilkite įkelti ( "drag sklandžiai įkelti langą, vilkite ir upuść paramą aplankus)

                  -

                  Teisė funkcija: Dešiniuoju pelės failą, aplanką, į dešinę, daugiau iš karto po rinkimų operaciją, darbastalio, į dešinę, į dešinę katalogas medis, dešiniuoju pelės privalo meniu nuorodos
                  - (Pasirinkite Visi - Kopijuoti - Iškirpti - Nukopijuokite - Delete - pervadinti, nustatykite ......)

                  -

                  Failų naršyklė: Sąrašas režimas, piktograma režimas; dukart spustelėkite į pakatalogius; adresas baras operacija; atidarykite aplanką rekordinį prieštaringa rekordą (pirmyn ir atgal)

                  -

                  Pagalba vilkite ir upuść: Patikrinkite vilkite, supjaustyti pasiekti nurodytą aplanką funkcija

                  -

                  Spartieji klavišai: ištrinti ištrinti Ctrl + A Pasirinkite Viskas, Ctrl + C kopijuoti, + X Iškirpti, ieškoti failų (Search turinys) ctrl

                  -
                  -
                  -
                  failo Peržiūrėti
                  -

                  Failo Peržiūra: peržiūrėti tekstinį failą redagavimo ir taupymo turinį; HTML, SWF failo peržiūrą,

                  -

                  Vaizdo Peržiūra: automatinis kartos miniatiūros, vaizdo skaidrių peržiūrą;

                  -

                  Garso atkūrimas: žaisti online muziką ir vaizdo failus, parama MP3, WMA, Mid, AAC, WAV; mp4,

                  -

                  Video: interneto vaizdo atkūrimo, Palaikomi formatai: FLV, F4V, 3gp

                  -

                  Biuro: skyrius Online Preview, Palaikomi formatai: DOC, docx, ppt, pptx, XLS, XLSX

                  -
                  -
                  -
                  Nuorodos
                  -

                  įvesti Atidaryti

                  -

                  Ctrl + A pasirinkite visas

                  -

                  Ctrl + C kopijuoti pasirinktas

                  -

                  Ctrl + V įklijuoti

                  -

                  Ctrl + X Iškirpti

                  -

                  Ctrl + F ieškoti esamą katalogą

                  -

                  Alt + N Naujoji Failų

                  -

                  Alt + m, Naujas aplankas

                  -

                  Ištrinti pasirinktas

                  -

                  Backspace Atgal

                  -

                  Ctrl + Backspace priekį

                  -

                  F2 Pervadinti pasirinktas (Aplankas)

                  -

                  Pagrindinis / pabaiga / aukštyn / žemyn / į kairę / į dešinę, kad pasirinktumėte failą

                  -

                  Anykey Patikrinkite paspausti pirmąją simbolių failus ir aplankus laišką pasirinktą automatinį ciklą

                  -
                  diff --git a/plugin/document/kod/config/i18n/lt/main.php b/plugin/document/kod/config/i18n/lt/main.php deleted file mode 100644 index 3ba4d1438..000000000 --- a/plugin/document/kod/config/i18n/lt/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Prašome pasirinkti failą ...", - "path_api_select_folder" => "Prašome pasirinkti aplanką ...", - "path_api_select_image" => "Prašome pasirinkti atvaizdą ...", - "share_can_upload" => "Leiskite įkelti", - "move_error" => "perkelti nepavyko", - "setting_basic" => "pagrindiniai nustatymai", - "setting_user_sound_open" => "Atidaryti garso", - "setting_user_animate_open" => "Atviras Animacijos", - "recycle_open_if" => "Atidarykite šiukšlinę", - "recycle_open" => "atidaryta", - "setting_user_recycle_desc" => "Po ištrynimo bus ištrinta tiesiog fizinė ištrynimas", - "setting_user_animate_desc" => "Langas atidarytas ir kitas animacijas", - "setting_user_sound_desc" => "Veikimo garsas", - "setting_user_imageThumb" => "Nuotraukų miniatiūros", - "setting_user_imageThumb_desc" => "Geresnė naršymo patirtis atidarius", - "setting_user_fileSelect" => "Atidarykite failo piktogramą", - "setting_user_fileSelect_desc" => "Failo piktogramos kairiojo klavišo patikrinimas dešiniuoju pelės mygtuku spustelėkite meniu nuorodą", - "qrcode" => "URL QR kodas", - "theme_mac" => "\"Mac\" minimalistinis baltas", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Mėlyna Klasikinis", - "theme_metro_green" => "Metro šviesiai žalia", - "theme_metro_purple" => "Metro elegantiška violetinė", - "theme_metro_pink" => "metro rožė", - "theme_metro_orange" => "Metro šviesus oranžinė", - "theme_alpha_image" => "Šviesus - Flying", - "theme_alpha_image_sun" => "Šviesus - Saulėlydis", - "theme_alpha_image_sky" => "Simfonija - \"Blue Sky", - "theme_diy" => "Pasirinktinis", - "theme_diy_title" => "Individualizuotos temos nustatymus", - "theme_diy_background" => "fonas", - "theme_diy_image" => "nuotrauka", - "theme_diy_color_blur" => "gradientas spalva", - "theme_diy_image_blur" => "Paveikslėlis Blur", - "theme_diy_image_url" => "nuotraukos adresas", - "theme_diy_color_start" => "Nuo spalva", - "theme_diy_color_end" => "pabaiga spalva", - "theme_diy_color_radius" => "gradientas kampas", - "system_role_admin_set" => "Administratoriai turi visas teises, nenustatę!", - "login_error_user_not_use" => "Vartotojas yra išjungtas! Prašome susisiekti su administratoriumi", - "login_error_kod_version" => "versija konfliktas", - "login_error_role" => "Peržiūrėti leidimai grupė neegzistuoja, susisiekite su administratoriumi", - "no_permission_group" => "Jūs nesate šios grupės!", - "no_permission_write" => "Katalogas neturi rašymo leidimo", - "user" => "vartotojas", - "save_as" => "išsaugoti kaip", - "check_update" => "atnaujinimas", - "keyboard_type" => "Klaviatūros režimas", - "font_family" => "Šriftai", - "code_mode" => "sintaksės išryškinimas", - "path_can_not_share" => "Palaiko pasidalinti tik savo dokumentus!", - "path_can_not_action" => "Šis katalogas nepalaiko šią operaciją!", - "wap_page_pc" => "PC versija", - "wap_page_phone" => "mobilus", - "image_size" => "vaizdo matmenys", - "no_permission_action" => "Jūs neturite šį leidimą, susisiekite su administratoriumi!", - "path_is_root_tips" => "Jis atėjo į šakninį katalogą!", - "kod_group" => "organizacija", - "my_kod_group" => "Aš esu katedroje", - "space_tips_default" => "(LT) 0 neribojamas", - "space_tips_full" => "neribojant", - "space_size" => "erdvė", - "space_size_use" => "Išnaudoti erdvę", - "space_is_full" => "Nepakanka vietos, prašome susisiekti su administratoriumi!", - "system_open_true_path" => "Sėkmingai atidarė failų tvarkytuve!", - "group_role_error" => "Vaidmenų teises klaidos (Nėra leidimo nustatymus)", - "group_role_error_admin" => "nepakankamos teisės", - "markdown_content" => "Turinys", - "system_group" => "Vartotojai ir departamentai", - "system_group_edit" => "Departamento valdymas", - "system_group_role" => "vaidmuo tapatybę", - "system_group_create" => "Naujas skyrius", - "system_group_name" => "Departamento pavadinimas", - "system_group_father" => "Aukštesnysis departamentas", - "system_group_add" => "Pridėti skyrių", - "system_group_remove" => "Pašalinti skyrių", - "system_group_remove_tips" => "Ar tikrai nutrauksite skyrių?
                  Išbraukus naudotojo dalį bus pašalintas, subsektorius perkeltas į šaknies sektorių", - "system_group_select" => "Pasirinkite departamentas", - "system_group_select_result" => "Nariai priklauso šių sektorių", - "system_role_admin_tips" => "Pastabos: sistemos administratoriai neturi įgaliojimų kontroliuoti", - "system_member_action" => "vartotojas valdymas", - "system_member_add" => "Naujas vartotojas", - "system_member_role" => "Teisių vaidmenys", - "system_member_role_select" => "pasirinkti", - "system_member_password_tips" => "Nepildykite nepataisė", - "system_set_home_path" => "Individualizuotos Katalogas", - "system_set_home_path_tips" => "Pagal nutylėjimą katalogas yra tuščia", - "system_member_group" => "Kur departamentas", - "system_member_group_edit" => "Redagavimo skyrius", - "system_member_remove" => "Ištrinti vartotoją", - "system_member_remove_tips" => "Patvirtinti pašalinti skaitytojų?
                  po to, kai pašalinti vartotojo direktoriją bus visiškai ištrinta", - "system_member_set_role" => "Norėdami patvirtinti atrinktų grupių vartotojų teises keisti?", - "system_member_remove_group" => "Nustato, kokiu pasirinktas vartotojas bus pašalintas iš šios grupės?", - "system_member_import" => "Masiniai ADD", - "system_member_import_desc" => "Vienas vartotojas eilutėje
                  jau yra tyliai ignoruojamas", - "system_member_use" => "leisti", - "system_member_unuse" => "išjungti", - "system_member_space" => "Nustatykite naudotojo vietos dydį ", - "system_member_space_tips" => " Nustatykite naudotojo vietos dydį ", - "system_member_space_number" => " Turi būti numeris!", - "system_member_group_config" => "Partijos nustatymo skyrius", - "system_member_group_remove" => "Pašalintas iš departamento", - "system_member_group_insert" => "Pridėti į skyrių", - "system_member_group_reset" => "Atstatyti skyrių", - "system_member_group_error" => "Departamento klaida", - "system_group_action" => "Departamento valdymas", - "system_role_add" => "Pridėti Vaidmenų tapatybę", - "system_role_read" => "Tik skaityti", - "system_role_write" => "Gali skaityti ir rašyti", - "system_setting_root_path" => "šaknis prieiga", - "system_setting_root_path_desc" => "Tik sistemos administratorius gali prieiti prie visų katalogų, kitas teises, vartotojų grupės gali matyti tik savo vartotojo direktoriją. Jei norite įjungti arba išjungti
                  administratoriaus prieiga prie kitų katalogų, galite pakeisti PHP open_basedir anti-cross-site parametrų,nustatyti", - "system_group_role_title" => "Departamento institucijos vaidmenų valdymas", - "system_group_role_remove" => "Gerai ištrinti skyriaus vaidmenį", - "system_group_role_style" => "stilius", - "system_group_role_display" => "ar", - "system_group_role_display_desc" => "Nustatykite, ar parodyti departamento naudotojo teises", - "role_type_name_read" => "skaityti", - "role_type_name_read:list" => "failų sąrašas", - "role_type_name_read:info" => "Failas (aplankas) nuosavybė View Aplankas paieška", - "role_type_name_read:copy" => "Failo Kopijuoti", - "role_type_name_read:preview" => "Failo peržiūra (nuotraukos, dokumentai, garso ir vaizdo)", - "role_type_name_read:download" => "Failas (aplankas) Parsisiųsti", - "role_type_name_write" => "rašyti", - "role_type_name_write:add" => "Sukurti failą (aplanką), ekstraktas suspaustą failą", - "role_type_name_write:edit" => "Išsaugokite failą redaguoti", - "role_type_name_write:change" => "Pervardyti, keisti struktūrą katalogo", - "role_type_name_write:upload" => "Failas (aplankas) įkelti, nuotolinio parsisiųsti", - "role_type_name_write:remove" => "Failas (aplankas) ištrinti, supjaustyti", - "group_guest" => "lankytojai", - "group_guest_desc" => "Jūs nesate departamento narys,
                  galite prieiti prie [department shared directory] tik tokio turinio, tik skaitymo leidimų.", - "group_role_lebel_desc" => "Jūs esate šio skyriaus narys,
                  Visi departamento dokumentai. Visos teisės saugomos administratoriaus.", - "button_save_and_add" => "Išsaugoti ir tęsti pridėti", - "path_cannot_search" => "Katalogas nepalaiko paiešką!", - "not_support" => "Nepalaikoma!", - "group_not_exist" => "Vartotojų grupė neegzistuoja!", - "upload_clear_all" => "Išvalyti viską", - "upload_clear" => "Išvalyti Baigtas", - "upload_setting" => "įsteigti", - "upload_tips" => "Naudoja gabalas įkelti, nebetaikomos php.ini ribos; rekomenduojama chromo aplanko vilkite ir upuść įkelti patirtis", - "upload_exist" => "Failo to paties pavadinimo", - "upload_exist_rename" => "pervadinti", - "upload_exist_replace" => "dangtis", - "upload_exist_skip" => "praleisti", - "upload_add_more" => "Masiniai ADD", - "more" => "daugiau", - "system_setting" => "sistemos nustatymai", - "openProject" => "Atidarykite projekto redaktorius", - "url_download" => "parsisiųsti", - "url_link" => "URL", - "app_type_link" => "Nuorodos", - "createLink" => "Sukurti nuorodą", - "createLinkHome" => "Nusiųsti darbalaukyje", - "createProject" => "Įrašyta į redaktorius projektą", - "only_read" => "Tik skaityti", - "only_read_desc" => "Katalogas neturi rašymo leidimą
                  Galite nustatyti leidimus šio katalogo serveryje", - "not_read" => "neskaito", - "explorerNew" => "Kod nurodo", - "zip_download_ready" => "Po suspaudimo bus automatiškai atsisiųsti, prašome palaukti ...", - "set_background" => "Nustatyti kaip darbastalio tapetai", - "share" => "Dalintis", - "my_share" => "Mano akcija", - "group_share" => "Grupinis išorinis bendravimas", - "share_edit" => "Redaguoti akciją", - "share_remove" => "Atšaukti bendrinimą", - "share_remove_tips" => "Ar tikrai norite atšaukti bendrinimą? Viešasis ryšys bus negaliojantis.", - "share_path" => "Pasidalykite keliu", - "share_title" => "Dalijimasis ištekliais", - "share_name" => "Pasidalykite pavadinimu", - "share_time" => "pasibaigimas", - "share_time_desc" => "Null nenustatytas", - "share_password" => "ištrauka slaptažodį", - "share_password_desc" => "Tuščias slaptažodis nenustatytas", - "share_cancle" => "Anuliuojant", - "share_create" => "Sukurti viešą nuorodą", - "share_url" => "Bendrai naudojama adreso", - "share_not_download" => "parsisiųsti draudimas", - "share_not_download_tips" => "Dalininkas uždrausta parsisiųsti!", - "share_code_read" => "kodas skaitytojas", - "share_save" => "Išsaugoti konfigūravimas", - "share_error_param" => "Parametras klaida!", - "share_error_user" => "Vartotojo informacija Klaida!", - "share_error_sid" => "Dalintis neegzistuoja!", - "share_error_time" => "Tu atėjai per vėlai, akcijos baigėsi!", - "share_error_path" => "Bendri failas neegzistuoja, jis bus ištrintas arba pašalinti jį!", - "share_error_password" => "Neteisingas slaptažodis!", - "share_error_show_tips" => "Šio tipo nepalaiko failo peržiūrą!", - "share_view_num" => "peržiūros:", - "share_download_num" => "Parsisiuntimai:", - "share_open_page" => "Atidarykite bendrą puslapį", - "open_the_path" => "Įveskite katalogą", - "recycle_clear" => "tuščias šiukšlių", - "recycle_clear_success" => "Tuščias šiukšlių sėkmės!", - "recycle_clear_info" => "Ar tikrai norite visiškai ištuštinkite šiukšlių?", - "fav_remove" => "Atšaukti kolekciją", - "remove_item" => "Daiktai", - "uploading" => "Siuntimas", - "upload_tips_more" => "Per daug failų, suslėgto įkėlimo rekomendacija, tada išpakuokite internetu!", - "uploading_move" => "Sujungimo metu perkelkite ...", - "show_file" => "Nauja puslapio peržiūra", - "unknow_file_title" => "Failo Open Patarimas!", - "unknow_file_tips" => "Nepalaikė šio failo, galite taikyti:", - "unknow_file_try" => "pabandyti", - "unknow_file_download" => "Atsisiųskite failą", - "unknow_plugin_search" => "Ieškoti susijusių paraiškų įdiegtas", - "config_save_error_auth" => "Nepavyko išsaugoti konfigūraciją, administratorius uždraudė šią privilegiją!", - "config_save_error_file" => "Klaida, byla negali rašyti!", - "beautify_code" => "kodas Formatuotojas", - "convert_case" => "Byla perskaičiavimo", - "convert_upper_case" => "Paverčiama didžiąsias", - "convert_lower_case" => "Paverčiama mažąsias", - "editor_insert_time" => "Dabartinis laikas ", - "editor_md5" => " Md5 šifravimas ", - "editor_qrcode" => " Styginių dvimatis kodas ", - "editor_regx" => " Reguliariosios išraiškos testavimas ", - "editor_chinese" => " Supaprastinta konversija ", - "editor_chinese_simple" => " Konvertuokite į supaprastintą kinų kalbą ", - "editor_chinese_traditional" => " Konvertuokite į tradicinę kinų kalbą ", - "editor_base64" => "Base64 kodekas ", - "editor_base64_encode" => " Base64 kodavimas ", - "editor_base64_decode" => " "Base64" dekodavimas ", - "editor_url" => " URL kodekas ", - "editor_url_encode" => " URL kodavimas ", - "editor_url_decode" => " URL dekodavimas ", - "editor_unicode" => " Unicode kodekas ", - "editor_unicode_encode" => " Unicode kodavimas ", - "editor_unicode_decode" => " Unikodo dekodavimas", - "editor_tools_select_tips" => " Pasirinkite turinį, kurį norite konvertuoti!", - "editor_calc" => "Nemokamas skaičiuoklė", - "shortcut" => "Nuorodos", - "use_free" => "Ir toliau naudoti nemokamą versiją", - "learn_more" => "sužinoti daugiau", - "replace" => "pakeisti", - "selectAll" => "pasirinkti", - "reload" => "Perkrauti", - "about" => "apie", - "complete_current" => "Automatinis užbaigimas srovės", - "view" => "vaizdas", - "tools" => "įrankis", - "help" => "padėti", - "not_exists" => "Neegzistuoja", - "group_role_fileDownload" => "Siuntiniai", - "group_role_share" => "dalis", - "users_share" => "dalintis", - "system_setting_save" => "apsaugos Nustatymai", - "system_setting_menu" => "Meniu valdymas", - "system_name" => "programos pavadinimas", - "system_name_desc" => "Programos logotipas pavadinimas", - "system_desc" => "programos aprašymas", - "path_hidden" => "Directory išimtys", - "version_not_support" => "Jūsų versija nepalaiko, dar kartą kreipkitės į oficiali svetainė pirkti pažangesnės versijos!", - "version_not_support_number" => "Kaip apribojimo numeris nepalaiko šią operaciją, prašome įsigyti pažangiausias versiją oficialioje svetainėje!", - "path_hidden_desc" => "Katalogai ir failai pagal nutylėjimą nerodomas, atskirti kableliais", - "new_user_folder" => "Naujas vartotojas yra sukurtas pagal nutylėjimą kataloge", - "new_user_folder_desc" => "Atskirti kableliais", - "new_user_app" => "Naujas vartotojas yra sukurtas pagal nutylėjimą app", - "new_user_app_desc" => "Programos Application Center, iš daugybės atskirti kableliais", - "auto_login" => "Lankytojai automatiniai", - "auto_login_desc" => "Numatytoji prisijungimo vartotojoguest/guestvartotojai; po atidarymo, siekiant užtikrinti, kad vartotojas egzistuoja", - "first_in" => "Kai prisijungiate prie numatytojo", - "version_price_free" => "nemokamai", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Direktorija neįrašomi, nustatykite katalogą ir visus pakatalogius pabandyti dar kartą po to, kai skaitymo-rašymo!", - "menu_name" => "Meniu pavadinimas", - "menu_hidden" => "paslėpti", - "menu_show" => "displėjus", - "menu_move_down" => "žemyn", - "menu_move_up" => "į viršų", - "menu_move_del" => "panaikinti", - "menu_open_window" => "Atidaryti naują langą", - "menu_sub_menu" => "Submeniu", - "url_path" => "URL adresas", - "url_path_desc" => "URL adresas arba JS kodas", - "no_permission_read" => "Jūs neturite leidimo skaityti!", - "no_permission_download" => "Jūs neturite leidimo atsisiųsti!", - "php_env_check" => "Darbo aplinka stebėti:", - "php_env_error" => "Trūksta Php bibliotekos", - "php_env_error_ignore" => "Ignoruoti ir įveskite", - "php_env_error_version" => "PHP versija negali būti mažesnis nei 5,0", - "php_env_error_path" => "nėra įrašomas", - "php_env_error_list_dir" => "Jūsų žiniatinklio serveris atsidaro direktorijos sąrašo funkciją saugumo sumetimais, išjunkite šią funkciją!kaip?", - "php_env_error_gd" => "PHP GD bibliotekos turėtų būti atvira, nes kitaip kodas, naudokite miniatiūrą neveiks tinkamai", - "install_login" => "Jūs galite naudoti šią sąskaitą Prisijungimas", - "install_enter" => "sistema", - "install_user_default" => "Administratorius: {0} / (toliau nustatyti slaptažodį)
                  Vidutinis vartotojas: {1}
                  Svečių vartotojai: {2}", - "login_root_password" => "Nustatyti administratoriaus slaptažodį", - "login_root_password_repeat" => "vėl Pakartokite slaptažodį", - "login_root_password_equal" => "Du slaptažodžiai nesutampa!", - "login_root_password_tips" => "Nustatyti administratoriaus slaptažodį!", - "forget_password" => "Pamiršote slaptažodį", - "forget_password_tips" => "Pamiršote administratoriaus slaptažodį:
                  Prašome prisijungti serverio ištrinti ./data/system/install.lock naujo;

                  Ne administratorius Pamiršote slaptažodį:
                  Prašome susisiekti su administratoriumi, kad iš naujo!", - "copyright_desc" => "Kodexplorer yra labai pripažintas interneto dokumentų valdymo sistemos, jūs galite naudoti ją vidaus dokumentų valdymo ar dalijamasi, taip pat gali būti naudojamas ant svetainę valdymo serveris, pakeisti ftp, net webIDE tiesiogiai internetu plėtrą. Jūs taip pat galite užprogramuoti antrą plėtrą integruoti į savo esamas sistemas tai.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "\"Mango\" debesis • Explorer \"", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "\"Mango\" debesis • Explorer \"", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, Kod, kodCloud, webOS, webIDE, PHP filemanage, filemanage, Dao debesis, debesys Mango, dokumentų valdymo sistemos, verslo debesis diskas, tyrinėtojas ,, Prisijungė dokumentus, interneto tarnyba, interneto biuro, interneto CAD Preview, interneto redagavimas , interneto redaktorius", - "kod_meta_description" => "KodExplorer gali aprasoti Road (anksčiau mango debesis) yra pirmaujanti tiekėja vyriausybės / verslo privačių debesų ir interneto dokumentų valdymo sistemos asmeninių svetainių, įmonė Private Cloud dislokavimo, tinklo saugyklose, interneto dokumentų valdymo, interneto biuro teikti saugus ir kontroliuojamas, paprasta ir lengva naudojimas, labai individualų Private cloud produktus. Naudojant Windows sąsaja, veiklos praktika, be prisitaikyti prie greitai pradėti, palaikyti šimtus populiariausių interneto peržiūros failo formatą, atkūrimo ir redagavimo ekologiškos, galingas, yra vieną kartą bandymus, nebėra neatsiejami nuo privataus Debesis aukos.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Prisijungti", - "guest_login" => "Svečių Registruotis", - "username" => "Prisijungimo paskyra", - "userNickName" => "Vartotojo slapyvardis", - "password" => "slaptažodis", - "login_code" => "kodai", - "need_check_code" => "Vartotojas atpažinimo kodas atvira", - "need_check_code_desc" => "Prisijunkite, turite įvesti patvirtinimo kodą.", - "setting_csrf_protect" => "Atviras csrf apsauga", - "setting_csrf_protect_desc" => "Po atidarymo tipo atakos gali veiksmingai apsaugoti csrf", - "login_rember_password" => "Prisiminti slaptažodį", - "setting_show_root_group" => "Nurodykite visus departamentus", - "setting_show_root_group_desc" => "Tree katalogo šakninis skyrius, ar nurodyti visus departamentus", - "setting_show_share_user" => "Visų vartotojų sąrašą", - "setting_show_share_user_desc" => "Tree root katalogas yra nurodytas visiems naudotojo dalijimosi", - "setting_clear_user_recycle" => "Ištuštinkite šiukšlinę visiems vartotojams", - "setting_clear_cache" => "Ištuštinkite talpyklą", - "setting_icp" => "Autorinės teisės arba įrašo numeris", - "setting_global_css" => "Pasirinktinis pasaulinė CSS", - "setting_global_css_desc" => "Visi puslapiai bus įterpti pasirinktinį css", - "setting_global_html" => "Statistiniai kodas HTML", - "setting_global_html_desc" => "Visi puslapiai bus įdėta šioje dalyje html kodas, kodas gali būti trečiųjų šalių statistiką", - "us" => "kodcloud.com", - "login_not_null" => "Vartotojo vardas ir slaptažodis negali būti tuščias!", - "code_error" => "klaidų kodai", - "password_error" => "Vartotojo vardas arba slaptažodis neteisingas!", - "password_not_null" => "Slaptažodis negali būti tuščias!", - "old_password_error" => "Senas slaptažodis yra neteisingas!", - "permission" => "Leidimas!", - "permission_edit" => "keisti Permissions", - "file_info_owner" => "savininkas", - "file_info_group" => "grupė", - "no_permission" => "Administratorius išjungė šią privilegiją!", - "no_permission_ext" => "Administratorius uždraudė šį failo teises tipas", - "dialog_max" => "maksimizuoti", - "dialog_min" => "minimizuoti", - "dialog_min_all" => "sumažinti visus", - "dialog_display_all" => "Rodyti visus langus", - "dialog_close_all" => "Uždaryti visus", - "open" => "atidaryta", - "others" => "kitas", - "open_with" => "Atidaryti ...", - "close" => "arti", - "close_all" => "Uždaryti visus", - "close_left" => "Uždarykite kairįjį skirtuką", - "close_right" => "Uždaryti dešinėje esančius skirtukus", - "close_others" => "Uždaryti Kita", - "loading" => "Operacija ...", - "warning" => "įspėjimas", - "getting" => "Gauti ...", - "sending" => "Duomenų perdavimo ...", - "data_error" => "Duomenų Klaida!", - "get_success" => "Gauti sėkmės!", - "save_success" => "Sėkmingai išsaugota!", - "success" => "sėkmingas operacija", - "error" => "operacija nepavyko", - "error_repeat" => "Operacija nepavyko, pavadinimas jau egzistuoja!", - "word_error" => "Nepavyko ", - "word_success" => " Sėkmė", - "system_error" => "sistemos klaida", - "name" => "pavadinimas", - "type" => "tipas", - "contain" => "būti", - "address" => "vieta", - "size" => "dydis", - "byte" => "baitas", - "path" => "kelias", - "action" => "Operacinė", - "create_time" => "Sukurta", - "modify_time" => "modifikuotas", - "last_time" => "Paskutinį kartą lankėsi", - "sort_type" => "Rūšiuoti pagal", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "Visuomenės katalogas", - "system_path_not_change" => "Sistemos katalogas, negali būti pakeistas", - "file" => "byla", - "folder" => "aplankas", - "copy" => "kopija", - "past" => "lazda", - "clone" => "Sukurti kopiją", - "cute" => "kirpti", - "cute_to" => "Perkelti į ...", - "copy_to" => "Kopijuoti į ...", - "remove" => "panaikinti", - "remove_force" => "visiškai pašalinti", - "info" => "turtas", - "list_type" => "vaizdas", - "list_icon" => "piktograma masyvo", - "list_list" => "sąrašas išdėstymas", - "list_list_split" => "skiltis režimas", - "sort_up" => "prieaugis", - "sort_down" => "mažėjantis", - "order_type" => "Rūšiuoti pagal", - "order_desc" => "mažėjančia tvarka", - "order_asc" => "Didėjančia tvarka", - "rename" => "pervadinti", - "add_to_fav" => "Pridėti prie mėgstamiausių", - "search_in_path" => "Aplanko paieška", - "add_to_play" => "Įtraukti į grojaraštį", - "manage_fav" => "Tvarkyti pamėgtas vietas", - "refresh_tree" => "Atnaujinti katalogas medis", - "manage_folder" => "Directory \"valdymo", - "close_menu" => "Uždaryti meniu", - "zip" => "Sukurkite suspaustą paketą", - "unzip" => "Norėdami išskleisti ...", - "unzip_folder" => "Išpakuokite į katalogą", - "unzip_this" => "Ekstrakto į srovės", - "unzip_to" => "Norėdami išskleisti ...", - "zipview_file_big" => "Šis failas yra per didelis, ir tada išrašo peržiūra operacija!", - "clipboard" => "Peržiūrėti Mainų", - "clipboard_clear" => "tuščias Mainų", - "full_screen" => "Visas Ekranas", - "folder_info_item" => "Daiktai", - "folder_info_item_select" => "pasirinkta", - "file_load_all" => "Dukart spustelėkite įkelti visi ......", - "tips" => "greitai", - "ziping" => "Skompresowanie ...", - "unziping" => "Gavyba ...", - "moving" => "Mobilus operacija ...", - "remove_title" => "Ištrinti patvirtinimas", - "remove_info" => "Patvirtinti ištrinti pasirinktą elementą?", - "remove_title_force" => "jos negrįžtamai ištrinami", - "remove_info_force" => "Ar tikrai norite ištrinti šį dokumentą?", - "name_isexists" => "Negerai, vardas jau egzistuoja!", - "install" => "įrengti", - "width" => "plotis", - "height" => "aukštas", - "app" => "šviesos Programos", - "app_store" => "šviesos Programos", - "app_create" => "kurti programos", - "app_edit" => "Keisti programą", - "app_group_all" => "pilnas", - "app_group_game" => "žaidimas", - "app_group_tools" => "įrankis", - "app_group_reader" => "skaityti", - "app_group_movie" => "televizija", - "app_group_music" => "muzika", - "app_group_life" => "gyvenimas", - "app_group_others" => "kitas", - "app_desc" => "aprašymas", - "app_icon" => "Programos piktograma", - "app_icon_show" => "URL adresas arba katalogas", - "app_group" => "Prašymas Paketiniai", - "app_type" => "tipas", - "app_type_url" => "ryšys", - "app_type_code" => "JS pratęsimo", - "app_display" => "išorinis", - "app_display_border" => "Be sienų (ty pasirinkti apvado)", - "app_display_size" => "Dydžio keitimas (Patikrinkite, koregavimui)", - "app_size" => "dydis", - "app_url" => "Nuoroda adresas", - "app_code" => "JS kodas", - "edit" => "redaguoti", - "edit_can_not" => "Ne tekstinis failas", - "edit_too_big" => "Failas yra per didelis, tai gali būti ne didesnis kaip 40M", - "open_default" => "numatytasis Atviras", - "open_ie" => "Atidarykite naršyklę", - "refresh" => "atnaujinti", - "refresh_all" => "Priversti Atnaujinti", - "newfile" => "naują failą", - "newfile_save_as" => "išsaugoti", - "newfolder" => "Naujas aplankas", - "newothers" => "nauja Kita", - "path_loading" => "Kraunasi ...", - "go" => "Pasivaikščiojimas!", - "go_up" => "viršutinis sluoksnis", - "history_next" => "pirmyn", - "history_back" => "trauktis", - "address_in_edit" => "Spustelėkite, jei norite įvesti redagavimo režimą", - "double_click_rename" => "Dukart spustelėkite pervadinti", - "double_click_open" => "Dukart spustelėkite, kad atidarytumėte", - "path_null" => "Aplankas yra tuščias!", - "file_size_title" => "piktograma dydis", - "file_size_small_super" => "Ultra mažas", - "file_size_small" => "Mažos piktogramos", - "file_size_default" => "Piktogramos", - "file_size_big" => "didelės piktogramos", - "file_size_big_super" => "didelis ikona", - "upload" => "Įkelti", - "upload_ready" => "Laukiama įkėlimo", - "upload_success" => "įkelti sėkmingas", - "upload_path_current" => "Perjungti į einamojo katalogo", - "upload_select" => "pasirinkite File", - "upload_max_size" => "Didžiausia leistina", - "upload_size_info" => "Jei norite konfigūruoti daugiau, keisti php.ini maksimalų leidžiamą įkėlimą. Kai pasirenkate failą didesnis nei šios konfigūracijos automatiškai filtruoti.", - "upload_error" => "įkėlimas nepavyko", - "upload_error_http" => "Tinklo ir ugniasienės klaidų", - "upload_muti" => "Multi-failų įkėlimo", - "upload_drag" => "Vilkite ir upuść įkelti", - "upload_drag_tips" => "Atlaisvinkite įkelti!", - "path_not_allow" => "Failo vardas neleidžiamas", - "download" => "parsisiųsti", - "downloading" => "Kraunasi ...", - "download_address" => "parsisiųsti", - "download_ready" => "Bus galima atsisiųsti", - "download_success" => "Parsisiųsti sėkmės!", - "download_error" => "Parsisiųsti Nepavyko!", - "download_error_create" => "Parašyti klaida!", - "download_error_exists" => "Nuoroda į failą nepavyko!", - "upload_error_null" => "Nėra failų!", - "upload_error_big" => "Failo dydis viršija serverio ribų", - "upload_error_move" => "Nepavyko perkelti failo!", - "upload_error_exists" => "Failas jau egzistuoja", - "upload_local" => "vietinis Įkėlimo", - "download_from_server" => "Nuotolinis Parsisiųsti", - "save_path" => "Išsaugoti kelias", - "upload_select_muti" => "Iš pasirenkamų failų įkėlimo pliuralizmas", - "search" => "paieška", - "searching" => "Ieškoma ...", - "search_result" => "paieškos rezultatai", - "seach_result_too_more" => "Per daug paieškos rezultatų, rekomenduojama į katalogą arba žodžių", - "search_null" => "Nėra rezultatų!", - "search_uplow" => "raidės", - "search_content" => "Paieška failų turinį", - "search_info" => "Prašome įvesti paieškos terminą ir paieškos keliai!", - "search_ext_tips" => "Sistema | atskirti, pavyzdžiui, PHP | JS | css
                  nepildyti numatytąjį teksto failo paiešką", - "file_type" => "failo tipas", - "goto" => "Pereiti į", - "server_dwonload_desc" => "Užduotis buvo įtraukta į atsisiuntimo sąrašą", - "parent_permission" => "Parent directory leidimai", - "root_path" => "Mano dokumentai", - "lib" => "sandėlis", - "fav" => "Pažymėti", - "desktop" => "Stalinis", - "browser" => "naršyklė", - "my_computer" => "Mano kompiuteris", - "recycle" => "šiukšlės", - "my_document" => "Mano dokumentai", - "my_picture" => "Mano nuotraukos", - "my_music" => "Mano muzika", - "my_movie" => "Mano įrašai", - "my_download" => "Mano atsisiuntimai", - "ui_desktop" => "Stalinis", - "ui_explorer" => "failų tvarkymas", - "ui_editor" => "redaktorius", - "adminer" => "adminer", - "ui_project_home" => "Projektų Pagrindinis", - "ui_login" => "Prisijungti", - "ui_logout" => "mesti", - "setting" => "sistemos nustatymai", - "setting_title" => "Nustatymai", - "setting_user" => "Asmeninė centras", - "setting_password" => "Keisti slaptažodį", - "setting_password_old" => "Senas slaptažodis", - "setting_password_new" => "peržiūrėta", - "setting_language" => "kalbos nustatymai", - "setting_member" => "vartotojas valdymas", - "setting_group" => "Vartotojas grupės valdymas", - "setting_group_add" => "Pridėti naudotojų grupę", - "setting_group_edit" => "Redaguoti Vartotojų grupės Vartotojų grupės", - "setting_theme" => "tema Nustatymai", - "setting_wall" => "Fono parametrai", - "setting_wall_desktop" => "Desktop wallpaper", - "setting_wall_desktop_list" => "Desktop Wallpaper Manager", - "setting_wall_login_list" => "Prisijungti paveiksliuko valdymas", - "setting_wall_login_tips" => "Patarimas: kai yra daugiau nei vienas kūrinys, prisijungimo sąsajos fonas rodomos atsitiktine tvarka", - "setting_wall_diy" => "Pasirinktinis ekrano užsklanda:", - "setting_wall_info" => "Paveikslėlis URL adresas, vietos nuotraukos gali būti teisė gauti naršyklę atidaryti atvaizdą", - "setting_fav" => "Pažymėti direktorius", - "setting_help" => "naudojant Pagalba", - "setting_about" => "apie darbų", - "setting_success" => "Modifikacija ėmėsi poveikį!", - "can_not_repeat" => "Neleidžiama pakartoti", - "absolute_path" => "absoliutus adresas", - "group" => "Vartotojų grupės Vartotojų grupės", - "data_not_full" => "Pateikiami duomenys neišsamūs!", - "default_user_can_not_do" => "Numatytoji vartotojas gali neveikti", - "default_group_can_not_do" => "Numatytas naudotojo grupės gali neveikti", - "username_can_not_null" => "Nick negali būti tuščias!", - "groupname_can_not_null" => "Vartotojų grupė vardas negali būti tuščias!", - "groupdesc_can_not_null" => "Vartotojas Grupė Aprašymas negali būti tuščias!", - "group_move_user_error" => "Vartotojų grupė vartotojai perkelti nepavyko", - "group_already_remove" => "Vartotojas grupė buvo panaikinta", - "group_not_exists" => "Šis vartotojas grupė neegzistuoja", - "member_add" => "Pridėti vartotoją", - "password_null_not_update" => "Jie teigė, kad jie nebuvo pakeisti slaptažodis nėra užpildytas", - "if_save_file_tips" => "Kai kurie failai nėra išsaugoti. Ar tikrai uždarote langą?", - "if_save_file" => "Failo nebuvo išsaugotas, norite sutaupyti?", - "if_remove" => "patvirtinti Ištrinti", - "member_remove_tips" => "Po to, kai pašalinti vartotojas katalogas bus pašalinta", - "group_remove_tips" => "Po to, kai pašalinti vartotojas grupė vartotojai negali prisijungti
                  (reikia iš naujo nustatyti vartotojų grupė)", - "group_name" => "Vartotojų grupė vardas", - "group_name_tips" => "Rekomendacija angliškas pavadinimas negali būti kartojamas", - "group_desc" => "Diskusijų vardo", - "group_desc_tips" => "Grupės pavadinimas Aprašymas", - "group_role_ext" => "Extension apribojimai", - "group_role_ext_tips" => "Su keliais | atskirti", - "group_role_file" => "failų tvarkymas", - "group_role_upload" => "Leiskite įkelti", - "group_role_user" => "vartotojas duomenys", - "group_role_group" => "Vartotojas grupės valdymas", - "group_role_member" => "vartotojas valdymas", - "group_role_mkfile" => "naują failą", - "group_role_mkdir" => "Naujas aplankas", - "group_role_pathrname" => "pervadinti", - "group_role_pathdelete" => "failo ištrynimas", - "group_role_pathinfo" => "failo ypatybės", - "group_role_pathmove" => "Perkelti (kopija / sumažinti / pasta / tempimo operacija)", - "group_role_zip" => "suspaudimas", - "group_role_unzip" => "Išpakuokite", - "group_role_search" => "paieška", - "group_role_filesave" => "Išsaugokite failą redaguoti", - "group_role_can_upload" => "Įkelti ir atsisiųsti", - "group_role_download" => "Nuotolinis Parsisiųsti", - "group_role_passowrd" => "Keisti slaptažodį", - "group_role_config" => "konfigūracijos duomenis", - "group_role_fav" => "Bookmark operacijos (pridėti / redaguoti / ištrinti)", - "action_list" => "sąrašas Peržiūrėti", - "action_add" => "papildyti", - "action_edit" => "redaguoti", - "action_del" => "panaikinti", - "group_role_ext_warning" => "Įkėlimas neleidžia tokie failai,
                  Pervadinti (pervadintas į nurodytą pratęsimo),
                  Redaguoti išsaugoti, nuotolinio parsisiųsti, ekstraktas", - "group_tips" => "
                • 1. Vartotojų grupės pavadinimas negali būti dubliuojamas. Po grupės pavadinimo keitimo jis priklauso pertvarkytam vartotojui ir automatiškai susieja jį.
                • 2. Plėtiniai apriboja sistemos saugumo ryšį, būkite atsargūs (jei sukursite naują žiniatinklio katalogo php, tai reiškia, kad programos naudotojo leidimų keitimas beveik neįmanomas)
                • 3. Namų ūkių valdymas, teisių grupių valdymas, teisių peržiūra ir teisių įtraukimas, ištrynimas ir keitimas yra privalomi; programos automatiškai susiejamos
                • 4. Kai leidimų grupė nustatoma pridėti leidimo grupę, tolesnis leidimas nėra paveldimas (šis leidimas atitinka aukščiausią leidimą).
                • ", - "not_null" => "Privalomi laukeliai negali būti tušti!", - "picture_can_not_null" => "Nuotraukos negali būti tuščias!", - "rname_success" => "Pervadinti sėkmės!", - "please_inpute_search_words" => "Įveskite eilutę ieškoti", - "remove_success" => "Sėkmingai ištrintas!", - "remove_fali" => "Ištrinti nepavyko!", - "clipboard_null" => "Mainų yra tuščias!", - "create_success" => "Nauja sėkmė!", - "create_error" => "Nauja nepavyksta, patikrinkite katalogas teises!", - "copy_success" => "[Kopija] - apimantis iškarpinę sėkmės!", - "cute_success" => "[CUT] - apimantis iškarpinę sėkmės!", - "clipboard_state" => "Mainų būsena:", - "no_permission_write_all" => "Šis failas ar direktorija neįrašomi", - "no_permission_write_file" => "Šis failas neturi rašymo leidimo", - "no_permission_read_all" => "Failas arba katalogas neturi skaitymo leidimą", - "copy_not_exists" => "Šaltinis neegzistuoja", - "current_has_parent" => "Tikslinė aplankas yra šaltinio katalogą Poaplankis!", - "past_success" => "pasta operacija yra baigta", - "cute_past_success" => "pjovimo operacija baigta(šaltinis failas yra ištrintas, iškarpinę tuščia)", - "zip_success" => "Suspaudimas baigtas", - "not_zip" => "ne archyvas", - "zip_null" => "Nepasirinkote failo ar katalogo", - "unzip_success" => "išpakuokite pilnas", - "gotoline" => "Pereiti prie linijos", - "path_is_current" => "Kelias ir dabartinis kelias atidaryti pats!", - "path_exists" => "Pavadinimas jau egzistuoja!", - "undo" => "atšaukimas", - "redo" => "kovos atšaukimas", - "preview" => "Peržiūrėti", - "wordwrap" => "įvyniojimas", - "show_gutter" => "Rodyti eilučių numerius", - "char_all_display" => "Rodyti nematomus rašmenis", - "auto_complete" => "automatiškai paragina", - "auto_save" => "Automatiškai išsaugokite", - "function_list" => "funkcija sąrašas", - "code_theme" => "kodavimas Stilius", - "font_size" => "šrifto dydis", - "confirm" => "Ar tikrai norite tai padaryti?", - "button_ok" => "nustatyti", - "button_submit" => "pateikti", - "button_set" => "įsteigti", - "button_cancel" => "atšauktas", - "button_edit" => "redaguoti", - "button_save" => "Išsaugoti", - "button_apply" => "Taikyti", - "button_save_all" => "Išsaugoti visus", - "button_not_save" => "Negalima išsaugoti", - "button_add" => "papildyti", - "button_back_add" => "Atgal pridėti", - "button_del" => "panaikinti", - "button_save_edit" => "išsaugoti pakeitimus", - "button_save_submit" => "išsaugoti Pateikti", - "button_more" => "daugiau", - "button_select_all" => "Pasirinkti viską / Žymėti", - "charset_AUTO" => "Automatinis identifikavimas", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabų", - "charset_ISO_8859_6" => "arabų", - "charset_ISO_8859_10" => "Šiaurės kalbos", - "charset_CP1257" => "baltų kalbos", - "charset_ISO_8859_13" => "baltų kalbos", - "charset_ISO_8859_4" => "baltų kalbos", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "gruzinų", - "charset_PT154" => "kazachų", - "charset_CP949" => "korėjiečių", - "charset_EUC_KR" => "korėjiečių", - "charset_GB18030" => "Supaprastinta kinų", - "charset_GBK" => "Supaprastinta kinų", - "charset_ISO_8859_14" => "Keltų", - "charset_CP1133" => "Laoso", - "charset_ISO_8859_16" => "rumunų", - "charset_ISO_8859_3" => "Pietų Europos", - "charset_EUC_JP" => "Japonijos", - "charset_ISO_2022_JP" => "Japonijos", - "charset_SHIFT_JIS" => "Japonijos", - "charset_KOI8_T" => "tadžikų kalba", - "charset_ISO_8859_11" => "tajų", - "charset_TIS_620" => "tajų", - "charset_CP1254" => "turkų", - "charset_CP1251" => "kirilica", - "charset_ISO_8859_5" => "kirilica", - "charset_KOI8_R" => "kirilica", - "charset_KOI8_U" => "kirilica", - "charset_CP1252" => "Vakarų Europos kalbos", - "charset_ISO_8859_1" => "Vakarų Europos kalbos", - "charset_ISO_8859_15" => "Vakarų Europos kalbos", - "charset_Macintosh" => "Vakarų Europos kalbos", - "charset_CP1255" => "hebrajų", - "charset_ISO_8859_8" => "hebrajų", - "charset_CP1253" => "graikų", - "charset_ISO_8859_7" => "graikų", - "charset_ARMSCII_8" => "armėnų", - "charset_CP1258" => "vietnamiečių", - "charset_VISCII" => "vietnamiečių", - "charset_CP1250" => "Centrinės Europos kalbos", - "charset_ISO_8859_2" => "Centrinės Europos kalbos", - "charset_default_set" => "failo kodavimas", - "charset_convert_save" => "Išsaugokite failą užkoduotas kaip", - "PluginCenter" => "kištukas centras", - "PluginBuy" => "Pirkimo leidimas", - "PluginInstalled" => "Buvo įdiegta", - "PluginUpdate" => "atnaujinimas", - "PluginListNull" => "Nėra turinį!", - "PluginType" => "klasifikacija", - "PluginTypeAll" => "pilnas", - "PluginTypeFile" => "Glaudesnis failą", - "PluginTypeSafe" => "apsaugos priemonės", - "PluginTypeTools" => "naudingumas", - "PluginTypeMedia" => "daugialypė terpė", - "PluginTypeOthers" => "kitas", - "PluginInstall" => "Įdiekite kištuką", - "PluginEnable" => "Įjungti papildinius", - "PluginDisable" => "išjungti", - "PluginRemove" => "Pašalinti kamštį", - "PluginConfig" => "Konfigūruoti įskiepiai", - "PluginStatus" => "valstybės", - "PluginStatusEnabled" => "įjungta", - "PluginStatusDisabled" => "neįjungti", - "PluginStatusNotInstall" => "ne Instaliuota", - "PluginInstalling" => "Įrengimas ...", - "PluginHasUpdate" => "Atnaujinimai", - "PluginUpdateStart" => "Atnaujinti papildinį", - "PluginNeedConfig" => "Poreikis, kad pradinę konfigūraciją", - "PluginConfigNotNull" => "Privalomi laukeliai negali būti tušti!", - "PluginOpen" => "atviras", - "PluginAuther" => "autorius", - "PluginVersion" => "leidimas", - "PluginDownloadNumber" => "Diegia", - "PluginBack" => "sugrįžimas", - "PluginReadme" => "aprašymas", - "PluginResetConfig" => "Atkurkite numatytuosius nustatymus", - "PluginInstallSelf" => "Rankinis diegimas", - "Plugin.config.auth" => "leidimai", - "Plugin.config.authDesc" => "Visi galimų nustatymų, arba nurodyti vartotojai, vartotojų grupės, teisių grupės gali naudoti", - "Plugin.config.authOpen" => "Atvira prieiga", - "Plugin.config.authOpenDesc" => "Nebūtina aplankyti, gali būti prieinama, gali būti naudojamas išorinio ryšio skambučiams", - "Plugin.config.authAll" => "turėtojas", - "Plugin.config.authUser" => "vartotojas", - "Plugin.config.authGroup" => "Paskirtas skyrius", - "Plugin.config.authRole" => "teisės grupė", - "Plugin.Config.openWith" => "Atviras stilius", - "Plugin.Config.openWithDilog" => "vidaus dialogo", - "Plugin.Config.openWithWindow" => "Naujas puslapis atsidaro", - "Plugin.Config.fileSort" => "Pratęsimas asociacijos prioritetu", - "Plugin.Config.fileSortDesc" => "Kuo didesnis išplėtimas atidaryti didesnį prioritetą", - "Plugin.Config.fileExt" => "Palaikomi failų formatai", - "Plugin.Config.fileExtDesc" => "Susijęs pratęsimas į plug-in", - "Plugin.tab.basic" => "pagrindiniai nustatymai", - "Plugin.tab.auth" => "leidimai", - "Plugin.tab.others" => "Kiti nustatymai", - "Plugin.default.aceEditor" => "ace redaktorius", - "Plugin.default.htmlView" => "Interneto puslapis Peržiūra", - "Plugin.default.picasa" => "vaizdo naršymo picasa", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer grotuvas", - "Plugin.auth.viewList" => "Pluginų sąrašas", - "Plugin.auth.setting" => "Įskiepių nustatymai", - "Plugin.auth.status" => "Išjunkite", - "Plugin.auth.install" => "Įdiekite / pašalinkite", - "Explorer.UI.openWith" => "pasirinkite Atidaryti", - "Explorer.UI.openWithText" => "Užrašų atidaryti", - "Explorer.UI.appSetDefault" => "Nustatykite numatytąjį Atidaryti", - "Explorer.UI.appAwaysOpen" => "Visada naudokite pasirinktą programą atidaryti šį failą", - "Explorer.UI.selectAppDesc" => "Pasirinkite programą, kurią norite atidaryti šį failą", - "Explorer.UI.selectAppWarning" => "Prašome pasirinkti programą!", - "Explorer.UI.appTypeSupport" => "Palaikomi", - "Explorer.UI.appTypeAll" => "Visos programos", - "kodApp.oexe.edit" => "Redaguoti šviesos programą", - "kodApp.oexe.open" => "Atidarykite šviesos taikymą" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/nl/about.html b/plugin/document/kod/config/i18n/nl/about.html deleted file mode 100644 index a3bf628a3..000000000 --- a/plugin/document/kod/config/i18n/nl/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer wil Wat?
                  -

                  KODExplorer is een open source web-based online document management, code-editor. Het voorziet in een soort klassieke Windows-gebruikersinterface, een set van online document management, file preview, bewerken, uploaden, downloaden, unzip online afspelen van muziek. Hiermee kunt u web development direct bereiken in de browser, broncode bestand preview, en de site-eigenaar en de lokale bediening zo eenvoudig, snel en veilig ervaring in te zetten.

                  -

                  - design -

                  -

                  klassieke traditie, het streven naar innovatie, om gebruikers te voorzien van handige, veilig en gemakkelijk online cloud management systeem te gebruiken.

                  -

                  wanneer (wanneer), waarbij (waar), heeft het web wanneer u wilt (willen) het is uw management tool (4W-beleid).

                  -

                  - gebruikersgerichte -

                  -

                  momenteel KODExplorer management systeem voornamelijk gevestigd in de persoonlijke cloud hosting, kleine enterprise cloud resource management, netwerk schijf, beheer van kleine en middelgrote sites. Web Developer & Master (veteranen): online editor, gecomprimeerde back-up, implementatie, de klassieke Windows-interface bediening, makkelijk om te beginnen en zich te ontdoen van de gastheer SSH, ftp commando complexe boringen.

                  -

                  persoonlijke private cloud (rookie): Management netwerk schijf middelen, dezelfde klassieke Windows-interface bediening, kunt u de muziek bladeren netwerk drive, het scherm bestanden uploaden en downloaden snel en eenvoudig te plaatsen.

                  -
                  - -
                  -
                  Features
                  -

                  uitgebreide document management, krachtige online file editor

                  -

                  waar u ook bent, kunt u uw bestanden te beheren, en online entertainment, online het schrijven van code! Zowel geschikt voor toepassing als het besturingssysteem.

                  -

                  uitgebreide lokale ervaring transplantatie rechts slepen, selectie box, snelkoppelingen, file search (search inhoud) ......

                  -

                  selectie box, drag-beweging, drag and drop uploaden, online editor, videospeler, decomprimeren. Volledige ajax garantie prestaties en ervaring!

                  -

                  elke functie directe naadloze aansluiting; in het dialoogvenster vorm, multi-task management functies

                  -

                  Editor ondersteunt multi-document, ondersteuning ZendCoding html, css, js hogere codering efficiency!

                  -

                  perfect Chinese steun, onleesbaar te lossen verschillende situaties;

                  -
                  - -
                  -
                  open source technologie adoptie
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) JS-mainstream ontwikkelingskader. De bediening van de Dom, BOM operatie, css bediening en Ajax pakket

                  -

                  2.ArtDialog:een mooi ontwerp, een sterke browser compatibiliteit dialoogvenster widget. Dus pop-up handvat, evenementen, en de overdracht van gegevens naar een betere unified management krijgen

                  -

                  3.Ztree:lijst boom controle, schaalbaarheid is erg sterke boom data manipulatie widget

                  -

                  4.codemirror:een code-editor js plugins, ondersteunt een groot aantal programmeertalen voor het benadrukken van

                  -

                  5.zendcoding:ondersteuning html-codes hoge schrijfsnelheid plug-ins. Vereenvoudigt de definitie van de code is geschreven. Simpele compilatie

                  -

                  6.less:een efficiënte, functionele css ontwikkelingsmodel naar het front end css stylesheets herbruikbaarheid verbeteren . Simpele compilatie

                  -

                  7.SWFUpload:flash-bestand te uploaden

                  -

                  8 .CMP4:een zeer goede flash player plugin mediabestanden, ondersteuning voor streaming media, populaire muziek afspelen van video tool. Steun voor de huid, zeer configureerbare instellingen. Dynamische lijst xml geladen. mms streaming media, rstp open source licentie afspelen van media-ondersteuning

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/nl/edit.html b/plugin/document/kod/config/i18n/nl/edit.html deleted file mode 100644 index 69cf2fc09..000000000 --- a/plugin/document/kod/config/i18n/nl/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  rijke functionaliteit

                  -

                  Code automatisch gevraagd

                  -

                  Multi-thema: Kies je favoriete programma's stijl

                  -

                  Custom Font: voor gebruik op scène

                  -

                  Multi cursor bewerken, blok bewerken online programmeerervaring vergelijkbaar met het sublieme

                  -

                  Block vouwen, uit te breiden; wrap

                  -

                  Ondersteuning voor meerdere tabs, sleept u de schakelvolgorde;

                  -

                  Het onderhouden van meerdere documenten, te vinden en te vervangen; Geschiedenis;

                  -

                  Auto-complete [], {}, (), '' ''

                  -

                  Online real-time preview die u toelaat om verliefd te worden met online programmering!

                  -

                  zendcodeing ondersteuning, code schrijven tachtig

                  -

                  Meer functies wachten op uw ontdekking ......

                  -
                  -
                  -

                  150 soorten code highlighting

                  -

                  Tip: html, JavaScript, css, minder, sass, SCSS

                  -

                  web development: PHP, Perl, Python, Ruby, Elang, ga ...

                  -

                  Traditioneel talen: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Andere: markdown, shell, sql, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  sneltoets Actie

                  -
                   Veel gebruikte snelkoppelingen: 
                  - ctrl + s op te slaan 
                  - Ctrl + A Alles selecteren Ctrl + X Cut 
                  - ctrl + c ctrl + v plakken copy 
                  - Ctrl + Z Ongedaan maken Ongedaan maken Anti ctrl + y 
                  - Ctrl + F om vervangende ctrl + f + f vinden 
                  - win + alt + 0 alles inklappen win + alt + shift + 0 Expand All 
                  - esc [Exit zoekopdracht automatisch geannuleerd vraagt ​​...] 
                  - ctrl-shift-s preview 
                  - ctrl-shift-e Show & Close-functie 
                  -
                  -
                   Kies: 
                  - Muis marquee - drag 
                  - shift + home / end / omhoog / links / omlaag / rechts 
                  - shift + pageUp / PageDown flip op en neer om te selecteren 
                  - ctrl + shift + home / einde van de huidige cursor naar het begin en einde 
                  - alt + muis om het blok selectie slepen 
                  - ctrl + alt + g batch selecteren en voer de huidige multi-tab editor 
                  -
                  -
                   cursor: 
                  - home / end / omhoog / links / omlaag / rechts 
                  - ctrl + home / einde de cursor naar het document kop / staart 
                  - ctrl + p Ga naar bijpassende tag 
                  - pageUp / PageDown cursor omhoog en omlaag 
                  - alt + links / rechts om naar de top van de lijn 
                  - shift + links / rechts cursor naar het einde van de lijn & 
                  - Ctrl + L om naar een bepaalde rij 
                  - ctrl + alt + omhoog / omlaag (zie hieronder) verhoging van de cursor 
                  -
                  -
                   Edit: 
                  - ctrl + / Opmerkingen en uncomment ctrl + alt + een Justified 
                  - tab tafel uitlijning shift + tafel algehele bevordering table 
                  - delete delete delete de gehele lijn ctrl + d 
                  - ctrl + verwijderen om de rij te verwijderen op het juiste woord 
                  - ctrl / shift + backspace om het woord aan de linkerkant te verwijderen 
                  - alt + shift + omhoog / omlaag en toegevoegd aan de kopie lijn (zie hieronder) vlak 
                  - alt + delete om de inhoud van het recht van de cursor te verwijderen 
                  - alt + omhoog / omlaag op de huidige regel en de lijn (volgende regel te wisselen) 
                  - ctrl + shift + d rijen gekopieerd en toegevoegd aan de volgende 
                  - ctrl + delete aan de rechterkant van het woord te schrappen 
                  - Ctrl + Shift + u omgezet in kleine letters 
                  - Ctrl + U geselecteerde tekst naar hoofdletters 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/nl/help.html b/plugin/document/kod/config/i18n/nl/help.html deleted file mode 100644 index cece448cf..000000000 --- a/plugin/document/kod/config/i18n/nl/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  file management
                  -

                  File Selection: radio, muis marquee, shift-verkiezing, ctrl willekeurig gekozen, het toetsenbord omhoog en omlaag, naar huis, einde selectie.

                  -

                  operatie File: Na het selecteren van een bestand, kunt u kopiëren, knippen, verwijderen, de eigenschappen van de compressie, hernoemen, opent u Voorvertoning en andere operaties ......

                  -

                  File Upload: Upload meerdere bestanden batch; html5 upload slepen (sleep om naadloos te uploaden venster, drag and drop ondersteuning voor mappen)

                  -

                  Rechts functie: Right-bestand, map, rechts, meer direct na de verkiezingen operatie, desktop, rechts, rechts directory tree, rechts-gebonden menu shortcuts
                  - (Alles selecteren - Copy - Cut - Paste - Wissen - hernoemen, set ......)

                  -

                  File Browser: List mode, mode icoon, dubbelklik op in sub-mappen; adresbalk operatie, open een map plaat tegendraadse record (vooruit en achteruit)

                  -

                  Ondersteuning slepen en neerzetten: Check slepen, gesneden om de opgegeven map functie te bereiken

                  -

                  Sneltoetsen: delete delete, ctrl + A Alles selecteren, Ctrl + C om te kopiëren, + X Knippen, file search (search inhoud) ctrl

                  -
                  -
                  -
                  file Voorbeeld
                  -

                  File Preview: de inhoud van een tekstbestand te bewerken en opslaan bekijken, html, swf-bestand preview,

                  -

                  Preview: automatisch genereren van miniaturen, diavoorstellingen;

                  -

                  Audio afspelen: speel online muziek- en videobestanden, ondersteuning van mp3, wma, medio, aac, wav, mp4,

                  -

                  Video: online video afspelen, ondersteunde formaten: FLV, F4V, 3gp

                  -

                  office: office Online preview, ondersteunde formaten: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  shortcuts
                  -

                  invoeren Open

                  -

                  Ctrl + A Alles selecteren

                  -

                  ctrl + c om te kopiëren de geselecteerde

                  -

                  ctrl + v om te plakken

                  -

                  ctrl + x Cut

                  -

                  Ctrl + F om de huidige directory te zoeken

                  -

                  alt + n Nieuw bestand

                  -

                  alt + m New Folder

                  -

                  Wissen Geselecteerde

                  -

                  backspace Terug

                  -

                  ctrl + backspace forward

                  -

                  f2 Rename geselecteerd (map)

                  -

                  home / end / omhoog / omlaag / links / rechts om het bestand te selecteren

                  -

                  Elke toets Controleer of de eerste letter van het personage bestanden en mappen geselecteerd automatische cyclus druk

                  -
                  diff --git a/plugin/document/kod/config/i18n/nl/main.php b/plugin/document/kod/config/i18n/nl/main.php deleted file mode 100644 index a1b077c6b..000000000 --- a/plugin/document/kod/config/i18n/nl/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Selecteer het bestand ...", - "path_api_select_folder" => "Selecteer een map ...", - "path_api_select_image" => "Selecteer een afbeelding ...", - "share_can_upload" => "laat upload", - "move_error" => "Move is mislukt", - "setting_basic" => "Basic Settings", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Open Animation", - "recycle_open_if" => "Open de Prullenbak", - "recycle_open" => "open", - "setting_user_recycle_desc" => "Na de verwijdering wordt direct fysieke verwijdering verwijderd", - "setting_user_animate_desc" => "Venster open en andere animatie", - "setting_user_sound_desc" => "Bedieningsgeluid", - "setting_user_imageThumb" => "Miniatuurafbeeldingen", - "setting_user_imageThumb_desc" => "Betere surfervaring na opening", - "setting_user_fileSelect" => "Open het bestand icon controle", - "setting_user_fileSelect_desc" => "Bestand icoon links sleutel controle, klik met de rechtermuisknop menu snelkoppeling", - "qrcode" => "URL QR code", - "theme_mac" => "Mac minimalistisch wit", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "Metro lichtgroen", - "theme_metro_purple" => "Metro elegante paarse", - "theme_metro_pink" => "metro Rose", - "theme_metro_orange" => "Metro fel oranje", - "theme_alpha_image" => "Bright - vliegen", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Custom", - "theme_diy_title" => "Aangepaste Thema-instellingen", - "theme_diy_background" => "achtergrond", - "theme_diy_image" => "beeld", - "theme_diy_color_blur" => "gradiëntkleur", - "theme_diy_image_blur" => "foto blur", - "theme_diy_image_url" => "Foto adres", - "theme_diy_color_start" => "Vanaf kleur", - "theme_diy_color_end" => "end Color", - "theme_diy_color_radius" => "hellingshoek", - "system_role_admin_set" => "Beheerders hebben alle rechten, zonder dat!", - "login_error_user_not_use" => "Gebruiker is uitgeschakeld! Neem contact op met de beheerder", - "login_error_kod_version" => "versie conflict", - "login_error_role" => "Bekijk machtigingen groep bestaat niet, neem dan contact op met de beheerder", - "no_permission_group" => "U bent niet in deze groep!", - "no_permission_write" => "De map heeft geen schrijfrechten", - "user" => "gebruiker", - "save_as" => "Opslaan als", - "check_update" => "bijwerken", - "keyboard_type" => "keyboard Mode", - "font_family" => "fonts", - "code_mode" => "syntax highlighting", - "path_can_not_share" => "Ondersteunt alleen je eigen documenten te delen!", - "path_can_not_action" => "Deze directory biedt geen ondersteuning voor deze operatie!", - "wap_page_pc" => "PC Version", - "wap_page_phone" => "mobiel", - "image_size" => "afbeelding afmetingen", - "no_permission_action" => "Je hoeft niet over deze toestemming kunt u contact opnemen met de beheerder!", - "path_is_root_tips" => "Het is naar de root directory komen!", - "kod_group" => "organisatie", - "my_kod_group" => "Ik ben in de afdeling", - "space_tips_default" => "(GB) 0 geen limiet", - "space_tips_full" => "zonder afbreuk te doen", - "space_size" => "ruimte", - "space_size_use" => "Ruimtegebruik", - "space_is_full" => "Er is niet genoeg ruimte over, neem contact op met de beheerder!", - "system_open_true_path" => "Met succes geopend in de file manager!", - "group_role_error" => "Rol permissies fout (geen permissie instellingen)", - "group_role_error_admin" => "onvoldoende rechten", - "markdown_content" => "Inhoud", - "system_group" => "Gebruikers en afdelingen", - "system_group_edit" => "Afdeling management", - "system_group_role" => "rol identiteit", - "system_group_create" => "Nieuwe afdeling", - "system_group_name" => "Naam van de afdeling", - "system_group_father" => "Rhither strat 员 s.ither", - "system_group_add" => "Voeg subafdeling toe", - "system_group_remove" => "Verwijder de afdeling", - "system_group_remove_tips" => "Weet u zeker dat u de afdeling verwijdert?
                  Nadat de verwijdering van het deel van de gebruiker is verwijderd, wordt de subsector verplaatst naar de wortelsector", - "system_group_select" => "Kies een afdeling", - "system_group_select_result" => "De leden zullen deel uitmaken van de volgende sectoren", - "system_role_admin_tips" => "Opmerkingen: systeembeheerders zijn niet bevoegd om te regelen", - "system_member_action" => "user management", - "system_member_add" => "nieuwe gebruiker", - "system_member_role" => "toestemming rollen", - "system_member_role_select" => "kiezen", - "system_member_password_tips" => "Vul niet gewijzigd", - "system_set_home_path" => "Custom Catalog", - "system_set_home_path_tips" => "De standaard map is leeg", - "system_member_group" => "Waar de afdeling", - "system_member_group_edit" => "Redactieafdeling", - "system_member_remove" => "Gebruiker verwijderen", - "system_member_remove_tips" => "Bevestig verwijderen gebruiker?
                  na het verwijderen van de gebruiker directory wordt volledig gewist", - "system_member_set_role" => "Om de verandering van de geselecteerde groep gebruikers permissies te bevestigen?", - "system_member_remove_group" => "Bepaal de geselecteerde gebruiker uit deze groep worden verwijderd?", - "system_member_import" => "bulk add", - "system_member_import_desc" => "Eén gebruiker per regel,
                  reeds bestaan ​​worden stilletjes genegeerd", - "system_member_use" => "in staat stellen", - "system_member_unuse" => "onbruikbaar maken", - "system_member_space" => "Stel de grootte van de gebruikersruimte in ", - "system_member_space_tips" => " Stel de grootte van de gebruikersruimte in ", - "system_member_space_number" => " Moet een getal zijn!", - "system_member_group_config" => "Batchinstelling afdeling", - "system_member_group_remove" => "Verwijderd van de afdeling", - "system_member_group_insert" => "Toevoegen aan afdeling", - "system_member_group_reset" => "Stel de afdeling opnieuw in", - "system_member_group_error" => "Departement fout", - "system_group_action" => "Afdeling management", - "system_role_add" => "Voeg Role Identity", - "system_role_read" => "Alleen-lezen", - "system_role_write" => "Kan lezen en schrijven", - "system_setting_root_path" => "root-toegang", - "system_setting_root_path_desc" => "Alleen een systeembeheerder kan toegang tot alle mappen, kunnen andere rechten groepen gebruikers zien alleen hun eigen gebruikersdirectory. Als u wilt in- of uitschakelen
                  beheerder toegang tot andere mappen, kunt u de php open_basedir anti-cross-site parameters aan te passen,set", - "system_group_role_title" => "Departementele autoriteiten rolmanagement", - "system_group_role_remove" => "OK om de afdelingsrol te verwijderen", - "system_group_role_style" => "stijl", - "system_group_role_display" => "of", - "system_group_role_display_desc" => "Stel of de gebruikersrechten van de afdeling al dan niet moeten worden weergegeven", - "role_type_name_read" => "lezen", - "role_type_name_read:list" => "file List", - "role_type_name_read:info" => "File (map) pand Bekijk, Map zoeken", - "role_type_name_read:copy" => "File Copy", - "role_type_name_read:preview" => "File preview (foto's, documenten, audio en video)", - "role_type_name_read:download" => "File (map) Download", - "role_type_name_write" => "schrijven", - "role_type_name_write:add" => "Maak een bestand (map), pak het gecomprimeerde bestand", - "role_type_name_write:edit" => "Sla het bestand te bewerken", - "role_type_name_write:change" => "Naam wijzigen, past u de mappenstructuur", - "role_type_name_write:upload" => "File (map) uploaden, op afstand te downloaden", - "role_type_name_write:remove" => "File (map) wilt verwijderen, knippen", - "group_guest" => "bezoekers", - "group_guest_desc" => "U bent niet lid van de afdeling,
                  kan alleen toegang tot de [afdeling gedeelde directory] de volgende inhoud, alleen-lezen rechten.", - "group_role_lebel_desc" => "U bent lid van deze afdeling,
                  Alle documenten binnen de afdeling Alle rechten voorbehouden door de beheerder", - "button_save_and_add" => "Opslaan en doorgaan om toe te voegen", - "path_cannot_search" => "De directory ondersteunt de zoekopdracht!", - "not_support" => "Niet ondersteund!", - "group_not_exist" => "Gebruikersgroep bestaat niet!", - "upload_clear_all" => "Clear all", - "upload_clear" => "Clear Completed", - "upload_setting" => "oprichten", - "upload_tips" => "Gebruikt slice upload, niet langer onderworpen aan php.ini beperken; aanbevolen chroom map slepen en neerzetten uploaden ervaring", - "upload_exist" => "Bestand met dezelfde naam", - "upload_exist_rename" => "andere naam geven", - "upload_exist_replace" => "deksel", - "upload_exist_skip" => "overslaan", - "upload_add_more" => "bulk add", - "more" => "meer", - "system_setting" => "System Settings", - "openProject" => "Open het project editor", - "url_download" => "Download", - "url_link" => "URL", - "app_type_link" => "shortcuts", - "createLink" => "Snelkoppeling", - "createLinkHome" => "Verzonden naar de snelkoppeling op het bureaublad", - "createProject" => "Toe te voegen aan de editor project", - "only_read" => "Alleen-lezen", - "only_read_desc" => "De map heeft geen schrijfrechten
                  U kunt machtigingen instellen voor deze map op de server", - "not_read" => "onleesbaar", - "explorerNew" => "kod koppeling", - "zip_download_ready" => "Na compressie wordt automatisch te downloaden, even geduld ...", - "set_background" => "Instellen als bureaublad Wallpaper", - "share" => "aandeel", - "my_share" => "Mijn aandeel", - "group_share" => "Groep extern delen", - "share_edit" => "Bewerken delen", - "share_remove" => "Annuleren delen", - "share_remove_tips" => "Weet u zeker dat u het delen wilt annuleren? De publieke verbinding wordt ongeldig verklaard.", - "share_path" => "Deel het pad", - "share_title" => "Resource sharing", - "share_name" => "Deel de titel", - "share_time" => "vervaltijd", - "share_time_desc" => "Null is niet ingesteld", - "share_password" => "extract password", - "share_password_desc" => "Leeg wachtwoord is niet ingesteld", - "share_cancle" => "Unsharing", - "share_create" => "Maak een openbaar koppeling", - "share_url" => "gedeelde Adres", - "share_not_download" => "Download ban", - "share_not_download_tips" => "Sharer verboden download!", - "share_code_read" => "codelezer", - "share_save" => "Configuratie opslaan", - "share_error_param" => "Parameter fout!", - "share_error_user" => "User Information Error!", - "share_error_sid" => "Share bestaat niet!", - "share_error_time" => "Je komt te laat, het aandeel is verlopen!", - "share_error_path" => "Gedeeld bestand niet bestaat, wordt deze verwijderd of verwijderd!", - "share_error_password" => "Verkeerd wachtwoord!", - "share_error_show_tips" => "Dit type ondersteunt geen file preview!", - "share_view_num" => "Bekeken:", - "share_download_num" => "downloads:", - "share_open_page" => "Open de gedeelde pagina", - "open_the_path" => "Voer directory", - "recycle_clear" => "lege prullenbak", - "recycle_clear_success" => "Lege prullenbak succes!", - "recycle_clear_info" => "Weet je zeker dat je helemaal leeg de prullenbak?", - "fav_remove" => "Annuleer de collectie", - "remove_item" => "items", - "uploading" => "uploaden", - "upload_tips_more" => "Te veel bestanden, de aanbeveling van de gecomprimeerde upload, dan pak online!", - "uploading_move" => "In de samenvoegoverdracht ...", - "show_file" => "Nieuwe paginavoorbeeld", - "unknow_file_title" => "File Open Tip!", - "unknow_file_tips" => "Was geen voorstander van de toepassing van dit bestand, kunt u:", - "unknow_file_try" => "proberen", - "unknow_file_download" => "Download het bestand", - "unknow_plugin_search" => "Search-gerelateerde toepassingen die zijn geïnstalleerd", - "config_save_error_auth" => "Kan de configuratie op te slaan, de beheerder verboden dit voorrecht!", - "config_save_error_file" => "Fout, het bestand niet beschrijfbaar!", - "beautify_code" => "code Formatter", - "convert_case" => "Case conversie", - "convert_upper_case" => "Omgerekend naar hoofdletters", - "convert_lower_case" => "Omgezet in kleine letters", - "editor_insert_time" => "Huidige tijd ", - "editor_md5" => " Md5-codering ", - "editor_qrcode" => " String tweedimensionale code ", - "editor_regx" => " Reguliere expressie testen ", - "editor_chinese" => " Vereenvoudigde conversie ", - "editor_chinese_simple" => " Converteren naar Vereenvoudigd Chinees ", - "editor_chinese_traditional" => " Converteren naar traditioneel Chinees ", - "editor_base64" => "Base64-codec ", - "editor_base64_encode" => " Base64-codering ", - "editor_base64_decode" => " Base64-decodering ", - "editor_url" => " URL codec ", - "editor_url_encode" => " URL-codering ", - "editor_url_decode" => " URL-decodering ", - "editor_unicode" => " Unicode-codec ", - "editor_unicode_encode" => " Unicode-codering ", - "editor_unicode_decode" => " Unicode-decodering", - "editor_tools_select_tips" => " Selecteer de inhoud die u wilt converteren!", - "editor_calc" => "Gratis rekenmachine", - "shortcut" => "shortcuts", - "use_free" => "Blijf de gratis versie gebruiken", - "learn_more" => "Meer info", - "replace" => "vervangen", - "selectAll" => "kiezen", - "reload" => "Reload", - "about" => "op", - "complete_current" => "Automatische aanvulling van de huidige", - "view" => "uitzicht", - "tools" => "gereedschap", - "help" => "helpen", - "not_exists" => "Bestaat niet", - "group_role_fileDownload" => "downloads", - "group_role_share" => "aandeel", - "users_share" => "Het delen van", - "system_setting_save" => "security Settings", - "system_setting_menu" => "menu beheer", - "system_name" => "programma Naam", - "system_name_desc" => "Programma logo title", - "system_desc" => "programma Beschrijving", - "path_hidden" => "directory uitsluitingen", - "version_not_support" => "Uw versie ondersteunt dit niet, ga dan naar de officiële website van de geavanceerde versie te kopen!", - "version_not_support_number" => "Naarmate het aantal beperking is niet van deze operatie te ondersteunen, dan koopt u de geavanceerde versie van de officiële website!", - "path_hidden_desc" => "Mappen en bestanden standaard niet wordt weergegeven, gescheiden door komma's", - "new_user_folder" => "De nieuwe gebruiker wordt standaard directory", - "new_user_folder_desc" => "Gescheiden door komma's", - "new_user_app" => "De nieuwe gebruiker wordt standaard app", - "new_user_app_desc" => "Toepassingen Application Center, meerdere gescheiden door komma's", - "auto_login" => "Bezoekers automatisch inloggen", - "auto_login_desc" => "De standaard login gebruikerguest/guestgebruikers, na het openen om ervoor te zorgen dat de gebruiker bestaat", - "first_in" => "Na het inloggen in de standaard", - "version_price_free" => "gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory is niet beschrijfbaar, stelt u de map en alle submappen om opnieuw te proberen na het lezen en schrijven!", - "menu_name" => "naam menu", - "menu_hidden" => "verbergen", - "menu_show" => "tonen", - "menu_move_down" => "naar beneden", - "menu_move_up" => "omhoog", - "menu_move_del" => "Verwijder", - "menu_open_window" => "Open een nieuw venster", - "menu_sub_menu" => "submenu", - "url_path" => "uRL-adres", - "url_path_desc" => "url adres of js code", - "no_permission_read" => "U heeft geen toestemming om te lezen!", - "no_permission_download" => "Je hebt geen toestemming om te downloaden!", - "php_env_check" => "Werkomgeving monitoring:", - "php_env_error" => "Php bibliotheek ontbreekt", - "php_env_error_ignore" => "Negeren en voer", - "php_env_error_version" => "PHP-versie kan niet lager zijn dan 5,0", - "php_env_error_path" => "niet beschrijfbaar", - "php_env_error_list_dir" => "Uw webserver opent de directory listing functie om veiligheidsredenen, schakelt u deze functie!hoe?", - "php_env_error_gd" => "Php GD bibliotheek moet open zijn, anders wordt de code, gebruik maken van de miniatuur zal niet goed functioneren", - "install_login" => "U kunt de volgende account login gebruiken", - "install_enter" => "het systeem", - "install_user_default" => "Administrateur: {0} / (hieronder een wachtwoord instellen)
                  Gemiddelde gebruiker: {1}
                  Gast gebruikers: {2}", - "login_root_password" => "Stel het beheerderswachtwoord", - "login_root_password_repeat" => "Bevestig wachtwoord opnieuw", - "login_root_password_equal" => "De twee wachtwoorden komen niet overeen!", - "login_root_password_tips" => "Stel een beheerderswachtwoord!", - "forget_password" => "Wachtwoord vergeten", - "forget_password_tips" => "Wachtwoord Administrator-wachtwoord:
                  Gelieve server log verwijderen ./data/system/install.lock resetten;

                  Non-administrator Wachtwoord vergeten:
                  Neem contact op met de beheerder om opnieuw in te stellen!", - "copyright_desc" => "Kodexplorer is een zeer gewaardeerde web document management systeem, je kunt het gebruiken voor interne management document of gedeeld, kan ook gebruikt worden op de site management server, vervangt FTP, zelfs als webIDE direct online ontwikkeling. U kunt ook de tweede ontwikkeling programmeren om deze te integreren in uw bestaande systemen.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango cloud • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango cloud • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao wolk, cloud mango, document management systemen, enterprise cloud schijf, ontdekkingsreiziger ,, online documentatie, online Office, online kantoor, online CAD preview, online editing , online editor", - "kod_meta_description" => "KodExplorer kunnen wolk Road (voorheen mango cloud) is een toonaangevende leverancier van de overheid / bedrijfsleven private clouds en online document management systeem voor persoonlijke websites, enterprise private cloud-implementaties, netwerk-storage, online document management, online kantoor om veilige en gecontroleerde, eenvoudig en gemakkelijk te bieden gebruik sterk aangepaste private cloud-producten. Met behulp van Windows-achtige interface, bedrijfsvoering, zonder dat aan te passen aan snel aan de slag te ondersteunen honderden populaire online preview-bestandsformaat, afspelen en bewerken van milieuvriendelijk, krachtig, is een keer proces, niet meer onlosmakelijk verbonden met de private cloud aanbod.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Log in", - "guest_login" => "gast Aanmelden", - "username" => "Login account", - "userNickName" => "Gebruikersnaam", - "password" => "wachtwoord", - "login_code" => "codes", - "need_check_code" => "Inloggen authenticatie code geopend", - "need_check_code_desc" => "Nadat u zich hebt aangemeld, moet u de verificatiecode invoeren.", - "setting_csrf_protect" => "Open bescherming CSRF", - "setting_csrf_protect_desc" => "Na het openen type aanval kan effectief beschermen csrf", - "login_rember_password" => "Onthoud wachtwoord", - "setting_show_root_group" => "Lijst alle afdelingen", - "setting_show_root_group_desc" => "Tree directory root afdeling of alle afdelingen moeten worden vermeld", - "setting_show_share_user" => "Een lijst van alle gebruikers", - "setting_show_share_user_desc" => "De wortelafdeling van de boommap is vermeld voor alle gebruikers delen", - "setting_clear_user_recycle" => "Leeg de prullenbak voor alle gebruikers", - "setting_clear_cache" => "De cache leegmaken", - "setting_icp" => "Copyright of record aantal", - "setting_global_css" => "Custom wereldwijde css", - "setting_global_css_desc" => "Alle pagina's zullen aangepaste css invoegen", - "setting_global_html" => "Statistische code HTML", - "setting_global_html_desc" => "Alle pagina's in deze paragraaf html code worden aangebracht, kan de code worden geplaatst statistieken van derden", - "us" => "kodcloud.com", - "login_not_null" => "Gebruikersnaam en wachtwoord kan niet leeg zijn!", - "code_error" => "foutcodes", - "password_error" => "Gebruikersnaam of wachtwoord is onjuist!", - "password_not_null" => "Het wachtwoord kan niet leeg zijn!", - "old_password_error" => "Oude wachtwoord is verkeerd!", - "permission" => "Toestemming!", - "permission_edit" => "wijzigen Machtigingen", - "file_info_owner" => "eigenaar", - "file_info_group" => "groep", - "no_permission" => "Administrator heeft dit privilege uitgeschakeld!", - "no_permission_ext" => "Administrator verbood dit type bestand permissies", - "dialog_max" => "maximaliseren", - "dialog_min" => "verkleinen", - "dialog_min_all" => "Minimaliseer alle", - "dialog_display_all" => "Laat alle vensters", - "dialog_close_all" => "Sluit alle", - "open" => "open", - "others" => "anders", - "open_with" => "Open voor ...", - "close" => "dicht", - "close_all" => "Sluit alle", - "close_left" => "Sluit het tabblad links", - "close_right" => "Tabbladen aan de rechterkant", - "close_others" => "close Andere", - "loading" => "Operation ...", - "warning" => "waarschuwing", - "getting" => "Klik hier voor de ...", - "sending" => "datatransmissie ...", - "data_error" => "Data Error!", - "get_success" => "Get Succes!", - "save_success" => "Succesvol opgeslagen!", - "success" => "succesvolle operatie", - "error" => "Bewerking mislukt", - "error_repeat" => "De bewerking is mislukt, de naam bestaat al!", - "word_error" => "mislukking ", - "word_success" => " succes", - "system_error" => "systeemfout", - "name" => "naam", - "type" => "type", - "contain" => "bevatten", - "address" => "plaats", - "size" => "maat", - "byte" => "byte", - "path" => "pad", - "action" => "bedrijfs-", - "create_time" => "Gemaakt", - "modify_time" => "gewijzigd", - "last_time" => "laatste Bezoek", - "sort_type" => "Sorteren op", - "time_type" => "d/m/Y H:i:s", - "time_type_info" => "d/m/Y H:i:s", - "public_path" => "openbare directory", - "system_path_not_change" => "System directory, kan niet worden gewijzigd", - "file" => "file", - "folder" => "map", - "copy" => "exemplaar", - "past" => "stok", - "clone" => "Maak een kopie", - "cute" => "scheren", - "cute_to" => "Verplaatsen naar ...", - "copy_to" => "Kopiëren naar ...", - "remove" => "Verwijder", - "remove_force" => "volledig te verwijderen", - "info" => "eigenschap", - "list_type" => "uitzicht", - "list_icon" => "Icon-array", - "list_list" => "lijst arrangement", - "list_list_split" => "Column mode", - "sort_up" => "aanwas", - "sort_down" => "afnemende", - "order_type" => "Sorteren op", - "order_desc" => "aflopend", - "order_asc" => "oplopend", - "rename" => "andere naam geven", - "add_to_fav" => "Toevoegen aan favorieten", - "search_in_path" => "Folder zoeken", - "add_to_play" => "Toevoegen aan playlist", - "manage_fav" => "Favorieten beheren", - "refresh_tree" => "Vernieuwen directory tree", - "manage_folder" => "directory-beheer", - "close_menu" => "menu sluiten", - "zip" => "Maak een gecomprimeerd pakket", - "unzip" => "Om uit te pakken ...", - "unzip_folder" => "Unzip naar een map", - "unzip_this" => "Extract van de huidige", - "unzip_to" => "Om uit te pakken ...", - "zipview_file_big" => "Het bestand is te groot, en pak vervolgens het voorbeeld operatie!", - "clipboard" => "Bekijk Clipboard", - "clipboard_clear" => "leeg Klembord", - "full_screen" => "full Screen", - "folder_info_item" => "items", - "folder_info_item_select" => "Een geselecteerde", - "file_load_all" => "Dubbelklik op om alle laden ......", - "tips" => "prompt", - "ziping" => "Je kunt tegenkomen ...", - "unziping" => "Het halen van ...", - "moving" => "Mobiel gebruik ...", - "remove_title" => "Delete Bevestiging", - "remove_info" => "Bevestigen om het geselecteerde item wilt verwijderen?", - "remove_title_force" => "permanent verwijderd", - "remove_info_force" => "Weet u zeker dat u dit document wilt verwijderen?", - "name_isexists" => "Fout, de naam bestaat al!", - "install" => "installeren", - "width" => "breedte", - "height" => "hoog", - "app" => "Light Applications", - "app_store" => "Light Applications", - "app_create" => "Maak Application", - "app_edit" => "Wijzig de applicatie", - "app_group_all" => "compleet", - "app_group_game" => "spel", - "app_group_tools" => "gereedschap", - "app_group_reader" => "lezen", - "app_group_movie" => "televisie", - "app_group_music" => "muziek", - "app_group_life" => "leven", - "app_group_others" => "anders", - "app_desc" => "beschrijving", - "app_icon" => "toepassingen pictogram", - "app_icon_show" => "url-adres of de directory", - "app_group" => "Application Packet", - "app_type" => "type", - "app_type_url" => "link", - "app_type_code" => "js uitbreiding", - "app_display" => "buitenkant", - "app_display_border" => "Zonder grenzen (dwz selecteren zonder grenzen)", - "app_display_size" => "Resize (Controleer aanpassing)", - "app_size" => "maat", - "app_url" => "Link adres", - "app_code" => "js code", - "edit" => "uitgeven", - "edit_can_not" => "Niet een tekstbestand", - "edit_too_big" => "Bestand is te groot, het kan niet groter zijn dan 40M worden", - "open_default" => "standaard Open", - "open_ie" => "Open de browser", - "refresh" => "verversen", - "refresh_all" => "Dwing een refresh", - "newfile" => "nieuw bestand", - "newfile_save_as" => "Opslaan naar", - "newfolder" => "nieuwe map", - "newothers" => "Andere nieuwe", - "path_loading" => "Loading ...", - "go" => "Lopen!", - "go_up" => "bovenlaag", - "history_next" => "vooruit", - "history_back" => "retraite", - "address_in_edit" => "Klik hier om edit mode in te voeren", - "double_click_rename" => "Dubbelklik op het hernoemen", - "double_click_open" => "Dubbelklik om te openen", - "path_null" => "Folder is leeg!", - "file_size_title" => "Icon Size", - "file_size_small_super" => "Ultra-kleine", - "file_size_small" => "kleine pictogrammen", - "file_size_default" => "Icons", - "file_size_big" => "grote pictogrammen", - "file_size_big_super" => "grote Icon", - "upload" => "Upload", - "upload_ready" => "Wachten op upload", - "upload_success" => "uploaden succesvol", - "upload_path_current" => "Overschakelen naar de huidige directory", - "upload_select" => "Selecteer Bestand", - "upload_max_size" => "De maximaal toegestane", - "upload_size_info" => "Als u meer wilt configureren, pas aub php.ini maximaal toegestane upload. Wanneer u een bestand groter is dan deze configuratie automatisch filteren.", - "upload_error" => "Upload mislukt", - "upload_error_http" => "Netwerk of firewall fouten", - "upload_muti" => "Multi-bestand uploaden", - "upload_drag" => "Slepen en neerzetten upload", - "upload_drag_tips" => "Draai om te uploaden!", - "path_not_allow" => "bestandsnaam niet toegestaan", - "download" => "Download", - "downloading" => "Loading ...", - "download_address" => "Download", - "download_ready" => "Wordt gedownload", - "download_success" => "Download Succes!", - "download_error" => "Download mislukt!", - "download_error_create" => "Schrijffout!", - "download_error_exists" => "Link naar bestand mislukt!", - "upload_error_null" => "Geen bestand!", - "upload_error_big" => "bestandsgrootte overschrijdt server grenzen", - "upload_error_move" => "Verplaatsen bestand mislukt!", - "upload_error_exists" => "Het bestand bestaat al", - "upload_local" => "lokale uploaden", - "download_from_server" => "Remote Download", - "save_path" => "Path Save", - "upload_select_muti" => "Een veelvoud van selecteerbare bestand uploaden", - "search" => "zoeken", - "searching" => "Zoeken ...", - "search_result" => "Zoekresultaten", - "seach_result_too_more" => "Te veel zoekresultaten, is het raadzaam om een ​​map of woorden", - "search_null" => "Geen resultaten!", - "search_uplow" => "hoofdlettergevoelig", - "search_content" => "Inhoud Zoek bestand", - "search_info" => "Vul een zoekterm in en zoek paden!", - "search_ext_tips" => "Door | gescheiden, bijvoorbeeld php | js | css
                  niet invullen van de standaard tekstbestand zoeken", - "file_type" => "file Type", - "goto" => "Ga naar", - "server_dwonload_desc" => "Taak werd toegevoegd aan de downloadlijst", - "parent_permission" => "Bovenliggende map permissies", - "root_path" => "mijn documenten", - "lib" => "pakhuis", - "fav" => "bladwijzer", - "desktop" => "Desktop", - "browser" => "browser", - "my_computer" => "Deze computer", - "recycle" => "uitschot", - "my_document" => "mijn documenten", - "my_picture" => "mijn foto's", - "my_music" => "mijn muziek", - "my_movie" => "mijn video's", - "my_download" => "mijn downloads", - "ui_desktop" => "Desktop", - "ui_explorer" => "file management", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "project Thuis", - "ui_login" => "Log in", - "ui_logout" => "ophouden", - "setting" => "System Settings", - "setting_title" => "opties", - "setting_user" => "Personal Center", - "setting_password" => "Wachtwoord wijzigen", - "setting_password_old" => "oud wachtwoord", - "setting_password_new" => "herzien om", - "setting_language" => "Taalinstellingen", - "setting_member" => "user management", - "setting_group" => "Gebruikersgroep beheer", - "setting_group_add" => "Voeg User Group", - "setting_group_edit" => "Gebruiker bewerken Groepen", - "setting_theme" => "thema-instellingen", - "setting_wall" => "Wallpaper-instellingen", - "setting_wall_desktop" => "Bureaubladachtergrond", - "setting_wall_desktop_list" => "Desktop Wallpaper Management", - "setting_wall_login_list" => "Inloggen Wallpaper Management", - "setting_wall_login_tips" => "Tip: wanneer er meer dan één stuk is, zal de achtergrond van de inloginterface willekeurig roteren", - "setting_wall_diy" => "Aangepaste achtergrond:", - "setting_wall_info" => "Picture URL-adres, kan de lokale foto's rechts om de browser te krijgen beeld te openen", - "setting_fav" => "Bookmark Manager", - "setting_help" => "Help gebruiken", - "setting_about" => "over werken", - "setting_success" => "Wijziging van kracht is geworden!", - "can_not_repeat" => "Niet toegestaan ​​om te herhalen", - "absolute_path" => "absolute adres", - "group" => "user Groups", - "data_not_full" => "Ingediende gegevens onvolledig!", - "default_user_can_not_do" => "De standaard gebruiker kan niet werken", - "default_group_can_not_do" => "Standaard gebruikersgroepen kan niet werken", - "username_can_not_null" => "Gebruikersnaam mag niet leeg zijn!", - "groupname_can_not_null" => "Naam gebruikersgroep mag niet leeg zijn!", - "groupdesc_can_not_null" => "User Group Beschrijving mag niet leeg zijn!", - "group_move_user_error" => "User Group gebruikers bewegen is mislukt", - "group_already_remove" => "De gebruikersgroep is verwijderd", - "group_not_exists" => "Deze gebruikersgroep bestaat niet", - "member_add" => "Gebruiker toevoegen", - "password_null_not_update" => "Ze zeiden dat ze niet veranderen het wachtwoord wordt niet gevuld", - "if_save_file_tips" => "Sommige bestanden worden niet opgeslagen. Weet u zeker dat u het venster wilt sluiten?", - "if_save_file" => "Bestand is niet opgeslagen, wilt u besparen?", - "if_remove" => "Bevestig verwijderen", - "member_remove_tips" => "Na het verwijderen van de gebruiker directory worden gewist", - "group_remove_tips" => "Na het verwijderen van de gebruikersgroep van gebruikers kunnen niet inloggen
                  (opnieuw moet instellen gebruikersgroep)", - "group_name" => "Gebruiker naam van de groep", - "group_name_tips" => "Aanbeveling Engels naam, kan niet worden herhaald", - "group_desc" => "Weergavenaam", - "group_desc_tips" => "Groep Naam Omschrijving", - "group_role_ext" => "uitbreiding beperkingen", - "group_role_ext_tips" => "Met meerdere | gescheiden", - "group_role_file" => "file management", - "group_role_upload" => "laat upload", - "group_role_user" => "gebruikersgegevens", - "group_role_group" => "Gebruikersgroep beheer", - "group_role_member" => "user management", - "group_role_mkfile" => "nieuw bestand", - "group_role_mkdir" => "nieuwe map", - "group_role_pathrname" => "andere naam geven", - "group_role_pathdelete" => "dossierschrapping", - "group_role_pathinfo" => "file Properties", - "group_role_pathmove" => "Move (copy / cut / paste / slepen operatie)", - "group_role_zip" => "samendrukking", - "group_role_unzip" => "Unzip", - "group_role_search" => "zoeken", - "group_role_filesave" => "Sla het bestand te bewerken", - "group_role_can_upload" => "Uploaden en downloaden", - "group_role_download" => "Remote Download", - "group_role_passowrd" => "Wachtwoord wijzigen", - "group_role_config" => "Configuration data", - "group_role_fav" => "Bookmark operaties (toevoegen / bewerken / verwijderen)", - "action_list" => "List View", - "action_add" => "toevoegen", - "action_edit" => "uitgeven", - "action_del" => "Verwijder", - "group_role_ext_warning" => "Upload niet toestaan ​​dat dergelijke bestanden,
                  Rename (hernoemd naar het gewenste toestel),
                  bewerken redden, remote download, extract", - "group_tips" => "
                • 1. De naam van de gebruikersgroep kan niet worden gedupliceerd. Nadat de groepsnaam is gewijzigd, behoort deze tot de gereorganiseerde gebruiker en wordt automatisch gekoppeld.
                • 2. Extensies beperken de relatie tussen systeembeveiliging, wees voorzichtig (als u een nieuwe php in de webdirectory aanmaakt, betekent dit dat het wijzigen van de rechten van het programma voor deze gebruiker vrijwel onmogelijk is)
                • 3. Huishoudbeheer, rechtengroepbeheer, kijkrechten en het toevoegen, verwijderen en wijzigen van rechten zijn gebonden, programma's worden automatisch gekoppeld
                • 4. Nadat de toestemmingsgroep is ingesteld om de toestemmingsgroep toe te voegen, wordt de volgende machtiging niet overgenomen (deze machtiging komt overeen met de hoogste machtiging).
                • ", - "not_null" => "Verplichte velden mag niet leeg zijn!", - "picture_can_not_null" => "Foto's kunnen niet leeg zijn!", - "rname_success" => "Hernoemen succes!", - "please_inpute_search_words" => "Vul een string te zoeken naar", - "remove_success" => "succesvol verwijderd!", - "remove_fali" => "Verwijderen mislukt!", - "clipboard_null" => "Clipboard is leeg!", - "create_success" => "Nieuw succes!", - "create_error" => "New mislukt, controleert u de map permissies!", - "copy_success" => "[Copy] - die klembord succes!", - "cute_success" => "[Cut] - die klembord succes!", - "clipboard_state" => "Clipboard status:", - "no_permission_write_all" => "Het bestand of de map is niet beschrijfbaar", - "no_permission_write_file" => "Het bestand heeft geen schrijfrechten", - "no_permission_read_all" => "Het bestand of de map heeft geen machtiging Lezen", - "copy_not_exists" => "Source bestaat niet", - "current_has_parent" => "Doelmap is een submap van de map source!", - "past_success" => "pasta operatie is voltooid", - "cute_past_success" => "cut is voltooid(bron bestand is verwijderd, het klembord leeg)", - "zip_success" => "compressie afgerond", - "not_zip" => "niet archief", - "zip_null" => "Niet geselecteerd bestand of map", - "unzip_success" => "unzip compleet", - "gotoline" => "Ga naar de lijn", - "path_is_current" => "De weg en het huidige pad dezelfde openen!", - "path_exists" => "De naam bestaat al!", - "undo" => "herroeping", - "redo" => "anti intrekking", - "preview" => "Voorbeschouwing", - "wordwrap" => "wrap", - "show_gutter" => "Toon Line Numbers", - "char_all_display" => "Toon onzichtbare tekens", - "auto_complete" => "verzoekt automatisch", - "auto_save" => "Automatisch opslaan", - "function_list" => "functie Lijst", - "code_theme" => "Coding Style", - "font_size" => "Tekengrootte", - "confirm" => "Weet u zeker dat u dit wilt doen?", - "button_ok" => "bepalen", - "button_submit" => "voorleggen", - "button_set" => "oprichten", - "button_cancel" => "geannuleerd", - "button_edit" => "uitgeven", - "button_save" => "Save", - "button_apply" => "toepassen", - "button_save_all" => "Alles opslaan", - "button_not_save" => "Niet opslaan", - "button_add" => "toevoegen", - "button_back_add" => "Terug naar toe te voegen", - "button_del" => "Verwijder", - "button_save_edit" => "wijzigingen opslaan", - "button_save_submit" => "Save Submit", - "button_more" => "meer", - "button_select_all" => "Alles selecteren / Selectie omkeren", - "charset_AUTO" => "Automatische identificatie", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Arabisch", - "charset_ISO_8859_6" => "Arabisch", - "charset_ISO_8859_10" => "Scandinavische talen", - "charset_CP1257" => "Baltische talen", - "charset_ISO_8859_13" => "Baltische talen", - "charset_ISO_8859_4" => "Baltische talen", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "Georgisch", - "charset_PT154" => "Kazachse", - "charset_CP949" => "Koreaans", - "charset_EUC_KR" => "Koreaans", - "charset_GB18030" => "vereenvoudigd Chinees", - "charset_GBK" => "vereenvoudigd Chinees", - "charset_ISO_8859_14" => "keltisch", - "charset_CP1133" => "Laotiaans", - "charset_ISO_8859_16" => "Roemeens", - "charset_ISO_8859_3" => "Zuid-Europese", - "charset_EUC_JP" => "Japans", - "charset_ISO_2022_JP" => "Japans", - "charset_SHIFT_JIS" => "Japans", - "charset_KOI8_T" => "tadzjieks", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "Turks", - "charset_CP1251" => "Cyrillisch", - "charset_ISO_8859_5" => "Cyrillisch", - "charset_KOI8_R" => "Cyrillisch", - "charset_KOI8_U" => "Cyrillisch", - "charset_CP1252" => "West-Europese talen", - "charset_ISO_8859_1" => "West-Europese talen", - "charset_ISO_8859_15" => "West-Europese talen", - "charset_Macintosh" => "West-Europese talen", - "charset_CP1255" => "Hebreeuws", - "charset_ISO_8859_8" => "Hebreeuws", - "charset_CP1253" => "Grieks", - "charset_ISO_8859_7" => "Grieks", - "charset_ARMSCII_8" => "Armeens", - "charset_CP1258" => "Vietnamese", - "charset_VISCII" => "Vietnamese", - "charset_CP1250" => "Centraal-Europese talen", - "charset_ISO_8859_2" => "Centraal-Europese talen", - "charset_default_set" => "file Encoding", - "charset_convert_save" => "Sla het bestand gecodeerd als", - "PluginCenter" => "plug center", - "PluginBuy" => "Aankoopvergunning", - "PluginInstalled" => "Is geïnstalleerd", - "PluginUpdate" => "bijwerken", - "PluginListNull" => "Er is geen inhoud!", - "PluginType" => "classificatie", - "PluginTypeAll" => "compleet", - "PluginTypeFile" => "verbeterde bestanden", - "PluginTypeSafe" => "security tools", - "PluginTypeTools" => "utility", - "PluginTypeMedia" => "multimedia", - "PluginTypeOthers" => "anders", - "PluginInstall" => "Installeer plug", - "PluginEnable" => "Schakel plug-ins", - "PluginDisable" => "onbruikbaar maken", - "PluginRemove" => "Verwijder de plug", - "PluginConfig" => "Configureren van de plugin", - "PluginStatus" => "staat", - "PluginStatusEnabled" => "ingeschakeld", - "PluginStatusDisabled" => "niet actief", - "PluginStatusNotInstall" => "niet geïnstalleerd", - "PluginInstalling" => "Installatie ...", - "PluginHasUpdate" => "updates", - "PluginUpdateStart" => "plug-in-update", - "PluginNeedConfig" => "De noodzaak om de initiële configuratie mogelijk te maken", - "PluginConfigNotNull" => "Verplichte velden mag niet leeg zijn!", - "PluginOpen" => "open", - "PluginAuther" => "auteur", - "PluginVersion" => "editie", - "PluginDownloadNumber" => "Installeert", - "PluginBack" => "terugkeer", - "PluginReadme" => "beschrijving", - "PluginResetConfig" => "Herstel de standaardinstellingen", - "PluginInstallSelf" => "Handmatige installatie", - "Plugin.config.auth" => "machtigingen", - "Plugin.config.authDesc" => "Alle van de beschikbare instellingen of geef gebruikers, gebruikersgroepen, rechten groepen kunnen gebruiken", - "Plugin.config.authOpen" => "Open toegang", - "Plugin.config.authOpenDesc" => "U hoeft niet te bezoeken, kan worden gebruikt voor externe interfaceoproep", - "Plugin.config.authAll" => "houder", - "Plugin.config.authUser" => "gebruiker", - "Plugin.config.authGroup" => "Aangewezen afdeling", - "Plugin.config.authRole" => "rechten van de groep", - "Plugin.Config.openWith" => "Open stijl", - "Plugin.Config.openWithDilog" => "interne dialoog", - "Plugin.Config.openWithWindow" => "De nieuwe pagina wordt geopend", - "Plugin.Config.fileSort" => "Uitbreiding vereniging prioriteit", - "Plugin.Config.fileSortDesc" => "Hoe groter de uitbreiding tot een hogere prioriteit te openen", - "Plugin.Config.fileExt" => "Ondersteunde bestandsindelingen", - "Plugin.Config.fileExtDesc" => "Geassocieerd Uitbreiding tot de plug-in", - "Plugin.tab.basic" => "Basic Settings", - "Plugin.tab.auth" => "machtigingen", - "Plugin.tab.others" => "Overige instellingen", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Webpaginavoorbeeld", - "Plugin.default.picasa" => "Picasa foto browsen", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer speler", - "Plugin.auth.viewList" => "Plugin lijst", - "Plugin.auth.setting" => "Plugin instellingen", - "Plugin.auth.status" => "Uitzetten", - "Plugin.auth.install" => "Installeren / verwijderen", - "Explorer.UI.openWith" => "Selecteer Open", - "Explorer.UI.openWithText" => "Notepad te openen", - "Explorer.UI.appSetDefault" => "Stel de standaard geopend", - "Explorer.UI.appAwaysOpen" => "Gebruik altijd het geselecteerde programma om dit bestand te openen", - "Explorer.UI.selectAppDesc" => "Selecteer het programma dat u dit bestand wilt openen", - "Explorer.UI.selectAppWarning" => "Selecteer de gewenste toepassing!", - "Explorer.UI.appTypeSupport" => "ondersteunde", - "Explorer.UI.appTypeAll" => "Alle applicaties", - "kodApp.oexe.edit" => "Bewerk licht toepassing", - "kodApp.oexe.open" => "Open de toepassing van het licht" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/no/about.html b/plugin/document/kod/config/i18n/no/about.html deleted file mode 100644 index 03cc0bd08..000000000 --- a/plugin/document/kod/config/i18n/no/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer si Hva?
                  -

                  KODExplorer er en åpen kildekode webbasert online dokumenthåndtering, kode editor. Det gir en slags klassiske Windows-brukergrensesnittet, et sett av online dokumenthåndtering, fil forhåndsvisning, redigere, laste opp, laste ned, unzip online musikkavspilling. Lar deg å oppnå webutvikling direkte i nettleseren, kildekode fil forhåndsvisning, og distribuere eieren av nettstedet og den lokale driften så enkel, rask og trygg opplevelse.

                  -

                  - design -

                  -

                  klassisk tradisjon, er arbeidet for innovasjon, for å gi brukerne enkel, sikker og enkel å bruke online sky styringssystem.

                  -

                  når (når), der (der), har nettet når du vil (vil) det er din styringsverktøy (4W policy).

                  -

                  - brukerorientert -

                  -

                  tiden KODExplorer styringssystem hovedsakelig lokalisert i den personlige cloud hosting, liten enterprise sky ressursforvaltning, nettverksdisk, ledelse av små og mellomstore nettsteder. Web Developer & Master (veteraner): online editor, komprimert backup, distribusjon, klassiske Windows-grensesnittet drift, lett å komme i gang og bli kvitt verten SSH, ftp kommando komplekse boring arbeid.

                  -

                  personlige private cloud (rookie): Ledelse nettverksdisk ressurser, det samme klassiske Windows-grensesnittet drift, kan du plassere musikken bla nettverksstasjon, skjerm filer, opplasting og nedlasting raskt og enkelt.

                  -
                  - -
                  -
                  funksjoner
                  -

                  omfattende dokumentstyring, kraftig online fil editor

                  -

                  uansett hvor du er, kan du administrere filene dine, og online underholdning, online skrive kode! På samme måte som egnet for bruk som operativsystemet.

                  -

                  omfattende operasjon riktig lokal erfaring transplantasjon, dra valgboksen, snarveier, fil søk (søk innhold) ......

                  -

                  valgboksen, dra-bevegelse, dra og slipp-opplasting, online editor, videospiller, dekomprimere. Full ajax garanti ytelse og opplevelse!

                  -

                  hver funksjon direkte sømløs tilkobling, i dialog form, multi-oppgave lederfunksjoner

                  -

                  Editor støtter multi-dokument, støtte ZendCoding html, css, JS høyere koding effektivitet!

                  -

                  perfekt kinesisk støtte, rotete løse ulike situasjoner;

                  -
                  - -
                  -
                  åpen kildekode-teknologi adopsjon
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) JS mainstream utviklingsmiljø. Drift av Dom, BOM drift, css drift, og Ajax pakke

                  -

                  2.ArtDialog:en vakker design, sterk nettleser kompatibilitet dialog widget. Så pop-up håndtak, events, og overføring av data for å få en bedre enhetlig ledelse

                  -

                  3.Ztree:liste treet kontroll, er skalerbarhet svært sterkt tre datamanipulasjon widget

                  -

                  4.codemirror:en kode editor JS plugins, støtter en rekke programmeringsspråk for å fremheve

                  -

                  5.zendcoding:en støtte hTML koder rask ned- plug-ins. Forenkler definisjonen av koden er skrevet. Enkel samling

                  -

                  6.less:en effektiv, funksjonell css utviklingsmodell for å forbedre grensesnittet css stilark gjenbruk . Enkel samling

                  -

                  7.SWFUpload:flash filopplasting

                  -

                  8 .CMP4:en veldig god flash player plugin mediefiler, støtte for streaming media, populærmusikk videoavspilling verktøy. Støtte for huden, svært konfigurerbare innstillinger. Dynamisk liste xml lastet. mms streaming media, RSTP åpen kildekode-lisens medieavspilling støtte

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/no/edit.html b/plugin/document/kod/config/i18n/no/edit.html deleted file mode 100644 index f31cbf631..000000000 --- a/plugin/document/kod/config/i18n/no/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  rik funksjonalitet

                  -

                  Kode ber automatisk

                  -

                  Multi-tema: Velg din favoritt programmering stil

                  -

                  Custom Font: for bruk på scene

                  -

                  Multi markør redigering, blokk redigering online erfaring med programmering kan sammenlignes med det sublime

                  -

                  Block folding, utvide, wrap

                  -

                  Støtte for flere faner, drar du bytter rekkefølge;

                  -

                  Opprettholde flere dokumenter, finne og erstatte, Historie;

                  -

                  Autofullfør [] {} (), '' ''

                  -

                  Online sanntids forhåndsvisning som lar deg bli forelsket i online programmering!

                  -

                  zendcodeing støtte, skrive kode åtti

                  -

                  Flere funksjoner venter på din oppdagelse ......

                  -
                  -
                  -

                  150 typer kode utheving

                  -

                  Tips: html, javascript, css, mindre, sass, SCSS

                  -

                  webutvikling: php, perl, python, ruby, Elang, gå ...

                  -

                  Tradisjonelle språk: Java, C, C ++, C #, Actionscript, VBScript ...

                  -

                  Annet: Markdown, shell, sql, lua, xml, YAML ...

                  -
                  -
                  -
                  -
                  -

                  snarvei Handling

                  -
                   Vanligvis brukte snarveier: 
                  - ctrl + s for å lagre 
                  - Ctrl + A Velg alle ctrl + x Cut 
                  - ctrl + c ctrl + v lim kopi 
                  - ctrl + Z Angre Angre Anti ctrl + y 
                  - ctrl + f for å finne erstatning ctrl + f + f 
                  - Win + alt + 0 kollaps alle vinne + alt + shift + 0 Utvid alle 
                  - esc [Avslutt søk kansellert automatisk ber ...] 
                  - ctrl-shift-s Preview 
                  - ctrl-shift-e-show & Close funksjon 
                  -
                  -
                   Velg: 
                  - Mus telt - drag 
                  - shift + home / end / opp / venstre / ned / høyre 
                  - shift + PageUp / Pagedown vende opp og ned for å velge 
                  - ctrl + shift + home / utgangen av inneværende markøren til begynnelsen og slutten 
                  - alt + musen til å dra blokken utvalg 
                  - ctrl + alt + g batch velge og angi gjeldende multi-kategorien editor 
                  -
                  -
                   markør: 
                  - home / end / opp / venstre / ned / høyre 
                  - ctrl + home / end flytte markøren til dokumentet hode / hale 
                  - ctrl + p Gå til matchende tag 
                  - PageUp / Pagedown markøren opp og ned 
                  - alt + venstre / høyre for å gå til toppen av linjen 
                  - shift + venstre / høyre-markøren til slutten av linjen & 
                  - ctrl + l for å hoppe til en bestemt rad 
                  - ctrl + alt + opp / ned (under) øke markøren 
                  -
                  -
                   edit: 
                  - ctrl + / Kommentar og uncomment ctrl + alt + en Justified 
                  - tabell tab justeringen shift + bord generelle utvikling bord 
                  - delete delete delete hele linjen ctrl + d 
                  - ctrl + delete for å slette raden på riktig ord 
                  - ctrl / shift + tilbaketasten for å slette ordet til venstre 
                  - alt + shift + opp / ned og lagt til kopilinjen (under) planet 
                  - alt + delete for å slette innholdet i høyre for markøren 
                  - alt + opp / ned på den aktuelle linjen og linjen (neste linje utveksling) 
                  - Ctrl + Shift + d rader kopiert og lagt til følgende 
                  - ctrl + delete for å slette høyre for ordet 
                  - ctrl + shift + u konvertert til små bokstaver 
                  - ctrl + u valgte teksten til store bokstaver 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/no/help.html b/plugin/document/kod/config/i18n/no/help.html deleted file mode 100644 index 6cdff1dc8..000000000 --- a/plugin/document/kod/config/i18n/no/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Filbehandling
                  -

                  File Selection: radio, mus telt, shift-valget, ctrl valgt tilfeldig, tastaturet opp og ned, hjem, end utvalg.

                  -

                  Filoperasjonen: Når du har valgt en fil, kan du kopiere, klippe, slette, vise egenskapene for komprimering, endre navn, åpne Preview og andre operasjoner ......

                  -

                  File Upload: Last opp flere filer batch; HTML5 dra opplasting (dra for å sømløst laste opp vinduet, dra og slipp-støtte for mapper)

                  -

                  Høyre funksjon: Høyre-fil, mappe, høyre, mer rett etter valget operasjonen, desktop, høyre, høyre katalogtreet, høyre-bundet menysnarveier
                  - (Velg alt - Kopier - Cut - Paste - Slett - Endre navn, sett ......)

                  -

                  File Browser: List modus, ikon modus, dobbeltklikk i undermapper, adresselinjen drift, åpne en mappe rekord kontrær rekord (forover og bakover)

                  -

                  Støtte dra og slipp: Sjekk dra, kuttet med å oppnå spesifisert mappe-funksjonen

                  -

                  Hurtigtaster: delete delete, ctrl + A Merk alt, ctrl + C for å kopiere, + X Klipp ut, filsøk (søk innhold) Ctrl

                  -
                  -
                  -
                  Preview File
                  -

                  File Preview: vise innholdet i en tekstfil redigering og lagring, html, swf fil forhåndsvisning,

                  -

                  Forhåndsvisning av bilde: automatisk generering av miniatyrbilder, bilde lysbildefremvisning;

                  -

                  Lydavspilling: spille online musikk og videofiler, støtte mp3, wma, mid, AAC, WAV, MP4,

                  -

                  Video: online video avspilling, støttede formater: flv, F4V, 3gp

                  -

                  office: office Online Preview, støttede formater: doc, docx, ppt, pptx, xls, xlsx

                  -
                  -
                  -
                  snarveier
                  -

                  skriv Åpen

                  -

                  Ctrl + A Velg alle

                  -

                  ctrl + c for å kopiere den merkede

                  -

                  ctrl + v for å lime

                  -

                  ctrl + x Cut

                  -

                  ctrl + f for å søke i gjeldende mappe

                  -

                  alt + n ny fil

                  -

                  alt + m Ny mappe

                  -

                  Slett Slett valgt

                  -

                  tilbake Tilbake

                  -

                  ctrl + backspace fremover

                  -

                  f2 Rename valgt (mappe)

                  -

                  home / end / opp / ned / venstre / høyre for å velge filen

                  -

                  Valgfri Sjekk trykke den første bokstaven i tegn filer og mapper valgt automatisk syklus

                  -
                  diff --git a/plugin/document/kod/config/i18n/no/main.php b/plugin/document/kod/config/i18n/no/main.php deleted file mode 100644 index d040a7fed..000000000 Binary files a/plugin/document/kod/config/i18n/no/main.php and /dev/null differ diff --git a/plugin/document/kod/config/i18n/pl/about.html b/plugin/document/kod/config/i18n/pl/about.html deleted file mode 100644 index 1a413477a..000000000 --- a/plugin/document/kod/config/i18n/pl/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                  -
                  KODExplorer znaczy Jakie?
                  -

                  KODExplorer jest open source internetowej opartej na zarządzanie dokumentami w trybie online, edytor kodu. Stanowi on rodzaj klasycznych okien interfejsu użytkownika, zestaw zarządzania dokumentami on-line, podgląd Plik, Edycja, przesyłanie, pobieranie, rozpakuj odtwarzania muzyki online. Pozwala osiągnąć tworzenie stron internetowych bezpośrednio w przeglądarce, kod źródłowy plik podglądu, a następnie wdrożyć się z właścicielem witryny i lokalną działalność jako łatwy, szybki i bezpieczny przeżyciem.

                  -

                  - design -

                  -

                  tradycji klasycznej, dążenie do innowacji, aby zapewnić użytkownikom wygodne, bezpieczny i łatwy w obsłudze system zarządzania chmura online.

                  -

                  gdy (jeśli), gdzie (gdzie), ma w internecie, kiedy tylko chcesz (chcesz) jest to narzędzie do zarządzania (4W polityki).

                  -

                  - zorientowanego na użytkownika -

                  -

                  obecnie system zarządzania KODExplorer zlokalizowane głównie w chmurze Personal Hosting, mała zarządzanie Chmura Enterprise resource, zarządzanie dysku sieciowego, zarządzania małych i średnich witryn. Web Developer & master (weterani): edytor online sprężonego backup, rozmieszczenia klasycznej operacji interfejs okna, łatwo zacząć, a pozbyć się SSH gospodarza, komendy ftp skomplikowanych prac wiertniczych.

                  -

                  osobista chmura prywatna (debiutant): Network Management zasoby dyskowe, ta sama operacja interfejs klasyczne okna, można umieścić napęd przeglądać muzykę w sieci, pliki ekranowe, przesyłanie i pobieranie szybkie i łatwe.

                  -
                  - -
                  -
                  Cechy
                  -

                  kompleksowe zarządzanie dokumentami, potężny edytor plików w Internecie

                  -

                  gdziekolwiek jesteś, możesz zarządzać swoimi plikami, i rozrywki w internecie, pisanie kodu online! Tak samo nadają się do użytku jako system operacyjny.

                  -

                  rozległe doświadczenie lokalnych operacji przeszczepu rację, przeciąganie, pole wyboru, skrótów, wyszukiwanie plików (zawartość wyszukiwania) ......

                  -

                  pole wyboru, przeciągnij ruch, przeciągnij i upuść przesyłanie, online editor, odtwarzacz wideo, dekompresji. Pełna wydajność ajax gwarancji i doświadczenie!

                  -

                  każda funkcja bezpośredniego połączenia bez szwu, w formie dialogowym Funkcje zarządzania wielozadaniowe

                  -

                  Editor obsługuje multi-dokument, wsparcie ZendCoding html, css, js wyższą efektywność kodowania!

                  -

                  doskonałe chińskie poparcie, zniekształcone rozwiązywać różne sytuacje;

                  -
                  - -
                  -
                  open source technologii przyjęcie
                  -

                  1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js nurtu ramy rozwoju. Działanie operacji dominacja, BOM, obsługi CSS i Ajax pakietu

                  -

                  2.ArtDialog:piękny design, mocny Zgodność z przeglądarkami widget dialogowe. Więc pop-up uchwyt, zdarzeń i transmisja danych, aby uzyskać lepsze jednolite zarządzanie

                  -

                  3.Ztree:kontrolka listy drzewo, skalowalność jest bardzo silne widget drzewa manipulacji danymi

                  -

                  4.codemirror:edytor kodu js wtyczek, obsługuje wiele języków programowania do wyróżniania

                  -

                  5.zendcoding:a kody html szybka obsługa zapisu wtyczki. Upraszcza definicja kodu jest napisane. Proste kompilacja

                  -

                  6.less:wydajny i funkcjonalny model rozwoju css poprawić przedniego końca arkuszy stylów CSS ponownego wykorzystania , Proste kompilacja

                  -

                  7.SWFUpload:plik Flash przesyłanie

                  -

                  8 .CMP4:bardzo dobry plugin flash player plików multimedialnych, wsparcie dla mediów strumieniowych, popularnym narzędziem odtwarzania muzyki wideo. Pomoc dla skóry, ustawienia wysoce konfigurowalny. Dynamiczna lista xml załadowany. mms media strumieniowe, RSTP licencji open source wsparcie odtwarzanie multimediów

                  -
                  \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/pl/edit.html b/plugin/document/kod/config/i18n/pl/edit.html deleted file mode 100644 index f37ff9278..000000000 --- a/plugin/document/kod/config/i18n/pl/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                  -
                  -

                  bogata funkcjonalność

                  -

                  Kod automatycznie monituje

                  -

                  Wielu tematyka: Wybierz swój ulubiony styl programowania

                  -

                  Niestandardowe czcionki: do użytku na scenie

                  -

                  Wielu edycji kursora edycji bloku doświadczenie w programowaniu w Internecie porównywalne do wzniosłości

                  -

                  Blok składane rozwinąć; owinąć

                  -

                  Wsparcie dla wielu zakładek, przeciągnij sekwencji przełączania;

                  -

                  Utrzymanie wielu dokumentów, wyszukiwania i zamiany; Historia;

                  -

                  Autouzupełnianie [] {} (), '' ''

                  -

                  Online podgląd w czasie rzeczywistym, która pozwala zakochać się w programowaniu internetowym!

                  -

                  zendcodeing wsparcia, kod osiemdziesiąt napisać

                  -

                  Więcej czeka na swoje odkrycie funkcje ......

                  -
                  -
                  -

                  150 rodzajów kodów podświetlaniem

                  -

                  Wskazówka: HTML, JavaScript, CSS, mniej, Sass, SCSS

                  -

                  tworzenie stron internetowych: PHP, Perl, Python, Ruby, Elang, idź ...

                  -

                  Tradycyjne języków: Java, C, C ++, C #, ActionScript, VBScript ...

                  -

                  Inne: Przecena, powłoka, sql, lua, XML, yaml ...

                  -
                  -
                  -
                  -
                  -

                  skrót Akcja

                  -
                   Powszechnie używane skróty: 
                  - Ctrl + S, aby zapisać 
                  - Ctrl + A Zaznacz wszystko Ctrl + X Wytnij 
                  - Ctrl + C Ctrl + V wklej egzemplarz 
                  - Ctrl + Z Cofnij Cofnij Anti ctrl + y 
                  - Ctrl + F, aby znaleźć zastępczą Ctrl + F + F 
                  - Win + alt + 0 załamanie wszystkich Win + Alt + Shift + 0 Rozwiń wszystko 
                  - ESC [wyszukiwanie Wyjdź automatycznie anulowane prosi ...] 
                  - Ctrl-Shift-S Podgląd 
                  - ctrl-shift-e pokazują & Close funkcji 
                  -
                  -
                   Wybierz: 
                  - Mysz namiot - drag 
                  - shift + home / end / w górę / w lewo / w dół / w prawo 
                  - shift + PageUp / PageDown obrócić w górę iw dół, aby wybrać 
                  - shift + ctrl + home / koniec bieżącego kursora na początku i na końcu 
                  - alt + myszki, aby przeciągnąć zaznaczenie bloku 
                  - Ctrl + Alt + g partię wybierz i wprowadź aktualny edytor multi-tab 
                  -
                  -
                   Kursor: 
                  - home / end / w górę / w lewo / w dół / w prawo 
                  - Ctrl + home / end przesunąć kursor do głowy dokumentu / ogon 
                  - Ctrl + P Skocz do dopasowania tag 
                  - PageUp / PageDown strzałek w górę iw dół 
                  - alt + lewy / prawy przesunąć kursor do początku linii 
                  - Shift + lewy / prawy kursor na końcu linii i 
                  - Ctrl + L, aby przejść do określonego wiersza 
                  - Ctrl + Alt + góra / dół (poniżej) zwiększają kursor 
                  -
                  -
                   Edit: 
                  - Ctrl + / Komentarz & Odkomentuj ctrl + alt + uzasadniona 
                  - Zakładka tabeli ustawienie shift + stół ogólną tabelę zaawansowanie 
                  - Usuń Usuń usunięcie całego wiersza Ctrl + D 
                  - Ctrl + Delete, aby usunąć wiersz po prawej słowa 
                  - ctrl / shift + Backspace, aby usunąć słowo z obrazka obok 
                  - Alt + Shift + strzałka w górę / w dół i dodawane do linii kopiowania (poniżej) płaszczyzny 
                  - alt + delete, aby usunąć zawartość z prawej strony kursora 
                  - alt + w górę / w dół od bieżącej linii i linii (obok wymiany linii) 
                  - Ctrl + Shift + D wiersze kopiowane i dodawane do następujących 
                  - Ctrl + Delete, aby usunąć prawo słowa 
                  - CTRL + SHIFT + U konwertowane na małe litery 
                  - Ctrl + U zaznaczony tekst na wielkie litery 
                  -
                  -
                  -
                  - diff --git a/plugin/document/kod/config/i18n/pl/help.html b/plugin/document/kod/config/i18n/pl/help.html deleted file mode 100644 index 3f4a49bdd..000000000 --- a/plugin/document/kod/config/i18n/pl/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                  -
                  Zarządzanie plikami
                  -

                  Wybór pliku: radio, markiza mysz, Shift-Ctrl wybory wybranych losowo, klawiatura górę iw dół, w domu, wybór koniec.

                  -

                  Operacja Plik: Po wybraniu pliku można kopiować, wycinać, usuwać, przeglądać właściwości kompresji, zmienić nazwę, otwórz podgląd i inne operacje ......

                  -

                  File Upload: Prześlij wiele plików partii; html5 przeciągnij wysyłania (pociągnij aby bezproblemowo przesłać okien, przeciągnij i upuść wsparcie dla katalogów)

                  -

                  Prawo Funkcja: Right-file, folder, w prawo, dalej w prawo po operacji wyborczej, pulpit, prawo, prawo drzewo katalogów prawym związany Skróty menu
                  - (Zaznacz wszystko - Kopiuj - Wytnij - Wklej - Usuń - Zmiana nazwy ustaw ......)

                  -

                  Przeglądarka plików: tryb Lista, ikona trybu, kliknij dwukrotnie na podfoldery; Operacja pasek adresu; otworzyć rekord folderu Contrarian rekord (przód i tył)

                  -

                  Wsparcie przeciągnij i upuść: Sprawdzić opór, pokroić w celu osiągnięcia określonej funkcji folderu

                  -

                  Klawisze skrótu: usuwanie usuwanie, Ctrl + A Zaznacz wszystko Ctrl + C, aby skopiować, + X Wytnij, wyszukiwanie plików (zawartość wyszukiwania) Ctrl

                  -
                  -
                  -
                  Podgląd pliku
                  -

                  Preview File: zobaczyć zawartość edycji pliku tekstowego i oszczędności; html, podgląd plików SWF,

                  -

                  Podgląd: automatyczne generowanie miniatur, Obraz pokazu slajdów;

                  -

                  Czas odtwarzania dźwięku: słuchać muzyki online oraz pliki wideo, wsparcie MP3, WMA, AAC, MID, WAV; MP4,

                  -

                  Wideo: Odtwarzanie wideo online, obsługiwane formaty: flv, F4V, 3GP

                  -

                  biurowe: Office Online Preview, obsługiwane formaty: doc, docx, ppt, pptx, XLS, XLSX

                  -
                  -
                  -
                  Skróty
                  -

                  wprowadzić Otwórz

                  -

                  Ctrl + A Zaznacz wszystko

                  -

                  Ctrl + C, aby skopiować wybrany

                  -

                  Ctrl + V, aby wkleić

                  -

                  Ctrl + X Wytnij

                  -

                  Ctrl + F, aby przeszukać bieżący katalog

                  -

                  alt + n Nowy plik

                  -

                  alt + m New Folder

                  -

                  Usuń Usuń wybrane

                  -

                  Backspace Powrót

                  -

                  Ctrl + Backspace przodu

                  -

                  F2 Zmień nazwę wybrano (folder)

                  -

                  home / end / w górę / w dół / w lewo / w prawo, aby wybrać plik

                  -

                  klawiszem Sprawdź, naciśnij pierwszą literę nazwy plików i folderów znaków wybrany automatyczny cykl

                  -
                  diff --git a/plugin/document/kod/config/i18n/pl/main.php b/plugin/document/kod/config/i18n/pl/main.php deleted file mode 100644 index 2bafe520a..000000000 --- a/plugin/document/kod/config/i18n/pl/main.php +++ /dev/null @@ -1,806 +0,0 @@ - "Wybierz plik", - "path_api_select_folder" => "Wybierz folder", - "path_api_select_image" => "Wybierz obraz", - "share_can_upload" => "Udostępnij przesyłanie", - "move_error" => "Błąd przenoszenia", - "setting_basic" => "Ustawienia podstawowe", - "setting_user_sound_open" => "Ustawienia dźwięku", - "setting_user_animate_open" => "Ustawienia animacji", - "recycle_open_if" => "Otwórz kosz", - "recycle_open" => "Kosz otwarty", - "setting_user_recycle_desc" => "Zawartość kosza zostanie definitywnie skasowana", - "setting_user_animate_desc" => "Animacja otwierania okienek", - "setting_user_sound_desc" => "Dźwięki operacji", - "setting_user_imageThumb" => "Miniatury obrazków", - "setting_user_imageThumb_desc" => "Lepszy wygląd przeglądania po otwarciu", - "setting_user_fileSelect" => "Otwórz plik po zaznaczeniu ikony", - "setting_user_fileSelect_desc" => "Zaznacz ikonę pliku lewym przyciskiem myszy, prawym przyciskiem kliknij pozycję menu skrótu", - "qrcode" => "Kod QR skrótu", - "theme_mac" => "MAC minimal biały", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro niebieski", - "theme_metro_green" => "Metro zielony", - "theme_metro_purple" => "Metro fioletowy", - "theme_metro_pink" => "Metro różowy", - "theme_metro_orange" => "Metro pomarańczowy", - "theme_alpha_image" => "Kolorowe latanie", - "theme_alpha_image_sun" => "Zachód słońca", - "theme_alpha_image_sky" => "Błękitne niebo", - "theme_diy" => "Motyw użytkownika", - "theme_diy_title" => "Niestandadowe ustawienia tematyczne", - "theme_diy_background" => "Tło", - "theme_diy_image" => "Obraz", - "theme_diy_color_blur" => "Kolor rozmycia", - "theme_diy_image_blur" => "Obraz rozmycia", - "theme_diy_image_url" => "Adres obrazu", - "theme_diy_color_start" => "Kolor startowy", - "theme_diy_color_end" => "Kolor końcowy", - "theme_diy_color_radius" => "Promień koloru", - "system_role_admin_set" => "Administrator sytemu ma wszelkie prawa bez ustawiania!", - "login_error_user_not_use" => "Użytkownik jest wyłączony. Skontaktuj się z administratorem.", - "login_error_kod_version" => "Konflikt wersji programu", - "login_error_role" => "Nieprawidłowe uprawnienia roli. Skontaktuj się z administratorem.", - "no_permission_group" => "Brak uprawnień grupy. Może nie należysz do tej grupy.", - "no_permission_write" => "Brak uprawnień do zapisu.", - "user" => "Użytkownik", - "save_as" => "Zapisz jako", - "check_update" => "Sprawdź aktualizację", - "keyboard_type" => "Klawiatura", - "font_family" => "Czcionki", - "code_mode" => "Podświetlanie składni", - "path_can_not_share" => "Ten katalog nie obsługuje współużytkowania plików.", - "path_can_not_action" => "Ten katalog nie obsługuje takich operacji.", - "wap_page_pc" => "Wersja PC", - "wap_page_phone" => "Wersja przenośna", - "image_size" => "Wymiary obrazu", - "no_permission_action" => "Brak uprawnień. Skontaktuj się z administratorem.", - "path_is_root_tips" => "To jest główny katalog!", - "kod_group" => "Kod grupy", - "my_kod_group" => "Kod wydziału", - "space_tips_default" => "(GB) 0 bez limitu", - "space_tips_full" => "bez ograniczenia", - "space_size" => "Wielkość przestrzeni", - "space_size_use" => "Wykorzystanie przestrzeni", - "space_is_full" => "Brak wolnego miejsca! Skontaktuj się z administratorem.", - "system_open_true_path" => "Pomyślnie otwarto w menedżerze plików!", - "group_role_error" => "Nieprawidłowe uprawnienia roli - brak/błąd uprawnień.", - "group_role_error_admin" => "Niewystarczające uprawnienia", - "markdown_content" => "Spis treści", - "system_group" => "Grupy i role", - "system_group_edit" => "Grupy zasobów", - "system_group_role" => "Role użytkowników", - "system_group_create" => "Nowa grupa", - "system_group_name" => "Nazwa grupy", - "system_group_father" => "Szef grupy", - "system_group_add" => "Dodaj grupę", - "system_group_remove" => "Usuń grupę", - "system_group_remove_tips" => "Czy na pewno usunąć usługę?
                  Po usunięciu użytkownika, grupa przeniesie się do katalogu głównego", - "system_group_select" => "Wybierz grupę", - "system_group_select_result" => "Użytkownik należy do grup", - "system_role_admin_tips" => "Uwaga: Administratorzy systemu nie wymagają ustawiania uprawnień", - "system_member_action" => "Zarządzanie użytkownikami", - "system_member_add" => "Nowy użytkownik", - "system_member_role" => "Rola", - "system_member_role_select" => "Wybierz rolę", - "system_member_password_tips" => "Hasło użytkownika", - "system_set_home_path" => "Dostosuj katalog", - "system_set_home_path_tips" => "Jeżeli pole jest puste to używany jest katalog domyślny", - "system_member_group" => "Grupa", - "system_member_group_edit" => "Edycja grup i uprawnień", - "system_member_remove" => "Usuń użytkownika", - "system_member_remove_tips" => "Czy napewno usunąć użytkownika?
                  Po usunięciu użytkownika jego katalog zostanie całkowicie usunięty.", - "system_member_set_role" => "Potwierdź zmianę wybranych uprawnień grupy użytkowników.", - "system_member_remove_group" => "Potwierdź usunięcie użytkownika z tej grupy.", - "system_member_import" => "Imortuj użytkowników", - "system_member_import_desc" => "Zapisany musi być jeden użytkownik na linię.
                  Istniejące zapisy zostaną zignorowane.", - "system_member_use" => "Użytkownik włączony", - "system_member_unuse" => "Użytkownik wyłączony", - "system_member_space" => "Ustaw wielkość miejsca użytkownika", - "system_member_space_tips" => "Ustaw rozmiar przestrzeni dla użytkownika", - "system_member_space_number" => "Wielkość przestrzeni musi być liczbowa!", - "system_member_group_config" => "Ustawienia grupy", - "system_member_group_remove" => "Usuń użytkownika z grupy", - "system_member_group_insert" => "Dodaj użytkownika do grupy", - "system_member_group_reset" => "Resetuj grupę", - "system_member_group_error" => "Błąd konfiguracji grupy", - "system_group_action" => "Zarządzanie grupą", - "system_role_add" => "Dodaj uprawnienia", - "system_role_read" => "odczyt", - "system_role_write" => "zapis", - "system_role_view" => "podgląd", - "system_setting_root_path" => "Dostęp do katalogu root", - "system_setting_root_path_desc" => "Tylko administrator systemu może uzyskać dostęp do wszystkich katalogów, a użytkownicy widzą tylko swój własny katalog. Jeżeli chcesz włączyć lub wyłączyć dostęp administratora do innych katalogów można zmodyfikować parametry php: open_basedir anti-cross-site [jak ustawić]", - "system_group_role_title" => "Zestawy uprawnień", - "system_group_role_remove" => "Potwierdź aby usunąć uprawnienia.", - "system_group_role_style" => "Styl", - "system_group_role_display" => "Podgląd uprawnień", - "system_group_role_display_desc" => "Czy wyświetlać prawa użytkownika grupy.", - "role_type_name_read" => "Prawa odczytu", - "role_type_name_read:list" => "Lista plików", - "role_type_name_read:info" => "Widok właściwości pliku lub katalogu", - "role_type_name_read:copy" => "Kopia plików", - "role_type_name_read:preview" => "Podgląd plików (zdjęć, dokumentów, obrazów)", - "role_type_name_read:download" => "Pobieranie plików lub katalogów", - "role_type_name_write" => "Prawa zapisu", - "role_type_name_write:add" => "Utwórz edytowalny plik lub folder", - "role_type_name_write:edit" => "Zapisz plik z prawem do edycji", - "role_type_name_write:change" => "Zmień/dostosuj strukturę katalogów", - "role_type_name_write:upload" => "Udostępnij plik lub folder do zdalnego pobierania", - "role_type_name_write:remove" => "Udostępnij plik lub folder do usuwania", - "group_guest" => "Odwiedzający", - "group_guest_desc" => "Nie jesteś członkiem grupy.
                  Masz tylko podgląd niektórych katalagów.", - "group_role_lebel_desc" => "Nie jesteś członkiem tej grupy.
                  Wszelkie prawa do dokumentów w tej grupie są zastrzeżone przez administratora", - "button_save_and_add" => "Zapisz i kontynuuj, aby dodać", - "path_cannot_search" => "Katalog nie obsługuje wyszukiwania!", - "not_support" => "Usługa nie jest obsługiwana.", - "group_not_exist" => "Grupa użytkowników nie istnieje!", - "upload_clear_all" => "Wyczyść wszystko", - "upload_clear" => "Wyczyść i zakończ", - "upload_setting" => "Ustawienia wysyłania", - "upload_tips" => "Użyj pliku do wysłania bez limitu w php.ini.
                  Zalecane użycie: przeciągnij i upuść w miejscu przesyłania", - "upload_exist" => "Istnieje plik o tej samej nazwie", - "upload_exist_rename" => "Zmień nazwę pliku", - "upload_exist_replace" => "Zamień istniejący plik", - "upload_exist_skip" => "Pomiń zmianę", - "upload_add_more" => "Dodaj więcej", - "more" => "więcej ... ", - "system_setting" => "System", - "openProject" => "Otwórz projekt", - "url_download" => "Link pobierania", - "url_link" => "URL", - "app_type_link" => "Skrót", - "createLink" => "Utwórz skrót", - "createLinkHome" => "Wyślij skrót na pulpit", - "createProject" => "Dodaj nowy projekt", - "only_read" => "Tylko do odczytu", - "only_read_desc" => "Katalog nie ma uprawnień do zapisu
                  Administrator może ustawić te uprawnienia na serwerze", - "not_read" => "nieczytelny", - "explorerNew" => "link kod", - "zip_download_ready" => "Po kompresji rozpocznie się automatyczne pobieranie
                  Proszę czekać ...", - "set_background" => "Ustaw jako tapetę pulpitu", - "share" => "Udostępnij ", - "my_share" => "dostępne", - "group_share" => "Udostępnianie dla grupy", - "share_edit" => "Edytuj udostępnianie", - "share_remove" => "Anuluj udostępnianie", - "share_remove_tips" => "Czy na pewno chcesz wyłączyć to udostępnianie?
                  Połączenie publiczne zostanie unieważnione.", - "share_path" => "Udostępnij ścieżkę", - "share_title" => "Udostępnianie zasobów", - "share_name" => "Tytuł zasobu", - "share_time" => "Wygaśnięcie udostępniania", - "share_time_desc" => "Koniecznie ustaw termin", - "share_password" => "Podaj hasło", - "share_password_desc" => "Ustaw hasło", - "share_cancle" => "Anuluj udostępnianie", - "share_create" => "Tworzenie łącza publiczne dostępnego", - "share_url" => "Adres publiczny", - "share_not_download" => "Zakaz pobierania", - "share_not_download_tips" => "Pobieranie zabronione, tylko podgląd!", - "share_code_read" => "czytnik kodów", - "share_save" => "Zapisz konfigurację", - "share_error_param" => "Parametr error!", - "share_error_user" => "Informacje o użytkowniku Błąd!", - "share_error_sid" => "Ten zasób nie istnieje!", - "share_error_time" => "Za późno - czas udostępniania wygasł!", - "share_error_path" => "Udostępniony plik nie istnieje!", - "share_error_password" => "Błędne hasło!", - "share_error_show_tips" => "System podglądu plików nie obsługuje tego typu.", - "share_view_num" => "Odwiedzin: ", - "share_download_num" => "Pobranych: ", - "share_open_page" => "Otwórz stronę", - "open_the_path" => "Otwórz katalog", - "recycle_clear" => "Opróżnij kosz", - "recycle_clear_success" => "Kosz został wyczyszczony!", - "recycle_clear_info" => "Czy napewno opróżnić kosz?", - "fav_remove" => "Anuluj pozycje", - "remove_item" => "Skasuj pozycje", - "uploading" => "Przesyłanie", - "upload_tips_more" => "Zbyt wiele plików, skopresuj przesyłanie a następnie rozpakuj online!", - "uploading_move" => "trwa przesyłanie ...", - "show_file" => "Podgląd pliku", - "unknow_file_title" => "Nieokreślony plik", - "unknow_file_tips" => "System nie wspiera tego pliku, możesz ", - "unknow_file_try" => "próbować", - "unknow_file_download" => "Pobierz plik", - "unknow_plugin_search" => "zainstalowane aplikacje związanych z wyszukiwaniem", - "config_save_error_auth" => "Nie udało się zapisać konfigurację, administrator zakaz ten przywilej!", - "config_save_error_file" => "Błąd. Nie można zapisać pliku!", - "beautify_code" => "Kod Formatter", - "convert_case" => "Konwersja znaków", - "convert_upper_case" => "Zamień na wielkie litery", - "convert_lower_case" => "Zamień na małe litery", - "editor_insert_time" => "Aktualny czas ", - "editor_md5" => " Szyfrowanie Md5 ", - "editor_qrcode" => " Kod dwuwymiarowy ", - "editor_regx" => " Testowanie wyrażeń regularnych ", - "editor_chinese" => " Uproszczona konwersja ", - "editor_chinese_simple" => " Konwertuj na chiński uproszczony ", - "editor_chinese_traditional" => " Konwertuj na chiński tradycyjny ", - "editor_base64" => " Kod Base64 ", - "editor_base64_encode" => " Kodowanie Base64 ", - "editor_base64_decode" => " Dekodowanie Base64 ", - "editor_url" => " Kod URL ", - "editor_url_encode" => " Kodowanie URL ", - "editor_url_decode" => " Dekodowanie URL ", - "editor_unicode" => " Kod Unicode ", - "editor_unicode_encode" => " Kodowanie Unicode ", - "editor_unicode_decode" => " Dekodowanie Unicode", - "editor_tools_select_tips" => " Wybierz wartość którą chcesz przekonwertować!", - "editor_calc" => "Bezpłatny kalkulator", - "shortcut" => "Skrót", - "use_free" => "Nadal korzystać z darmowej wersji", - "learn_more" => "Dowiedz się więcej", - "replace" => "Zastąp", - "selectAll" => "Wybierz", - "reload" => "Przeładuj", - "about" => "O ...", - "complete_current" => "Zakończ", - "view" => "Widok", - "tools" => "Narzędzia", - "help" => "Pomoc", - "not_exists" => "nie istnieje", - "group_role_fileDownload" => "Udostępnij pobieranie", - "group_role_share" => "Udostępnij zasoby", - "users_share" => "Udostępnianie", - "system_setting_save" => "Ustawienia zabezpieczeń", - "system_setting_menu" => "Menu systemowe", - "system_name" => "Nazwa programu", - "system_name_desc" => "Logo programu", - "system_desc" => "Opis programu", - "path_hidden" => "Ukryte pliki i ścieżki", - "version_not_support" => "Twoja wersja nie obsługuje tego, przejdź na oficjalną stronę aby kupić zaawansowaną wersję!", - "version_not_support_number" => "Ponieważ liczba ograniczeń nie obsługuje tej operacji, należy kupić zaawansowaną wersję z oficjalnej strony internetowej!", - "path_hidden_desc" => "Wpisz rozdzielając przecinkami.
                  Katalogi, pliki i rozszerzenia które nie będą domyślnie wyświetlane.", - "new_user_folder" => "Domyślne nowe katalogi", - "new_user_folder_desc" => "Wpisz oddzielone przecinkami
                  Katalogi tworzone automatycznie dla nowego użytkownika.", - "new_user_app" => "Domyślne aplikacje", - "new_user_app_desc" => "Wpisz oddzielając przecinkami.
                  Aplikacje tworzone automatycznie dla nowego użytkownika.", - "auto_login" => "Automatyczne logowanie", - "auto_login_desc" => "Domyślne logowanie po uruchomieniu na guest/guest jeżeli żaden użytkownik nie istnieje.", - "first_in" => "Domyślny ekran startowy", - "version_price_free" => "Free", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Katalog nie jest zapisywalny, ustaw prawa w katalogu i wszystkich podkatalogach, i spróbuj ponownie!", - "menu_name" => "Nazwa pozycji w menu", - "menu_hidden" => "Ukryj menu", - "menu_show" => "Pokaż menu", - "menu_move_down" => "Przesuń w dół", - "menu_move_up" => "Przesuń w górę", - "menu_move_del" => "Usuń pozycję menu", - "menu_open_window" => "Otwórz w nowym oknie", - "menu_sub_menu" => "Sub-menu", - "url_path" => "Adres menu", - "url_path_desc" => "adres URL lub kod js", - "no_permission_read" => "Nie masz uprawnień do odczytu!", - "no_permission_download" => "Nie masz uprawnień do pobrania!", - "php_env_check" => "Środowisko pracy monitoringu:", - "php_env_error" => "Brakuje biblioteki Php", - "php_env_error_ignore" => "Ignoruj błędy", - "php_env_error_version" => "Wersja PHP nie może być mniejsza niż 5,0", - "php_env_error_path" => "Ścieżka nie posiada uprawnień do zapisu", - "php_env_error_list_dir" => "Serwer WWW otwiera katalog z listą funkcji ze względów bezpieczeństwa wyłączenie tej funkcji!jak?", - "php_env_error_gd" => "biblioteki PHP GD powinien być otwarty, w przeciwnym wypadku kod, należy użyć miniatury nie będzie działał prawidłowo", - "install_login" => "Można użyć konta do logowania", - "install_enter" => "System", - "install_user_default" => "Administrator: {0} / (poniżej ustawić hasło)
                  Przeciętny użytkownik: {1}
                  użytkowników Gości: {2}", - "login_root_password" => "Ustaw hasło administratora", - "login_root_password_repeat" => "Potwierdź hasło ponownie", - "login_root_password_equal" => "Hasła nie pasują do siebie!", - "login_root_password_tips" => "Ustaw hasło administratora!", - "forget_password" => "Nie pamiętam hasła", - "forget_password_tips" => "Nie ma możliwości przypominania hasła.
                  Jeżeli chcesz zresetować hasło,
                  proszę skontaktować się z administratorem!



                  Reset dla administratora:
                  ./data/system/install.lock", - "copyright_desc" => "Kodexplorer is a highly acclaimed web document management system that you can use for internal document management or sharing. It can also be used to manage web sites on the server, replace Ftp, and even be developed directly as web IDE. At the same time you can also secondary development of this program integrated into your existing system.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com All rights reserved.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Cloud • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Cloud • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "Kodlplorer, kod, kodCloud, webos, web etc, php filemanage, filemanage, can cloud, mango cloud, document management system, enterprise cloud disk, resource manager, online document, online office, online office, online CAD preview, online editing , Online editor", - "kod_meta_description" => "KodExplorer is the industry's leading government / enterprise private cloud and online document management system for the personal website, corporate private cloud deployment, network storage, online document management, online office, etc. to provide safe and easy, easy Use, can be highly customized private cloud products. Using windows-style interface, operating habits, no need to adapt to quickly get started to support hundreds of commonly used file format online preview, playback and editing, environment-friendly, powerful, is a trial, no longer can not be separated from the private Cloud products.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Zaloguj się", - "guest_login" => "Logowanie gości", - "username" => "Login", - "userNickName" => "Nazwa", - "password" => "Hasło", - "login_code" => "Kod weryfikacji", - "need_check_code" => "Wymagana weryfikacja", - "need_check_code_desc" => "Po zalogowaniu trzeba będzie wprowadzić kod uwierzytelnienia.", - "setting_csrf_protect" => "Ochrona CSRF", - "setting_csrf_protect_desc" => "Ustaw ochronę przed atakami typu Cross-Site Forgery (CSRF)", - "login_rember_password" => "Zapamiętaj mnie", - "setting_show_root_group" => "Ustawienia grupy głównej", - "setting_show_root_group_desc" => "Główny katalog z listą wszystkich grup użytkowników.", - "setting_show_share_user" => "Ustawienia listy użytkowników", - "setting_show_share_user_desc" => "Główny katalog z listą udziałów wszystkich użytkowników", - "setting_clear_user_recycle" => "Opróżnij śmieci wszystkich użytkowników", - "setting_clear_cache" => "Opróżnij pamięć podręczną", - "setting_icp" => "Prawa autorskie", - "setting_global_css" => "Kod globalny css", - "setting_global_css_desc" => "Dodanie własnych kodów css do wszystkich stron.", - "setting_global_html" => "Kod globalny html", - "setting_global_html_desc" => "Dodanie własnego kodu html wszystkich stron", - "us" => "kodcloud.com", - "login_not_null" => "Nazwa użytkownika i hasło nie może być puste!", - "code_error" => "kody błędów", - "password_error" => "Nazwa użytkownika lub hasło jest nieprawidłowe!", - "password_not_null" => "Hasło nie może być puste!", - "old_password_error" => "Stare hasło jest nieprawidłowe!", - "permission" => "Uprawnienia", - "permission_edit" => "Edycja uprawnień", - "file_info_owner" => "Właściciel", - "file_info_group" => "Grupa", - "no_permission" => "Administrator wyłączył te uprawnienia!", - "no_permission_ext" => "Nie udzielono tego typu uprawnienia do plików", - "dialog_max" => "Maksymalizuj", - "dialog_min" => "Minimalizuj", - "dialog_min_all" => "Minimalizuj wszystkie", - "dialog_display_all" => "Wyświetl wszystkie okna", - "dialog_close_all" => "Zamknij wszystko", - "open" => "Otwórz ", - "others" => "Inne ...", - "open_with" => "Otwórz jako ... ", - "close" => "Zamknij", - "close_all" => "Zamknij wszystko", - "close_left" => "Zamknij lewą kartę", - "close_right" => "Zamknij prawą kartę", - "close_others" => "Zamknij inne", - "loading" => "Ładowanie ...", - "warning" => "Uwaga", - "getting" => "Pobieranie ...", - "sending" => "Transmisja ...", - "data_error" => "Bład operacji!", - "get_success" => "Pobrano poprawnie", - "save_success" => "Zapisano poprawnie", - "success" => "Wykonano poprawnie", - "error" => "operacja nie powiodła się", - "error_repeat" => "Operacja nie powiodła się, nazwa już istnieje!", - "word_error" => "Nie powiodło się ", - "word_success" => " Sukces", - "system_error" => "Błąd systemu", - "name" => "nazwa", - "type" => "typ", - "contain" => "zawiera", - "address" => "adres", - "size" => "rozmiar", - "byte" => "bajt", - "path" => "ścieżka", - "action" => "Akcje i opcje", - "create_time" => "Utworzony", - "modify_time" => "Zmodyfikowany", - "last_time" => "Ostatni dostęp", - "sort_type" => "Sortuj według", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "katalog publiczny", - "system_path_not_change" => "katalog systemowy nie może być modyfikowany", - "file" => "plik", - "folder" => "katalog", - "copy" => "Kopiuj ", - "past" => "Wklej ", - "clone" => "Klonuj ", - "cute" => "Przenieś ", - "cute_to" => "przenieś do ...", - "copy_to" => "kopiuj do ...", - "remove" => "Skasuj ", - "remove_force" => "całkowicie usunąć", - "info" => "Informacja ", - "list_type" => "Widok", - "list_icon" => "układ: ikony", - "list_list" => "układ: lista", - "list_list_split" => "układ: kolumny", - "sort_up" => "rosnąco", - "sort_down" => "malejąco", - "order_type" => "Sortuj według", - "order_desc" => "malejąco", - "order_asc" => "rosnąco", - "rename" => "Przemianuj ", - "add_to_fav" => "Dodaj do ulubionych", - "search_in_path" => "Wyszukiwanie folderów", - "add_to_play" => "Dodaj do playlisty", - "manage_fav" => "Zarządzaj ulubionymi", - "refresh_tree" => "Odśwież drzewo katalogów", - "manage_folder" => "Zarządzanie katalog", - "close_menu" => "Zamknij menu", - "zip" => "Archiwizuj", - "unzip" => "Rozpakuj ...", - "unzip_folder" => "Rozpakuj katalog", - "unzip_this" => "Rozpakuj to ...", - "unzip_to" => "Rozpakuj do ...", - "zipview_file_big" => "Plik jest zbyt duży do wypakowania!", - "clipboard" => "Zobacz Schowek", - "clipboard_clear" => "Schowek jest pusty", - "full_screen" => "Pełny ekran", - "folder_info_item" => " pozycje", - "folder_info_item_select" => " wybrany", - "file_load_all" => "Kliknij dwukrotnie, aby załadować wszystko ...", - "tips" => "podpowiedź", - "ziping" => "Skompresowanie ...", - "unziping" => "Wyodrębnianie ...", - "moving" => "Komórka operacji ...", - "remove_title" => "Potwierdź usuwanie", - "remove_info" => "Czy usunąć wybrany element?", - "remove_title_force" => "Trwałe skasowanie", - "remove_info_force" => "Czy na pewno chcesz trwale skasować ten dokument?", - "name_isexists" => "Nazwa już istnieje!", - "install" => "zainstalować", - "width" => "szerokość", - "height" => "wysoki", - "app" => "Aplikacje", - "app_store" => "Sklep aplikacji", - "app_create" => "Tworzenie aplikacji", - "app_edit" => "Modyfikacja aplikacji", - "app_group_all" => "Grupa aplikacji", - "app_group_game" => "gry", - "app_group_tools" => "narzędzia", - "app_group_reader" => "czytniki", - "app_group_movie" => "media", - "app_group_music" => "muzyka", - "app_group_life" => "życie", - "app_group_others" => "inne", - "app_desc" => "opis", - "app_icon" => "Aplikacje ikona", - "app_icon_show" => "adres URL lub katalog", - "app_group" => "Pakiet aplikacji", - "app_type" => "typ", - "app_type_url" => "powiązanie", - "app_type_code" => "rozszerzenie js", - "app_display" => "powierzchowność", - "app_display_border" => "Bez granic (tj wybrać marginesów)", - "app_display_size" => "Resize (Sprawdź korekcie)", - "app_size" => "Rozmiar", - "app_url" => "Link", - "app_code" => "Kod js", - "edit" => "Edycja", - "edit_can_not" => "Nie jest to plik tekstowy", - "edit_too_big" => "Plik jest zbyt duży, że nie może być większa niż 40M", - "open_default" => "Domyślnie otwarta", - "open_ie" => "Otwórz w oknie", - "refresh" => "Odśwież", - "refresh_all" => "Wymusić odświeżenie", - "newfile" => "Nowy plik", - "newfile_save_as" => "Zapisz się", - "newfolder" => "Nowy folder", - "newothers" => "Nowe inne", - "path_loading" => "Ładowanie ...", - "go" => "Idź ...", - "go_up" => "W górę ...", - "history_next" => "naprzód", - "history_back" => "wstecz", - "address_in_edit" => "Kliknij, aby przejść do trybu edycji", - "double_click_rename" => "Dwukrotnie kliknij zmiana nazwy", - "double_click_open" => "Kliknij dwukrotnie, aby otworzyć", - "path_null" => "Folder jest pusty!", - "file_size_title" => "Ikona Rozmiar", - "file_size_small_super" => "Ultra-small", - "file_size_small" => "małe ikony", - "file_size_default" => "ikony", - "file_size_big" => "duże ikony", - "file_size_big_super" => "Duża Ikona", - "upload" => "Prześlij", - "upload_ready" => "Oczekiwanie na przesyłaniu", - "upload_success" => "Prześlij sukces", - "upload_path_current" => "Przełącz się do bieżącego katalogu", - "upload_select" => "Wybierz File", - "upload_max_size" => "Maksymalna dopuszczalna", - "upload_size_info" => "Jeśli chcesz skonfigurować więcej, proszę zmodyfikować php.ini maksymalną dozwoloną przesyłanie. Po wybraniu pliku większy niż tej konfiguracji automatycznie odfiltrować.", - "upload_error" => "przesyłanie nie powiodło się", - "upload_error_http" => "Błędy sieciowe lub zapory", - "upload_muti" => "przesyłanie wielu plików", - "upload_drag" => "Przeciągnij i upuść przesyłanie", - "upload_drag_tips" => "Odkręć załadować!", - "path_not_allow" => "Nazwa pliku nie jest dozwolony", - "download" => "Pobierz ", - "downloading" => "Pobieranie ...", - "download_address" => "Pobierz adres", - "download_ready" => "Gotowy do pobrania", - "download_success" => "Pobieranie zakończone!", - "download_error" => "Pobieranie nie powiodło się!", - "download_error_create" => "Błąd zapisu!", - "download_error_exists" => "Pobierany plik istnieje!", - "upload_error_null" => "Brak pliku!", - "upload_error_big" => "Plik jest zbyt duży!", - "upload_error_move" => "Nie można przenieść pliku!", - "upload_error_exists" => "Plik już istnieje", - "upload_local" => "Prześlij plik", - "download_from_server" => "Zdalnie pobierz", - "save_path" => "Zapisz ścieżkę", - "upload_select_muti" => "Prześlij wybrane pliki", - "search" => "Wyszukiwanie", - "searching" => "Wyszukiwanie ...", - "search_result" => "Wyniki wyszukiwania", - "seach_result_too_more" => "Zbyt wiele wyników wyszukiwania. Określ katalog lub zmień zapytanie", - "search_null" => "Brak wyników!", - "search_uplow" => "Sprawa wrażliwa", - "search_content" => "Zawartość pliku Szukaj", - "search_info" => "Wpisz poszukiwaną frazę i katalog wyszukiwania!", - "search_ext_tips" => "Według | oddzielone, na przykład php | js | css
                  nie wypełniają przeszukiwanie domyślny plik tekstowy", - "file_type" => "Typ pliku", - "goto" => "Skocz do", - "server_dwonload_desc" => "Zadanie zostało dodane do listy pobierania", - "parent_permission" => "Uprawnienia katalogu nadrzędnego", - "root_path" => "My Documents", - "lib" => "magazyn", - "fav" => "Dodaj do zakładek", - "desktop" => "Pulpit", - "browser" => "przeglądarka", - "my_computer" => "Mój komputer", - "recycle" => "Śmieci", - "my_document" => "My Documents", - "my_picture" => "Moje zdjęcia", - "my_music" => "Moja muzyka", - "my_movie" => "Moje filmy", - "my_download" => "Moje pliki", - "ui_desktop" => "Pulpit", - "ui_explorer" => "Eksplorer", - "ui_editor" => "Edytor", - "adminer" => "adminer", - "ui_project_home" => "Strona projektu", - "ui_login" => "Zaloguj się", - "ui_logout" => "Wyloguj się", - "setting" => "Ustawienia systemowe", - "setting_title" => "Ustawienia", - "setting_user" => "Użytkownik", - "setting_password" => "Zmień hasło", - "setting_password_old" => "Stare hasło", - "setting_password_new" => "Nowe hasło", - "setting_language" => "Ustawienia języka", - "setting_member" => "Grupy i role", - "setting_group" => "Ustawienia grup", - "setting_group_add" => "Dodaj grupę", - "setting_group_edit" => "Edytuj grupę", - "setting_theme" => "Wygląd", - "setting_wall" => "Tapety", - "setting_wall_desktop" => "Tapety pulpitu", - "setting_wall_desktop_list" => "Zarządzanie tapetami", - "setting_wall_login_list" => "Ekran logowania", - "setting_wall_login_tips" => "Jeżeli jest tu więcej niż jeden element, to tło logowania będzie wybierane losowo.", - "setting_wall_diy" => "Niestandardowe tapety:", - "setting_wall_info" => "Adres URL z obrazem lub lokalny katalog ze zdjęciami", - "setting_fav" => "Menedżer zakładek", - "setting_help" => "Info pomocy", - "setting_about" => "O programie", - "setting_success" => "Zmiany zapisane!", - "can_not_repeat" => "Nie wolno powtarzać", - "absolute_path" => "adres bezwzględny", - "group" => "Grupy użytkowników", - "data_not_full" => "Dane przedłożone niekompletne!", - "default_user_can_not_do" => "Domyślną użytkownik nie może działać", - "default_group_can_not_do" => "Domyślne grupy użytkowników nie może pracować", - "username_can_not_null" => "Nazwa nie może być puste!", - "groupname_can_not_null" => "Nazwa grupy użytkownika nie może być puste!", - "groupdesc_can_not_null" => "Grupa Użytkownik Opis nie może być pusty!", - "group_move_user_error" => "Grupa użytkowników użytkownicy poruszają się powiodło", - "group_already_remove" => "Grupa użytkowników została usunięta", - "group_not_exists" => "Ta grupa użytkowników nie istnieje", - "member_add" => "Dodaj użytkownika", - "password_null_not_update" => "Mówili, że nie zmienił hasło nie jest wypełniony", - "if_save_file_tips" => "Niektóre pliki nie zostały zapisane. Czy na pewno chcesz zamknąć okno?", - "if_save_file" => "Plik nie został zapisany, chcesz porzucić?", - "if_remove" => "Potwierdź usuń", - "member_remove_tips" => "Po usunięciu katalogu użytkownika zostaną usunięte", - "group_remove_tips" => "Po usunięciu grupy użytkowników użytkowników nie może się zalogować
                  (trzeba ponownie ustawić grupa użytkowników)", - "group_name" => "Nazwa grupy", - "group_name_tips" => "Zalecena angielska nazwa, nie mogą się powtarzać", - "group_desc" => "Nazwa wyświetlana", - "group_desc_tips" => "Nazwa grupy i opis", - "group_role_ext" => "Ograniczenia rozszerzeń", - "group_role_ext_tips" => "Z wieloma | rozdzielone", - "group_role_file" => "Zarządzanie plikami", - "group_role_upload" => "Wyślij plik", - "group_role_user" => "dane użytkownika", - "group_role_group" => "Zarządzanie grupami użytkowników", - "group_role_member" => "Członkowie roli", - "group_role_mkfile" => "Nowy plik", - "group_role_mkdir" => "Nowy folder", - "group_role_pathrname" => "Zmień nazwę", - "group_role_pathdelete" => "Usuń plik", - "group_role_pathinfo" => "Właściwości", - "group_role_pathmove" => "Przenieś: kopiuj, wytnij, wklej, przeciągnij", - "group_role_zip" => "Archiwizuj", - "group_role_unzip" => "Dearchiwizuj", - "group_role_search" => "Szukaj", - "group_role_filesave" => "Edytuj / Zapisz", - "group_role_can_upload" => "Przesyłanie i pobieranie", - "group_role_download" => "Ściągnij plik", - "group_role_passowrd" => "Zmiana hasła", - "group_role_config" => "Ustawienia użytkownika", - "group_role_fav" => "Edytuj ulubione: dodaj, edytuj, usuń", - "action_list" => "Podgląd listy", - "action_add" => "Dodaj", - "action_edit" => "Edytuj", - "action_del" => "Usuń", - "group_role_ext_warning" => "Rozszerzenia plików dla których niedozwolone są operacje: przesyłanie, zmiana nazwy, edycja, zapis, zdalne pobieranie, rozpakowanie i udostępnianie", - "group_tips" => "
                  1. Rola użytkowników to grupa dla użytkowników zawierająca zestaw uprawnień i ograniczeń.
                  2. Nazwa roli musi być unikalna.
                  3. Po modyfikacji nazwy należy ona do reorganizowanego użytkownika i jest automatycznie powiązana.
                  4. Rozszerzenia ograniczają relacje między bezpieczeństwem systemu a dostępnością - należy zachować ostrożność.(Jeśli utworzysz nowy php w katalogu sieciowym, okazać się może, że zmiana uprawnień programu dla tego użytkownika będzie praktycznie niemożliwa)
                  5. Zarządzanie systemem, organizacja ról uprawnień, prawa do przeglądania i dodawania, usuwania i modyfikowania uprawnień są powiązane, a programy są automatycznie kojarzone.
                  6. Po ustawieniu roli uprawnień, aby dodać grupę uprawnień, kolejne uprawnienia nie są dziedziczone (to uprawnienie jest równoważne najwyższym uprawnieniom).
                  7. ", - "not_null" => "Wymagane pola nie może być pusty!", - "picture_can_not_null" => "Zdjęcia nie mogą być puste!", - "rname_success" => "Zmiana nazwy powidła się!", - "please_inpute_search_words" => "Wpisz ciąg wyszukiwania", - "remove_success" => "Usunięto z powodzeniem!", - "remove_fali" => "Usuwanie nie powiodło się!", - "clipboard_null" => "Schowek jest pusty!", - "create_success" => "Utworzono poprawnie!", - "create_error" => "Błąd operacji, sprawdź uprawnienia katalogu!", - "copy_success" => "[Kopiuj] - obejmujące sukces schowka!", - "cute_success" => "[Cut] - obejmujące sukces schowka!", - "clipboard_state" => "Stan Schowek:", - "no_permission_write_all" => "Plik lub katalog nie jest zapisywalny", - "no_permission_write_file" => "Plik nie ma uprawnień do zapisu", - "no_permission_read_all" => "Plik lub katalog ma uprawnienia do odczytu", - "copy_not_exists" => "Źródło nie istnieje", - "current_has_parent" => "Folder docelowy jest podfolderem folderu źródłowego!", - "past_success" => "Operacja pasta jest zakończona", - "cute_past_success" => "operacja cięcia jest zakończona(plik źródłowy zostanie usunięty, schowek pusty)", - "zip_success" => "Archiwizacja poprawna", - "not_zip" => "To nie archiwum", - "zip_null" => "Nie wybrano pliku lub katalogu", - "unzip_success" => "Rozpakowano poprawnie", - "gotoline" => "Skocz do linii", - "path_is_current" => "Ścieżka jest aktualna", - "path_exists" => "Nazwa już istnieje!", - "undo" => "Cofnij", - "redo" => "Ponów", - "preview" => "Podgląd", - "wordwrap" => "Formatuj", - "show_gutter" => "Pokaż numery wierszy", - "char_all_display" => "Pokaż niewidoczne znaki", - "auto_complete" => "automatycznie podpowiada", - "auto_save" => "Automatycznie zapisuj", - "function_list" => "Lista funkcji", - "code_theme" => "Styl kodowania", - "font_size" => "Rozmiar czcionki", - "confirm" => "Czy na pewno chcesz to zrobić?", - "button_ok" => "Potwierdź", - "button_submit" => "Wyślij", - "button_set" => "Ustaw", - "button_cancel" => "Anuluj", - "button_edit" => "Edytuj", - "button_save" => "Zapisz", - "button_apply" => "Zastosuj", - "button_save_all" => "Zapisz wszystko", - "button_not_save" => "Nie zapisuj", - "button_add" => "Dodaj", - "button_back_add" => "Wróć", - "button_del" => "Usuń", - "button_save_edit" => "Zapisz zmiany", - "button_save_submit" => "Zatwierdź", - "button_more" => "więcej", - "button_select_all" => "Zaznacz wszystko / Odwróć zaznaczenie", - "button_update" => "Aktualizuj", - "charset_AUTO" => "Automatyczna identyfikacja", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabski", - "charset_ISO_8859_6" => "arabski", - "charset_ISO_8859_10" => "języki skandynawskie", - "charset_CP1257" => "języki bałtyckie", - "charset_ISO_8859_13" => "języki bałtyckie", - "charset_ISO_8859_4" => "języki bałtyckie", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "gruziński", - "charset_PT154" => "kazachski", - "charset_CP949" => "koreański", - "charset_EUC_KR" => "koreański", - "charset_GB18030" => "chiński uproszczony", - "charset_GBK" => "chiński uproszczony", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "rumuński", - "charset_ISO_8859_3" => "Południowej Europejskiej", - "charset_EUC_JP" => "japoński", - "charset_ISO_2022_JP" => "japoński", - "charset_SHIFT_JIS" => "japoński", - "charset_KOI8_T" => "język tadżycki", - "charset_ISO_8859_11" => "tajski", - "charset_TIS_620" => "tajski", - "charset_CP1254" => "turecki", - "charset_CP1251" => "cyrylica", - "charset_ISO_8859_5" => "cyrylica", - "charset_KOI8_R" => "cyrylica", - "charset_KOI8_U" => "cyrylica", - "charset_CP1252" => "językach zachodnioeuropejskich", - "charset_ISO_8859_1" => "językach zachodnioeuropejskich", - "charset_ISO_8859_15" => "językach zachodnioeuropejskich", - "charset_Macintosh" => "językach zachodnioeuropejskich", - "charset_CP1255" => "hebrajski", - "charset_ISO_8859_8" => "hebrajski", - "charset_CP1253" => "grecki", - "charset_ISO_8859_7" => "grecki", - "charset_ARMSCII_8" => "ormiański", - "charset_CP1258" => "wietnamski", - "charset_VISCII" => "wietnamski", - "charset_CP1250" => "Języki Europy Środkowej", - "charset_ISO_8859_2" => "Języki Europy Środkowej", - "charset_default_set" => "Kodowanie pliku", - "charset_convert_save" => "Zapisz plik zakodowany jako", - "PluginCenter" => "Opcje wtyczek", - "PluginBuy" => "Autoryzacja zakupu", - "PluginInstalled" => "Zainstalowane", - "PluginUpdate" => "Aktualizacja", - "PluginListNull" => "Brak aktualizacji", - "PluginType" => "Klasyfikacja", - "PluginTypeAll" => "Wszystkie", - "PluginTypeFile" => "Pliki", - "PluginTypeSafe" => "Bezpieczeństwo", - "PluginTypeTools" => "Narzędzia", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "Inne", - "PluginInstall" => "Zainstaluj", - "PluginEnable" => "Włącz", - "PluginDisable" => "Wyłącz", - "PluginRemove" => "Odinstaluj", - "PluginConfig" => "Konfiguruj", - "PluginStatus" => "Status", - "PluginStatusEnabled" => "Aktywna", - "PluginStatusDisabled" => "Wyłączone", - "PluginStatusNotInstall" => "Niezainstalowane", - "PluginInstalling" => "Instalacja ...", - "PluginHasUpdate" => "Aktualizuj", - "PluginUpdateStart" => "Aktualizacja wtyczki", - "PluginNeedConfig" => "Wymagana konfiguracja", - "PluginConfigNotNull" => "Wymagany wpis", - "PluginOpen" => "otwarte", - "PluginAuther" => "autor", - "PluginVersion" => "wersja", - "PluginDownloadNumber" => "popularność", - "PluginBack" => "powrót", - "PluginReadme" => "opis", - "PluginResetConfig" => "Reset ustawień", - "PluginInstallSelf" => "Ręczna instalacja", - "Plugin.config.auth" => "Uprawnienia dostępu", - "Plugin.config.authDesc" => "Wszystkie z dostępnych ustawień, lub określić użytkowników, grupy użytkowników, grupy mogą korzystać z prawa", - "Plugin.config.authOpen" => "Otwarty dostęp", - "Plugin.config.authOpenDesc" => "Nie ma potrzeby odwiedzania, może być dostępny, może być używany do zewnętrznego połączenia interfejsu", - "Plugin.config.authAll" => "właściciel", - "Plugin.config.authUser" => "użytkownik", - "Plugin.config.authGroup" => "grupa", - "Plugin.config.authRole" => "rola", - "Plugin.Config.openWith" => "otwarty styl", - "Plugin.Config.openWithDilog" => "dialog wewnętrzny", - "Plugin.Config.openWithWindow" => "otwórz w nowym oknie", - "Plugin.Config.fileSort" => "Priorytet", - "Plugin.Config.fileSortDesc" => "Im większy priorytet wtyczki tym jest ważniejsza przy otwieraniu pliku.", - "Plugin.Config.fileExt" => "Formaty plików obsługiwane przez wtyczkę", - "Plugin.Config.fileExtDesc" => "Wybierz rozszerzenia", - "Plugin.tab.basic" => "podstawowe ustawienia", - "Plugin.tab.auth" => "Uprawnienia", - "Plugin.tab.others" => "Inne ustawienia", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Podgląd strony sieci Web", - "Plugin.default.picasa" => "Picasa przeglądania obraz", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "gracz JPlayer", - "Plugin.auth.viewList" => "Lista wtyczek", - "Plugin.auth.setting" => "Ustawienia wtyczek", - "Plugin.auth.status" => "Status wtyczek", - "Plugin.auth.install" => "Zainstaluj / Odinstaluj", - "Explorer.UI.openWith" => "Otwórz domyślnie", - "Explorer.UI.openWithText" => "Otwórz w notatniku", - "Explorer.UI.appSetDefault" => "Ustaw domyślną aplikację", - "Explorer.UI.appAwaysOpen" => "Zawsze używaj wybranego programu do otwierania tego pliku", - "Explorer.UI.selectAppDesc" => "Wybierz program, który chcesz otworzyć ten plik", - "Explorer.UI.selectAppWarning" => "Proszę wybrać aplikację!", - "Explorer.UI.appTypeSupport" => "Obsługiwane", - "Explorer.UI.appTypeAll" => "Wszystkie aplikacje", - "kodApp.oexe.edit" => "Edytuj aplikację świetlną", - "kodApp.oexe.open" => "Otwórz aplikację światła" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/pt/about.html b/plugin/document/kod/config/i18n/pt/about.html deleted file mode 100644 index dc861373f..000000000 Binary files a/plugin/document/kod/config/i18n/pt/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/pt/edit.html b/plugin/document/kod/config/i18n/pt/edit.html deleted file mode 100644 index 61ddec35d..000000000 --- a/plugin/document/kod/config/i18n/pt/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    funcionalidade rica

                    -

                    Código solicita automaticamente

                    -

                    Multi-tema: Escolha o seu estilo de programação favorita

                    -

                    Font Custom: para uso na cena

                    -

                    edição cursor multi, edição de blocos experiência de programação on-line comparável ao sublime

                    -

                    Bloco de dobragem, expanda; embrulhar

                    -

                    Suporte para múltiplas janelas, arraste a sequência de comutação;

                    -

                    Manter vários documentos, localizar e substituir; História;

                    -

                    Auto-complete [], {}, (), '' ''

                    -

                    On-line de pré-visualização em tempo real que permite que você se apaixonar por programação on-line!

                    -

                    zendcodeing apoio, escrever código de oitenta

                    -

                    Mais recursos à espera de sua descoberta ......

                    -
                    -
                    -

                    150 tipos de realce de código

                    -

                    Dica: HTML, JavaScript, CSS, menos, sass, SCSS

                    -

                    desenvolvimento web: PHP, Perl, Python, Ruby, Elang, vai ...

                    -

                    linguagens tradicionais: Java, C, C ++, C #, ActionScript, VBScript ...

                    -

                    Outros: remarcação, shell, sql, lua, xml, yaml ...

                    -
                    -
                    -
                    -
                    -

                    Ação atalho

                    -
                     atalhos mais usados: 
                    - ctrl + s para salvar 
                    - Ctrl + A Selecionar tudo Ctrl + X Cut 
                    - ctrl + c ctrl + v copiar colar 
                    - ctrl + z Desfazer Desfazer Anti ctrl + y 
                    - Ctrl + F para encontrar substituto ctrl + f + f 
                    - win + alt + 0 colapso todos ganham + Alt + Shift + 0 Expandir Tudo 
                    - esc [pesquisa Sair automaticamente cancelada pede ...] 
                    - Ctrl-Shift-s Pré-Visualização 
                    - Ctrl-Shift-e show & função Close 
                    -
                    -
                     Escolha: 
                    - Rato marquise - drag 
                    - shift + Home / End / up / esquerda / baixo / direita 
                    - shift + PageUp / PageDown virar para cima e para baixo para selecionar 
                    - CTRL + SHIFT + home / fim do cursor atual para o início eo fim 
                    - alt + mouse para arrastar a seleção de bloco 
                    - ctrl + alt + g lote de seleção e insira o editor multi-guia atual 
                    -
                    -
                     cursor: 
                    - home / end / up / esquerda / baixo / direita 
                    - ctrl + home / end mover o cursor para o cabeçalho do documento / tail 
                    - ctrl + p Ir para tag correspondência 
                    - PageUp / PageDown cursor para cima e para baixo 
                    - alt + cursor esquerda / direita para mover para o topo da linha 
                    - Shift + cursor esquerda / direita para o final da linha e 
                    - Ctrl + L para saltar para uma linha específica 
                    - ctrl + alt + cima / para baixo (abaixo) aumentar o cursor 
                    -
                    -
                     Edit: 
                    - ctrl + / Comentar e ctrl + alt + uncomment um Justified 
                    - mudança de alinhamento guia mesa + table table geral avanço 
                    - delete delete delete todo o ctrl + linha d 
                    - ctrl + delete para excluir a linha na palavra certa 
                    - ctrl / shift + retrocesso para apagar a palavra à esquerda 
                    - alt + shift + cima / baixo e adicionado à linha de cópia (abaixo) de avião 
                    - Alt + Delete para apagar o conteúdo da direita do cursor 
                    - alt + cima / baixo na linha atual ea linha (troca de linha ao lado) 
                    - linhas Shift + D + Ctrl copiado e adicionou-se o seguinte 
                    - ctrl + DELETE para eliminar o direito da palavra 
                    - ctrl + shift + u convertidos em letras minúsculas 
                    - Ctrl + U texto selecionado para maiúsculas 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/pt/help.html b/plugin/document/kod/config/i18n/pt/help.html deleted file mode 100644 index 29a7deab6..000000000 --- a/plugin/document/kod/config/i18n/pt/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    gerenciador de arquivos
                    -

                    Seleção de arquivo: rádio, marquise rato, deslocar-eleição, ctrl escolhidos aleatoriamente, o teclado para cima e para baixo, em casa, a seleção final.

                    -

                    operação de arquivo: Depois de selecionar um arquivo, você pode copiar, cortar, apagar, visualizar as propriedades de compressão, renomear, Visualização aberta e outras operações ......

                    -

                    File Upload: upload de vários arquivos de lote; html5 de upload de arrasto (arrastar para carregar perfeitamente janela, arraste e solte o suporte para pastas)

                    -

                    função direita: o botão direito do arquivo, pasta, certo, mais logo após a operação de eleição, desktop, direita, árvore de diretórios direita, atalhos do menu da direita ligada
                    - (Selecionar tudo - Copiar - Cut - Paste - Apagar - Mudar o nome, definir ......)

                    -

                    Navegador de arquivos: modo de lista, o modo de ícone; clique duas vezes em sub-pastas; operação barra de endereços; abrir um registro contrarian registro de pasta (para frente e para trás)

                    -

                    Suporte arrastar e soltar: Verifique arrasto, cortar para alcançar a função de pasta especificada

                    -

                    Teclas de atalho: delete delete, ctrl + A Selecionar tudo, ctrl + C para copiar, + X Cut, pesquisa de arquivo (teor de busca) Ctrl

                    -
                    -
                    -
                    Pré-visualização de arquivos
                    -

                    Visualização de ficheiros: visualizar o conteúdo de um arquivo de edição de texto e salvar; html, visualização de ficheiros swf,

                    -

                    Imagem de visualização: geração automática de miniaturas, imagem da apresentação de slides;

                    -

                    reprodução de áudio: tocar música on-line e arquivos de vídeo; suporte mp3, wma, meio, aac, wav, mp4,

                    -

                    Vídeo: reprodução de vídeo on-line, apoiado formatos: FLV, F4V, 3gp

                    -

                    de escritório: Pré-visualização on-line, apoiado formatos: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    Atalhos
                    -

                    digite Abrir

                    -

                    Ctrl + A Selecionar tudo

                    -

                    CTRL + C para copiar o selecionado

                    -

                    ctrl + v para colar

                    -

                    ctrl + x Cut

                    -

                    ctrl + f para procurar o diretório atual

                    -

                    alt + n Novo arquivo

                    -

                    alt + m New Folder

                    -

                    Apagar Apagar selecionadas

                    -

                    backspace Voltar

                    -

                    Ctrl + Backspace para a frente

                    -

                    F2 Mudar o nome selecionado (pasta)

                    -

                    home / end / cima / baixo / esquerda / direita para selecionar o arquivo

                    -

                    Qualquer tecla Verifique para pressionar a primeira letra dos arquivos e pastas de caracteres selecionado ciclo automático

                    -
                    diff --git a/plugin/document/kod/config/i18n/pt/main.php b/plugin/document/kod/config/i18n/pt/main.php deleted file mode 100644 index 4a0842f87..000000000 --- a/plugin/document/kod/config/i18n/pt/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Por favor, selecione o arquivo ...", - "path_api_select_folder" => "Por favor, selecione uma pasta ...", - "path_api_select_image" => "Por favor, selecione uma imagem ...", - "share_can_upload" => "permitir o envio", - "move_error" => "mover falhou", - "setting_basic" => "Basic Settings", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Open Animation", - "recycle_open_if" => "Abra a Lixeira", - "recycle_open" => "aberto", - "setting_user_recycle_desc" => "Após a exclusão será excluída diretamente eliminação física", - "setting_user_animate_desc" => "Janela aberta e outra animação", - "setting_user_sound_desc" => "Som de operação", - "setting_user_imageThumb" => "Imagine as miniaturas", - "setting_user_imageThumb_desc" => "Melhor experiência de navegação após a abertura", - "setting_user_fileSelect" => "Abra o cheque do ícone do arquivo", - "setting_user_fileSelect_desc" => "Chave do ícone do arquivo com a tecla esquerda, clique com o botão direito do mouse na entrada do atalho", - "qrcode" => "QR code URL", - "theme_mac" => "Mac branco minimalista", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Classic Blue Metro", - "theme_metro_green" => "Metro luz verde", - "theme_metro_purple" => "Metro elegante roxo", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro laranja brilhante", - "theme_alpha_image" => "Brilhante - vôo", - "theme_alpha_image_sun" => "Brilhante - Sunset", - "theme_alpha_image_sky" => "Symphony - Céu Azul", - "theme_diy" => "personalizado", - "theme_diy_title" => "Configurações personalizadas temáticos", - "theme_diy_background" => "fundo", - "theme_diy_image" => "fotografia", - "theme_diy_color_blur" => "gradiente de cor", - "theme_diy_image_blur" => "distorção da imagem", - "theme_diy_image_url" => "endereço de fotos", - "theme_diy_color_start" => "cor inicial", - "theme_diy_color_end" => "End Cor", - "theme_diy_color_radius" => "ângulo de inclinação", - "system_role_admin_set" => "Os administradores têm todos os direitos, sem definir!", - "login_error_user_not_use" => "Usuário foi desativado! Entre em contato com o administrador", - "login_error_kod_version" => "conflito de versões", - "login_error_role" => "grupo permissões de exibição não existe, entre em contato com o administrador", - "no_permission_group" => "Você não está neste grupo!", - "no_permission_write" => "O diretório não tem permissão de escrita", - "user" => "usuário", - "save_as" => "salvar como", - "check_update" => "atualizar", - "keyboard_type" => "Modo de teclado", - "font_family" => "fontes", - "code_mode" => "destaque de sintaxe", - "path_can_not_share" => "Suporta apenas partilhar os seus próprios documentos!", - "path_can_not_action" => "Este diretório não suporta esta operação!", - "wap_page_pc" => "Versão para PC", - "wap_page_phone" => "móvel", - "image_size" => "dimensões da imagem", - "no_permission_action" => "Você não tem essa permissão, por favor entre em contato com o administrador!", - "path_is_root_tips" => "Chegou para o diretório raiz!", - "kod_group" => "organização", - "my_kod_group" => "Estou no departamento", - "space_tips_default" => "(GB) 0 nenhum limite", - "space_tips_full" => "sem limitar", - "space_size" => "espaço", - "space_size_use" => "Uso de espaço", - "space_is_full" => "Não há espaço suficiente, entre em contato com o administrador!", - "system_open_true_path" => "Com sucesso abriu no gerenciador de arquivos!", - "group_role_error" => "erro de permissões de função (sem configurações de permissão)", - "group_role_error_admin" => "permissões insuficientes", - "markdown_content" => "Índice analítico", - "system_group" => "Usuários e departamentos", - "system_group_edit" => "Gestão de departamento", - "system_group_role" => "identidade papel", - "system_group_create" => "Novo departamento", - "system_group_name" => "Nome do departamento", - "system_group_father" => "Departamento superior", - "system_group_add" => "Adicionar sub-departamento", - "system_group_remove" => "Remova o departamento", - "system_group_remove_tips" => "Tem certeza de excluir o departamento?
                    Após a supressão da parte do usuário será removida, o sub-setor foi movido para o setor raiz", - "system_group_select" => "Escolha um departamento", - "system_group_select_result" => "Os membros pertencem aos seguintes sectores", - "system_role_admin_tips" => "Observações: Os administradores do sistema não estão autorizados a controlar", - "system_member_action" => "Gerenciamento de usuários", - "system_member_add" => "novo Usuário", - "system_member_role" => "funções de permissão", - "system_member_role_select" => "selecionar", - "system_member_password_tips" => "Não encha não modificado", - "system_set_home_path" => "catálogo personalizado", - "system_set_home_path_tips" => "O diretório padrão é vazia", - "system_member_group" => "Onde o departamento", - "system_member_group_edit" => "Departamento editorial", - "system_member_remove" => "apagar Utilizador", - "system_member_remove_tips" => "Confirmar usuário de exclusão?
                    depois de remover o diretório do usuário será completamente apagado", - "system_member_set_role" => "Para confirmar a alteração das permissões do grupo de usuários selecionados?", - "system_member_remove_group" => "Determinar o usuário selecionado será removido deste grupo?", - "system_member_import" => "bulk adicionar", - "system_member_import_desc" => "Um usuário por linha,
                    já existem, são silenciosamente ignorados", - "system_member_use" => "permitir", - "system_member_unuse" => "incapacitar", - "system_member_space" => "Definir o tamanho do espaço do usuário ", - "system_member_space_tips" => " Definir o tamanho do espaço do usuário ", - "system_member_space_number" => " Deve ser um número!", - "system_member_group_config" => "Departamento de configuração de lote", - "system_member_group_remove" => "Removido do departamento", - "system_member_group_insert" => "Adicionar ao departamento", - "system_member_group_reset" => "Repor o departamento", - "system_member_group_error" => "Erro do departamento", - "system_group_action" => "Gestão de departamento", - "system_role_add" => "Adicionar Identidade Papel", - "system_role_read" => "Read-only", - "system_role_write" => "Pode ler e escrever", - "system_setting_root_path" => "acesso root", - "system_setting_root_path_desc" => "Somente um administrador do sistema pode acessar todos os diretórios, outros grupos de direitos dos usuários só podem ver o seu próprio diretório do usuário. Se você quiser ligar ou desligar
                    acesso de administrador para outros diretórios, você pode modificar o php open_basedir parâmetros anti-cross-site,definir", - "system_group_role_title" => "Gestão de função de autoridade departamental", - "system_group_role_remove" => "OK para excluir o papel do departamento", - "system_group_role_style" => "estilo", - "system_group_role_display" => "se", - "system_group_role_display_desc" => "Defina se deseja ou não exibir direitos de usuário do departamento", - "role_type_name_read" => "ler", - "role_type_name_read:list" => "Lista de Arquivos", - "role_type_name_read:info" => "Arquivo (pasta) propriedade Ver, pesquisa Pasta", - "role_type_name_read:copy" => "Copie o arquivo", - "role_type_name_read:preview" => "pré-visualização de arquivos (fotos, documentos, áudio e vídeo)", - "role_type_name_read:download" => "Arquivo (pasta) Transferir", - "role_type_name_write" => "escrever", - "role_type_name_write:add" => "Crie um arquivo (pasta), extraia o arquivo compactado", - "role_type_name_write:edit" => "Salve o arquivo para editar", - "role_type_name_write:change" => "Renomear, ajustar a estrutura de diretório", - "role_type_name_write:upload" => "Arquivo (pasta) upload, download remoto", - "role_type_name_write:remove" => "Arquivo (pasta) apagar, cortar", - "group_guest" => "visitantes", - "group_guest_desc" => "Você não é um membro do departamento,
                    só pode acessar o [diretório compartilhado do departamento] o seguinte conteúdo, permissões de somente leitura.", - "group_role_lebel_desc" => "Você é um membro deste departamento,
                    Todos os documentos no departamento Todos os direitos reservados pelo administrador", - "button_save_and_add" => "Salvar e continuar a adicionar", - "path_cannot_search" => "O diretório não suporta a busca!", - "not_support" => "Não suportado!", - "group_not_exist" => "grupo de usuários não existe!", - "upload_clear_all" => "Limpar", - "upload_clear" => "Limpar Concluído", - "upload_setting" => "estabelecer", - "upload_tips" => "Usa carregamento fatia, não mais sujeita a limite php.ini; recomendado arrastar pasta chrome e experiência upload queda", - "upload_exist" => "Arquivo com o mesmo nome", - "upload_exist_rename" => "rebatizar", - "upload_exist_replace" => "cobertura", - "upload_exist_skip" => "pular", - "upload_add_more" => "bulk adicionar", - "more" => "mais", - "system_setting" => "Configurações do sistema", - "openProject" => "Abra o editor do projeto", - "url_download" => "baixar", - "url_link" => "URL", - "app_type_link" => "Atalhos", - "createLink" => "Criar atalho", - "createLinkHome" => "Enviado para o atalho no desktop", - "createProject" => "Somando-se o projeto de editor", - "only_read" => "Read-only", - "only_read_desc" => "O diretório não tem permissão de gravação
                    Você pode definir permissões para este directório no servidor", - "not_read" => "ilegível", - "explorerNew" => "ligação kod", - "zip_download_ready" => "Após a compressão irá baixar automaticamente, por favor aguarde ...", - "set_background" => "Definir como Papel de parede", - "share" => "Compartilhe", - "my_share" => "Minha parte", - "group_share" => "Grupo de compartilhamento externo", - "share_edit" => "Editar compartilhamento", - "share_remove" => "Cancelar a partilha", - "share_remove_tips" => "Tem certeza de que deseja cancelar o compartilhamento? A conexão pública será invalidada.", - "share_path" => "Compartilhe o caminho", - "share_title" => "Compartilhamento de recursos", - "share_name" => "Compartilhe o título", - "share_time" => "expiração", - "share_time_desc" => "Nulo não está definido", - "share_password" => "password Extract", - "share_password_desc" => "senha vazia não está definido", - "share_cancle" => "descompartilhando", - "share_create" => "Criar um link público", - "share_url" => "Endereço partilhada", - "share_not_download" => "Baixar proibição", - "share_not_download_tips" => "Sharer proibiu download!", - "share_code_read" => "leitor de código", - "share_save" => "Guardar configuração", - "share_error_param" => "Erro de parâmetro!", - "share_error_user" => "Informações de erro do usuário!", - "share_error_sid" => "O compartilhamento não existe!", - "share_error_time" => "Você chegou tarde demais, a participação expirou!", - "share_error_path" => "arquivo compartilhado não existe, ele é excluído ou removido-lo!", - "share_error_password" => "senha errada!", - "share_error_show_tips" => "Este tipo não suporta visualização de ficheiros!", - "share_view_num" => "Visualizações:", - "share_download_num" => "Downloads:", - "share_open_page" => "Abra a página compartilhada", - "open_the_path" => "Digite diretório", - "recycle_clear" => "Esvaziar lixeira", - "recycle_clear_success" => "o sucesso de lixo vazio!", - "recycle_clear_info" => "Tem certeza de que quer esvaziar completamente o lixo?", - "fav_remove" => "Cancelar a cobrança", - "remove_item" => "itens", - "uploading" => "upload", - "upload_tips_more" => "Há muitos arquivos, a recomendação do upload comprimido, em seguida, descompacte online!", - "uploading_move" => "Na transferência de mesclagem ...", - "show_file" => "Nova visualização de página", - "unknow_file_title" => "Arquivo Abrir Dica!", - "unknow_file_tips" => "não apoiar a aplicação desse arquivo, você pode:", - "unknow_file_try" => "tentar", - "unknow_file_download" => "Baixe o arquivo", - "unknow_plugin_search" => "aplicações de pesquisa relacionados instalado", - "config_save_error_auth" => "Falha ao salvar a configuração, o administrador proibiu esse privilégio!", - "config_save_error_file" => "De erro, o arquivo não pode ser escrito!", - "beautify_code" => "código Formatter", - "convert_case" => "conversão caso", - "convert_upper_case" => "Convertida em maiúsculas", - "convert_lower_case" => "Convertida para minúsculas", - "editor_insert_time" => "Hora atual ", - "editor_md5" => " Criptografia Md5 ", - "editor_qrcode" => " Cadeia de código bidimensional ", - "editor_regx" => " Teste de expressão regular ", - "editor_chinese" => " Conversão simplificada ", - "editor_chinese_simple" => " Converter para Chinês Simplificado ", - "editor_chinese_traditional" => " Converter para chinês tradicional ", - "editor_base64" => "Codec Base64 ", - "editor_base64_encode" => " Codificação Base64 ", - "editor_base64_decode" => " Decodificação Base64 ", - "editor_url" => " Codec de URL ", - "editor_url_encode" => " Codificação de URL ", - "editor_url_decode" => " Descodificação de URL ", - "editor_unicode" => " Codec Unicode ", - "editor_unicode_encode" => " Codificação Unicode ", - "editor_unicode_decode" => " Descodificação Unicode", - "editor_tools_select_tips" => " Por favor, selecione o conteúdo que você deseja converter!", - "editor_calc" => "Calculadora Grátis", - "shortcut" => "Atalhos", - "use_free" => "Continuar a usar a versão gratuita", - "learn_more" => "Saiba mais", - "replace" => "substituir", - "selectAll" => "selecionar", - "reload" => "recarregar", - "about" => "em", - "complete_current" => "Auto-conclusão da actual", - "view" => "vista", - "tools" => "ferramenta", - "help" => "ajudar", - "not_exists" => "não existe", - "group_role_fileDownload" => "transferências", - "group_role_share" => "ação", - "users_share" => "compartilhando", - "system_setting_save" => "Configurações de segurança", - "system_setting_menu" => "gestão de menu", - "system_name" => "Nome do programa", - "system_name_desc" => "título logotipo do programa", - "system_desc" => "Descrição do programa", - "path_hidden" => "exclusões de diretório", - "version_not_support" => "A sua versão não suporta isso, por favor, vá para o site oficial para comprar a versão avançada!", - "version_not_support_number" => "Como o número de restrição não suporta esta operação, por favor compre a versão avançada do site oficial!", - "path_hidden_desc" => "Diretórios e arquivos por padrão não é exibido, separados por vírgulas", - "new_user_folder" => "O novo usuário é criado pelo diretório padrão", - "new_user_folder_desc" => "Separados por vírgulas", - "new_user_app" => "O novo usuário é criado por aplicativo padrão", - "new_user_app_desc" => "Aplicações Application Center, uma pluralidade de separados por vírgulas", - "auto_login" => "Visitantes de login automático", - "auto_login_desc" => "O login padrão do usuárioguest/guestusuários; após a abertura para garantir que o usuário existe", - "first_in" => "Após a autenticação no padrão", - "version_price_free" => "livre", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Diretório não é gravável, definir o diretório e todos os subdiretórios para tentar novamente após a leitura e escrita!", - "menu_name" => "nome do menu", - "menu_hidden" => "esconder", - "menu_show" => "exibição", - "menu_move_down" => "para baixo", - "menu_move_up" => "para cima", - "menu_move_del" => "excluir", - "menu_open_window" => "Abra uma nova janela", - "menu_sub_menu" => "Submenu", - "url_path" => "endereço de url", - "url_path_desc" => "endereço URL ou o código js", - "no_permission_read" => "Você não tem permissão para ler!", - "no_permission_download" => "Você não tem permissão para baixar!", - "php_env_check" => "Operando monitoramento ambiental:", - "php_env_error" => "Falta biblioteca Php", - "php_env_error_ignore" => "Ignorar e entrar", - "php_env_error_version" => "versão do PHP não pode ser inferior a 5.0", - "php_env_error_path" => "não gravável", - "php_env_error_list_dir" => "Seu servidor web abre o diretório de recursos listando por razões de segurança, desativar esse recurso!como?", - "php_env_error_gd" => "biblioteca php GD deve ser aberta, caso contrário, o código, use a miniatura não funcionará corretamente", - "install_login" => "Você pode usar o seguinte login da conta", - "install_enter" => "o sistema", - "install_user_default" => "Administrador: {0} / (abaixo de definir uma senha)
                    usuário médio: {1}
                    Os usuários convidados: {2}", - "login_root_password" => "Definir a senha do administrador", - "login_root_password_repeat" => "Confirmar senha novamente", - "login_root_password_equal" => "As duas senhas não são iguais!", - "login_root_password_tips" => "Defina uma senha de administrador!", - "forget_password" => "Esqueceu sua senha", - "forget_password_tips" => "Esqueceu a senha de administrador:
                    Faça login servidor eliminar ./data/system/install.lock redefinir;

                    Não-administrador Esqueceu a senha:
                    Entre em contato com o administrador para redefinir!", - "copyright_desc" => "Kodexplorer é um sistema de gerenciamento de documentos web altamente aclamado, você pode usá-lo para gerenciamento de documentos internos ou compartilhado, também pode ser usado no servidor de gerenciamento do site, substitua FTP, até mesmo como webIDE desenvolvimento diretamente online. Você também pode programar o segundo desenvolvimento para integrar isso em seus sistemas existentes.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango nuvem • Explorador", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango nuvem • Explorador", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, WebOS, webIDE, FileManage php, FileManage, Dao nuvem, manga nuvem, sistemas de gestão de documentos, disco Enterprise Cloud, explorador ,, documentação on-line, Office online, escritório online, visualização de CAD on-line, a edição on-line , editor on-line", - "kod_meta_description" => "KodExplorer pode obscurecer Road (anteriormente manga nuvem) é um fornecedor líder de governo / nuvens corporativas privadas e sistema de gerenciamento de documentos on-line para sites pessoais, implantações empresa nuvem privada, armazenamento de rede, gerenciamento de documentos on-line, escritório online para fornecer seguro e controlado, simples e fácil uso, altamente personalizado produtos de nuvem privada. Usando janelas interface de estilo, práticas operacionais, sem ter de se adaptar a começar rapidamente, suportar centenas de populares formato de arquivo de visualização on-line, reprodução e edição ambiente-friendly, poderoso, é um julgamento uma vez, eles já não fazer sem o privado ofertas de nuvem.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "log in", - "guest_login" => "Convidado Registre", - "username" => "Conta de login", - "userNickName" => "Sobrenome do usuário", - "password" => "senha", - "login_code" => "códigos", - "need_check_code" => "código de autenticação de login aberto", - "need_check_code_desc" => "Após o login, você deve inserir o código de verificação.", - "setting_csrf_protect" => "proteção aberta csrf", - "setting_csrf_protect_desc" => "Depois tipo de ataque pode proteger eficazmente csrf abertura", - "login_rember_password" => "Lembrar senha", - "setting_show_root_group" => "Listar todos os departamentos", - "setting_show_root_group_desc" => "Diretório de diretório de árvore, seja para listar todos os departamentos", - "setting_show_share_user" => "Uma lista de todos os usuários", - "setting_show_share_user_desc" => "O departamento raiz do diretório da árvore está listado para todos os compartilhamentos de usuários", - "setting_clear_user_recycle" => "Esvaziar a lixeira para todos os usuários", - "setting_clear_cache" => "Empty cache", - "setting_icp" => "Copyright ou registro número", - "setting_global_css" => "css personalizado mundial", - "setting_global_css_desc" => "Todas as páginas irá inserir CSS personalizado", - "setting_global_html" => "HTML código estatístico", - "setting_global_html_desc" => "Todas as páginas serão inseridas neste código html parágrafo, o código pode ser colocado estatísticas de terceiros", - "us" => "kodcloud.com", - "login_not_null" => "Nome de utilizador e palavra-passe não pode estar vazio!", - "code_error" => "Os códigos de erro", - "password_error" => "nome de usuário ou senha está incorreta!", - "password_not_null" => "A senha não pode estar vazio!", - "old_password_error" => "senha antiga está errado!", - "permission" => "Permissão!", - "permission_edit" => "modificar permissões", - "file_info_owner" => "proprietário", - "file_info_group" => "grupo", - "no_permission" => "Administrador desabilitou esse privilégio!", - "no_permission_ext" => "Administrador proibiu este tipo de permissões de arquivo", - "dialog_max" => "maximizar", - "dialog_min" => "minimizar", - "dialog_min_all" => "minimizar tudo", - "dialog_display_all" => "Mostrar todas as janelas", - "dialog_close_all" => "Feche todas as", - "open" => "aberto", - "others" => "outro", - "open_with" => "Aberto para ...", - "close" => "perto", - "close_all" => "Feche todas as", - "close_left" => "Feche a aba esquerda", - "close_right" => "Fechar guias à direita", - "close_others" => "Feche os outros", - "loading" => "Operação ...", - "warning" => "aviso", - "getting" => "Obter o ...", - "sending" => "A transmissão de dados ...", - "data_error" => "Erro de dados!", - "get_success" => "Obter sucesso!", - "save_success" => "salvo com sucesso!", - "success" => "operação bem sucedida", - "error" => "A operação falhou", - "error_repeat" => "A operação falhou, o nome já existe!", - "word_error" => "Falhou ", - "word_success" => " Sucesso", - "system_error" => "erro de sistema", - "name" => "nome", - "type" => "tipo", - "contain" => "conter", - "address" => "localização", - "size" => "tamanho", - "byte" => "byte", - "path" => "caminho", - "action" => "Operating", - "create_time" => "Criado", - "modify_time" => "modificada", - "last_time" => "Última Visita", - "sort_type" => "Classificar por", - "time_type" => "d/m/Y H:i:s", - "time_type_info" => "d/m/Y H:i:s", - "public_path" => "diretório público", - "system_path_not_change" => "diretório do sistema, não pode ser modificado", - "file" => "arquivo", - "folder" => "dobrador", - "copy" => "cópia", - "past" => "vara", - "clone" => "Criar uma cópia", - "cute" => "tosquiar", - "cute_to" => "Mover-se para ...", - "copy_to" => "Copiar para ...", - "remove" => "excluir", - "remove_force" => "remover completamente", - "info" => "propriedade", - "list_type" => "vista", - "list_icon" => "matriz ícone", - "list_list" => "arranjo lista", - "list_list_split" => "modo de coluna", - "sort_up" => "incremento", - "sort_down" => "decrescente", - "order_type" => "Classificar por", - "order_desc" => "descendente", - "order_asc" => "ascendente", - "rename" => "rebatizar", - "add_to_fav" => "Adicionar aos Favoritos", - "search_in_path" => "Pesquisa de pastas", - "add_to_play" => "Adicionar à Playlist", - "manage_fav" => "Gerenciar Favoritos", - "refresh_tree" => "árvore de diretórios de atualização", - "manage_folder" => "Gerenciamento de Diretório", - "close_menu" => "Fechar o menu", - "zip" => "Crie um pacote compactado", - "unzip" => "Para extrair ...", - "unzip_folder" => "Descompacte para uma pasta", - "unzip_this" => "Extrair para o actual", - "unzip_to" => "Para extrair ...", - "zipview_file_big" => "O arquivo é muito grande, e depois extrair a operação de pré-visualização!", - "clipboard" => "Ver área de transferência", - "clipboard_clear" => "Clipboard vazio", - "full_screen" => "tela cheia", - "folder_info_item" => "itens", - "folder_info_item_select" => "A seleccionado", - "file_load_all" => "Clique duas vezes para carregar todos ......", - "tips" => "pronto", - "ziping" => "Fechando ...", - "unziping" => "Extraindo ...", - "moving" => "operação móvel ...", - "remove_title" => "A confirmação da exclusão", - "remove_info" => "Confirmar para excluir o item selecionado?", - "remove_title_force" => "excluídos permanentemente", - "remove_info_force" => "Tem certeza de que deseja excluir permanentemente este documento?", - "name_isexists" => "Errado, o nome já existe!", - "install" => "instalar", - "width" => "largura", - "height" => "alto", - "app" => "Aplicações de luz", - "app_store" => "Aplicações de luz", - "app_create" => "Criar aplicativo", - "app_edit" => "Modificar o aplicativo", - "app_group_all" => "completo", - "app_group_game" => "jogo", - "app_group_tools" => "ferramenta", - "app_group_reader" => "ler", - "app_group_movie" => "televisão", - "app_group_music" => "música", - "app_group_life" => "vida", - "app_group_others" => "outro", - "app_desc" => "descrição", - "app_icon" => "ícone aplicativos", - "app_icon_show" => "endereço URL ou o diretório", - "app_group" => "pacote de aplicativos", - "app_type" => "tipo", - "app_type_url" => "link", - "app_type_code" => "extensão js", - "app_display" => "exterior", - "app_display_border" => "Sem fronteiras (ou seja, seleccionar sem fronteiras)", - "app_display_size" => "Redimensionar (Verifique a ajustamento)", - "app_size" => "tamanho", - "app_url" => "endereço do link", - "app_code" => "código de js", - "edit" => "editar", - "edit_can_not" => "Não é um arquivo de texto", - "edit_too_big" => "Arquivo é muito grande, não pode ser superior a 40M", - "open_default" => "padrão Aberto", - "open_ie" => "Abra o navegador", - "refresh" => "refrescar", - "refresh_all" => "Forçar uma atualização", - "newfile" => "novo arquivo", - "newfile_save_as" => "salvar a", - "newfolder" => "nova pasta", - "newothers" => "novo outras", - "path_loading" => "Carregando ...", - "go" => "Andar!", - "go_up" => "camada superior", - "history_next" => "para a frente", - "history_back" => "retiro", - "address_in_edit" => "Clique para entrar no modo de edição", - "double_click_rename" => "Clique duas vezes a mudança de nome", - "double_click_open" => "Dê um duplo clique para abrir", - "path_null" => "Pasta está vazia!", - "file_size_title" => "ícone Tamanho", - "file_size_small_super" => "Ultra-pequenas", - "file_size_small" => "ícones pequenos", - "file_size_default" => "ícones", - "file_size_big" => "Ícones grandes", - "file_size_big_super" => "Grande Ícone", - "upload" => "Carregar", - "upload_ready" => "À espera de carregamento", - "upload_success" => "carregado com sucesso", - "upload_path_current" => "Mude para o diretório atual", - "upload_select" => "Selecione Arquivo", - "upload_max_size" => "O máximo permitido", - "upload_size_info" => "Se você quiser configurar mais, por favor modifique máxima php.ini carregamento permitido. Quando você seleciona um arquivo maior do que esta configuração irá filtrar automaticamente.", - "upload_error" => "O carregamento falhou", - "upload_error_http" => "Erros de rede ou firewall", - "upload_muti" => "Upload de vários arquivos", - "upload_drag" => "Arrastar e soltar de upload", - "upload_drag_tips" => "Solte para carregar!", - "path_not_allow" => "O nome do arquivo não permitidos", - "download" => "baixar", - "downloading" => "Carregando ...", - "download_address" => "baixar", - "download_ready" => "Será baixado", - "download_success" => "Baixar sucesso!", - "download_error" => "Falha no download!", - "download_error_create" => "erro de gravação!", - "download_error_exists" => "Link para arquivo falhou!", - "upload_error_null" => "No arquivo!", - "upload_error_big" => "tamanho do arquivo excede os limites de servidor", - "upload_error_move" => "Falha ao mover arquivo!", - "upload_error_exists" => "O arquivo já existe", - "upload_local" => "Carregar local", - "download_from_server" => "remoto Baixar", - "save_path" => "save Path", - "upload_select_muti" => "Uma pluralidade de upload de arquivo selecionáveis", - "search" => "pesquisa", - "searching" => "Busca ...", - "search_result" => "resultados da pesquisa", - "seach_result_too_more" => "Muitos resultados de busca, é recomendado para um diretório ou palavras", - "search_null" => "Nenhum resultado!", - "search_uplow" => "maiúsculas de minúsculas", - "search_content" => "o conteúdo do arquivo de busca", - "search_info" => "Por favor insira um termo de pesquisa e caminhos de busca!", - "search_ext_tips" => "Por | separados, por exemplo php | js | css
                    não preencher a pesquisa de arquivo de texto padrão", - "file_type" => "Tipo de arquivo", - "goto" => "Ir para", - "server_dwonload_desc" => "Tarefa foi adicionado à lista de download", - "parent_permission" => "permissões diretório pai", - "root_path" => "meus Documentos", - "lib" => "armazém", - "fav" => "Bookmark", - "desktop" => "Área de Trabalho", - "browser" => "navegador", - "my_computer" => "meu computador", - "recycle" => "lixo", - "my_document" => "meus Documentos", - "my_picture" => "As minhas fotos", - "my_music" => "My Music", - "my_movie" => "Os meus vídeos", - "my_download" => "meus downloads", - "ui_desktop" => "Área de Trabalho", - "ui_explorer" => "gerenciador de arquivos", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "Home Project", - "ui_login" => "log in", - "ui_logout" => "desistir", - "setting" => "Configurações do sistema", - "setting_title" => "opções", - "setting_user" => "Centro de pessoal", - "setting_password" => "Change Password", - "setting_password_old" => "Senha antiga", - "setting_password_new" => "revisto para", - "setting_language" => "Configurações de idioma", - "setting_member" => "Gerenciamento de usuários", - "setting_group" => "gestão de grupo de usuários", - "setting_group_add" => "Adicionar User Group", - "setting_group_edit" => "Editar grupos de usuários", - "setting_theme" => "Definições de tema", - "setting_wall" => "Configurações do papel de parede", - "setting_wall_desktop" => "Papel de parede", - "setting_wall_desktop_list" => "Desktop Wallpaper Management", - "setting_wall_login_list" => "Login Wallpaper Management", - "setting_wall_login_tips" => "Dica: quando houver mais de uma peça, o plano de fundo da interface de login será rotacionado aleatoriamente", - "setting_wall_diy" => "papel de parede personalizado:", - "setting_wall_info" => "Imagem endereço de URL, as imagens locais podem estar certo de obter o navegador para abrir a imagem", - "setting_fav" => "Bookmark Gestor", - "setting_help" => "usando a Ajuda", - "setting_about" => "Sobre obras", - "setting_success" => "Modificação teve efeito!", - "can_not_repeat" => "Não é permitido repetir", - "absolute_path" => "endereço absoluto", - "group" => "Grupos de usuários", - "data_not_full" => "Os dados apresentados incompletos!", - "default_user_can_not_do" => "O usuário padrão não pode operar", - "default_group_can_not_do" => "grupos de usuários padrão não podem operar", - "username_can_not_null" => "Nome de usuário não pode estar vazio!", - "groupname_can_not_null" => "nome do grupo do usuário não pode estar vazio!", - "groupdesc_can_not_null" => "Grupo de Usuários A descrição não pode estar vazio!", - "group_move_user_error" => "Os usuários do grupo de usuários mover falhou", - "group_already_remove" => "O grupo de usuários foi excluído", - "group_not_exists" => "Este grupo de usuário não existe", - "member_add" => "Adicionar Usuário", - "password_null_not_update" => "Eles disseram que não alterar a senha não foi preenchido", - "if_save_file_tips" => "Alguns arquivos não são salvos. Tem certeza de fechar a janela?", - "if_save_file" => "Arquivo não tiver sido salvo, você quer salvar?", - "if_remove" => "confirmar Apagar", - "member_remove_tips" => "Depois de remover o diretório do usuário serão apagados", - "group_remove_tips" => "Depois de remover o grupo de usuários de usuários não podem log
                    (necessidade de re-definir grupo de usuários)", - "group_name" => "Nome do grupo de usuários", - "group_name_tips" => "Recomendação nome em Inglês, não pode ser repetido", - "group_desc" => "Display Name", - "group_desc_tips" => "Nome do Grupo Descrição", - "group_role_ext" => "restrições de extensão", - "group_role_ext_tips" => "Com múltiplos | separados", - "group_role_file" => "gerenciador de arquivos", - "group_role_upload" => "permitir o envio", - "group_role_user" => "Os dados do usuário", - "group_role_group" => "gestão de grupo de usuários", - "group_role_member" => "Gerenciamento de usuários", - "group_role_mkfile" => "novo arquivo", - "group_role_mkdir" => "nova pasta", - "group_role_pathrname" => "rebatizar", - "group_role_pathdelete" => "exclusão do arquivo", - "group_role_pathinfo" => "Propriedades do arquivo", - "group_role_pathmove" => "Move (copiar / cortar / colar / operação de arrastar)", - "group_role_zip" => "compressão", - "group_role_unzip" => "Descompacte", - "group_role_search" => "pesquisa", - "group_role_filesave" => "Salve o arquivo para editar", - "group_role_can_upload" => "Upload e download", - "group_role_download" => "remoto Baixar", - "group_role_passowrd" => "Change Password", - "group_role_config" => "Os dados de configuração", - "group_role_fav" => "operações Bookmark (Adicionar / editar / apagar)", - "action_list" => "Ver lista", - "action_add" => "adicionar", - "action_edit" => "editar", - "action_del" => "excluir", - "group_role_ext_warning" => "Upload não permitir que tais arquivos,
                    Rename (renomeado para a extensão especificada),
                    Edit salvar, fazer download remoto, extrato de", - "group_tips" => "
                  8. 1. O nome do grupo de usuários não pode ser duplicado Depois que o nome do grupo é modificado, ele pertence ao usuário reorganizado e é associado automaticamente.
                  9. 2. Extensões limitam a relação entre a segurança do sistema, por favor, seja cauteloso (se você criar um novo php no diretório web, isso significa que a mudança de permissões do programa para este usuário é praticamente impossível)
                  10. 3. Gerenciamento doméstico, gerenciamento de grupo de direitos, direitos de visualização e adição, exclusão e modificação de direitos estão vinculados, programas são automaticamente associados
                  11. 4. Depois que o grupo de permissões estiver definido para adicionar o grupo de permissões, a permissão subseqüente não será herdada (essa permissão é equivalente à permissão mais alta).
                  12. ", - "not_null" => "Os campos obrigatórios não pode estar vazio!", - "picture_can_not_null" => "Fotos não pode estar vazio!", - "rname_success" => "Renomeie sucesso!", - "please_inpute_search_words" => "Por favor insira uma seqüência de pesquisa para", - "remove_success" => "Apagado com sucesso!", - "remove_fali" => "Excluir falhou!", - "clipboard_null" => "Clipboard está vazio!", - "create_success" => "Novo sucesso!", - "create_error" => "New falhar, verifique as permissões do diretório!", - "copy_success" => "[Copy] - cobrindo sucesso prancheta!", - "cute_success" => "[Corte] - cobrindo sucesso prancheta!", - "clipboard_state" => "status de área de transferência:", - "no_permission_write_all" => "O arquivo ou pasta não é gravável", - "no_permission_write_file" => "O arquivo não tem permissão de escrita", - "no_permission_read_all" => "O arquivo ou diretório não tem permissão de leitura", - "copy_not_exists" => "Fonte não existe", - "current_has_parent" => "pasta de destino é uma subpasta da pasta de origem!", - "past_success" => "operação colar for concluída", - "cute_past_success" => "operação de corte é completado(arquivo de origem for excluído, a prancheta vazia)", - "zip_success" => "compressão concluída", - "not_zip" => "não arquivo", - "zip_null" => "Não seleccionado arquivo ou diretório", - "unzip_success" => "descompacte completa", - "gotoline" => "Ir para a linha", - "path_is_current" => "O caminho eo caminho atual para abrir o mesmo!", - "path_exists" => "O nome já existe!", - "undo" => "revogação", - "redo" => "revogação anti", - "preview" => "visualização", - "wordwrap" => "envoltório", - "show_gutter" => "Mostrar números de linha", - "char_all_display" => "Mostrar caracteres invisíveis", - "auto_complete" => "solicita automaticamente", - "auto_save" => "Salvar automaticamente", - "function_list" => "Lista de funções", - "code_theme" => "Coding Estilo", - "font_size" => "Tamanho da fonte", - "confirm" => "Tem certeza de que deseja fazer isso?", - "button_ok" => "determinar", - "button_submit" => "submeter", - "button_set" => "estabelecer", - "button_cancel" => "cancelado", - "button_edit" => "editar", - "button_save" => "Guardar", - "button_apply" => "Aplicar", - "button_save_all" => "Salvar tudo", - "button_not_save" => "Não salvar", - "button_add" => "adicionar", - "button_back_add" => "Voltar para adicionar", - "button_del" => "excluir", - "button_save_edit" => "salvar alterações", - "button_save_submit" => "salve Submeter", - "button_more" => "mais", - "button_select_all" => "Selecionar tudo Seleção / Inverter", - "charset_AUTO" => "Identificação automática", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "árabe", - "charset_ISO_8859_6" => "árabe", - "charset_ISO_8859_10" => "línguas nórdicas", - "charset_CP1257" => "línguas bálticas", - "charset_ISO_8859_13" => "línguas bálticas", - "charset_ISO_8859_4" => "línguas bálticas", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgiano", - "charset_PT154" => "Kazakh", - "charset_CP949" => "coreano", - "charset_EUC_KR" => "coreano", - "charset_GB18030" => "chinês simplificado", - "charset_GBK" => "chinês simplificado", - "charset_ISO_8859_14" => "celta", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "romeno", - "charset_ISO_8859_3" => "Europeu do Sul", - "charset_EUC_JP" => "japonês", - "charset_ISO_2022_JP" => "japonês", - "charset_SHIFT_JIS" => "japonês", - "charset_KOI8_T" => "linguagem Tajik", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "turco", - "charset_CP1251" => "cirílico", - "charset_ISO_8859_5" => "cirílico", - "charset_KOI8_R" => "cirílico", - "charset_KOI8_U" => "cirílico", - "charset_CP1252" => "línguas da Europa Ocidental", - "charset_ISO_8859_1" => "línguas da Europa Ocidental", - "charset_ISO_8859_15" => "línguas da Europa Ocidental", - "charset_Macintosh" => "línguas da Europa Ocidental", - "charset_CP1255" => "hebraico", - "charset_ISO_8859_8" => "hebraico", - "charset_CP1253" => "grego", - "charset_ISO_8859_7" => "grego", - "charset_ARMSCII_8" => "armênio", - "charset_CP1258" => "vietnamita", - "charset_VISCII" => "vietnamita", - "charset_CP1250" => "línguas da Europa Central", - "charset_ISO_8859_2" => "línguas da Europa Central", - "charset_default_set" => "Codificação do arquivo", - "charset_convert_save" => "Salve o arquivo codificado como", - "PluginCenter" => "centro plugue", - "PluginBuy" => "Autorização de compra", - "PluginInstalled" => "Foi instalado", - "PluginUpdate" => "atualizar", - "PluginListNull" => "Não há nenhum conteúdo!", - "PluginType" => "classificação", - "PluginTypeAll" => "completo", - "PluginTypeFile" => "arquivo reforçada", - "PluginTypeSafe" => "Ferramentas de segurança", - "PluginTypeTools" => "utilidade", - "PluginTypeMedia" => "multimídia", - "PluginTypeOthers" => "outro", - "PluginInstall" => "instale o bujão", - "PluginEnable" => "Ativar plug-ins", - "PluginDisable" => "incapacitar", - "PluginRemove" => "Desinstalar o plug", - "PluginConfig" => "Configurar o plugin", - "PluginStatus" => "estado", - "PluginStatusEnabled" => "Ativado", - "PluginStatusDisabled" => "não habilitado", - "PluginStatusNotInstall" => "não instalado", - "PluginInstalling" => "Instalação ...", - "PluginHasUpdate" => "atualizações", - "PluginUpdateStart" => "Atualização de plug-in", - "PluginNeedConfig" => "A necessidade de permitir que a configuração inicial", - "PluginConfigNotNull" => "Campos obrigatórios não pode estar vazio!", - "PluginOpen" => "aberto", - "PluginAuther" => "autor", - "PluginVersion" => "edição", - "PluginDownloadNumber" => "Instala", - "PluginBack" => "retorno", - "PluginReadme" => "descrição", - "PluginResetConfig" => "Restaurar as configurações padrão", - "PluginInstallSelf" => "Instalação manual", - "Plugin.config.auth" => "permissões", - "Plugin.config.authDesc" => "Todas as configurações disponíveis, ou especificar os usuários, grupos de usuários, grupos de direitos pode usar", - "Plugin.config.authOpen" => "Acesso aberto", - "Plugin.config.authOpenDesc" => "Não é possível acessar uma visita, pode ser usada para chamada de interface externa", - "Plugin.config.authAll" => "titular", - "Plugin.config.authUser" => "usuário", - "Plugin.config.authGroup" => "Departamento designado", - "Plugin.config.authRole" => "grupo de direitos", - "Plugin.Config.openWith" => "estilo aberto", - "Plugin.Config.openWithDilog" => "diálogo interno", - "Plugin.Config.openWithWindow" => "A nova página abre", - "Plugin.Config.fileSort" => "prioridade associação de extensão", - "Plugin.Config.fileSortDesc" => "Quanto maior a extensão para abrir maior prioridade", - "Plugin.Config.fileExt" => "Formatos de arquivo suportados", - "Plugin.Config.fileExtDesc" => "Extensão associado ao plug-in", - "Plugin.tab.basic" => "Configurações básicas", - "Plugin.tab.auth" => "permissões", - "Plugin.tab.others" => "outras definições", - "Plugin.default.aceEditor" => "editor de Ace", - "Plugin.default.htmlView" => "Visualizar página Web", - "Plugin.default.picasa" => "Picasa navegação de imagem", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jogador JPlayer", - "Plugin.auth.viewList" => "Lista de complementos", - "Plugin.auth.setting" => "Configurações do plugin", - "Plugin.auth.status" => "Desligar", - "Plugin.auth.install" => "Instalar / desinstalar", - "Explorer.UI.openWith" => "selecione Abrir", - "Explorer.UI.openWithText" => "Bloco de notas para abrir", - "Explorer.UI.appSetDefault" => "Definir o padrão aberto", - "Explorer.UI.appAwaysOpen" => "Sempre usar o programa selecionado para abrir este arquivo", - "Explorer.UI.selectAppDesc" => "Selecione o programa que deseja abrir este arquivo", - "Explorer.UI.selectAppWarning" => "Por favor, selecione o aplicativo!", - "Explorer.UI.appTypeSupport" => "Suportado", - "Explorer.UI.appTypeAll" => "Todas as aplicações", - "kodApp.oexe.edit" => "Editar aplicação de luz", - "kodApp.oexe.open" => "Abra o aplicativo de luz" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ro/about.html b/plugin/document/kod/config/i18n/ro/about.html deleted file mode 100644 index 4ea58000b..000000000 --- a/plugin/document/kod/config/i18n/ro/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer este ce?
                    -

                    KODExplorer este un web-based open source de management al documentelor on-line, cod editor. Acesta oferă un fel de ferestre clasice interfață cu utilizatorul, un set de management al documentelor on-line, previzualizare fișier, edita, încărcați, descărcați, redarea de muzică on-line unzip. Vă permite să ajungă la o dezvoltare web direct în browser-ul, codul sursă previzualizare fișier, și implementați proprietarul site-ului și funcționarea locale la fel de ușor, rapid și experiență în condiții de siguranță.

                    -

                    - proiectare -

                    -

                    tradiția clasică, urmărirea inovației, pentru a oferi utilizatorilor cu convenabil, sigur și ușor de utilizat sistem de management nor on-line.

                    -

                    ori de câte ori (când), în cazul în care (unde), are Web ori de câte ori doriți (doriți) este instrumentul dvs. de management (4W politică).

                    -

                    - orientată către utilizator -

                    -

                    în prezent, sistemul de management al KODExplorer situat în principal în personal nor hosting, mici management al întreprinderii nor resurselor, managementul disc de rețea, gestionarea de site-uri mici și mijlocii. Web Developer & Master (veterani): editor on-line, de backup comprimat, implementare, clasic de operare cu interfata ferestre, ușor pentru a începe și a scăpa de SSH-gazdă, comanda ftp foraj complexe.

                    -

                    personal nor privat (începător): resurse disc de rețea de gestionare, aceeași operațiune de interfață ferestre clasice, puteți plasa unitatea de muzică parcurge rețeaua, fișierele de ecran, încărcarea și descărcare rapidă și ușoară.

                    -
                    - -
                    -
                    Caracteristici
                    -

                    cuprinzător de management de documente, puternic editor de fișiere on-line

                    -

                    oriunde vă aflați, puteți gestiona fișierele și de divertisment on-line, cod scris on-line! La fel ca și adecvat pentru utilizare ca sistemul de operare.

                    -

                    extinse de operare locale de transplant de experiență dreapta, trageți, caseta de selecție, comenzi rapide, căutare fișier (conținut de căutare) ......

                    -

                    caseta de selecție, trageți-mișcare, drag and drop încărcarea, editor on-line, video player, decomprima. performanțe complete de garanție și experiență ajax!

                    -

                    fiecare funcție de conexiune directă fără sudură, în formă de dialog, funcții de management multi-task

                    -

                    Editor acceptă mai multe documente; suport ZendCoding html, css, js mai mare eficiență de codificare!

                    -

                    perfectă de sprijin din China, rezolva diferite situații deformate;

                    -
                    - -
                    -
                    open source adoptare tehnologie
                    -

                    1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js cadru de dezvoltare de masă. Funcționare a operațiunii Dom, BOM, operarea css, și pachetul Ajax

                    -

                    2.ArtDialog:un design frumos, puternic browser-ul de compatibilitate widget de dialog. Așa că pop-up mâner, evenimente, precum și transmiterea de date pentru a obține o mai bună gestionare a unificat

                    -

                    3.Ztree:lista de control copac, scalabilitate este foarte puternic widget date de arbore de manipulare

                    -

                    4.codemirror:un editor de cod js plugin-uri, suportă o varietate de limbaje de programare pentru evidențierea

                    -

                    5.zendcoding:un suport de coduri html rapid scrie plug-in-uri. Facilitează definiția codului este scris. compilare simplă

                    -

                    6.less:un model eficient, funcțional de dezvoltare css pentru a îmbunătăți capătul frontal stylesheets css posibilitatea de reutilizare . compilare simplă

                    -

                    7.SWFUpload:fișier flash de încărcare

                    -

                    8 .CMP4:un flash player foarte bun plugin fișiere media, suport pentru streaming media, popular instrument de redare video de muzică. Suport pentru piele, setări foarte configurabile. Lista dinamică XML încărcate. mms de streaming media, RSTP open source licență de suport redare media

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ro/edit.html b/plugin/document/kod/config/i18n/ro/edit.html deleted file mode 100644 index e9c39b816..000000000 --- a/plugin/document/kod/config/i18n/ro/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    funcționalitate bogat

                    -

                    cod este automată și promptă

                    -

                    multi-subiect: alege stilul tau preferat de programare

                    -

                    fonturi personalizate: pentru următoarea scenă folosind

                    -

                    mai editare cursor, editare bloc, etc. comparabil cu experiența sublimă a programării on-line

                    -

                    bloc sa prăbușit, se extinde; înfășurați

                    -

                    suport pentru mai multe file, trageți secvența de comutare;

                    -

                    menținând mai multe documente, găsiți și să înlocuiți; istorie;

                    -

                    auto-complete [], {}, (), "", ""

                    -

                    online, previzualizare în timp real, care vă permite să se încadrează în dragoste cu programare on-line!

                    -

                    suport zendcodeing, scrie cod optzeci

                    -

                    mai multe caracteristici de așteptare pentru descoperirea ta ......

                    -
                    -
                    -

                    150 cod Duozhong subliniind

                    -

                    sfat: HTML, JavaScript, css, mai puțin, Sass, SCSS

                    -

                    de dezvoltare web: php, perl , Python, rubin, Elang, du-te ...

                    -

                    limbi tradiționale: Java, C, C ++, C #, ActionScript, VBScript ...

                    -

                    altele: markdown, coajă, sql, Lua, XML, YAML ...

                    -
                    -
                    -
                    -
                    -

                    taste de comenzi rapide

                    -
                    taste de comenzi rapide utilizate în mod curent: 
                    - ctrl + pentru a salva 
                    - ctrl + o selectați toate ctrl + x forfecare tăiat 
                    - ctrl + c pentru a copia Ctrl + V pentru a lipi 
                    - ctrl + z undo Ctrl + y revocare anti 
                    - ctrl + f pentru a găsi ctrl + f + f pentru a înlocui 
                    - câștiga + alt + 0 colaps toate câștiga + Alt + Shift + 0 extinde toate 
                    - esc [căutare de ieșire anulat automat solicită ...] 
                    - ctrl-shift-uri previzualizare 
                    - Ctrl-shift-e spectacol & Închide funcția 
                    -
                    -
                    selecție: 
                    - mouse-cadru de selecție - trageți 
                    - shift + home / terminare / sus / stânga / jos / dreapta 
                    - schimbare + PageUp / PageDown flip-sus și în jos pentru a selecta 
                    - CTRL + sHIFT + acasă / sfârșitul cursorului curent la începutul și la sfârșitul 
                    - alt + mouse-ul pentru a trage de selecție bloc 
                    - Ctrl + Alt + g lot selectați și introduceți actualul editor multi-tab 
                    -
                    -
                    cursorului: 
                    - home / terminare / sus / stânga / jos / dreapta 
                    - ctrl + acasă / terminare a cursorului documentul Preferințe / coada 
                    - ctrl + p Salt la potrivire tag-ul 
                    - PageUp / PageDown cursor în sus și în jos 
                    - Alt + stânga / dreapta cursorului pentru a trece la partea de sus a liniei 
                    - shift + stânga / dreapta pentru a muta cursorul la începutul și sfârșitul anului 
                    - ctrl + l Salt la linia specificată 
                    - Ctrl + Alt + sus / jos pe (de mai jos) crește cursorul 
                    -
                    -
                    editor: 
                    - ctrl + / comment & Ctrl + Alt + decomentați o la stânga și la dreapta alinia 
                    - schimbare de aliniere filă tabel + tabel tabel de avansare generală 
                    - șterge șterge ctrl + d pentru a șterge întreaga linie 
                    - ctrl + șterge pentru a șterge rândul pe cuvântul dreapta 
                    - Ctrl / shift + Backspace pentru a șterge cuvântul din partea stângă 
                    - Alt + shift + sus / jos copie și se adaugă la linia (de mai jos) se confruntă cu 
                    - alt + șterge pentru a șterge conținutul dreapta cursorului 
                    - Alt + sus / jos 
                    - CTRL + sHIFT + rânduri d copiat și se adaugă la următoarea 
                    - ctrl linia curentă și linia (schimb linia următoare) + șterge elimina dreptul cuvântului 
                    - ctrl Shift + + u convertit la litere mici 
                    - Ctrl + U textul selectat în majuscule 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/ro/help.html b/plugin/document/kod/config/i18n/ro/help.html deleted file mode 100644 index 861d24050..000000000 --- a/plugin/document/kod/config/i18n/ro/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    file Management
                    -

                    Selecție fișier: radio, cadru de selecție al mouse-ului, Shift-alegeri, ctrl ales la întâmplare, tastatura în sus și în jos, acasă, selecția finală.

                    -

                    operațiune de fișier: După selectarea unui fișier, puteți copia, tăia, șterge, vizualiza proprietățile de compresie, redenumi, deschide Examinare și alte operațiuni ......

                    -

                    File Upload: Încarcă mai multe fișiere de lot; trageți de încărcare html5 (trageți pentru a încărca perfect fereastră, drag and drop de sprijin pentru dosare)

                    -

                    Funcția dreapta: dreapta-fișier, dosar, dreapta, mai mult dreapta după operație alegeri, desktop, dreapta, copac director dreapta, comenzi rapide de dreapta meniu legat
                    - (Select All - Copiere - Cut - Paste - Delete - Redenumire, set ......)

                    -

                    File Browser: Mod List, modul de pictograme dublu-clic în sub-dosare; operarea barei de adrese, deschide un record contrarian record de dosar (înainte și înapoi)

                    -

                    Suport drag and drop: Verificați trageți, tăiate pentru a realiza funcția de director specificat

                    -

                    Taste de comenzi rapide: șterge șterge, Ctrl + A Selectați All, ctrl + C pentru a copia, + X Cut, căutare fișier (conținut de căutare) ctrl

                    -
                    -
                    -
                    Previzualizare fișier
                    -

                    Previzualizare fișier: vizualizarea conținutului unui fișier de editare de text și salvarea; HTML, previzualizare fișier SWF,

                    -

                    Previzualizare Imagine: generarea automată a miniaturi, imagini slide show;

                    -

                    Redare audio: reda muzică on-line și fișiere video; suport mp3, wma, la mijlocul anului, aac, wav, mp4,

                    -

                    Video: redare video online, formatele suportate: FLV, F4V, 3gp

                    -

                    birou: birou Online Previzualizare, formate de: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    Comenzile rapide
                    -

                    introduceți deschis

                    -

                    ctrl + select toate

                    -

                    ctrl + c pentru a copia selectată

                    -

                    ctrl + v pentru a lipi

                    -

                    ctrl + x Cut

                    -

                    ctrl + f pentru a căuta directorul curent

                    -

                    Alt + n nou fișier

                    -

                    Alt + m Dosar nou

                    -

                    Sterge Șterge selectat

                    -

                    backspace Înapoi

                    -

                    ctrl + backspace inainte

                    -

                    Redenumire selectat f2 (dosar)

                    -

                    home / end / sus / jos / stânga / dreapta pentru a selecta fișierul

                    -

                    Anykey Verificați să apăsați prima literă a fișierelor de caractere și foldere selectate ciclu automat

                    -
                    diff --git a/plugin/document/kod/config/i18n/ro/main.php b/plugin/document/kod/config/i18n/ro/main.php deleted file mode 100644 index a437a78a7..000000000 --- a/plugin/document/kod/config/i18n/ro/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Vă rugăm să selectați fișierul ...", - "path_api_select_folder" => "Vă rugăm să selectați un dosar ...", - "path_api_select_image" => "Vă rugăm să selectați o imagine ...", - "share_can_upload" => "Se permite de încărcare", - "move_error" => "Mutarea nu a reușit", - "setting_basic" => "Setări de bază", - "setting_user_sound_open" => "Deschideți sunet", - "setting_user_animate_open" => "Deschideți Animație", - "recycle_open_if" => "Deschide Coșul de reciclare", - "recycle_open" => "deschis", - "setting_user_recycle_desc" => "După ștergerea vor fi șterse ștergerea fizică directă", - "setting_user_animate_desc" => "Deschide fereastra și alte animații", - "setting_user_sound_desc" => "Sunet de funcționare", - "setting_user_imageThumb" => "Miniaturi de imagini", - "setting_user_imageThumb_desc" => "O mai bună experiență de navigare după deschidere", - "setting_user_fileSelect" => "Deschideți verificarea pictogramei fișierului", - "setting_user_fileSelect_desc" => "Pictograma fișierului verificați cheia stânga, faceți clic dreapta pe meniul de comandă rapidă din meniu", - "qrcode" => "URL-QR code", - "theme_mac" => "Mac alb minimalist", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Albastru Clasic", - "theme_metro_green" => "Metro lumină verde", - "theme_metro_purple" => "Metro elegant violet", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro portocaliu strălucitor", - "theme_alpha_image" => "Luminoase - zboară", - "theme_alpha_image_sun" => "Luminos - Apus de soare", - "theme_alpha_image_sky" => "Simfonie - Blue Sky", - "theme_diy" => "personalizat", - "theme_diy_title" => "Setări temă personalizată", - "theme_diy_background" => "fundal", - "theme_diy_image" => "imagine", - "theme_diy_color_blur" => "culoare gradientului", - "theme_diy_image_blur" => "Imaginea estompa", - "theme_diy_image_url" => "adresă fotografiilor", - "theme_diy_color_start" => "culoarea de pornire", - "theme_diy_color_end" => "Sfârșitul de culoare", - "theme_diy_color_radius" => "unghi de gradient", - "system_role_admin_set" => "Administratorii au toate drepturile, fără a stabili!", - "login_error_user_not_use" => "Utilizatorul a fost dezactivat! Vă rugăm să contactați administratorul", - "login_error_kod_version" => "un conflict versiune", - "login_error_role" => "grup Vezi permisiunile nu există, vă rugăm să contactați administratorul", - "no_permission_group" => "Tu nu ești în acest grup!", - "no_permission_write" => "Directorul nu are permisiunea de a scrie", - "user" => "utilizator", - "save_as" => "Save as", - "check_update" => "actualizare", - "keyboard_type" => "Mod tastatură", - "font_family" => "Fonturi", - "code_mode" => "syntax highlighting", - "path_can_not_share" => "Suportă accesul numai propriile documente!", - "path_can_not_action" => "Acest director nu acceptă această operațiune!", - "wap_page_pc" => "Versiune pentru PC", - "wap_page_phone" => "mobil", - "image_size" => "dimensiuni imagine", - "no_permission_action" => "Nu aveți această permisiune, vă rugăm să contactați administratorul!", - "path_is_root_tips" => "Ea a ajuns la directorul rădăcină!", - "kod_group" => "organizație", - "my_kod_group" => "Sunt în departament", - "space_tips_default" => "(GB) 0 nici o limită", - "space_tips_full" => "Fără a limita", - "space_size" => "spațiu", - "space_size_use" => "Utilizarea spațiului", - "space_is_full" => "Nu mai este suficient spațiu, contactați administratorul!", - "system_open_true_path" => "Cu succes a fost deschisă în managerul de fișiere!", - "group_role_error" => "Eroare permisiuni de rol (fără setări de permisiune)", - "group_role_error_admin" => "permisiuni insuficiente", - "markdown_content" => "Cuprins Cuprins", - "system_group" => "Utilizatori și departamente", - "system_group_edit" => "Managementul departamentului", - "system_group_role" => "identitatea rol", - "system_group_create" => "Un nou departament", - "system_group_name" => "Numele departamentului", - "system_group_father" => "Serviciul superior", - "system_group_add" => "Adăugați un departament", - "system_group_remove" => "Scoateți departamentul", - "system_group_remove_tips" => "Sigur ștergeți departamentul?
                    După ștergerea părții utilizatorului va fi eliminată, subsectorul sa mutat în sectorul rădăcinilor", - "system_group_select" => "Selectați departamentul", - "system_group_select_result" => "Membrii vor aparține următoarelor sectoare", - "system_role_admin_tips" => "Observații: administratorii de sistem nu sunt autorizați să controleze", - "system_member_action" => "Managementul utilizator", - "system_member_add" => "utilizator nou", - "system_member_role" => "rolurile de permisiuni", - "system_member_role_select" => "selecta", - "system_member_password_tips" => "Nu umple nu a modificat", - "system_set_home_path" => "Catalog personalizat", - "system_set_home_path_tips" => "Directorul implicit este gol", - "system_member_group" => "În cazul în care departamentul", - "system_member_group_edit" => "Editorial departament", - "system_member_remove" => "ştergeţi utilizatorul", - "system_member_remove_tips" => "Confirmați utilizator doriți să ștergeți?
                    după ce eliminați directorul de utilizator va fi complet șterse", - "system_member_set_role" => "Pentru a confirma schimbarea permisiunile grupului utilizator selectate?", - "system_member_remove_group" => "Determina utilizatorul selectat va fi eliminat din acest grup?", - "system_member_import" => "adăugare în vrac", - "system_member_import_desc" => "Un singur utilizator pe linie,
                    există deja sunt ignorate în tăcere", - "system_member_use" => "permite", - "system_member_unuse" => "nu fi de acord", - "system_member_space" => "Setați dimensiunea spațiului utilizatorului ", - "system_member_space_tips" => " Setați dimensiunea spațiului utilizatorului ", - "system_member_space_number" => " Trebuie să fie un număr!", - "system_member_group_config" => "Proiectare departament", - "system_member_group_remove" => "Eliminat din departament", - "system_member_group_insert" => "Adăugați la departament", - "system_member_group_reset" => "Resetați departamentul", - "system_member_group_error" => "Eroare la departament", - "system_group_action" => "Managementul departamentului", - "system_role_add" => "Adauga o Identitate Rol", - "system_role_read" => "Read-only", - "system_role_write" => "Se poate citi și scrie", - "system_setting_root_path" => "acces Root", - "system_setting_root_path_desc" => "Numai un administrator de sistem poate avea acces la toate directoarele, grupurile de alte drepturi de utilizatori pot vedea doar propriul lor director de utilizator. Dacă doriți să activați sau să dezactivați accesul administratorului
                    la alte directoare, puteți modifica parametrii PHP open_basedir anti-cross-site,set", - "system_group_role_title" => "Gestiunea rolului autorităților departamentale", - "system_group_role_remove" => "OK pentru a șterge rolul departamentului", - "system_group_role_style" => "stil", - "system_group_role_display" => "dacă", - "system_group_role_display_desc" => "Stabiliți dacă doriți sau nu să afișați drepturi de utilizator ale departamentului", - "role_type_name_read" => "citit", - "role_type_name_read:list" => "Listă de fișiere", - "role_type_name_read:info" => "Fișier (director) proprietate View, căutare Folder", - "role_type_name_read:copy" => "File Copy", - "role_type_name_read:preview" => "Previzualizarea fișierului (imagini, documente, audio și video)", - "role_type_name_read:download" => "Fișier (dosar) Descărcare", - "role_type_name_write" => "scrie", - "role_type_name_write:add" => "Creați un fișier (director), extrage fișierul comprimat", - "role_type_name_write:edit" => "Salvați fișierul pentru a edita", - "role_type_name_write:change" => "Redenumirea, pentru a regla structura de directoare", - "role_type_name_write:upload" => "Fișier (dosar) încărcare, descărcare de la distanță", - "role_type_name_write:remove" => "Fișier (dosar) șterge, tăiate", - "group_guest" => "Vizitatori", - "group_guest_desc" => "Nu sunteți membru al departamentului,
                    pot accesa numai [directorul partajat al departamentului] următorul conținut, permisiuni numai pentru citire.", - "group_role_lebel_desc" => "Sunteți membru al acestui departament,
                    Toate documentele din cadrul departamentului Toate drepturile rezervate administratorului", - "button_save_and_add" => "Salvați și continuați să adăugați", - "path_cannot_search" => "Directorul nu acceptă căutarea!", - "not_support" => "Nu este suportat!", - "group_not_exist" => "grup de utilizatori nu există!", - "upload_clear_all" => "Șterge tot", - "upload_clear" => "Golirea a fost finalizată", - "upload_setting" => "Creare", - "upload_tips" => "Utilizeaza de încărcare felie, nu mai sunt supuse la limita php.ini; recomandat tragere dosar de crom și picătură de experiență de încărcare", - "upload_exist" => "Fișier cu același nume", - "upload_exist_rename" => "redenumire", - "upload_exist_replace" => "capac", - "upload_exist_skip" => "sări", - "upload_add_more" => "adăugare în vrac", - "more" => "mai mult", - "system_setting" => "Setări de sistem", - "openProject" => "Deschide editorul de proiect", - "url_download" => "descărcare", - "url_link" => "URL", - "app_type_link" => "Comenzile rapide", - "createLink" => "Creați o comandă rapidă", - "createLinkHome" => "Trimis la comanda rapidă de pe desktop", - "createProject" => "Adaugarea la proiectul editor", - "only_read" => "Read-only", - "only_read_desc" => "Directorul nu are permisiunea de a scrie
                    Puteți seta permisiunile pentru acest director pe server", - "not_read" => "ilizibil", - "explorerNew" => "link-ul kod", - "zip_download_ready" => "După comprimare se va descărca în mod automat, vă rugăm să așteptați ...", - "set_background" => "Setare ca fundal pentru desktop", - "share" => "acțiune", - "my_share" => "Cota mea", - "group_share" => "Grup de partajare externă", - "share_edit" => "Editați partajarea", - "share_remove" => "Anulați partajarea", - "share_remove_tips" => "Sigur doriți să anulați distribuirea? Conexiunea publică va fi invalidată.", - "share_path" => "Distribuiți calea", - "share_title" => "Distribuirea resurselor", - "share_name" => "Trimiteți titlul", - "share_time" => "expirare", - "share_time_desc" => "Nul nu este setat", - "share_password" => "parola extract", - "share_password_desc" => "Parola goală nu este setat", - "share_cancle" => "Dezactivarea partajării", - "share_create" => "Creați un link public", - "share_url" => "Adresa partajată", - "share_not_download" => "descărcare interdicție", - "share_not_download_tips" => "Copărtaș interzis descărcare!", - "share_code_read" => "cititor de cod", - "share_save" => "Salvați Configurare", - "share_error_param" => "Eroare de parametru!", - "share_error_user" => "Informații utilizator Error!", - "share_error_sid" => "Împărtășește nu există!", - "share_error_time" => "Ai venit prea târziu, cota a expirat!", - "share_error_path" => "fișier partajat nu există, acesta este șters sau înlăturat-l!", - "share_error_password" => "parolă greșită!", - "share_error_show_tips" => "Acest tip nu are suport pentru previzualizare fișier!", - "share_view_num" => "Vizualizări:", - "share_download_num" => "Descărcări:", - "share_open_page" => "Deschideți pagina partajată", - "open_the_path" => "intra in director", - "recycle_clear" => "Coșul de gunoi gol", - "recycle_clear_success" => "Coșul de gunoi gol succes!", - "recycle_clear_info" => "Sunteți sigur că doriți să goli complet gunoiul?", - "fav_remove" => "Anulează colecția", - "remove_item" => "articole", - "uploading" => "Se încarcă", - "upload_tips_more" => "Prea multe fișiere, recomandarea încărcării comprimat, apoi dezarhivați on-line!", - "uploading_move" => "În transferul de fuziune ...", - "show_file" => "Pagină nouă previzualizare", - "unknow_file_title" => "Deschideți fișierul Sfat!", - "unknow_file_tips" => "Nu a sprijini aplicarea acestui fișier, puteți:", - "unknow_file_try" => "încerca", - "unknow_file_download" => "Descărcați fișierul", - "unknow_plugin_search" => "legate de aplicații de căutare instalate", - "config_save_error_auth" => "Nu a putut salva configurația, administratorul a interzis acest privilegiu!", - "config_save_error_file" => "Eroare, fișier nu seteze acest atribut!", - "beautify_code" => "cod Formatter", - "convert_case" => "Cazul de conversie", - "convert_upper_case" => "Convertit în litere mari", - "convert_lower_case" => "Convertit în litere mici", - "editor_insert_time" => "Ora actuală ", - "editor_md5" => " Criptare Md5 ", - "editor_qrcode" => " Șirul codului bidimensional ", - "editor_regx" => " Testarea expresiei regulate ", - "editor_chinese" => " Transformare simplificată ", - "editor_chinese_simple" => " Conversia în chineză simplificată ", - "editor_chinese_traditional" => " Conversia în chineză tradițională ", - "editor_base64" => "Codec Base64 ", - "editor_base64_encode" => " Codarea Base64 ", - "editor_base64_decode" => " Base64 decodare ", - "editor_url" => " Codec URL ", - "editor_url_encode" => " Codarea URL-urilor ", - "editor_url_decode" => " Decodificarea adresei URL ", - "editor_unicode" => " Codec Unicode ", - "editor_unicode_encode" => " Codare Unicode ", - "editor_unicode_decode" => " Decodificare Unicode", - "editor_tools_select_tips" => " Selectați conținutul pe care doriți să-l convertiți!", - "editor_calc" => "Calculator gratuit", - "shortcut" => "Comenzile rapide", - "use_free" => "Continuați să utilizați versiunea gratuită", - "learn_more" => "Află mai multe", - "replace" => "înlocui", - "selectAll" => "selecta", - "reload" => "reload", - "about" => "pe", - "complete_current" => "Completarea automată a curentului", - "view" => "vedere", - "tools" => "instrument", - "help" => "ajutor", - "not_exists" => "Nu există", - "group_role_fileDownload" => "Download-uri", - "group_role_share" => "acțiune", - "users_share" => "Partajarea", - "system_setting_save" => "Setări de securitate", - "system_setting_menu" => "gestionare a meniului", - "system_name" => "Numele programului", - "system_name_desc" => "logo-ul programului din titlu", - "system_desc" => "Descrierea programului", - "path_hidden" => "excluderi de director", - "version_not_support" => "Versiunea dvs. nu acceptă acest lucru, vă rugăm să accesați site-ul oficial pentru a cumpăra versiunea avansată!", - "version_not_support_number" => "Pe măsură ce numărul de restricție nu acceptă această operațiune, vă rugăm să cumpere versiunea avansată a site-ului oficial!", - "path_hidden_desc" => "Directoarele și fișierele implicit nu sunt afișate, separate prin virgula", - "new_user_folder" => "Noul utilizator este creat de directorul implicit", - "new_user_folder_desc" => "Separate prin virgula", - "new_user_app" => "Noul utilizator este creat de aplicație implicit", - "new_user_app_desc" => "Aplicații Application Center, o multitudine de separate prin virgulă", - "auto_login" => "Vizitatori de conectare automată", - "auto_login_desc" => "Datele de conectare implicit utilizatorguest/guestutilizatori, după deschidere pentru a se asigura că există utilizator", - "first_in" => "După logare în default", - "version_price_free" => "gratuit", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Director nu este inscriptibil, setați directorul și toate subdirectoarele pentru a încerca din nou după citire-scriere!", - "menu_name" => "numele meniului", - "menu_hidden" => "ascunde", - "menu_show" => "afișa", - "menu_move_down" => "jos", - "menu_move_up" => "sus", - "menu_move_del" => "șterge", - "menu_open_window" => "Deschide o fereastră nouă", - "menu_sub_menu" => "submeniu", - "url_path" => "adresă URL-ul", - "url_path_desc" => "adresă URL-ul sau codul js", - "no_permission_read" => "Nu aveți permisiunea de a citi!", - "no_permission_download" => "Nu aveți permisiunea de a descărca!", - "php_env_check" => "Monitorizarea mediului de operare:", - "php_env_error" => "Biblioteca de php lipsește", - "php_env_error_ignore" => "Ignoră și introduceți", - "php_env_error_version" => "Versiunea PHP nu poate fi mai mică de 5,0", - "php_env_error_path" => "nu inscriptibil", - "php_env_error_list_dir" => "serverul web deschide directorul listare caracteristica din motive de securitate, dezactivați această funcție!cum?", - "php_env_error_gd" => "PHP biblioteca GD ar trebui să fie deschis, în caz contrar codul, utilizați miniatura nu va funcționa corect", - "install_login" => "Puteți utiliza următoarea conectare ale contului", - "install_enter" => "sistemul", - "install_user_default" => "Administrator: {0} / (de mai jos seta o parolă)
                    utilizator mediu: {1}
                    utilizatori vizitatori: {2}", - "login_root_password" => "Setați parola de administrator", - "login_root_password_repeat" => "Confirmă parola din nou", - "login_root_password_equal" => "Cele două parole nu se potrivesc!", - "login_root_password_tips" => "Setați o parolă de administrator!", - "forget_password" => "Ați uitat parola", - "forget_password_tips" => "Administrator Password a uitat:
                    Vă rugăm să vă conectați serverul șterge ./data/system/install.lock reset;

                    Non-administrator Ai uitat parola:
                    Vă rugăm să contactați administratorul pentru a reseta!", - "copyright_desc" => "Kodexplorer este un sistem de management al documentelor web extrem de apreciat, îl puteți utiliza pentru gestionarea documentelor interne sau partajat, poate fi utilizat și pe serverul de management al site-ului, înlocuiți Ftp, chiar ca webIDE de dezvoltare direct online. De asemenea, puteți programa a doua de dezvoltare pentru a integra acest lucru în sistemele existente.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango nor • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango nor • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, Kod, kodCloud, webOS, webIDE, filemanage PHP, filemanage, Dao norului, norului mango, sisteme de gestionare a documentelor, întreprindere norului disc explorator ,, documentatie online Birou online birou online online, CAD previzualizare, Editare on-line , editor on-line", - "kod_meta_description" => "KodExplorer poate nor Road (fostă mango nor) este un important furnizor de stat / nori companii private și sistemul online de gestionare a documentelor pentru site-uri personale, implementările companie cloud privat, rețea de stocare, de gestionare a documentelor online de birou online pentru a oferi condiții de siguranță și controlat, simplu și ușor utilizare, extrem de personalizate produse de private cloud. Utilizând Windows stil de interfață, practicile de operare, fără a fi nevoie să se adapteze pentru a obține rapid început, să sprijine sute de populare format de fișier de previzualizare on-line, redare și editare prietenoase cu mediul, puternic, este un proces o dată, nu mai este inseparabilă de privat ofertele de nor.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Conectați-vă", - "guest_login" => "Sign musafir", - "username" => "Contul de conectare", - "userNickName" => "Pseudonimul utilizatorului", - "password" => "parolă", - "login_code" => "coduri", - "need_check_code" => "Codul de conectare de autentificare deschis", - "need_check_code_desc" => "După ce vă conectați, trebuie să introduceți codul de verificare.", - "setting_csrf_protect" => "Deschideți protecție CSRF", - "setting_csrf_protect_desc" => "După tipul de deschidere de atac poate proteja în mod eficient CSRF", - "login_rember_password" => "Amintiți-vă parola", - "setting_show_root_group" => "Listează toate departamentele", - "setting_show_root_group_desc" => "Directorul rădăcină a directorului de directori pentru a lista toate departamentele", - "setting_show_share_user" => "O listă a tuturor utilizatorilor", - "setting_show_share_user_desc" => "Directorul rădăcină a directorului de copaci este listat pentru toate partajările utilizatorilor", - "setting_clear_user_recycle" => "Goliți coșul de gunoi pentru toți utilizatorii", - "setting_clear_cache" => "Goliți memoria cache", - "setting_icp" => "Drepturi de autor sau de înregistrare număr", - "setting_global_css" => "css personalizat la nivel mondial", - "setting_global_css_desc" => "Toate paginile vor insera css personalizate", - "setting_global_html" => "Codul HTML statistic", - "setting_global_html_desc" => "Toate paginile vor fi inserate în acest cod HTML paragraf, codul poate fi plasat terță parte de statistici", - "us" => "kodcloud.com", - "login_not_null" => "Numele de utilizator și parola nu poate fi gol!", - "code_error" => "coduri de eroare", - "password_error" => "Numele de utilizator sau parola este incorectă!", - "password_not_null" => "Parola nu poate fi gol!", - "old_password_error" => "Parola veche este greșită!", - "permission" => "Permisiune!", - "permission_edit" => "modificați permisiunile", - "file_info_owner" => "proprietar", - "file_info_group" => "grup", - "no_permission" => "Administratorul a dezactivat acest privilegiu!", - "no_permission_ext" => "Administratorul a interzis acest tip de fișier permisiunile", - "dialog_max" => "maximaliza", - "dialog_min" => "minimaliza", - "dialog_min_all" => "minimizarea tuturor", - "dialog_display_all" => "Afișați toate ferestrele", - "dialog_close_all" => "închidere", - "open" => "deschis", - "others" => "alte", - "open_with" => "Deschis pentru ...", - "close" => "închide", - "close_all" => "închidere", - "close_left" => "Închideți fila din stânga", - "close_right" => "Închideți filele la dreapta", - "close_others" => "Închide Alte", - "loading" => "Funcționare ...", - "warning" => "avertizare", - "getting" => "Ia cele mai ...", - "sending" => "transmisie de date ...", - "data_error" => "Eroare de date!", - "get_success" => "Ia de succes!", - "save_success" => "S-a salvat!", - "success" => "operațiune de succes", - "error" => "Operația a eșuat", - "error_repeat" => "Operațiunea a eșuat, numele există deja!", - "word_error" => "eșec ", - "word_success" => " succes", - "system_error" => "eroare de sistem", - "name" => "nume", - "type" => "tip", - "contain" => "conține", - "address" => "locație", - "size" => "dimensiune", - "byte" => "octet", - "path" => "traseu", - "action" => "operare", - "create_time" => "creat", - "modify_time" => "modificată", - "last_time" => "ultima vizită", - "sort_type" => "sortează după", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "directorul public", - "system_path_not_change" => "Directorul de sistem, nu pot fi modificate", - "file" => "fișier", - "folder" => "dosar", - "copy" => "copie", - "past" => "băț", - "clone" => "Creați o copie", - "cute" => "foarfece", - "cute_to" => "Mutați în ...", - "copy_to" => "Copiere în ...", - "remove" => "șterge", - "remove_force" => "Se îndepărtează complet", - "info" => "proprietate", - "list_type" => "vedere", - "list_icon" => "pictograma matrice", - "list_list" => "aranjament listă", - "list_list_split" => "mod coloană", - "sort_up" => "creștere", - "sort_down" => "descrescătoare", - "order_type" => "sortează după", - "order_desc" => "descendent", - "order_asc" => "ascendent", - "rename" => "redenumire", - "add_to_fav" => "Adăugați la Favorite", - "search_in_path" => "Căutarea în fișiere", - "add_to_play" => "Adauga o lista de redare", - "manage_fav" => "Gestionați preferințele", - "refresh_tree" => "copac director Actualizează", - "manage_folder" => "Managementul director", - "close_menu" => "Închide meniul", - "zip" => "Creați un pachet comprimat", - "unzip" => "Pentru a extrage ...", - "unzip_folder" => "Dezarhivați într-un dosar", - "unzip_this" => "Se extrage la curent", - "unzip_to" => "Pentru a extrage ...", - "zipview_file_big" => "Fișierul este prea mare, iar apoi se extrage operația de previzualizare!", - "clipboard" => "Vizualizare Clipboard", - "clipboard_clear" => "Clipboard Gol", - "full_screen" => "ecran full", - "folder_info_item" => "articole", - "folder_info_item_select" => "A selectat", - "file_load_all" => "Dublu-clic pentru a încărca toate ......", - "tips" => "prompt", - "ziping" => "Arhivează ...", - "unziping" => "Se extrage ...", - "moving" => "operațiune de telefonie mobilă ...", - "remove_title" => "Confirmare de ștergere", - "remove_info" => "Confirmare pentru a șterge elementul selectat?", - "remove_title_force" => "eliminat definitiv", - "remove_info_force" => "Sunteți sigur că doriți să ștergeți definitiv acest document?", - "name_isexists" => "Greșit, numele există deja!", - "install" => "instala", - "width" => "lățime", - "height" => "mare", - "app" => "Aplicații de lumină", - "app_store" => "Aplicații de lumină", - "app_create" => "Creați aplicații", - "app_edit" => "Modificați aplicația", - "app_group_all" => "complet", - "app_group_game" => "joc", - "app_group_tools" => "instrument", - "app_group_reader" => "citire", - "app_group_movie" => "televiziune", - "app_group_music" => "muzică", - "app_group_life" => "viață", - "app_group_others" => "alte", - "app_desc" => "descriere", - "app_icon" => "pictogramă aplicații", - "app_icon_show" => "adresă URL-ul sau directorul", - "app_group" => "pachete de aplicare", - "app_type" => "tip", - "app_type_url" => "legătură", - "app_type_code" => "extensie js", - "app_display" => "exterior", - "app_display_border" => "Fără frontiere (de exemplu, selectați fără margini)", - "app_display_size" => "Resize (Verificați ajustarea)", - "app_size" => "dimensiune", - "app_url" => "adresă link", - "app_code" => "cod js", - "edit" => "edita", - "edit_can_not" => "Nu un fișier text", - "edit_too_big" => "Fișierul este prea mare, acesta nu poate fi mai mare decât 40M", - "open_default" => "implicit Deschideți", - "open_ie" => "Deschideți browser-ul", - "refresh" => "reîmprospăta", - "refresh_all" => "A forța o reîmprospătare", - "newfile" => "Fișier nou", - "newfile_save_as" => "Save to", - "newfolder" => "Folder nou", - "newothers" => "Altele nou", - "path_loading" => "Se încarcă ...", - "go" => "Mers pe jos!", - "go_up" => "strat superior", - "history_next" => "înainte", - "history_back" => "retragere", - "address_in_edit" => "Click aici pentru a intra în modul de editare", - "double_click_rename" => "Dublu-clic pe Renaming", - "double_click_open" => "Dublu-click pentru a deschide", - "path_null" => "Folder este gol!", - "file_size_title" => "pictograma Dimensiune", - "file_size_small_super" => "Ultra-mici", - "file_size_small" => "pictograme mici", - "file_size_default" => "pictogramele", - "file_size_big" => "Icoane mari", - "file_size_big_super" => "Pictogramă mare", - "upload" => "Încărcați", - "upload_ready" => "În așteptare pentru încărcare", - "upload_success" => "încărcați cu succes", - "upload_path_current" => "Comutați la directorul curent", - "upload_select" => "Selectați Fișier", - "upload_max_size" => "maxim admisibil", - "upload_size_info" => "Dacă doriți ca să configurați mai multe, vă rugăm să modificați de încărcare php.ini maximă permisă. Atunci când selectați un fișier mai mare decât această configurație se va filtra automat.", - "upload_error" => "Încărcare eșuată", - "upload_error_http" => "Erorile de rețea sau firewall", - "upload_muti" => "Încărcați mai multe fișiere", - "upload_drag" => "Drag and drop de încărcare", - "upload_drag_tips" => "Slăbiți pentru a încărca!", - "path_not_allow" => "Numele fișierului nu este permis", - "download" => "descărcare", - "downloading" => "Se încarcă ...", - "download_address" => "descărcare", - "download_ready" => "Vor fi descărcate", - "download_success" => "Descărcare de succes!", - "download_error" => "Descărcarea a eșuat!", - "download_error_create" => "Eroare de scriere!", - "download_error_exists" => "Link la dosar nu a reușit!", - "upload_error_null" => "Nu există un fișier!", - "upload_error_big" => "Dimensiunea fișierului depășește limitele de server", - "upload_error_move" => "Nu a reușit să se miște fișierul!", - "upload_error_exists" => "Fișierul de există deja", - "upload_local" => "Încărcare locală", - "download_from_server" => "la distanță Descărcare", - "save_path" => "Salvați Calea", - "upload_select_muti" => "O multitudine de încărcare de fișiere selectabile", - "search" => "căutare", - "searching" => "Se caută ...", - "search_result" => "Rezultatele căutării", - "seach_result_too_more" => "Prea multe rezultate de căutare, este recomandat pentru un director sau cuvinte", - "search_null" => "Nu există rezultate!", - "search_uplow" => "caz sensibil", - "search_content" => "conținutul fișierului de căutare", - "search_info" => "Vă rugăm să introduceți un termen de căutare și căile de căutare!", - "search_ext_tips" => "Prin | separate, de exemplu, php | js | css
                    nu completați căutarea fișier text implicit", - "file_type" => "Tip fișier", - "goto" => "Salt la", - "server_dwonload_desc" => "Sarcina a fost adăugat la lista de descărcare", - "parent_permission" => "permisiunile directorului părinte", - "root_path" => "Documentele mele", - "lib" => "depozit", - "fav" => "semn de carte", - "desktop" => "Spațiul de lucru", - "browser" => "Browser-ul", - "my_computer" => "Computerul meu", - "recycle" => "gunoi", - "my_document" => "Documentele mele", - "my_picture" => "Fotografiile mele", - "my_music" => "Muzica mea", - "my_movie" => "Filmele mele publice", - "my_download" => "Descărcări mele", - "ui_desktop" => "Spațiul de lucru", - "ui_explorer" => "file Management", - "ui_editor" => "editor", - "adminer" => "adminer", - "ui_project_home" => "proiectul Acasă", - "ui_login" => "Conectați-vă", - "ui_logout" => "părăsi", - "setting" => "Setări de sistem", - "setting_title" => "Opțiuni de", - "setting_user" => "Centrul de personal", - "setting_password" => "schimbarea parolei", - "setting_password_old" => "vechea parolă", - "setting_password_new" => "revizuit la", - "setting_language" => "Setări de limbă", - "setting_member" => "Managementul utilizator", - "setting_group" => "managementul de grup utilizator", - "setting_group_add" => "Adăugați un utilizator Grup", - "setting_group_edit" => "Modificare grup de utilizatori", - "setting_theme" => "Setări temă", - "setting_wall" => "Setări pentru tapet", - "setting_wall_desktop" => "Desktop wallpaper", - "setting_wall_desktop_list" => "Desktop Wallpaper Management", - "setting_wall_login_list" => "Conectați-vă la gestionarea tapetului", - "setting_wall_login_tips" => "Sfat: când există mai mult de o bucată, fundalul interfeței de conectare se va roti în mod aleatoriu", - "setting_wall_diy" => "tapet personalizat:", - "setting_wall_info" => "Imaginea adresă URL-ul, imaginile locale pot fi corect pentru a obține browser-ul pentru a deschide imaginea", - "setting_fav" => "manager de marcaje", - "setting_help" => "Utilizarea asistenței", - "setting_about" => "despre lucrari", - "setting_success" => "Modificarea a intrat în vigoare!", - "can_not_repeat" => "Nu este permis să se repete", - "absolute_path" => "adresă absolută", - "group" => "Grupuri de utilizatori", - "data_not_full" => "A prezentat date incomplete!", - "default_user_can_not_do" => "Utilizatorul implicit nu poate funcționa", - "default_group_can_not_do" => "grupuri de utilizatori implicit nu poate funcționa", - "username_can_not_null" => "Numele de utilizator nu poate fi gol!", - "groupname_can_not_null" => "Numele grupului de utilizator nu poate fi gol!", - "groupdesc_can_not_null" => "Grupul de utilizatori Descrierea nu poate fi gol!", - "group_move_user_error" => "Utilizatorii Grup de utilizatori Mutarea nu a reușit", - "group_already_remove" => "Grupul utilizator a fost șters", - "group_not_exists" => "Această grupă de utilizator nu există", - "member_add" => "adăugaţi un utilizator", - "password_null_not_update" => "Ei au spus că nu s-au schimbat parola nu este completat", - "if_save_file_tips" => "Unele fișiere nu sunt salvate. Sigur închideți fereastra?", - "if_save_file" => "Fișier nu a fost salvat, pe care doriți să salvați?", - "if_remove" => "confirmaţi ștergerea", - "member_remove_tips" => "După ce eliminați directorul de utilizator va fi șters", - "group_remove_tips" => "După ce eliminați grupul de utilizatori de utilizatori nu se poate conecta
                    (necesitatea de a re-set grup de utilizatori)", - "group_name" => "Nume grup de utilizatori", - "group_name_tips" => "Recomandare Numele limba engleză, nu poate fi repetată", - "group_desc" => "Numele afișat", - "group_desc_tips" => "Nume grup Descriere", - "group_role_ext" => "restricţii de extensie", - "group_role_ext_tips" => "Cu multiple | separate", - "group_role_file" => "file Management", - "group_role_upload" => "Se permite de încărcare", - "group_role_user" => "date utilizator", - "group_role_group" => "managementul de grup utilizator", - "group_role_member" => "Managementul utilizator", - "group_role_mkfile" => "Fișier nou", - "group_role_mkdir" => "Folder nou", - "group_role_pathrname" => "redenumire", - "group_role_pathdelete" => "ştergerea fișierelor", - "group_role_pathinfo" => "Proprietăți fișier", - "group_role_pathmove" => "Mutare (copy / cut / paste / trageți de operare)", - "group_role_zip" => "comprimare", - "group_role_unzip" => "unzip", - "group_role_search" => "căutare", - "group_role_filesave" => "Salvați fișierul pentru a edita", - "group_role_can_upload" => "Încărcarea și descărcarea", - "group_role_download" => "la distanță Descărcare", - "group_role_passowrd" => "schimbarea parolei", - "group_role_config" => "Datele de configurare", - "group_role_fav" => "operațiuni de marcaje (adăuga / edita / șterge)", - "action_list" => "Vizualizare listă", - "action_add" => "adăuga", - "action_edit" => "edita", - "action_del" => "șterge", - "group_role_ext_warning" => "Nu încărcați permit astfel de fișiere,
                    Redenumiți (redenumit extensia specificată),
                    edita salva, de descărcare de la distanță, extract", - "group_tips" => "
                  13. 1. Numele grupului de utilizatori nu poate fi duplicat. După modificarea numelui grupului aparține utilizatorului reorganizat și este asociat automat.
                  14. 2. Extensiile limitează relația dintre securitatea sistemului, vă rugăm să fiți precauți (dacă creați un nou php în directorul web, înseamnă că schimbarea permisiunilor programului către acest utilizator este practic imposibilă)
                  15. 3. Gestionarea gospodăriilor, gestionarea grupurilor de drepturi, drepturile de vizionare și adăugarea, ștergerea și modificarea drepturilor sunt obligatorii; programele sunt asociate automat
                  16. 4. După ce grupul de permisiuni este setat să adauge grupul de permisiuni, permisiunea ulterioară nu este moștenită (această permisiune este echivalentă cu cea mai mare permisiune).
                  17. ", - "not_null" => "Câmpurile obligatorii nu poate fi gol!", - "picture_can_not_null" => "Fotografiile nu pot fi goale!", - "rname_success" => "Redenumire succes!", - "please_inpute_search_words" => "Vă rugăm să introduceți un șir de caractere pentru a căuta", - "remove_success" => "Șters cu succes!", - "remove_fali" => "Ștergerea a eșuat!", - "clipboard_null" => "Clipboard este gol!", - "create_success" => "Nou succes!", - "create_error" => "Noua eșuează, verificați permisiunile directorului!", - "copy_success" => "[Copiere] - care acoperă succesul clipboard!", - "cute_success" => "[Cut] - care acoperă succesul clipboard!", - "clipboard_state" => "Starea clipboard:", - "no_permission_write_all" => "Fișierul sau directorul nu este inscriptibil", - "no_permission_write_file" => "Fișierul pe care nu are permisiunea de a scrie", - "no_permission_read_all" => "Fișierul sau directorul nu are nici o permisiune de citire", - "copy_not_exists" => "Sursa nu există", - "current_has_parent" => "dosar țintă este un subdirector al directorului sursă!", - "past_success" => "operație pastă este finalizată", - "cute_past_success" => "operație de tăiere este finalizată(fișierul sursă este șters, clipboard gol)", - "zip_success" => "comprimare finalizat", - "not_zip" => "nu arhiva", - "zip_null" => "Nu a fost selectat fișierul sau directorul", - "unzip_success" => "unzip complet", - "gotoline" => "Salt la linia", - "path_is_current" => "Calea și calea de curent pentru a deschide la fel!", - "path_exists" => "Numele există deja!", - "undo" => "anulare", - "redo" => "anti revocare", - "preview" => "avanpremieră", - "wordwrap" => "wrap", - "show_gutter" => "Afișați numere de linie", - "char_all_display" => "Afișați caractere invizibile", - "auto_complete" => "solicită în mod automat", - "auto_save" => "Salvați automat", - "function_list" => "Listă funcții", - "code_theme" => "Stilul de codificare a mărfurilor", - "font_size" => "Dimensiune font", - "confirm" => "Sigur vrei să faci asta?", - "button_ok" => "determina", - "button_submit" => "prezenta", - "button_set" => "Creare", - "button_cancel" => "anulat", - "button_edit" => "edita", - "button_save" => "Salvați", - "button_apply" => "aplica", - "button_save_all" => "Salvați Toate", - "button_not_save" => "Nu salvați", - "button_add" => "adăuga", - "button_back_add" => "Înapoi pentru a adăuga", - "button_del" => "șterge", - "button_save_edit" => "salvați modificările", - "button_save_submit" => "salvați Trimite", - "button_more" => "mai mult", - "button_select_all" => "Selecteaza Tot / Invert Selection", - "charset_AUTO" => "Identificare automată", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arab", - "charset_ISO_8859_6" => "arab", - "charset_ISO_8859_10" => "limbi nordice", - "charset_CP1257" => "limbi baltice", - "charset_ISO_8859_13" => "limbi baltice", - "charset_ISO_8859_4" => "limbi baltice", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georgian", - "charset_PT154" => "kazahă", - "charset_CP949" => "coreeană", - "charset_EUC_KR" => "coreeană", - "charset_GB18030" => "chineză simplificată", - "charset_GBK" => "chineză simplificată", - "charset_ISO_8859_14" => "celtic", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "românesc", - "charset_ISO_8859_3" => "Europa de Sud", - "charset_EUC_JP" => "japoneză", - "charset_ISO_2022_JP" => "japoneză", - "charset_SHIFT_JIS" => "japoneză", - "charset_KOI8_T" => "limba tadjică", - "charset_ISO_8859_11" => "tailandez", - "charset_TIS_620" => "tailandez", - "charset_CP1254" => "turcă", - "charset_CP1251" => "chirilic", - "charset_ISO_8859_5" => "chirilic", - "charset_KOI8_R" => "chirilic", - "charset_KOI8_U" => "chirilic", - "charset_CP1252" => "limbi din Europa de Vest", - "charset_ISO_8859_1" => "limbi din Europa de Vest", - "charset_ISO_8859_15" => "limbi din Europa de Vest", - "charset_Macintosh" => "limbi din Europa de Vest", - "charset_CP1255" => "ebraică", - "charset_ISO_8859_8" => "ebraică", - "charset_CP1253" => "greacă", - "charset_ISO_8859_7" => "greacă", - "charset_ARMSCII_8" => "armean", - "charset_CP1258" => "Vietnameză", - "charset_VISCII" => "Vietnameză", - "charset_CP1250" => "limbi din Europa Centrală", - "charset_ISO_8859_2" => "limbi din Europa Centrală", - "charset_default_set" => "Codificare fișiere", - "charset_convert_save" => "Salvați fișierul codificat ca", - "PluginCenter" => "centru Plug", - "PluginBuy" => "Autorizație de achiziție", - "PluginInstalled" => "A fost instalat", - "PluginUpdate" => "Actualizare", - "PluginListNull" => "Nu există nici un conținut!", - "PluginType" => "clasificare", - "PluginTypeAll" => "complet", - "PluginTypeFile" => "fișier îmbunătățită", - "PluginTypeSafe" => "Instrumente de securitate", - "PluginTypeTools" => "utilitate", - "PluginTypeMedia" => "multimedia", - "PluginTypeOthers" => "alte", - "PluginInstall" => "Instalați plug", - "PluginEnable" => "Activați plug-in-uri", - "PluginDisable" => "Dezactivați", - "PluginRemove" => "Dezinstalați plug", - "PluginConfig" => "Configurarea plugin", - "PluginStatus" => "stat", - "PluginStatusEnabled" => "activat", - "PluginStatusDisabled" => "Nu a fost activat", - "PluginStatusNotInstall" => "Nu este instalat", - "PluginInstalling" => "Instalare ...", - "PluginHasUpdate" => "Actualizări", - "PluginUpdateStart" => "Actualizarea plug-in", - "PluginNeedConfig" => "Necesitatea de a permite configurarea inițială", - "PluginConfigNotNull" => "Câmpurile obligatorii nu poate fi gol!", - "PluginOpen" => "deschis", - "PluginAuther" => "autor", - "PluginVersion" => "ediție", - "PluginDownloadNumber" => "instalări", - "PluginBack" => "întoarcere", - "PluginReadme" => "descriere", - "PluginResetConfig" => "Restaurați setările implicite", - "PluginInstallSelf" => "Instalare manuală", - "Plugin.config.auth" => "Permisiuni", - "Plugin.config.authDesc" => "Toate setările disponibile, sau specificați utilizatori, grupuri de utilizatori, grupuri de drepturi pot utiliza", - "Plugin.config.authOpen" => "Acces liber", - "Plugin.config.authOpenDesc" => "Nu este nevoie să accesați vizita, poate fi utilizată pentru apelul la interfața externă", - "Plugin.config.authAll" => "titular", - "Plugin.config.authUser" => "utilizator", - "Plugin.config.authGroup" => "Departamentul desemnat", - "Plugin.config.authRole" => "Drepturi de grup", - "Plugin.Config.openWith" => "stilul deschis", - "Plugin.Config.openWithDilog" => "dialog intern", - "Plugin.Config.openWithWindow" => "Noua pagină se deschide", - "Plugin.Config.fileSort" => "prioritate asociere Extension", - "Plugin.Config.fileSortDesc" => "Cu cât extensia pentru a deschide o prioritate mai mare", - "Plugin.Config.fileExt" => "Formate de fișier acceptate", - "Plugin.Config.fileExtDesc" => "Extensie asociat plug-in", - "Plugin.tab.basic" => "Setări de bază", - "Plugin.tab.auth" => "Permisiuni", - "Plugin.tab.others" => "alte setări", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Previzualizare web pagină", - "Plugin.default.picasa" => "Picasa de navigare imagine", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer jucător", - "Plugin.auth.viewList" => "Lista de pluginuri", - "Plugin.auth.setting" => "Setările pluginului", - "Plugin.auth.status" => "Opriți-vă", - "Plugin.auth.install" => "Instalare / Dezinstalare", - "Explorer.UI.openWith" => "Selectați Deschidere", - "Explorer.UI.openWithText" => "Notepad pentru a deschide", - "Explorer.UI.appSetDefault" => "Setați deschis implicit", - "Explorer.UI.appAwaysOpen" => "Utilizați întotdeauna programul selectat pentru a deschide acest fișier", - "Explorer.UI.selectAppDesc" => "Selectați programul pe care doriți să deschideți acest fișier", - "Explorer.UI.selectAppWarning" => "Vă rugăm să selectați aplicația!", - "Explorer.UI.appTypeSupport" => "Sprijinit", - "Explorer.UI.appTypeAll" => "Toate aplicațiile", - "kodApp.oexe.edit" => "Editați aplicația luminoasă", - "kodApp.oexe.open" => "Deschideți aplicarea luminii" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ru/about.html b/plugin/document/kod/config/i18n/ru/about.html deleted file mode 100644 index 326d6a421..000000000 --- a/plugin/document/kod/config/i18n/ru/about.html +++ /dev/null @@ -1,35 +0,0 @@ -
                    -
                    Что такое KODExplorer? -

                    -

                    KODExplorer - это веб-интерфейс с открытым исходным кодом, созданный для управления онлайн документами и редактирования кода. В нём использован классический оконный интерфейс, как у Windows. Он имеет набор онлайн инструментов для предварительного просмотра, редактирования, выгрузки, скачивания и распаковывания файлов, онлайн воспроизведения музыки. Вы можете работать прямо в браузере, смотреть код, а также напрямую разворачивать свой веб-сайт. Это удобно, быстро и безопасно.

                    -

                    —Концепция дизайна— -

                    -

                    KODExplorer наследует классические традиции и следует за инновациями, чтобы предоставить пользователям удобный, безопасный и простой в использовании онлайн-инструмент управления облаком.

                    -

                    —Пользователям— -

                    -

                    KODExplorer - это отличное решение для персональных облачных систем, а также для управления ресурсами малого и среднего бизнеса, сетевых хранилищ, управления сайтом и так далее.

                    -

                    Если же вы обычный ползователь, то установив KODExplorer на своём сервере, вы сможете слушать музыку и смотреть фильмы через браузер, а также загружать файлы на сервер.

                    -
                    -
                    -
                    Особенности -
                    -

                    Полное управление документами, мощный онлайн редактор файлов

                    -

                    Где бы вы ни находились, вы сможете управлять своими файлами, писать код онлайн, и в это время слушать музыку, как будто всё это находится на локальном компьютере!

                    -

                    Всё как в Windows: контекстное меню, drag-and-drop, рабочий стол и поиск файлов…

                    -

                    Выбор, выделяя указателем мыши, перемещение или загрузка с помощью drag-and-drop, онлайн-редактор, видео-плеер, упаковка и распаковка архивов.

                    -

                    Бесшовная интеграция всех частей; диалоговые окна, многофункциональный диспетчер задач и другие функции.

                    -

                    Онлайн редактор поддерживает множество синтаксисов кода, такие как HTML, CSS, JS, а также многие-многие другие!

                    -

                    Идеально поддерживает китайский язык... А также русский! -Примечание переводчика

                    -
                    -
                    -
                    Технологии с открытым исходным кодом -
                    -

                    1. Jquery:jquery(plugin:Hotkeys.ztree.contentmenu).js Быстрая, маленькая, и богатая функциональностью JavaScript библиотека. Она реализует такие вещи в HTML, как обработку событий, анимацию, и Ajax, используя простое API, которое работает с множеством браузеров.

                    -

                    2. ArtDialog: Графический интерфейс диалогов на javascript, который красив и прост в работе с javascript эффектами. Модуль artDialog в Drupal основан как раз на нём и помогает разрабочикам drupal в своих проектах.

                    -

                    3. Ztree: Мощный и быстрый плагин jQuery создаёт многофункциональные деревья папок с прекрасной производительностью и гибкой настройкой.

                    -

                    4. Codemirror: Универсальный текстовый редактор написанный на JavaScript для браузера. Он создан специально для редактирования кода. Этот редактор поддерживает огромное количество различных языков программирования, а также он имеет много различных функций для редактирования.

                    -

                    5. Emmet (ZenCoding): Плагин редактора для быстрой разработки и редактирования HTML, XML, XSL и других структурных форматов кода. Ядро этого плагина - инструмент, который позволяет вставлять CSS селекторы в HTML код.

                    -

                    6. Less: CSS предпроцессор, котрый наследует язык CSS, и добавляет туда переменные, функции и много других возможностей, которые сделают CSS более понятным, кастомизированным и расширяемым.

                    -

                    7. SWFUpload: JavaScript библиотека, использующая функции Flash Player для выгрузки файлов. Это позволяет встать выгрузкам на новый уровень с такими функциями, как выбор нескольких файлов, процесс загрузки и отображения размера файла на клиентской стороне.

                    -

                    8. CMP4: Очень хороший проигрыватель на flash, поддерживающий потоковые файлы и видео. Также имеет темы и гибкие настройки. Плэйлист загружается из XML, MMS потокового воспроизведения и поддерживает RSTP.

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ru/edit.html b/plugin/document/kod/config/i18n/ru/edit.html deleted file mode 100644 index 2a7f0a986..000000000 --- a/plugin/document/kod/config/i18n/ru/edit.html +++ /dev/null @@ -1,73 +0,0 @@ -
                    -
                    -

                    Богатая функциональность

                    -

                    Автоматическое предложение кода

                    -

                    Несколько расцветок: выбери свой любимый стиль программирования

                    -

                    Пользовательские шрифты

                    -

                    Редактирование рядом с курсором, редактирование блоков.

                    -

                    Управление блоками: свёртывание и развёртывание; перенос слов

                    -

                    Система вкладок; вы можете упорядочить вкладки перетаскиванием

                    -

                    Управление несколькими документами; поиск и замена; история;

                    -

                    Автозавершение [ ], { }, ( ), " ", ' '

                    -

                    Онлайн предпросмотр кода в реальном времени, вы влюбитесь в интернет-программирование!

                    -

                    Поддержка Emmet(ZenCoding)

                    -

                    Еще больше новых возможностей ждет вас...

                    -
                    -
                    -

                    150 видов подсветки кода

                    -

                    Подсказки: html, JavaScript, css, less, sass, scss

                    -

                    Веб-разработка: php, perl, python, ruby, elang, go...

                    -

                    Традиционные языки: java, c, c ++, c #, actionScript, VBScript...

                    -

                    Другое: markdown, shell, sql, lua, xml, yaml...

                    -
                    -
                    -
                    -
                    -

                    Сочетания клавиш

                    -
                    Часто используемые сочетания клавиш: 
                    - Ctrl+S - Сохранить 
                    - Ctrl+A - Выделить все 
                    - Ctrl+X - Вырезать 
                    - Ctrl+C - Копировать 
                    - Ctrl+V - Вставить 
                    - Ctrl+Z - Отменить 
                    - Ctrl+Y - Повторить
                    - Ctrl+F - Найти 
                    - Ctrl+F+F - Заменить 
                    - Win+Alt+-1 - Свернуть все
                    - Win+Alt+Shift+-1 - Развернуть все 
                    - ESC - Выход [Запрос сохранения файлов, если те не были сохранены] 
                    - Ctrl+Shift+S - Предпросмотр 
                    -
                    -
                    Выделение текста: 
                    - Перетаскивание мышки - Простое выделение 
                    - Shift+Home/End/стрелки - Выделение с клавиатуры 
                    - Shift+PageUp/PageDown - Выделение страниц вверх или вниз 
                    - Ctrl+Shift+Home/End - Выделение документа до или после курсора 
                    - Alt+мышь - Выделение области
                    - Ctrl+Alt+G - Выделить выбранное слово во всём документе
                    -
                    -
                    Курсор:       
                    - Home/End/стрелки - Управление курсором
                    - Ctrl+Home/End - Переместить курсор в начало/конец документа 
                    - Ctrl+P - Перейти к концу блока(к закрывающему тегу)
                    - Pageup/PageDown - Курсор вверх или вниз на одну страницу
                    - Ctrl+L - Перейти к указанной строке 
                    - Ctrl+Alt+вверх/вниз - Создать курсор на несколько строк
                    -
                    -
                    Редактор: 
                    - Ctrl+/ - Закомментировать или раскомментировать строку
                    - Tab на выделенном - Добавить табуляцию(отступ)
                    - Shift+Tab - Убрать табуляцию(отступ) 
                    - Ctrl+D - Удалить строку 
                    - Ctrl+Delete - Удалить слово справа от курсора 
                    - Ctrl/Shift+Backspace - Удалить слово слева от курсора
                    - Alt+Shift+вверх/вниз - Копирование строки и переключение на новую строку 
                    - Alt+Delete - Удалить содержимое справа от курсора 
                    - Alt+вверх/вниз - Перемещение строки 
                    - Ctrl+Shift+D - Клонирование строки(копирование на следующую строку)
                    - Ctrl+Shift+U - Преобразование выделенного в нижний регистр 
                    - Ctrl+U - Преобразование выделенного в верхний регистр 
                    -
                    -
                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ru/help.html b/plugin/document/kod/config/i18n/ru/help.html deleted file mode 100644 index c4d67038b..000000000 --- a/plugin/document/kod/config/i18n/ru/help.html +++ /dev/null @@ -1,35 +0,0 @@ -
                    -
                    Управление файлами
                    -

                    Выбор файлов: shift и сtrl для выделения нескольких файлов, выделение мышью, клавишами вверх, вниз, home и end.

                    -

                    Работа с файлами: После выбора файла, вы сможете копировать, вырезать, удалять, просматривать свойства, переименовывать, просматривать и многое другое...

                    -

                    Загрузка файлов: Загружайте несколько файлов сразу; загрузка перетаскиванием благодаря html5 (просто перетащите файлы в окно загрузки или папку)

                    -

                    Контекстное меню по правой кнопке мыши: работает с файлами, папками, деревом каталогов, рабочим столом, ярлыками...
                    - (Выбрать всё - Копировать - Вырезать - Вставить - Удалить - Переименовать, например)

                    -

                    Файловый менеджер: несколько видов просмотра(значки, список, таблица), дважды щелкните для доступа во вложенные папки, осуществляйте навигацию в адресной строке, история навигации по папкам (кнопки вперед и назад)

                    -

                    Поддержка перетаскивания: Зажмите левую кнопку мыши и перенесите файл в требуемое место.

                    -

                    Горячие клавиши: delete для удаления, Ctrl+A для выделения всех файлов, Ctrl+C, для копирования, Ctrl+X для вырезки.

                    -
                    -
                    -
                    Предварительный просмотр файлов
                    -

                    Предварительный просмотр файлов: просматривайте содержимое текстовых файлов для их редактирования; предварительный просмотр HTML, SWF-файлов.

                    -

                    Предварительный просмотр картинок: автоматическая генерация миниатюр, слайд-шоу изображений.

                    -

                    Воспроизведение аудио: воспроизводите музыку онлайн. Поддерживаются форматы MP3, WMA, MID, AAC, WAV, MP4.

                    -

                    Воспроизведение видео: онлайн воспроизведение видео, поддерживаемые форматы: MP4, FLV, F4V, 3gp.

                    -

                    Документы Office: предварительный просмотр доккументов онлайн. Поддерживаемые форматы: DOC, DOCX, PPT, PPTX, XLS, XLSX.

                    -
                    -
                    -
                    Горячие клавиши
                    -

                    Enter - Открыть

                    -

                    Ctrl+A - Выделить все

                    -

                    Ctrl+C - Копировать

                    -

                    Ctrl+V - Вставить

                    -

                    Ctrl+X - Вырезать

                    -

                    Ctrl+F - Поиск в текущем каталоге

                    -

                    Alt+N - Новый файл

                    -

                    Alt+M - Новая папка

                    -

                    Delete - Удалить выбранный

                    -

                    Backspace - Назад

                    -

                    Ctrl+Backspace - Вперед

                    -

                    F2 - Переименовать выбранный файл(папку)

                    -

                    Home/End/стрелки - Выбор файлов и навигация

                    -

                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ru/main.php b/plugin/document/kod/config/i18n/ru/main.php deleted file mode 100644 index b08994436..000000000 --- a/plugin/document/kod/config/i18n/ru/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Пожалуйста, выберите файл...", - "path_api_select_folder" => "Пожалуйста, выберите папку...", - "path_api_select_image" => "Пожалуйста, выберите изображение...", - "share_can_upload" => "Разрешить загрузку", - "move_error" => "Ошибка перемещения", - "setting_basic" => "Основные настройки", - "setting_user_sound_open" => "Включить звуки", - "setting_user_animate_open" => "Включить анимацию", - "recycle_open_if" => "Включить корзину", - "recycle_open" => "Открыть", - "setting_user_recycle_desc" => "Удаление файлов в корзину", - "setting_user_animate_desc" => "Анимация открывания окна и др.", - "setting_user_sound_desc" => "Озвучивание операций", - "setting_user_imageThumb" => "Создавать миниатюры", - "setting_user_imageThumb_desc" => "Улучшенный просмотр после открытия", - "setting_user_fileSelect" => "Включить чекбоксы", - "setting_user_fileSelect_desc" => "Включить кнопки для выделения файлов и открытия контекстного меню", - "qrcode" => "URL QR-код", - "theme_mac" => "Mac белый", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro", - "theme_metro_green" => "Metro - зеленый", - "theme_metro_purple" => "Metro - фиолетовый", - "theme_metro_pink" => "Metro - розовый", - "theme_metro_orange" => "Metro - оранжевый", - "theme_alpha_image" => "Краски - полёт", - "theme_alpha_image_sun" => "Краски - закат", - "theme_alpha_image_sky" => "Краски - синее небо", - "theme_diy" => "Настроить", - "theme_diy_title" => "Параметры пользовательской темы", - "theme_diy_background" => "Фон", - "theme_diy_image" => "Изображение", - "theme_diy_color_blur" => "Градиент", - "theme_diy_image_blur" => "Размытие изображения", - "theme_diy_image_url" => "Путь к изображению", - "theme_diy_color_start" => "Цвет 1", - "theme_diy_color_end" => "Цвет 2", - "theme_diy_color_radius" => "Угол градиента", - "system_role_admin_set" => "Администраторы имеют все права без предварительной настройки", - "login_error_user_not_use" => "Пользователь был отключен. Пожалуйста, обратитесь к администратору", - "login_error_kod_version" => "Конфликт версий программы", - "login_error_role" => "Вашей группы не существует, пожалуйста, обратитесь к администратору", - "no_permission_group" => "Вы не состоите в этой группе", - "no_permission_write" => "Каталог не имеет права на запись", - "user" => "Пользователь", - "save_as" => "Сохранить как...", - "check_update" => "Обновления", - "keyboard_type" => "Клавиатура", - "font_family" => "Шрифт", - "code_mode" => "Подсветка синтаксиса", - "path_can_not_share" => "Вы можете поделиться только своими документами", - "path_can_not_action" => "Этот каталог не поддерживает эту операцию", - "wap_page_pc" => "PC версия", - "wap_page_phone" => "Мобильная версия", - "image_size" => "Размер изображения", - "no_permission_action" => "У вас нет данного разрешения. Пожалуйста, обратитесь к администратору", - "path_is_root_tips" => "Вы находитесь в корневом каталоге", - "kod_group" => "Вся группа", - "my_kod_group" => "Я нахожусь в отделе", - "space_tips_default" => "(ГБ) 0 бесконечно", - "space_tips_full" => "Без ограничения", - "space_size" => "Доступное пространство", - "space_size_use" => "Использованное пространство", - "space_is_full" => "Недостаточно места, обратитесь к администратору!", - "system_open_true_path" => "Открыт в файловом менеджере", - "group_role_error" => "Ошибка ролевых прав (нет настроек разрешений)", - "group_role_error_admin" => "Недостаточно прав", - "markdown_content" => "Содержание", - "system_group" => "Пользователи и отделы", - "system_group_edit" => "Управление отделом", - "system_group_role" => "Роль", - "system_group_create" => "Новый отдел", - "system_group_name" => "Название отдела", - "system_group_father" => "Высший отдел", - "system_group_add" => "Добавить суб-отдел", - "system_group_remove" => "Удалить отдел", - "system_group_remove_tips" => "Вы действительно хотите удалить отдел?
                    После удаления части пользователя будет удален подсектор, перемещенный в корневой сектор", - "system_group_select" => "Выберите отдел", - "system_group_select_result" => "Члены будут принадлежать к группе", - "system_role_admin_tips" => "Замечания: Системные администраторы не имеют права управлять", - "system_member_action" => "Пользователь", - "system_member_add" => "Новый пользователь", - "system_member_role" => "Роли", - "system_member_role_select" => "Выбрать", - "system_member_password_tips" => "Пустое отменяет изменения", - "system_set_home_path" => "Выберите каталог", - "system_set_home_path_tips" => "Пустой каталог, который станет каталогом по умолчанию", - "system_member_group" => "Где отдел", - "system_member_group_edit" => "Редакционный отдел", - "system_member_remove" => "Удалить пользователя", - "system_member_remove_tips" => "Подтверждаете удаление пользователя?
                    Каталог пользователя также будет удалён", - "system_member_set_role" => "Подтверждаете изменение разрешений группы пользователей?", - "system_member_remove_group" => "Удалить пользователя из этой группы?", - "system_member_import" => "Массовое добавление", - "system_member_import_desc" => "Перечислите имена пользователей по одному на строку,
                    существующие игнорируются", - "system_member_use" => "Включить", - "system_member_unuse" => "Отключить", - "system_member_space" => "Задайте размер пространства пользователя ", - "system_member_space_tips" => " Задайте размер пространства пользователя ", - "system_member_space_number" => " Должно быть, число!", - "system_member_group_config" => "Отдел настройки партии", - "system_member_group_remove" => "Удалено из отдела", - "system_member_group_insert" => "Добавить в отдел", - "system_member_group_reset" => "Сбросить отдел", - "system_member_group_error" => "Дефектная ошибка", - "system_group_action" => "Управление отделом", - "system_role_add" => "Добавить идентификацию роли", - "system_role_read" => "Только для чтения", - "system_role_write" => "Чтение и запись", - "system_setting_root_path" => "Доступ к корневому каталогу", - "system_setting_root_path_desc" => "Администраторы могут получить доступ ко всем каталогам, другие пользователи могут видеть только свой собственный каталог.
                    Если вы хотите включить или выключить доступ администратора к другим каталогам, вы можете изменить анти-межсайтовые параметры PHP open_basedir. Как?", - "system_group_role_title" => "Управление ролью ведомственных органов", - "system_group_role_remove" => "ОК, чтобы удалить роль отдела", - "system_group_role_style" => "Стиль", - "system_group_role_display" => "Отображение", - "system_group_role_display_desc" => "Укажите, следует ли отображать права пользователя отдела", - "role_type_name_read" => "Чтение", - "role_type_name_read:list" => "Получение списка файлов", - "role_type_name_read:info" => "Просмотр свойств файлов (папок), поиск папок", - "role_type_name_read:copy" => "Копирование файлов", - "role_type_name_read:preview" => "Предварительный просмотр файлов", - "role_type_name_read:download" => "Скачивание файлов (папок)", - "role_type_name_write" => "Запись", - "role_type_name_write:add" => "Создание файлов (папок), извлечение архивов", - "role_type_name_write:edit" => "Изменение созданных файлов", - "role_type_name_write:change" => "Переименование", - "role_type_name_write:upload" => "Выгрузка файлов (папок)", - "role_type_name_write:remove" => "Удаление файлов (папок), вырезать в буфер", - "group_guest" => "Посетители", - "group_guest_desc" => "Вы не являетесь членом отдела,
                    могут обращаться только к [разделенному каталогу отдела] к следующему содержимому, только для чтения.", - "group_role_lebel_desc" => "Вы являетесь членом этого отдела,
                    Все документы в отделе Все права защищены администратором", - "button_save_and_add" => "Сохранить и продолжить", - "path_cannot_search" => "Каталог не поддерживает поиск", - "not_support" => "Функция не поддерживается", - "group_not_exist" => "Группа не существует", - "upload_clear_all" => "Очистить все", - "upload_clear" => "Очистить завершенные", - "upload_setting" => "Настройки", - "upload_tips" => "Используйте многотомные архивы, размером определённым в php.ini", - "upload_exist" => "Файл с таким же именем", - "upload_exist_rename" => "Переименовывать", - "upload_exist_replace" => "Заменять", - "upload_exist_skip" => "Пропускать", - "upload_add_more" => "Массовое добавление", - "more" => "Еще...", - "system_setting" => "Панель управления", - "openProject" => "Открыть в редакторе (как проект)", - "url_download" => "Путь загрузки", - "url_link" => "URL", - "app_type_link" => "Ярлык", - "createLink" => "Создать ярлык", - "createLinkHome" => "Добавить на рабочий стол", - "createProject" => "Ярлык на проект", - "only_read" => "Только для чтения", - "only_read_desc" => "Каталог не имеет права на запись
                    ", - "not_read" => "Нечитаемый", - "explorerNew" => "KOD ссылка", - "zip_download_ready" => "Архив будет автоматически загружен, пожалуйста подождите...", - "set_background" => "Установить как обои для рабочего стола", - "share" => "Общий доступ", - "my_share" => "Общий доступ", - "group_share" => "Публичная группа", - "share_edit" => "Редактировать общий доступ", - "share_remove" => "Удалить общий доступ", - "share_remove_tips" => "Удалить общий доступ? Файл не будет доступен другим пользователям", - "share_path" => "Путь к файлу", - "share_title" => "Общий доступ", - "share_name" => "Название файла", - "share_time" => "Истекает", - "share_time_desc" => "0 - никогда", - "share_password" => "Пароль", - "share_password_desc" => "По умолчанию не установлен", - "share_cancle" => "Отменить общий доступ", - "share_create" => "Создать публичную ссылку", - "share_url" => "Ссылка на файл", - "share_not_download" => "Запретить загрузку", - "share_not_download_tips" => "Загрузка запрещена", - "share_code_read" => "Код", - "share_save" => "Сохранение", - "share_error_param" => "Неверная ссылка", - "share_error_user" => "Пользователь не существует", - "share_error_sid" => "Файл не существует", - "share_error_time" => "Время истекло для данного файла", - "share_error_path" => "Общий файл не существует, удален или премещён", - "share_error_password" => "Неправильный пароль", - "share_error_show_tips" => "Этот тип файлов не поддерживает предварительный просмотр", - "share_view_num" => "Просмотрен:", - "share_download_num" => "Загружен:", - "share_open_page" => "Открыть страницу файла", - "open_the_path" => "Открыть каталог", - "recycle_clear" => "Очистить корзину", - "recycle_clear_success" => "Корзина очищена", - "recycle_clear_info" => "Вы уверены, что вы хотите очистить корзину?", - "fav_remove" => "Удалить из избранного", - "remove_item" => "Предмет", - "uploading" => "Выгрузка ", - "upload_tips_more" => "Слишком много файлов, рекомендуется выгружать архивы, а затем их распаковывать.", - "uploading_move" => "В передаче слияния ...", - "show_file" => "Новые страницы предварительного просмотра", - "unknow_file_title" => "Неизвестный формат файла", - "unknow_file_tips" => "Для данного формата файлов не найдено приложение. Вы можете:", - "unknow_file_try" => " Попробовать", - "unknow_file_download" => "скачать файл", - "unknow_plugin_search" => "и найти приложение там", - "config_save_error_auth" => "Ошибка, недостаточно прав", - "config_save_error_file" => "Ошибка, файл недоступен для записи", - "beautify_code" => "форматирование кода", - "convert_case" => "Изменить регистр", - "convert_upper_case" => "Заглавные", - "convert_lower_case" => "Строчные", - "editor_insert_time" => "Текущее время ", - "editor_md5" => " Шифрование Md5 ", - "editor_qrcode" => " Строковый двухмерный код ", - "editor_regx" => " Регулярное тестирование ", - "editor_chinese" => " Упрощенная конверсия ", - "editor_chinese_simple" => " Преобразование на упрощенный китайский ", - "editor_chinese_traditional" => " Конвертировать в Китайский Традиционный ", - "editor_base64" => "Базовый кодек ", - "editor_base64_encode" => " Базовая кодировка ", - "editor_base64_decode" => " Декодирование Base64 ", - "editor_url" => " URL-код ", - "editor_url_encode" => " Кодирование URL ", - "editor_url_decode" => " Расшифровка URL ", - "editor_unicode" => " Unicode-кодек ", - "editor_unicode_encode" => " Кодировка Unicode ", - "editor_unicode_decode" => " Unicode-декодирование", - "editor_tools_select_tips" => " Выберите контент, который хотите конвертировать!", - "editor_calc" => "Бесплатный калькулятор", - "shortcut" => "Ярлыки", - "use_free" => "Продолжить использовать бесплатную версию", - "learn_more" => "Подробнее", - "replace" => "Заменить", - "selectAll" => "Выбрать все", - "reload" => "Перезагрузить", - "about" => "О программе", - "complete_current" => "Автозавершение", - "view" => "Вид", - "tools" => "Инструменты", - "help" => "Помощь", - "not_exists" => "Не существует", - "group_role_fileDownload" => "Скачивание", - "group_role_share" => "Общий доступ", - "users_share" => "Общий доступ", - "system_setting_save" => "Настройки безопасности", - "system_setting_menu" => "Настройка меню", - "system_name" => "Название программы", - "system_name_desc" => "Название программы", - "system_desc" => "Описание программы", - "path_hidden" => "Скрытые каталоги", - "version_not_support" => "Ваша версия не поддерживает это. Пожалуйста, перейдите на официальный веб-сайт, чтобы купить расширенную версию", - "version_not_support_number" => "Вы исчерпали лимит этой версии. Пожалуйста, перейдите на официальный веб-сайт, чтобы купить расширенную версию", - "path_hidden_desc" => "Каталоги и файлы, разделенные запятыми, не будут отображаться", - "new_user_folder" => "Папки пользователя", - "new_user_folder_desc" => "Пользователь будет создан с этими папками(разделитель запятая)", - "new_user_app" => "Приложения", - "new_user_app_desc" => "Пользователь будет создан с этими приложениями на рабочем столе", - "auto_login" => "Гостевой вход", - "auto_login_desc" => "Добавить кнопку входа гостя через пользователя guest/guest", - "first_in" => "После входа открыть", - "version_price_free" => "FREE", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Бесплатный", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Папка не доступна для записи. Установите права на чтение и запись, а затем повторите попытку", - "menu_name" => "Пункт меню", - "menu_hidden" => "Скрыть", - "menu_show" => "Показать", - "menu_move_down" => "Вниз", - "menu_move_up" => "Вверх", - "menu_move_del" => "Удалить", - "menu_open_window" => "Открыть новое окно", - "menu_sub_menu" => "Дополнения", - "url_path" => "URL-адрес", - "url_path_desc" => "URL-адрес или JS-код", - "no_permission_read" => "У вас нет разрешения на чтение", - "no_permission_download" => "У вас нет разрешения на скачивание", - "php_env_check" => "Проверка окружения: ", - "php_env_error" => "Ошибка окружения: ", - "php_env_error_ignore" => "Игнорировать", - "php_env_error_version" => "Требуется минимальная версия PHP 5.0", - "php_env_error_path" => "Не доступен для записи", - "php_env_error_list_dir" => "Ваш веб-сервер показывает список файлов в папках без индексного файла. По соображениям безопасности рекомендуется отключить эту функцию. Как?", - "php_env_error_gd" => "PHP GD не включен", - "install_login" => "Используйте данный аккаунт для входа", - "install_enter" => "Войти", - "install_user_default" => "Администратор: {0} / (установите пароль ниже)
                    Обычный пользователь: {1}
                    Гости: {2}", - "login_root_password" => "Установить пароль администратора", - "login_root_password_repeat" => "Подтвердите пароль", - "login_root_password_equal" => "Пароли не совпадают", - "login_root_password_tips" => "Установите пароль администратора", - "forget_password" => "Забыли пароль", - "forget_password_tips" => "Забыли пароль администратора:
                    Пожалуйста , войдите на сервер и удалите файл ./data/system/install.lockдля сброса пароля;

                    Обычный пользователь:
                    Пожалуйста, обратитесь к администратору, чтобы сбросить пароль.", - "copyright_desc" => "KodExplorer - это система управления веб-документами. Вы можете использовать её для внутреннего или совместного управления документами, на сервере для управления сайтом, замены FTP, и даже webIDE для интерактивного режима разработки. Вы также можете интегрировать её в другие системы.", - "copyright_contact" => "Свяжитесь с нами: kodcloud@qq.comОбратная связь", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Онлайн проводник", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Онлайн проводник", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "kod,KodExplorer,webos,webIDE,php filemanage,filemanage,менеджер", - "kod_meta_description" => "KodExplorer - это лучшее личное облако для различных организаций, в том числе правительственных, а также система управления документами для персональных сайтов. Может использоваться как облако для корпоративной разработки, онлайн офис, сетевое хранилище с безопасным и простым использованием. KodExplorer может быть подстроен под любые коммерческие продукты. Используя оконный интерфейс windows, он не требует времени для обучения. KodExplorer поддерживает множество различных форматов файлов для просмотра, редактирования и проигрывания мультимедиа.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Войти", - "guest_login" => "Гость", - "username" => "Вход в аккаунт", - "userNickName" => "Пользовательский псевдоним", - "password" => "Пароль", - "login_code" => "Защита от роботов", - "need_check_code" => "Защита от роботов", - "need_check_code_desc" => "После входа в систему необходимо ввести код подтверждения.", - "setting_csrf_protect" => "Защита от CSRF", - "setting_csrf_protect_desc" => "Опция включает алгоритм, предотвращающий атаку CSRF", - "login_rember_password" => "Запомнить меня", - "setting_show_root_group" => "Список всех отделов", - "setting_show_root_group_desc" => "Корневой каталог дерева каталогов должен ли список всех отделов", - "setting_show_share_user" => "Список пользователей", - "setting_show_share_user_desc" => "Каталог корневых каталогов деревьев указан для всех пользователей.", - "setting_clear_user_recycle" => "Очистить корзины всех пользователей", - "setting_clear_cache" => "Очистить кэш", - "setting_icp" => "Авторское право", - "setting_global_css" => "Пользовательский CSS", - "setting_global_css_desc" => "Вставить пользовательский CSS в KodExplorer", - "setting_global_html" => "Пользовательский HTML", - "setting_global_html_desc" => "Вставить пользовательский HTML в KodExplorer(например, статистику)", - "us" => "kodcloud.com", - "login_not_null" => "Имя пользователя и пароль не может быть пустым.", - "code_error" => "Ошибка ввода защитного кода", - "password_error" => "Имя пользователя или пароль неверны.", - "password_not_null" => "Пароль не может быть пустым.", - "old_password_error" => "Старый пароль неправильный.", - "permission" => "Разрешение", - "permission_edit" => "Изменение разрешений", - "file_info_owner" => "Владелец", - "file_info_group" => "Группа", - "no_permission" => "Администратор отключил эту привилегию.", - "no_permission_ext" => "Администратор запретил этот тип прав доступа к файлам", - "dialog_max" => "Развернуть", - "dialog_min" => "Свернуть", - "dialog_min_all" => "Свернуть все", - "dialog_display_all" => "Показать все", - "dialog_close_all" => "Закрыть все", - "open" => "Открыть", - "others" => "Другое", - "open_with" => "Открыть с помощью...", - "close" => "Закрыть", - "close_all" => "Закрыть все", - "close_left" => "Закрыть вкладку слева", - "close_right" => "Закрыть вкладку справа", - "close_others" => "Закрыть другие вкладки", - "loading" => "Загрузка...", - "warning" => "Предупреждение", - "getting" => "Получение данных...", - "sending" => "Отправка...", - "data_error" => "Ошибка данных", - "get_success" => "Получено", - "save_success" => "Сохранено", - "success" => "Операция выполнена", - "error" => "Не удалось выполнить операцию", - "error_repeat" => "Ошибка, данное имя уже существует", - "word_error" => "недостаточность ", - "word_success" => " успех", - "system_error" => "Системная ошибка", - "name" => "Имя", - "type" => "Тип", - "contain" => "Содержит", - "address" => "Расположение", - "size" => "Размер", - "byte" => "Байт", - "path" => "Путь", - "action" => "Действия", - "create_time" => "Создан", - "modify_time" => "Изменен", - "last_time" => "Открыт", - "sort_type" => "Сортировка по", - "time_type" => "H:i:s d.m.Y", - "time_type_info" => "H:i:s d.m.Y", - "public_path" => "Открытый каталог", - "system_path_not_change" => "Системный каталог не может быть изменен", - "file" => "Файл", - "folder" => "Папка", - "copy" => "Копировать", - "past" => "Вставить", - "clone" => "Создать копию", - "cute" => "Вырезать", - "cute_to" => "Переместить в...", - "copy_to" => "Копировать в...", - "remove" => "Удалить", - "remove_force" => "Удалить навсегда", - "info" => "Свойства", - "list_type" => "Вид", - "list_icon" => "Иконки", - "list_list" => "Таблица", - "list_list_split" => "Список", - "sort_up" => "По возрастанию", - "sort_down" => "По убыванию", - "order_type" => "Сортировка по", - "order_desc" => "возрастанию", - "order_asc" => "убыванию", - "rename" => "Переименовать", - "add_to_fav" => "Добавить в избранное", - "search_in_path" => "Найти...", - "add_to_play" => "Добавить в плейлист", - "manage_fav" => "Управление Избранное", - "refresh_tree" => "Обновить дерево каталогов", - "manage_folder" => "Открыть в новом окне", - "close_menu" => "Закрыть меню", - "zip" => "Создать архив...", - "unzip" => "Извлечь...", - "unzip_folder" => "В папку", - "unzip_this" => "В текущую папку", - "unzip_to" => "Выбрать путь...", - "zipview_file_big" => "Файл слишком велик для предварительного просмотра.", - "clipboard" => "Просмотр буфера обмена", - "clipboard_clear" => "Очистить буфер обмена", - "full_screen" => "Полный экран", - "folder_info_item" => " всего", - "folder_info_item_select" => " выбрано", - "file_load_all" => "[Дважды щелкните, чтобы загрузить все...]", - "tips" => "Подсказка", - "ziping" => "Архивирование...", - "unziping" => "Распаковка...", - "moving" => "Перемещение файла...", - "remove_title" => "Подтверждение удаления", - "remove_info" => "Подтверждаете удаление выбранного элемента?", - "remove_title_force" => "Удалить навсегда", - "remove_info_force" => "Вы уверены, что хотите навсегда удалить этот документ?", - "name_isexists" => "Ошибка, имя уже существует", - "install" => "Установить", - "width" => "Ширина", - "height" => "Высота", - "app" => "Apps", - "app_store" => "Центр приложений", - "app_create" => "Создание приложения", - "app_edit" => "Изменить приложение", - "app_group_all" => "Все", - "app_group_game" => "Игры", - "app_group_tools" => "Утилиты", - "app_group_reader" => "Читалки", - "app_group_movie" => "Кино", - "app_group_music" => "Музыка", - "app_group_life" => "Жизнь", - "app_group_others" => "Другое", - "app_desc" => "Описание", - "app_icon" => "Значок приложения", - "app_icon_show" => "URL-адрес или каталог", - "app_group" => "Группа", - "app_type" => "Тип", - "app_type_url" => "Ссылка", - "app_type_code" => "Виджет", - "app_display" => "Окно", - "app_display_border" => "Без рамки", - "app_display_size" => "Изменяемый размер", - "app_size" => "Размер окна", - "app_url" => "Ссылка", - "app_code" => "JS-код", - "edit" => "Редактировать", - "edit_can_not" => "Это не текстовый файл", - "edit_too_big" => "Файл слишком велик, он не может быть больше, чем 40M", - "open_default" => "Режим по умолчанию", - "open_ie" => "Открыть в браузере", - "refresh" => "Обновить", - "refresh_all" => "Принудительное обновление", - "newfile" => "Новый файл", - "newfile_save_as" => "Сохранить в", - "newfolder" => "Новая папка", - "newothers" => "Другое", - "path_loading" => "Загрузка...", - "go" => "Вперед.", - "go_up" => "Родительская директория", - "history_next" => "Вперед", - "history_back" => "Назад", - "address_in_edit" => "Щелкните, чтобы войти в режим редактирования", - "double_click_rename" => "Дважды щелкните, чтобы переименовать", - "double_click_open" => "Дважды щелкните, чтобы открыть", - "path_null" => "Папка пуста. Вы можете перетащить сюда файлы и папки для их загрузки.", - "file_size_title" => "Размер значков", - "file_size_small_super" => "Очень маленький", - "file_size_small" => "Маленький", - "file_size_default" => "Обычный", - "file_size_big" => "Большой", - "file_size_big_super" => "Очень большой", - "upload" => "Загрузить", - "upload_ready" => "Загрузка ", - "upload_success" => "Загрузка завершена", - "upload_path_current" => "Текущий", - "upload_select" => "Выбрать", - "upload_max_size" => "Максимальный размер файла", - "upload_size_info" => "Файлы большего размера не будут загружены, пока вы не измените php.ini", - "upload_error" => "Сбой при загрузке", - "upload_error_http" => "Сетевая ошибка", - "upload_muti" => "Загрузка нескольких файлов", - "upload_drag" => "Перетащите файл для загрузки", - "upload_drag_tips" => "Отпустите для загрузки", - "path_not_allow" => "Не допустимое имя файла", - "download" => "Скачать", - "downloading" => "Скачивание...", - "download_address" => "Ссылка загрузки", - "download_ready" => "Загрузка начата", - "download_success" => "Загрузка завершена", - "download_error" => "Ошибка загрузки.", - "download_error_create" => "Ошибка записи.", - "download_error_exists" => "Ссылка на файл существует.", - "upload_error_null" => "Нет файлов.", - "upload_error_big" => "Размер файла превышает лимит сервера", - "upload_error_move" => "Не удалось переместить файл.", - "upload_error_exists" => "Файл уже существует", - "upload_local" => "Локальная загрузка", - "download_from_server" => "Удаленная загрузка", - "save_path" => "Место сохранения", - "upload_select_muti" => "Загрузка нескольких файлов", - "search" => "Поиск", - "searching" => "Идет поиск...", - "search_result" => "Результаты поиска", - "seach_result_too_more" => "Слишком много результатов поиска, рекомендуется изменить место поиска или ключевые слова", - "search_null" => "Нет результатов.", - "search_uplow" => "Игнорировать регистр", - "search_content" => "Поиск файлов по содержанию", - "search_info" => "Пожалуйста, введите слово и место для поиска.", - "search_ext_tips" => "Разделитель | , например PHP|JS|CSS
                    txt по умолчанию", - "file_type" => "Тип файла", - "goto" => "Перейти к", - "server_dwonload_desc" => "Задача была добавлена в список загрузки", - "parent_permission" => "Разрешения родительского каталога", - "root_path" => "Домашний каталог", - "lib" => "Библиотека", - "fav" => "Избранное", - "desktop" => "Рабочий стол", - "browser" => "Браузер", - "my_computer" => "Мой компьютер", - "recycle" => "Корзина", - "my_document" => "Мои документы", - "my_picture" => "Мои фотографии", - "my_music" => "Моя музыка", - "my_movie" => "Мои видео", - "my_download" => "Мои загрузки", - "ui_desktop" => "Рабочий стол", - "ui_explorer" => "Файловый менеджер", - "ui_editor" => "Редактор", - "adminer" => "Adminer", - "ui_project_home" => "Домашняя папка проекта", - "ui_login" => "Войти", - "ui_logout" => "Выход", - "setting" => "Панель управления", - "setting_title" => "Опции", - "setting_user" => "Персонализация", - "setting_password" => "Изменение пароля", - "setting_password_old" => "Старый пароль", - "setting_password_new" => "Новый пароль", - "setting_language" => "Настройки языка", - "setting_member" => "Управление пользователями", - "setting_group" => "Управление пользователями группы", - "setting_group_add" => "Добавить группу пользователей", - "setting_group_edit" => "Редактировать группы пользователей", - "setting_theme" => "Темы", - "setting_wall" => "Настройки обоев", - "setting_wall_desktop" => "Обои для рабочего стола", - "setting_wall_desktop_list" => "Обои для рабочего стола", - "setting_wall_login_list" => "Вход в систему Управление обоями", - "setting_wall_login_tips" => "Совет. Когда есть более одной части, фон интерфейса входа будет вращаться случайным образом", - "setting_wall_diy" => "Пользовательские обои:", - "setting_wall_info" => "URL-адрес изображения, к локальному файлу должен быть доступ из браузера", - "setting_fav" => "Избранное", - "setting_help" => "Помощь", - "setting_about" => "О программе", - "setting_success" => "Настройки сохранены", - "can_not_repeat" => "Имя уже существует", - "absolute_path" => "Абсолютный путь", - "group" => "Группы пользователей", - "data_not_full" => "Заполните требуемые данные.", - "default_user_can_not_do" => "Пользователь по умолчанию не может этого делать", - "default_group_can_not_do" => "Группа пользователей по умолчанию не может этого делать", - "username_can_not_null" => "Имя пользователя не может быть пустым.", - "groupname_can_not_null" => "Имя группы не может быть пустым.", - "groupdesc_can_not_null" => "Описание группы не может быть пустым.", - "group_move_user_error" => "Перемещение пользователей в группы не удалось", - "group_already_remove" => "Группа пользователя была удалена", - "group_not_exists" => "Эта группа пользователя не существует", - "member_add" => "Добавить пользователя", - "password_null_not_update" => "Оставьте пустым, чтобы не изменять пароль", - "if_save_file_tips" => "Некоторые файлы не сохранены. Вы уверены, что закроете окно?", - "if_save_file" => "Файл не был сохранен", - "if_remove" => "Подтвердить удаление", - "member_remove_tips" => "Каталог пользователя будет удален", - "group_remove_tips" => "Удалить группу пользователей
                    (необходимо повторно установить группы пользователей)", - "group_name" => "Имя группы", - "group_name_tips" => "Нельзя повторять", - "group_desc" => "Описание", - "group_desc_tips" => "Описание группы", - "group_role_ext" => "Разрешенные расширения", - "group_role_ext_tips" => "Разделитель |;например php|html|css", - "group_role_file" => "Просмотр файлов", - "group_role_upload" => "Выгрузка", - "group_role_user" => "Данные пользователя", - "group_role_group" => "Группа", - "group_role_member" => "Пользователи", - "group_role_mkfile" => "Создание файлов", - "group_role_mkdir" => "Создание папок", - "group_role_pathrname" => "Переименовывание", - "group_role_pathdelete" => "Удаление файлов", - "group_role_pathinfo" => "Свойства файла", - "group_role_pathmove" => "Операции с файлами (копирование/перемещение)", - "group_role_zip" => "Архивирование", - "group_role_unzip" => "Распаковка", - "group_role_search" => "Поиск", - "group_role_filesave" => "Сохранение измененных файлов", - "group_role_can_upload" => "Выгрузка", - "group_role_download" => "Серверная загрузка", - "group_role_passowrd" => "Изменение пароля", - "group_role_config" => "Данные пользователя", - "group_role_fav" => "Избранное (добавление/изменение/удаление)", - "action_list" => "Список", - "action_add" => "Добавить", - "action_edit" => "Изменить", - "action_del" => "Удалить", - "group_role_ext_warning" => "Не разрешено
                    Переименовывать, редактировать, сохранять,
                    загружать, распаковывать файлы", - "group_tips" => "
                  18. 1. Имя группы пользователей не может быть дублировано. После изменения имени группы оно принадлежит реорганизованному пользователю и автоматически связано.
                  19. 2. Расширения ограничивают связь между безопасностью системы, будьте осторожны (если вы создаете новый php в веб-каталоге, это означает, что изменение разрешений программы для этого пользователя практически невозможно)
                  20. 3. Управление домохозяйствами, управление группами прав, просмотр прав и добавление, удаление и изменение прав связаны, программы автоматически связаны
                  21. 4. После того, как группа разрешений добавит группу разрешений, последующее разрешение не будет унаследовано (это разрешение эквивалентно максимальному разрешению).
                  22. ", - "not_null" => "Заполните обязательные поля", - "picture_can_not_null" => "Укажите картинку", - "rname_success" => "Переименовано", - "please_inpute_search_words" => "Введите строку для поиска", - "remove_success" => "Удалено", - "remove_fali" => "Удалить не удалось", - "clipboard_null" => "Буфер обмена пуст", - "create_success" => "Создано", - "create_error" => "Не удалось создать, проверьте разрешения каталога.", - "copy_success" => "Копировано в буфер", - "cute_success" => "Вырезано в буфер", - "clipboard_state" => "Буфер обмена:", - "no_permission_write_all" => "Файл или каталог не доступен для записи", - "no_permission_write_file" => "Файл не имеет права на запись", - "no_permission_read_all" => "Файл или каталог не имеет права на чтение", - "copy_not_exists" => "Источник не существует", - "current_has_parent" => "Целевая папка является вложенной в папку источника", - "past_success" => "Вставка завершена", - "cute_past_success" => "Вставка завершена (исходный файл удален, буфер обмена очищен)", - "zip_success" => "Сжатие завершено", - "not_zip" => "Не архив", - "zip_null" => "Не выбран файл или каталог", - "unzip_success" => "Распаковка завершена", - "gotoline" => "Перейти к строке", - "path_is_current" => "Вы открываете этот же каталог", - "path_exists" => "Имя уже существует", - "undo" => "Отменить", - "redo" => "Повторить", - "preview" => "Предпросмотр", - "wordwrap" => "Перенос слов", - "show_gutter" => "Показать номера строк", - "char_all_display" => "Показать невидимые символы", - "auto_complete" => "Автозавершение", - "auto_save" => "Автоматически сохранять", - "function_list" => "Список функций", - "code_theme" => "Цвет кода", - "font_size" => "Размер шрифта", - "confirm" => "Вы действительно хотите это сделать?", - "button_ok" => "ОК", - "button_submit" => "Отправить", - "button_set" => "Установить", - "button_cancel" => "Отменить", - "button_edit" => "Изменить", - "button_save" => "Сохранить", - "button_apply" => "Применить", - "button_save_all" => "Сохранить все", - "button_not_save" => "Не сохранять", - "button_add" => "Добавить", - "button_back_add" => "Добавить и вернуться", - "button_del" => "Удалить", - "button_save_edit" => "Сохранить", - "button_save_submit" => "Сохранить и отправить", - "button_more" => "Еще...", - "button_select_all" => "Выбрать все / снять выделение", - "charset_AUTO" => "Автоматическая идентификация", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Арабский", - "charset_ISO_8859_6" => "Арабский", - "charset_ISO_8859_10" => "Скандинавские языки", - "charset_CP1257" => "Балтийские языки", - "charset_ISO_8859_13" => "Балтийские языки", - "charset_ISO_8859_4" => "Балтийские языки", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "Грузинский", - "charset_PT154" => "Казахстанский", - "charset_CP949" => "Корейский", - "charset_EUC_KR" => "Корейский", - "charset_GB18030" => "Упрощенный китайский", - "charset_GBK" => "Упрощенный китайский", - "charset_ISO_8859_14" => "Кельтский", - "charset_CP1133" => "Лао", - "charset_ISO_8859_16" => "Румынский", - "charset_ISO_8859_3" => "Южноевропейская", - "charset_EUC_JP" => "Японский", - "charset_ISO_2022_JP" => "Японский", - "charset_SHIFT_JIS" => "Японский", - "charset_KOI8_T" => "Таджикский", - "charset_ISO_8859_11" => "Тайский", - "charset_TIS_620" => "Тайский", - "charset_CP1254" => "Турецкий", - "charset_CP1251" => "Кириллица", - "charset_ISO_8859_5" => "Кириллица", - "charset_KOI8_R" => "Кириллица", - "charset_KOI8_U" => "Кириллица", - "charset_CP1252" => "Западная Европы", - "charset_ISO_8859_1" => "Западная Европы", - "charset_ISO_8859_15" => "Западная Европы", - "charset_Macintosh" => "Западная Европы", - "charset_CP1255" => "Иврит", - "charset_ISO_8859_8" => "Иврит", - "charset_CP1253" => "Греческий", - "charset_ISO_8859_7" => "Греческий", - "charset_ARMSCII_8" => "Армянский", - "charset_CP1258" => "Вьетнамский", - "charset_VISCII" => "Вьетнамский", - "charset_CP1250" => "Центральная Европа", - "charset_ISO_8859_2" => "Центральная Европа", - "charset_default_set" => "Кодировка файла", - "charset_convert_save" => "Сохранить файл с новой кодировкой...", - "PluginCenter" => "Центр дополнений", - "PluginBuy" => "Купить", - "PluginInstalled" => "Установлено", - "PluginUpdate" => "Обновления", - "PluginListNull" => "Пусто", - "PluginType" => "Тип", - "PluginTypeAll" => "Все", - "PluginTypeFile" => "Типы файлов", - "PluginTypeSafe" => "Безопасность", - "PluginTypeTools" => "Утилиты", - "PluginTypeMedia" => "Мультимедиа", - "PluginTypeOthers" => "Другое", - "PluginInstall" => "Установить", - "PluginEnable" => "Включить", - "PluginDisable" => "Выключить", - "PluginRemove" => "Удалить", - "PluginConfig" => "Опции", - "PluginStatus" => "Статус", - "PluginStatusEnabled" => "Включен", - "PluginStatusDisabled" => "Выключен", - "PluginStatusNotInstall" => "Не установлен", - "PluginInstalling" => "Установка...", - "PluginHasUpdate" => "Обновление", - "PluginUpdateStart" => "Обновить", - "PluginNeedConfig" => "Настройте, чтобы включить", - "PluginConfigNotNull" => "Заполните требуемые поля", - "PluginOpen" => "Открыть", - "PluginAuther" => "Автор", - "PluginVersion" => "Версия", - "PluginDownloadNumber" => "Количество установок", - "PluginBack" => "Назад", - "PluginReadme" => "Описание", - "PluginResetConfig" => "Восстановить умолчания", - "PluginInstallSelf" => "Ручная установка", - "Plugin.config.auth" => "Управление доступом", - "Plugin.config.authDesc" => "Укажите владельца, пользователя, группу разрешений или пользователей, имеющих доступ к дополнению", - "Plugin.config.authOpen" => "Открытый доступ", - "Plugin.config.authOpenDesc" => "Не нужно посещать, можно получить доступ, может использоваться для вызова внешнего интерфейса", - "Plugin.config.authAll" => "Все", - "Plugin.config.authUser" => "Пользователь", - "Plugin.config.authGroup" => "Назначенный отдел", - "Plugin.config.authRole" => "Группа разрешений", - "Plugin.Config.openWith" => "Открывать", - "Plugin.Config.openWithDilog" => "Во внутреннем окне", - "Plugin.Config.openWithWindow" => "На новой вкладке", - "Plugin.Config.fileSort" => "Приоритет использования", - "Plugin.Config.fileSortDesc" => "Задаёт порядок в списке 'Открыть с помощью...'", - "Plugin.Config.fileExt" => "Обрабатываемые расширения", - "Plugin.Config.fileExtDesc" => "Ассоциация файлов с приложением", - "Plugin.tab.basic" => "Основные настройки", - "Plugin.tab.auth" => "Настройки доступа", - "Plugin.tab.others" => "Прочее", - "Plugin.default.aceEditor" => "Редактор Ace", - "Plugin.default.htmlView" => "Предпросмотр HTML", - "Plugin.default.picasa" => "Изображения Picasa", - "Plugin.default.zipView" => "Архиватор", - "Plugin.default.jPlayer" => "Проигрыватель JPlayer", - "Plugin.auth.viewList" => "Просмотр", - "Plugin.auth.setting" => "Настройка", - "Plugin.auth.status" => "Включение/выключение", - "Plugin.auth.install" => "Установка / удаление", - "Explorer.UI.openWith" => "выбрать приложение для файла", - "Explorer.UI.openWithText" => "просмотреть файл в блокноте", - "Explorer.UI.appSetDefault" => "Выбрать приложение...", - "Explorer.UI.appAwaysOpen" => "Установить для всех файлов этого типа", - "Explorer.UI.selectAppDesc" => "Выберите приложение для открытия этого файла", - "Explorer.UI.selectAppWarning" => "Выберите приложение", - "Explorer.UI.appTypeSupport" => "Поддерживаемые", - "Explorer.UI.appTypeAll" => "Все приложения", - "kodApp.oexe.edit" => "Изменить oexe приложение", - "kodApp.oexe.open" => "Открыть oexe приложение" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/si/about.html b/plugin/document/kod/config/i18n/si/about.html deleted file mode 100644 index af75ca14a..000000000 Binary files a/plugin/document/kod/config/i18n/si/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/si/edit.html b/plugin/document/kod/config/i18n/si/edit.html deleted file mode 100644 index 8018b275c..000000000 --- a/plugin/document/kod/config/i18n/si/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    පොහොසත් ක්රියාකාරිත්වය

                    -

                    කේතය ස්වයංක්රීයව විමසනු

                    -

                    බහු-තේමාව: ඔබේ ප්රියතම වැඩසටහන් ශෛලිය තෝරන්න

                    -

                    රේගු අකුරු: ස්ථානයට භාවිතය සඳහා

                    -

                    බහු කර්සරය සංස්කරණය, වාරණ සංස්කරණය සමඟ අමුත්තන් වැඩසටහන් අත්දැකීම් ඇති උදාර සමාන

                    -

                    නවන අවහිර, පුළුල්; එතුම

                    -

                    බහු ටැබ් සඳහා සහයෝගය, වහරුගත අනුක්රමය ඇදගෙන;

                    -

                    බහු ලේඛන පවත්වාගෙන යාම, සොයා හා ප්රතිස්ථාපනය කරන්න; ඉතිහාසය;

                    -

                    ස්වයංක්රීය සම්පූර්ණ [], {}, (), '' ''

                    -

                    ඔබ සමඟ අමුත්තන් වැඩසටහන් ආදරය කරන්න ඉඩ දෙන ඔන්ලයින් තත්ය කාලීන පෙරදසුනෙහි!

                    -

                    සහයෝගය zendcodeing, කේතය අසූ ලියන්න

                    -

                    තවත් අංග ඔබේ සොයා ගැනීම සඳහා බලා ......

                    -
                    -
                    -

                    කේතය අවධාරණය වර්ග 150 ක්

                    -

                    ඉඟිය: HTML, JavaScript, CSS, අඩු, sass, scss

                    -

                    වෙබ් සංවර්ධනය: php, perl බසට ලං, පිඹුරා, වැස්මේ රතු කැට, elang, යන්න ...

                    -

                    සම්ප්රදායික භාෂා: ජාවා, C, C ++, C #, actionScript, VBScript ...

                    -

                    වෙනත්: අති, කටු, sql, lua, xml, yaml ...

                    -
                    -
                    -
                    -
                    -

                    කෙටි මග ක්රියාකාරී

                    -
                     පොදුවේ භාවිතා කෙටිමං: 
                    - Ctrl + s බේරා ගැනීමට 
                    - ctrl + ඒ සියලු Ctrl + x කපා තේරීම් 
                    - Ctrl + ඇ Ctrl + V පාප්ප පිටපතක් 
                    - Ctrl + z පෙතක් පෙතක් විරෝධී Ctrl + y 
                    - වෙනුවට Ctrl + F + F සොයා ගැනීමට Ctrl + F 
                    - + Alt + 0 බිඳ වැටීම දිනා සියලු දිනා + Alt + Shift + 0 සියල්ල දිග 
                    - esc [පිටවීමේ සෝදිසි අවලංගු විමසනු ...] 
                    - Ctrl-මාරුව-S පෙරදසුන 
                    - Ctrl-මාරුව ඊ පෙන්වන්න & වසන්න ක්රියාව 
                    -
                    -
                     තෝරන්න: 
                    - මවුස් Marquee - රෝධය 
                    - SHIFT + home / අවසන් / ඉහළ / වම් / පහළ / දකුණු 
                    - + PageUp / PageDown මාරු තෝරා ගැනීමට ඉහළ සහ පහළ ගියහොත් 
                    - Ctrl + SHIFT + home / ආරම්භය හා අවසානය දක්වා වත්මන් කර්සර් අවසන් 
                    - Alt + මූසිකය, වාරණ තෝරා ඇදගෙන 
                    - Ctrl + Alt + g කණ්ඩායම තේරීම් සහ වත්මන් බහු-ටැබ් කර්තෘ ඇතුළු 
                    -
                    -
                     කර්සරය: 
                    - නිවස / අවසන් / ඉහළ / වම් / පහළ / දකුණු 
                    - Ctrl + home / අවසන් ලියවිල්ල හිස / වලිගය වෙත කර්සරය ගෙන යන්න 
                    - ටැගය ඇතුලේ Ctrl + පි වෙත පනින්න 
                    - pageUp / PageDown කර්සරය ඉහළ සහ පහළ 
                    - Alt + රේඛාව ඉහළ යන්න වම් / දකුණු කර්සරය 
                    - පේළි අග දක්වා SHIFT + වම් / දකුණු කර්සරය සහ 
                    - නිශ්චිත පේලිය දක්වා පනින්න Ctrl + l 
                    - Ctrl + Alt + ඉහළ / පහළ (පහළ) කර්සරය වැඩි 
                    -
                    -
                     Edit: 
                    - Ctrl + / පරිකථනය සහ uncomment Ctrl + Alt + අ සාධාරණද 
                    - වගුව ටැබ් ජවිපෙත් SHIFT + මේසය සමස්ත දියුණුව වගුව 
                    - සමස්ත මාර්ගය ctrl මකා + ඈ මකා මකා 
                    - Ctrl + නිවැරදි වචනය මත පේළිය ඉවත් කිරීමට මකා 
                    - වම් පැත්තේ යන වචනය ඉවත් කිරීමට ctrl / SHIFT + backspace 
                    - Alt + ඉහළ / පහළ + මාරු හා එහි පිටපත රේඛාව (පහත දක්වා ඇති) තලය එකතු 
                    - Alt + කර්සරය ඇති අයිතිය අන්තර්ගතය මකාදැමීමට මකා 
                    - alt වත්මන් මාර්ගය හා රේඛාව (ඊළඟ රේඛාව විනිමය) මත + ඉහළ / පහළ 
                    - ctrl + ඈ පේළි පිටපත් මාරු පහත සඳහන් එකතු 
                    - Ctrl + යන වචනය දකුණු මැකීමට මකා 
                    - ඔබ සිම්පල් බවට පරිවර්තනය Ctrl + SHIFT + 
                    - Ctrl + u තෝරාගත් අකුරු වෙත පෙළ 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/si/help.html b/plugin/document/kod/config/i18n/si/help.html deleted file mode 100644 index facca13f9..000000000 --- a/plugin/document/kod/config/i18n/si/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    ගොනුව කළමනාකරණ
                    -

                    ගොනුව: ෙත්රීම් ගුවන් විදුලි, මූසිකය Marquee, මාරු මැතිවරණ, යතුරු පුවරු ඉහළ සහ පහළ, අහඹු ලෙස තෝරා ctrl, Home, End වරණය.

                    -

                    ගොනුව මෙහෙයුම: ගොනු තෝරාගත් පසුව, ඔබ, පිටපත් කිරීමට ඔබ හට හැකිය කපා, මකා දැමීම, සම්පීඩන ගුණ බැලීම, නැවත නම් කරන්න, විවෘත පෙරදසුන සහ අනෙකුත් මෙහෙයුම් ......

                    -

                    ගොනුව උඩුගත කිරීම: උඩුගත බහු ගොනු කණ්ඩායම; HTML5 රෝධය upload (ඇද සීමා මායිම් නොමැතිව කවුළුව, ඇද උඩුගත සහ ෆෝල්ඩර සඳහා සහයෝගය අත් දක්වා)

                    -

                    අයිතිය ක්රියාව: දකුණු-ගොනු, ෆෝල්ඩර, හරි, වැඩි අයිතිය මැතිවරණ ක්රියාන්විතය, ඩෙස්ක්ටොප්, හරි, හරි බහලුම් වෘක්ෂය, හරි බලා මෙනුව කෙටි මං පසු
                    - (සියලුම තෝරන්න - Copy - කපන්න - අලවන්න - Delete - නැවත නම් කරන්න සකස් ......)

                    -

                    ගොනුව බ්රව්සරය: ලැයිස්තු ක්රමය, අයිකනය මාදිලිය; උප බහලුම් තුළට ද්වි-ක්ලික් කරන්න; ලිපින තීරුව මෙහෙයුම් ෆොල්ඩරයක් වාර්තා contrarian වාර්තාව විවෘත (ඉදිරි පියවරක් සහ)

                    -

                    සහයෝගය ඇද අතහරින්න: රෝධය පරීක්ෂා කරන්න, සඳහන් ෆෝල්ඩරය ක්රියාව සාක්ෂාත් කර කපා

                    -

                    කෙටි මං යතුරු: delete මකා දැමීම සඳහා, Ctrl + A සියලු තේරීම්, Ctrl + C කාර්යය පිටපත් කිරීමට, + X Cut, ගොනු, සොයන්න (සෙවුම් අන්තර්ගතය) ctrl

                    -
                    -
                    -
                    ගොනුව පෙරදසුන
                    -

                    ගොනු පෙරදසුන: පෙළ ගොනුවකට සංස්කරණය අන්තර්ගතය නැරඹීමට හා ගලවා html, swf ගොනුව පෙරදසුනෙහි,

                    -

                    රූප පෙරදසුන: සිඟිති ස්වයංක්රීය පරම්පරාව, ප්රතිරූපය මෙහෙදීම;

                    -

                    දෘශ්ය ධාවනය: අන්තර්ජාල සංගීත හා දෘශ්ය ගොනු වාදනය; mp3, WMA, මැද, AAC, ඩබ්ලිව්ඒවී සහයෝගය දීම, mp4,

                    -

                    වීඩියෝ: අන්තර්ජාල වීඩියෝ ධාවනය කර, සහය ආකෘති: flv, f4v, 3gp

                    -

                    කාර්යාලය: කාර්යාලය ඔන්ලයින් පෙර දැක්මක් ලෙසින්ය, මෘදුකාංග වල සහයෝගය: ලේඛය, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    කෙටි මාර්ග
                    -

                    විවෘත ඇතුළු

                    -

                    ctrl + ඒ සියලු තේරීම්

                    -

                    තෝරාගත් පිටපත් කිරීමට ctrl + c

                    -

                    ඇලවීම Ctrl + V

                    -

                    Ctrl + x කපා

                    -

                    වත්මන් බහාළුම සෙවීමට Ctrl + F

                    -

                    alt + n නව ගොනුව

                    -

                    Alt + මීටර් නව බහාලුමක්

                    -

                    තෝරාගත් මකන්න මකන්න

                    -

                    backspace ආපසු

                    -

                    Ctrl + backspace ඉදිරියට

                    -

                    F2 ප්රතිනම්කෙරුම් තෝරා ඇති (ෆෝල්ඩරය)

                    -

                    නිවස / අවසන් / ඉහළ / පහළ / වම් / ගොනුව තෝරා ගැනීමට අයිතිය

                    -

                    ස්වයංක්රීය චක්රය තෝරාගත් ස්වභාවය ගොනු සහ ෆෝල්ඩර මුල් ලිපිය ඔබන්න anykey පරීක්ෂා කරන්න

                    -
                    diff --git a/plugin/document/kod/config/i18n/si/main.php b/plugin/document/kod/config/i18n/si/main.php deleted file mode 100644 index e38f6d672..000000000 --- a/plugin/document/kod/config/i18n/si/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "කරුණාකර ගොනුව තෝරන්න ...", - "path_api_select_folder" => "කරුණාකර ෆෝල්ඩරය තෝරන්න ...", - "path_api_select_image" => "කරුණාකර රූපය තෝරා ...", - "share_can_upload" => "උඩුගත ඉඩ දෙන්න", - "move_error" => "ගෙනයන්න අසාර්ථක", - "setting_basic" => "මූලික සැකසුම්", - "setting_user_sound_open" => "විවෘත ශ්රව්ය", - "setting_user_animate_open" => "විවෘත සජීවනය", - "recycle_open_if" => "පිළිසකර බඳුන විවෘත", - "recycle_open" => "විවෘත", - "setting_user_recycle_desc" => "මකාදැමීමෙන් අනතුරුව සෘජු භෞතික මකාදැමීම මකා දැමෙනු ඇත", - "setting_user_animate_desc" => "කවුළුව විවෘත සහ අනෙකුත් සජිවීකරණ", - "setting_user_sound_desc" => "මෙහෙයුම් ශබ්දය", - "setting_user_imageThumb" => "පින්තූර thumbnails", - "setting_user_imageThumb_desc" => "විවෘත කිරීමෙන් පසුව වඩා හොඳ නැරඹුම් අත්දැකීමක්", - "setting_user_fileSelect" => "ගොනු අයිකනය පරීක්ෂා කරන්න", - "setting_user_fileSelect_desc" => "ගොනු අයිකනය යතුර පරික්ෂා කර, දකුණු-ක්ලික් කර මෙනු කෙටිමං ප්රවේශය", - "qrcode" => "URL එක QR කේතය", - "theme_mac" => "මැක් අවම මෝස්තර සුදු", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "මෙට්රෝ නිල් ක්ලැසික්", - "theme_metro_green" => "මෙට්රෝ ලා කොළ", - "theme_metro_purple" => "මෙට්රෝ අලංකාර පාට, දම් පාට", - "theme_metro_pink" => "මෙට්රෝ රෝස්", - "theme_metro_orange" => "මෙට්රෝ දීප්තිමත් තැඹිලි", - "theme_alpha_image" => "දීප්තිමත් - පියාසර", - "theme_alpha_image_sun" => "දීප්තිමත් - Sunset", - "theme_alpha_image_sky" => "සංධ්වනි - නිල් අහස", - "theme_diy" => "රේගු", - "theme_diy_title" => "රේගු තේමාව සිටුවම්", - "theme_diy_background" => "පසුබිම", - "theme_diy_image" => "පින්තූරය", - "theme_diy_color_blur" => "Gradient වර්ණ", - "theme_diy_image_blur" => "පින්තූරය නොපැහැදිලි", - "theme_diy_image_url" => "ඡායාරූප ලිපිනය", - "theme_diy_color_start" => "වර්ණ ආරම්භ", - "theme_diy_color_end" => "අවසන් වර්ණ", - "theme_diy_color_radius" => "Gradient කෝණය", - "system_role_admin_set" => "පරිපාලකවරුනි ගොනු නොකර, සියළුම හිමිකම් තියෙනවා!", - "login_error_user_not_use" => "පරිශීලක අක්රීය කොට ඇත! පරිපාලක අමතන්න", - "login_error_kod_version" => "අනුවාදය ගැටුම්", - "login_error_role" => "දැක්ම අවසර පිරිසක් නොපවතියි, කරුණාකර පරිපාලක සම්බන්ධ කර", - "no_permission_group" => "ඔබ මෙම කණ්ඩායමේ නොවේ!", - "no_permission_write" => "බහලුම ලියන්න අවසර නැත", - "user" => "පරිශීලක", - "save_as" => "ලෙස සුරකින්න", - "check_update" => "යාවත්කාලීන", - "keyboard_type" => "යතුරු පුවරුව ප්රකාරය", - "font_family" => "සිංහල ෆොන්ට්", - "code_mode" => "වාග් රීතිය අවධාරණය", - "path_can_not_share" => "සහාය පමණක් ඔබේ ම ලිපි ලේඛන හුවමාරු කරන්න!", - "path_can_not_action" => "මෙම බහලුම මෙම මෙහෙයුම සඳහා පහසුකම් සපයන්නේ නැත!", - "wap_page_pc" => "පළාත් සභා අනුවාදය", - "wap_page_phone" => "ජංගම", - "image_size" => "රූප මාන", - "no_permission_action" => "ඔබ මෙම අවසර නැත, කරුණාකර පරිපාලක සම්බන්ධ!", - "path_is_root_tips" => "එය මූල ඩිරෙක්ටරිය සඳහා පැමිණ ඇත!", - "kod_group" => "සංවිධානය", - "my_kod_group" => "මම ඉන්නෙ දෙපාර්තමේන්තුවේ", - "space_tips_default" => "(GB) 0 සීමාවක්", - "space_tips_full" => "සීමා කරන්නේ නැතිව", - "space_size" => "අභ්යවකාශ", - "space_size_use" => "ඉඩ භාවිතා", - "space_is_full" => "ඉතිරිව ඇති ඉඩ ප්රමාණවත් නැත, කරුණාකර පරිපාලකයා අමතන්න!", - "system_open_true_path" => "සාර්ථකව ගොනු කළමනාකරු විවෘත!", - "group_role_error" => "කාර්යභාරය අවසර දෝෂයක් (කිසිදු අවසරයක් සැකසුම්)", - "group_role_error_admin" => "ප්රමාණවත් අවසර", - "markdown_content" => "පටුන", - "system_group" => "පරිශීලකයන් සහ දෙපාර්තමේන්තු", - "system_group_edit" => "දෙපාර්තමේන්තු කළමනාකරණය", - "system_group_role" => "කාර්යභාරය අනන්යතාව", - "system_group_create" => "නව දෙපාර්තමේන්තුව", - "system_group_name" => "දෙපාර්තමේන්තුවේ නම", - "system_group_father" => "උපරිමාධිකරණ දෙපාර්තමේන්තුව", - "system_group_add" => "උප දෙපාර්තමේන්තුව එකතු කරන්න", - "system_group_remove" => "දෙපාර්තමේන්තුව ඉවත් කරන්න", - "system_group_remove_tips" => "දෙපාර්තමේන්තුව මකා දැමීමට ඔබට සහතිකද?
                    පරිශීලකයාගේ කොටසක් මකා දැමීමෙන් ඉවත් කරනු ලබන අතර, උප අංශයට මූල අංශයට මාරුවී ඇත", - "system_group_select" => "දෙපාර්තමේන්තුව තෝරන්න", - "system_group_select_result" => "සාමාජිකයන් පහත සඳහන් අංශ අයිති වන්නේය", - "system_role_admin_tips" => "සටහන්: පද්ධති පරිපාලකයන්ට පාලනය කිරීමට අවසර නැත", - "system_member_action" => "පරිශීලක කළමනාකරණ", - "system_member_add" => "නව පරිශීලක", - "system_member_role" => "අවසර චරිත", - "system_member_role_select" => "තෝරන්න", - "system_member_password_tips" => "ෙවනස්කරන ලද පිරවීම එපා", - "system_set_home_path" => "රේගු නාමාවලිය", - "system_set_home_path_tips" => "පෙරනිමි බහලුම හිස්", - "system_member_group" => "දෙපාර්තමේන්තුව කොහෙද?", - "system_member_group_edit" => "කර්තෘ මන්ඩලය", - "system_member_remove" => "පරිශීලක Delete", - "system_member_remove_tips" => "delete පරිශීලක තහවුරු?
                    පරිශීලක බහලුම මකා පසු සම්පූර්ණයෙන්ම මැකෙනු ඇත", - "system_member_set_role" => "තෝරාගත් පරිශීලක කණ්ඩායම් අවසර වෙනස් තහවුරු කිරීමට?", - "system_member_remove_group" => "තීරණය තෝරාගත් පරිශීලක පිරිසක් මෙම කණ්ඩායම ඉවත් වන්නේ කෙසේද?", - "system_member_import" => "තොග එකතු", - "system_member_import_desc" => "එක් පේළියකට එක් පරිශීලකයෙක්
                    දැනටමත් පවතින නිහඬව නොසලකා හරිනු ලැබේ", - "system_member_use" => "සක්රිය කරන්න", - "system_member_unuse" => "අක්රීය", - "system_member_space" => "පරිශිලක ඉඩ ප්රමාණය සකසන්න ", - "system_member_space_tips" => " පරිශිලක ඉඩ ප්රමාණය සකසන්න ", - "system_member_space_number" => " අංකයක් විය යුතුයි!", - "system_member_group_config" => "කණ්ඩායම සැකසුම් ෙදපාර්තෙම්න්තුව", - "system_member_group_remove" => "දෙපාර්තමේන්තුවෙන් ඉවත් කරන ලදි", - "system_member_group_insert" => "දෙපාර්තමේන්තුවට එක් කරන්න", - "system_member_group_reset" => "දෙපාර්තමේන්තුව යළි පිහිටුවන්න", - "system_member_group_error" => "දෙපාර්තමේන්තුවේ දෝෂය", - "system_group_action" => "දෙපාර්තමේන්තු කළමනාකරණය", - "system_role_add" => "කාර්යභාරය හැඳුනුම්පත් එකතු කරන්න", - "system_role_read" => "කියවීමට පමණක්", - "system_role_write" => "කියවීමට සහ ලිවීමට හැකි", - "system_setting_root_path" => "root ප්රවේශය", - "system_setting_root_path_desc" => "පමණක් පද්ධති පරිපාලක සියලු බහලුම් ප්රවේශ විය හැකි, පරිශීලකයන් අනෙකුත් අයිතිවාසිකම් කණ්ඩායම් පමණක් තම පරිශීලක බහලුම බලන්න පුළුවන්. ඔබ හෝ අක්රිය කිරීමට අවශ්ය නම්
                    වෙනත් බහලුම් සඳහා පරිපාලක ප්රවේශ, ඔබ, හරස් ප්රති-අඩවිය පරාමිතීන් open_basedir මෙය php වෙනස් කළ හැක", - "system_group_role_title" => "දෙපාර්තමේන්තු අධිකාරී භූමිකා කළමනාකරණය", - "system_group_role_remove" => "දෙපාර්තමේන්තුවේ භූමිකාව මකා දැමීමට හරි", - "system_group_role_style" => "ශෛලිය", - "system_group_role_display" => "යන්න", - "system_group_role_display_desc" => "දෙපාර්තමේන්තු පරිශීලක හිමිකම් ප්රදර්ශනය කිරීමට හෝ නොකිරීමට සකසන්න", - "role_type_name_read" => "කියවන්න", - "role_type_name_read:list" => "ගොනුව ලැයිස්තුව", - "role_type_name_read:info" => "ගොනුව (ෆෝල්ඩරය) දේපල දැක්ම, ෆෝල්ඩරය සොයා", - "role_type_name_read:copy" => "ගොනු පිටපත් කිරීම", - "role_type_name_read:preview" => "ගොනුව පෙරදසුනෙහි (පින්තූර, ලිපි ලේඛන, ශ්රව්ය සහ වීඩියෝ)", - "role_type_name_read:download" => "ගොනුව (ෆෝල්ඩරය) බාගත", - "role_type_name_write" => "ලියන්න", - "role_type_name_write:add" => "ගොනුව (ෆෝල්ඩරය) නිර්මාණය කරන්න, එම සම්පීඩිත ගොනුව ලබා ගැනීම", - "role_type_name_write:edit" => "සංස්කරණය කිරීමට හෝ ගොනුව සුරකින්න", - "role_type_name_write:change" => "නැවත නම් කරන්න, මෙම බහලුම් ආකෘතිය වෙනස්", - "role_type_name_write:upload" => "ගොනු (ෆෝල්ඩරය) උඩුගත කරන්න, දුරස්ථ බාගත", - "role_type_name_write:remove" => "ගොනු (ෆෝල්ඩරය) මකා දැමීම, කපා", - "group_guest" => "නරඹන්නන්", - "group_guest_desc" => "ඔබ දෙපාර්තමේන්තුවේ සාමාජිකයෙක් නොවේ,
                    පහත සඳහන් අන්තර්ගතයන් සඳහා, කියවීමට පමණක් අවසර ලබා ගත හැකිය.", - "group_role_lebel_desc" => "ඔබ මෙම දෙපාර්තමේන්තුවෙහි සාමාජිකයෙක් වන අතර,
                    දෙපාර්තමේන්තුව තුළ ඇති සියළුම ලේඛන පරිපාලක විසින් සියලුම හිමිකම් වෙන් කර ඇත.", - "button_save_and_add" => "සුරැකීමට සහ එකතු කිරීම කරගෙන", - "path_cannot_search" => "බහලුම මෙම සෝදිසි සහාය නොදක්වයි!", - "not_support" => "පහසුකම් සපයන්නේ නැත!", - "group_not_exist" => "පරිශීලක කාණ්ඩ නොපවතියි!", - "upload_clear_all" => "සියලු දේ ඉවත්", - "upload_clear" => "පැහැදිලි සම්පූර්ණ", - "upload_setting" => "සකසන්න", - "upload_tips" => "php.ini සීමාව යටත් තවදුරටත් පෙත්තක් උඩුගත, භාවිතා කරයි; නිර්දේශ ක්රෝමියම් ෆෝල්ඩරය ඇද උඩුගත අත්දැකීම් අතහැර", - "upload_exist" => "මෙම නම සහිත ගොනුවක්", - "upload_exist_rename" => "නැවත නම් කරන්න", - "upload_exist_replace" => "ආවරණය", - "upload_exist_skip" => "ඔබ ලොගින් වී නොමැත", - "upload_add_more" => "තොග එකතු", - "more" => "තවත්", - "system_setting" => "System Settings", - "openProject" => "මෙම ව්යාපෘතිය කර්තෘ විවෘත", - "url_download" => "බාගත", - "url_link" => "ලිපිනය දාම පිටත", - "app_type_link" => "කෙටි මාර්ග", - "createLink" => "කෙටි මග නිර්මාණය", - "createLinkHome" => "ඩෙස්ක්ටොප් කෙටිමං යවන", - "createProject" => "කර්තෘ ව්යාපෘතිය එකතු", - "only_read" => "කියවීමට පමණක්", - "only_read_desc" => "බහලුම ඔබ සේවාදායකය මත මෙම බහලුම සඳහා අවසර සැකසිය හැක
                    ලියන්න අවසර නැත", - "not_read" => "කියවීමට නොහැක", - "explorerNew" => "kod සබැඳිය", - "zip_download_ready" => "සම්පීඩන ස්වයංක්රීයව download ඇත පසු, කරුණාකර රැදී සිටින්න ...", - "set_background" => "පරිගණක බිතුපත ලෙස සකසන්න", - "share" => "බෙදාගන්න", - "my_share" => "මගේ කොටස", - "group_share" => "බාහිර හුවමාරු කිරීම", - "share_edit" => "කොටස බෙදාගන්න", - "share_remove" => "බෙදාගැනීම අවලංගු කරන්න", - "share_remove_tips" => "හුවමාරු කිරීම අවලංගු කිරීමට අවශ්ය බව ඔබට විශ්වාසද? පොදු සම්බන්ධතාවය අවලංගු වේ.", - "share_path" => "මාර්ගය බෙදාගන්න", - "share_title" => "සම්පත් බෙදාහදා ගැනීම", - "share_name" => "මාතෘකාව බෙදාගන්න", - "share_time" => "කල් ඉකුත් වීම්", - "share_time_desc" => "Null පිහිටුවා නැත", - "share_password" => "රහස් පදය උපුටා ගැනීම", - "share_password_desc" => "හිස් මුරපදයක් පිහිටුවා නැත", - "share_cancle" => "Unsharing", - "share_create" => "පොදු සම්බන්ධයක් ඇති", - "share_url" => "හවුල් ලිපින", - "share_not_download" => "බාගත තහනම", - "share_not_download_tips" => "පංගුකාරයෙක් බාගත තහනම්!", - "share_code_read" => "code reader", - "share_save" => "වින්යාස සුරකින්න", - "share_error_param" => "පරාමිතිය දෝෂයක්!", - "share_error_user" => "පරිශීලක තොරතුරු දෝෂ!", - "share_error_sid" => "මෙම දැන්වීම නොපවතියි!", - "share_error_time" => "ඔබ ප්රමාද එන්න, කොටස් කල් ඉකුත් වී ඇත!", - "share_error_path" => "හවුල් ගොනුව නොපවතියි, එය මකා දමන හෝ එය ඉවත් කර ඇත!", - "share_error_password" => "මුරපදය වැරදි!", - "share_error_show_tips" => "මෙම වර්ගයේ ගොනු පෙරදසුනෙහි සහාය නොදක්වයි!", - "share_view_num" => "Views:", - "share_download_num" => "බාගත කිරීම්:", - "share_open_page" => "හවුල් පිටුව විවෘත", - "open_the_path" => "බහලුම නියම කරන්න", - "recycle_clear" => "හිස් කුණු කූඩයට", - "recycle_clear_success" => "හිස් කුණු කූඩයට සාර්ථකත්වය!", - "recycle_clear_info" => "ඔබ කුණු කූඩයට සම්පූර්ණයෙන්ම හිස් කිරීමට ඔබට විශ්වාසද?", - "fav_remove" => "එකතු අවලංගු කරන්න", - "remove_item" => "අයිතම", - "uploading" => "උඩුගත", - "upload_tips_more" => "බොහෝ ගොනු, එම සම්පීඩිත උඩුගත නිර්දේශය, එවිට සමඟ අමුත්තන් unzip!", - "uploading_move" => "සමීර් මාරු කිරීමේදී ...", - "show_file" => "නව පිටුවක් පෙරදසුනෙහි", - "unknow_file_title" => "ගොනු විවෘත ඉඟිය!", - "unknow_file_tips" => "ඔබ, ඔබට හැකි මෙම ගොනුවේ අයදුම්පත් සහයෝගය දුන්නේ නැහැ:", - "unknow_file_try" => "උත්සාහ කරන්න", - "unknow_file_download" => "ගොනුව බාගත", - "unknow_plugin_search" => "සොයන්න සම්බන්ධ අයදුම්පත් ස්ථාපනය", - "config_save_error_auth" => "වින්යාස බේරා ගැනීමට අපොහොසත් විය, පරිපාලක වරප්රසාද තහනම්!", - "config_save_error_file" => "දෝෂය, ගොනුව, ලිවිය-හැකි ගොනුවක් නොවේ!", - "beautify_code" => "කේතය හැඩසවිගන්වනය", - "convert_case" => "නඩුව පරිවර්තනය", - "convert_upper_case" => "අකුරු වෙත පරිවර්ථනය", - "convert_lower_case" => "සිම්පල් බවට පරිවර්තනය", - "editor_insert_time" => "වත්මන් වේලාව ", - "editor_md5" => " Md5 ගුප්තකේතනය ", - "editor_qrcode" => " අක්ෂර ද්විමාන කේතය ", - "editor_regx" => " නිසි ප්රකාශණ පරීක්ෂණය ", - "editor_chinese" => " සරල පරිවර්තනයක් ", - "editor_chinese_simple" => " සරල චීන වෙත පරිවර්තනය කරන්න ", - "editor_chinese_traditional" => " සම්ප්රදායික චීන වලට පරිවර්තනය කරන්න ", - "editor_base64" => "Base64 කෝඩෙක්ස් ", - "editor_base64_encode" => " Base64 කේතනය ", - "editor_base64_decode" => " Base64 විකේතනය ", - "editor_url" => " URL කෝඩෙක්ස් ", - "editor_url_encode" => " URL කේතීකරණය ", - "editor_url_decode" => " URL විකේතනය ", - "editor_unicode" => " යුනිකෝඩ් කෝඩෙක් ", - "editor_unicode_encode" => " යුනිකෝඩ් කේතීකරණ ", - "editor_unicode_decode" => " යුනිකෝඩ් විකේතනය", - "editor_tools_select_tips" => " කරුණාකර පරිවර්තනය කිරීමට අවශ්ය අන්තර්ගතය තෝරන්න!", - "editor_calc" => "නිදහස් කැල්ක්යුලේටරය", - "shortcut" => "කෙටි මාර්ග", - "use_free" => "නිදහස් අනුවාදය භාවිතා කිරීමට දිගටම", - "learn_more" => "තවත් ඉගෙන ගන්න", - "replace" => "ආදේශ", - "selectAll" => "තෝරන්න", - "reload" => "රීලෝඩ්", - "about" => "මත", - "complete_current" => "එහි වත්මන් ස්වයංක්රීය-අවසන්", - "view" => "දැක්ම", - "tools" => "මෙවලම", - "help" => "උදවු", - "not_exists" => "නොපවතියි", - "group_role_fileDownload" => "භාගත", - "group_role_share" => "මෙම දැන්වීම", - "users_share" => "බෙදා", - "system_setting_save" => "ආරක්ෂක සැකසුම්", - "system_setting_menu" => "මෙනු කළමනාකරණය", - "system_name" => "වැඩසටහන නම", - "system_name_desc" => "වැඩසටහන ලාංඡනය හිමිකම්", - "system_desc" => "වැඩසටහන විස්තරය", - "path_hidden" => "නාමාවලිය බැහැර", - "version_not_support" => "ඔබේ ප්රකාශය මෙම පහසුකම් සපයන්නේ නැත, දියුනු අනුවාදය මිලදී ගැනීමට නිල වෙබ් අඩවිය වෙත යන්න කරුණාකරලා!", - "version_not_support_number" => "සීමා සංඛ්යාව මෙම මෙහෙයුම සඳහා පහසුකම් සපයන්නේ නැත ලෙස, නිල වෙබ් අඩවිය දියුණු මිලදී කරුණාකරලා!", - "path_hidden_desc" => "දිස් නොවේ සැකසුම මගින් බහලුම් සහ ගොනු, කොමාවකින් වෙන්", - "new_user_folder" => "නව පරිශීලක පෙරනිමි බහලුම නිර්මාණය කරයි", - "new_user_folder_desc" => "කොමාවකින් වෙන්", - "new_user_app" => "නව පරිශීලක සුපුරුදු යෙදුමක් නිර්මාණය කරයි", - "new_user_app_desc" => "ඉල්ලුම්පත් මධ්යස්ථානය, කොමාවකින් වෙන් බහුත්වයක්", - "auto_login" => "නරඹන්නන් ස්වයංක්රීය පිවිසුම්", - "auto_login_desc" => "ප්රකෘති පිවිසුම් පරිශීලකguest/guestආරාධිත අමුත්තා / ආරාධිත අමුත්තා; විවෘත කිරීමෙන් පසු පරිශීලක පවතින බව සහතික කිරීමට", - "first_in" => "පෙරනිමි පිවිසිමෙන්ද පසු", - "version_price_free" => "නිදහස්", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "ඩිරෙක්ටරියට ලිවිය නොහැකි, කියවීමට-ලියන්න පසුව නැවත උත්සාහ කරන්න ඩිරෙක්ටරියේ සහ සියලු උප බහලුම් තබා!", - "menu_name" => "මෙනු නම", - "menu_hidden" => "සඟවන්න", - "menu_show" => "ප්රදර්ශනය", - "menu_move_down" => "බිම", - "menu_move_up" => "දක්වා", - "menu_move_del" => "Delete", - "menu_open_window" => "නව කවුළුවක විවෘත කරන්න", - "menu_sub_menu" => "උපමෙනු", - "url_path" => "url එක ලිපිනය", - "url_path_desc" => "url එක ලිපිනය හෝ JS කේතය", - "no_permission_read" => "ඔබ කියවා කිරීමට අවසර නැත!", - "no_permission_download" => "ඔබ බාගත කිරීම සඳහා ඔබට අවසර නැත!", - "php_env_check" => "මෙහෙයුම් පරිසරයක් අධීක්ෂණ:", - "php_env_error" => "Php පුස්තකාල අතුරුදහන්", - "php_env_error_ignore" => "නොසලකා හරින්න සහ ඇතුළු", - "php_env_error_version" => "PHP අනුවාදය 5.0 ට වඩා අඩු විය නොහැක", - "php_env_error_path" => ", ලිවිය-හැකි ගොනුවක් නොවේ", - "php_env_error_list_dir" => "ඔබේ වෙබ් සේවාදායකය මෙම අංගය අක්රීය, ආරක්ෂක හේතූන් ලක්ෂණය ලැයිස්තුගත බහලුම විවෘත කරයි!කෙසේද?", - "php_env_error_gd" => "Php GD පුස්තකාල සිඟිති රුව භාවිතා කරන්න, නැතහොත් එම කේතය, විවෘත විය යුතු නිසි ලෙස ක්රියාත්මක නොවන", - "install_login" => "ඔබ පහත සඳහන් ගිණුම් පිවිසුම් භාවිතා කළ හැකිය", - "install_enter" => "මෙම පද්ධතිය", - "install_user_default" => "පරිපාලක: {0} / (නියම මුරපදයක් පහත දක්වා ඇති)
                    සාමාන්ය භාවිත: {1}
                    ආගන්තුක පරිශීලකයන්ට: {2}", - "login_root_password" => "පරිපාලක මුරපදය සකසන්න", - "login_root_password_repeat" => "නැවත මුරපදය තහවුරු", - "login_root_password_equal" => "මුරපද දෙක නොගැලපේ!", - "login_root_password_tips" => "පරිපාලක මුරපදය සකසන්න!", - "forget_password" => "ඔබගේ මුර පදය අමතකද", - "forget_password_tips" => "අමතකද පරිපාලක මුරපදය:
                    සේවාදායකය නැවත සකස් ./data/system/install.lock මකා ලොග් වන්න;

                    නොවන පරිපාලක මුරපදය අමතකද:
                    නැවත සකස් කිරීමට පරිපාලක සම්බන්ධ කරන්න!", - "copyright_desc" => "Kodexplorer වූ කීර්තිමත්ම වෙබ් ලේඛන කළමනාකරණ පද්ධතිය, ඔබ එය අභ්යන්තර ලේඛනයක් කළමනාකරණය සඳහා, පවා webIDE සෘජුවම සංවර්ධනය භාවිතා කළ හැකි හෝ දායකත්වය, වෙබ් අඩවිය කළමනාකරණ සේවාදායකය මත භාවිතා කල හැක, FTP වෙනුවට. ඔබ ද ඔබගේ දැනට පවතින පද්ධති තුළට මෙම ඒකාබද්ධ කිරීමට දෙවැනි සංවර්ධන වැඩසටහන හැක.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "KodExplorer විසින් තල්ලු", - "kod_name" => "KodExplorer", - "kod_name_desc" => "අඹ වලාකුළක් • එක්ස්ප්ලෝරර්", - "kod_power_by" => " - Powered KodExplorer විසින්", - "kod_name_copyright" => "අඹ වලාකුළක් • එක්ස්ප්ලෝරර්", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao වලාකුළු, වලාකුළු අඹ, ලේඛන කළමනාකරණ පද්ධති, ව්යාපාර වලාකුළු තැටි, ගවේෂකයා ,, සබැදි ලියකියවිලි, සමඟ අමුත්තන් කාර්යාලය, සමඟ අමුත්තන් කාර්යාලය, සමඟ අමුත්තන්, Auto CAD, පෙරදසුනෙහි, සමඟ අමුත්තන් සංස්කරණය , සමඟ අමුත්තන් කර්තෘ", - "kod_meta_description" => "KodExplorer පාර වසා හැක (කලින් වලාකුළු අඹ) ආරක්ෂිත සහ පාලනය, සරල හා පහසු සැලසීමට රජය / ආයතනික පෞද්ගලික වලාකුළු හා පෞද්ගලික වෙබ් අඩවි සඳහා මාර්ගගත ලේඛන කළමනාකරණ පද්ධතිය, ව්යාපාර පෞද්ගලික Cloud යෙදවීම්, ජාල ගබඩා, සමඟ අමුත්තන්, ලේඛන කළමනාකරණ, සමඟ අමුත්තන් කාර්යාලයේ සපයන මෙරට ප්රමුඛ වේ භාවිතා කරන අතර, ඉතා අභිරුචි පෞද්ගලික Cloud නිෂ්පාදන. තවදුරටත් එකිනෙකින් වෙන් කල නොහැකි පෞද්ගලික සිට, ඉක්මනින් ආරම්භ කිරීමට අනුවර්තනය කිරීමට තොරව කවුළු ශෛලිය අතුරු මුහුණත, මෙහෙයුම් පුරුදු, භාවිතා කරමින්, ජනප්රිය සමඟ අමුත්තන් පෙරදසුනෙහි ගොනු ආකෘතිය සිය ගණනක් සහාය, ප්ලේබැක් හා සංස්කරණය පරිසර හිතකාමී, බලවත්, එක් වතාවක් නඩු විභාගයට වලාකුළු වෙත.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "ලොගින් වන්න", - "guest_login" => "ආරාධිත අමුත්තා සයින්", - "username" => "ලොග් ගිණුම", - "userNickName" => "පරිශීලක අන්වර්ථ නාමය", - "password" => "රහස් පදය", - "login_code" => "කේත", - "need_check_code" => "ලොගින් වන්න සත්යාපන කේතය විවෘත", - "need_check_code_desc" => "පිවිසීමෙන් පසු, ඔබ සත්යාපන කේතය ඇතුලත් කල යුතුය.", - "setting_csrf_protect" => "විවෘත csrf ආරක්ෂාව", - "setting_csrf_protect_desc" => "ප්රහාරය වර්ගය විවෘත කිරීමෙන් අනතුරුව ඵලදායී csrf ආරක්ෂා කළ හැකි", - "login_rember_password" => "රහස් පදය මතක තබා ගන්න", - "setting_show_root_group" => "සියලුම දෙපාර්තමේන්තු ලැයිස්තුගත කරන්න", - "setting_show_root_group_desc" => "සියලුම දෙපාර්තමේන්තු ලැයිස්තුගත කර ඇත්දැයි තෝරන්න", - "setting_show_share_user" => "සියළු පරිශීලකයන් හට ඇති ලැයිස්තුවක්", - "setting_show_share_user_desc" => "සියලු පරිශීලකයන් සමඟ බෙදාගැනීම සඳහා වෘතායේ නාමාවලිය root දෙපාර්තමේන්තුව ලැයිස්තුගත කර ඇත", - "setting_clear_user_recycle" => "සියළුම පරිශීලකයින් සඳහා පිළිසකර බඳුනට හිස්", - "setting_clear_cache" => "හැඹිලි හිස්", - "setting_icp" => "කතුහිමිකම හෝ වාර්තාගත", - "setting_global_css" => "අභිරුචි ගෝලීය CSS", - "setting_global_css_desc" => "සියළුම පිටු අභිරුචි CSS ඇතුල් වනු ඇත", - "setting_global_html" => "සංඛ්යාන කේතය HTML", - "setting_global_html_desc" => "සියළුම පිටු මේ ඡේදය html කේතය ඇතුළත් කළ බව කේතය තෙවන පාර්ශවීය සංඛ්යා ලේඛන ඉදිරිපත් කළ හැකි", - "us" => "රුවල් ජාලය ස්ටූඩියෝ", - "login_not_null" => "පරිශීලක නාමය හා මුරපදය හිස් විය නොහැක!", - "code_error" => "දෝෂ කේත", - "password_error" => "පරිශීලක නාමය හෝ මුරපදය වැරදියි!", - "password_not_null" => "රහස් වචනය හිස් විය නොහැක!", - "old_password_error" => "පැරණි මුරපදය වැරදියි!", - "permission" => "අවසර!", - "permission_edit" => "අවසර වෙනස් කරන්න", - "file_info_owner" => "හිමිකරු", - "file_info_group" => "සමූහ", - "no_permission" => "පරිපාලක වරයා මෙම වරප්රසාදය අක්රිය කොට ඇත!", - "no_permission_ext" => "පරිපාලක ගොනු අවසරයන් මෙම වර්ගය තහනම්", - "dialog_max" => "උපරිම", - "dialog_min" => "අවම", - "dialog_min_all" => "සියලු අවම", - "dialog_display_all" => "කවුළු සියල්ල පෙන්වන්න", - "dialog_close_all" => "සියලු සමීප", - "open" => "විවෘත", - "others" => "වෙනත්", - "open_with" => "සඳහා විවෘත ...", - "close" => "සමීප", - "close_all" => "සියලු සමීප", - "close_left" => "වම් ටැබ් වසන්න", - "close_right" => "අයිතිය ටැබ් සමීප", - "close_others" => "වෙනත් සමීප", - "loading" => "මෙහෙයුම ...", - "warning" => "අවවාදයයි", - "getting" => "ලබා ...", - "sending" => "දත්ත සම්ප්රේෂණ ...", - "data_error" => "දත්ත දෝෂ!", - "get_success" => "සාර්ථකත්වය ලබා ගන්න!", - "save_success" => "සාර්ථකව ගබඩා වුනා!", - "success" => "සාර්ථක මෙහෙයුම", - "error" => "මෙහෙයුම අසාර්ථකයි", - "error_repeat" => "මෙම මෙහෙයුම නම දැනටමත් පවතී, අසාර්ථක විය!", - "word_error" => "අසමත් විය ", - "word_success" => " සාර්ථකත්වය", - "system_error" => "පද්ධතිය දෝෂ", - "name" => "නම", - "type" => "වර්ගය", - "contain" => "අඩංගු", - "address" => "ස්ථානය", - "size" => "තරම", - "byte" => "බයිට", - "path" => "පාත්", - "action" => "මෙහෙයුම්", - "create_time" => "නිර්මාණය", - "modify_time" => "නවීකරණය කරන ලද", - "last_time" => "පසුගිය සංචාරය", - "sort_type" => "වර්ග විසින්", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "රාජ්ය නාමාවලියේ", - "system_path_not_change" => "පද්ධතිය බහලුම, වෙනස් කළ නොහැකියි", - "file" => "ගොනුව", - "folder" => "ෆෝල්ඩරය", - "copy" => "පිටපතක්", - "past" => "දණ්ඩ", - "clone" => "පිටපතක් නිර්මාණය", - "cute" => "ෂෙයාර්", - "cute_to" => "වෙත ගෙන යන්න ...", - "copy_to" => "පිටපත් කරන්න ...", - "remove" => "Delete", - "remove_force" => "සම්පූර්ණයෙන් ඉවත්", - "info" => "ඉඩකඩම්", - "list_type" => "දැක්ම", - "list_icon" => "icon අරා", - "list_list" => "ලැයිස්තුව සකස්", - "list_list_split" => "තීරුව මාදිලිය", - "sort_up" => "වර්ධකය", - "sort_down" => "දිළි", - "order_type" => "වර්ග විසින්", - "order_desc" => "බැස", - "order_asc" => "යද්දි", - "rename" => "නැවත නම් කරන්න", - "add_to_fav" => "පින්තුරට එක් කරන්න", - "search_in_path" => "ෆොල්ඩර search", - "add_to_play" => "ධාවන ලැයිස්තුව එකතු කරන්න", - "manage_fav" => "කළමනාකරණය කරන්න", - "refresh_tree" => "නැවුම් කරන්න බහලුම් වෘක්ෂය", - "manage_folder" => "නාමාවලිය කළමනාකරණ", - "close_menu" => "සමීප මෙනුව", - "zip" => "සම්පීඩිත ඇසුරුමක් සාදන්න", - "unzip" => "උපුටා ගැනීම ...", - "unzip_folder" => "ෆෝල්ඩරයකට Unzip", - "unzip_this" => "වත්මන් කිරීමට උපුටාගන්න", - "unzip_to" => "උපුටා ගැනීම ...", - "zipview_file_big" => "එම ගොනුව පෙරදසුනෙහි මෙහෙයුම උපුටා පසුව ලොකු වැඩියි, සහ!", - "clipboard" => "දැක්ම පසුරු පුවරුවට", - "clipboard_clear" => "හිස් පසුරු පුවරුවට", - "full_screen" => "පූර්ණ තිරය", - "folder_info_item" => "අයිතම", - "folder_info_item_select" => "තෝරා ගන්නා", - "file_load_all" => "සියලු පැටවීම සඳහා ද්වි-ක්ලික් කරන්න ......", - "tips" => "කඩිනම්", - "ziping" => "Zipping ...", - "unziping" => "නිස්සාරණය ...", - "moving" => "ජංගම මෙහෙයුම ...", - "remove_title" => "තහවුරු Delete", - "remove_info" => "තෝරාගත් අයිතමය මකා දැමීමට තහවුරු?", - "remove_title_force" => "සදහටම මකා", - "remove_info_force" => "ඔබ ස්ථිර ලෙස මෙම ලේඛනය මැකීමට අවශ්යද?", - "name_isexists" => "වැරදි, නම දැනටමත් පවතී!", - "install" => "ස්ථාපනය", - "width" => "පළල", - "height" => "මහ", - "app" => "ආලෝකය අයදුම්පත්", - "app_store" => "ආලෝකය අයදුම්පත්", - "app_create" => "අයදුම් නිර්මාණය", - "app_edit" => "අයදුම්පත වෙනස් කරන්න", - "app_group_all" => "සම්පූර්ණ", - "app_group_game" => "ගේම්", - "app_group_tools" => "මෙවලම", - "app_group_reader" => "කියවන්න", - "app_group_movie" => "රූපවාහිනී", - "app_group_music" => "සංගීත", - "app_group_life" => "ජීවිතය", - "app_group_others" => "වෙනත්", - "app_desc" => "විස්තරය", - "app_icon" => "අයදුම්පත් අයිකනය", - "app_icon_show" => "url එක ලිපිනය හෝ බහලුම", - "app_group" => "අයදුම් පැකැට්ටුව", - "app_type" => "වර්ගය", - "app_type_url" => "ලින්ක්", - "app_type_code" => "JS දීර්ඝ", - "app_display" => "බාහිර", - "app_display_border" => "දේශසීමා රහිත (එනම් borderless තෝරන්න)", - "app_display_size" => "ප්රථිප්රමාණය කරන්න (ගැලපුම් පරික්ෂා කරන්න)", - "app_size" => "තරම", - "app_url" => "ලින්ක් ලිපිනය", - "app_code" => "JS කේතය", - "edit" => "සංස්කරණය කරන්න", - "edit_can_not" => "නෑ පෙළ ගොනුවකට", - "edit_too_big" => "ගොනුව ඉතා විශාල වන අතර, එය 40M වඩා වැඩි විය නොහැකි", - "open_default" => "පෙරනිමි විවෘත", - "open_ie" => "බ්රව්සරය විවෘත", - "refresh" => "නැවුම් කරන්න", - "refresh_all" => "එය නැවුම් කරන්න බල", - "newfile" => "නව ගොනුව", - "newfile_save_as" => "සුරකින්න", - "newfolder" => "නව බහාලුමක්", - "newothers" => "නව වෙනත්", - "path_loading" => "Loading ...", - "go" => "ඇවිදින්න!", - "go_up" => "ඉහළ ස්ථරය", - "history_next" => "ඉදිරි", - "history_back" => "රිට්රීට්", - "address_in_edit" => "සංස්කරණය මාදිලිය ඇතුළු කිරීමට ක්ලික් කරන්න", - "double_click_rename" => "වෙත ප්රතිනම්කරන ද්වි-ක්ලික් කරන්න", - "double_click_open" => "විවෘත කිරීමට දෙක්ලික් කරන්න", - "path_null" => "ෆෝල්ඩරය හිස්!", - "file_size_title" => "icon තරම", - "file_size_small_super" => "අති-කුඩා", - "file_size_small" => "කුඩා අයිකන", - "file_size_default" => "අයිකන", - "file_size_big" => "විශාල අයිකන", - "file_size_big_super" => "විශාල අයිකන", - "upload" => "උඩුගත", - "upload_ready" => "උඩුගත කිරීම සදහා බලා", - "upload_success" => "සාර්ථක උඩුගත", - "upload_path_current" => "වත්මන් බහාළුම මාරුවෙන්න", - "upload_select" => "ගොනුව තෝරන්න", - "upload_max_size" => "උපරිම සීමාව", - "upload_size_info" => "ඔබට වඩා මාන කිරීම සඳහා අවශ්ය නම්, php.ini උපරිම උඩුගත වෙනස් කරන්න. ඔබ මෙම සැකසුම ස්වයංක්රීයව ඉවත් කරන ඇත වඩා විශාල ගොනුවක් තෝරන්න විට.", - "upload_error" => "උඩුගත කිරීම අසාර්ථක", - "upload_error_http" => "ජාල හෝ ෆයර්වෝල් දෝෂ", - "upload_muti" => "බහු-ගොනු උඩුගත", - "upload_drag" => "උඩුගත drag and drop", - "upload_drag_tips" => "උඩුගත කිරීමට ලිහිල්!", - "path_not_allow" => "ගොනු නාමය ඉඩ නැත", - "download" => "බාගත", - "downloading" => "Loading ...", - "download_address" => "බාගත", - "download_ready" => "බාගත කරනු ඇත", - "download_success" => "සාර්ථකත්වය බාගත!", - "download_error" => "බාගත කිරීම අසමත්!", - "download_error_create" => "දෝෂයක් ලියන්න!", - "download_error_exists" => "අසාර්ථක ගොනු සබැඳිය!", - "upload_error_null" => "ගොනුව නැත!", - "upload_error_big" => "ගොනු විශාලත්වය සේවාදායකය සීමාවන් ඉක්මවා", - "upload_error_move" => "ගොනුව ගමන් කිරීම අසාර්ථක විය!", - "upload_error_exists" => "මෙම ගොනුව දැනටමත් පවතී", - "upload_local" => "පළාත් උඩුගත", - "download_from_server" => "දුරස්ථ බාගත", - "save_path" => "පාත් සුරකින්න", - "upload_select_muti" => "තේරිය ගොනු උඩුගත ක බහුත්ව", - "search" => "සොයන්න", - "searching" => "සොයමින් ...", - "search_result" => "ප්රතිඵල සොයන්න", - "seach_result_too_more" => "බොහෝ සෙවුම් ප්රතිඵල, එය බහලුම හෝ වචන සඳහා නිර්දේශ කරනු ලැබේ", - "search_null" => "ප්රතිඵල නෑ!", - "search_uplow" => "නඩුව සංවේදී", - "search_content" => "සොයන්න ගොනුව අන්තර්ගතය", - "search_info" => "සෝදිසි කාලීන හා සෝදිසි මාර්ග ඇතුලත් කරන්න!", - "search_ext_tips" => "උදාහරණයක් php සඳහා | JS | CSS
                    පෙරනිමි පෙළ ගොනුවක් සෝදිසි පිරෙන්නේ නැත; වෙන් | විසින්", - "file_type" => "ගොනු වර්ගයක්", - "goto" => "වෙත පනින්න", - "server_dwonload_desc" => "කාර්ය සාධක බාගත ලැයිස්තුවට එක් කරන ලදී", - "parent_permission" => "මව් බහලුම අවසර", - "root_path" => "මගේ ලේඛන", - "lib" => "ගබඩාවේ", - "fav" => "Bookmark", - "desktop" => "ඩෙස්ක්ටොප්", - "browser" => "බ්රව්සරය", - "my_computer" => "මගේ පරිගණක", - "recycle" => "කුණු කූඩයට", - "my_document" => "මගේ ලේඛන", - "my_picture" => "මගේ ඡායාරූප", - "my_music" => "මගේ සංගීත", - "my_movie" => "මගේ වීඩියෝ", - "my_download" => "මගේ භාගත", - "ui_desktop" => "ඩෙස්ක්ටොප්", - "ui_explorer" => "ගොනුව කළමනාකරණ", - "ui_editor" => "කර්තෘ", - "adminer" => "adminer", - "ui_project_home" => "ව්යාපෘති මුල් පිටුව", - "ui_login" => "ලොගින් වන්න", - "ui_logout" => "ක්විට්", - "setting" => "System Settings", - "setting_title" => "විකල්ප", - "setting_user" => "පුද්ගලික මධ්යස්ථානය", - "setting_password" => "මුරපදය වෙනස්", - "setting_password_old" => "පැරණි මුරපදය", - "setting_password_new" => "දක්වා සංශෝධනය", - "setting_language" => "භාෂා සැකසුම්", - "setting_member" => "පරිශීලක කළමනාකරණ", - "setting_group" => "පරිශීලක කණ්ඩායම් කළමණාකරණ", - "setting_group_add" => "පරිශීලක සමූහය එකතු කරන්න", - "setting_group_edit" => "පරිශීලක කණ්ඩායම් සංස්කරණය කරන්න", - "setting_theme" => "තේමාව සිටුවම්", - "setting_wall" => "බිත්ති සැකසීම්", - "setting_wall_desktop" => "ඩෙස්ක්ටොප්", - "setting_wall_desktop_list" => "ඩෙස්ක්ටොප් කළමනාකරණය", - "setting_wall_login_list" => "බෝල්ඩර් කළමණාකරණය", - "setting_wall_login_tips" => "ඉඟිය: එක් කෑල්ලක් වඩා වැඩි විට, පිවිසුම් මුහුණත පසුබිම අහඹු ලෙස භ්රමණය වේ", - "setting_wall_diy" => "රේගු ෙවෝල් ෙප්පර්:", - "setting_wall_info" => "පින්තූරය url එක ලිපිනය, දේශීය පින්තූර රූපය විවෘත කිරීම සඳහා බ්රව්සරය ලබා ගැනීමට අයිතිය විය හැක", - "setting_fav" => "Bookmark කළමනාකරු", - "setting_help" => "උදවු භාවිතා කරමින්", - "setting_about" => "ක්රියා ගැන", - "setting_success" => "අපෙ බලපෑමක් කර ඇත!", - "can_not_repeat" => "නැවත නැවත කිරීමට ඉඩ දුන්නේ නැහැ", - "absolute_path" => "නිරපේක්ෂ ලිපිනය", - "group" => "පරිශීලක කණ්ඩායම්", - "data_not_full" => "දත්ත අසම්පූර්ණ ඉදිරිපත්!", - "default_user_can_not_do" => "පෙරනිමි පරිශීලක ක්රියාත්මක කළ නොහැකි", - "default_group_can_not_do" => "පෙරනිමි පරිශීලක කණ්ඩායම් ක්රියාත්මක කළ නොහැකි", - "username_can_not_null" => "පරිශීලක නාමය හිස් විය නොහැක!", - "groupname_can_not_null" => "පරිශීලක කාණ්ඩ නම හිස් විය නොහැක!", - "groupdesc_can_not_null" => "පරිශීලක සමූහය විස්තරය හිස් විය නොහැක!", - "group_move_user_error" => "පරිශීලක සමූහය භාවිතා කරන්නන් ගමන් අසාර්ථක", - "group_already_remove" => "පරිශීලක කණ්ඩායම් මකා දමා ඇත", - "group_not_exists" => "මෙම පරිශීලකයා පිරිසක් නොපවතියි", - "member_add" => "පරිශීලක එකතු කරන්න", - "password_null_not_update" => "ඔවුන් සම්පූර්ණ කරන ලද නොවේ ඔවුන් මුරපදය වෙනස් නොවන බවද ඔහු කීවේය", - "if_save_file_tips" => "සමහර ගොනු සුරකිනු නැත. ඔබ කවුළුව වසා දැමීමට විශ්වාසද?", - "if_save_file" => "ගොනුව, සුරක්ෂිත කර ඇත නැහැ ඔයා ආරක්ෂා කිරීමට අවශ්ය?", - "if_remove" => "මකන්න තහවුරු", - "member_remove_tips" => "ඔබ පරිශීලක බහලුම ඉවත් කිරීමෙන් පසු ඉවත් කරනු ඇත", - "group_remove_tips" => "ඔබ පරිශීලකයන් හට ඇති පරිශීලක කණ්ඩායම ඉවත් කිරීමෙන් පසු
                    ලොග් නොහැකි (නැවත ඇති කිරීමට පරිශීලක කණ්ඩායම් අවශ්ය වේ)", - "group_name" => "පරිශීලක කණ්ඩායම් නාමය", - "group_name_tips" => "නිර්දේශ ඉදිරිපත් කිරීම ඉංග්රීසි නම, නැවත නැවතත් භාවිතා කළ නොහැකි", - "group_desc" => "ප්රදර්ශනය නම", - "group_desc_tips" => "සමූහ නාමය විස්තරය", - "group_role_ext" => "ව්යාප්ති සීමා", - "group_role_ext_tips" => "බහු | වෙන්", - "group_role_file" => "ගොනුව කළමනාකරණ", - "group_role_upload" => "උඩුගත ඉඩ දෙන්න", - "group_role_user" => "පරිශීලක දත්ත", - "group_role_group" => "පරිශීලක කණ්ඩායම් කළමණාකරණ", - "group_role_member" => "පරිශීලක කළමනාකරණ", - "group_role_mkfile" => "නව ගොනුව", - "group_role_mkdir" => "නව බහාලුමක්", - "group_role_pathrname" => "නැවත නම් කරන්න", - "group_role_pathdelete" => "ගොනු මකා දැමීමට", - "group_role_pathinfo" => "ගොනුව දේපළ", - "group_role_pathmove" => "Move (copy / සැපයුම අත්හිටුවන / පේස්ට් / රෝධය මෙහෙයුම)", - "group_role_zip" => "සම්පීඩන", - "group_role_unzip" => "Unzip", - "group_role_search" => "සොයන්න", - "group_role_filesave" => "සංස්කරණය කිරීමට ගොනුව සුරකින්න", - "group_role_can_upload" => "අප්ලෝඩින් සහ ඩවුන්ලෝඩින්", - "group_role_download" => "දුරස්ථ බාගත", - "group_role_passowrd" => "මුරපදය වෙනස්", - "group_role_config" => "වින්යාස දත්ත", - "group_role_fav" => "Bookmark මෙහෙයුම් (එකතු කරන්න / සංස්කරණය / ඉවත්කිරීම)", - "action_list" => "ලැයිස්තුව බලන්න", - "action_add" => "එක් කරන්න", - "action_edit" => "සංස්කරණය කරන්න", - "action_del" => "Delete", - "group_role_ext_warning" => "එවැනි ගොනු ඉඩ දෙන්නේ නැහැ උඩුගත කරන්න,
                    ප්රතිනම්කෙරුම් (දක්වා ඇති දීර්ඝ නම වෙනස්),
                    සංස්කරණය කිරීම හා ඉතිරි, දුරස්ථ බාගත, සාරය", - "group_tips" => "
                  23. 1. කණ්ඩායම් නාම නාමය අනුකලනය කළ නොහැක. කණ්ඩායම් නාමය වෙනස් වූ පසු, එය ප්රතිෂ්ඨාපනය කරන ලද පරිශීලකයාට අයත් වන අතර ස්වයංක්රීයව සම්බන්ධ වේ.
                  24. 2. දිගු කිරීම් පද්ධති ආරක්ෂාව අතර සම්බන්ධතාවය සීමා කරයි, කරුණාකර ප්රවේශම් වන්න (ඔබ නව වෙබ් අඩවි නාමාවලියක නව PHP එකක් සාදා නම්, එයින් අදහස් කෙරෙනුයේ මෙම පරිශීලකයාට වැඩසටහන් වල අවසරයන් වෙනස් කිරීම යනු පාඨමාලාවක් පමණි)
                  25. 3. ගෘහස්ත කළමනාකරණය, හිමිකම් කණ්ඩායම් කළමනාකරණය, නැරඹීමේ අයිතිවාසිකම් සහ හිමිකම් එකතු කිරීම, මකා දැමීම හා වෙනස් කිරීම බැඳී ඇති අතර වැඩසටහන් ස්වයංක්රියව සම්බන්ධ වේ
                  26. අවසර අවසර පත්රය අවසර අවසර කණ්ඩායමට එකතු කිරීමෙන් පසු පසුව අවසරය උරුම නොවේ (මෙම අවසරය ඉහළම අවසරයට සමාන වේ).
                  27. ", - "not_null" => "අවශ්ය ක්ෂේත්ර හිස් විය නොහැක!", - "picture_can_not_null" => "ඡායාරූප හිස් විය නොහැක!", - "rname_success" => "සාර්ථකත්වය නැවත නම් කරන්න!", - "please_inpute_search_words" => "සෙවීමට වැලක් ඇතුලත් කරන්න", - "remove_success" => "සාර්ථකව මකා!", - "remove_fali" => "අසාර්ථක Delete!", - "clipboard_null" => "පසුරු පුවරුවට හිස්!", - "create_success" => "නව සාර්ථකත්වය!", - "create_error" => "නව බහලුම අවසර පරීක්ෂා කරන්න, අසමත්!", - "copy_success" => "[පිටපත්] - රැඳවුම් පුවරුවේ සාර්ථකත්වය ආවරණය වන පරිදි!", - "cute_success" => "[කපා] - රැඳවුම් පුවරුවේ සාර්ථකත්වය ආවරණය වන පරිදි!", - "clipboard_state" => "පසුරු පුවරුවට තත්වය:", - "no_permission_write_all" => "මෙම ගොනුවට හෝ ඩිරෙක්ටරියට ලිවිය නොහැකි", - "no_permission_write_file" => "මෙම ගොනුව ලියන්න අවසර නැත", - "no_permission_read_all" => "මෙම ගොනුවට හෝ ඩිරෙක්ටරියට කිසිදු කියවීමට අවසර ඇත", - "copy_not_exists" => "මූලාශ්රය නොපවතියි", - "current_has_parent" => "ඉලක්ක ෆෝල්ඩරය මූලාශ්රය ෆෝල්ඩරය ක නමම වේ!", - "past_success" => "පාප්ප ක්රියාන්විතය අවසන් වන", - "cute_past_success" => "කපා මෙහෙයුම (අලවයි, හිස් මූල ගොනුව මකා) අවසන්", - "zip_success" => "සම්පීඩන අවසන්", - "not_zip" => "සංරක්ෂණය නැහැ", - "zip_null" => "නෑ තෝරාගත් ගොනුවට හෝ ඩිරෙක්ටරියට", - "unzip_success" => "සම්පූර්ණ Unzip", - "gotoline" => "රේඛාව වෙත පනින්න", - "path_is_current" => "මාර්ගය සහ එම විවෘත කිරීමට වත්මන් වන්න!", - "path_exists" => "නම දැනටමත් පවතී!", - "undo" => "කිරීම අහෝසි", - "redo" => "විරෝධී ටෝල්ස්ටෝයි", - "preview" => "පෙරදසුන", - "wordwrap" => "එතුම", - "show_gutter" => "අංක නොපෙන්වීම", - "char_all_display" => "අදෘශ්යමාන චරිත පෙන්වන්න", - "auto_complete" => "ස්වයංක්රීයව ලබාදෙන විමසුම්", - "auto_save" => "ස්වයංක්රීයව සුරකින්න", - "function_list" => "ක්රියාව ලැයිස්තුව", - "code_theme" => "ෙ ත ස්ටයිල්", - "font_size" => "අකුරු ප්රමාණය", - "confirm" => "ඔබට මෙය කිරීමට අවශ්ය බව ඔබට විශ්වාසද?", - "button_ok" => "තීරණය", - "button_submit" => "ඉදිරිපත්", - "button_set" => "සකසන්න", - "button_cancel" => "අවලංගු", - "button_edit" => "සංස්කරණය කරන්න", - "button_save" => "සුරකින්න", - "button_apply" => "අයදුම් කරන්න", - "button_save_all" => "සියලු සුරකින්න", - "button_not_save" => "ඉතිරි කරන්න එපා", - "button_add" => "එක් කරන්න", - "button_back_add" => "ආපසු එකතු කිරීමට", - "button_del" => "Delete", - "button_save_edit" => "වෙනස්කම් සුරකින්න", - "button_save_submit" => "සුරකින්න ඉදිරිපත්", - "button_more" => "තවත්", - "button_select_all" => "සියලු / Module talk තෝරාගැනුම ප්රතිලෝම කරන්න තෝරන්න", - "charset_AUTO" => "ස්වයංක්රීය හඳුනා ගැනීම", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "අරාබි", - "charset_ISO_8859_6" => "අරාබි", - "charset_ISO_8859_10" => "කඩිමුඩියේ මෙවැනි භාෂා", - "charset_CP1257" => "බෝල්ටික් භාෂා", - "charset_ISO_8859_13" => "බෝල්ටික් භාෂා", - "charset_ISO_8859_4" => "බෝල්ටික් භාෂා", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "ජෝර්ජියානු", - "charset_PT154" => "කසක්", - "charset_CP949" => "කොරියානු", - "charset_EUC_KR" => "කොරියානු", - "charset_GB18030" => "සරල චීන", - "charset_GBK" => "සරල චීන", - "charset_ISO_8859_14" => "සෙල්ටික්", - "charset_CP1133" => "ලාඕ", - "charset_ISO_8859_16" => "රුමේනියානු", - "charset_ISO_8859_3" => "දකුණු යුරෝපීය", - "charset_EUC_JP" => "ජපන්", - "charset_ISO_2022_JP" => "ජපන්", - "charset_SHIFT_JIS" => "ජපන්", - "charset_KOI8_T" => "ටජික් භාෂාව", - "charset_ISO_8859_11" => "තායි", - "charset_TIS_620" => "තායි", - "charset_CP1254" => "තුර්කි", - "charset_CP1251" => "සිරිලික්", - "charset_ISO_8859_5" => "සිරිලික්", - "charset_KOI8_R" => "සිරිලික්", - "charset_KOI8_U" => "සිරිලික්", - "charset_CP1252" => "බටහිර යුරෝපීය භාෂා", - "charset_ISO_8859_1" => "බටහිර යුරෝපීය භාෂා", - "charset_ISO_8859_15" => "බටහිර යුරෝපීය භාෂා", - "charset_Macintosh" => "බටහිර යුරෝපීය භාෂා", - "charset_CP1255" => "හෙබ්රෙව්", - "charset_ISO_8859_8" => "හෙබ්රෙව්", - "charset_CP1253" => "ග්රීක", - "charset_ISO_8859_7" => "ග්රීක", - "charset_ARMSCII_8" => "ආර්මේනියානු", - "charset_CP1258" => "වියට්නාම්", - "charset_VISCII" => "වියට්නාම්", - "charset_CP1250" => "මධ්යම යුරෝපීය භාෂා", - "charset_ISO_8859_2" => "මධ්යම යුරෝපීය භාෂා", - "charset_default_set" => "ගොනුව කේතනය", - "charset_convert_save" => "ලෙස කේතනය ගොනුව සුරකින්න", - "PluginCenter" => "ප්ලග් මධ්යස්ථානය", - "PluginBuy" => "බලය ලබා ගැනීම", - "PluginInstalled" => "ස්ථාපනය කර ඇති", - "PluginUpdate" => "යාවත්කාලීන", - "PluginListNull" => "කිසිදු අන්තර්ගතයට පවතී!", - "PluginType" => "වර්ගීකරණය", - "PluginTypeAll" => "සම්පූර්ණ", - "PluginTypeFile" => "වැඩි දියුණු ගොනුව", - "PluginTypeSafe" => "ආරක්ෂක මෙවලම්", - "PluginTypeTools" => "උපයෝගීතා", - "PluginTypeMedia" => "බහුමාධ්ය", - "PluginTypeOthers" => "වෙනත්", - "PluginInstall" => "ප්ලග් ස්ථාපනය", - "PluginEnable" => "ප්ලග්-ඉන් සක්රිය කරන්න", - "PluginDisable" => "අක්රීය", - "PluginRemove" => "මෙම ප්ලග් අස්ථාපනය", - "PluginConfig" => "ප්ලගිනය සකසන්න", - "PluginStatus" => "රාජ්ය", - "PluginStatusEnabled" => "සක්රීය", - "PluginStatusDisabled" => "සක්රීය කොට නැත", - "PluginStatusNotInstall" => "ස්ථාපනය කර නැත", - "PluginInstalling" => "ස්ථාපනය ...", - "PluginHasUpdate" => "යාවත්කාලීන", - "PluginUpdateStart" => "යාවත්කාලීන පේනු මෘදුකාංගය", - "PluginNeedConfig" => "මූලික සැකසුම් සක්රීය කිරීම අවශ්ය", - "PluginConfigNotNull" => "අවශ්ය ක්ෂේත්ර හිස් විය නොහැක!", - "PluginOpen" => "විවෘත", - "PluginAuther" => "කර්තෘ", - "PluginVersion" => "සංස්කරණය", - "PluginDownloadNumber" => "ස්ථාපනය", - "PluginBack" => "ආපසු", - "PluginReadme" => "විස්තරය", - "PluginResetConfig" => "පෙරනිමි සැකසුම් නැවත ස්ථාපනය කරන්න", - "PluginInstallSelf" => "ශ්රමික ස්ථාපනය", - "Plugin.config.auth" => "අවසර", - "Plugin.config.authDesc" => "ලබා ගත හැකි සැකසුම් සියලු, හෝ පරිශීලකයන්, පරිශීලක කණ්ඩායම්, අයිතිවාසිකම් කණ්ඩායම් භාවිතා කළ හැකි නියම", - "Plugin.config.authOpen" => "විවෘත ප්රවේශය", - "Plugin.config.authOpenDesc" => "බාහිර අතුරු මුහුණත ඇමතුම සඳහා භාවිතා කළ හැක", - "Plugin.config.authAll" => "දරන්නා", - "Plugin.config.authUser" => "පරිශීලක", - "Plugin.config.authGroup" => "තනතුර දෙපාර්තමේන්තුව", - "Plugin.config.authRole" => "හිමිකම් කන්ඩායම", - "Plugin.Config.openWith" => "විවෘත ශෛලිය", - "Plugin.Config.openWithDilog" => "අභ්යන්තර සංවාද", - "Plugin.Config.openWithWindow" => "නව පිටුව විවෘත කරයි", - "Plugin.Config.fileSort" => "දීර්ඝ සංගමය ප්රමුඛ", - "Plugin.Config.fileSortDesc" => "ඉහළ ප්රමුඛතාවක් විවෘත කිරීම සඳහා විශාල දීර්ඝ", - "Plugin.Config.fileExt" => "ආධාරක ගොනු ආකෘති", - "Plugin.Config.fileExtDesc" => "මෙම පේනු මෘදුකාංගය සමග සම්බන්ධ දීර්ඝ", - "Plugin.tab.basic" => "මූලික සැකසුම්", - "Plugin.tab.auth" => "අවසර", - "Plugin.tab.others" => "වෙනත් සැකසුම්", - "Plugin.default.aceEditor" => "ace කර්තෘ", - "Plugin.default.htmlView" => "වෙබ් පිටු පෙරදසුන", - "Plugin.default.picasa" => "Picasa චිත්රයක් බ්රවුසින්", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer ක්රීඩකයා", - "Plugin.auth.viewList" => "ප්ලගින ලැයිස්තුව", - "Plugin.auth.setting" => "ප්ලගින සැකසීම්", - "Plugin.auth.status" => "නිවා දමන්න", - "Plugin.auth.install" => "ස්ථාපනය / අස්ථාපනය කරන්න", - "Explorer.UI.openWith" => "විවෘත තෝරන්න", - "Explorer.UI.openWithText" => "විවෘත කිරීමට නෝට් පෑඩ්", - "Explorer.UI.appSetDefault" => "විවෘත පෙරනිමි", - "Explorer.UI.appAwaysOpen" => "මෙම ගොනුව විවෘත කිරීමට තෝරාගත් වැඩසටහන සෑම විටම භාවිතා", - "Explorer.UI.selectAppDesc" => "ඔබ මෙම ගොනුව විවෘත කිරීමට අවශ්ය වැඩසටහන තෝරා", - "Explorer.UI.selectAppWarning" => "කරුණාකර අයදුම් තෝරන්න!", - "Explorer.UI.appTypeSupport" => "සහාය දක්වන", - "Explorer.UI.appTypeAll" => "සියලුම යෙදුම්", - "kodApp.oexe.edit" => "ආලෝක යෙදුම් සංස්කරණය කරන්න", - "kodApp.oexe.open" => "ආලෝකයේ යෙදුම විවෘත" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sk/about.html b/plugin/document/kod/config/i18n/sk/about.html deleted file mode 100644 index 98f473c82..000000000 --- a/plugin/document/kod/config/i18n/sk/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer znamená čo?
                    -

                    KODExplorer je open source webový správa online dokumentov, editor kódu. Poskytuje druh klasických okien používateľského rozhrania, sadu on-line správu dokumentov, súborov náhľad, upravovať, nahrávať, sťahovať, rozbaľte on-line prehrávanie hudby. Umožňuje dosiahnuť vývoj webových aplikácií priamo v prehliadači, zdrojový kód súboru náhľad a nasadiť vlastník lokality a lokálne prevádzku ako jednoduchý, rýchly a bezpečný zážitok.

                    -

                    - design -

                    -

                    klasická tradícia, snaha o inováciu, ktorá ponúka užívateľom pohodlný, bezpečné a ľahko použiteľný on-line systém pre správu cloud.

                    -

                    kedykoľvek (keď), kde (kde), má web, kedykoľvek budete chcieť (chcete), je váš nástroj pre správu (4W politika).

                    -

                    - zamerané na používateľa -

                    -

                    v súčasnosti systém riadenia KODExplorer nachádza predovšetkým v osobné cloud hosting, malý vedenie podniku cloud zdrojov, riadenie sieťový disk, riadenie malých a stredných webov. Web Developer a Master (veteráni): online editor, komprimované zálohovanie, nasadenie, klasický operačný systém Windows rozhranie, ľahké začať a zbaviť sa hostiteľskej SSH príkazu ftp zložité vŕtacie práce.

                    -

                    osobné privátny cloud (nováčik): Network Management diskové prostriedky, rovnaká operácia klasické windows rozhranie, môžete umiestniť sieťovú jednotku hudobné súbory prezerať, obrazovky, nahrávanie a sťahovanie rýchle a jednoduché.

                    -
                    - -
                    -
                    Funkcia
                    -

                    komplexnú správu dokumentov, výkonný on-line editor súboru

                    -

                    nech ste kdekoľvek, môžete spravovať súbory a online zábavu, on-line písanie kódu! Rovnako ako vhodné na použitie ako operačný systém.

                    -

                    rozsiahle operácie hneď miestnej transplantácie skúsenosti, ťahať, výber box, skratky, vyhľadávanie súborov (vyhľadávanie obsahu) ......

                    -

                    Voľba box, drag-pohyb, drag and drop nahrávania, online editor, video prehrávač, dekompresiu. Plná záruka ajax výkon a zážitok!

                    -

                    každá funkcia priame bezproblémové pripojenie, v dialógovom forme, riadiace funkcie viacúčelové

                    -

                    Editor podporuje multi-dokumente; podpory ZendCoding html, css JS vyššiu efektivitu kódovanie!

                    -

                    dokonalá čínska podpora, skomolený riešenia rôznych situácií;

                    -
                    - -
                    -
                    open source prijatie technológie
                    -

                    1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) JS tradičné rámec rozvoja. Prevádzka prevádzky Dom, BOM, prevádzka CSS a Ajax balíček

                    -

                    2.ArtDialog:krásny dizajn, silné kompatibility prehliadačov dialóg widgetu. Takže pop-up rukoväť, udalosti a prenos dát, aby si lepšie jednotnú správu

                    -

                    3.Ztree:kontrolný zoznam strom, škálovateľnosť je veľmi silný strom údaje manipulácia widgetu

                    -

                    4.codemirror:editor kódu js pluginy, podporuje celý rad programovacích jazykov pre zvýraznenie

                    -

                    5.zendcoding:o podporu HTML kódu rýchlo písať plug-inov. Zjednodušuje definície kódu je napísaný. Jednoduché kompilácie

                    -

                    6.less:efektívne, funkčný model rozvoja css k zlepšeniu front end CSS šablóna štýlov znovupoužitelnost , Jednoduché kompilácie

                    -

                    7.SWFUpload:blesk upload

                    -

                    8 .CMP4:veľmi dobrý flash player Earth mediálnych súborov, podporu pre streaming médií, populárny nástroj pre prehrávanie hudby videa. Podpora pre kožu, vysoko konfigurovateľná nastavenia. Dynamický zoznam xml načítaný. mms streamovanie médií, RSTP open source licencie Podpora prehrávania médií

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sk/edit.html b/plugin/document/kod/config/i18n/sk/edit.html deleted file mode 100644 index 28f14723e..000000000 --- a/plugin/document/kod/config/i18n/sk/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    bohatá funkčnosť

                    -

                    Kód automaticky vyzve

                    -

                    Multi-tému: Vyberte si svoj obľúbený štýl programovania

                    -

                    Custom Font: pre použitie na scéne

                    -

                    Multi editácia kurzor, strih blok on-line skúsenosti s programovaním porovnateľná s úžasný

                    -

                    Blok skladacie, expandovať; zábal

                    -

                    Podpora pre viac kartami, pretiahnite prepínací sekvenciu;

                    -

                    Udržiavanie viac dokumentov, nájsť a nahradiť; história;

                    -

                    Auto-kompletné [], {}, () '' ''

                    -

                    Online real-time náhľad, ktorý vám umožní zamilovať sa do on-line programovanie!

                    -

                    zendcodeing podporu, písať kód osemdesiat

                    -

                    Ďalšie funkcie čaká na vaše objavenie ......

                    -
                    -
                    -

                    150 druhov kódu zvýrazňovanie

                    -

                    Tip: HTML, JavaScript, CSS, menej, Sass, SCSS

                    -

                    vývoj webových aplikácií: php, Perl, Python, Ruby, elang, go ...

                    -

                    Tradičné Jazyky: Java, C, C ++, C #, jazyk ActionScript, VBScript ...

                    -

                    Ostatné: markdown, škrupine, sql, Lua, xml, Yamli ...

                    -
                    -
                    -
                    -
                    -

                    skratka Action

                    -
                     Bežne používané skratky: 
                    - Ctrl + S uložiť 
                    - Ctrl + A Vybrať všetko Ctrl + X Vystrihnúť 
                    - ctrl + c ctrl + v pasta kópie 
                    - Ctrl + Z Undo Späť Anti ctrl + y 
                    - Ctrl + F nájsť náhradné Ctrl + F + F 
                    - win + alt + 0 zbaliť všetky win + alt + shift + 0 Rozbaliť všetko 
                    - ESC [Exit vyhľadávania automaticky zruší vyzve ...] 
                    - ctrl-shift-s Preview 
                    - ctrl-shift-e ukazujú & Close funkcie 
                    -
                    -
                     Vyber: 
                    - stan myšou - drag 
                    - shift + home / end / hore / doľava / dole / doprava 
                    - shift + PageUp / PageDown preklopiť hore a dole a vyberte 
                    - CTRL + SHIFT + home / koniec aktuálneho kurzora na začiatku a na konci 
                    - alt + myši pretiahnuť výber bloku 
                    - ctrl + alt + g šarže vyberte a vložte aktuálne multi-kartu Editor 
                    -
                    -
                     kurzor: 
                    - home / end / hore / doľava / dole / doprava 
                    - ctrl + home / koniec presuňte kurzor do dokumentu hlava / chvost 
                    - ctrl + p Prejsť na zodpovedajúce tag 
                    - PageUp / PageDown kurzora hore a dole 
                    - alt + vľavo / vpravo kurzor presunúť na začiatok riadka 
                    - Shift + ľavý / pravý kurzor na koniec riadku & 
                    - Ctrl + L pre skok na konkrétny riadok 
                    - ctrl + alt + nahor / nadol (pozri nižšie) zvýšiť kurzor 
                    -
                    -
                     edit: 
                    - ctrl + / Poznámka a odkomentovať ctrl + alt + oprávnený 
                    - Karta tabuľky zarovnanie shift + stolík celkový pokrok stôl 
                    - zmazať zmazať zmazať celý riadok ctrl + d 
                    - ctrl + delete odstrániť riadok v pravom slova 
                    - ctrl / shift + backspace odstrániť slovo vľavo 
                    - alt + shift + hore / dole a pridal sa k kopírovanie línii (pozri nižšie) lietadlo 
                    - alt + delete vymazať obsah napravo od kurzora 
                    - alt + hore / dole na aktuálny riadku a riadku (vedľa výmeny čiara) 
                    - Shift + D riadky Ctrl + kopírovaný a pridané do nasledujúceho 
                    - ctrl + delete odstrániť právo slová 
                    - CTRL + SHIFT + u prevedená na malé písmená 
                    - Ctrl + U vybraného textu na veľké písmená 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/sk/help.html b/plugin/document/kod/config/i18n/sk/help.html deleted file mode 100644 index 652766daf..000000000 --- a/plugin/document/kod/config/i18n/sk/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    správa súborov
                    -

                    Voľba súboru: rádio, myš markízy, shift-voľby, ctrl náhodne vybraných, klávesnicu hore a dole domov, výber koniec.

                    -

                    súbor operácie: Po výbere súboru, môžete kopírovať, vyberať, mazať, zobraziť vlastnosti kompresie, premenovanie, otvorený Preview a ďalších operácií ......

                    -

                    File Upload: Upload viac súborov šarže; html5 drag nahranie (ťahaním bez problémov nahrať okien, drag and drop podporu zložiek)

                    -

                    Správna funkcia: Pravým súbor, zložka, vpravo, viac tesne po operácii volieb, desktop, pravá, pravá adresárový strom, skratky ponuke pravého viazaný
                    - (Vybrať všetko - Kopírovať - ​​Vyňať - Vložiť - Odstrániť - premenovanie, súbor ......)

                    -

                    Prehliadač súborov: Režim List, symbol režimu, dvakrát kliknite do čiastkových zložiek; adresného riadku operácie, otvorí nahrávacie zložka proti prúdu záznam (dopredu a dozadu)

                    -

                    Podpora drag and drop: Skontrolujte ťahať, rezané dosiahnuť predpísané funkcia zložky

                    -

                    Klávesové skratky: odstrániť odstrániť, ctrl + A Vybrať všetko Ctrl + C pre kopírovanie, + X Vystrihnúť, vyhľadávanie súborov (vyhľadávanie obsahu) ctrl

                    -
                    -
                    -
                    súbor Preview
                    -

                    Náhľad súboru: zobraziť obsah editáciu textových súborov a úsporám; HTML, SWF súboru náhľadu

                    -

                    Image Preview: automatické generovanie náhľadov, obrazu slide show;

                    -

                    Prehrávanie zvuku: hrať online hudbu a video súbory, podporu MP3, WMA, stredné, AAC, WAV; MP4,

                    -

                    Video: online prehrávanie videa Podporované formáty: FLV, F4V, 3gp

                    -

                    office: office Online Náhľad, podporované formáty: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    skratky
                    -

                    vstúpiť Otvoriť

                    -

                    Ctrl + A Vybrať všetko

                    -

                    ctrl + c pre kopírovanie vybraného

                    -

                    Ctrl + V pre vloženie

                    -

                    ctrl + x Cut

                    -

                    ctrl + f vyhľadávať aktuálny adresár

                    -

                    alt + n Nový súbor

                    -

                    alt + m Nový priečinok

                    -

                    zmazať Zmazať vybrané

                    -

                    backspace Späť

                    -

                    ctrl + backspace vpred

                    -

                    f2 Premenovanie označené (zložka)

                    -

                    home / end / hore / dole / doľava / doprava vyberte súbor

                    -

                    Príjem každým tlač Skontrolujte, stlačte prvé písmeno znakové súbory a priečinky Výber automatický cyklus

                    -
                    diff --git a/plugin/document/kod/config/i18n/sk/main.php b/plugin/document/kod/config/i18n/sk/main.php deleted file mode 100644 index 690bedca3..000000000 --- a/plugin/document/kod/config/i18n/sk/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Prosím, vyberte súbor ...", - "path_api_select_folder" => "Prosím vyberte priečinok ...", - "path_api_select_image" => "Prosím, vyberte obrázok ...", - "share_can_upload" => "povoliť nahrávanie", - "move_error" => "presunúť zlyhalo", - "setting_basic" => "základné nastavenie", - "setting_user_sound_open" => "open Sound", - "setting_user_animate_open" => "otvorená Animácia", - "recycle_open_if" => "otvorte Kôš", - "recycle_open" => "otvorené", - "setting_user_recycle_desc" => "Po vymazaní sa odstráni priamo fyzické odstránenie", - "setting_user_animate_desc" => "Okno otvorené a ďalšie animácie", - "setting_user_sound_desc" => "Prevádzka zvuk", - "setting_user_imageThumb" => "Miniatúry obrázkov", - "setting_user_imageThumb_desc" => "Lepší zážitok z prehliadania po otvorení", - "setting_user_fileSelect" => "Otvorte kontrolu ikony súboru", - "setting_user_fileSelect_desc" => "Kontrola ľavého tlačidla ikony súboru, pravé kliknutie na položku zástupcu ponuky", - "qrcode" => "URL QR code", - "theme_mac" => "Mac minimalistické biele", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Modrá Classic", - "theme_metro_green" => "Metro svetlozelená", - "theme_metro_purple" => "Metro elegantný fialová", - "theme_metro_pink" => "metro Rose", - "theme_metro_orange" => "Metro jasne oranžová", - "theme_alpha_image" => "Bright - lietanie", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Custom", - "theme_diy_title" => "Nastavenie vlastný motív", - "theme_diy_background" => "pozadia", - "theme_diy_image" => "obrázok", - "theme_diy_color_blur" => "gradient farba", - "theme_diy_image_blur" => "obrázok rozostrenie", - "theme_diy_image_url" => "fotografie adresa", - "theme_diy_color_start" => "spustenie farba", - "theme_diy_color_end" => "koniec Color", - "theme_diy_color_radius" => "gradient uhol", - "system_role_admin_set" => "Administrátori majú všetky práva, bez nastavenia!", - "login_error_user_not_use" => "Užívateľ bol zakázaný! Prosím, obráťte sa na správcu", - "login_error_kod_version" => "konflikt verzia", - "login_error_role" => "Zobrazenie povolení skupina neexistuje, obráťte sa na správcu", - "no_permission_group" => "Nie ste v tejto skupine!", - "no_permission_write" => "Adresár nemá povolenie na zápis", - "user" => "užívateľ", - "save_as" => "uložiť ako", - "check_update" => "aktualizovať", - "keyboard_type" => "režim klávesnice", - "font_family" => "fonty", - "code_mode" => "zvýrazňovanie syntaxe", - "path_can_not_share" => "Podporuje zdieľať len svoje vlastné dokumenty!", - "path_can_not_action" => "Tento adresár nepodporuje túto operáciu!", - "wap_page_pc" => "PC verzia", - "wap_page_phone" => "mobilné", - "image_size" => "rozmery obrázku", - "no_permission_action" => "Nemáte toto oprávnenie, obráťte sa na správcu!", - "path_is_root_tips" => "To má prísť do koreňového adresára!", - "kod_group" => "organizácie", - "my_kod_group" => "Som v oddelení", - "space_tips_default" => "(GB) 0 žiadny limit", - "space_tips_full" => "bez obmedzenia", - "space_size" => "priestor", - "space_size_use" => "využitie priestoru", - "space_is_full" => "Nie je dostatok priestoru, obráťte sa na administrátora!", - "system_open_true_path" => "Úspešne otvorený v správcovi súborov!", - "group_role_error" => "Chyba oprávnenia role (bez nastavenie oprávnení)", - "group_role_error_admin" => "nedostatočná oprávnenia", - "markdown_content" => "obsah", - "system_group" => "Používatelia a oddelenia", - "system_group_edit" => "Vedenie oddelenia", - "system_group_role" => "identita Úloha", - "system_group_create" => "Nové oddelenie", - "system_group_name" => "Názov oddelenia", - "system_group_father" => "Vedúci oddelenie", - "system_group_add" => "Pridať podriadenú sekciu", - "system_group_remove" => "Odstráňte oddelenie", - "system_group_remove_tips" => "Naozaj chcete odstrániť oddelenie?
                    Po odstránení vymazania časti užívateľa sa subsektor presunie do koreňového sektora", - "system_group_select" => "Vyberte oddelenie", - "system_group_select_result" => "Členovia patria do týchto sektorov", - "system_role_admin_tips" => "Poznámky: Správcovia systému nie sú oprávnení kontrolovať", - "system_member_action" => "správa užívateľov", - "system_member_add" => "nový užívateľ", - "system_member_role" => "oprávnenie role", - "system_member_role_select" => "vybrať", - "system_member_password_tips" => "nevyplňujte neupravila", - "system_set_home_path" => "Custom Catalog", - "system_set_home_path_tips" => "Predvolený adresár je prázdny", - "system_member_group" => "Kde je oddelenie", - "system_member_group_edit" => "Redakčné oddelenie", - "system_member_remove" => "zmazať užívateľa", - "system_member_remove_tips" => "Potvrdiť zmazanie užívateľa?
                    Po odobratí adresár užívateľa bude úplne vymazaný", - "system_member_set_role" => "Pre potvrdenie zmeny vybraných oprávnenia skupín užívateľov?", - "system_member_remove_group" => "Určte vybraný užívateľ bude odstránená z tejto skupiny?", - "system_member_import" => "bulk add", - "system_member_import_desc" => "Jeden používateľ na riadok,
                    už existujú sú ignorované", - "system_member_use" => "umožniť", - "system_member_unuse" => "zakázať", - "system_member_space" => "Nastavte veľkosť používateľského priestoru ", - "system_member_space_tips" => " Nastavte veľkosť používateľského priestoru ", - "system_member_space_number" => " Musí to byť číslo!", - "system_member_group_config" => "Oddelenie nastavenia dávky", - "system_member_group_remove" => "Odstránené z oddelenia", - "system_member_group_insert" => "Pridať do oddelenia", - "system_member_group_reset" => "Obnovte oddelenie", - "system_member_group_error" => "Chyba oddelenia", - "system_group_action" => "Vedenie oddelenia", - "system_role_add" => "Pridať Identity role", - "system_role_read" => "Read-only", - "system_role_write" => "Vie čítať a písať", - "system_setting_root_path" => "root", - "system_setting_root_path_desc" => "Iba správca systému môže pristupovať ku všetkým adresára, skupiny iné práva užívateľa môžu vidieť len svoje vlastné užívateľské adresáre. Ak chcete zapnúť alebo vypnúť
                    prístup správcu do iných adresárov, môžete upraviť php open_basedir parametre anti-cross-site,nastaviť", - "system_group_role_title" => "Manažment úloh oddelenia", - "system_group_role_remove" => "Ak chcete odstrániť rolu oddelenia", - "system_group_role_style" => "štýl", - "system_group_role_display" => "či", - "system_group_role_display_desc" => "Nastavte, či sa majú zobrazovať používateľské práva oddelení", - "role_type_name_read" => "prečítať", - "role_type_name_read:list" => "zoznam súborov", - "role_type_name_read:info" => "Súbor (zložka) majetok View, hľadanie Folder", - "role_type_name_read:copy" => "file Copy", - "role_type_name_read:preview" => "Súbor náhľad (obrázky, dokumenty, audio a video)", - "role_type_name_read:download" => "Súbor (zložka) Download", - "role_type_name_write" => "zapísať", - "role_type_name_write:add" => "Vytvorte súbor (zložku), extrahovanie komprimovaného súboru", - "role_type_name_write:edit" => "Uložte súbor upravovať", - "role_type_name_write:change" => "Premenovať, upraviť štruktúru adresárov", - "role_type_name_write:upload" => "Súbor (zložka) nahrávanie, vzdialený download", - "role_type_name_write:remove" => "Súbor (zložku) odstrániť, rez", - "group_guest" => "Návštevy", - "group_guest_desc" => "Nie ste členom oddelenia,
                    môže získať prístup k [zdieľanému adresárovi oddelenia] iba nasledujúcemu obsahu, oprávneniam iba na čítanie.", - "group_role_lebel_desc" => "Ste členom tohto oddelenia,
                    Všetky dokumenty v rámci oddelenia Všetky práva vyhradené správcom", - "button_save_and_add" => "Uložiť a pokračovať v pridávaní", - "path_cannot_search" => "Adresár nepodporuje vyhľadávanie!", - "not_support" => "Nie je podporované!", - "group_not_exist" => "Užívateľ skupina neexistuje!", - "upload_clear_all" => "vymazať všetko", - "upload_clear" => "clear Dokončené", - "upload_setting" => "založiť", - "upload_tips" => "Používa plátok nahrávať, už nepodlieha php.ini hranicu; odporúča chróm zložky drag and drop nahrávania skúsenosti", - "upload_exist" => "Súbor s rovnakým názvom", - "upload_exist_rename" => "premenovať", - "upload_exist_replace" => "veko", - "upload_exist_skip" => "preskočiť", - "upload_add_more" => "bulk add", - "more" => "viac", - "system_setting" => "nastavenie systému", - "openProject" => "Otvorte editor projektu", - "url_download" => "na stiahnutie", - "url_link" => "URL", - "app_type_link" => "skratky", - "createLink" => "Vytvoriť zástupcu", - "createLinkHome" => "Zaslaná zástupcu na ploche", - "createProject" => "Pridanie do editora projektu", - "only_read" => "Read-only", - "only_read_desc" => "Adresár nemá povolenie na zápis
                    môžete nastaviť povolenia pre tento adresár na serveri", - "not_read" => "nečitateľný", - "explorerNew" => "kod odkaz", - "zip_download_ready" => "Po stlačení automaticky stiahne, čakajte prosím ...", - "set_background" => "Nastaviť ako pozadie pracovnej plochy", - "share" => "podiel", - "my_share" => "Môj podiel", - "group_share" => "Zdieľanie externých skupín", - "share_edit" => "Upraviť zdieľanie", - "share_remove" => "Zrušiť zdieľanie", - "share_remove_tips" => "Naozaj chcete zrušiť zdieľanie? Verejné pripojenie bude zrušené.", - "share_path" => "Zdieľajte cestu", - "share_title" => "Zdieľanie zdrojov", - "share_name" => "Zdieľajte názov", - "share_time" => "vypršaní", - "share_time_desc" => "Null nie je nastavený", - "share_password" => "extrakt heslo", - "share_password_desc" => "Prázdne heslo nie je nastavené", - "share_cancle" => "rušenie zdieľanie", - "share_create" => "Vytvoriť verejný odkaz", - "share_url" => "zdieľaná adresa", - "share_not_download" => "Na stiahnutie ban", - "share_not_download_tips" => "Zdieľač zakázaný stiahnutie!", - "share_code_read" => "čítačka", - "share_save" => "Uložiť konfiguráciu", - "share_error_param" => "Parameter error!", - "share_error_user" => "Informácie o užívateľovi Chyba!", - "share_error_sid" => "Podiel neexistuje!", - "share_error_time" => "Prídete neskoro, podiel vypršal!", - "share_error_path" => "Zdieľaný súbor neexistuje, je odstránené alebo stiahlo to!", - "share_error_password" => "Chybné heslo!", - "share_error_show_tips" => "Tento typ nepodporuje súboru náhľad!", - "share_view_num" => "zobrazenie:", - "share_download_num" => "Na stiahnutie:", - "share_open_page" => "Otvorte zdieľanú stránku", - "open_the_path" => "Vstup do adresára", - "recycle_clear" => "prázdny kôš", - "recycle_clear_success" => "Prázdny kôš úspech!", - "recycle_clear_info" => "Ste si istí, že chcete kompletne vyprázdniť kôš?", - "fav_remove" => "zrušte kolekcia", - "remove_item" => "predmety", - "uploading" => "nahrávanie", - "upload_tips_more" => "Príliš veľa súborov, odporúčania stlačeného nahrávanie, potom rozbaliť online!", - "uploading_move" => "Pri prenose zlúčenia ...", - "show_file" => "Nová stránka náhľad", - "unknow_file_title" => "Súbor otvoriť Tip!", - "unknow_file_tips" => "Nepodporoval použitie tohto súboru, môžete:", - "unknow_file_try" => "vyskúšať", - "unknow_file_download" => "stiahnuť súbor", - "unknow_plugin_search" => "inštalovaný vyhľadávací súvisiace s aplikáciou", - "config_save_error_auth" => "Nepodarilo sa uložiť konfiguráciu, administrátor zakázal túto výsadu!", - "config_save_error_file" => "Chyba, súbor nie je zapisovateľný!", - "beautify_code" => "code Formatter", - "convert_case" => "konverzie Case", - "convert_upper_case" => "V prepočte na veľké písmená", - "convert_lower_case" => "Prevedená na malé písmená", - "editor_insert_time" => "Aktuálny čas ", - "editor_md5" => " Šifrovanie Md5 ", - "editor_qrcode" => " Dvojrozmerný kód reťazca ", - "editor_regx" => " Testovanie regulárneho výrazu ", - "editor_chinese" => " Zjednodušená konverzia ", - "editor_chinese_simple" => " Prevod na zjednodušenú čínštinu ", - "editor_chinese_traditional" => " Prevod do tradičnej čínštiny ", - "editor_base64" => "Base64 kodek ", - "editor_base64_encode" => " Kódovanie Base64 ", - "editor_base64_decode" => " Základné dekódovanie ", - "editor_url" => " URL kodek ", - "editor_url_encode" => " Kódovanie URL ", - "editor_url_decode" => " Dekódovanie URL ", - "editor_unicode" => " Unicode kodek ", - "editor_unicode_encode" => " Kódovanie Unicode ", - "editor_unicode_decode" => " Unikódové dekódovanie", - "editor_tools_select_tips" => " Vyberte obsah, ktorý chcete konvertovať!", - "editor_calc" => "Bezplatná kalkulačka", - "shortcut" => "skratky", - "use_free" => "Naďalej používať bezplatnú verziu", - "learn_more" => "viac informácií", - "replace" => "vymeniť", - "selectAll" => "vybrať", - "reload" => "obnoviť", - "about" => "na", - "complete_current" => "Automatické dokončovanie prúdu", - "view" => "pohľad", - "tools" => "náradie", - "help" => "pomoc", - "not_exists" => "neexistuje", - "group_role_fileDownload" => "na stiahnutie", - "group_role_share" => "podiel", - "users_share" => "zdieľanie", - "system_setting_save" => "nastavenie zabezpečenia", - "system_setting_menu" => "správa nehnuteľností Menu", - "system_name" => "Názov programu", - "system_name_desc" => "názov programu logo", - "system_desc" => "opis programu", - "path_hidden" => "vylúčenie Directory", - "version_not_support" => "Vaša verzia nepodporuje, nájdete na oficiálnych stránkach ku kúpe pokročilú verziu!", - "version_not_support_number" => "Vzhľadom k tomu, počet obmedzení nepodporuje túto operáciu, je potrebné zakúpiť pokročilú verziu oficiálnych internetových stránkach!", - "path_hidden_desc" => "Adresáre a súbory v predvolenom nastavení nie sú zobrazené, oddelený čiarkami", - "new_user_folder" => "Nový užívateľ je vytvorený v predvolenom adresári", - "new_user_folder_desc" => "oddelené čiarkami", - "new_user_app" => "Nový užívateľ je vytvorený v predvolenom nastavení aplikácií", - "new_user_app_desc" => "Aplikácia Application Center, niekoľko oddelených čiarkami", - "auto_login" => "Návštevníci automatické prihlasovanie", - "auto_login_desc" => "Predvolené prihlasovacie užívateľskéguest/guestužívatelia, po otvorení, aby sa zabezpečilo, že používateľ existuje", - "first_in" => "Po prihlásení do východiskovej", - "version_price_free" => "zadarmo", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Adresár nie je zapisovateľný, nastaviť adresár a všetky podadresáre skúsiť znovu po čítaní písať!", - "menu_name" => "názov ponuky", - "menu_hidden" => "skryť", - "menu_show" => "zobraziť", - "menu_move_down" => "nadol", - "menu_move_up" => "hore", - "menu_move_del" => "vymazať", - "menu_open_window" => "Otvorenie nového okna", - "menu_sub_menu" => "podmenu", - "url_path" => "url adresa", - "url_path_desc" => "url adresa alebo js kód", - "no_permission_read" => "Nemáte povolenie na čítanie!", - "no_permission_download" => "Nemáte oprávnenie k stiahnutiu!", - "php_env_check" => "Prevádzkové prostredie monitoring:", - "php_env_error" => "Php knižnica chýba", - "php_env_error_ignore" => "Ignorovať a zadať", - "php_env_error_version" => "PHP verzia nemôže byť nižšia ako 5,0", - "php_env_error_path" => "nemožno zapisovať", - "php_env_error_list_dir" => "Webový server otvorí výpis adresára funkciu bezpečnostných dôvodov túto funkciu zakázať!ako?", - "php_env_error_gd" => "PHP GD knižnica by mala byť otvorená, inak kód, použite miniatúru nebude správne fungovať", - "install_login" => "Môžete použiť nasledovné prihlasovacie konto", - "install_enter" => "systém", - "install_user_default" => "Administrátor: {0} / (dole nastaviť heslo)
                    Priemerný užívateľ: {1}
                    Užívatelia hodnotenie: {2}", - "login_root_password" => "Nastaviť heslo správcu", - "login_root_password_repeat" => "Potvrdiť heslo znovu", - "login_root_password_equal" => "Obe heslá sa nezhodujú!", - "login_root_password_tips" => "Nastaviť heslo správcu!", - "forget_password" => "zabudnuté heslo", - "forget_password_tips" => "Zabudli heslo správcu:
                    Prosím prihláste servera zmazať ./data/system/install.lock resetovať;

                    Non-správcu Zabudli ste heslo:
                    Obráťte sa na správcu resetovať!", - "copyright_desc" => "Kodexplorer je vysoko uznávaný systém pre správu dokumentov web, môžete ho použiť pre vnútorné správu dokumentov alebo zdieľaná, možno použiť aj na serveri pre správu webu, nahradí FTP, aj keď webIDE priamo on-line rozvoja. Môžete tiež naprogramovať druhý rozvoja integrovať toto do vašich existujúcich systémov.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango cloud • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango cloud • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao oblačnosti, cloud mango, systémy pre správu dokumentov podnik cloud disk, prieskumník ,, online dokumentácie, online kancelária, online kancelária, online CAD náhľad, online editácia , online editor", - "kod_meta_description" => "KodExplorer môže cloud Road (predtým mango cloud) je popredným poskytovateľom vládnych / korporátnych privátnych cloudov a online systému pre správu dokumentov pre osobné webové stránky, firme private cloud nasadenie, sieťové úložisko, online správu dokumentov, online kancelársky poskytovať bezpečné a riadené, jednoduchý a ľahko použitie vysoko prispôsobené pre privátne cloud produktov. Použitie aplikácie Windows rozhranie v štýle, prevádzkové postupy, aby bolo nutné prispôsobiť sa rýchlo začať podporovať stovky populárnych online podobe náhľad súborov, prehrávanie a editáciu šetrných k životnému prostrediu, mocné, je jednou trial, už neoddeliteľné od súkromného cloud ponuky.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Prihlásiť", - "guest_login" => "sign", - "username" => "Prihlasovacie konto", - "userNickName" => "Prezývka používateľa", - "password" => "heslo", - "login_code" => "kódy", - "need_check_code" => "Vstup autentifikačný kód open", - "need_check_code_desc" => "Po prihlásení musíte zadať overovací kód.", - "setting_csrf_protect" => "Otvorené ochrana CSRF", - "setting_csrf_protect_desc" => "Po úvodnom typ útoku môže účinne chrániť CSRF", - "login_rember_password" => "zapamätať heslo", - "setting_show_root_group" => "Vymenujte všetky oddelenia", - "setting_show_root_group_desc" => "Kmeňové oddelenie adresára stromov, či sa majú uvádzať všetky oddelenia", - "setting_show_share_user" => "Zoznam všetkých užívateľov", - "setting_show_share_user_desc" => "Koreňové oddelenie adresára stromov je uvedené pre všetky zdieľanie používateľov", - "setting_clear_user_recycle" => "Vysypať kôš pre všetkých užívateľov", - "setting_clear_cache" => "Vyprázdniť vyrovnávaciu pamäť", - "setting_icp" => "Autorských práv alebo číslo záznamu", - "setting_global_css" => "Custom globálne css", - "setting_global_css_desc" => "Všetky stránky vloží vlastný css", - "setting_global_html" => "Štatistický kód HTML", - "setting_global_html_desc" => "Všetky stránky bude vložená do tohto odseku html kód, kód môže byť umiestnený štatistiky tretích strán", - "us" => "kodcloud.com", - "login_not_null" => "Užívateľské meno a heslo nemôže byť prázdny!", - "code_error" => "chybové kódy", - "password_error" => "Užívateľské meno alebo heslo nie je správne!", - "password_not_null" => "Heslo nemôže byť prázdny!", - "old_password_error" => "Staré heslo je zle!", - "permission" => "Povolenie!", - "permission_edit" => "upraviť oprávnenie", - "file_info_owner" => "vlastník", - "file_info_group" => "skupina", - "no_permission" => "Administrátor zablokoval túto výsadu!", - "no_permission_ext" => "Administrátor zakázal tento typ oprávnenia k súborom", - "dialog_max" => "maximalizovať", - "dialog_min" => "minimalizovať", - "dialog_min_all" => "minimalizovať všetky", - "dialog_display_all" => "Zobrazuje všetky okná", - "dialog_close_all" => "Zatvoriť všetko", - "open" => "otvorené", - "others" => "ostatné", - "open_with" => "Otvorené pre ...", - "close" => "zavrieť", - "close_all" => "Zatvoriť všetko", - "close_left" => "Zavrite kartu ľavý", - "close_right" => "Zatvoriť karty vpravo", - "close_others" => "close Other", - "loading" => "Prevádzka ...", - "warning" => "výstraha", - "getting" => "Získajte ...", - "sending" => "Prenos dát ...", - "data_error" => "Dáta Chyba!", - "get_success" => "Získať úspech!", - "save_success" => "Úspešne uložený!", - "success" => "úspešná operácia", - "error" => "operácia zlyhala", - "error_repeat" => "Operácia zlyhala, názov už existuje!", - "word_error" => "zlyhanie ", - "word_success" => " úspech", - "system_error" => "Systémová chyba", - "name" => "názov", - "type" => "typ", - "contain" => "obsahovať", - "address" => "umiestnenie", - "size" => "veľkosť", - "byte" => "byte", - "path" => "cesta", - "action" => "prevádzkový", - "create_time" => "vytvoril", - "modify_time" => "modifikovaná", - "last_time" => "Posledná návšteva", - "sort_type" => "triediť podľa", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "verejný adresár", - "system_path_not_change" => "Adresár systému, nemôže byť modifikovaný", - "file" => "súbor", - "folder" => "zložka", - "copy" => "kópie", - "past" => "palicu", - "clone" => "Je možné vytvoriť kópiu", - "cute" => "strihať", - "cute_to" => "Presunúť do ...", - "copy_to" => "Kopírovať do ...", - "remove" => "vymazať", - "remove_force" => "úplne odstrániť", - "info" => "vlastnosť", - "list_type" => "pohľad", - "list_icon" => "ikona array", - "list_list" => "usporiadanie zoznamu", - "list_list_split" => "režim stĺpec", - "sort_up" => "prírastok", - "sort_down" => "klesajúci", - "order_type" => "triediť podľa", - "order_desc" => "klesajúci", - "order_asc" => "stúpajúca", - "rename" => "premenovať", - "add_to_fav" => "Pridať do obľúbených položiek", - "search_in_path" => "Vyhľadávanie priečinkov", - "add_to_play" => "Pridať do playlistu", - "manage_fav" => "Spravovať obľúbené položky", - "refresh_tree" => "Aktualizovať adresárový strom", - "manage_folder" => "Directory management", - "close_menu" => "zavrieť výber", - "zip" => "Vytvorte komprimovaný balík", - "unzip" => "Ak chcete extrahovať ...", - "unzip_folder" => "Rozbalenie súborov do zložky", - "unzip_this" => "Rozbaliť do prúdu", - "unzip_to" => "Ak chcete extrahovať ...", - "zipview_file_big" => "Súbor je príliš veľký, a potom extrahovať náhľad operácia!", - "clipboard" => "výhľad Schránka", - "clipboard_clear" => "prázdna schránka", - "full_screen" => "Full Screen", - "folder_info_item" => "predmety", - "folder_info_item_select" => "vybraný", - "file_load_all" => "Poklepaním načítať všetkých ......", - "tips" => "prompt", - "ziping" => "Zips ...", - "unziping" => "Rozbaľovaní ...", - "moving" => "Mobilná prevádzka ...", - "remove_title" => "zmazať Potvrdenie", - "remove_info" => "Potvrdiť zmazať vybranú položku?", - "remove_title_force" => "trvalo odstránené", - "remove_info_force" => "Naozaj chcete natrvalo zmazať tento dokument?", - "name_isexists" => "Zlé meno už existuje!", - "install" => "inštalovať", - "width" => "šírka", - "height" => "vysoký", - "app" => "ľahké Applications", - "app_store" => "ľahké Applications", - "app_create" => "vytvorenie aplikácie", - "app_edit" => "upraviť aplikácie", - "app_group_all" => "kompletné", - "app_group_game" => "hra", - "app_group_tools" => "náradie", - "app_group_reader" => "čítať", - "app_group_movie" => "televízia", - "app_group_music" => "hudba", - "app_group_life" => "život", - "app_group_others" => "ostatné", - "app_desc" => "popis", - "app_icon" => "ikona aplikácie", - "app_icon_show" => "url adresy alebo adresár", - "app_group" => "Application Packet", - "app_type" => "typ", - "app_type_url" => "odkaz", - "app_type_code" => "js predĺženie", - "app_display" => "exteriér", - "app_display_border" => "Bez hraníc (teda vybrať bez okrajov)", - "app_display_size" => "Zmena veľkosti (Check byť prispôsobené)", - "app_size" => "veľkosť", - "app_url" => "link adresa", - "app_code" => "js kód", - "edit" => "editovať", - "edit_can_not" => "Nejedná sa o textový súbor", - "edit_too_big" => "Súbor je príliš veľký, nemôže byť väčšia ako 40M", - "open_default" => "predvolené Otvorená", - "open_ie" => "otvorte prehliadač", - "refresh" => "osviežiť", - "refresh_all" => "vynútiť obnovenie", - "newfile" => "nový súbor", - "newfile_save_as" => "uložiť do", - "newfolder" => "nový priečinok", - "newothers" => "nový Ostatné", - "path_loading" => "Loading ...", - "go" => "Chodiť!", - "go_up" => "horná vrstva", - "history_next" => "vpred", - "history_back" => "ustúpiť", - "address_in_edit" => "Kliknite pre vstup do režimu úprav", - "double_click_rename" => "Poklepaním na premenovanie", - "double_click_open" => "Dvojitým kliknutím otvorte", - "path_null" => "Priečinok je prázdna!", - "file_size_title" => "veľkosť ikon", - "file_size_small_super" => "Ultra-small", - "file_size_small" => "malé ikony", - "file_size_default" => "ikony", - "file_size_big" => "veľké ikony", - "file_size_big_super" => "veľký Icon", - "upload" => "nahrať", - "upload_ready" => "Čaká sa na nahranie", - "upload_success" => "nahrávanie úspešné", - "upload_path_current" => "Prepnite do aktuálneho adresára", - "upload_select" => "Vyberte Súbor", - "upload_max_size" => "Maximálna povolená", - "upload_size_info" => "Ak chcete konfigurovať viac, modifikovať php.ini maximálnu povolenú upload. Ak vyberiete súbor väčší ako táto konfigurácia automaticky vyfiltrovať.", - "upload_error" => "nahrávanie zlyhalo", - "upload_error_http" => "Chyby siete alebo firewall", - "upload_muti" => "nahrávanie viac súborov", - "upload_drag" => "Drag and drop nahrávania", - "upload_drag_tips" => "Uvoľnite nahrať!", - "path_not_allow" => "Názov súboru nie je povolené", - "download" => "na stiahnutie", - "downloading" => "Loading ...", - "download_address" => "na stiahnutie", - "download_ready" => "budú stiahnuté", - "download_success" => "Na stiahnutie úspech!", - "download_error" => "Stiahnutie zlyhalo!", - "download_error_create" => "Write chyba!", - "download_error_exists" => "Odkaz na súbor zlyhal!", - "upload_error_null" => "Žiadny súbor!", - "upload_error_big" => "Veľkosť súboru prekračuje limit servera", - "upload_error_move" => "Nepodarilo sa presunúť súbor!", - "upload_error_exists" => "Súbor už existuje", - "upload_local" => "miestna pridania", - "download_from_server" => "remote Download", - "save_path" => "Save Path", - "upload_select_muti" => "Množina voliteľným upload", - "search" => "vyhľadávanie", - "searching" => "Vyhľadávanie ...", - "search_result" => "výsledky hľadania", - "seach_result_too_more" => "Príliš veľa výsledkov vyhľadávania, odporúča sa pre adresár alebo slová", - "search_null" => "Žiadne výsledky!", - "search_uplow" => "veľké a malé písmená", - "search_content" => "Obsah vyhľadávanie súborov", - "search_info" => "Zadajte hľadaný výraz a hľadať cesty!", - "search_ext_tips" => "Tým | oddelené, napríklad PHP | js | css
                    nevyplňujte hľadanie predvolený textový súbor", - "file_type" => "Typ súboru", - "goto" => "Prejsť na", - "server_dwonload_desc" => "Úloha bol pridaný do zoznamu sťahovania", - "parent_permission" => "Materské oprávnenie adresára", - "root_path" => "my Documents", - "lib" => "skladisko", - "fav" => "záložka", - "desktop" => "Desktop", - "browser" => "prehliadač", - "my_computer" => "my Computer", - "recycle" => "odpadky", - "my_document" => "my Documents", - "my_picture" => "Moje fotky", - "my_music" => "my Music", - "my_movie" => "Moje video", - "my_download" => "Moje položky na stiahnutie", - "ui_desktop" => "Desktop", - "ui_explorer" => "správa súborov", - "ui_editor" => "editor", - "adminer" => "Adminer", - "ui_project_home" => "projekt Home", - "ui_login" => "Prihlásiť", - "ui_logout" => "prestať", - "setting" => "nastavenie systému", - "setting_title" => "možnosti", - "setting_user" => "osobné Center", - "setting_password" => "zmena hesla", - "setting_password_old" => "staré heslo", - "setting_password_new" => "revidovaný", - "setting_language" => "nastavenie jazyka", - "setting_member" => "správa užívateľov", - "setting_group" => "Správa skupín užívateľov", - "setting_group_add" => "Add User Group", - "setting_group_edit" => "Upraviť užívateľské skupiny", - "setting_theme" => "nastavenie motívu", - "setting_wall" => "Nastavenia tapety", - "setting_wall_desktop" => "Tapeta na plochu", - "setting_wall_desktop_list" => "Správa stolných stien", - "setting_wall_login_list" => "Prihláste sa na správu tapety", - "setting_wall_login_tips" => "Tip: Ak je viac ako jeden kus, pozadie prihlasovacieho rozhrania sa bude otáčať náhodne", - "setting_wall_diy" => "Custom tapety:", - "setting_wall_info" => "Obrázok url adresa, miestne obrázky môžu mať pravdu, aby si prehliadač pre otvorenie obrázku", - "setting_fav" => "Správca záložiek", - "setting_help" => "používanie pomocníka", - "setting_about" => "o prác", - "setting_success" => "Úprava nadobudla účinnosť!", - "can_not_repeat" => "Nie je dovolené opakovať", - "absolute_path" => "absolútna adresa", - "group" => "skupiny užívateľov", - "data_not_full" => "Dáta predložené neúplné!", - "default_user_can_not_do" => "Predvolené užívateľ nemôže fungovať", - "default_group_can_not_do" => "Predvolené skupiny užívateľov nemôže fungovať", - "username_can_not_null" => "Užívateľské meno nemôže byť prázdny!", - "groupname_can_not_null" => "užívateľské meno skupina nemôže byť prázdna!", - "groupdesc_can_not_null" => "User Group Popis nemôže byť prázdny!", - "group_move_user_error" => "Užívateľská skupina užívateľov Presun zlyhal", - "group_already_remove" => "Užívateľ zostava bola zmazaná", - "group_not_exists" => "Táto skupina používateľov neexistuje", - "member_add" => "Pridať užívateľa", - "password_null_not_update" => "Hovorili, že nezmenili heslo nie je vyplnený", - "if_save_file_tips" => "Niektoré súbory nie sú uložené. Naozaj chcete zatvoriť okno?", - "if_save_file" => "Súbor nebol uložený, chcete ušetriť?", - "if_remove" => "potvrdiť zmazanie", - "member_remove_tips" => "Po odobratí užívateľ adresár bude vymazaný", - "group_remove_tips" => "Po odobratí užívateľ skupina užívateľov sa nemôže prihlásiť
                    (treba znovu nastaviť užívateľské skupiny)", - "group_name" => "užívateľské meno skupiny", - "group_name_tips" => "Odporúčania slovenský názov, nemôže byť opakovaný", - "group_desc" => "Display Name", - "group_desc_tips" => "Názov skupiny Popis", - "group_role_ext" => "obmedzenia Extension", - "group_role_ext_tips" => "S multiplex | oddelené", - "group_role_file" => "správa súborov", - "group_role_upload" => "povoliť nahrávanie", - "group_role_user" => "používateľské dáta", - "group_role_group" => "Správa skupín užívateľov", - "group_role_member" => "správa užívateľov", - "group_role_mkfile" => "nový súbor", - "group_role_mkdir" => "nový priečinok", - "group_role_pathrname" => "premenovať", - "group_role_pathdelete" => "odstránenie súboru", - "group_role_pathinfo" => "vlastnosti súboru", - "group_role_pathmove" => "Move (copy / cut / paste / drag prevádzka)", - "group_role_zip" => "kompresia", - "group_role_unzip" => "rozopnúť zips", - "group_role_search" => "vyhľadávanie", - "group_role_filesave" => "Uložte súbor upravovať", - "group_role_can_upload" => "Nahrávanie a sťahovanie", - "group_role_download" => "remote Download", - "group_role_passowrd" => "zmena hesla", - "group_role_config" => "konfiguračných dát", - "group_role_fav" => "Operácia záložky (pridať / editovať / zmazať)", - "action_list" => "zobraziť zoznam", - "action_add" => "pridať", - "action_edit" => "editovať", - "action_del" => "vymazať", - "group_role_ext_warning" => "Nahrávanie neumožňuje také súbory,
                    Rename (premenovaná na určenú príponou),
                    editovať zachrániť, vzdialený download, extrakt", - "group_tips" => "
                  28. 1. Názov skupiny používateľov sa nedá duplikovať a po zmene názvu skupiny patrí k reorganizovanému používateľovi a automaticky sa priradí.
                  29. 2. Rozšírenia obmedzujú vzťah medzi bezpečnosťou systému, buďte opatrní (ak vytvoríte nový php v webovom adresári, znamená to, že zmena oprávnení programu pre tohto používateľa je prakticky nemožná)
                  30. 3. Správa domácností, správa skupín práv, práva na prezeranie a pridanie, vymazanie a úprava práv sú viazané, programy sú automaticky spojené
                  31. 4. Po priradení skupiny oprávnení pridáte skupinu povolení, následné povolenie nie je zdedené (toto oprávnenie je ekvivalentné najvyššiemu povoleniu).
                  32. ", - "not_null" => "Povinné pole nesmie byť prázdne!", - "picture_can_not_null" => "Fotografie nemôže byť prázdny!", - "rname_success" => "Premenovať úspech!", - "please_inpute_search_words" => "Zadajte reťazec pre vyhľadávanie", - "remove_success" => "bola úspešne odstránená!", - "remove_fali" => "Odstrániť zlyhalo!", - "clipboard_null" => "Schránka je prázdna!", - "create_success" => "Nový úspech!", - "create_error" => "New zlyhá, skontrolujte oprávnenia adresára!", - "copy_success" => "[Kópia] - pokrývať schránky úspech!", - "cute_success" => "[Strih] - pokrývať schránky úspech!", - "clipboard_state" => "Schránka status:", - "no_permission_write_all" => "Súbor alebo adresár nemožno zapisovať", - "no_permission_write_file" => "Súbor nemá povolenie na zápis", - "no_permission_read_all" => "Súbor alebo adresár nemá oprávnenie čítania", - "copy_not_exists" => "zdroj neexistuje", - "current_has_parent" => "Cieľová zložka je podpriečinok zložky zdrojovej!", - "past_success" => "operácia pasta je dokončená", - "cute_past_success" => "strihová operácia dokončená(zdrojový súbor odstránený, schránky prázdny)", - "zip_success" => "kompresia dokončená", - "not_zip" => "nie je archív", - "zip_null" => "Nie je vybratý súbor alebo adresár", - "unzip_success" => "rozbaliť kompletné", - "gotoline" => "Prejsť na riadok", - "path_is_current" => "Cesta a aktuálne cesta k otvoreniu to isté!", - "path_exists" => "Meno už existuje!", - "undo" => "odvolanie", - "redo" => "proti zrušeniu", - "preview" => "náhľad", - "wordwrap" => "Wrap", - "show_gutter" => "Zobraziť čísla riadkov", - "char_all_display" => "Ukázať neviditeľné znaky", - "auto_complete" => "automaticky vyzve", - "auto_save" => "Automaticky uložiť", - "function_list" => "zoznam funkcií", - "code_theme" => "kódovanie Style", - "font_size" => "veľkosť písma", - "confirm" => "Naozaj chcete to urobiť?", - "button_ok" => "určovať", - "button_submit" => "predložiť", - "button_set" => "založiť", - "button_cancel" => "zrušený", - "button_edit" => "editovať", - "button_save" => "uložiť", - "button_apply" => "platiť", - "button_save_all" => "Uložiť všetko", - "button_not_save" => "neukladať", - "button_add" => "pridať", - "button_back_add" => "Späť na pridanie", - "button_del" => "vymazať", - "button_save_edit" => "uložiť zmeny", - "button_save_submit" => "uloženie Odoslať", - "button_more" => "viac", - "button_select_all" => "Vybrať všetko / Invertovať výber", - "charset_AUTO" => "Automatická identifikácia", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arabčina", - "charset_ISO_8859_6" => "arabčina", - "charset_ISO_8859_10" => "škandinávske jazyky", - "charset_CP1257" => "baltického jazyky", - "charset_ISO_8859_13" => "baltického jazyky", - "charset_ISO_8859_4" => "baltického jazyky", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "gruzínsky", - "charset_PT154" => "kazašský", - "charset_CP949" => "kórejský", - "charset_EUC_KR" => "kórejský", - "charset_GB18030" => "zjednodušená čínština", - "charset_GBK" => "zjednodušená čínština", - "charset_ISO_8859_14" => "keltský", - "charset_CP1133" => "lao", - "charset_ISO_8859_16" => "rumunský", - "charset_ISO_8859_3" => "South European", - "charset_EUC_JP" => "japonský", - "charset_ISO_2022_JP" => "japonský", - "charset_SHIFT_JIS" => "japonský", - "charset_KOI8_T" => "tadžičtina", - "charset_ISO_8859_11" => "thai", - "charset_TIS_620" => "thai", - "charset_CP1254" => "turecký", - "charset_CP1251" => "cyriliky", - "charset_ISO_8859_5" => "cyriliky", - "charset_KOI8_R" => "cyriliky", - "charset_KOI8_U" => "cyriliky", - "charset_CP1252" => "západoeurópske jazyky", - "charset_ISO_8859_1" => "západoeurópske jazyky", - "charset_ISO_8859_15" => "západoeurópske jazyky", - "charset_Macintosh" => "západoeurópske jazyky", - "charset_CP1255" => "hebrejčina", - "charset_ISO_8859_8" => "hebrejčina", - "charset_CP1253" => "grécky", - "charset_ISO_8859_7" => "grécky", - "charset_ARMSCII_8" => "arménsky", - "charset_CP1258" => "vietnamský", - "charset_VISCII" => "vietnamský", - "charset_CP1250" => "stredoeurópske", - "charset_ISO_8859_2" => "stredoeurópske", - "charset_default_set" => "kódovanie súboru", - "charset_convert_save" => "Uložiť súbor kódovaný as", - "PluginCenter" => "plug centrum", - "PluginBuy" => "Autorizácia nákupu", - "PluginInstalled" => "bol nainštalovaný", - "PluginUpdate" => "aktualizovať", - "PluginListNull" => "Nie je žiadny obsah!", - "PluginType" => "klasifikácia", - "PluginTypeAll" => "kompletné", - "PluginTypeFile" => "Rozšírený súbor", - "PluginTypeSafe" => "bezpečnostné nástroje", - "PluginTypeTools" => "užitočnosť", - "PluginTypeMedia" => "multimediálne", - "PluginTypeOthers" => "ostatné", - "PluginInstall" => "nainštalovať zátku", - "PluginEnable" => "aktivovať pluginy", - "PluginDisable" => "zakázať", - "PluginRemove" => "odinštalovať zástrčku", - "PluginConfig" => "konfigurovať plugin", - "PluginStatus" => "stáť", - "PluginStatusEnabled" => "povolené", - "PluginStatusDisabled" => "nie je povolené", - "PluginStatusNotInstall" => "nenainštalovanú", - "PluginInstalling" => "Inštalácia ...", - "PluginHasUpdate" => "aktualizácie", - "PluginUpdateStart" => "Aktualizácia plug-in", - "PluginNeedConfig" => "Potreba umožniť počiatočné konfigurácie", - "PluginConfigNotNull" => "Povinné pole nesmie byť prázdne!", - "PluginOpen" => "otvorené", - "PluginAuther" => "autor", - "PluginVersion" => "vydanie", - "PluginDownloadNumber" => "inštaluje", - "PluginBack" => "spiatočný", - "PluginReadme" => "popis", - "PluginResetConfig" => "Obnovte predvolené nastavenia", - "PluginInstallSelf" => "Manuálna inštalácia", - "Plugin.config.auth" => "oprávnenie", - "Plugin.config.authDesc" => "Všetky dostupné nastavenia, alebo zadať používateľa, skupiny používateľov, spraví skupiny môžu využiť", - "Plugin.config.authOpen" => "Otvorený prístup", - "Plugin.config.authOpenDesc" => "Nie je potrebné pristupovať k návšteve, môže byť použitý pre externé rozhranie", - "Plugin.config.authAll" => "držiak", - "Plugin.config.authUser" => "užívateľ", - "Plugin.config.authGroup" => "Určené oddelenie", - "Plugin.config.authRole" => "práva skupiny", - "Plugin.Config.openWith" => "otvorený typ", - "Plugin.Config.openWithDilog" => "vnútorný dialóg", - "Plugin.Config.openWithWindow" => "Otvorí sa nová stránka", - "Plugin.Config.fileSort" => "prioritou rozšírenie združenia", - "Plugin.Config.fileSortDesc" => "Čím väčšie rozšírenie otvoriť vyššiu prioritu", - "Plugin.Config.fileExt" => "Podporované formáty súborov", - "Plugin.Config.fileExtDesc" => "Spojený Rozšírenie plug-in", - "Plugin.tab.basic" => "základné nastavenie", - "Plugin.tab.auth" => "oprávnenie", - "Plugin.tab.others" => "Ostatné nastavenia", - "Plugin.default.aceEditor" => "ace Editor", - "Plugin.default.htmlView" => "Náhľad webové stránky", - "Plugin.default.picasa" => "Picasa prezeranie picture", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer player", - "Plugin.auth.viewList" => "Zoznam doplnkov", - "Plugin.auth.setting" => "Nastavenia doplnkov", - "Plugin.auth.status" => "Vypnite", - "Plugin.auth.install" => "Inštalovať / Odinštalovať", - "Explorer.UI.openWith" => "vyberte Otvor", - "Explorer.UI.openWithText" => "Poznámkový blok k otvoreniu", - "Explorer.UI.appSetDefault" => "Nastaviť predvolené otvorený", - "Explorer.UI.appAwaysOpen" => "Vždy použiť vybraný program na otvorenie tohto súboru", - "Explorer.UI.selectAppDesc" => "Vyberte program, ktorý chcete otvoriť tento súbor", - "Explorer.UI.selectAppWarning" => "Prosím, vyberte aplikáciu!", - "Explorer.UI.appTypeSupport" => "podporovaný", - "Explorer.UI.appTypeAll" => "Všetky aplikácie", - "kodApp.oexe.edit" => "Upraviť aplikáciu svetla", - "kodApp.oexe.open" => "Otvorte aplikáciu svetla" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sl/about.html b/plugin/document/kod/config/i18n/sl/about.html deleted file mode 100644 index 848eae3f9..000000000 --- a/plugin/document/kod/config/i18n/sl/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer pomeni Kaj?
                    -

                    KODExplorer je na osnovi Web odprtokodne upravljanje spletni dokument, urejevalnik kode. Zagotavlja vrsto klasičnih oken uporabniškega vmesnika, niz spletno upravljanje dokumentov, predogled datotek, urejanje, nalaganje, prenesete, jo razširite spletno predvajanje glasbe. Vam omogoča, da se doseže razvoj spletnih neposredno v brskalniku, izvorno kodo datoteke predogled in uvajanje lastnik mesta in lokalno delovanje preprosto, hitro in varno izkušnjo.

                    -

                    - oblikovanje -

                    -

                    klasično tradicijo, opravljanje inovacij, da uporabnike s priročno, varna in enostavna za uporabo spletnega sistema za upravljanje v oblaku.

                    -

                    vsakič, ko (če), kjer je (kje), ima po spletu kadarkoli želite (želite), da je vaše orodje za upravljanje (4W politika).

                    -

                    - uporabniku usmerjene -

                    -

                    trenutno KODExplorer sistem upravljanja v glavnem nahajajo na gostovanje osebni oblak, majhna podjetje za upravljanje oblak virov, upravljanje disk omrežja, upravljanje malih in srednje velikih mestih. Web Developer & Master (veterani): online editor, stisnjen backup, uvajanje, klasična operacija okna vmesnik, enostavno, da bi začeli in se znebite gostiteljice SSH, ukaza ftp kompleksne dolgočasno operacije.

                    -

                    osebno zasebni oblak (novinec): Omrežje za upravljanje diskov sredstev, enako delovanje klasičnih oken vmesnik, lahko postavite omrežni pogon glasba brskanje, datotek screen, nalaganje in prenos hitro in enostavno.

                    -
                    - -
                    -
                    Lastnosti
                    -

                    celovito upravljanje z dokumenti, zmogljiv spletni urejevalnik datotek

                    -

                    kjerkoli že ste, lahko upravljanje datotek in na spletu zabave, spletno pisanje kode! Prav tako primerni za uporabo kot operacijski sistem.

                    -

                    obsežna operacija pravica lokalne izkušnje presaditev, drag, izbor box, bližnjice, iskanje datotek (iskanje vsebine) ......

                    -

                    izbira box, povleci gibanje, povleci in spusti nalaganje, spletni urejevalnik, video predvajalnik, razširjanje. Polna ajax performance jamstvo in izkušnje!

                    -

                    vsaka funkcija neposredno brezhibno povezavo, v pogovornem obliki naloge upravljanja multi-naloga

                    -

                    Editor podpira multi-dokument, podpora ZendCoding html, css, js višje kodiranje učinkovitost!

                    -

                    odlična kitajska podpora, popačeno reševanje različnih situacij;

                    -
                    - -
                    -
                    odprtokodna tehnologija sprejetje
                    -

                    1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) js mainstream razvojnega okvira. Delovanje operacije Dom, BOM, delovanje css in Ajax paket

                    -

                    2.ArtDialog:lep dizajn, močne združljivosti brskalnik pogovorno widget. Torej, pop-up ročaj, dogodke, in prenos podatkov, da bi dobili boljše enotno upravljanje

                    -

                    3.Ztree:kontrolni seznam drevo, razširljivost je zelo močno drevo manipulacijo s podatki widget

                    -

                    4.codemirror:urejevalnik kode js plugins, podpira različne programske jezike za poudarjanje

                    -

                    5.zendcoding:a podpora HTML kode hitro pisanje vtičnikov. Poenostavlja opredelitev koda je napisana. Enostavno urejanje

                    -

                    6.less:učinkovit, razvoj css modela funkcionalno izboljšati front end CSS slogovnih ponovne . Enostavno urejanje

                    -

                    7.SWFUpload:Flash file upload

                    -

                    8 .CMP4:zelo dober flash player plugin medijskih datotek, podpora za pretakanje medijev, popularne glasbe orodje video predvajanja. Podpora za kožo, izjemno prilagodljive nastavitve. Dynamic seznam xml naložen. mms pretakanje medijev, RSTP open source licenco podpora medijev predvajanje

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sl/edit.html b/plugin/document/kod/config/i18n/sl/edit.html deleted file mode 100644 index b8bcdf367..000000000 --- a/plugin/document/kod/config/i18n/sl/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    Rich funkcionalnost

                    -

                    Koda samodejno pozove

                    -

                    Multi-tema: Izberite svojo najljubšo programsko stil

                    -

                    Meri pisave: za uporabo na sceno

                    -

                    Multi urejanje kazalec, urejanje blok spletno programiranje izkušnje primerljiva z sublimnega

                    -

                    Block zložljiva, razširiti; zaviti

                    -

                    Podpora za več zavihkov, povlecite zaporedje preklapljanja;

                    -

                    Ohranjanje več dokumentov, poiskati in zamenjati; Zgodovina;

                    -

                    Auto-popolna [] {} (), '' ''

                    -

                    Spletu v realnem času predogled, ki vam omogoča, da se zaljubila v spletnem programiranju!

                    -

                    zendcodeing podporo, pisanje kode osemdeset

                    -

                    Več funkcij, ki čakajo na vaše odkritje ......

                    -
                    -
                    -

                    150 vrst kodo poudarjanje

                    -

                    Nasvet: html, JavaScript, CSS, manj, SAS za, scss

                    -

                    izdelava spletnih strani: php, perl, python, ruby, Elang, go ...

                    -

                    Tradicionalni jeziki: java, c, c ++, c #, ActionScript, VBScript ...

                    -

                    Drugo: markdown, shell, sql, lua, xml, yaml ...

                    -
                    -
                    -
                    -
                    -

                    Bližnjica Action

                    -
                     Običajno uporabljajo bližnjice: 
                    - ctrl + i za shranjevanje 
                    - Ctrl + A Izberi vse Ctrl + x Cut 
                    - ctrl + c ctrl + v paste copy 
                    - ctrl + z Undo Razveljavi Anti ctrl + y 
                    - ctrl + f najti nadomestno ctrl + f + f 
                    - win + alt + 0 strni vse win + alt + shift + 0 Razširi vse 
                    - esc [Izhod iskanje samodejno prekine pozove ...] 
                    - ctrl-shift-ov Predogled 
                    - ctrl-shift-e šov & Close funkcija 
                    -
                    -
                     Izberite: 
                    - Mouse šotoru - povleci 
                    - shift + home / end / gor / levo / dol / desno 
                    - shift + PageUp / PageDown flip gor in dol, da izberete 
                    - Ctrl + Shift + home / konca tekočega kazalca na začetku in na koncu 
                    - alt + miško povlecite izbor blok 
                    - ctrl + alt + g serije izberite in vnesite trenutni urednik več zavihkov 
                    -
                    -
                     kazalec: 
                    - domov / konec / gor / levo / dol / desno 
                    - ctrl + home / end premaknite kazalec na dokument glavo / repom 
                    - ctrl + p Pojdi na ujemanje tag 
                    - PageUp / PageDown kurzor gor in dol 
                    - alt + levo / desno kazalec premakne na vrh proge 
                    - shift + levo / desno kazalec na konec vrstice in 
                    - ctrl + l za skok na določeno vrsto 
                    - ctrl + alt + gor / dol (spodaj) povečalo kazalka 
                    -
                    -
                     edit: 
                    - ctrl + / Komentar & odkomentirajte ctrl + alt + utemeljen 
                    - Kartica miza poravnavo shift + miza skupni napredek miza 
                    - delete delete delete celotno linijo ctrl + d 
                    - ctrl + delete izbrisati vrstico na desni besede 
                    - ctrl / shift + vračalko izbrisati besedo na levi 
                    - alt + shift + gor / dol in dodal, da kopijo liniji (spodaj) letalo 
                    - alt + delete izbrisati vsebino desno od kurzorja 
                    - alt + gor / dol na trenutne vrstice in vrstice (naslednjo izmenjavo linije) v 
                    - Ctrl + Shift + d vrstic kopirajo in doda naslednje 
                    - ctrl + delete, da se črta pravico do besede 
                    - Ctrl + Shift + u pretvorjene v male črke 
                    - Ctrl + U izbrano besedilo v velike črke 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/sl/help.html b/plugin/document/kod/config/i18n/sl/help.html deleted file mode 100644 index 017879337..000000000 --- a/plugin/document/kod/config/i18n/sl/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    upravljanje datoteke
                    -

                    Datoteka izbor: radio, miška šotoru, premik izvolitev, ctrl izbrano naključno, tipkovnico gor in dol, doma, konec izbora.

                    -

                    Operacija datoteke: Po izbiri datoteke, lahko kopirate, cut, brisanje, prikazati lastnosti stiskanja, preimenovanje, odprt Preview in druge operacije ......

                    -

                    File Upload: Naloži več datotek serije; HTML5 drag upload (povlecite, da nevidno nalaganje okno, povleci in spusti podpora za mape)

                    -

                    Desno funkcija: desno-datoteke, mape, desno, bolj desno po operaciji volitev, namizje, desno, desno drevo imenikov, desno-vezan bližnjice menija
                    - (Izberi vse - Kopiraj - Cut - Paste - Delete - Preimenuj, nastavljen ......)

                    -

                    Brskalnik datoteke: način seznama, način ikona, dvokliknite v podmape, operacija naslovna vrstica, odpreti rekorden mapa nasprotjih zapis (naprej in nazaj)

                    -

                    Podpora povleci in spusti: Preverite upor, zmanjšati za doseganje določene funkcije mape

                    -

                    Tipke za bližnjice: delete delete, ctrl + A Izberi vse, ctrl + C za kopiranje, + X Cut, iskanje datotek (iskanje vsebine) ctrl

                    -
                    -
                    -
                    Predogled datoteke
                    -

                    Predogled datoteke: pregledovanje vsebine urejanja besedilne datoteke in varčevanja; html, predogled swf datoteke,

                    -

                    Predogled slike: avtomatska generacija sličic, podobe diaprojekciji;

                    -

                    Audio predvajanje: predvajanje glasbo na spletu in video datotek, podpora MP3, WMA, mid, AAC, WAV; mp4,

                    -

                    Video: online predvajanje video, podpira formate: flv, F4V, 3gp

                    -

                    office: office Online Preview, podpira formate: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    Bližnjice
                    -

                    vpišite Odpri

                    -

                    Ctrl + A izberete vse

                    -

                    ctrl + c kopirati izbrano

                    -

                    ctrl + v prilepiti

                    -

                    ctrl + x Cut

                    -

                    ctrl + f za iskanje trenutni imenik

                    -

                    alt + n New datoteke

                    -

                    alt + m Nova mapa

                    -

                    izbrisati Izbriši izbrano

                    -

                    backspace Nazaj

                    -

                    ctrl + backspace naprej

                    -

                    f2 Preimenuj izbrano (mapa)

                    -

                    domov / konec / gor / dol / levo / desno, da izberete datoteko

                    -

                    Anykey Preverite pritisniti prvo črko z znaki datotek in map izbran avtomatski cikel

                    -
                    diff --git a/plugin/document/kod/config/i18n/sl/main.php b/plugin/document/kod/config/i18n/sl/main.php deleted file mode 100644 index 7d04bb9b1..000000000 Binary files a/plugin/document/kod/config/i18n/sl/main.php and /dev/null differ diff --git a/plugin/document/kod/config/i18n/sr/about.html b/plugin/document/kod/config/i18n/sr/about.html deleted file mode 100644 index 41ebca4e0..000000000 --- a/plugin/document/kod/config/i18n/sr/about.html +++ /dev/null @@ -1,33 +0,0 @@ -Шта
                    -
                    КОДЕкплорер то?
                    -

                    КОДЕкплорер је опен соурце Веб-басед управљање онлајн документ, код уредник. Она представља неку врсту Цлассиц Виндовс корисничким интерфејсом, сет онлајн управљање документима, преглед Филе, Едит, уплоад, довнлоад, унзип онлајн репродукције музике. Омогућава вам да постигнете веб развој директно у бровсеру, Соурце Цоде датотеке преглед, и распореди власника сајта и локалне операције као једноставан, брз и безбедан искуство.

                    -

                    - дизајн -

                    -

                    класична традиција, потрага за иновације, да обезбеди корисницима погодан, безбедан и лак за коришћење онлајн облак систем за управљање.

                    -

                    Кад год (када), где (где), има веб кад год желите (желите) да је ваш алат за управљање (4В политика).

                    -

                    - кориснички оријентисана -

                    -

                    садашњи систем управљања КОДЕкплорер углавном налази у личном облака домаћина, управљање ресурсима малих и средњих предузећа облак, мрежа upravljanje диска, мала и средња управљање сајт. Веб програмер и Мастер (ветерани): онлине едитор, компримовани бацкуп, распоређивање, класична операција прозори интерфејс, лако за почетак и отараси се ССХ домаћина, команде фтп сложене досадне операције.

                    -

                    Лична Привате Цлоуд (Роокие): управљање мрежом диск ресурси, иста операција Цлассиц Виндовс интерфејс, можете поставити мрежни диск музика за прегледање, Сцреен фајлове, уплоад-а преузети брзо и лако.

                    -
                    - -
                    -
                    особине
                    -

                    комплетно управљање документима, моћан онлине уредник фајл

                    -

                    где год да сте, можете да управљате датотекама, и онлине забаву, на мрежи писање кода! Као што погодна за употребу као оперативни систем.

                    -

                    велико искуство за трансплантацију операција у праву, превуците, кутија избор, пречице, филе сеарцх (претраживање садржаја) ......

                    -

                    избор кутија локално, превуците за премештање, драг анд дроп уплоад, онлине едитор, видео плејер, децомпресс. Фулл Ајак гаранција за добро извршење и искуство!

                    -

                    различите карактеристике директно бешавна веза, у дијалогу облику, функције управљања са више задатака

                    -

                    уредник подржава мулти-документ, подршка ЗендЦодинг ХТМЛ, ЦСС, ЈС кодови писати ефикаснији!

                    -

                    савршен Кинески подршка, нејасна решити различитим ситуацијама;

                    -
                    - -
                    -
                    усвајање отвореног кода технологија
                    -

                    1.Јкуери: јпуери (додатак: Хоткеис.зтрее.цонтентмену) јс маинстреам оквир развоја. Рад операције Дома, бом, рад ЦСС и Ајак пакет

                    -

                    2.АртДиалог: прелепом дизајну, јак компатибилност претраживач дијалог видгет. Дакле, поп-уп ручка, догађаје, и пренос података да се боље обједињено управљање

                    -

                    3.Зтрее: контрола лист дрво, високо скалабилна дрво подаци манипулација виџет

                    -

                    4.цодемиррор: уредник код јс додаци, подржава различите програмске језике за истицање

                    -

                    5.зендцодинг: ХТМЛ код да подржи брзо врите додатке. Поједностављује дефиниција кода је написано. Једноставно компилација

                    -

                    6.лесс: ефикасан, функционалан модел развоја цс да побољша предњег краја ЦСС стилова употребљивости. Једноставно компилација

                    -

                    7.СВФУплоад: Фласх Филе Уплоад

                    -

                    8.ЦМП4: веома добар flash Плаиер плугин медијске датотеке, подршка за репродукцију медија, популарне алат музика видео репродукцију. Подршка за кожу, веома подесивих подешавања. Динамички листа КСМЛ лоадед. ММС стреаминг медија, РСТП Опен Соурце лиценце медијска подршка за репродукцију

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sr/edit.html b/plugin/document/kod/config/i18n/sr/edit.html deleted file mode 100644 index 1746fbeff..000000000 --- a/plugin/document/kod/config/i18n/sr/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    богат функционалност

                    -

                    Код вас аутоматски подсети

                    -

                    Мулти-тема: Изаберите свој омиљени стил програмирања

                    -

                    Цустом слова: за употребу на лицу места

                    -

                    Мулти курсор уређивање, блок уређивање на мрежи програмирање искуство поредити са узвишеном

                    -

                    Блок склапање, проширити; увити

                    -

                    Подршка за више картица, превуците преклапања;

                    -

                    Одржавање више докумената, пронашли и заменили; историју;

                    -

                    Ауто-комплетан [], {}, (), '' ''

                    -

                    У продаји у реалном времену приказ који вам омогућава да се заљубиш у интернет програмирања!

                    -

                    зендцодеинг подршку, написати код осамдесет

                    -

                    Додатне функције чекају сте открили ......

                    -
                    -
                    -

                    150 врста код истицање

                    -

                    Савет: ХТМЛ, ЈаваСцрипт, ЦСС, мање, Сасс, сцсс

                    -

                    Веб девелопмент: ПХП, Перл, Питхон, Руби, Еланг, иди ...

                    -

                    Традиционални језици: Јава, Ц, Ц ++, Ц #, АцтионСцрипт, вбсцрипт ...

                    -

                    Остало: Маркдовн, шкољка, СКЛ, Луа, КСМЛ, ИАМЛ ...

                    -
                    -
                    -
                    -
                    -

                    схортцут Акција

                    -
                     Обично се користи пречице: 
                    - Цтрл + С да сачувате 
                    - Цтрл + А Селецт алл Цтрл + Кс Исеците 
                    - ЦТРЛ + Ц Цтрл + В паста копија 
                    - Цтрл + З Ундо Опозови против Цтрл + И 
                    - Цтрл + Ф да пронађе замену ЦТРЛ + Ф + Ф 
                    - победа + Алт + 0 колапс сви добијају + Алт + схифт + 0 Екпанд Алл 
                    - ЕСЦ [Излаз претрага отказан аутоматски подсети ...] 
                    - Цтрл-Схифт-а Преглед 
                    - Цтрл-Схифт-Е шоу & Затвори функција 
                    -
                    -
                     Изаберите: 
                    - Моусе Маркуее - Драг 
                    - схифт + дом / крај / горе / лево / доле / десно 
                    - схифт + ПагеУп / ПагеДовн флип нагоре и надоле да бисте изабрали 
                    - Цтрл + Схифт + дом / крај текуће курсора на почетак и крај 
                    - алт + миш да превуците избор блок 
                    - Цтрл + Алт + Г серија одаберите и унесите тренутну едитор више картица 
                    -
                    -
                     цурсор: 
                    - дом / крај / горе / лево / доле / десно 
                    - ЦТРЛ + ХОМЕ / крај померање курсора на документ главе / репа 
                    - Цтрл + П Иди на поклапа таг 
                    - ПагеУп / ПагеДовн курсор горе и доле 
                    - Алт + лево / десно курсора да се пређе на врху линије 
                    - схифт + лево / десно курсора на крај реда и 
                    - Цтрл + Л у скочити на специфични ред 
                    - Цтрл + Алт + горе / доле (испод) повећати курсор 
                    -
                    -
                     едит: 
                    - Цтрл + / коментар и Унцоммент цтрл + алт + оправдан 
                    - сто картица поравнање Схифт + сто укупна напредовање сто 
                    - делете делете брисање целе линије Цтрл + Д 
                    - Цтрл + делете да обришете ред на десној речи 
                    - Цтрл / Схифт + Бацкспаце да бисте избрисали реч с леве стране 
                    - Алт + Схифт + горе / доле и додао да за копирање линије (у даљем тексту) авион 
                    - алт + делете за брисање садржаја са десне стране курсора 
                    - Алт + горе / доле на тренутне линије и линије (следећи ред замену) 
                    - Цтрл + Схифт + Д редове копирају и додао да следеће 
                    - Цтрл + делете за брисање право речи 
                    - Цтрл + Схифт + У претворен у мала слова 
                    - Цтрл + У изабрани текст у велика слова 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/sr/help.html b/plugin/document/kod/config/i18n/sr/help.html deleted file mode 100644 index 8532ea21e..000000000 --- a/plugin/document/kod/config/i18n/sr/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    Управљање датотекама
                    -

                    Филе Избор: Радио, миш надстрешница, схифт изборима, Цтрл изабрани насумице, тастатуру горе и доле, дом, крај селекције.

                    -

                    Филе рад: Након одабира датотеке, можете да копирате, цут, брисање, видели својства компресије, преименовати, отворен Преглед и друге операције ......

                    -

                    Филе Уплоад Уплоад више датотека серија; ХТМЛ5 превлачење Уплоад (повуците да бисте неприметно отпремање прозор, превуците и испустите подршку за фолдере)

                    -

                    Право функција: десно-фајл, фасцикла, зар не, више одмах после избора операције, стони, десно, десно стабло, десно-боунд пречице менија
                    - (Селецт Алл - Цопи - Цут - Пасте - Делете - Ренаме, сет ......)

                    -

                    Филе Бровсер: Листа режим, икона режим, кликните двапут на подименике; адреса бар операција; отвори фасциклу рекордан Изопштеник запис (напред и назад)

                    -

                    превуците подршка и пад: Проверите отпор, смањити да би се постигао одређени функцију фолдер

                    -

                    Схортцут кеис: делете делете, Цтрл + А Одабери све, Цтрл + Ц да бисте копирали, + Кс Исеците, филе сеарцх (претраживање садржаја) цтрл

                    -
                    -
                    -
                    Преглед датотеке
                    -

                    Филе Преглед: видели садржај за обраду текста датотеке и штедњу; хтмл, преглед СВФ датотеке,

                    -

                    Слика Преглед: аутоматско генерисање сличица, слике слајдова;

                    -

                    Аудио репродукција: играте онлине музику и видео фајлове, подршка МП3, ВМА, МИД, ААЦ, ВАВ; мп4,

                    -

                    Видео: онлине видео репродукције, Подржани формати: ави, ф4в, 3гп

                    -

                    оффице: управа Онлине Превиев, подржани формати: доц, доцк, ппт, пптк, клс, клск

                    -
                    -
                    -
                    пречице
                    -

                    ентер Опен

                    -

                    Цтрл + А Изаберите све

                    -

                    ЦТРЛ + Ц за копирање изабрани

                    -

                    Цтрл + В да налепите

                    -

                    Цтрл + Кс Исеците

                    -

                    Цтрл + Ф за претраживање тренутни директоријум

                    -

                    Алт + Н Нова датотека

                    -

                    Алт + М Нова фасцикла

                    -

                    делете Делете селецтед

                    -

                    бацкспаце Назад

                    -

                    Цтрл + Бацкспаце напред

                    -

                    Ф2 Преименовање изабраног (фасцикла)

                    -

                    дом / крај / горе / доле / лево / десно да изаберете фајл

                    -

                    Одговор било којим тастером Проверите да притиснете прво слово карактера датотека и папки одабере аутоматски циклус

                    -
                    diff --git a/plugin/document/kod/config/i18n/sr/main.php b/plugin/document/kod/config/i18n/sr/main.php deleted file mode 100644 index 00c40d257..000000000 --- a/plugin/document/kod/config/i18n/sr/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Изаберите датотеку ...", - "path_api_select_folder" => "Изаберите фасциклу ...", - "path_api_select_image" => "Молимо Вас да изаберете неку слику ...", - "share_can_upload" => "dozvoli отпремање", - "move_error" => "Мове фаилед", - "setting_basic" => "Основне поставке", - "setting_user_sound_open" => "опен соунд", - "setting_user_animate_open" => "опен Анимација", - "recycle_open_if" => "Отворите корпу за отпатке", - "recycle_open" => "отворен", - "setting_user_recycle_desc" => "Након брисања биће избрисано директно физичко брисање", - "setting_user_animate_desc" => "Прозор отворен и друга анимација", - "setting_user_sound_desc" => "Оперативни звук", - "setting_user_imageThumb" => "Сличице слике", - "setting_user_imageThumb_desc" => "Боље искуство гледања након отварања", - "setting_user_fileSelect" => "Отворите икону датотеке икона", - "setting_user_fileSelect_desc" => "Датотека икона остави на тастатури, унос пречице менија са десним тастером миша", - "qrcode" => "УРЛ адреса КР код", - "theme_mac" => "Мац минималистички бели", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Метро Блуе Цлассиц", - "theme_metro_green" => "Метро светло зелена", - "theme_metro_purple" => "Метро елегантан љубичаста", - "theme_metro_pink" => "метро Роуз", - "theme_metro_orange" => "Метро светло наранџаста", - "theme_alpha_image" => "Бригхт - летење", - "theme_alpha_image_sun" => "Бригхт - Сунсет", - "theme_alpha_image_sky" => "Симпхони - Блуе Ски", - "theme_diy" => "Прилагођени ", - "theme_diy_title" => "Цустом Тхеме Сеттингс", - "theme_diy_background" => "позадина", - "theme_diy_image" => "слика", - "theme_diy_color_blur" => "градиент боја", - "theme_diy_image_blur" => "slika замућења", - "theme_diy_image_url" => "фотографије адреса", - "theme_diy_color_start" => "Стартинг боја", - "theme_diy_color_end" => "Крај Боја", - "theme_diy_color_radius" => "градиент угао", - "system_role_admin_set" => "Администратори имају сва права, без постављања!", - "login_error_user_not_use" => "Корисник је онемогућен! Контактирајте администратора", - "login_error_kod_version" => "verzija сукоб", - "login_error_role" => "Погледај дозволе група не постоји, контактирајте администратора", - "no_permission_group" => "Нисте у тој групи!", - "no_permission_write" => "Директоријум нема дозволу за писање", - "user" => "корисник", - "save_as" => "саве ас", - "check_update" => "ажурирање", - "keyboard_type" => "тастатура режим", - "font_family" => "фонтс", - "code_mode" => "истицање синтаксе", - "path_can_not_share" => "Подржава деле само своје документе!", - "path_can_not_action" => "Овај директоријум не подржава ову операцију!", - "wap_page_pc" => "ПЦ верзија", - "wap_page_phone" => "мобиле", - "image_size" => "slika димензије", - "no_permission_action" => "Немате ову дозволу, контактирајте администратора!", - "path_is_root_tips" => "Она је дошло до роот директоријуму!", - "kod_group" => "организација", - "my_kod_group" => "Ја сам у одјељењу", - "space_tips_default" => "(МБ) 0 без ограничења", - "space_tips_full" => "bez ограничавања", - "space_size" => "простор", - "space_size_use" => "Коришћење простора", - "space_is_full" => "Не постоји довољно простора, молимо контактирајте администратора!", - "system_open_true_path" => "Успешно отворен у менаџеру фајлова!", - "group_role_error" => "Улога дозволе грешка (нема подешавања дозвола)", - "group_role_error_admin" => "nedovoljna дозволе", - "markdown_content" => "Преглед садржаја", - "system_group" => "Корисници и одељења", - "system_group_edit" => "Управа одељења", - "system_group_role" => "uloga идентитет", - "system_group_create" => "Ново одељење", - "system_group_name" => "Назив одељења", - "system_group_father" => "Супериорни одјел", - "system_group_add" => "Додајте поддиректориј", - "system_group_remove" => "Уклони одељење", - "system_group_remove_tips" => "Да ли сте сигурни да избришете одељење?
                    Након брисања корисника који припада одељењу биће уклоњени, под-одјељак се креће у коријенски сектор", - "system_group_select" => "Избор одељење", - "system_group_select_result" => "Чланови ће припадају следећим секторима", - "system_role_admin_tips" => "Напомене: Системски администратори нису овлашћени за контролу", - "system_member_action" => "Управљање корисницима", - "system_member_add" => "Нови корисник", - "system_member_role" => "дозвола улоге", - "system_member_role_select" => "одабрати", - "system_member_password_tips" => "Не попуњавају нису измењени", - "system_set_home_path" => "цустом Каталог", - "system_set_home_path_tips" => "Подразумевани директоријум је празан", - "system_member_group" => "Где одељење", - "system_member_group_edit" => "Уредништво", - "system_member_remove" => "Брисање корисника", - "system_member_remove_tips" => "Потврди брисање корисника?
                    након уклањања корисничког директоријум ће бити потпуно избрисана", - "system_member_set_role" => "Да бисте потврдили промену одабраних дозвола групе корисника?", - "system_member_remove_group" => "Одредити изабрани корисник ће бити уклоњен из ове групе?", - "system_member_import" => "булк додатак", - "system_member_import_desc" => "Један корисник по реду,
                    већ постоје су тихо игнорише", - "system_member_use" => "омогућити", - "system_member_unuse" => "онеспособити", - "system_member_space" => "Подесите величину корисничког простора ", - "system_member_space_tips" => " Подесите величину корисничког простора ", - "system_member_space_number" => " Мора бити број!", - "system_member_group_config" => "Одељење за подешавање серије", - "system_member_group_remove" => "Удаљена од одељења", - "system_member_group_insert" => "Додај у одељење", - "system_member_group_reset" => "Ресетујте одељење", - "system_member_group_error" => "Грешка у одељењу", - "system_group_action" => "Управа одељења", - "system_role_add" => "Додај улогу Идентити", - "system_role_read" => "Само за читање", - "system_role_write" => "Може да чита и пише", - "system_setting_root_path" => "роот приступ", - "system_setting_root_path_desc" => "Само систем администратор може да приступи свим директоријума, група друга права корисника могу видети само своју корисничку.
                    Ако желите да укључите или искључите администраторски приступ другим директоријума, можете да измените пхп опен_баседир параметара против цросс-сите, како подесити ", - "system_group_role_title" => "Управљање улогом одељења органа управе", - "system_group_role_remove" => "ОК да обришемо улогу одељења", - "system_group_role_style" => "стил", - "system_group_role_display" => "да ли", - "system_group_role_display_desc" => "Подесите да ли ће се приказати корисничка права одељења или не", - "role_type_name_read" => "читати", - "role_type_name_read:list" => "филе лист", - "role_type_name_read:info" => "Филе (фасцикла) имовина Погледај Фолдер претрага", - "role_type_name_read:copy" => "Филе Цопи", - "role_type_name_read:preview" => "Филе приказ (слике, документи, аудио и видео)", - "role_type_name_read:download" => "Филе (директоријум) Преузимање", - "role_type_name_write" => "писати", - "role_type_name_write:add" => "Креирати фајл (фолдер), екстракт компресовани фајл", - "role_type_name_write:edit" => "Сачувајте датотеку за уређивање", - "role_type_name_write:change" => "Преименовати, прилагодити структуру директоријума", - "role_type_name_write:upload" => "Филе (фасцикла) отпремање, даљински за преузимање", - "role_type_name_write:remove" => "Филе (фасцикла) делете, цут", - "group_guest" => "Посетиоци", - "group_guest_desc" => "Нисте члан департмана,
                    може приступити само садржају [дијелитељског дијељеног директорија], само за читање.", - "group_role_lebel_desc" => "Ви сте члан департмана,
                    Сви документи унутар одељења Сва права задржана од стране администратора", - "button_save_and_add" => "Сачувај и настави да бисте додали", - "path_cannot_search" => "Директоријум не подржава потрагу!", - "not_support" => "Није подржан!", - "group_not_exist" => "Корисничка група не постоји!", - "upload_clear_all" => "јасно све", - "upload_clear" => "јасно Завршен", - "upload_setting" => "поставити", - "upload_tips" => "Користи слице додавање, не подлеже пхп.ини границе; препоручује хром фасцикла драг анд дроп уплоад искуство", - "upload_exist" => "Датотека са истим именом", - "upload_exist_rename" => "ренаме", - "upload_exist_replace" => "поклопац", - "upload_exist_skip" => "прескочити", - "upload_add_more" => "булк додатак", - "more" => "више", - "system_setting" => "Систем Сеттингс", - "openProject" => "Отворите едитор пројекта", - "url_download" => "Преузимање", - "url_link" => "URL", - "app_type_link" => "пречице", - "createLink" => "створити пречицу", - "createLinkHome" => "Упућен десктоп пречицу", - "createProject" => "Додајући да едитора пројекту", - "only_read" => "Само за читање", - "only_read_desc" => "Директоријум нема дозволу за писање
                    Можете подесити дозволе за овај директоријум на серверу", - "not_read" => "нечитак", - "explorerNew" => "код Линк", - "zip_download_ready" => "Након компресије ће аутоматски преузети, сачекајте ...", - "set_background" => "Постави као Десктоп Валлпапер", - "share" => "Подели", - "my_share" => "Мој део", - "group_share" => "Спољна дељења групе", - "share_edit" => "Измени удио", - "share_remove" => "Откажи дељење", - "share_remove_tips" => "Да ли сте сигурни да желите да откажете дељење? Јавна веза ће бити поништена.", - "share_path" => "Дели путању", - "share_title" => "Подела ресурса", - "share_name" => "Поделите наслов", - "share_time" => "истицање", - "share_time_desc" => "Нулл није постављен", - "share_password" => "екстракт лозинка", - "share_password_desc" => "Празна лозинка није постављена", - "share_cancle" => "Унсхаринг", - "share_create" => "Критике јавну везу", - "share_url" => "схаред Адреса", - "share_not_download" => "Преузимање забрана", - "share_not_download_tips" => "Схарер забрањено преузимање!", - "share_code_read" => "код читач", - "share_save" => "саве Конфигурација", - "share_error_param" => "Грешка параметра!", - "share_error_user" => "Информације о кориснику Грешка!", - "share_error_sid" => "Удео не постоји!", - "share_error_time" => "Дошао си касно, удео је истекао!", - "share_error_path" => "Схаред фајл не постоји, она се брише или уклонити га!", - "share_error_password" => "Погрешна лозинка!", - "share_error_show_tips" => "Овај тип не подржава датотеке преглед!", - "share_view_num" => "views:", - "share_download_num" => "Преузето:", - "share_open_page" => "Отворите заједничку страницу", - "open_the_path" => "Унесите директоријум", - "recycle_clear" => "Испразни отпад", - "recycle_clear_success" => "Празан отпад успех!", - "recycle_clear_info" => "Да ли сте сигурни да желите да потпуно празан смеће?", - "fav_remove" => "Откажи колекцију", - "remove_item" => "Предмети", - "uploading" => "уплоадинг", - "upload_tips_more" => "Превише датотека, препорука компресованог уплоад, онда унзип на мрежи!", - "uploading_move" => "У преносу спајања ...", - "show_file" => "Нова страница приказ", - "unknow_file_title" => "Филе Опен Савет!", - "unknow_file_tips" => "Није подржала примену ове датотеке, можете:", - "unknow_file_try" => "пробати", - "unknow_file_download" => "Преузмите датотеку", - "unknow_plugin_search" => "апликације претраге везане за инсталиране", - "config_save_error_auth" => "Није успела да сачува конфигурацију, администратор забранио ту привилегију!", - "config_save_error_file" => "Грешка, филе не може писати!", - "beautify_code" => "kod форматирање", - "convert_case" => "slučaj конверзија", - "convert_upper_case" => "Претворени у велика", - "convert_lower_case" => "Конвертовати у мала слова", - "editor_insert_time" => "Тренутно време ", - "editor_md5" => " Мд5 шифровање ", - "editor_qrcode" => " Стринг дводимензионални код ", - "editor_regx" => " Редовно тестирање експресије ", - "editor_chinese" => " Поједностављена конверзија ", - "editor_chinese_simple" => " Претворити у поједностављени кинески ", - "editor_chinese_traditional" => " Претвори у традиционални кинески ", - "editor_base64" => "Басе64 кодек ", - "editor_base64_encode" => " Басе64 кодирање ", - "editor_base64_decode" => " Басе64 декодирање ", - "editor_url" => " УРЛ кодек ", - "editor_url_encode" => " УРЛ кодирање ", - "editor_url_decode" => " УРЛ декодирање ", - "editor_unicode" => " Уницоде кодек ", - "editor_unicode_encode" => " Уницоде кодирање ", - "editor_unicode_decode" => " Уницоде декодирање", - "editor_tools_select_tips" => " Изаберите садржај који желите претворити!", - "editor_calc" => "Фрее Цалцулатор", - "shortcut" => "пречице", - "use_free" => "Наставите да користите бесплатну верзију", - "learn_more" => "Леарн Море", - "replace" => "заменити", - "selectAll" => "одабрати", - "reload" => "релоад", - "about" => "на", - "complete_current" => "Ауто-комплетирање струје", - "view" => "поглед", - "tools" => "алатка", - "help" => "помоћи", - "not_exists" => "Не постоји", - "group_role_fileDownload" => "преузимања", - "group_role_share" => "удео", - "users_share" => "deljenje", - "system_setting_save" => "Сецурити Сеттингс", - "system_setting_menu" => "Мену манагемент", - "system_name" => "Назив програма", - "system_name_desc" => "Програм лого наслов", - "system_desc" => "Опис програма", - "path_hidden" => "Дирецтори изузимања", - "version_not_support" => "Ваша верзија не подржава ово, молим вас идите на званичном сајту да купи унапређена верзија!", - "version_not_support_number" => "Како је број ограничења не подржава ову операцију, молимо купити унапређена верзија званичном сајту!", - "path_hidden_desc" => "Фолдере и фајлове по дефаулту не приказује, одвојене зарезима", - "new_user_folder" => "Нови корисник створио уобичајеном именику", - "new_user_folder_desc" => "Одвојене зарезима", - "new_user_app" => "Нови корисник створио подразумевану апликацију", - "new_user_app_desc" => "Апликације Апликација центар, мноштво одвојене зарезима", - "auto_login" => "Посетиоци Аутоматска пријава", - "auto_login_desc" => "Корисник подразумевани Пријава guest/guestкорисника; укључен како би се осигурало да постоји корисник", - "first_in" => "Након пријављивања на подразумевано", - "version_price_free" => "бесплатно", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Директоријум не може писати, подесите директоријум и све подименици да покушате поново после читање и писање!", - "menu_name" => "ime мени", - "menu_hidden" => "сакрити", - "menu_show" => "дисплеј", - "menu_move_down" => "доле", - "menu_move_up" => "горе", - "menu_move_del" => "избрисати", - "menu_open_window" => "Отвори нови прозор", - "menu_sub_menu" => "Подмени", - "url_path" => "uRL адреса", - "url_path_desc" => "УРЛ адреса или ЈС код", - "no_permission_read" => "Немате дозволе за читање!", - "no_permission_download" => "Немате дозволу за преузимање!", - "php_env_check" => "Радно окружење мониторинг:", - "php_env_error" => "Недостаје ПХП библиотека", - "php_env_error_ignore" => "Игнорисати и унесите", - "php_env_error_version" => "ПХП верзија не може бити мања од 5,0", - "php_env_error_path" => "не може писати", - "php_env_error_list_dir" => "Ваш веб сервер отвара директоријум листинг функцију из безбедносних разлога, искључите ову функцију! како? ", - "php_env_error_gd" => "Пхп ГД библиотека требало би да буде отворен, иначе код, користи минијатурни неће функционисати како треба", - "install_login" => "Можете користити следећу пријављивањем", - "install_enter" => "sistem", - "install_user_default" => "Администратор: {0} / (испод поставите лозинку)
                    Просечан корисник: {1}
                    Гостима: {2}", - "login_root_password" => "Подесите администраторску лозинку", - "login_root_password_repeat" => "опет Потврди лозинку", - "login_root_password_equal" => "Две лозинке се не подударају!", - "login_root_password_tips" => "Задавање лозинке администратора!", - "forget_password" => "Заборавили сте лозинку", - "forget_password_tips" => "Заборавио Администратор Пассворд:
                    Молимо вас пријавите сервер обрисати ./дата/систем/инсталл.лоцк ресет;

                    Нон-администратор Форгот Пассворд:
                    Контактирајте администратора за ресет!", - "copyright_desc" => "Кодекплорер је високо признање систем за управљање веб документ, можете га користити за унутрашњу управљање документима или заједнички, могу се користити и на серверу за управљање сајт, заменити ФТП-а, чак и вебИДЕ онлајн развој. Такође можете програмирати други развој да се интегрише ово у постојеће системе.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "КодЕкплорер", - "kod_name_desc" => "Манго облак • Екплорер", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Манго облак • Екплорер", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "КодЕкплорер, Код, кодЦлоуд, вебОС, вебИДЕ, ПХП филеманаге, филеманаге Дао облак, облак манга, системи за управљање документима, предузеће облак диска, истраживач ,, онлајн документацију, онлајн Оффице Онлине Оффице, онлајн ЦАД приказ онлине уређивање онлине уредник", - "kod_meta_description" => "КодЕкплорер може Облак Роад (раније манго облак) је водећи провајдер владиних / корпоративних Привате Цлоудс и онлине система за управљање документима из личних веб сајтова, предузеће Привате Цлоуд решења, складиштење мреже, онлине управљање документима онлине канцеларије да обезбеди сигуран и контролисан, једноставан и лак Употреба, врло прилагођен private cloud производе. Користећи виндовс стил интерфејс, оперативне праксе, без потребе да се прилагоде брзо почнемо, подржава стотине популарних интернет формата приказ датотеке, репродукција и уређивање нарушавају животну средину, моћан, је једном суђење, не неодвојив од приватног цлоуд понуде.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "лог ин", - "guest_login" => "Гост Пријава", - "username" => "Пријава налога", - "userNickName" => "Кориснички надимак", - "password" => "лозинка", - "login_code" => "кодови", - "need_check_code" => "Пријава Аутхентицатион Цоде отворен", - "need_check_code_desc" => "Након пријављивања, морате унети верификациони код.", - "setting_csrf_protect" => "Опен заштита ЦСРФ", - "setting_csrf_protect_desc" => "Након врсти отварања напада може ефикасно да заштити ЦСРФ", - "login_rember_password" => "Запамти лозинку", - "setting_show_root_group" => "Наведите све одјеле", - "setting_show_root_group_desc" => "Корен од дрвета директоријума било да пописује све одељења", - "setting_show_share_user" => "Листа свих корисника", - "setting_show_share_user_desc" => "Корен одељења директоријума дрвета је наведена за сву корисничку поделу", - "setting_clear_user_recycle" => "Испразните корпе за отпатке за све кориснике", - "setting_clear_cache" => "Испразните кеш меморију", - "setting_icp" => "Ауторска права или матични број", - "setting_global_css" => "Цустом глобална ЦСС", - "setting_global_css_desc" => "Све странице ће убацити прилагођени ЦСС", - "setting_global_html" => "Статистички ХТМЛ код", - "setting_global_html_desc" => "Све странице ће бити убачен у овом ставу хтмл код, код се може поставити статистику независних", - "us" => "kodcloud.com", - "login_not_null" => "Корисничко име и лозинка не може бити празна!", - "code_error" => "kodovi грешака", - "password_error" => "Корисничко име или лозинка нетачни!", - "password_not_null" => "Лозинка не може бити празна!", - "old_password_error" => "Стара лозинка није у реду!", - "permission" => "Дозвола!", - "permission_edit" => "мјењање", - "file_info_owner" => "власник", - "file_info_group" => "група", - "no_permission" => "Администратор је онемогућио ту привилегију!", - "no_permission_ext" => "Администратор забранио ову врсту датотека дозвола", - "dialog_max" => "Макимизе", - "dialog_min" => "умањити", - "dialog_min_all" => "минимизира све", - "dialog_display_all" => "Схов све прозоре", - "dialog_close_all" => "zatvori све", - "open" => "отворен", - "others" => "други", - "open_with" => "Отворен за ...", - "close" => "близу", - "close_all" => "zatvori све", - "close_left" => "Затворите картицу лево", - "close_right" => "Затварање картица десно", - "close_others" => "близу Друго", - "loading" => "Операција ...", - "warning" => "упозорење", - "getting" => "Гет тхе ...", - "sending" => "Пренос података ...", - "data_error" => "Грешка подаци!", - "get_success" => "Гет Суццесс!", - "save_success" => "Успешно сачуван!", - "success" => "uspešna операција", - "error" => "Операција није успела", - "error_repeat" => "Операција није успела, име већ постоји!", - "word_error" => "Неуспешно ", - "word_success" => " Успех", - "system_error" => "Системска грешка", - "name" => "име", - "type" => "тип", - "contain" => "садржати", - "address" => "локација", - "size" => "величина", - "byte" => "бајт", - "path" => "путања", - "action" => "радни", - "create_time" => "направљена", - "modify_time" => "Модифиед", - "last_time" => "Задња посета", - "sort_type" => "Сортирај по", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "јавни регистар", - "system_path_not_change" => "Систем директоријум, не може се мењати", - "file" => "фајл", - "folder" => "фасцикла", - "copy" => "копија", - "past" => "штап", - "clone" => "Критике копију", - "cute" => "схеар", - "cute_to" => "Пређите на ...", - "copy_to" => "Копирај у ...", - "remove" => "избрисати", - "remove_force" => "у потпуности уклонили", - "info" => "имовина", - "list_type" => "поглед", - "list_icon" => "икона низ", - "list_list" => "лист аранжман", - "list_list_split" => "kolona режим", - "sort_up" => "повећање", - "sort_down" => "опадајући", - "order_type" => "Сортирај по", - "order_desc" => "силазни", - "order_asc" => "узлазни", - "rename" => "ренаме", - "add_to_fav" => "Додај у Фаворитес", - "search_in_path" => "Претраживање фолдера", - "add_to_play" => "Адд то Плаилист", - "manage_fav" => "Управљајте Фаворитес", - "refresh_tree" => "Рефресх стабло", - "manage_folder" => "директоријум за управљање", - "close_menu" => "zatvori мени", - "zip" => "Направите компримовани пакет", - "unzip" => "За издвајање ...", - "unzip_folder" => "Унзип у фолдер", - "unzip_this" => "Екстракт на струју", - "unzip_to" => "За издвајање ...", - "zipview_file_big" => "Фајл је превелик, а затим екстракт је операција преглед!", - "clipboard" => "Погледај Цлипбоард", - "clipboard_clear" => "празна Сандуче", - "full_screen" => "фулл сцреен", - "folder_info_item" => "Предмети", - "folder_info_item_select" => "odabrani", - "file_load_all" => "Доубле-цлицк то лоад све ......", - "tips" => "брз", - "ziping" => "Зиппинг ...", - "unziping" => "Издвајање ...", - "moving" => "Мобиле операција ...", - "remove_title" => "Потврда брисања", - "remove_info" => "Потврђују да обришете изабрану ставку?", - "remove_title_force" => "трајно избрисан", - "remove_info_force" => "Сте сигурни да желите да трајно избрисати овај документ?", - "name_isexists" => "Погрешно, име већ постоји!", - "install" => "инсталирати", - "width" => "ширина", - "height" => "висок", - "app" => "Лигхт Апликације", - "app_store" => "Лигхт Апликације", - "app_create" => "створити Апплицатион", - "app_edit" => "Измените апликацију", - "app_group_all" => "комплетан", - "app_group_game" => "игра", - "app_group_tools" => "алатка", - "app_group_reader" => "читати", - "app_group_movie" => "телевизија", - "app_group_music" => "музика", - "app_group_life" => "живот", - "app_group_others" => "други", - "app_desc" => "опис", - "app_icon" => "aplikacije икона", - "app_icon_show" => "УРЛ адреса или директоријум", - "app_group" => "primena Пакет", - "app_type" => "тип", - "app_type_url" => "линк", - "app_type_code" => "јс проширење", - "app_display" => "екстеријер", - "app_display_border" => "Без граница (тј селецт маргина)", - "app_display_size" => "Ресизе (Проверите да подешавање)", - "app_size" => "величина", - "app_url" => "линк адреса", - "app_code" => "јс код", - "edit" => "едит", - "edit_can_not" => "Није текст фајл", - "edit_too_big" => "Датотека је превелика, она не може бити већа од 40М", - "open_default" => "Уобичајено Отворено", - "open_ie" => "Отворили прегледач", - "refresh" => "рефресх", - "refresh_all" => "Изнуде рефресх", - "newfile" => "Нова датотека", - "newfile_save_as" => "саве то", - "newfolder" => "Нова фасцикла", - "newothers" => "new отхер", - "path_loading" => "Лоадинг ...", - "go" => "Хода!", - "go_up" => "горњи слој", - "history_next" => "напред", - "history_back" => "повлачење", - "address_in_edit" => "Кликните за улазак у режим измене", - "double_click_rename" => "Двапут кликните на преименовање", - "double_click_open" => "Доубле-цлицк то опен", - "path_null" => "Фасцикла је празна!", - "file_size_title" => "икона Величина", - "file_size_small_super" => "Ултра-мали", - "file_size_small" => "male иконе", - "file_size_default" => "Иконе", - "file_size_big" => "large Ицонс", - "file_size_big_super" => "veliki Икона", - "upload" => "отпремање", - "upload_ready" => "Ваитинг фор уплоад", - "upload_success" => "Уплоад суццессфул", - "upload_path_current" => "Пребацити на тренутном директоријуму", - "upload_select" => "изаберите Филе", - "upload_max_size" => "Максимална дозвољена", - "upload_size_info" => "Ако желите да подесите више, молим измените у пхп.ини максималну дозвољену уплоад. Када изаберете фајл већи од ове конфигурације ће аутоматски филтрирати.", - "upload_error" => "Уплоад фаилед", - "upload_error_http" => "Мрежа или фиревалл грешке", - "upload_muti" => "Мулти-филе уплоад", - "upload_drag" => "Драг анд дроп отпремање", - "upload_drag_tips" => "Отпустите за уплоад!", - "path_not_allow" => "Филе наме није дозвољено", - "download" => "Преузимање", - "downloading" => "Лоадинг ...", - "download_address" => "Преузимање", - "download_ready" => "Ће бити преузета", - "download_success" => "Довнлоад Суццесс!", - "download_error" => "Преузимање није успело!", - "download_error_create" => "Врите еррор!", - "download_error_exists" => "Линк то филе фаилед!", - "upload_error_null" => "Но филе!", - "upload_error_big" => "Величина прелази границе сервера", - "upload_error_move" => "Фаилед то мове фајл!", - "upload_error_exists" => "Датотека већ постоји", - "upload_local" => "lokalna Додај", - "download_from_server" => "Даљински Преузимање", - "save_path" => "саве Пут", - "upload_select_muti" => "Већи број за селекцију филе уплоад", - "search" => "претраживање", - "searching" => "Сеарцхинг ...", - "search_result" => "Резултати претраге", - "seach_result_too_more" => "Превише резултати претраге, препоручује се за директоријум или речи", - "search_null" => "Нема резултата!", - "search_uplow" => "велика и мала слова", - "search_content" => "Сеарцх филе садржај", - "search_info" => "Молимо унесите термин за претрагу и претражите стазе!", - "search_ext_tips" => "Би | одвојен, на пример пхп | ЈС | ЦСС
                    не попуни претрагу подразумевани текст фајл", - "file_type" => "Тип фајла", - "goto" => "Јумп то", - "server_dwonload_desc" => "Задатак је додат на листу за преузимање", - "parent_permission" => "Родитељ дозволе директоријума", - "root_path" => "Ми Доцументс", - "lib" => "складиште", - "fav" => "боокмарк", - "desktop" => "десктоп", - "browser" => "бровсер", - "my_computer" => "Ми Цомпутер", - "recycle" => "смеће", - "my_document" => "Ми Доцументс", - "my_picture" => "Ми Пхотос", - "my_music" => "Ми Мусиц", - "my_movie" => "Ми Видео", - "my_download" => "Ми Довнлоадс", - "ui_desktop" => "десктоп", - "ui_explorer" => "Управљање датотекама", - "ui_editor" => "уредник", - "adminer" => "админер", - "ui_project_home" => "projekat Почетна", - "ui_login" => "лог ин", - "ui_logout" => "одустати", - "setting" => "Систем Сеттингс", - "setting_title" => "Опције", - "setting_user" => "Лични центар", - "setting_password" => "Промена лозинке", - "setting_password_old" => "Стара лозинка", - "setting_password_new" => "Ревисед на", - "setting_language" => "Поставке језика", - "setting_member" => "Управљање корисницима", - "setting_group" => "Корисник менаџмент група", - "setting_group_add" => "Адд Усер Гроуп", - "setting_group_edit" => "Едит Усер Гроупс", - "setting_theme" => "Тхеме Сеттингс", - "setting_wall" => "Подешавања позадине", - "setting_wall_desktop" => "Десктоп позадине", - "setting_wall_desktop_list" => "Десктоп Валлпапер Манагемент", - "setting_wall_login_list" => "Логин Валлпапер Манагемент", - "setting_wall_login_tips" => "Савет: Када постоји више од једног комада, позадина интерфејса за пријављивање ће се ротирати насумично", - "setting_wall_diy" => "Цустом тапета:", - "setting_wall_info" => "Слика УРЛ адресу, локалне слике могу бити у праву да добије претраживач за отварање слике", - "setting_fav" => "Менаџер обележивача", - "setting_help" => "Коришћење помоћи", - "setting_about" => "О радова", - "setting_success" => "Модификација је ступило на снагу!", - "can_not_repeat" => "Није дозвољено да се понови", - "absolute_path" => "апсолутна адреса", - "group" => "Усер Гроупс", - "data_not_full" => "Подаци достављени непотпуни!", - "default_user_can_not_do" => "Подразумевани корисник не може да ради", - "default_group_can_not_do" => "Уобичајено корисничке групе не могу да раде", - "username_can_not_null" => "Корисничко име не може бити празна!", - "groupname_can_not_null" => "Корисничко име група не може бити празна!", - "groupdesc_can_not_null" => "Корисник Гроуп Опис не може бити празна!", - "group_move_user_error" => "Корисничка група корисника мове фаилед", - "group_already_remove" => "Корисник група је избрисана", - "group_not_exists" => "Ова група корисника не постоји", - "member_add" => "Додај корисника", - "password_null_not_update" => "Они су рекли да нису променили лозинку није испуњен", - "if_save_file_tips" => "Неке датотеке нису спремљене. Да ли сте сигурни да затворите прозор?", - "if_save_file" => "Филе није сачуван, желите да сачувате?", - "if_remove" => "Цонфирм Делете", - "member_remove_tips" => "Након што уклоните корисник директоријум ће бити обрисана", - "group_remove_tips" => "Након што уклоните корисник група корисника не могу да се пријавим
                    (треба да ре-сет група корисника)", - "group_name" => "Корисничко име групе", - "group_name_tips" => "Препорука енглески назив, не може се поновити", - "group_desc" => "дисплеј Име", - "group_desc_tips" => "Име групе Опис", - "group_role_ext" => "Ектенсион ограничења", - "group_role_ext_tips" => "Са више | одвојен", - "group_role_file" => "Управљање датотекама", - "group_role_upload" => "dozvoli отпремање", - "group_role_user" => "кориснички подаци", - "group_role_group" => "Корисник менаџмент група", - "group_role_member" => "Управљање корисницима", - "group_role_mkfile" => "Нова датотека", - "group_role_mkdir" => "Нова фасцикла", - "group_role_pathrname" => "ренаме", - "group_role_pathdelete" => "филе брисање", - "group_role_pathinfo" => "Филе Пропертиес", - "group_role_pathmove" => "Мове (копија / цут / пасте / Драг рад)", - "group_role_zip" => "компресија", - "group_role_unzip" => "отворити рајсфешлус", - "group_role_search" => "претраживање", - "group_role_filesave" => "Сачувајте датотеку за уређивање", - "group_role_can_upload" => "Уплоадинг и преузимање", - "group_role_download" => "Даљински Преузимање", - "group_role_passowrd" => "Промена лозинке", - "group_role_config" => "konfiguracija података", - "group_role_fav" => "Боокмарк операције (Адд / Едит / уклони)", - "action_list" => "Погледај листу", - "action_add" => "додати", - "action_edit" => "едит", - "action_del" => "избрисати", - "group_role_ext_warning" => "Отпремајте не дозвољавају такве датотеке,
                    Ренаме (преименован у наведеном продужетак),
                    едит спасити, даљински за преузимање, екстракт", - "group_tips" => "
                  33. 1. Име корисничке групе не може се дуплирати. Након промене имена групе, он припада реорганизованом кориснику и аутоматски се повезује.
                  34. 2. Екстензије ограничавају однос између безбедности система, молимо будите опрезни (ако креирате нови пхп у веб директоријуму, то значи да је промена дозвола програма овом кориснику само питање наравно)
                  35. 3. Управљање домаћинством, управљање групама права, права гледања и додавање, брисање и промена права су везани, програми су аутоматски повезани
                  36. 4. Након што група за дозволу постави да додате групу за дозволу, накнадна дозвола није наследјена (ова дозвола је еквивалентна највишој дозволи).
                  37. ", - "not_null" => "Обавезна поља не може бити празна!", - "picture_can_not_null" => "Слике не може бити празна!", - "rname_success" => "Преименовати успех!", - "please_inpute_search_words" => "Унесите стринг за тражење", - "remove_success" => "Избрисана!", - "remove_fali" => "Брисање није успело!", - "clipboard_null" => "Цлипбоард је празна!", - "create_success" => "Нови успех!", - "create_error" => "Нови не, проверите дозволе директоријума!", - "copy_success" => "[Копирање] - покрива Цлипбоард успех!", - "cute_success" => "[Цут] - покрива Цлипбоард успех!", - "clipboard_state" => "Цлипбоард Статус:", - "no_permission_write_all" => "Датотека или директоријум нису подешени за упис", - "no_permission_write_file" => "Фајл нема дозволу за писање", - "no_permission_read_all" => "Датотека или директоријум нема читања дозволу", - "copy_not_exists" => "Извор не постоји", - "current_has_parent" => "Мета фасцикла је потфасцикла из фасцикле извора!", - "past_success" => "операција паста је завршена ", - "cute_past_success" => "операција рез је завршен (извор фајл обрисан, Цлипбоард празан)", - "zip_success" => "компресија завршен", - "not_zip" => "nije архива", - "zip_null" => "Није одабран фајл или именик", - "unzip_success" => "унзип комплетан", - "gotoline" => "Скочи на линији", - "path_is_current" => "Пут и струја пут да отвори исти!", - "path_exists" => "Име већ постоји!", - "undo" => "опозив", - "redo" => "анти опозив", - "preview" => "Преглед", - "wordwrap" => "врап", - "show_gutter" => "Схов Лине Нумберс", - "char_all_display" => "Схов невидљиви карактери", - "auto_complete" => "аутоматски подсети", - "auto_save" => "Аутоматски чувај", - "function_list" => "Листа функција", - "code_theme" => "кодирање Стил", - "font_size" => "Величина фонта", - "confirm" => "Јеси ли сигуран да то желиш?", - "button_ok" => "одредити", - "button_submit" => "поднети", - "button_set" => "поставити", - "button_cancel" => "отказан", - "button_edit" => "едит", - "button_save" => "саве", - "button_apply" => "Примени", - "button_save_all" => "Сачувај све", - "button_not_save" => "Не штеде", - "button_add" => "додати", - "button_back_add" => "Назад на додавање", - "button_del" => "избрисати", - "button_save_edit" => "Сачувајте промене", - "button_save_submit" => "саве Пошаљи", - "button_more" => "више", - "button_select_all" => "Изабери све / Обрни избор", - "charset_AUTO" => "Аутоматска идентификација", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "арапски", - "charset_ISO_8859_6" => "арапски", - "charset_ISO_8859_10" => "Нордиц језика", - "charset_CP1257" => "Балтиц језика", - "charset_ISO_8859_13" => "Балтиц језика", - "charset_ISO_8859_4" => "Балтиц језика", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "грузијски", - "charset_PT154" => "казакх", - "charset_CP949" => "корејски", - "charset_EUC_KR" => "корејски", - "charset_GB18030" => "pojednostavljeni кинески", - "charset_GBK" => "pojednostavljeni кинески", - "charset_ISO_8859_14" => "келтски", - "charset_CP1133" => "лао", - "charset_ISO_8859_16" => "румунски", - "charset_ISO_8859_3" => "Јужна Европа", - "charset_EUC_JP" => "јапански", - "charset_ISO_2022_JP" => "јапански", - "charset_SHIFT_JIS" => "јапански", - "charset_KOI8_T" => "тајик језика", - "charset_ISO_8859_11" => "Тајландски", - "charset_TIS_620" => "Тајландски", - "charset_CP1254" => "турски", - "charset_CP1251" => "Ћирилица", - "charset_ISO_8859_5" => "Ћирилица", - "charset_KOI8_R" => "Ћирилица", - "charset_KOI8_U" => "Ћирилица", - "charset_CP1252" => "Западноевропски језици", - "charset_ISO_8859_1" => "Западноевропски језици", - "charset_ISO_8859_15" => "Западноевропски језици", - "charset_Macintosh" => "Западноевропски језици", - "charset_CP1255" => "Хебрејски", - "charset_ISO_8859_8" => "Хебрејски", - "charset_CP1253" => "грчки", - "charset_ISO_8859_7" => "грчки", - "charset_ARMSCII_8" => "јерменски", - "charset_CP1258" => "вијетнамски", - "charset_VISCII" => "вијетнамски", - "charset_CP1250" => "Централ Еуропеан лангуагес", - "charset_ISO_8859_2" => "Централ Еуропеан лангуагес", - "charset_default_set" => "филе кодирање", - "charset_convert_save" => "Сачувајте датотеку кодирану као", - "PluginCenter" => "плуг центар", - "PluginBuy" => "Овлашћење за куповину", - "PluginInstalled" => "Је инсталиран", - "PluginUpdate" => "ажурирање", - "PluginListNull" => "Нема садржаја!", - "PluginType" => "класификација", - "PluginTypeAll" => "комплетан", - "PluginTypeFile" => "Енханцед фајл", - "PluginTypeSafe" => "Сецурити Тоолс", - "PluginTypeTools" => "корисност", - "PluginTypeMedia" => "мултимедијални", - "PluginTypeOthers" => "други", - "PluginInstall" => "инсталл плуг", - "PluginEnable" => "Омогући додатке", - "PluginDisable" => "онеспособити", - "PluginRemove" => "Деинсталирајте утикач", - "PluginConfig" => "Конфигурисање језичка", - "PluginStatus" => "држава", - "PluginStatusEnabled" => "omogućeno", - "PluginStatusDisabled" => "није омогућено", - "PluginStatusNotInstall" => "nije инсталиран", - "PluginInstalling" => "Инсталација ...", - "PluginHasUpdate" => "исправке", - "PluginUpdateStart" => "Упдате додатак", - "PluginNeedConfig" => "Потреба да се омогући почетну конфигурацију", - "PluginConfigNotNull" => "Обавезна поља не може бити празна!", - "PluginOpen" => "otvoreno", - "PluginAuther" => "аутор", - "PluginVersion" => "издање", - "PluginDownloadNumber" => "инсталација", - "PluginBack" => "повратак", - "PluginReadme" => "опис", - "PluginResetConfig" => "Вратите подразумеване поставке", - "PluginInstallSelf" => "Ручна инсталација", - "Plugin.config.auth" => "Дозволе", - "Plugin.config.authDesc" => "Све од доступних подешавања, или одређују корисници, корисничке групе, групе за људска права могу користити", - "Plugin.config.authOpen" => "Отворен приступ", - "Plugin.config.authOpenDesc" => "Нема потребе за посјетом може се приступити, може се користити за екстерни позив за позиве", - "Plugin.config.authAll" => "ималац", - "Plugin.config.authUser" => "корисник", - "Plugin.config.authGroup" => "Одређени одјел", - "Plugin.config.authRole" => "група права", - "Plugin.Config.openWith" => "опен стил", - "Plugin.Config.openWithDilog" => "Интерни дијалог", - "Plugin.Config.openWithWindow" => "Нова страница се отвара", - "Plugin.Config.fileSort" => "Проширење удружење приоритет", - "Plugin.Config.fileSortDesc" => "Што је већа продужење да отвори већи приоритет", - "Plugin.Config.fileExt" => "Подржани формати датотека", - "Plugin.Config.fileExtDesc" => "Ассоциатед Проширење на плуг-ин", - "Plugin.tab.basic" => "Основне поставке", - "Plugin.tab.auth" => "Дозволе", - "Plugin.tab.others" => "Остала подешавања", - "Plugin.default.aceEditor" => "аце Уредник", - "Plugin.default.htmlView" => "Веб страница Преглед", - "Plugin.default.picasa" => "Пицаса слика претраживање", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "јПлаиер играч", - "Plugin.auth.viewList" => "Плугин листе", - "Plugin.auth.setting" => "Плугин подешавања", - "Plugin.auth.status" => "Искључи", - "Plugin.auth.install" => "Инсталирајте / деинсталирајте", - "Explorer.UI.openWith" => "изаберите Отвори", - "Explorer.UI.openWithText" => "Нотепад за отварање", - "Explorer.UI.appSetDefault" => "Подесите подразумевано отворен", - "Explorer.UI.appAwaysOpen" => "Увек користите изабрани програм за отварање ову слику", - "Explorer.UI.selectAppDesc" => "Изаберите програм који желите да отворите ову слику", - "Explorer.UI.selectAppWarning" => "Молимо одаберите апликацију!", - "Explorer.UI.appTypeSupport" => "Подржано", - "Explorer.UI.appTypeAll" => "Све апликације", - "kodApp.oexe.edit" => "Измени апликацију светлости", - "kodApp.oexe.open" => "Отворите апликацију светлости" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sv/about.html b/plugin/document/kod/config/i18n/sv/about.html deleted file mode 100644 index 61bd583be..000000000 --- a/plugin/document/kod/config/i18n/sv/about.html +++ /dev/null @@ -1,33 +0,0 @@ - 
                    -
                    KODExplorer vill säga vad?
                    -

                    KODExplorer är en öppen källkod webbaserat online dokumenthantering, kod redaktör. Det ger en sorts klassiska fönster användargränssnitt, en uppsättning online dokumenthantering, fil förhandsgranska, redigera, ladda upp, ladda ner, packa upp på nätet musikuppspelning. Gör det möjligt att uppnå webbutveckling direkt i webbläsaren, källkod fil förhandsvisning, och distribuera webbplatsens ägare och den lokala verksamheten så enkelt, snabbt och säker upplevelse.

                    -

                    - design -

                    -

                    klassisk tradition, strävan efter innovation, att förse användare med bekväma, säker och enkel att använda online moln ledningssystem.

                    -

                    när (när), där (var), har webben när du vill (vill) det är ditt verktyg (4W politik).

                    -

                    - användarvänliga -

                    -

                    närvarande KODExplorer ledningssystem huvudsakligen belägna i den personliga moln hosting, liten företaget cloud resursförvaltning, nätverksdisk, förvaltning av små och medelstora anläggningar. Web Developer och master (veteraner): online-redaktör, komprimerad backup, distribution, klassiska Windows-gränssnittet drift, lätt att komma igång och bli av med värd SSH, ftp-kommandot komplexa tråkiga operationer.

                    -

                    personlig privata moln (rookie): Förvaltningsnätverksresurser disk, samma klassiska Windows-gränssnittet operation kan du placera musiken bläddra nätverksenhet, skärm filer, uppladdning och nedladdning snabbt och enkelt.

                    -
                    - -
                    -
                    funktioner
                    -

                    omfattande dokumenthantering, kraftfulla online filredigerare

                    -

                    var du än är, kan du hantera dina filer och online-underhållning, online-skriva kod! Lika lämpliga för användning som operativsystemet.

                    -

                    omfattande lokal erfarenhet transplantationen höger, dra, valrutan, genvägar, filsökning (sök innehåll) ......

                    -

                    valrutan, dra-rörelse, dra och släpp uppladdning, online-redaktör, videospelare, packa. Full ajax garanti prestanda och upplevelse!

                    -

                    varje funktion direkt smidig anslutning, i dialogform, multi-task ledningsfunktioner

                    -

                    Editor stödjer flera dokument, stöd ZendCoding html, css, JS högre kodning effektivitet!

                    -

                    perfekt kinesiska stöd, förvrängd lösa olika situationer,

                    -
                    - -
                    -
                    öppen källkod teknikens införande
                    -

                    1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js ram vanliga utveckling. Driften av Dom, BOM drift, css drift och Ajax paket

                    -

                    2.ArtDialog:en vacker design, stark webläsare dialogrutan widget. Så pop-up handtag, händelser, och överföring av data för att få en bättre enhetlig hantering

                    -

                    3.Ztree:lista träd kontroll, är skalbarhet mycket stark träd datamanipulation widget

                    -

                    4.codemirror:en kod redaktör js plugins, stöder en mängd olika programmeringsspråk för att lyfta fram

                    -

                    5.zendcoding:en stöd html-koder snabbt skriva plug-ins. Förenklar definitionen av koden är skriven. Enkel sammanställning

                    -

                    6.less:en effektiv, funktionell css utvecklingsmodell för att förbättra den främre änden css formatmallar återanvändbarhet . Enkel sammanställning

                    -

                    7.SWFUpload:flash filuppladdning

                    -

                    8 .CMP4:en mycket bra flash player plugin mediafiler, stöd för strömmande media, populär musik video verktyg uppspelning. Stöd för huden, mycket konfigurerbara inställningar. Dynamisk lista xml laddad. mms strömmande media, RSTP öppna medieuppspelning stöd source-licens

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/sv/edit.html b/plugin/document/kod/config/i18n/sv/edit.html deleted file mode 100644 index b10d27755..000000000 --- a/plugin/document/kod/config/i18n/sv/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    rik funktionalitet

                    -

                    Kod frågar automatiskt

                    -

                    Multi-tema: Välj din favorit programmering stil

                    -

                    Anpassad Font: för användning vid scen

                    -

                    Multi markören redigering, blockera redigering nätet erfarenhet av programmering kan jämföras med det sublima

                    -

                    Block vikning, expandera, wrap

                    -

                    Stöd för flera flikar, dra kopplingssekvensen;

                    -

                    Att upprätthålla flera dokument, söka och ersätta, historia;

                    -

                    Komplettera automatiskt [] {} (), '' ''

                    -

                    Online realtid förhandsvisning som tillåter dig att bli kär i online-programmering!

                    -

                    zendcodeing stöd, skriva kod åttio

                    -

                    Fler funktioner väntar på din upptäckt ......

                    -
                    -
                    -

                    150 typer av kod markering

                    -

                    Tips: HTML, JavaScript, CSS, mindre, sass, SCSS

                    -

                    webbutveckling: PHP, Perl, Python, Ruby, Elang, gå ...

                    -

                    Traditionella språk: Java, C, C ++, C #, Action, VBScript ...

                    -

                    Övrigt: markdown, skal, sql, lua, xml, yaml ...

                    -
                    -
                    -
                    -
                    -

                    genväg Action

                    -
                     Vanligen använda genvägar: 
                    - Ctrl + S för att spara 
                    - Ctrl + A Markera alla Ctrl + X Klipp 
                    - ctrl + c ctrl + v pasta kopia 
                    - Ctrl + Z Ångra Ångra Anti ctrl + y 
                    - Ctrl + F för att hitta ersättare ctrl + f + f 
                    - win + alt + 0 kollaps all vinst + Alt + Skift + 0 Expandera alla 
                    - ESC [Avsluta sökning avbryts automatiskt frågar ...] 
                    - ctrl-shift-s Förhands 
                    - ctrl-shift-e show & Close funktion 
                    -
                    -
                     Välj: 
                    - Mus marquee - dra 
                    - shift + Home / End / upp / vänster / ner / höger 
                    - shift + PageUp / Pagedown vända upp och ner för att välja 
                    - ctrl + shift + hem / slutet av den aktuella markören till början och slutet 
                    - alt + mus för att dra markeringen blocket 
                    - ctrl + alt + g sats väljer du och anger den aktuella multi-tab editor 
                    -
                    -
                     markör: 
                    - hem / avsluta / upp / vänster / ner / höger 
                    - Ctrl + Home / End Flytta markören till dokument huvud / svans 
                    - Ctrl + P Gå till matchande tagg 
                    - PageUp / Pagedown markören uppåt och nedåt 
                    - alt + vänster / höger för att flytta till början av raden 
                    - Skift + vänster / höger markören till slutet av raden & 
                    - Ctrl + L för att hoppa till en specifik rad 
                    - ctrl + alt + upp / ner (nedan) ökar markören 
                    -
                    -
                     Edit: 
                    - Ctrl + / Kommentera & avkommentera ctrl + alt + en berättigad 
                    - tabellfliken inriktnings shift + bord övergripande framsteg bord 
                    - radera radera radera hela raden Ctrl + D 
                    - ctrl + delete för att radera raden på rätt ord 
                    - ctrl / shift + backsteg för att ta bort ordet till vänster 
                    - alt + shift + upp / ner och läggas till kopian linjen (nedan) plan 
                    - alt + delete för att radera innehållet i höger om markören 
                    - alt + upp / ner på den aktuella linjen och linjen (nästa rad utbyte) 
                    - Ctrl + Skift + D rader kopieras och läggas till följande 
                    - ctrl + delete för att ta bort höger om ordet 
                    - ctrl + shift + u omvandlas till gemener 
                    - Ctrl + U markerade texten till versaler 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/sv/help.html b/plugin/document/kod/config/i18n/sv/help.html deleted file mode 100644 index 0614fea3e..000000000 --- a/plugin/document/kod/config/i18n/sv/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    filhantering
                    -

                    File Selection: radio, mus tält, skift val, ctrl slumpmässigt vald, tangentbordet upp och ner, hem, slut val.

                    -

                    File operation: När du har valt en fil, kan du kopiera, klippa, ta bort, visa egenskaperna för kompression, byta namn, öppna Förhands och andra verksamheter ......

                    -

                    Filuppladdning: Ladda upp flera filer batch, html5 dra uppladdning (dra för att smidigt ladda upp fönstret, dra och släpp för mappar)

                    -

                    Rätt funktion: Höger fil, mapp, höger, mer direkt efter valet drift, skrivbord, höger, höger katalogträd, genvägar högerbundet meny
                    - (Välj alla - Kopiera - Klipp ut - Klistra in - Radera - Ändra namn, ......)

                    -

                    Filbläddrare: Lista-läge, ikon-läge, dubbelklicka i undermappar, adressfältet operation, öppna en mapp rekord contrarian rekord (framåt och bakåt)

                    -

                    Stöd dra och släpp: Kontrollera dra, skär för att uppnå funktionen angivna mappen

                    -

                    Kortkommandon: radera radera, ctrl + A Markera allt, Ctrl + C för att kopiera, + X Klipp ut, filsökning (sök innehåll) Ctrl

                    -
                    -
                    -
                    Arkiv Förhandsgranskning
                    -

                    Fil Visning: visa innehållet i en textfil redigera och spara, html, swf-fil förhandsvisning,

                    -

                    Visning: automatisk generering av miniatyrer, bild bildspel;

                    -

                    Ljuduppspelning: spela musik på nätet och videofiler, stöd mp3, wma, mitten, AAC, WAV, mp4,

                    -

                    Video: online video uppspelning, format som stöds: FLV, F4V, 3gp

                    -

                    kontor: kontor Online Preview, format som stöds: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    Genvägar
                    -

                    ange Öppen

                    -

                    Ctrl + A Markera alla

                    -

                    Ctrl + C för att kopiera den valda

                    -

                    ctrl + v för att klistra in

                    -

                    Ctrl + X Klipp

                    -

                    Ctrl + F för att söka den aktuella katalogen

                    -

                    alt + n Ny fil

                    -

                    alt + m Ny mapp

                    -

                    delete Ta bort markerade

                    -

                    backsteg Tillbaka

                    -

                    Ctrl + backsteg framåt

                    -

                    F2 Byt namn vald (mapp)

                    -

                    hem / avsluta / upp / ned / vänster / höger för att välja fil

                    -

                    Anykey Kontrollera att trycka den första bokstaven i tecken filer och mappar valda automatisk cykel

                    -
                    diff --git a/plugin/document/kod/config/i18n/sv/main.php b/plugin/document/kod/config/i18n/sv/main.php deleted file mode 100644 index dc08efd76..000000000 --- a/plugin/document/kod/config/i18n/sv/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Välj filen ...", - "path_api_select_folder" => "Välj en mapp ...", - "path_api_select_image" => "Välj en bild ...", - "share_can_upload" => "Tillåt uppladdning", - "move_error" => "flytta misslyckades", - "setting_basic" => "grund~~POS=TRUNC", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "öppen Animation", - "recycle_open_if" => "Öppna Papperskorgen", - "recycle_open" => "öppen", - "setting_user_recycle_desc" => "Efter raderingen raderas direkt fysisk borttagning", - "setting_user_animate_desc" => "Fönster öppet och annan animering", - "setting_user_sound_desc" => "Drift ljud", - "setting_user_imageThumb" => "Miniatyrer i bild", - "setting_user_imageThumb_desc" => "Bättre webbupplevelse efter öppnandet", - "setting_user_fileSelect" => "Öppna filikonen", - "setting_user_fileSelect_desc" => "Filikonen vänster kontroll, högerklicka på genvägsmenyn", - "qrcode" => "URL QR-kod", - "theme_mac" => "Mac minimalistisk vit", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "Metro ljusgrön", - "theme_metro_purple" => "Metro elegant lila", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro ljus orange", - "theme_alpha_image" => "Bright - flygande", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Custom", - "theme_diy_title" => "Anpassade Temainställningar", - "theme_diy_background" => "bakgrund", - "theme_diy_image" => "bild", - "theme_diy_color_blur" => "gradient färg", - "theme_diy_image_blur" => "bild oskärpa", - "theme_diy_image_url" => "Bilder adress", - "theme_diy_color_start" => "utgångs färg", - "theme_diy_color_end" => "End Color", - "theme_diy_color_radius" => "Stigningsvinkel vinkel~~POS=HEADCOMP", - "system_role_admin_set" => "Administratörer har alla rättigheter, utan att!", - "login_error_user_not_use" => "Användaren har inaktiverats! Kontakta administratören", - "login_error_kod_version" => "version konflikt", - "login_error_role" => "existerar inte Visa behörigheter grupp, kontakta administratören", - "no_permission_group" => "Du är inte i denna grupp!", - "no_permission_write" => "Katalogen har inte skrivrättigheter", - "user" => "användaren", - "save_as" => "spara som", - "check_update" => "uppdatering", - "keyboard_type" => "tangentbordsläge", - "font_family" => "typsnitt", - "code_mode" => "syntaxmarkering", - "path_can_not_share" => "Stöder bara dela dina egna dokument!", - "path_can_not_action" => "Denna katalog stöder inte den här åtgärden!", - "wap_page_pc" => "PC version", - "wap_page_phone" => "mobil", - "image_size" => "bildens dimensioner", - "no_permission_action" => "Du behöver inte ha detta tillstånd, kontakta administratören!", - "path_is_root_tips" => "Det har kommit till rotkatalogen!", - "kod_group" => "organisation", - "my_kod_group" => "Jag är i avdelningen", - "space_tips_default" => "(GB) 0 ingen gräns", - "space_tips_full" => "utan att begränsa", - "space_size" => "plats", - "space_size_use" => "Användning av rymden", - "space_is_full" => "Det finns inte tillräckligt med ledigt utrymme, kontakta administratören!", - "system_open_true_path" => "Framgångsrikt öppnat i filhanteraren!", - "group_role_error" => "Roll behörigheter fel (ingen behörighetsinställningar)", - "group_role_error_admin" => "otillräckliga behörigheter", - "markdown_content" => "INNEHÅLLSFÖRTECKNING", - "system_group" => "Användare och avdelningar", - "system_group_edit" => "Avdelningshantering", - "system_group_role" => "roll identitet", - "system_group_create" => "Ny avdelning", - "system_group_name" => "Avdelningsnamn", - "system_group_father" => "Överlägsen avdelning", - "system_group_add" => "Lägg till underavdelning", - "system_group_remove" => "Ta bort avdelningen", - "system_group_remove_tips" => "Är du säker på att ta bort avdelningen?
                    Efter att deletion av användarens del har tagits bort flyttas delsektorn till rotsektorn", - "system_group_select" => "Välj institution", - "system_group_select_result" => "Medlemmarna kommer att tillhöra följande sektorer", - "system_role_admin_tips" => "Anmärkningar: Systemadministratörer har inte behörighet att kontrollera", - "system_member_action" => "Användarhantering", - "system_member_add" => "ny användare", - "system_member_role" => "behörighets~~POS=TRUNC roller", - "system_member_role_select" => "Välj", - "system_member_password_tips" => "Fyll inte modifierade", - "system_set_home_path" => "anpassade Catalog", - "system_set_home_path_tips" => "Standardkatalogen är tom", - "system_member_group" => "Var avdelningen", - "system_member_group_edit" => "Redaktionell avdelning", - "system_member_remove" => "Ta bort användare", - "system_member_remove_tips" => "Bekräfta radera användare? Efter
                    bort användarkatalogen kommer att vara helt raderas", - "system_member_set_role" => "För att bekräfta ändringen av den valda användargruppen behörigheter?", - "system_member_remove_group" => "Bestäm valda användaren kommer att tas bort från den här gruppen?", - "system_member_import" => "bulk Lägg", - "system_member_import_desc" => "En användare per rad,
                    redan existerar är tyst ignoreras", - "system_member_use" => "aktivera", - "system_member_unuse" => "inaktivera", - "system_member_space" => "Ange användarens rymdstorlek ", - "system_member_space_tips" => " Ange användarens rymdstorlek ", - "system_member_space_number" => " Måste vara ett nummer!", - "system_member_group_config" => "Batchinställningsavdelning", - "system_member_group_remove" => "Avlägsnat från avdelningen", - "system_member_group_insert" => "Lägg till i avdelningen", - "system_member_group_reset" => "Återställ avdelningen", - "system_member_group_error" => "Avdelningsfel", - "system_group_action" => "Avdelningshantering", - "system_role_add" => "Lägg Role Identitet", - "system_role_read" => "Skrivskyddad", - "system_role_write" => "Kan läsa och skriva", - "system_setting_root_path" => "root-åtkomst", - "system_setting_root_path_desc" => "Bara en systemadministratör kan komma åt alla kataloger, kan andra rättighets grupper av användare bara se sin egen användarkatalog. Om du vill slå på eller stänga
                    administratör tillgång till andra kataloger, kan du ändra php open_basedir anti-cross-site parametrarställa", - "system_group_role_title" => "Institutionell myndighets rollhantering", - "system_group_role_remove" => "OK för att ta bort avdelningsrollen", - "system_group_role_style" => "style", - "system_group_role_display" => "Vare sig", - "system_group_role_display_desc" => "Ange om du vill visa avdelningens användarrättigheter eller ej", - "role_type_name_read" => "Läs", - "role_type_name_read:list" => "fIL-LISTA", - "role_type_name_read:info" => "Fil (mapp) fastighet Visa, mapp ökning", - "role_type_name_read:copy" => "File Copy", - "role_type_name_read:preview" => "förhandsvisning fil (bilder, dokument, ljud och video)", - "role_type_name_read:download" => "Fil (mapp) Hämta", - "role_type_name_write" => "skriva", - "role_type_name_write:add" => "Skapa en fil (mapp), extrahera den komprimerade filen", - "role_type_name_write:edit" => "Spara filen för att redigera", - "role_type_name_write:change" => "Byt namn, justera katalogstrukturen", - "role_type_name_write:upload" => "Fil (mapp) ladda upp, fjärr nedladdning", - "role_type_name_write:remove" => "Fil (mapp) bort, skär", - "group_guest" => "besökare", - "group_guest_desc" => "Du är inte medlem i avdelningen,
                    kan bara komma åt [avdelad delad katalog] följande innehåll, skrivskyddade behörigheter.", - "group_role_lebel_desc" => "Du är medlem i denna avdelning,
                    Alla dokument inom avdelningen Alla rättigheter reserverade av administratören", - "button_save_and_add" => "Spara och fortsätter att lägga", - "path_cannot_search" => "Katalogen stöder inte sökningen!", - "not_support" => "stöds inte!", - "group_not_exist" => "Användargrupp finns inte!", - "upload_clear_all" => "Rensa alla", - "upload_clear" => "Rensa Avslutade", - "upload_setting" => "inrätta", - "upload_tips" => "Använder skiva uppladdning, inte längre omfattas av php.ini gräns, rekommenderas krom mapp dra och släpp uppladdning erfarenhet", - "upload_exist" => "Fil med samma namn", - "upload_exist_rename" => "Byt namn", - "upload_exist_replace" => "omslag", - "upload_exist_skip" => "skip", - "upload_add_more" => "bulk Lägg", - "more" => "mer", - "system_setting" => "Systeminställningar", - "openProject" => "Öppna projektet redaktör", - "url_download" => "Hämta", - "url_link" => "Utanför kedjan av adress", - "app_type_link" => "Genvägar", - "createLink" => "Skapa genväg", - "createLinkHome" => "Skickas till en genväg på skrivbordet", - "createProject" => "Lägga till redaktören projektet", - "only_read" => "Skrivskyddad", - "only_read_desc" => "Katalogen har inte skrivrättigheter
                    du kan ställa in behörigheter för den här katalogen på servern", - "not_read" => "oläslig", - "explorerNew" => "kod länk", - "zip_download_ready" => "Efter komprimering kommer automatiskt hämta, vänta ...", - "set_background" => "Ange som skrivbordsunderlägg", - "share" => "del", - "my_share" => "Min andel", - "group_share" => "Grupp extern delning", - "share_edit" => "Redigera dela", - "share_remove" => "Avbryt delning", - "share_remove_tips" => "Är du säker på att du vill avbryta delning? Den offentliga anslutningen kommer att ogiltigförklaras.", - "share_path" => "Dela vägen", - "share_title" => "Resursdelning", - "share_name" => "Dela titeln", - "share_time" => "utgångs", - "share_time_desc" => "Null är inte satt", - "share_password" => "extrakt lösenord", - "share_password_desc" => "Tomt lösenord är inte satt", - "share_cancle" => "sluta dela", - "share_create" => "Skapa en offentlig länk", - "share_url" => "delat adress", - "share_not_download" => "nedladdning förbud", - "share_not_download_tips" => "Sharer förbjöd nedladdning!", - "share_code_read" => "kodläsare", - "share_save" => "Spara konfiguration", - "share_error_param" => "Parameter fel!", - "share_error_user" => "Användarinformation Fel!", - "share_error_sid" => "Dela inte existerar!", - "share_error_time" => "Du kommer för sent, har andelen gått ut!", - "share_error_path" => "Delad fil existerar inte, det raderas eller tagit bort den!", - "share_error_password" => "Fel lösenord!", - "share_error_show_tips" => "Denna typ stöder inte filen förhandsvisning!", - "share_view_num" => "Visningar:", - "share_download_num" => "Nedladdningar:", - "share_open_page" => "Öppna den delade sidan", - "open_the_path" => "Enter directory", - "recycle_clear" => "Töm papperskorgen", - "recycle_clear_success" => "Töm papperskorgen framgång!", - "recycle_clear_info" => "Är du säker på att du vill att helt tömma papperskorgen?", - "fav_remove" => "Avbryta samling", - "remove_item" => "objekt", - "uploading" => "uppladdning", - "upload_tips_more" => "Alltför många filer, rekommendation av den komprimerade uppladdning, sedan packa nätet!", - "uploading_move" => "Vid överföringen överför ...", - "show_file" => "Ny sida förhandsvisning", - "unknow_file_title" => "Arkiv Öppna Tips!", - "unknow_file_tips" => "Inte stödja tillämpningen av den här filen kan du:", - "unknow_file_try" => "prova", - "unknow_file_download" => "Ladda ner filen", - "unknow_plugin_search" => "Sökrelaterade applikationer installerade", - "config_save_error_auth" => "Det gick inte att spara konfigurationen administratören förbjöd detta privilegium!", - "config_save_error_file" => "Fel, fil inte skrivbar!", - "beautify_code" => "kod Formatter", - "convert_case" => "Case konvertering", - "convert_upper_case" => "Omvandlas till versaler", - "convert_lower_case" => "Omräknat till gemener", - "editor_insert_time" => "Aktuell tid ", - "editor_md5" => " Md5-kryptering ", - "editor_qrcode" => " String tvådimensionell kod ", - "editor_regx" => " Regelbunden uttryckstestning ", - "editor_chinese" => " Förenklad konvertering ", - "editor_chinese_simple" => " Konvertera till förenklad kinesiska ", - "editor_chinese_traditional" => " Konvertera till traditionell kinesisk ", - "editor_base64" => "Base64 codec ", - "editor_base64_encode" => " Base64-kodning ", - "editor_base64_decode" => " Base64-avkodning ", - "editor_url" => " URL codec ", - "editor_url_encode" => " URL-kodning ", - "editor_url_decode" => " URL-avkodning ", - "editor_unicode" => " Unicode codec ", - "editor_unicode_encode" => " Unicode-kodning ", - "editor_unicode_decode" => " Unicode-avkodning", - "editor_tools_select_tips" => " Vänligen välj det innehåll du vill konvertera!", - "editor_calc" => "Gratis kalkylator", - "shortcut" => "Genvägar", - "use_free" => "Fortsätt att använda den fria versionen", - "learn_more" => "Läs mer", - "replace" => "ersätta", - "selectAll" => "Välj", - "reload" => "reload", - "about" => "på", - "complete_current" => "Automatisk komplettering av den nuvarande", - "view" => "utsikt", - "tools" => "verktyg", - "help" => "Hjälp", - "not_exists" => "Finns inte", - "group_role_fileDownload" => "nedladdningar", - "group_role_share" => "del", - "users_share" => "dela", - "system_setting_save" => "säkerhets~~POS=TRUNC", - "system_setting_menu" => "menyhantering", - "system_name" => "program~~POS=TRUNC", - "system_name_desc" => "Programlogotyp titel", - "system_desc" => "program Beskrivning", - "path_hidden" => "katalog uteslutningar", - "version_not_support" => "Din version stöder inte detta, vänligen gå till den officiella hemsidan för att köpa den avancerade versionen!", - "version_not_support_number" => "Eftersom antalet begränsningen inte stöder denna funktion kan du köpa den avancerade versionen av den officiella hemsidan!", - "path_hidden_desc" => "Kataloger och filer som standard visas inte, separerade med kommatecken", - "new_user_folder" => "Den nya användaren skapas som standard katalog", - "new_user_folder_desc" => "Separerade med kommatecken", - "new_user_app" => "Den nya användaren skapas som standard app", - "new_user_app_desc" => "Applikationer Application Center, ett flertal separerade med kommatecken", - "auto_login" => "Besökare automatisk inloggning", - "auto_login_desc" => "Standardinloggningsguest/guestanvändare, efter öppnandet för att säkerställa att användaren existerar", - "first_in" => "När du har loggat in standard", - "version_price_free" => "Gratis", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Katalog är inte skrivbar, ange katalogen och alla underkataloger för att försöka igen efter läs- och skriv!", - "menu_name" => "meny~~POS=TRUNC namnet~~POS=HEADCOMP", - "menu_hidden" => "dölja", - "menu_show" => "display", - "menu_move_down" => "ner", - "menu_move_up" => "upp", - "menu_move_del" => "Radera", - "menu_open_window" => "Öppna ett nytt fönster", - "menu_sub_menu" => "Undermeny meny~~POS=HEADCOMP", - "url_path" => "URL-adress", - "url_path_desc" => "URL-adress eller js kod", - "no_permission_read" => "Du har inte behörighet att läsa!", - "no_permission_download" => "Du har inte tillåtelse att ladda ner!", - "php_env_check" => "Driftsmiljö övervakning:", - "php_env_error" => "Php bibliotek saknas", - "php_env_error_ignore" => "Ignorera och ange", - "php_env_error_version" => "PHP version kan inte vara mindre än 5,0", - "php_env_error_path" => "inte skrivbar", - "php_env_error_list_dir" => "Din webbserver öppnar kataloglistning funktionen av säkerhetsskäl, stänga av denna funktion!hur?", - "php_env_error_gd" => "Php GD biblioteket bör vara öppna, annars koden använder miniatyr kommer inte att fungera korrekt", - "install_login" => "Du kan använda följande inloggnings", - "install_enter" => "systemet", - "install_user_default" => "Administratör: {0} / (nedan ange ett lösenord)
                    Genomsnittlige användaren: {1}
                    Gäster: {2}", - "login_root_password" => "Ange administratörslösenordet", - "login_root_password_repeat" => "Bekräfta lösenord igen", - "login_root_password_equal" => "De två lösenorden stämmer inte överens!", - "login_root_password_tips" => "Ange ett administratörslösenord!", - "forget_password" => "Har du glömt ditt lösenord", - "forget_password_tips" => "Glömt administratörslösenord:
                    Logga server bort ./data/system/install.lock återställa;

                    Icke-administratör du glömt ditt lösenord:
                    Kontakta administratören för att återställa!", - "copyright_desc" => "Kodexplorer är en bejublad bana dokumenthanteringssystem, du kan använda den för interna dokumenthantering eller delad, kan även användas på webbplatsen administrationsservern, byt Ftp, även som webIDE direkt på nätet utveckling. Du kan även programmera andra utveckling för att integrera detta i befintliga system.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango moln • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango moln • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, WebOS, webIDE, php filemanage, filemanage, Dao moln, moln mango, dokumenthanteringssystem, företaget cloud disk, explorer ,, online-dokumentation, online-kontor, online-kontor, online-CAD förhandsvisning, online-redigering , online-editor", - "kod_meta_description" => "KodExplorer kan moln Road (tidigare mango moln) är en ledande leverantör av statliga / företags privata moln och online-dokumenthanteringssystem för personliga hemsidor, företag privata moln distributioner, nätverkslagring, online-dokumenthantering, online-kontor för att ge säker och kontrollerad, enkel och lätt användning, kundanpassade privata moln produkter. Använda Windows liknande gränssnitt, driftmetoder, utan att behöva anpassa sig till snabbt komma igång stödja hundratals populära online förhandsvisning filformat, uppspelning och redigering miljövänlig, kraftfull, är en gång försök inte längre skiljas från den privata moln erbjudanden.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "logga in", - "guest_login" => "gäst Logga", - "username" => "Logga in konto", - "userNickName" => "Användarnamn", - "password" => "lösenord", - "login_code" => "koder", - "need_check_code" => "Logga autentiseringskoden öppen", - "need_check_code_desc" => "Efter inloggning måste du ange verifieringskoden.", - "setting_csrf_protect" => "Open skydd CSRF", - "setting_csrf_protect_desc" => "Efter öppnandet typ av attack kan effektivt skydda CSRF", - "login_rember_password" => "Kom ihåg lösenord", - "setting_show_root_group" => "Lista alla avdelningar", - "setting_show_root_group_desc" => "Tree directory root avdelning om du vill lista alla avdelningar", - "setting_show_share_user" => "En lista över alla användare", - "setting_show_share_user_desc" => "Trädkatalogrotsavdelningen är listad för alla användardelning", - "setting_clear_user_recycle" => "Töm papperskorgen för alla användare", - "setting_clear_cache" => "Töm cache", - "setting_icp" => "Upphovsrätt eller rekordstort", - "setting_global_css" => "Anpassad global css", - "setting_global_css_desc" => "Alla sidor kommer att sätta egna css", - "setting_global_html" => "Statistisk kod HTML", - "setting_global_html_desc" => "Alla sidor kommer att införas i denna punkt html-kod, kan koden placeras statistik från tredje part", - "us" => "Segel Network Studios", - "login_not_null" => "Användarnamn och lösenord kan inte vara tomt!", - "code_error" => "felkoder", - "password_error" => "Användarnamn eller lösenord är felaktigt!", - "password_not_null" => "Lösenordet kan inte vara tom!", - "old_password_error" => "Gamla lösenordet är fel!", - "permission" => "Tillstånd!", - "permission_edit" => "ändra behörigheter", - "file_info_owner" => "ägare", - "file_info_group" => "grupp", - "no_permission" => "Administratör har inaktiverat detta privilegium!", - "no_permission_ext" => "Administratör förbjudit denna typ av filrättigheter", - "dialog_max" => "maximera", - "dialog_min" => "minimera", - "dialog_min_all" => "minimera alla", - "dialog_display_all" => "Visa alla fönster", - "dialog_close_all" => "Stäng alla", - "open" => "öppen", - "others" => "andra", - "open_with" => "Öppet för ...", - "close" => "stänga", - "close_all" => "Stäng alla", - "close_left" => "Stäng den vänstra fliken", - "close_right" => "Stäng flikar till höger", - "close_others" => "Stäng andra", - "loading" => "Drift ...", - "warning" => "varning", - "getting" => "Få ...", - "sending" => "Dataöverföring ...", - "data_error" => "Data Error!", - "get_success" => "Få framgång!", - "save_success" => "Sparats!", - "success" => "lyckad operation", - "error" => "misslyckades", - "error_repeat" => "Operationen misslyckades, finns namnet redan!", - "word_error" => "misslyckande ", - "word_success" => " framgång", - "system_error" => "systemfel", - "name" => "namn", - "type" => "Typ", - "contain" => "innehålla", - "address" => "läge", - "size" => "storlek", - "byte" => "bitgrupp", - "path" => "bana", - "action" => "rörelse", - "create_time" => "Skapad", - "modify_time" => "modifierad", - "last_time" => "Senast besökt", - "sort_type" => "Sortera efter", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "offentliga katalogen", - "system_path_not_change" => "System katalog, kan inte ändras", - "file" => "fil", - "folder" => "mapp", - "copy" => "kopia", - "past" => "Stick", - "clone" => "Skapa en kopia", - "cute" => "skjuvning", - "cute_to" => "Flytta till ...", - "copy_to" => "Kopiera till ...", - "remove" => "Radera", - "remove_force" => "helt ta bort", - "info" => "Property", - "list_type" => "utsikt", - "list_icon" => "ikon array", - "list_list" => "lista arrangemang", - "list_list_split" => "kolumnläge", - "sort_up" => "inkrement", - "sort_down" => "minskande", - "order_type" => "Sortera efter", - "order_desc" => "fallande", - "order_asc" => "Stigande", - "rename" => "Byt namn", - "add_to_fav" => "Lägg till i favoriter", - "search_in_path" => "Mappsökning", - "add_to_play" => "Lägg till spellista", - "manage_fav" => "Hantera favoriter", - "refresh_tree" => "Uppdatera katalogträd", - "manage_folder" => "Directory Management", - "close_menu" => "Stäng meny", - "zip" => "Skapa ett komprimerat paket", - "unzip" => "För att extrahera ...", - "unzip_folder" => "Zippa upp till en mapp", - "unzip_this" => "Extrahera till den aktuella", - "unzip_to" => "För att extrahera ...", - "zipview_file_big" => "Filen är för stor, och sedan extrahera förhandsvisning drift!", - "clipboard" => "vy Urklipp", - "clipboard_clear" => "tom Urklipp", - "full_screen" => "Fullskärm", - "folder_info_item" => "objekt", - "folder_info_item_select" => "En vald", - "file_load_all" => "Dubbelklicka för att ladda alla ......", - "tips" => "prompt", - "ziping" => "Zippa ...", - "unziping" => "Extrahera ...", - "moving" => "Mobil drift ...", - "remove_title" => "Radera Bekräftelse", - "remove_info" => "Bekräfta att radera det valda objektet?", - "remove_title_force" => "permanent", - "remove_info_force" => "Du säker på att du vill ta bort det här dokumentet?", - "name_isexists" => "Fel, finns namnet redan!", - "install" => "installera", - "width" => "bredd", - "height" => "hög", - "app" => "ljus~~POS=TRUNC Applications", - "app_store" => "ljus~~POS=TRUNC Applications", - "app_create" => "Skapa Ansökan", - "app_edit" => "Ändra tillämpningen", - "app_group_all" => "fullständig", - "app_group_game" => "spel", - "app_group_tools" => "verktyg", - "app_group_reader" => "Läs", - "app_group_movie" => "tv", - "app_group_music" => "musik", - "app_group_life" => "liv", - "app_group_others" => "andra", - "app_desc" => "Beskrivning", - "app_icon" => "tillämpningar icon", - "app_icon_show" => "URL-adress eller katalogen", - "app_group" => "ansökan Packet", - "app_type" => "Typ", - "app_type_url" => "länk", - "app_type_code" => "js förlängning", - "app_display" => "exteriör", - "app_display_border" => "Utan gränser (dvs välj gränslös)", - "app_display_size" => "Ändra storlek (Kontrollera justering)", - "app_size" => "storlek", - "app_url" => "adressen", - "app_code" => "js-kod", - "edit" => "Redigera", - "edit_can_not" => "Inte en textfil", - "edit_too_big" => "Filen är för stor, kan det inte vara större än 40M", - "open_default" => "standard Open", - "open_ie" => "Öppna webbläsaren", - "refresh" => "refresh", - "refresh_all" => "Tvinga en uppdatering", - "newfile" => "ny fil", - "newfile_save_as" => "spara till", - "newfolder" => "ny mapp", - "newothers" => "nya Övriga", - "path_loading" => "Loading ...", - "go" => "Promenad!", - "go_up" => "övre skikt", - "history_next" => "framåt", - "history_back" => "reträtt", - "address_in_edit" => "Klicka för att komma till redigeringsläget", - "double_click_rename" => "Dubbelklicka på Döpa", - "double_click_open" => "Dubbelklicka för att öppna", - "path_null" => "Folder är tom!", - "file_size_title" => "Ikonstorlek", - "file_size_small_super" => "Ultrasmå", - "file_size_small" => "små ikoner", - "file_size_default" => "ikoner", - "file_size_big" => "stora ikoner", - "file_size_big_super" => "stor Ikon", - "upload" => "Ladda upp", - "upload_ready" => "Väntar på uppladdning", - "upload_success" => "Ladda framgångsrik", - "upload_path_current" => "Växla till den aktuella katalogen", - "upload_select" => "Välj Arkiv", - "upload_max_size" => "Den högsta tillåtna", - "upload_size_info" => "Om du vill konfigurera mer, modifiera php.ini högsta tillåtna uppladdning. När du väljer en fil som är större än denna konfiguration kommer automatiskt att filtrera ut.", - "upload_error" => "Överföringen misslyckades", - "upload_error_http" => "Nätverk eller brandvägg fel", - "upload_muti" => "Multi-filuppladdning", - "upload_drag" => "Dra och släpp uppladdning", - "upload_drag_tips" => "Lossa att ladda upp!", - "path_not_allow" => "Filnamnet inte tillåtet", - "download" => "Hämta", - "downloading" => "Loading ...", - "download_address" => "Hämta", - "download_ready" => "Hämtas", - "download_success" => "Ladda ner framgång!", - "download_error" => "Hämta misslyckades!", - "download_error_create" => "Skrivfel!", - "download_error_exists" => "Länk till fil misslyckades!", - "upload_error_null" => "Ingen fil!", - "upload_error_big" => "Filstorleken överskrider server gränser", - "upload_error_move" => "Det gick inte att flytta filen!", - "upload_error_exists" => "Filen finns redan", - "upload_local" => "lokal Överför", - "download_from_server" => "fjärr Hämta", - "save_path" => "Spara Path", - "upload_select_muti" => "Ett flertal valbara filuppladdning", - "search" => "sök", - "searching" => "Söker ...", - "search_result" => "Sökresultat", - "seach_result_too_more" => "Alltför många sökresultat, rekommenderas för en katalog eller ord", - "search_null" => "Inga resultat!", - "search_uplow" => "Case känslig", - "search_content" => "Sök filinnehåll", - "search_info" => "Ange en sökterm och sökvägar!", - "search_ext_tips" => "By | separeras, till exempel php | js | css
                    inte fylla standardtext filsökning", - "file_type" => "FILTYP", - "goto" => "hoppa till", - "server_dwonload_desc" => "Uppgiften läggs till i listan nedladdning", - "parent_permission" => "Moderkatalogbehörigheter", - "root_path" => "Mina dokument", - "lib" => "magasin", - "fav" => "Bokmärk", - "desktop" => "desktop", - "browser" => "webbläsare", - "my_computer" => "Den här datorn", - "recycle" => "trash", - "my_document" => "Mina dokument", - "my_picture" => "Mina Bilder", - "my_music" => "min musik", - "my_movie" => "Mina videoklipp", - "my_download" => "Mina nedladdningar", - "ui_desktop" => "desktop", - "ui_explorer" => "filhantering", - "ui_editor" => "redaktör", - "adminer" => "adminer", - "ui_project_home" => "Project Hem", - "ui_login" => "logga in", - "ui_logout" => "quit", - "setting" => "Systeminställningar", - "setting_title" => "alternativ", - "setting_user" => "personliga Center", - "setting_password" => "Ändra lösenord", - "setting_password_old" => "gammalt lösenord", - "setting_password_new" => "revideras för att", - "setting_language" => "språk~~POS=TRUNC", - "setting_member" => "Användarhantering", - "setting_group" => "Användargrupp ledningen", - "setting_group_add" => "Lägg User Group", - "setting_group_edit" => "Redigera användargrupper", - "setting_theme" => "tema~~POS=TRUNC", - "setting_wall" => "Bakgrundsinställningar", - "setting_wall_desktop" => "Skrivbordsunderlägg", - "setting_wall_desktop_list" => "Desktop Wallpaper Management", - "setting_wall_login_list" => "Logga in Wallpaper Management", - "setting_wall_login_tips" => "Tips! När det finns mer än ett stycke, roterar inloggningsgränssnittets bakgrund slumpmässigt", - "setting_wall_diy" => "Anpassad bakgrundsbild:", - "setting_wall_info" => "Bild URL-adress, kan lokala bilder vara rätt att få webbläsaren att öppna bild", - "setting_fav" => "bokmärkeshanteraren", - "setting_help" => "Använda Hjälp", - "setting_about" => "om verk", - "setting_success" => "Ändring har trätt i kraft!", - "can_not_repeat" => "Inte tillåtet att upprepa", - "absolute_path" => "absolut adress", - "group" => "Användargrupper", - "data_not_full" => "Uppgifter som lämnats ofullständig!", - "default_user_can_not_do" => "Standard Användaren kan inte fungera", - "default_group_can_not_do" => "Standardanvändargrupper kan inte fungera", - "username_can_not_null" => "Användarnamn kan inte vara tom!", - "groupname_can_not_null" => "Användargrupp namn kan inte vara tomt!", - "groupdesc_can_not_null" => "User Group Beskrivning kan inte vara tom!", - "group_move_user_error" => "Användargrupp användare flytta misslyckades", - "group_already_remove" => "Användargruppen har tagits bort", - "group_not_exists" => "existerar inte denna användargrupp", - "member_add" => "Lägg till användare", - "password_null_not_update" => "De sa att de inte ändra lösenordet inte fyllt", - "if_save_file_tips" => "Vissa filer sparas inte. Är du säker på att stänga fönstret?", - "if_save_file" => "Filen har inte sparats, vill du spara?", - "if_remove" => "bekräfta Radera", - "member_remove_tips" => "När du tar bort användarkatalogen kommer att rensas", - "group_remove_tips" => "När du tar bort användargruppen av användarna kan inte logga
                    (måste återställas användargrupp)", - "group_name" => "Användargrupp namn", - "group_name_tips" => "Rekommendation engelska namnet, kan inte upprepas", - "group_desc" => "visnings~~POS=TRUNC", - "group_desc_tips" => "Gruppnamn Beskrivning", - "group_role_ext" => "förlängnings restriktioner", - "group_role_ext_tips" => "Med multipel | separerade", - "group_role_file" => "filhantering", - "group_role_upload" => "Tillåt uppladdning", - "group_role_user" => "användardata", - "group_role_group" => "Användargrupp ledningen", - "group_role_member" => "Användarhantering", - "group_role_mkfile" => "ny fil", - "group_role_mkdir" => "ny mapp", - "group_role_pathrname" => "Byt namn", - "group_role_pathdelete" => "borttagning av filer", - "group_role_pathinfo" => "Filegenskaper", - "group_role_pathmove" => "Flytta (kopiera / klippa / klistra / dragning)", - "group_role_zip" => "kompression", - "group_role_unzip" => "unzip", - "group_role_search" => "sök", - "group_role_filesave" => "Spara filen för att redigera", - "group_role_can_upload" => "Uppladdning och nedladdning", - "group_role_download" => "fjärr Hämta", - "group_role_passowrd" => "Ändra lösenord", - "group_role_config" => "konfigurationsdata", - "group_role_fav" => "Bokmärkes operationer (lägga till / redigera / ta bort)", - "action_list" => "List View", - "action_add" => "lägga till", - "action_edit" => "Redigera", - "action_del" => "Radera", - "group_role_ext_warning" => "Ladda upp inte tillåta sådana filer,
                    Rename (omdöpt till den angivna anknytningen),
                    redigera och spara, fjärr nedladdning, extrakt", - "group_tips" => "
                  38. 1. Användarnamnet kan inte dupliceras. Efter att gruppnamnet har ändrats, hör det till den omorganiserade användaren och associeras automatiskt.
                  39. 2. Extensions begränsa förhållandet mellan systemsäkerhet, var försiktig (om du skapar en ny php i webbkatalogen, det betyder att ändra programmets behörigheter till den här användaren är praktiskt taget omöjligt)
                  40. 3. Hushållsledning, rättighetsgruppshantering, visningsrättigheter och tillägg, radering och modifiering av rättigheter är bundna, program kopplas automatiskt samman
                  41. 4. Efter att behörighetsgruppen har ställts in för att lägga till behörighetsgruppen, är efterföljande tillstånd inte ärvt (denna behörighet motsvarar högsta tillstånd).
                  42. ", - "not_null" => "Obligatoriska fält får inte vara tomt!", - "picture_can_not_null" => "Bilder kan inte vara tom!", - "rname_success" => "Byt namn på framgång!", - "please_inpute_search_words" => "Ange en sträng att söka efter", - "remove_success" => "Raderats!", - "remove_fali" => "Radera misslyckades!", - "clipboard_null" => "Urklipp är tom!", - "create_success" => "Ny framgång!", - "create_error" => "Nya misslyckas, kontrollera katalogbehörigheterna!", - "copy_success" => "[Kopiera] - täcker Urklipp framgång!", - "cute_success" => "[Cut] - täcker Urklipp framgång!", - "clipboard_state" => "Urklipp status:", - "no_permission_write_all" => "Filen eller katalogen är inte skrivbar", - "no_permission_write_file" => "Filen har inte skrivrättigheter", - "no_permission_read_all" => "Filen eller katalogen har ingen läsbehörighet", - "copy_not_exists" => "Källa existerar inte", - "current_has_parent" => "Target mapp är en undermapp källan!", - "past_success" => "klistra operationen är klar", - "cute_past_success" => "klippning är avslutad(källfilen tas bort, urklipp tom)", - "zip_success" => "komprimering avslutad", - "not_zip" => "inte arkiv", - "zip_null" => "Ej vald fil eller katalog", - "unzip_success" => "packa komplett", - "gotoline" => "Hoppa till linjen", - "path_is_current" => "Vägen och strömbanan att öppna samma!", - "path_exists" => "Namnet finns redan!", - "undo" => "återkallande", - "redo" => "anti återkallande", - "preview" => "förhandsvisning", - "wordwrap" => "wrap", - "show_gutter" => "Visa radnummer", - "char_all_display" => "Visa osynliga tecken", - "auto_complete" => "automatiskt uppmanas", - "auto_save" => "Spara automatiskt", - "function_list" => "Funktionslista", - "code_theme" => "kodning Style", - "font_size" => "FONTSTORLEK", - "confirm" => "Är du säker på att du vill göra det här?", - "button_ok" => "bestämma", - "button_submit" => "Skicka in", - "button_set" => "inrätta", - "button_cancel" => "Avbruten", - "button_edit" => "Redigera", - "button_save" => "Spara", - "button_apply" => "applicera", - "button_save_all" => "Spara allt", - "button_not_save" => "Spara inte", - "button_add" => "lägga till", - "button_back_add" => "Tillbaka för att lägga till", - "button_del" => "Radera", - "button_save_edit" => "spara ändringar", - "button_save_submit" => "spara Skicka", - "button_more" => "mer", - "button_select_all" => "Markera alla / Invertera markering", - "charset_AUTO" => "Automatisk identifiering", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Arabiska", - "charset_ISO_8859_6" => "Arabiska", - "charset_ISO_8859_10" => "nordiska språk", - "charset_CP1257" => "baltiska språk", - "charset_ISO_8859_13" => "baltiska språk", - "charset_ISO_8859_4" => "baltiska språk", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "georg", - "charset_PT154" => "kazakiska", - "charset_CP949" => "koreanska", - "charset_EUC_KR" => "koreanska", - "charset_GB18030" => "förenklad kinesiska", - "charset_GBK" => "förenklad kinesiska", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "lao", - "charset_ISO_8859_16" => "rumänska", - "charset_ISO_8859_3" => "South europeiska", - "charset_EUC_JP" => "japansk", - "charset_ISO_2022_JP" => "japansk", - "charset_SHIFT_JIS" => "japansk", - "charset_KOI8_T" => "tadzjikiska", - "charset_ISO_8859_11" => "Thai", - "charset_TIS_620" => "Thai", - "charset_CP1254" => "Turkish", - "charset_CP1251" => "kyrilliska", - "charset_ISO_8859_5" => "kyrilliska", - "charset_KOI8_R" => "kyrilliska", - "charset_KOI8_U" => "kyrilliska", - "charset_CP1252" => "Västeuropeiska språk", - "charset_ISO_8859_1" => "Västeuropeiska språk", - "charset_ISO_8859_15" => "Västeuropeiska språk", - "charset_Macintosh" => "Västeuropeiska språk", - "charset_CP1255" => "Hebrew", - "charset_ISO_8859_8" => "Hebrew", - "charset_CP1253" => "grekisk", - "charset_ISO_8859_7" => "grekisk", - "charset_ARMSCII_8" => "armeniska", - "charset_CP1258" => "vietnames", - "charset_VISCII" => "vietnames", - "charset_CP1250" => "Centraleuropeiska språk", - "charset_ISO_8859_2" => "Centraleuropeiska språk", - "charset_default_set" => "filkodningen", - "charset_convert_save" => "Spara filen kodas som", - "PluginCenter" => "plug center", - "PluginBuy" => "Köp godkännande", - "PluginInstalled" => "Har installerats", - "PluginUpdate" => "uppdatering", - "PluginListNull" => "Det finns inget innehåll!", - "PluginType" => "klassificering", - "PluginTypeAll" => "komplett", - "PluginTypeFile" => "förbättrad fil", - "PluginTypeSafe" => "säkerhets~~POS=TRUNC", - "PluginTypeTools" => "Utility", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "andra", - "PluginInstall" => "installera plug", - "PluginEnable" => "Aktivera plugin-program", - "PluginDisable" => "inaktivera", - "PluginRemove" => "Avinstallera insticks", - "PluginConfig" => "Konfigurera plugin", - "PluginStatus" => "State", - "PluginStatusEnabled" => "aktiverat", - "PluginStatusDisabled" => "inte aktiverad", - "PluginStatusNotInstall" => "inte installerad", - "PluginInstalling" => "Installation ...", - "PluginHasUpdate" => "uppdateringar", - "PluginUpdateStart" => "Uppdatera plug-in", - "PluginNeedConfig" => "Behovet av att möjliggöra den ursprungliga konfigurationen", - "PluginConfigNotNull" => "Obligatoriska fält får inte vara tomt!", - "PluginOpen" => "öppet", - "PluginAuther" => "Författare", - "PluginVersion" => "Edition", - "PluginDownloadNumber" => "installerar", - "PluginBack" => "Return", - "PluginReadme" => "Beskrivning", - "PluginResetConfig" => "Återställ standardinställningarna", - "PluginInstallSelf" => "Manuell installation", - "Plugin.config.auth" => "Behörigheter", - "Plugin.config.authDesc" => "Samtliga tillgängliga inställningarna eller ange användare, användargrupper, kan människorättsgrupper använda", - "Plugin.config.authOpen" => "Öppen tillgång", - "Plugin.config.authOpenDesc" => "Inget behov av att besöka kan nås, kan användas för externt gränssnittssamtal", - "Plugin.config.authAll" => "Holder", - "Plugin.config.authUser" => "användare", - "Plugin.config.authGroup" => "Utpekad avdelning", - "Plugin.config.authRole" => "grupp Rights", - "Plugin.Config.openWith" => "öppen stil", - "Plugin.Config.openWithDilog" => "intern dialog", - "Plugin.Config.openWithWindow" => "Öppna en ny sida", - "Plugin.Config.fileSort" => "Förlängnings association prioritet", - "Plugin.Config.fileSortDesc" => "Ju större förlängningen för att öppna högre prioritet", - "Plugin.Config.fileExt" => "Stödda filformat", - "Plugin.Config.fileExtDesc" => "Associerat Utvidgning till plug-in", - "Plugin.tab.basic" => "grund~~POS=TRUNC", - "Plugin.tab.auth" => "Behörigheter", - "Plugin.tab.others" => "andra inställningar", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Webbsida Preview", - "Plugin.default.picasa" => "Picasa bildvisning", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "JPlayer spelare", - "Plugin.auth.viewList" => "Plugin lista", - "Plugin.auth.setting" => "Insticksinställningar", - "Plugin.auth.status" => "Stäng av", - "Plugin.auth.install" => "Installera / avinstallera", - "Explorer.UI.openWith" => "Välj Open", - "Explorer.UI.openWithText" => "Anteckningar för att öppna", - "Explorer.UI.appSetDefault" => "Ange standard öppna", - "Explorer.UI.appAwaysOpen" => "Använd alltid detta program för att öppna filen", - "Explorer.UI.selectAppDesc" => "Välj det program du vill öppna den här filen", - "Explorer.UI.selectAppWarning" => "Välj programmet!", - "Explorer.UI.appTypeSupport" => "stöds", - "Explorer.UI.appTypeAll" => "Alla applikationer", - "kodApp.oexe.edit" => "Redigera ljusansökan", - "kodApp.oexe.open" => "Öppna programmet av ljus" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/ta/about.html b/plugin/document/kod/config/i18n/ta/about.html deleted file mode 100644 index 032da53b6..000000000 Binary files a/plugin/document/kod/config/i18n/ta/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/ta/edit.html b/plugin/document/kod/config/i18n/ta/edit.html deleted file mode 100644 index d0a52d1bd..000000000 --- a/plugin/document/kod/config/i18n/ta/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    பணக்கார செயல்பாடு

                    -

                    குறியீடு தானாக குறிப்புகள் பயன்படுத்த

                    -

                    பல தீம்: உங்களுக்கு பிடித்த நிகழ்ச்சிகளை பாணி தேர்வு

                    -

                    தனிபயன் எழுத்துரு: நடந்த இடத்தில் பயன்படுத்த

                    -

                    மல்டி கர்சர் எடிட்டிங், விழுமிய ஒப்பிடக்கூடிய தொகுதி எடிட்டிங் ஆன்லைன் நிரலாக்க அனுபவம்

                    -

                    பிளாக் மடிப்பு, விரிவாக்க; மடிக்க

                    -

                    பல தாவல்கள் ஆதரவு, நிலைமாற்றம் வரிசை இழுத்து;

                    -

                    வரலாறு; பல ஆவணங்களை பராமரித்தல், கண்டுபிடிக்க மற்றும் பதிலாக;

                    -

                    கார் முழுமையான [], {}, (), '' ''

                    -

                    நீங்கள் ஆன்லைன் நிரலாக்க காதலிக்கும்படி அனுமதிக்கிறது என்று ஆன்லைன் உண்மையான நேர முன்னோட்ட!

                    -

                    ஆதரவு zendcodeing, குறியீடு எண்பது என்று எழுது

                    -

                    உங்கள் கண்டுபிடிப்பு காத்திருக்கும் மேலும் அம்சங்கள் ......

                    -
                    -
                    -

                    குறியீடு தனிப்படுத்தல் 150 வகையான

                    -

                    குறிப்பு: HTML, ஜாவா, CSS, குறைந்த, SASS, SCSS

                    -

                    வலை அபிவிருத்தி: PHP, Perl, Python, ரூபி, elang, செல்ல ...

                    -

                    பாரம்பரிய மொழிகளில்: ஜாவா, சி, சி ++, சி #, ஆக்ஷன்ஸ்கிரிப்டைக் VBScript ...

                    -

                    மற்ற: Markdown, ஷெல், SQL, லூவா, XML, YAML ...

                    -
                    -
                    -
                    -
                    -

                    குறுக்குவழி அதிரடி

                    -
                     பொதுவாக பயன்படுத்தப்படும் குறுக்குவழிகளை: 
                    - Ctrl + S காப்பாற்ற 
                    - Ctrl ஒரு தேர்ந்தெடுக்கப்பட்ட அனைத்து Ctrl + X கட் + 
                    - Ctrl + C, Ctrl + V ஒட்டவும் 
                    - Ctrl + Z செயல்தவிர் எதிர்ப்பு Ctrl + Y 
                    - CTRL + F மாற்று CTRL + F + F கண்டுபிடிக்க 
                    - வெற்றி + Alt + 0 சரிவு அனைத்து Win + Alt + Shift + 0 அனைத்து விரி 
                    - Esc [வெளியேறு தேடல் தானாகவே ரத்து கேட்கும் ...] 
                    - Ctrl-Shift-கள் முன்னோட்டம் 
                    - Ctrl-Shift-இ நிகழ்ச்சி மற்றும் மூடு விழா 
                    -
                    -
                     தேர்வு: 
                    - சுட்டி முன்னணி - இழுத்தல் 
                    - Shift + வீட்டில் / இறுதி / மேல் / இடது / கீழே / வலது 
                    - Shift + PageUp / PageDown தேர்வு வரை கவிழ்த்து கீழே 
                    - Ctrl + Shift + வீட்டில் / ஆரம்பம் மற்றும் இறுதியில் தற்போதைய சுட்டியின் கடைசியிலுள்ள 
                    - Alt + சுட்டி தொகுதி தேர்வு இழுத்து 
                    - Ctrl + Alt + கிராம் தொகுதி தேர்வு மற்றும் தற்போதைய பல தாவலை ஆசிரியர் நுழைய 
                    -
                    -
                     கர்சர்: 
                    - வீட்டில் / இறுதி / மேல் / இடது / கீழே / வலது 
                    - Ctrl + வீட்டில் / இறுதியில் ஆவணம் தலைவர் / வால் நகர்த்து 
                    - பொருத்தமான டேக் Ctrl + P செல்லவும் 
                    - PageUp / PageDown மேலும் கீழும் கர்சர் 
                    - Alt + Left / வலது கர்சர் வரி மேல் செல்ல 
                    - வரி இறுதியில் + இடது / வலது கர்சர் மாற்ற & 
                    - Ctrl + ஒரு குறிப்பிட்ட வரிசையில் செல்ல எல் 
                    - Ctrl + Alt + / கீழே (கீழே) அதிகரிக்க கர்சர் 
                    -
                    -
                     திருத்து: 
                    - Ctrl + / கருத்து மற்றும் uncomment, Ctrl + Alt + ஒரு நியாயமான 
                    - அட்டவணை தாவலை சீரமைப்பு Shift + அட்டவணை ஒட்டுமொத்த முன்னேற்றம் அட்டவணை 
                    - முழு வரி Ctrl நீக்க நீக்கு + D 
                    - Ctrl + சரியான வார்த்தை வரிசையில் நீக்க நீக்க 
                    - Ctrl / Shift + Backspace இடது வார்த்தை நீக்க 
                    - ALT + SHIFT + மேல் / கீழ் மற்றும் பிரதியை வரி சேர்க்கப்படும் (கீழே) விமானம் 
                    - Alt + கர்சர் வலது உள்ளடக்கங்களை நீக்க நீக்க 
                    - Alt + வரை தற்போதைய வரி மற்றும் வரி (அடுத்த வரியில் பரிமாற்றம்) மீது / கீழ் 
                    - Ctrl + Shift + d வரிசைகள் நகல் மற்றும் பின்வரும் சேர்க்க 
                    - Ctrl + வார்த்தையின் வலது நீக்க நீக்க 
                    - Ctrl + u சிறிய எழுத்து மாற்றப்படுகிறது Ctrl + Shift 
                    - Ctrl U + தேர்ந்தெடுக்கப்பட்ட உரை பேரெழுத்து 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/ta/help.html b/plugin/document/kod/config/i18n/ta/help.html deleted file mode 100644 index fa5f737d0..000000000 --- a/plugin/document/kod/config/i18n/ta/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    கோப்பு மேலாண்மை
                    -

                    கோப்பு தேர்வு: ரேடியோ, சுட்டி முன்னணி, shift-தேர்தல், Ctrl சீரற்ற தேர்வு, விசைப்பலகை கீழே வரை, வீட்டில், இறுதித் தேர்வு.

                    -

                    கோப்பு அறுவை சிகிச்சை: ஒரு கோப்பு தேர்வு செய்த பின்னர், நீங்கள், நகலெடுக்க முடியும் வெட்டி, நீக்க, சுருக்க பண்புகளை காண, மறுபெயர், திறந்த முன்னோட்டம் மற்றும் இதர நடவடிக்கைகளில் ......

                    -

                    கோப்பு பதிவேற்றம்: பதிவேற்ற பல கோப்புகளை தொகுதி; HTML5 இழுவை பதிவேற்ற (இழுவை உள்ளன ஜன்னல், இழுவை பதிவேற்ற மற்றும் கோப்புறைகள் ஆதரவு கைவிட)

                    -

                    வலது செயல்பாடு: வலது கோப்பு, அடைவு, வலது, மேலும் தேர்தலுக்கு அறுவை சிகிச்சைக்குப் பிறகு, டெஸ்க்டாப், வலது, வலது அடைவு மரம், வலது கட்டப்படுகிறது பட்டி குறுக்கு விசைகள்
                    - (- நகல் - அனைத்து தேர்வு வெட்டு - ஒட்டு - நீக்கு - மறுபெயரிடு, அமைக்க ......)

                    -

                    கோப்பு உலாவி: பட்டியல் முறையில், ஐகான் முறை; முகவரி பட்டியில் செயல்படும்; துணை கோப்புறைகளை ஒரு இரட்டை கிளிக் செய்யவும் ஒரு கோப்புறையை சாதனை முரண்பாட்டாளரான சாதனை திறக்க (முன் மற்றும் பின் தங்கிய)

                    -

                    ஆதரவு இழுத்து: குறிப்பிட்ட அடைவு இயக்கத்தை அடைய வெட்டி இழுத்து பாருங்கள்,

                    -

                    குறுக்குவழி விசைகள்: நீக்க நீக்க, Ctrl + A அனைத்தையும் தெரிவு, நகலெடுக்க, Ctrl + சி + எக்ஸ் வெட்டு, கோப்பு தேடல் (தேடல் உள்ளடக்கம்) Ctrl

                    -
                    -
                    -
                    கோப்பு முன்னோட்டம்
                    -

                    கோப்பு முன்னோட்டம்: ஒரு உரை கோப்பு எடிட்டிங் மற்றும் சேமிப்பு உள்ளடக்கங்களை காண; HTML, SWF கோப்பு முன்னோட்ட,

                    -

                    பட முன்னோட்டம்: சிறு, படத்தை ஸ்லைடு ஷோ தானியங்கி தலைமுறை;

                    -

                    ஆடியோ பின்னணி: ஆன்லைன் இசை மற்றும் வீடியோ கோப்புகளை இயக்க; ஆதரவு MP3, WMA, மத்தியில், AAC, WAV; MP4,

                    -

                    வீடியோ: ஆன்லைன் வீடியோ பின்னணி, ஆதரவு வடிவங்கள்: FLV, F4V, 3GP

                    -

                    அலுவலகம்: அலுவலக ஆன்லைன் முன்னோட்டம், ஆதரவு வடிவங்கள்: doc, docx, PPT, PPTX, XLS, XLSX

                    -
                    -
                    -
                    குறுக்குவழிகள்
                    -

                    திறந்த நுழைய

                    -

                    Ctrl அனைத்து ஒரு தேர்ந்தெடுக்கப்பட்ட +

                    -

                    நகலெடுக்க Ctrl + C தேர்வு

                    -

                    ஒட்ட Ctrl + V

                    -

                    Ctrl + X கட்

                    -

                    Ctrl + தற்போதைய அடைவு தேட F

                    -

                    Alt + N புதிய கோப்பு

                    -

                    Alt + மீ புதிய அடைவு

                    -

                    நீக்கு நீக்கு

                    -

                    பின்னிட மீண்டும்

                    -

                    Ctrl + முன்னோக்கி பின்னிட

                    -

                    F2 மறுபெயர் தேர்வு (அடைவை)

                    -

                    வீட்டில் / இறுதி / மேல் / கீழ் / இடது / கோப்பு தேர்வு செய்யும் உரிமை

                    -

                    anykey பாத்திரம் கோப்புகளை & கோப்புறைகள் முதல் கடிதம் தானியங்கி சுழற்சி தேர்வு அழுத்தவும் பாருங்கள்

                    -
                    diff --git a/plugin/document/kod/config/i18n/ta/main.php b/plugin/document/kod/config/i18n/ta/main.php deleted file mode 100644 index e51eece50..000000000 --- a/plugin/document/kod/config/i18n/ta/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "தயவு செய்து கோப்பு தேர்வு ...", - "path_api_select_folder" => "ஒரு அடைவை தேர்ந்தெடுக்கவும் ...", - "path_api_select_image" => "ஒரு படத்தைத் தேர்ந்தெடுக்கவும் ...", - "share_can_upload" => "பதிவேற்ற அனுமதி", - "move_error" => "நகர்வு தோல்வி", - "setting_basic" => "அடிப்படை அமைப்புகள்", - "setting_user_sound_open" => "திறந்த ஒலி", - "setting_user_animate_open" => "திறந்த அனிமேஷன்", - "recycle_open_if" => "சுழற்சி தொட்டி திறக்க", - "recycle_open" => "திறந்த", - "setting_user_recycle_desc" => "நீக்கப்பட்ட பிறகு நேரடியாக உடல் நீக்கம் நீக்கப்படும்", - "setting_user_animate_desc" => "சாளர திறந்த மற்றும் பிற அனிமேஷன்", - "setting_user_sound_desc" => "ஆபரேஷன் ஒலி", - "setting_user_imageThumb" => "படம் சிறுபடங்கள்", - "setting_user_imageThumb_desc" => "திறந்த பிறகு சிறந்த உலாவுதல் அனுபவம்", - "setting_user_fileSelect" => "கோப்பு ஐகான் காசோலை திறக்க", - "setting_user_fileSelect_desc" => "கோப்பு ஐகானை இடது சரிபார்த்து, வலது கிளிக் மெனு குறுக்குவழி உள்ளீடு", - "qrcode" => "URL ஐ QR குறியீடு", - "theme_mac" => "மேக் குறைந்தபட்ச வெள்ளை", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "மெட்ரோ ப்ளூ கிளாசிக்", - "theme_metro_green" => "மெட்ரோ வெளிர் பச்சை", - "theme_metro_purple" => "மெட்ரோ நேர்த்தியான ஊதா", - "theme_metro_pink" => "மெட்ரோ ரோஸ்", - "theme_metro_orange" => "மெட்ரோ பிரகாசமான ஆரஞ்சு", - "theme_alpha_image" => "பிரைட் - பறக்கும்", - "theme_alpha_image_sun" => "பிரைட் - சன்செட்", - "theme_alpha_image_sky" => "சிம்பொனி - ப்ளூ ஸ்கை", - "theme_diy" => "விருப்ப", - "theme_diy_title" => "விருப்ப தீம் அமைப்புகள்", - "theme_diy_background" => "பின்னணி", - "theme_diy_image" => "படம்", - "theme_diy_color_blur" => "சாய்வு வண்ணம்", - "theme_diy_image_blur" => "படம் தெளிவின்மை", - "theme_diy_image_url" => "புகைப்படங்கள் முகவரியை", - "theme_diy_color_start" => "தொடங்கி வண்ண", - "theme_diy_color_end" => "இறுதியில் வண்ண", - "theme_diy_color_radius" => "சாய்வு கோணம்", - "system_role_admin_set" => "நிர்வாகிகள் அமைக்க இல்லாமல், சகல அதிகாரங்களும் உள்ளன!", - "login_error_user_not_use" => "பயனர் முடக்கப்பட்டுள்ளது! நிர்வாகியைத் தொடர்பு கொள்ளவும்", - "login_error_kod_version" => "பதிப்பு மோதல்", - "login_error_role" => "காட்சி அனுமதிகள் குழு இல்லை, நிர்வாகியை அணுகவும்", - "no_permission_group" => "நீங்கள் இந்த குழுவில் இல்லை!", - "no_permission_write" => "அடைவு எழுத அனுமதி இல்லை", - "user" => "பயனர்", - "save_as" => "சேமி", - "check_update" => "புதுப்பிக்கப்பட்டது", - "keyboard_type" => "விசைப்பலகை முறை", - "font_family" => "எழுத்துருக்கள்", - "code_mode" => "தொடரியல் தனிப்படுத்தல்", - "path_can_not_share" => "உங்கள் சொந்த ஆவணங்கள் பகிர்ந்து ஆதரிக்கிறது!", - "path_can_not_action" => "இந்த அடைவு இந்த இச்செயலுக்கு ஆதரவளிக்கவில்லை!", - "wap_page_pc" => "PC பதிப்பு", - "wap_page_phone" => "மொபைல்", - "image_size" => "பட அளவுகள்", - "no_permission_action" => "இந்த அனுமதி இல்லை, நிர்வாகியை அணுகவும்!", - "path_is_root_tips" => "அது ரூட் அடைவு வந்துவிட்டது!", - "kod_group" => "அமைப்பு", - "my_kod_group" => "நான் திணைக்களத்தில் இருக்கிறேன்", - "space_tips_default" => "(ஜிபி) 0 எந்த எல்லை", - "space_tips_full" => "எல்லை இல்லாமல்", - "space_size" => "விண்வெளி", - "space_size_use" => "இடத்தை பயன்படுத்த", - "space_is_full" => "போதுமான இடைவெளி இல்லை, தயவுசெய்து நிர்வாகியை தொடர்பு கொள்ளவும்!", - "system_open_true_path" => "கோப்பு மேலாளர் வெற்றிகரமாக திறக்கப்பட்டது!", - "group_role_error" => "பங்கு அனுமதிகள் பிழை (அனுமதி அமைப்புகள்)", - "group_role_error_admin" => "போதிய அனுமதிகள்", - "markdown_content" => "பொருளடக்கம்", - "system_group" => "பயனர்கள் மற்றும் துறைகள்", - "system_group_edit" => "துறை மேலாண்மை", - "system_group_role" => "பங்கு அடையாளத்தை", - "system_group_create" => "புதிய துறை", - "system_group_name" => "துறை பெயர்", - "system_group_father" => "உயர்ந்த துறை", - "system_group_add" => "துணைத் துறையைச் சேர்க்கவும்", - "system_group_remove" => "துறையை அகற்று", - "system_group_remove_tips" => "துறையை நீக்குமா?
                    பயனரின் பகுதியை நீக்கிய பின் அகற்றப்படும், துணைத் துறை ரூட் துறைக்கு மாற்றப்படுகிறது", - "system_group_select" => "தேர்ந்தெடு", - "system_group_select_result" => "உறுப்பினர் பின்வரும் துறைகளில் சொந்தமாகி விடும்", - "system_role_admin_tips" => "குறிப்புகள்: கணினி நிர்வாகிகள் கட்டுப்படுத்த அனுமதி இல்லை", - "system_member_action" => "பயனர் மேலாண்மை", - "system_member_add" => "புதிய பயனர்", - "system_member_role" => "அனுமதி வேடங்களில்", - "system_member_role_select" => "தேர்வு", - "system_member_password_tips" => "நிரப்ப வேண்டாம் மாற்றம் இல்லை", - "system_set_home_path" => "விருப்ப பட்டியல்", - "system_set_home_path_tips" => "முன்னிருப்பு அடைவு காலியாக உள்ளது", - "system_member_group" => "திணைக்களம்", - "system_member_group_edit" => "ஆசிரியர் துறை", - "system_member_remove" => "பயனர் நீக்கு", - "system_member_remove_tips" => "நீக்கு பயனர் உறுதிப்படுத்தவும்?
                    நீங்கள் பயனர் அடைவை நீக்க பிறகு, முற்றிலும் அழிக்கப்படும்", - "system_member_set_role" => "தேர்ந்தெடுக்கப்பட்ட பயனர் குழு அனுமதிகள் மாற்றம் உறுதிப்படுத்த?", - "system_member_remove_group" => "தீர்மானிக்க தேர்ந்தெடுக்கப்பட்ட பயனர் இந்த குழுவில் இருந்து நீக்கப்படும்?", - "system_member_import" => "மொத்த சேர்க்க", - "system_member_import_desc" => "ஒரு வரிக்கு ஒரு பயனர்,
                    ஏற்கனவே இருக்கின்றன தவிர்க்கப்பட்டு", - "system_member_use" => "இயக்கு", - "system_member_unuse" => "முடக்கு", - "system_member_space" => "பயனர் இடைவெளி அமைக்கவும் ", - "system_member_space_tips" => " பயனர் இடைவெளி அமைக்கவும் ", - "system_member_space_number" => " எண்ணாக இருக்க வேண்டும்!", - "system_member_group_config" => "தொகுப்பு அமைப்பு", - "system_member_group_remove" => "திணைக்களத்திலிருந்து நீக்கப்பட்டது", - "system_member_group_insert" => "துறைக்கு சேர்", - "system_member_group_reset" => "துறை மீட்டமை", - "system_member_group_error" => "துறை பிழை", - "system_group_action" => "துறை மேலாண்மை", - "system_role_add" => "பங்கு அடையாள சேர்", - "system_role_read" => "வாசிக்க-மட்டும்", - "system_role_write" => "எழுத, படிக்க முடியும்", - "system_setting_root_path" => "ரூட் அணுகல்", - "system_setting_root_path_desc" => "ஒரு கணினி நிர்வாகியை அனைத்து கோப்பகங்களுக்கும் அணுக முடியும், பயனர்கள் மற்ற உரிமைகள் குழுக்கள் தங்களது சொந்த பயனர் அடைவு பார்க்க முடியும். நீங்கள் இயக்கலாம் அல்லது மற்ற அடைவுகள்
                    நிர்வாகி அணுகல் முடக்கத்தில் விரும்பினால், நீங்கள் எதிர்ப்பு குறுக்கு தளத்தில் அளவுருக்கள் open_basedir PHP மாற்ற முடியும்எப்படி அமைக்க", - "system_group_role_title" => "திணைக்களம் அதிகாரியின் பங்கு மேலாண்மை", - "system_group_role_remove" => "துறை பங்கை நீக்க சரி", - "system_group_role_style" => "பாணி", - "system_group_role_display" => "என்பதை", - "system_group_role_display_desc" => "துறை பயனர் உரிமைகள் காட்ட இல்லையா என்பதை அமைக்கவும்", - "role_type_name_read" => "படிக்க", - "role_type_name_read:list" => "கோப்பு பட்டியல்", - "role_type_name_read:info" => "கோப்பு (கோப்புறையை) சொத்து காண்க, கோப்புறை தேடல்", - "role_type_name_read:copy" => "கோப்பு நகல்", - "role_type_name_read:preview" => "கோப்பு முன்னோட்டத்தை (படங்கள், ஆவணங்கள், ஆடியோ மற்றும் வீடியோ)", - "role_type_name_read:download" => "கோப்பு (கோப்புறையை) பதிவிறக்கி", - "role_type_name_write" => "எழுத", - "role_type_name_write:add" => "ஒரு கோப்பு (கோப்புறையை) உருவாக்கவும், சுருக்கப்பட்ட கோப்பை பிரித்தெடுக்க", - "role_type_name_write:edit" => "கோப்பைத் திருத்த சேமிக்க", - "role_type_name_write:change" => ", மறுபெயரிடு அடைவு அமைப்பு சரிசெய்ய", - "role_type_name_write:upload" => "கோப்பு (கோப்புறையை) பதிவேற்ற, தொலை பதிவிறக்கம்", - "role_type_name_write:remove" => "கோப்பு (கோப்புறையை) நீக்க, வெட்டி", - "group_guest" => "பார்வையாளர்கள்", - "group_guest_desc" => "நீங்கள் துறையின் உறுப்பினராக இல்லை,
                    கீழ்க்கண்ட உள்ளடக்கம், படிக்க மட்டும் அனுமதிகளை மட்டுமே அணுக முடியும்.", - "group_role_lebel_desc" => "நீங்கள் இந்த துறையின் உறுப்பினராக உள்ளீர்கள்,
                    திணைக்களத்திற்குள் உள்ள அனைத்து ஆவணங்களும் நிர்வாகியால் ஒதுக்கப்பட்ட அனைத்து உரிமைகளும்", - "button_save_and_add" => "சேமிக்க தொடர்க", - "path_cannot_search" => "அடைவு தேடல் ஆதரிக்கவில்லை!", - "not_support" => "ஆதரவு இல்லை!", - "group_not_exist" => "பயனர் குழு இல்லை!", - "upload_clear_all" => "அனைத்து தெளிவு", - "upload_clear" => "தெளிவான நிறைவு", - "upload_setting" => "அமைக்கவும்", - "upload_tips" => "துண்டு பதிவேற்ற, இனி php.ini வரம்பிற்கு உட்பட்டு பயன்படுத்துகிறது; பரிந்துரைக்கப்படுகிறது Chrome கோப்புறையை இழுத்து பதிவேற்றம் அனுபவம்", - "upload_exist" => "அதே பெயரில் கோப்பு", - "upload_exist_rename" => "மறுபெயரிடு", - "upload_exist_replace" => "கவர்", - "upload_exist_skip" => "செல்க", - "upload_add_more" => "மொத்த சேர்க்க", - "more" => "மேலும்", - "system_setting" => "கணினி அமைப்புகள்", - "openProject" => "திட்டம் எடிடர்", - "url_download" => "பதிவிறக்க", - "url_link" => "URL", - "app_type_link" => "குறுக்குவழிகள்", - "createLink" => "குறுக்குவழியை உருவாக்குக", - "createLinkHome" => "டெஸ்க்டாப் குறுக்குவழியை அனுப்பப்பட்டார்", - "createProject" => "ஆசிரியர் திட்டம் சேர்த்தல்", - "only_read" => "வாசிக்க-மட்டும்", - "only_read_desc" => "அடைவு எழுத அனுமதி இல்லை
                    நீங்கள் சர்வரில் இந்த அடைவு அனுமதி அமைக்க முடியும்", - "not_read" => "இயலாதபடி", - "explorerNew" => "Kod இணைப்பை", - "zip_download_ready" => "சுருக்க தானாகவே பதிவிறக்கம் பிறகு, தயவு செய்து காத்திருக்கவும் ...", - "set_background" => "டெஸ்க்டாப் வால்பேப்பர் அமை", - "share" => "பகிர்ந்து", - "my_share" => "என் பங்கு", - "group_share" => "குழு வெளிப்புற பகிர்வு", - "share_edit" => "பகிர்வை அனுப்புக", - "share_remove" => "பகிர்வு ரத்துசெய்யவும்", - "share_remove_tips" => "பகிர்வு ரத்துசெய்ய விரும்புகிறீர்களா? பொது இணைப்பு செல்லுபடியாகாது.", - "share_path" => "பாதையைப் பகிரவும்", - "share_title" => "வள பகிர்வு", - "share_name" => "தலைப்பு பகிர்ந்து", - "share_time" => "காலாவதி", - "share_time_desc" => "பூஜ்ய அமைக்க முடியாது", - "share_password" => "சாரம் கடவுச்சொல்லை", - "share_password_desc" => "வெற்று கடவுச்சொல்லை அமைக்க முடியாது", - "share_cancle" => "பகிர்வுநீக்குவதில்", - "share_create" => "ஒரு பொது இணைப்பை உருவாக்க", - "share_url" => "பங்கிடப்பட்ட முகவரி", - "share_not_download" => "பதிவிறக்க தடை", - "share_not_download_tips" => "பங்குதாரராக பதிவிறக்கம் தடை!", - "share_code_read" => "குறியீடு வாசகர்", - "share_save" => "கட்டமைப்பு சேமி", - "share_error_param" => "அளவுரு பிழை!", - "share_error_user" => "பயனர் தகவல் பிழை!", - "share_error_sid" => "பகிர் இல்லை!", - "share_error_time" => "நீங்கள் மிகவும் தாமதம், பங்கு காலாவதியாகிவிட்டது வா", - "share_error_path" => "பகிரப்பட்ட கோப்பு இல்லை, அது நீக்கப்பட்டது அல்லது அது நீக்கப்பட்டு!", - "share_error_password" => "தவறான கடவுச்சொல்!", - "share_error_show_tips" => "இந்த வகை கோப்பு முன்னோட்ட ஆதரிக்கவில்லை!", - "share_view_num" => "பார்வைகள்:", - "share_download_num" => "இறக்கம்:", - "share_open_page" => "பகிர்ந்துள்ளார் பக்கம் திறந்து", - "open_the_path" => "கோப்பகத்தை உள்ளிடவும்", - "recycle_clear" => ", குப்பையை காலி", - "recycle_clear_success" => ", குப்பையை காலி வெற்றி!", - "recycle_clear_info" => "நீங்கள் முற்றிலும் வெற்று குப்பை என்பதில் உறுதியாக இருக்கிறீர்களா?", - "fav_remove" => "சேகரிப்பு ரத்து", - "remove_item" => "பொருட்கள்", - "uploading" => "பதிவேற்றுகிறது", - "upload_tips_more" => "பல கோப்புகள், அழுத்தப்பட்ட பதிவேற்ற பரிந்துரையின் பின்னர் ஆன்லைன் திறக்க!", - "uploading_move" => "இணைப்பு பரிமாற்றத்தில் ...", - "show_file" => "புதிய பக்கம் முன்னோட்ட", - "unknow_file_title" => "திறந்த குறிப்பு கோப்பு!", - "unknow_file_tips" => "இந்த கோப்பு, நீங்கள் பயன்பாடு ஆதரவு காணவில்லை:", - "unknow_file_try" => "முயற்சி", - "unknow_file_download" => "கோப்பை பதிவிறக்க", - "unknow_plugin_search" => "தேடல் தொடர்பான பயன்பாடுகள் நிறுவப்பட்ட", - "config_save_error_auth" => "கட்டமைப்பு சேமிக்க தவறியது, நிர்வாகி, இந்த சலுகை தடை!", - "config_save_error_file" => "பிழை, எழுத முடியாது தாக்கல்!", - "beautify_code" => "குறியீடு Formatter", - "convert_case" => "வழக்கு மாற்றம்", - "convert_upper_case" => "பெரிய எழுத்து மாற்றப்பட்ட", - "convert_lower_case" => "சிற்றெழுத்து மாற்றப்பட்ட", - "editor_insert_time" => "தற்போதைய நேரம் ", - "editor_md5" => " Md5 குறியாக்கம் ", - "editor_qrcode" => " சரம் இரு பரிமாண குறியீடு ", - "editor_regx" => " வழக்கமான வெளிப்பாடு சோதனை ", - "editor_chinese" => " எளிமைப்படுத்தப்பட்ட மாற்றம் ", - "editor_chinese_simple" => " எளிமையாக்கப்பட்ட சீனருக்கு மாற்றவும் ", - "editor_chinese_traditional" => " பாரம்பரிய சீன மொழியில் மாற்றவும் ", - "editor_base64" => "Base64 கோடெக் ", - "editor_base64_encode" => " Base64 குறியாக்கம் ", - "editor_base64_decode" => " Base64 டிகோடிங் ", - "editor_url" => " URL கோடெக் ", - "editor_url_encode" => " URL குறியாக்கம் ", - "editor_url_decode" => " URL டிகோடிங் ", - "editor_unicode" => " யூனிகோட் கோடெக் ", - "editor_unicode_encode" => " யூனிகோட் குறியாக்கம் ", - "editor_unicode_decode" => " யூனிகோட் டிகோடிங்", - "editor_tools_select_tips" => " நீங்கள் மாற்ற விரும்பும் உள்ளடக்கத்தைத் தேர்ந்தெடுக்கவும்!", - "editor_calc" => "இலவச கால்குலேட்டர்", - "shortcut" => "குறுக்குவழிகள்", - "use_free" => "இலவச பதிப்பை பயன்படுத்த தொடர்ந்து", - "learn_more" => "மேலும் அறிய", - "replace" => "மாற்றவும்", - "selectAll" => "தேர்வு", - "reload" => "Reload", - "about" => "அன்று", - "complete_current" => "தற்போதைய ஆட்டோ நிறைவு", - "view" => "காண்க", - "tools" => "கருவி", - "help" => "உதவும்", - "not_exists" => "இல்லை", - "group_role_fileDownload" => "இறக்கம்", - "group_role_share" => "பகிர்", - "users_share" => "பகிர்வது", - "system_setting_save" => "பாதுகாப்பு அமைப்புகள்", - "system_setting_menu" => "பட்டி மேலாண்மை", - "system_name" => "திட்டம் பெயர்", - "system_name_desc" => "திட்டம் லோகோ தலைப்பு", - "system_desc" => "திட்டம் விளக்கம்", - "path_hidden" => "ஏற்கனவே விலக்குகள்", - "version_not_support" => "உங்கள் பதிப்பு இந்த ஆதரிக்கவில்லை, மேம்பட்ட பதிப்பு வாங்க அதிகாரப்பூர்வ இணையதளம் செல்க!", - "version_not_support_number" => "கட்டுப்பாடு எண்ணிக்கை இந்த அறுவை சிகிச்சை ஆதரிக்கவில்லை என, அதிகாரப்பூர்வ இணையதளம் மேம்பட்ட பதிப்பு வாங்க, தயவு செய்து!", - "path_hidden_desc" => "இயல்பாக அடைவுகள் மற்றும் கோப்புகளை காற்புள்ளிகளை பயன்படுத்தி, காட்டப்படும்", - "new_user_folder" => "புதிய பயனர் முன்னிருப்பு அடைவு, உருவாக்கப்பட்ட உள்ளது", - "new_user_folder_desc" => "காற்புள்ளிகளை பயன்படுத்தி", - "new_user_app" => "புதிய பயனர் இயல்புநிலை பயன்பாட்டை, உருவாக்கப்பட்ட உள்ளது", - "new_user_app_desc" => "பயன்பாடுகள், பயன்பாட்டு மையம், பிரிக்கப்பட்ட ஒரு பன்முக", - "auto_login" => "பார்வையாளர்கள் தானியங்கி உள்நுழைவு", - "auto_login_desc" => "இயல்புநிலை உள்நுழைவு பயனர்guest/guestபயனர்களுக்கு திறந்த பிறகு பயனர் உள்ளது என்று உறுதி", - "first_in" => "இயல்புநிலை உள்நுழைந்து பிறகு", - "version_price_free" => "இலவச", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "கோப்பகம் எழுத முடியாதது, அடைவு அமைக்க மற்றும் அனைத்து துணை அடைவுகள் பிறகு படிக்க-எழுத மீண்டும் முயற்சி செய்ய!", - "menu_name" => "பட்டி பெயர்", - "menu_hidden" => "மறை", - "menu_show" => "காட்சி", - "menu_move_down" => "டவுன்", - "menu_move_up" => "அப்", - "menu_move_del" => "நீக்கு", - "menu_open_window" => "புதிய சாளரத்தை திறக்கவும்", - "menu_sub_menu" => "துணைமெனு", - "url_path" => "URL முகவரியை", - "url_path_desc" => "URL முகவரியை அல்லது JS குறியீடு", - "no_permission_read" => "நீங்கள் படிக்க அனுமதி இல்லை!", - "no_permission_download" => "நீங்கள் பதிவிறக்கம் செய்ய அனுமதி இல்லை!", - "php_env_check" => "இயக்க சூழல் கண்காணிப்பு:", - "php_env_error" => "PHP நூலகம் காணவில்லை", - "php_env_error_ignore" => "புறக்கணி மற்றும் நுழைய", - "php_env_error_version" => "PHP பதிப்பு 5.0 விட குறைவாக இருக்க முடியாது", - "php_env_error_path" => "எழுத முடியாது", - "php_env_error_list_dir" => "உங்கள் வலை சர்வர் பாதுகாப்பு காரணங்களுக்காக பட்டியல் அம்சம் அடைவை திறந்து, இந்த அம்சத்தை முடக்க!எப்படி?", - "php_env_error_gd" => "PHP GD நூலகம் திறந்த, இல்லையெனில் குறியீடு, சிறு பயன்படுத்த சரியாக செயல்பட முடியாது இருக்க வேண்டும்", - "install_login" => "நீங்கள் பின்வரும் கணக்கு உள்நுழைவு பயன்படுத்த முடியும்", - "install_enter" => "அமைப்பு", - "install_user_default" => "நிர்வாகி: {0} / (ஒரு கடவுச்சொல்லை அமைக்க கீழே)
                    சராசரி பயனர்: {1}
                    விருந்தினர் பயனர்கள்: {2}", - "login_root_password" => "நிர்வாகி கடவுச்சொல்லை அமைக்கவும்", - "login_root_password_repeat" => "மீண்டும் பாஸ்வேர்டை உறுதி", - "login_root_password_equal" => "இரு கடவுச்சொற்கள் பொருந்தவில்லை!", - "login_root_password_tips" => "ஒரு நிர்வாகி கடவுச்சொல்லை அமைக்க!", - "forget_password" => "உங்கள் கடவுச்சொல்லை மறந்து விட்டீர்களா", - "forget_password_tips" => "நிர்வாகி கடவுச்சொல் மறந்துவிட்டதா:
                    சர்வர் தயவு செய்து புகுபதிகை செய்க ./data/system/install.lock மீட்டமைக்க அழித்தல்;

                    நிர்வாகி அல்லாத கடவுச்சொல் மறந்து விட்டீர்களா:
                    மீட்டமைக்க நிர்வாகியைத் தொடர்பு கொள்ளவும்!", - "copyright_desc" => "Kodexplorer நீங்கள் அதை உள் ஆவணம் மேலாண்மை அல்லது பகிர்வு, மேலும் தளத்தில் மேலாண்மை சர்வரில் பயன்படுத்த முடியும் கூட webIDE நேரடியாக ஆன்லைன் வளர்ச்சி என, பயன்படுத்த முடியும் Ftp பதிலாக, ஒரு மிகவும் பாராட்டப்பட்ட வலை ஆவணம் மேலாண்மை அமைப்பு உள்ளது. நீங்கள் உங்கள் இருக்கும் அமைப்புகள் இந்த ஒருங்கிணைக்க இரண்டாவது வளர்ச்சி நிரல் முடியும்.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "மா மேகம் • எக்ஸ்ப்ளோரர்", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "மா மேகம் • எக்ஸ்ப்ளோரர்", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, Kod, kodCloud, webOS, webIDE, PHP filemanage, filemanage, டாவோ மேகம், மேகம் மாம்பழம், ஆவண மேலாண்மை அமைப்புகள், நிறுவன மேகம் வட்டு, ஆய்வாளர் ,, ஆன்லைன் ஆவணங்கள், ஆன்லைன் அலுவலகம், ஆன்லைன் அலுவலகம், ஆன்லைன் கேட் முன்னோட்ட, ஆன்லைன் எடிட்டிங் , ஆன்லைன் ஆசிரியர்", - "kod_meta_description" => "சாலை KodExplorer கிளவுட் முடியும் (முன்னர் மேகம் மாமரங்கள்) பாதுகாப்பான மற்றும் கட்டுப்படுத்தப்பட்ட, எளிய மற்றும் எளிதாக வழங்க அரசாங்கம் / நிறுவன தனியார் கிளவுட் மற்றும் ஆன்லைன் தனிப்பட்ட வலைத்தளங்களில் ஆவணம் மேலாண்மை அமைப்பு, நிறுவன தனியார் கிளவுட் ஆயத்தங்களும், பிணைய சேமிப்பிடம், ஆன்லைன் ஆவண மேலாண்மை ஒரு முன்னணி வழங்குநர், ஆன்லைன் ஆஃபீஸ் உள்ளது பயன்பாடு, மிகவும் தனியார் கிளவுட் பொருட்கள் அமைத்துக்கொள்ள. இல்லாமல், விண்டோஸ் பாணி இடைமுகம், இயக்க நடைமுறைகள் பயன்படுத்தி, விரைவில் தொடங்குவதற்கு ஏற்ப பிரபலமான ஆன்லைன் முன்னோட்ட கோப்பு வடிவம், பின்னணி மற்றும் சுற்றுச்சூழலுக்கு ஏற்ற, சக்திவாய்ந்த எடிட்டிங் நூற்றுக்கணக்கான ஆதரவு, ஒரு முறை சோதனை, இனி தனிப்பட்டதிலிருந்து பிரிக்க முடியாததாகும் மேகம் பிரசாதம்.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "உள்நுழைய", - "guest_login" => "விருந்தினர் உள்நுழைவு", - "username" => "உள்நுழை கணக்கு", - "userNickName" => "பயனர் புனைப்பெயர்", - "password" => "கடவுச்சொல்", - "login_code" => "குறியீடுகள்", - "need_check_code" => "தேதி அங்கீகார குறியீடு திறந்த", - "need_check_code_desc" => "உள்நுழைந்த பிறகு, நீங்கள் சரிபார்ப்புக் குறியீட்டை உள்ளிட வேண்டும்.", - "setting_csrf_protect" => "திறந்த CSRF பாதுகாப்பு", - "setting_csrf_protect_desc" => "தாக்குதல் திறம்பட CSRF பாதுகாக்க முடியும் திறப்பு வகை பிறகு", - "login_rember_password" => "கடவுச்சொல்லை நினைவில்", - "setting_show_root_group" => "அனைத்து துறைகள் பட்டியலிட", - "setting_show_root_group_desc" => "மரம் அடைவு ரூட் துறை அனைத்து துறைகள் பட்டியலிட என்பதை", - "setting_show_share_user" => "அனைத்து பயனர்களின் பட்டியல்", - "setting_show_share_user_desc" => "மரம் அடைவு ரூட் துறை அனைத்து பயனர் பகிர்வு பட்டியலிடப்பட்டுள்ளது", - "setting_clear_user_recycle" => "அனைத்து பயனர்களும் மறுசுழற்சி தொட்டிக்கு காலி", - "setting_clear_cache" => "கேச் காலி", - "setting_icp" => "பதிப்புரிமை அல்லது பதிவு எண்", - "setting_global_css" => "விருப்ப உலக CSS", - "setting_global_css_desc" => "அனைத்து பக்கங்கள் விருப்ப CSS நுழைக்கும்", - "setting_global_html" => "புள்ளி HTML ஆல்", - "setting_global_html_desc" => "அனைத்து பக்கங்கள் இந்த பத்தி HTML குறியீடு உள்ள செருகிய வேண்டும், குறியீடு மூன்றாம் தரப்பு புள்ளி வைக்கப்படும்", - "us" => "kodcloud.com", - "login_not_null" => "பயனர்பெயர் மற்றும் பாஸ்வேர்டு வெறுமையாக இருக்க முடியாது!", - "code_error" => "பிழை குறியீடுகள்", - "password_error" => "பயனர் பெயர் அல்லது கடவுச்சொல் தவறானது!", - "password_not_null" => "கடவுச்சொல் காலியாக இருக்க முடியாது!", - "old_password_error" => "பழைய கடவுச்சொல் தவறு!", - "permission" => "அனுமதி!", - "permission_edit" => "அனுமதிகளை மாற்று", - "file_info_owner" => "உரிமையாளர்", - "file_info_group" => "குழு", - "no_permission" => "நிர்வாகி இந்த சலுகை முடக்கியுள்ளது!", - "no_permission_ext" => "நிர்வாகி கோப்பு அனுமதிகளை இந்த வகை தடை", - "dialog_max" => "பெருக்குங்கள்", - "dialog_min" => "குறைத்தல்", - "dialog_min_all" => "அனைத்து குறைத்தல்", - "dialog_display_all" => "எல்லா சாளரங்களையும் காட்டாது", - "dialog_close_all" => "மூடு", - "open" => "திறந்த", - "others" => "பிற", - "open_with" => "இதற்காக திற ...", - "close" => "மூடு", - "close_all" => "மூடு", - "close_left" => "விட்டு தாவலை மூடுக", - "close_right" => "வலப்பக்கத்தில் உள்ள தாவல்களை மூடு", - "close_others" => "மூடவும்", - "loading" => "ஆபரேஷன் ...", - "warning" => "எச்சரிக்கை", - "getting" => "பெற ...", - "sending" => "தகவல் பரிமாற்றம் ...", - "data_error" => "தரவு பிழை!", - "get_success" => "வெற்றி கிடைக்கும்!", - "save_success" => "வெற்றிகரமாக சேமிக்கப்பட்டது!", - "success" => "வெற்றிகரமான செயல்பாடு", - "error" => "செயல்பாடு தோல்வியுற்றது", - "error_repeat" => "செயல்பாடு தோல்வி, பெயர் ஏற்கனவே உள்ளது!", - "word_error" => "தோல்வி ", - "word_success" => " வெற்றி", - "system_error" => "கணினி பிழை", - "name" => "பெயர்", - "type" => "வகை", - "contain" => "கொண்டிருக்கும்", - "address" => "இடம்", - "size" => "அளவு", - "byte" => "பைட்", - "path" => "பாதை", - "action" => "ஆப்பரேட்டிங்", - "create_time" => "உருவாக்கப்பட்டது", - "modify_time" => "திருத்தப்பட்ட", - "last_time" => "கடைசி வருகை", - "sort_type" => "வரிசைப்படுத்த மூலம்", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "பொது அடைவு", - "system_path_not_change" => "கணினி அடைவு, மாற்ற முடியாது", - "file" => "கோப்பு", - "folder" => "அடைவு", - "copy" => "நகல்", - "past" => "ஸ்டிக்", - "clone" => "நகலை உருவாக்கு", - "cute" => "பெயர்ச்சி", - "cute_to" => "நகர்த்து ...", - "copy_to" => "நகலெடு ...", - "remove" => "நீக்கு", - "remove_force" => "முற்றிலும் நீக்க", - "info" => "சொத்து", - "list_type" => "காண்க", - "list_icon" => "ஐகான் வரிசை", - "list_list" => "பட்டியல் ஏற்பாடு", - "list_list_split" => "வரிசை முறை", - "sort_up" => "சம்பள உயர்வு", - "sort_down" => "குறைந்துவரும்", - "order_type" => "வரிசைப்படுத்த மூலம்", - "order_desc" => "இறங்குமுக", - "order_asc" => "ஏறு", - "rename" => "மறுபெயரிடு", - "add_to_fav" => "பிடித்தவையில் சேர்", - "search_in_path" => "கோப்புறை தேடல்", - "add_to_play" => "பிளேலிஸ்ட்டில் சேர்", - "manage_fav" => "பிடித்தவை நிர்வகி", - "refresh_tree" => "புதுப்பிப்பு அடைவு கிளை", - "manage_folder" => "ஏற்கனவே மேலாண்மை", - "close_menu" => "மூடு பட்டி", - "zip" => "சுருக்கப்பட்ட தொகுப்பை உருவாக்கவும்", - "unzip" => "பிரித்தெடுக்க ...", - "unzip_folder" => "ஒரு கோப்புறையில் விரிவாக்கு", - "unzip_this" => "தற்போதைய பிரித்தெடுக்க", - "unzip_to" => "பிரித்தெடுக்க ...", - "zipview_file_big" => "கோப்பு மிகவும் பெரியது, பின்னர் முன்னோட்ட அறுவை சிகிச்சை பெறுவதற்கு!", - "clipboard" => "காண்க பிடிப்புபலகை", - "clipboard_clear" => "காலியாக கிளிப்போர்டு", - "full_screen" => "முழு திரை", - "folder_info_item" => "பொருட்கள்", - "folder_info_item_select" => "ஒரு தேர்ந்தெடுக்கப்பட்ட", - "file_load_all" => "அனைத்து ஏற்ற இரட்டை கிளிக் செய்யவும் ......", - "tips" => "உடனடியான", - "ziping" => "ஜிப் செய்கிறது ...", - "unziping" => "பிரித்தெடுக்கிறது ...", - "moving" => "மொபைல் செயல்பாடு ...", - "remove_title" => "உறுதிப்படுத்தல் நீக்கு", - "remove_info" => "தேர்ந்தெடுக்கப்பட்ட உருப்படியை அழிக்க உறுதிப்படுத்து?", - "remove_title_force" => "நிரந்தரமாக நீக்கப்படும்", - "remove_info_force" => "இதை நிரந்தரமாக இந்த ஆவணம் நீக்க வேண்டுமா?", - "name_isexists" => "தவறான, பெயர் ஏற்கனவே உள்ளது!", - "install" => "நிறுவ", - "width" => "அகலம்", - "height" => "உயர்", - "app" => "ஒளி பயன்பாடுகள்", - "app_store" => "ஒளி பயன்பாடுகள்", - "app_create" => "பயன்பாட்டு உருவாக்க", - "app_edit" => "விண்ணப்ப மாற்ற", - "app_group_all" => "முழுமையான", - "app_group_game" => "விளையாட்டு", - "app_group_tools" => "கருவி", - "app_group_reader" => "படிக்க", - "app_group_movie" => "தொலைக்காட்சி", - "app_group_music" => "இசை", - "app_group_life" => "ஆயுள்", - "app_group_others" => "பிற", - "app_desc" => "விளக்கம்", - "app_icon" => "பயன்பாடுகள் ஐகான்", - "app_icon_show" => "URL முகவரியை அல்லது அடைவு", - "app_group" => "பயன்பாடு பாக்கெட்", - "app_type" => "வகை", - "app_type_url" => "இணைப்பு", - "app_type_code" => "JS நீட்டிப்பு", - "app_display" => "வெளிப்புறத்", - "app_display_border" => "எல்லைகளற்ற (அதாவது தீவு தேர்வு)", - "app_display_size" => "அளவை (சரிசெய்தல் பாருங்கள்)", - "app_size" => "அளவு", - "app_url" => "இணைப்பு முகவரி", - "app_code" => "JS குறியீடு", - "edit" => "திருத்து", - "edit_can_not" => "ஒரு உரை கோப்பு", - "edit_too_big" => "கோப்பு மிகப் பெரியதாக உள்ளது, அது 40M விட அதிகமாக இருக்க முடியாது", - "open_default" => "இயல்புநிலை திறந்த", - "open_ie" => "உலாவி திறக்க", - "refresh" => "புதுப்பி", - "refresh_all" => "ஒரு புதுப்பிப்பு கட்டாயப்படுத்த", - "newfile" => "புதிய கோப்பு", - "newfile_save_as" => "சேமி", - "newfolder" => "புதிய அடைவு", - "newothers" => "புதிய பிற", - "path_loading" => "ஏற்றுகிறது ...", - "go" => "நேர்முக!", - "go_up" => "மேல் அடுக்கு", - "history_next" => "முன்னோக்கி", - "history_back" => "உள்வாங்குதல்", - "address_in_edit" => "தொகு முறையில் உள்ளிட கிளிக் செய்க", - "double_click_rename" => "மறுபெயரிடுகிறது இரட்டை கிளிக் செய்யவும்", - "double_click_open" => "திறக்க இருமுறை கிளிக்", - "path_null" => "கோப்புறை காலியாக உள்ளது!", - "file_size_title" => "ஐகான் அளவு", - "file_size_small_super" => "தீவிர சிறிய", - "file_size_small" => "சிறிய சின்னங்கள்", - "file_size_default" => "சின்னங்கள்", - "file_size_big" => "பெரிய குறும்படங்கள்", - "file_size_big_super" => "பெரிய ஐகான்", - "upload" => "பதிவேற்று", - "upload_ready" => "பதிவேற்ற காத்திருக்கிறது", - "upload_success" => "பதிவேற்றம் வெற்றி", - "upload_path_current" => "தற்போதைய அடைவு ஸ்விட்ச்", - "upload_select" => "கோப்பு தேர்வு", - "upload_max_size" => "அதிகபட்ச அனுமதிக்கப்பட்ட", - "upload_size_info" => "நீங்கள் இன்னும் கட்டமைக்க விரும்பினால், php.ini அனுமதிக்கப்பட்ட அதிகபட்ச பதிவேற்ற மாற்றவும். நீங்கள் தேர்வு செய்யும் போது இந்த கட்டமைப்பு விட பெரிய ஒரு கோப்பு தானாக வெளியே வடிகட்ட வேண்டும்.", - "upload_error" => "மேலேற்றப்படவில்லை", - "upload_error_http" => "நெட்வொர்க் அல்லது ஃபயர்வால் பிழைகள்", - "upload_muti" => "பல கோப்பு பதிவேற்ற", - "upload_drag" => "இழுத்தல் மற்றும் பதிவேற்ற", - "upload_drag_tips" => "பதிவேற்ற தளர்த்தப்பட்டது!", - "path_not_allow" => "கோப்பு பெயர் அனுமதி இல்லை", - "download" => "பதிவிறக்க", - "downloading" => "ஏற்றுதல் ...", - "download_address" => "பதிவிறக்க", - "download_ready" => "பதிவிறக்கம் செய்யப்படும்", - "download_success" => "வெற்றி பதிவிறக்க!", - "download_error" => "பதிவிறக்கம் தோல்வியுற்றது!", - "download_error_create" => "எழுதுவதில் பிழை!", - "download_error_exists" => "இணைப்பு தோல்வி தாக்கல் செய்ய!", - "upload_error_null" => "கோப்பு இல்லை!", - "upload_error_big" => "கோப்பின் அளவு சர்வர் வரம்பு", - "upload_error_move" => "கோப்பு நகர்த்த தோல்வி!", - "upload_error_exists" => "கோப்பு ஏற்கனவே உள்ளது", - "upload_local" => "உள்ளூர் பதிவேற்றம்", - "download_from_server" => "ரிமோட் பதிவிறக்க", - "save_path" => "பாதை சேமிக்க", - "upload_select_muti" => "தேர்ந்தெடுக்கும் கோப்பு பதிவேற்ற ஒரு பன்முக", - "search" => "தேடல்", - "searching" => "தேடுகிறது ...", - "search_result" => "தேடல் முடிவுகள்", - "seach_result_too_more" => "பல தேடல் முடிவுகள், இது ஒரு அடைவு அல்லது வார்த்தைகள் பரிந்துரைக்கப்படுகிறது", - "search_null" => "முடிவுகள் எதுவும் இல்லை!", - "search_uplow" => "உணர்திறன்", - "search_content" => "தேடல் கோப்பு உள்ளடக்கங்கள்", - "search_info" => "தயவு செய்து ஒரு தேடல் கால உள்ளிட்டு மற்றும் தேடல் பாதைகள்!", - "search_ext_tips" => "மூலம் | பிரிக்கப்பட்ட உதாரணமாக PHP ஐந்து | JS | CSS
                    இயல்புநிலை உரை கோப்பு தேடல் நிரப்ப வேண்டாம்", - "file_type" => "கோப்பு வகை", - "goto" => "தாவிச்", - "server_dwonload_desc" => "டாஸ்க் பதிவிறக்கம் பட்டியலில் சேர்க்கப்பட்டது", - "parent_permission" => "பெற்றோர் அடைவு அனுமதிகள்", - "root_path" => "என் ஆவணங்கள்", - "lib" => "களஞ்சியத்தில்", - "fav" => "புக்மார்க்", - "desktop" => "டெஸ்க்டாப்", - "browser" => "உலாவி", - "my_computer" => "என் கணினி", - "recycle" => "குப்பைக்கு", - "my_document" => "என் ஆவணங்கள்", - "my_picture" => "எனது புகைப்படங்கள்", - "my_music" => "என் இசை", - "my_movie" => "என் வீடியோக்கள்", - "my_download" => "என் இறக்கம்", - "ui_desktop" => "டெஸ்க்டாப்", - "ui_explorer" => "கோப்பு மேலாண்மை", - "ui_editor" => "ஆசிரியர்", - "adminer" => "adminer", - "ui_project_home" => "திட்ட முகப்பு", - "ui_login" => "உள்நுழைய", - "ui_logout" => "வெள்ளையனே வெளியேறு", - "setting" => "கணினி அமைப்புகள்", - "setting_title" => "விருப்பங்கள்", - "setting_user" => "தனிநபர் மையம்", - "setting_password" => "கடவுச்சொல் மாற்றம்", - "setting_password_old" => "பழைய கடவுச்சொல்", - "setting_password_new" => "திருத்தப்பட்ட", - "setting_language" => "மொழி அமைப்புகள்", - "setting_member" => "பயனர் மேலாண்மை", - "setting_group" => "பயனர் குழு மேலாண்மை", - "setting_group_add" => "பயனர் குழு சேர்", - "setting_group_edit" => "திருத்து பயனர் குழுக்கள்", - "setting_theme" => "தீம் அமைப்புகள்", - "setting_wall" => "வால்பேப்பர் அமைப்பு", - "setting_wall_desktop" => "டெஸ்க்டாப் வால்பேப்பர்", - "setting_wall_desktop_list" => "டெஸ்க்டாப் வால்பேப்பர் மேலாண்மை", - "setting_wall_login_list" => "வால்பேப்பர் மேலாண்மை உள்நுழைக", - "setting_wall_login_tips" => "உதவிக்குறிப்பு: ஒன்றுக்கு மேற்பட்ட துண்டு இருக்கும் போது, ​​உள்நுழைவு இடைமுக பின்னணி தோராயமாக சுழற்றுகிறது", - "setting_wall_diy" => "விருப்ப வால்பேப்பர்:", - "setting_wall_info" => "படம் URL முகவரியை, உள்ளூர் படங்களை படத்தை திறந்து உலாவி பெற சரியான இருக்க முடியும்", - "setting_fav" => "புக்மார்க் மேனேஜர்", - "setting_help" => "உதவியைப் பயன்படுத்தி", - "setting_about" => "படைப்புகள் பற்றி", - "setting_success" => "மாற்றம் விளைவு எடுத்துக் கொண்டார்!", - "can_not_repeat" => "மீண்டும் அனுமதி", - "absolute_path" => "முழுமையான முகவரி", - "group" => "பயனர் குழுக்கள்", - "data_not_full" => "தரவு முழுமையற்றதாக சமர்ப்பிக்க!", - "default_user_can_not_do" => "இயல்புநிலை பயனர் செயல்பட முடியாது", - "default_group_can_not_do" => "இயல்புநிலை பயனர் குழுக்கள் செயல்பட முடியாது", - "username_can_not_null" => "பயனர்பெயர் வெறுமையாக இருக்க முடியாது!", - "groupname_can_not_null" => "பயனர் குழு பெயர் காலியாக இருக்க முடியும்!", - "groupdesc_can_not_null" => "பயனர் குழு விளக்கம் காலியாக இருக்க முடியாது!", - "group_move_user_error" => "பயனர் குழு பயனர்கள் நகர்வு தோல்வி", - "group_already_remove" => "பயனர் குழு நீக்கப்பட்டது", - "group_not_exists" => "இந்த பயனர் குழு இல்லை", - "member_add" => "பயனர் சேர்க்க", - "password_null_not_update" => "அவர்கள் கடவுச்சொல்லை பூர்த்தி செய்யவில்லை மாற்ற முடியாது என்றார்", - "if_save_file_tips" => "சில கோப்புகள் சேமிக்கப்படவில்லை. சாளரத்தை மூட விரும்புகிறீர்களா?", - "if_save_file" => "கோப்பு சேமிக்கப்படவில்லை என்பதையும், நீங்கள் சேமிக்க வேண்டும்?", - "if_remove" => "நீக்கத்தை உறுதி", - "member_remove_tips" => "நீங்கள் பயனர் அடைவு அழிக்கப்படும் நீக்க பிறகு", - "group_remove_tips" => "நீங்கள் நீக்க பிறகு செய்த பயனர் குழு உள்நுழைய முடியாது
                    (வேண்டும் மீண்டும் அமைக்க பயனர் குழு)", - "group_name" => "பயனர் குழு பெயர்", - "group_name_tips" => "பரிந்துரை ஆங்கில பெயர், மீண்டும் முடியாது", - "group_desc" => "காட்சி பெயர்", - "group_desc_tips" => "குழு பெயர் விளக்கம்", - "group_role_ext" => "நீட்டிப்பு கட்டுப்பாடுகள்", - "group_role_ext_tips" => "பல உடன் | பிரிக்கப்பட்ட", - "group_role_file" => "கோப்பு மேலாண்மை", - "group_role_upload" => "பதிவேற்ற அனுமதி", - "group_role_user" => "பயனர் தரவு", - "group_role_group" => "பயனர் குழு மேலாண்மை", - "group_role_member" => "பயனர் மேலாண்மை", - "group_role_mkfile" => "புதிய கோப்பு", - "group_role_mkdir" => "புதிய அடைவு", - "group_role_pathrname" => "மறுபெயரிடு", - "group_role_pathdelete" => "கோப்பு நீக்கம்", - "group_role_pathinfo" => "கோப்பு தன்மைகள்", - "group_role_pathmove" => "மூவ் (நகல் / வெட்டு / ஒட்டவும் / இழுப்பு இயக்கம்)", - "group_role_zip" => "சுருக்க", - "group_role_unzip" => "விரிவாக்கு", - "group_role_search" => "தேடல்", - "group_role_filesave" => "திருத்த கோப்பு சேமிக்க", - "group_role_can_upload" => "ஏற்றி பதிவிறக்கத்தை", - "group_role_download" => "ரிமோட் பதிவிறக்க", - "group_role_passowrd" => "கடவுச்சொல் மாற்றம்", - "group_role_config" => "கட்டமைப்பு தரவு", - "group_role_fav" => "புக்மார்க் செயல்பாடுகளும் (சேர்க்க / திருத்த / நீக்க)", - "action_list" => "பட்டியல் காட்சி", - "action_add" => "சேர்", - "action_edit" => "திருத்து", - "action_del" => "நீக்கு", - "group_role_ext_warning" => "
                    மறுபெயரிடு (குறிப்பிடப்பட்ட நீட்டிப்பை என பெயர் மாற்றம்),
                    காப்பாற்ற தொகு, தொலை பதிவிறக்க, சாறு இல்லை போன்ற கோப்புகளை, அனுமதிக்க பதிவேற்றம்", - "group_tips" => "
                  43. 1. பயனர் குழு பெயர் நகல் செய்ய முடியாது, குழு பெயர் மாற்றம் செய்யப்பட்ட பிறகு, அது மறுசீரமைக்கப்பட்ட பயனருக்கு சொந்தமானது மற்றும் தானாக தொடர்புடையது.
                  44. 2. நீட்டிப்புகள் கணினி பாதுகாப்பிற்கான உறவை வரையறுக்கின்றன, தயவுசெய்து எச்சரிக்கையாக இருங்கள் (வலை அடைவில் ஒரு புதிய PHP உருவாக்கினால், இந்த பயனருக்கு நிரல் அனுமதிகள் மாறும் என்பது கிட்டத்தட்ட முடியாதது)
                  45. 3. வீட்டு உரிமைகள், உரிமைகள் குழு மேலாண்மை, உரிமைகள் மற்றும் உரிமைகளை சேர்ப்பது, நீக்குதல், திருத்துதல் ஆகியவை பிணைக்கப்பட்டுள்ளன, திட்டங்கள் தானாக தொடர்புடையவையாகும்
                  46. 4. அனுமதி குழுவை அனுமதித்தபின் அனுமதி பெற்ற குழுவை அனுமதித்தபின், அடுத்தடுத்த அனுமதியை பெறமுடியாது (இந்த அனுமதி உயர்ந்த அனுமதியுடன் சமமானதாகும்).
                  47. ", - "not_null" => "தேவையான புலங்கள் காலியாக இருக்க முடியாது!", - "picture_can_not_null" => "புகைப்படங்கள் காலியாக இருக்க முடியாது!", - "rname_success" => "வெற்றி மறுபெயர்!", - "please_inpute_search_words" => "தேடுவதற்கு ஒரு சரம் நுழைய", - "remove_success" => "வெற்றிகரமாக நீக்கப்பட்டது!", - "remove_fali" => "நீக்கு தோல்வி!", - "clipboard_null" => "கிளிப்போர்டு காலியாக உள்ளது!", - "create_success" => "புதிய வெற்றி!", - "create_error" => "புதிய முடியவில்லை, அடைவு அனுமதிகள்!", - "copy_success" => "[நகல்] - பிடிப்புப் வெற்றி உள்ளடக்கிய!", - "cute_success" => "[வெட்டி] - பிடிப்புப் வெற்றி உள்ளடக்கிய!", - "clipboard_state" => "பிடிப்புபலகை நிலை:", - "no_permission_write_all" => "கோப்பு அல்லது அடைவு இல்லை", - "no_permission_write_file" => "கோப்பு எழுத அனுமதி இல்லை", - "no_permission_read_all" => "கோப்பு அல்லது அடைவு இல்லை வாசிப்பு அனுமதி உள்ளது", - "copy_not_exists" => "மூல இல்லை", - "current_has_parent" => "இலக்கு மூல அடைவு ஒரு துணைஅடைவில் உள்ளது!", - "past_success" => "பேஸ்ட் அறுவை சிகிச்சை முடிந்த", - "cute_past_success" => "வெட்டு அறுவை சிகிச்சை முடிந்த(மூல கோப்பு காலியாக நீக்கப்பட்டது கிளிப்போர்ட்)", - "zip_success" => "சுருக்க நிறைவு", - "not_zip" => "காப்பகம்", - "zip_null" => "கோப்பு அல்லது அடைவு தேர்ந்தெடுக்கப்படவில்லை", - "unzip_success" => "முழுமையான விரிவாக்கு", - "gotoline" => "வரி தாவிச்", - "path_is_current" => "பாதை மற்றும் தற்போதைய பாதை அதே திறக்க!", - "path_exists" => "பெயர் ஏற்கனவே உள்ளது!", - "undo" => "தளர்த்தல்", - "redo" => "எதிர்ப்பு திரும்பப்பெறுதல்", - "preview" => "முன்னோட்டம்", - "wordwrap" => "மடக்கு", - "show_gutter" => "வரி எண்கள் காட்டு", - "char_all_display" => "கண்ணுக்கு தெரியாத எழுத்துக்கள் காட்டு", - "auto_complete" => "தானாகவே கேட்கும்", - "auto_save" => "தானாக சேமிக்கவும்", - "function_list" => "செயல்பாடு பட்டியல்", - "code_theme" => "குறியீட்டு பாணி", - "font_size" => "எழுத்துரு அளவு", - "confirm" => "இதை நீங்கள் நிச்சயமாக செய்ய விரும்புகிறீர்களா?", - "button_ok" => "நிர்ணயம்", - "button_submit" => "சமர்ப்பிக்கவும்", - "button_set" => "அமைக்கவும்", - "button_cancel" => "ரத்தான", - "button_edit" => "திருத்து", - "button_save" => "சேமி", - "button_apply" => "விண்ணப்பிக்கவும்", - "button_save_all" => "அனைத்து சேமி", - "button_not_save" => "காப்பாற்ற வேண்டாம்", - "button_add" => "சேர்", - "button_back_add" => "மீண்டும் சேர்க்க", - "button_del" => "நீக்கு", - "button_save_edit" => "மாற்றங்களை சேமிக்கவும்", - "button_save_submit" => "சேமிக்க சமர்ப்பிக்கவும்", - "button_more" => "மேலும்", - "button_select_all" => "அனைத்து / இயக்கு தேர்ந்தெடுக்கவும்", - "charset_AUTO" => "தானியங்கி அடையாளம்", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "அரபு", - "charset_ISO_8859_6" => "அரபு", - "charset_ISO_8859_10" => "நோர்டிக் மொழிகளை", - "charset_CP1257" => "பால்டிக் மொழிகள்", - "charset_ISO_8859_13" => "பால்டிக் மொழிகள்", - "charset_ISO_8859_4" => "பால்டிக் மொழிகள்", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "ஜியோர்ஜியன்", - "charset_PT154" => "கசாக்", - "charset_CP949" => "கொரியன்", - "charset_EUC_KR" => "கொரியன்", - "charset_GB18030" => "எளிய சீன", - "charset_GBK" => "எளிய சீன", - "charset_ISO_8859_14" => "செல்டிக்", - "charset_CP1133" => "லாவோ", - "charset_ISO_8859_16" => "ரோமேனியன்", - "charset_ISO_8859_3" => "தெற்கு யூரோப்பியன்", - "charset_EUC_JP" => "ஜப்பனீஸ்", - "charset_ISO_2022_JP" => "ஜப்பனீஸ்", - "charset_SHIFT_JIS" => "ஜப்பனீஸ்", - "charset_KOI8_T" => "தாஜிக் மொழி", - "charset_ISO_8859_11" => "தாய்", - "charset_TIS_620" => "தாய்", - "charset_CP1254" => "துருக்கிய", - "charset_CP1251" => "சிரிலிக்", - "charset_ISO_8859_5" => "சிரிலிக்", - "charset_KOI8_R" => "சிரிலிக்", - "charset_KOI8_U" => "சிரிலிக்", - "charset_CP1252" => "மேற்கு ஐரோப்பிய மொழிகள்", - "charset_ISO_8859_1" => "மேற்கு ஐரோப்பிய மொழிகள்", - "charset_ISO_8859_15" => "மேற்கு ஐரோப்பிய மொழிகள்", - "charset_Macintosh" => "மேற்கு ஐரோப்பிய மொழிகள்", - "charset_CP1255" => "ஹீப்ரு", - "charset_ISO_8859_8" => "ஹீப்ரு", - "charset_CP1253" => "கிரேக்கம்", - "charset_ISO_8859_7" => "கிரேக்கம்", - "charset_ARMSCII_8" => "ஆர்மேனியன்", - "charset_CP1258" => "வியட்நாமிஸ்", - "charset_VISCII" => "வியட்நாமிஸ்", - "charset_CP1250" => "மத்திய ஐரோப்பிய மொழிகள்", - "charset_ISO_8859_2" => "மத்திய ஐரோப்பிய மொழிகள்", - "charset_default_set" => "கோப்பு என்கோடிங்", - "charset_convert_save" => "போன்ற குறியிடப்பட்ட கோப்பு சேமிக்க", - "PluginCenter" => "ப்ளக் மையம்", - "PluginBuy" => "வாங்குவதற்கான அங்கீகாரம்", - "PluginInstalled" => "நிறுவப்பட்டுள்ளது", - "PluginUpdate" => "புதுப்பிக்கப்பட்டது", - "PluginListNull" => "உள்ளடக்கம் எதுவுமில்லை!", - "PluginType" => "வகைப்பாடு", - "PluginTypeAll" => "முழுமையான", - "PluginTypeFile" => "மேம்படுத்தப்பட்ட கோப்பு", - "PluginTypeSafe" => "பாதுகாப்பு கருவிகள்", - "PluginTypeTools" => "பயன்பாட்டு", - "PluginTypeMedia" => "மல்டிமீடியா", - "PluginTypeOthers" => "மற்ற", - "PluginInstall" => "பிளக் நிறுவ", - "PluginEnable" => "செருகுநிரல்களை இயக்கு", - "PluginDisable" => "முடக்கு", - "PluginRemove" => "பிளக் நிறுவல்நீக்கி", - "PluginConfig" => "சொருகி கட்டமைக்க", - "PluginStatus" => "மாநில", - "PluginStatusEnabled" => "இயக்கப்பட்டது", - "PluginStatusDisabled" => "இயக்கப்படவில்லை", - "PluginStatusNotInstall" => "நிறுவப்படவில்லை", - "PluginInstalling" => "நிறுவப்படுகிறது ...", - "PluginHasUpdate" => "மேம்படுத்தல்கள்", - "PluginUpdateStart" => "செருகுநிரல் புதுப்பிக்கப்பட்டது", - "PluginNeedConfig" => "ஆரம்ப கட்டமைப்பு செயல்படுத்த வேண்டிய அவசியம்", - "PluginConfigNotNull" => "தேவையான புலங்கள் காலியாக இருக்கக்கூடாது!", - "PluginOpen" => "திறந்த", - "PluginAuther" => "ஆசிரியர்", - "PluginVersion" => "பதிப்பு", - "PluginDownloadNumber" => "நிறுவுகிறது", - "PluginBack" => "திரும்ப", - "PluginReadme" => "விளக்கம்", - "PluginResetConfig" => "இயல்புநிலை அமைப்புகளை மீட்டமைக்கவும்", - "PluginInstallSelf" => "கையேடு நிறுவல்", - "Plugin.config.auth" => "அனுமதிகள்", - "Plugin.config.authDesc" => "கிடைக்க அமைப்புகளை அனைத்தும், அல்லது குறிப்பிட பயனர்கள், பயனர் குழுக்கள், உரிமைகள் குழுக்கள் பயன்படுத்த முடியும்", - "Plugin.config.authOpen" => "திறந்த அணுகல்", - "Plugin.config.authOpenDesc" => "பார்க்க வேண்டிய அவசியம் இல்லை, வெளிப்புற இடைமுக அழைப்புக்கு பயன்படுத்தலாம்", - "Plugin.config.authAll" => "ஹோல்டர்", - "Plugin.config.authUser" => "பயனர்", - "Plugin.config.authGroup" => "நியமிக்கப்பட்ட துறை", - "Plugin.config.authRole" => "உரிமைகள் குழு", - "Plugin.Config.openWith" => "திறந்த பாணி", - "Plugin.Config.openWithDilog" => "உள்நாட்டு உரையாடல்", - "Plugin.Config.openWithWindow" => "புதிய பக்கத்தைத் திறக்கும்", - "Plugin.Config.fileSort" => "நீட்டிப்பு சங்கம் முன்னுரிமை", - "Plugin.Config.fileSortDesc" => "பெரிய அதிக முன்னுரிமை திறக்க நீட்டிப்பு", - "Plugin.Config.fileExt" => "ஆதரிக்கப்படும் கோப்பு வடிவங்கள்", - "Plugin.Config.fileExtDesc" => "கூடுதல் இணைப்பாக தொடர்புடைய நீட்டிப்பு", - "Plugin.tab.basic" => "அடிப்படை அமைப்புகள்", - "Plugin.tab.auth" => "அனுமதிகள்", - "Plugin.tab.others" => "பிற அமைப்புகள்", - "Plugin.default.aceEditor" => "ஏஸ் ஆசிரியர்", - "Plugin.default.htmlView" => "வலை பக்கம் முன்னோட்டம்", - "Plugin.default.picasa" => "பிகாசா பட உலாவல்", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => ", jPlayer வீரர்", - "Plugin.auth.viewList" => "செருகுநிரல் பட்டியல்", - "Plugin.auth.setting" => "செருகுநிரல் அமைப்புகள்", - "Plugin.auth.status" => "முடக்கவும்", - "Plugin.auth.install" => "நிறுவ / நீக்குதல்", - "Explorer.UI.openWith" => "திறந்த தேர்ந்தெடுக்கவும்", - "Explorer.UI.openWithText" => "எதாவது திறக்க", - "Explorer.UI.appSetDefault" => "இயல்புநிலை திறந்த அமை", - "Explorer.UI.appAwaysOpen" => "எப்போதும் இந்த கோப்பு திறந்துவைத்துக்கொள்ள தேர்ந்தெடுக்கப்பட்டது திட்டம் பயன்படுத்த", - "Explorer.UI.selectAppDesc" => "நீங்கள் இந்த கோப்பை திறக்க வேண்டும் நிரல் தேர்வு", - "Explorer.UI.selectAppWarning" => "விண்ணப்ப தேர்ந்தெடுக்கவும்!", - "Explorer.UI.appTypeSupport" => "ஆதரிக்கப்படும்", - "Explorer.UI.appTypeAll" => "அனைத்து பயன்பாடுகளும்", - "kodApp.oexe.edit" => "ஒளி பயன்பாடு திருத்த", - "kodApp.oexe.open" => "ஒளியின் பயன்பாட்டை திறக்கவா" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/th/about.html b/plugin/document/kod/config/i18n/th/about.html deleted file mode 100644 index eb2a0b3f3..000000000 --- a/plugin/document/kod/config/i18n/th/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer มี อะไร?
                    -

                    KODExplorer เป็นแหล่งเปิดการจัดการเอกสารออนไลน์บนเว็บแก้ไขรหัส มันมีชนิดของอินเตอร์เฟซผู้ใช้ Windows Classic ชุดของการจัดการเอกสารออนไลน์ตัวอย่างไฟล์, แก้ไข, อัพโหลดดาวน์โหลดเล่นเพลงออนไลน์เครื่องรูด ช่วยให้คุณประสบความสำเร็จในการพัฒนาเว็บโดยตรงในเบราว์เซอร์ตัวอย่างรหัสแฟ้มแหล่งที่มาและปรับใช้เจ้าของเว็บไซต์และการดำเนินงานในท้องถิ่นเป็นเรื่องง่ายรวดเร็วและประสบการณ์ที่ปลอดภัย

                    -

                    - การออกแบบ -

                    -

                    ประเพณีดั้งเดิมของการแสวงหานวัตกรรมเพื่อให้ผู้ใช้สะดวก ปลอดภัยและง่ายต่อการใช้ระบบการจัดการคลาวด์ออนไลน์

                    -

                    เมื่อใดก็ตามที่ (เมื่อ) ที่ (ที่) มีเว็บเมื่อใดก็ตามที่คุณต้องการ (ต้องการ) มันเป็นเครื่องมือในการจัดการของคุณ (4W นโยบาย)

                    -

                    - ผู้ใช้ที่มุ่งเน้น -

                    -

                    ปัจจุบันระบบการจัดการ KODExplorer ส่วนใหญ่อยู่ในกลุ่มส่วนบุคคลโฮสติ้งขนาดเล็ก การจัดการทรัพยากรระบบคลาวด์องค์กรการจัดการดิสก์เครือข่ายการจัดการของเว็บไซต์ขนาดเล็กและขนาดกลาง Web Developer & โท (ทหารผ่านศึก): ตกแต่งออนไลน์, การสำรองข้อมูลบีบอัดการปรับใช้ในการดำเนินงานอินเตอร์เฟซหน้าต่างคลาสสิกและง่ายต่อการเริ่มต้นและกำจัดของโฮสต์ SSH คำสั่ง FTP การดำเนินงานที่น่าเบื่อที่ซับซ้อน

                    -

                    ส่วนบุคคลแบบคลาวด์ส่วนตัว (มือใหม่): ดิสก์ทรัพยากรเครือข่ายการบริหารจัดการการดำเนินการอินเตอร์เฟซ Windows Classic เดียวกันคุณสามารถวางไดรฟ์เครือข่ายเพลงดูไฟล์หน้าจอ, อัพโหลดและดาวน์โหลดได้ง่ายและรวดเร็ว

                    -
                    - -
                    -
                    คุณสมบัติ
                    -

                    การจัดการเอกสารที่ครอบคลุมและมีประสิทธิภาพแก้ไขไฟล์ออนไลน์

                    -

                    ทุกท่านคุณสามารถจัดการไฟล์ของคุณและความบันเทิงออนไลน์รหัสเขียนออนไลน์! เช่นเดียวกับที่เหมาะสำหรับใช้เป็นระบบปฏิบัติการ

                    -

                    กว้างขวางการดำเนินงานที่มีประสบการณ์ในท้องถิ่นปลูกขวาลากกล่องเลือกทางลัดการค้นหาไฟล์ (เนื้อหาการค้นหา) ......

                    -

                    เลือกกล่องลากเคลื่อนไหวลากและวางการอัปโหลดบรรณาธิการออนไลน์, เครื่องเล่นวิดีโอขยาย ประสิทธิภาพการทำงานเต็มรูปแบบการรับประกันอาแจ็กซ์และประสบการณ์!

                    -

                    ฟังก์ชั่นการเชื่อมต่อแต่ละที่ไร้รอยต่อตรงในรูปแบบโต้ตอบฟังก์ชั่นการจัดการงานหลาย

                    -

                    Editor สนับสนุนเอกสารหลายสนับสนุน ZendCoding HTML, CSS, js สูงประสิทธิภาพการเข้ารหัส!

                    -

                    สนับสนุนจีนที่สมบูรณ์แบบที่อ่านไม่ออกแก้สถานการณ์ต่างๆ

                    -
                    - -
                    -
                    มาเปิดการยอมรับเทคโนโลยี
                    -

                    1.Jquery:jpuery (ปลั๊กอิน: Hotkeys.ztree.contentmenu) .js กรอบการพัฒนากระแสหลัก การดำเนินงานของการดำเนินการพระ BOM การดำเนินงาน CSS และแพคเกจอาแจ็กซ์

                    -

                    2.ArtDialog:การออกแบบที่สวยงามเข้ากันได้ของเบราว์เซอร์ที่แข็งแกร่ง วิดเจ็ตโต้ตอบ ดังนั้น pop-up จับเหตุการณ์และการส่งข้อมูลจะได้รับการจัดการแบบครบวงจรที่ดีกว่า

                    -

                    3.Ztree:ควบคุมต้นไม้รายการ scalability เป็นอย่างมาก Widget ต้นไม้การจัดการข้อมูลที่แข็งแกร่ง

                    -

                    4.codemirror:บรรณาธิการรหัส JS ปลั๊กอิน, สนับสนุนความหลากหลายของการเขียนโปรแกรมภาษาสำหรับไฮไลต์

                    -

                    5.zendcoding:โค้ดสนับสนุน HTML อย่างรวดเร็วเขียนปลั๊กอิน ช่วยลดความยุ่งยากความหมายของรหัสที่เป็นลายลักษณ์อักษร รวบรวมง่าย

                    -

                    6.less:ที่มีประสิทธิภาพ, การพัฒนารูปแบบ CSS ทำงานเพื่อปรับปรุงปลายด้านหน้า CSS สไตล์ชีตสามารถนำมาใช้ . รวบรวมง่าย

                    -

                    7.SWFUpload:อัปโหลดไฟล์แฟลช

                    -

                    8 .CMP4:ผู้เล่นแฟลชที่ดีมากปลั๊กอินไฟล์มีเดียการสนับสนุนสำหรับการสตรีมมิ่งสื่อเพลงฮิตเครื่องมือการเล่นวิดีโอ การสนับสนุนสำหรับผิว, การตั้งค่าที่กำหนดสูง รายการแบบไดนามิก XML โหลด MMS สตรีมมิ่งสื่อ RSTP มาเปิดใบอนุญาตการสนับสนุนการเล่นสื่อ

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/th/edit.html b/plugin/document/kod/config/i18n/th/edit.html deleted file mode 100644 index 3d16f5330..000000000 --- a/plugin/document/kod/config/i18n/th/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    การทำงานมากมาย

                    -

                    รหัสแจ้งให้โดยอัตโนมัติ

                    -

                    มีหลายรูปแบบ: เลือกรูปแบบการเขียนโปรแกรมที่คุณชื่นชอบ

                    -

                    อักษรที่กำหนดเอง: สำหรับการใช้งานในที่เกิดเหตุ

                    -

                    แก้ไขเคอร์เซอร์หลายบล็อกแก้ไขประสบการณ์การเขียนโปรแกรมออนไลน์เปรียบได้กับประเสริฐ

                    -

                    บล็อกพับขยาย; ห่อ

                    -

                    การสนับสนุนสำหรับหลายแท็บลากลำดับสลับ;

                    -

                    การรักษาเอกสารหลายค้นหาและแทนที่ประวัติ;

                    -

                    อัตโนมัติสมบูรณ์ [] {} () '' ''

                    -

                    ตัวอย่างในเวลาจริงออนไลน์ที่ช่วยให้คุณตกอยู่ในความรักกับการเขียนโปรแกรมออนไลน์!

                    -

                    zendcodeing สนับสนุนเขียนโค้ดแปดสิบ

                    -

                    คุณสมบัติอื่น ๆ ที่รอคอยสำหรับการค้นพบของคุณ ......

                    -
                    -
                    -

                    150 ชนิดของรหัสการเน้น

                    -

                    เคล็ดลับ: HTML, JavaScript, CSS, น้อยเขื่อง SCSS

                    -

                    การพัฒนาเว็บ: PHP, Perl, Python, Ruby, Elang ไป ...

                    -

                    ภาษาพื้นเมือง: Java, C, C ++, C #, ActionScript, VBScript ...

                    -

                    อื่น ๆ : markdown, หอย, SQL, Lua, XML, YAML ...

                    -
                    -
                    -
                    -
                    -

                    การดำเนินการทางลัด

                    -
                     ทางลัดที่ใช้กันทั่วไป: 
                    - Ctrl + S เพื่อบันทึก 
                    - Ctrl + เลือกทั้งหมด Ctrl + X ตัด 
                    - CTRL + C Ctrl + V วางสำเนา 
                    - Ctrl + Z เลิกทำเลิกทำต่อต้าน Ctrl + Y 
                    - Ctrl + F เพื่อหาสิ่งทดแทน Ctrl + F + F 
                    - Win + Alt + 0 ยุบทั้งหมด Win + Alt + Shift + 0 ขยายทั้งหมด 
                    - ESC [ค้นหาทางออกยกเลิกโดยอัตโนมัติแจ้งให้ ... ] 
                    - Ctrl-Shift-s ดูตัวอย่าง 
                    - แสดง Ctrl-Shift-E & ปิดฟังก์ชั่น 
                    -
                    -
                     เลือก: 
                    - ปะรำเมาส์ - ลาก 
                    - SHIFT + บ้าน / ที่ปลาย / ขึ้น / ซ้าย / ลง / ขวา 
                    - SHIFT + PageUp / PageDown พลิกขึ้นและลงเพื่อเลือก 
                    - Ctrl + Shift + Home / ท้ายของเคอร์เซอร์ปัจจุบันไปยังจุดเริ่มต้นและจุดสิ้นสุด 
                    - ALT + เมาส์ลากเลือกบล็อก 
                    - Ctrl + Alt + G ชุดเลือกและป้อนบรรณาธิการหลายแท็บปัจจุบัน 
                    -
                    -
                     เคอร์เซอร์: 
                    - ที่บ้าน / ที่ปลาย / ขึ้น / ซ้าย / ลง / ขวา 
                    - Ctrl + Home / ท้ายเลื่อนเคอร์เซอร์ไปที่หัวเอกสาร / หาง 
                    - Ctrl + P ไปที่แท็กการจับคู่ 
                    - PageUp / PageDown เคอร์เซอร์ขึ้นและลง 
                    - ALT + เคอร์เซอร์ซ้าย / ขวาเพื่อเลื่อนไปยังด้านบนของบรรทัด 
                    - shift + เคอร์เซอร์ซ้าย / ขวาไปยังจุดสิ้นสุดของเส้นและ 
                    - Ctrl + L เพื่อข้ามไปยังแถวที่ระบุ 
                    - Ctrl + Alt + ขึ้น / ลง (ด้านล่าง) เพิ่มเคอร์เซอร์ 
                    -
                    -
                     แก้ไข: 
                    - Ctrl + / แสดงความคิดเห็นและ Ctrl uncomment + Alt + ธรรม 
                    - แท็บตารางการเปลี่ยนแปลงการจัดตำแหน่ง + โต๊ะก้าวหน้าโดยรวม 
                    - ลบลบลบ Ctrl สายทั้งหมด + D 
                    - Ctrl + ลบเพื่อลบแถวบนคำที่เหมาะสม 
                    - Ctrl / SHIFT + Backspace เพื่อลบคำทางด้านซ้าย 
                    - Alt + Shift + ขึ้น / ลงและเพิ่มสายการคัดลอก (ด้านล่าง) เครื่องบิน 
                    - Alt + Delete เพื่อลบเนื้อหาของขวาของเคอร์เซอร์ที่ 
                    - ALT + ขึ้น / ลงบนบรรทัดปัจจุบันและสาย (Exchange บรรทัดถัดไป) เดอะ 
                    - CTRL + SHIFT + D แถวคัดลอกและเพิ่มความต่อไปนี้ 
                    - Ctrl + ลบเพื่อลบขวาของคำว่า 
                    - CTRL + SHIFT + U แปลงเป็นตัวพิมพ์เล็ก 
                    - Ctrl + U ข้อความที่เลือกเป็นตัวพิมพ์ใหญ่ 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/th/help.html b/plugin/document/kod/config/i18n/th/help.html deleted file mode 100644 index 2abda238c..000000000 --- a/plugin/document/kod/config/i18n/th/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    การจัดการไฟล์
                    -

                    เลือกไฟล์: วิทยุปะรำเมาส์เลื่อนการเลือกตั้งได้รับการแต่งตั้ง Ctrl ที่สุ่มแป้นพิมพ์ขึ้นและลงที่บ้านตัวเลือกท้าย

                    -

                    ดำเนินการแฟ้ม: หลังจากเลือกไฟล์ที่คุณสามารถคัดลอก, ตัด, ลบดูคุณสมบัติของการบีบอัด, เปลี่ยนชื่อเปิดดูตัวอย่างและดำเนินการอื่น ๆ ......

                    -

                    อัปโหลดไฟล์: อัปโหลดไฟล์หลายชุด; อัปโหลดลาก HTML5 (ลากต่อเนื่องอัปโหลดหน้าต่างลากและวางการสนับสนุนสำหรับโฟลเดอร์)

                    -

                    ฟังก์ชั่นขวา: ขวาไฟล์โฟลเดอร์ที่ถูกต้องมากขึ้นทันทีหลังจากการดำเนินการเลือกตั้งสก์ท็อป, ขวา, ต้นไม้ไดเรกทอรีขวาขวาผูกพันเมนูทางลัด
                    - (เลือกทั้งหมด - คัดลอก - ตัด - วาง - ลบ - เปลี่ยนชื่อตั้ง ...... )

                    -

                    เบราว์เซอร์ไฟล์: โหมดรายการไอคอนโหมดดับเบิลคลิกเข้าไปในโฟลเดอร์ย่อย; การดำเนินงานในแถบที่อยู่; เปิดบันทึกบันทึกโฟลเดอร์ที่แตก (ข้างหน้าและถอยหลัง)

                    -

                    สนับสนุนลากและวาง: ตรวจสอบการลากตัดฟังก์ชั่นเพื่อให้บรรลุโฟลเดอร์ที่ระบุ

                    -

                    ปุ่มลัด: ลบลบ Ctrl + A เลือกทั้งหมด CTRL + C เพื่อคัดลอก + X ตัดการค้นหาไฟล์ (เนื้อหาการค้นหา) Ctrl

                    -
                    -
                    -
                    ไฟล์ภาพตัวอย่าง
                    -

                    ไฟล์ตัวอย่าง: ดูเนื้อหาของการแก้ไขไฟล์ข้อความและบันทึก; HTML ตัวอย่างไฟล์ SWF,

                    -

                    ดูตัวอย่างภาพ: การผลิตอัตโนมัติของภาพขนาดเล็ก, สไลด์โชว์ภาพ;

                    -

                    การเล่นเสียงเล่นเพลงออนไลน์และไฟล์วิดีโอสนับสนุน MP3, WMA, กลาง, AAC, WAV; MP4,

                    -

                    วิดีโอ: การเล่นวิดีโอออนไลน์, สนับสนุนรูปแบบ: FLV, F4V, 3GP

                    -

                    สำนักงาน: Office Online ดูตัวอย่างรูปแบบการสนับสนุน: docx, doc, PPT, pptx, XLS, XLSX

                    -
                    -
                    -
                    ทางลัด
                    -

                    Enter เปิด

                    -

                    Ctrl + เลือกทั้งหมด

                    -

                    CTRL + C เพื่อคัดลอกที่เลือก

                    -

                    Ctrl + V เพื่อวาง

                    -

                    Ctrl + X ตัด

                    -

                    Ctrl + F เพื่อค้นหาไดเรกทอรีปัจจุบัน

                    -

                    Alt + N แฟ้มใหม่

                    -

                    ALT + m โฟลเดอร์ใหม่

                    -

                    ลบลบที่เลือก

                    -

                    Backspace กลับ

                    -

                    Ctrl + Backspace ไปข้างหน้า

                    -

                    F2 เปลี่ยนชื่อที่เลือก (โฟลเดอร์)

                    -

                    ที่บ้าน / ที่ปลาย / ขึ้น / ลงซ้าย / ขวา / เพื่อเลือกไฟล์

                    -

                    AnyKey ตรวจสอบการกดตัวอักษรตัวแรกของไฟล์ตัวอักษรและโฟลเดอร์ที่เลือกวงจรอัตโนมัติ

                    -
                    diff --git a/plugin/document/kod/config/i18n/th/main.php b/plugin/document/kod/config/i18n/th/main.php deleted file mode 100644 index f9e2b6ff7..000000000 --- a/plugin/document/kod/config/i18n/th/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "กรุณาเลือกแฟ้ม ...", - "path_api_select_folder" => "กรุณาเลือกโฟลเดอร์ ...", - "path_api_select_image" => "โปรดเลือกภาพ ...", - "share_can_upload" => "อนุญาตให้อัปโหลด", - "move_error" => "ย้ายล้มเหลว", - "setting_basic" => "การตั้งค่าพื้นฐาน", - "setting_user_sound_open" => "เปิดเสียง", - "setting_user_animate_open" => "เปิดนิเมชั่น", - "recycle_open_if" => "เปิด Recycle Bin", - "recycle_open" => "เปิด", - "setting_user_recycle_desc" => "หลังจากการลบจะถูกลบโดยตรงการลบทางกายภาพ", - "setting_user_animate_desc" => "เปิดหน้าต่างและภาพเคลื่อนไหวอื่น ๆ", - "setting_user_sound_desc" => "เสียงการทำงาน", - "setting_user_imageThumb" => "ภาพขนาดย่อ", - "setting_user_imageThumb_desc" => "ประสบการณ์การท่องเว็บที่ดียิ่งขึ้นหลังจากเปิดตัว", - "setting_user_fileSelect" => "เปิดการตรวจสอบไฟล์ไอคอน", - "setting_user_fileSelect_desc" => "ตรวจสอบแฟ้มที่ด้านซ้ายของรายการคลิกขวาที่รายการทางลัดของเมนู", - "qrcode" => "URL รหัส QR", - "theme_mac" => "แม็คสีขาวที่เรียบง่าย", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "รถไฟฟ้าคลาสสิก", - "theme_metro_green" => "รถไฟฟ้าสีเขียวอ่อน", - "theme_metro_purple" => "เมโทรสง่างามสีม่วง", - "theme_metro_pink" => "เมโทรโรส", - "theme_metro_orange" => "รถไฟฟ้าสีส้มสดใส", - "theme_alpha_image" => "สดใส - การบิน", - "theme_alpha_image_sun" => "สดใส - ซันเซ็ท", - "theme_alpha_image_sky" => "ซิมโฟนี - บลูสกาย", - "theme_diy" => "กำหนดเอง", - "theme_diy_title" => "การตั้งค่ารูปแบบกำหนดเอง", - "theme_diy_background" => "พื้นหลัง", - "theme_diy_image" => "ภาพ", - "theme_diy_color_blur" => "สีไล่โทนสี", - "theme_diy_image_blur" => "ภาพเบลอ", - "theme_diy_image_url" => "ที่อยู่ภาพถ่าย", - "theme_diy_color_start" => "สีเริ่มต้น", - "theme_diy_color_end" => "สี End", - "theme_diy_color_radius" => "มุมไล่โทนสี", - "system_role_admin_set" => "ผู้บริหารมีสิทธิทั้งหมดโดยไม่มีการตั้งค่า!", - "login_error_user_not_use" => "ผู้ใช้ถูกปิดใช้งาน! กรุณาติดต่อผู้ดูแลระบบ", - "login_error_kod_version" => "ความขัดแย้งรุ่น", - "login_error_role" => "กลุ่มดูสิทธิ์ไม่อยู่กรุณาติดต่อผู้ดูแลระบบ", - "no_permission_group" => "คุณไม่ได้อยู่ในกลุ่มนี้!", - "no_permission_write" => "ไดเรกทอรีไม่ได้เขียนได้รับอนุญาต", - "user" => "ผู้ใช้งาน", - "save_as" => "บันทึกเป็น", - "check_update" => "ปรับปรุง", - "keyboard_type" => "โหมดแป้นพิมพ์", - "font_family" => "แบบอักษร", - "code_mode" => "เน้นไวยากรณ์", - "path_can_not_share" => "รองรับการแชร์เอกสารของคุณเอง!", - "path_can_not_action" => "ไดเรกทอรีนี้ไม่สนับสนุนการดำเนินการนี้!", - "wap_page_pc" => "เวอร์ชันพีซี", - "wap_page_phone" => "โทรศัพท์มือถือ", - "image_size" => "ขนาดภาพ", - "no_permission_action" => "คุณไม่ได้รับสิทธิ์นี้โปรดติดต่อผู้ดูแลระบบ!", - "path_is_root_tips" => "มันมีมาให้ไดเรกทอรีราก!", - "kod_group" => "องค์กร", - "my_kod_group" => "ฉันอยู่ในแผนก", - "space_tips_default" => "(GB) 0 ไม่มีขีด จำกัด", - "space_tips_full" => "โดยไม่ จำกัด", - "space_size" => "ช่องว่าง", - "space_size_use" => "การใช้พื้นที่", - "space_is_full" => "มีพื้นที่เหลือไม่เพียงพอโปรดติดต่อผู้ดูแลระบบ!", - "system_open_true_path" => "เปิดประสบความสำเร็จในการจัดการไฟล์!", - "group_role_error" => "ข้อผิดพลาดบทบาทสิทธิ์ (ไม่มีการตั้งค่าสิทธิ์)", - "group_role_error_admin" => "สิทธิ์ไม่เพียงพอ", - "markdown_content" => "สารบัญ", - "system_group" => "ผู้ใช้และแผนก", - "system_group_edit" => "การจัดการแผนก", - "system_group_role" => "ตัวตนของบทบาท", - "system_group_create" => "แผนกใหม่", - "system_group_name" => "ชื่อแผนก", - "system_group_father" => "แผนกสุภาพ", - "system_group_add" => "เพิ่มแผนกย่อย", - "system_group_remove" => "ลบแผนกออก", - "system_group_remove_tips" => "คุณแน่ใจหรือไม่ว่าต้องการลบแผนกนี้
                    หลังจากการลบส่วนของผู้ใช้จะถูกเอาออกภาคย่อยจะถูกย้ายไปยังกลุ่มราก", - "system_group_select" => "เลือกแผนก", - "system_group_select_result" => "สมาชิกจะอยู่ในภาคต่อไปนี้", - "system_role_admin_tips" => "หมายเหตุ: ผู้ดูแลระบบไม่ได้รับอนุญาตให้ควบคุม", - "system_member_action" => "การจัดการผู้ใช้", - "system_member_add" => "ผู้ใช้ใหม่", - "system_member_role" => "บทบาทที่ได้รับอนุญาต", - "system_member_role_select" => "เลือก", - "system_member_password_tips" => "ไม่เติมไม่ได้แก้ไข", - "system_set_home_path" => "แคตตาล็อกที่กำหนดเอง", - "system_set_home_path_tips" => "ไดเรกทอรีเริ่มต้นเป็นที่ว่างเปล่า", - "system_member_group" => "ที่แผนก", - "system_member_group_edit" => "แผนกบรรณาธิการ", - "system_member_remove" => "ลบผู้ใช้", - "system_member_remove_tips" => "ยืนยันผู้ใช้ลบ?
                    หลังจากที่คุณเอาไดเรกทอรีของผู้ใช้จะถูกลบออกอย่างสมบูรณ์", - "system_member_set_role" => "เพื่อยืนยันการเปลี่ยนแปลงของสิทธิ์ของกลุ่มผู้ใช้ที่เลือกหรือไม่", - "system_member_remove_group" => "กำหนดผู้ใช้ที่เลือกจะถูกลบออกจากกลุ่มนี้?", - "system_member_import" => "กลุ่มเพิ่ม", - "system_member_import_desc" => "ผู้ใช้ต่อหนึ่งบรรทัด
                    อยู่แล้วจะถูกละเลยอย่างเงียบ ๆ", - "system_member_use" => "ทำให้สามารถ", - "system_member_unuse" => "ปิดการใช้งาน", - "system_member_space" => "กำหนดขนาดพื้นที่ของผู้ใช้ ", - "system_member_space_tips" => " กำหนดขนาดพื้นที่ของผู้ใช้ ", - "system_member_space_number" => " ต้องเป็นตัวเลข!", - "system_member_group_config" => "แผนกการตั้งค่าแบทช์", - "system_member_group_remove" => "นำออกจากแผนกแล้ว", - "system_member_group_insert" => "เพิ่มไปที่แผนก", - "system_member_group_reset" => "รีเซ็ตแผนก", - "system_member_group_error" => "ข้อผิดพลาดของแผนก", - "system_group_action" => "การจัดการแผนก", - "system_role_add" => "เพิ่มเอกลักษณ์บทบาท", - "system_role_read" => "อ่านอย่างเดียว", - "system_role_write" => "สามารถอ่านและเขียน", - "system_setting_root_path" => "เข้าถึงราก", - "system_setting_root_path_desc" => "เฉพาะผู้ดูแลระบบสามารถเข้าถึงไดเรกทอรีทุกกลุ่มสิทธิมนุษยชนอื่น ๆ ของผู้ใช้จะสามารถดูไดเรกทอรีผู้ใช้ของตนเอง หากคุณต้องการที่จะเปิดหรือปิดการเข้าถึงผู้ดูแลระบบ
                    ไปยังไดเรกทอรีอื่น ๆ ที่คุณสามารถปรับเปลี่ยน PHP open_basedir พารามิเตอร์ต่อต้านข้ามเว็บไซต์ตั้ง", - "system_group_role_title" => "การจัดการบทบาทอำนาจของหน่วยงาน", - "system_group_role_remove" => "ตกลงเพื่อลบบทบาทแผนก", - "system_group_role_style" => "สไตล์", - "system_group_role_display" => "ว่า", - "system_group_role_display_desc" => "ตั้งค่าว่าจะแสดงสิทธิ์ของผู้ใช้แผนกหรือไม่", - "role_type_name_read" => "อ่าน", - "role_type_name_read:list" => "รายการไฟล์", - "role_type_name_read:info" => "ไฟล์ (โฟลเดอร์) ดูคุณสมบัติการค้นหาโฟลเดอร์", - "role_type_name_read:copy" => "คัดลอกไฟล์", - "role_type_name_read:preview" => "แสดงตัวอย่างไฟล์ (รูปภาพ, เอกสาร, เสียงและวิดีโอ)", - "role_type_name_read:download" => "ไฟล์ (โฟลเดอร์) ดาวน์โหลด", - "role_type_name_write" => "เขียน", - "role_type_name_write:add" => "สร้างไฟล์ (โฟลเดอร์), สารสกัดจากไฟล์บีบอัด", - "role_type_name_write:edit" => "บันทึกไฟล์ที่จะแก้ไข", - "role_type_name_write:change" => "เปลี่ยนชื่อปรับโครงสร้างไดเรกทอรี", - "role_type_name_write:upload" => "ไฟล์ (โฟลเดอร์) อัพโหลดดาวน์โหลดระยะไกล", - "role_type_name_write:remove" => "ไฟล์ (โฟลเดอร์) ลบตัด", - "group_guest" => "คนที่เข้ามา", - "group_guest_desc" => "คุณไม่ได้เป็นสมาชิกของแผนก
                    สามารถเข้าถึง [department shared directory] เฉพาะเนื้อหาต่อไปนี้เท่านั้นสิทธิ์อ่านอย่างเดียว", - "group_role_lebel_desc" => "คุณเป็นสมาชิกของแผนกนี้
                    เอกสารทั้งหมดภายในแผนกสงวนสิทธิ์ทั้งหมดโดยผู้ดูแลระบบ", - "button_save_and_add" => "บันทึกและยังคงเพิ่ม", - "path_cannot_search" => "ไดเรกทอรีไม่สนับสนุนการค้นหา!", - "not_support" => "ไม่ได้รับการสนับสนุน!", - "group_not_exist" => "กลุ่มผู้ใช้ไม่อยู่!", - "upload_clear_all" => "ล้างทั้งหมด", - "upload_clear" => "ล้างเสร็จสมบูรณ์", - "upload_setting" => "จัดตั้งขึ้น", - "upload_tips" => "ใช้การอัปโหลดชิ้นไม่อยู่ภายใต้ขีด จำกัด php.ini; แนะนำลากโฟลเดอร์โครเมี่ยมและประสบการณ์การอัปโหลดลดลง", - "upload_exist" => "ไฟล์ที่มีชื่อเดียวกัน", - "upload_exist_rename" => "ตั้งชื่อใหม่", - "upload_exist_replace" => "ปก", - "upload_exist_skip" => "กระโดด", - "upload_add_more" => "กลุ่มเพิ่ม", - "more" => "ขึ้น", - "system_setting" => "การตั้งค่าระบบ", - "openProject" => "เปิดตัวแก้ไขโครงการ", - "url_download" => "ดาวน์โหลด", - "url_link" => "URL", - "app_type_link" => "ทางลัด", - "createLink" => "สร้างทางลัด", - "createLinkHome" => "ส่งไปทางลัดสก์ท็อป", - "createProject" => "การเพิ่มโครงการแก้ไข", - "only_read" => "อ่านอย่างเดียว", - "only_read_desc" => "ไดเรกทอรีไม่ได้มีสิทธิ์ในการเขียน
                    คุณสามารถกำหนดสิทธิ์ในไดเรกทอรีนี้บนเซิร์ฟเวอร์", - "not_read" => "อ่านไม่ได้", - "explorerNew" => "การเชื่อมโยง Kod", - "zip_download_ready" => "หลังการบีบอัดจะดาวน์โหลดโดยอัตโนมัติโปรดรอ ...", - "set_background" => "ตั้งเป็นวอลล์เปเปอร์", - "share" => "หุ้น", - "my_share" => "หุ้นของฉัน", - "group_share" => "แชร์กลุ่มจากภายนอก", - "share_edit" => "แก้ไขแชร์", - "share_remove" => "ยกเลิกการแบ่งปัน", - "share_remove_tips" => "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกการแชร์ การเชื่อมต่อสาธารณะจะไม่มีผล", - "share_path" => "แบ่งปันเส้นทาง", - "share_title" => "การแบ่งปันทรัพยากร", - "share_name" => "แชร์ชื่อ", - "share_time" => "การหมดอายุ", - "share_time_desc" => "null ไม่ได้ตั้งค่า", - "share_password" => "สารสกัดจากรหัสผ่าน", - "share_password_desc" => "รหัสผ่านที่ว่างเปล่าไม่ได้ตั้งค่า", - "share_cancle" => "ยกเลิกการแชร์", - "share_create" => "สร้างการเชื่อมโยงประชาชน", - "share_url" => "ที่อยู่ที่ใช้ร่วมกัน", - "share_not_download" => "บ้านดาวน์โหลด", - "share_not_download_tips" => "Sharer ห้ามการดาวน์โหลด!", - "share_code_read" => "เครื่องอ่านรหัส", - "share_save" => "บันทึกการตั้งค่า", - "share_error_param" => "ข้อผิดพลาดพารามิเตอร์!", - "share_error_user" => "ข้อผิดพลาดในข้อมูลของผู้ใช้!", - "share_error_sid" => "แบ่งปันไม่อยู่!", - "share_error_time" => "คุณมาสายเกินไปหุ้นหมดอายุ!", - "share_error_path" => "ไฟล์ที่ใช้ร่วมกันไม่ได้อยู่ก็จะถูกลบหรือถูกลบออกมัน!", - "share_error_password" => "รหัสผ่านผิด!", - "share_error_show_tips" => "ประเภทนี้ไม่รองรับไฟล์ภาพตัวอย่าง!", - "share_view_num" => "การเข้าชม:", - "share_download_num" => "ดาวน์โหลด:", - "share_open_page" => "เปิดหน้าเว็บที่ใช้ร่วมกัน", - "open_the_path" => "ป้อนไดเรกทอรี", - "recycle_clear" => "ถังขยะ", - "recycle_clear_success" => "ประสบความสำเร็จในถังขยะ!", - "recycle_clear_info" => "คุณแน่ใจหรือไม่ว่าคุณต้องการที่จะหมดถังขยะ?", - "fav_remove" => "ยกเลิกคอลเลกชัน", - "remove_item" => "รายการ", - "uploading" => "อัปโหลด", - "upload_tips_more" => "ไฟล์มากเกินไปคำแนะนำในการอัปโหลดที่บีบอัดแล้วเปิดเครื่องรูดออนไลน์!", - "uploading_move" => "ในการโอนย้าย ...", - "show_file" => "การแสดงตัวอย่างหน้าใหม่", - "unknow_file_title" => "เปิดแฟ้มลับ!", - "unknow_file_tips" => "ไม่สนับสนุนการประยุกต์ใช้แฟ้มนี้คุณสามารถ:", - "unknow_file_try" => "ความพยายาม", - "unknow_file_download" => "ดาวน์โหลดไฟล์", - "unknow_plugin_search" => "การใช้งานการค้นหาที่เกี่ยวข้องกับการติดตั้ง", - "config_save_error_auth" => "ล้มเหลวในการบันทึกการตั้งค่าผู้ดูแลระบบห้ามสิทธิพิเศษนี้!", - "config_save_error_file" => "ข้อผิดพลาดไฟล์ไม่สามารถเขียนได้!", - "beautify_code" => "รหัสฟอร์แมต", - "convert_case" => "กรณีการแปลง", - "convert_upper_case" => "แปลงเป็นตัวพิมพ์ใหญ่", - "convert_lower_case" => "แปลงเป็นตัวพิมพ์เล็ก", - "editor_insert_time" => "เวลาปัจจุบัน ", - "editor_md5" => " การเข้ารหัส Md5 ", - "editor_qrcode" => " รหัสแบบสองมิติสตริง ", - "editor_regx" => " การทดสอบนิพจน์ปกติ ", - "editor_chinese" => " การแปลงแบบง่าย ", - "editor_chinese_simple" => " แปลงเป็นภาษาจีนตัวย่อ ", - "editor_chinese_traditional" => " แปลงเป็นภาษาจีนแบบดั้งเดิม ", - "editor_base64" => "ตัวแปลงสัญญาณ Base64 ", - "editor_base64_encode" => " การเข้ารหัส Base64 ", - "editor_base64_decode" => " การถอดรหัส Base64 ", - "editor_url" => " ตัวแปลงสัญญาณ URL ", - "editor_url_encode" => " การเข้ารหัส URL ", - "editor_url_decode" => " การถอดรหัส URL ", - "editor_unicode" => " ตัวแปลงสัญญาณ Unicode ", - "editor_unicode_encode" => " การเข้ารหัส Unicode ", - "editor_unicode_decode" => " การถอดรหัส Unicode", - "editor_tools_select_tips" => " โปรดเลือกเนื้อหาที่คุณต้องการแปลง!", - "editor_calc" => "เครื่องคำนวณฟรี", - "shortcut" => "ทางลัด", - "use_free" => "ยังคงใช้รุ่นฟรี", - "learn_more" => "เรียนรู้เพิ่มเติม", - "replace" => "แทนที่", - "selectAll" => "เลือก", - "reload" => "โหลด", - "about" => "บน", - "complete_current" => "อัตโนมัติเสร็จในปัจจุบัน", - "view" => "ดู", - "tools" => "เครื่องมือ", - "help" => "ช่วย", - "not_exists" => "ไม่ได้อยู่", - "group_role_fileDownload" => "ดาวน์โหลด", - "group_role_share" => "หุ้น", - "users_share" => "ที่ใช้ร่วมกัน", - "system_setting_save" => "ตั้งค่าความปลอดภัย", - "system_setting_menu" => "การจัดการเมนู", - "system_name" => "ชื่อโครงการ", - "system_name_desc" => "ชื่อโลโก้โปรแกรม", - "system_desc" => "รายละเอียดโครงการ", - "path_hidden" => "ยกเว้นไดเรกทอรี", - "version_not_support" => "รุ่นของคุณไม่สนับสนุนนี้โปรดไปที่เว็บไซต์อย่างเป็นทางการที่จะซื้อรุ่นสูง!", - "version_not_support_number" => "ขณะที่จำนวนของข้อ จำกัด ไม่สนับสนุนการดำเนินการนี้โปรดซื้อรุ่นสูงของเว็บไซต์อย่างเป็นทางการ!", - "path_hidden_desc" => "ไดเรกทอรีและไฟล์โดยค่าเริ่มต้นไม่แสดงคั่นด้วยเครื่องหมายจุลภาค", - "new_user_folder" => "ผู้ใช้ใหม่ถูกสร้างขึ้นโดยไดเรกทอรีเริ่มต้น", - "new_user_folder_desc" => "คั่นด้วยเครื่องหมายจุลภาค", - "new_user_app" => "ผู้ใช้ใหม่ถูกสร้างขึ้นโดยแอปเริ่มต้น", - "new_user_app_desc" => "การใช้งานแอพลิเคชันศูนย์ใหญ่ของคั่นด้วยเครื่องหมายจุลภาค", - "auto_login" => "ผู้เข้าชมเข้าสู่ระบบอัตโนมัติ", - "auto_login_desc" => "การเข้าสู่ระบบของผู้ใช้เริ่มต้นของผู้เข้าพักguest/guestผู้ใช้หลังจากเปิดเพื่อให้มั่นใจว่าผู้ใช้ที่มีอยู่", - "first_in" => "หลังจากที่เข้าสู่การเริ่มต้น", - "version_price_free" => "ฟรี", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "ไดเรกทอรีที่ไม่สามารถเขียนได้ตั้งไดเรกทอรีและไดเรกทอรีย่อยทั้งหมดเพื่อลองอีกครั้งหลังจากที่อ่านเขียน!", - "menu_name" => "ชื่อเมนู", - "menu_hidden" => "ปิดบัง", - "menu_show" => "แสดงผล", - "menu_move_down" => "ลง", - "menu_move_up" => "ขึ้น", - "menu_move_del" => "ลบ", - "menu_open_window" => "เปิดหน้าต่างใหม่", - "menu_sub_menu" => "เมนูย่อย", - "url_path" => "ที่อยู่ URL", - "url_path_desc" => "ที่อยู่ URL หรือรหัส JS", - "no_permission_read" => "คุณไม่ได้รับอนุญาตให้อ่าน!", - "no_permission_download" => "คุณไม่ได้รับอนุญาตให้ดาวน์โหลด!", - "php_env_check" => "การดำเนินงานการตรวจสอบสภาพแวดล้อม:", - "php_env_error" => "ห้องสมุด Php หายไป", - "php_env_error_ignore" => "ละเว้นและป้อน", - "php_env_error_version" => "PHP รุ่นไม่สามารถจะน้อยกว่า 5.0", - "php_env_error_path" => "ไม่สามารถเขียนได้", - "php_env_error_list_dir" => "เว็บเซิร์ฟเวอร์ของคุณเปิดไดเรกทอรีคุณลักษณะรายการสำหรับเหตุผลด้านความปลอดภัยปิดใช้งานคุณลักษณะนี้!อย่างไร", - "php_env_error_gd" => "ห้องสมุด PHP GD ควรจะเปิดมิฉะนั้นรหัสที่ใช้ภาพขนาดย่อจะไม่ทำงานอย่างถูกต้อง", - "install_login" => "คุณสามารถใช้เข้าสู่ระบบบัญชีดังต่อไปนี้", - "install_enter" => "ระบบ", - "install_user_default" => "ผู้ดูแลระบบ: {0} / (ด้านล่างตั้งค่ารหัสผ่าน)
                    ผู้ใช้งานเฉลี่ย: {1}
                    บุคคลทั่วไป: {2}", - "login_root_password" => "ตั้งค่ารหัสผ่านผู้ดูแลระบบ", - "login_root_password_repeat" => "ยืนยันรหัสผ่านอีกครั้ง", - "login_root_password_equal" => "รหัสผ่านสองไม่ตรงกัน!", - "login_root_password_tips" => "ตั้งค่ารหัสผ่านของผู้ดูแลระบบ!", - "forget_password" => "ลืมรหัสผ่านของคุณ", - "forget_password_tips" => "ลืมรหัสผ่านผู้ดูแลระบบ:
                    กรุณาเข้าสู่ระบบเซิร์ฟเวอร์ลบ ./data/system/install.lock รีเซ็ต;

                    ไม่ใช่ผู้ดูแลลืมรหัสผ่าน:
                    กรุณาติดต่อผู้ดูแลระบบเพื่อรีเซ็ต!", - "copyright_desc" => "Kodexplorer เป็นระบบการจัดการเอกสารเว็บสะเทือนใจคุณสามารถใช้มันสำหรับการจัดการเอกสารภายในหรือใช้ร่วมกันนอกจากนี้ยังสามารถนำมาใช้ในการจัดการเซิร์ฟเวอร์เว็บไซต์แทนที่ FTP, แม้ในขณะที่การพัฒนา webIDE ออนไลน์ได้โดยตรง นอกจากนี้คุณยังสามารถตั้งโปรแกรมการพัฒนาที่สองนี้จะบูรณาการเข้ากับระบบที่มีอยู่", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "มะม่วงเมฆ• Explorer ที่", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "มะม่วงเมฆ• Explorer ที่", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, Kod, kodCloud, WebOS, webIDE, filemanage PHP, filemanage, Dao เมฆมะม่วงเมฆระบบการจัดการเอกสาร, ดิสก์เมฆองค์กรสำรวจ ,, เอกสารออนไลน์สำนักงานออนไลน์สำนักงานออนไลน์ตัวอย่าง CAD ออนไลน์แก้ไขออนไลน์ บรรณาธิการออนไลน์", - "kod_meta_description" => "KodExplorer สามารถเมฆถนน (เดิมมะม่วงเมฆ) เป็นผู้ให้บริการชั้นนำของรัฐบาล / เมฆองค์กรเอกชนและระบบการจัดการเอกสารออนไลน์เว็บไซต์ส่วนบุคคล, การใช้งานรัฐวิสาหกิจเมฆเอกชนจัดเก็บข้อมูลเครือข่ายการจัดการเอกสารออนไลน์สำนักงานออนไลน์เพื่อให้ปลอดภัยและการควบคุมที่ง่ายและสะดวก ใช้กำหนดเองสูงผลิตภัณฑ์คลาวด์ส่วนตัว การใช้หน้าต่างอินเตอร์เฟซแบบการปฏิบัติในการดำเนินงานได้โดยไม่ต้องปรับตัวได้อย่างรวดเร็วเริ่มต้นสนับสนุนหลายร้อยรูปแบบไฟล์ภาพตัวอย่างออนไลน์ที่นิยมเล่นและการแก้ไขเป็นมิตรกับสิ่งแวดล้อมที่มีประสิทธิภาพคือการทดลองครั้งเดียวไม่แยกออกจากภาคเอกชน การให้บริการคลาวด์", - "kod_meta_copyright" => "kodcloud.com", - "login" => "เข้าสู่ระบบ", - "guest_login" => "บุคคลทั่วไปเข้าสู่ระบบ", - "username" => "บัญชีเข้าสู่ระบบ", - "userNickName" => "ชื่อเล่นของผู้ใช้", - "password" => "รหัสผ่าน", - "login_code" => "รหัส", - "need_check_code" => "รหัสรับรองความถูกต้องเข้าสู่ระบบเปิด", - "need_check_code_desc" => "หลังจากเข้าสู่ระบบคุณต้องป้อนรหัสยืนยัน", - "setting_csrf_protect" => "ป้องกัน CSRF เปิด", - "setting_csrf_protect_desc" => "หลังจากเปิดประเภทของการโจมตีได้อย่างมีประสิทธิภาพสามารถป้องกัน CSRF", - "login_rember_password" => "จำรหัสผ่าน", - "setting_show_root_group" => "รายชื่อแผนกทั้งหมด", - "setting_show_root_group_desc" => "แผนกไดเรกทอรีรากไดเรกทอรีจะแสดงรายชื่อแผนกทั้งหมดหรือไม่", - "setting_show_share_user" => "รายชื่อของผู้ใช้ทั้งหมด", - "setting_show_share_user_desc" => "ไดเรกทอรีรากของไดเรกทอรีรากมีการระบุไว้สำหรับการแชร์ผู้ใช้ทั้งหมด", - "setting_clear_user_recycle" => "ล้างถังรีไซเคิลสำหรับผู้ใช้ทั้งหมด", - "setting_clear_cache" => "ล้างแคช", - "setting_icp" => "ลิขสิทธิ์หรือบันทึกหมายเลข", - "setting_global_css" => "CSS ทั่วโลกที่กำหนดเอง", - "setting_global_css_desc" => "หน้าทั้งหมดจะแทรก CSS ที่กำหนดเอง", - "setting_global_html" => "สถิติ HTML code", - "setting_global_html_desc" => "หน้าทั้งหมดจะถูกแทรกในโค้ด html วรรคนี้รหัสสามารถวางสถิติของบุคคลที่สาม", - "us" => "kodcloud.com", - "login_not_null" => "ชื่อผู้ใช้และรหัสผ่านไม่สามารถว่างเปล่า!", - "code_error" => "รหัสข้อผิดพลาด", - "password_error" => "ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง!", - "password_not_null" => "รหัสผ่านต้องไม่ว่างเปล่า!", - "old_password_error" => "รหัสผ่านเดิมที่เป็นธรรม!", - "permission" => "ได้รับอนุญาต!", - "permission_edit" => "ปรับเปลี่ยนสิทธิ์", - "file_info_owner" => "เจ้าของ", - "file_info_group" => "กลุ่ม", - "no_permission" => "ผู้ดูแลระบบได้สิทธิพิเศษนี้!", - "no_permission_ext" => "ผู้ดูแลระบบต้องห้ามประเภทของสิทธิ์ของแฟ้มนี้", - "dialog_max" => "เพิ่ม", - "dialog_min" => "ลด", - "dialog_min_all" => "ลดทั้งหมด", - "dialog_display_all" => "แสดงหน้าต่างทั้งหมด", - "dialog_close_all" => "ปิดทั้งหมด", - "open" => "เปิด", - "others" => "อื่น ๆ", - "open_with" => "เปิดรับ ...", - "close" => "ใกล้", - "close_all" => "ปิดทั้งหมด", - "close_left" => "ปิดแท็บซ้าย", - "close_right" => "ปิดแท็บไปทางขวา", - "close_others" => "ใกล้เคียงอื่น ๆ", - "loading" => "การดำเนินงาน ...", - "warning" => "การเตือน", - "getting" => "ได้รับ ...", - "sending" => "ส่งข้อมูล ...", - "data_error" => "ข้อมูลผิดพลาด!", - "get_success" => "ได้รับความสำเร็จ!", - "save_success" => "บันทึกเรียบร้อยแล้ว!", - "success" => "การดำเนินงานที่ประสบความสำเร็จ", - "error" => "ดำเนินการล้มเหลว", - "error_repeat" => "การดำเนินการล้มเหลวในชื่อที่มีอยู่แล้ว!", - "word_error" => "ความล้มเหลว ", - "word_success" => " ความสำเร็จ", - "system_error" => "ผิดพลาดของระบบ", - "name" => "ชื่อ", - "type" => "ชนิด", - "contain" => "บรรจุ", - "address" => "ที่ตั้ง", - "size" => "ขนาด", - "byte" => "ไบต์", - "path" => "เส้นทาง", - "action" => "การดำเนินงาน", - "create_time" => "สร้าง", - "modify_time" => "ดัดแปลง", - "last_time" => "เข้ามาครั้งล่าสุด", - "sort_type" => "เรียงลำดับตาม", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "ไดเรกทอรีสาธารณะ", - "system_path_not_change" => "ไดเรกทอรีระบบไม่สามารถแก้ไขได้", - "file" => "ไฟล์", - "folder" => "โฟลเดอร์", - "copy" => "สำเนา", - "past" => "ติด", - "clone" => "สร้างสำเนา", - "cute" => "ตัด", - "cute_to" => "ย้ายไป ...", - "copy_to" => "คัดลอกไป ...", - "remove" => "ลบ", - "remove_force" => "สมบูรณ์ลบ", - "info" => "คุณสมบัติ", - "list_type" => "ดู", - "list_icon" => "อาร์เรย์ไอคอน", - "list_list" => "การจัดรายการ", - "list_list_split" => "โหมดคอลัมน์", - "sort_up" => "การเพิ่มขึ้น", - "sort_down" => "ลดลง", - "order_type" => "เรียงลำดับตาม", - "order_desc" => "มากไปหาน้อย", - "order_asc" => "จากน้อยไปมาก", - "rename" => "ตั้งชื่อใหม่", - "add_to_fav" => "เพิ่มในรายการโปรด", - "search_in_path" => "ค้นหาโฟลเดอร์", - "add_to_play" => "เพิ่มในรายการเพลง", - "manage_fav" => "จัดการรายการโปรด", - "refresh_tree" => "ต้นไม้ไดเรกทอรีรีเฟรช", - "manage_folder" => "Directory จัดการ", - "close_menu" => "ปิดเมนู", - "zip" => "สร้างแพคเกจที่บีบอัด", - "unzip" => "เพื่อดึง ...", - "unzip_folder" => "เปิดเครื่องรูดไปยังโฟลเดอร์", - "unzip_this" => "สารสกัดจากปัจจุบัน", - "unzip_to" => "เพื่อดึง ...", - "zipview_file_big" => "ไฟล์ที่มีขนาดใหญ่เกินไปแล้วแยกการดำเนินงานการแสดงตัวอย่าง!", - "clipboard" => "ดูคลิปบอร์ด", - "clipboard_clear" => "คลิปบอร์ดว่างเปล่า", - "full_screen" => "เต็มหน้าจอ", - "folder_info_item" => "รายการ", - "folder_info_item_select" => "ซึ่งเลือกไว้", - "file_load_all" => "ดับเบิลคลิกเพื่อโหลดทั้งหมด ......", - "tips" => "รวดเร็ว", - "ziping" => "ซิป ...", - "unziping" => "สกัด ...", - "moving" => "การดำเนินงานโทรศัพท์มือถือ ...", - "remove_title" => "ลบการยืนยัน", - "remove_info" => "ยืนยันการลบรายการที่เลือก?", - "remove_title_force" => "ลบออกอย่างถาวร", - "remove_info_force" => "คุณแน่ใจหรือว่าต้องการลบเอกสารนี้อย่างถาวร", - "name_isexists" => "ผิดชื่อที่มีอยู่แล้ว!", - "install" => "ติดตั้ง", - "width" => "ความกว้าง", - "height" => "สูง", - "app" => "การประยุกต์ใช้แสง", - "app_store" => "การประยุกต์ใช้แสง", - "app_create" => "สร้างโปรแกรมประยุกต์", - "app_edit" => "ปรับเปลี่ยนแอพลิเคชัน", - "app_group_all" => "สมบูรณ์", - "app_group_game" => "เกม", - "app_group_tools" => "เครื่องมือ", - "app_group_reader" => "อ่าน", - "app_group_movie" => "โทรทัศน์", - "app_group_music" => "เพลง", - "app_group_life" => "ชีวิต", - "app_group_others" => "อื่น ๆ", - "app_desc" => "ลักษณะ", - "app_icon" => "ไอคอนการใช้งาน", - "app_icon_show" => "ที่อยู่ URL หรือไดเรกทอรี", - "app_group" => "แอพลิเคชันแพ็คเก็ต", - "app_type" => "ชนิด", - "app_type_url" => "ลิงค์", - "app_type_code" => "ขยาย JS", - "app_display" => "ภายนอก", - "app_display_border" => "ไม่มีพรมแดน (เช่นเลือกแบบไร้ขอบ)", - "app_display_size" => "ปรับขนาด (ตรวจสอบการปรับ)", - "app_size" => "ขนาด", - "app_url" => "ที่อยู่ลิงก์", - "app_code" => "รหัส JS", - "edit" => "แก้ไข", - "edit_can_not" => "ไม่ได้เป็นแฟ้มข้อความ", - "edit_too_big" => "ไฟล์มีขนาดใหญ่เกินไปก็ไม่สามารถจะมากกว่า 40M", - "open_default" => "เริ่มต้นเปิด", - "open_ie" => "เปิดเบราว์เซอร์", - "refresh" => "รีเฟรช", - "refresh_all" => "บังคับรีเฟรช", - "newfile" => "แฟ้มใหม่", - "newfile_save_as" => "บันทึกลง", - "newfolder" => "โฟลเดอร์ใหม่", - "newothers" => "ใหม่อื่น ๆ", - "path_loading" => "กำลังโหลด ...", - "go" => "เดิน!", - "go_up" => "ชั้นบน", - "history_next" => "ข้างหน้า", - "history_back" => "ล่าถอย", - "address_in_edit" => "คลิ๊กเพื่อเข้าสู่โหมดแก้ไข", - "double_click_rename" => "ดับเบิลคลิกเปลี่ยนชื่อ", - "double_click_open" => "ดับเบิลคลิกเพื่อเปิด", - "path_null" => "โฟลเดอร์ว่างเปล่า!", - "file_size_title" => "ขนาดไอคอน", - "file_size_small_super" => "ขนาดเล็กพิเศษ", - "file_size_small" => "ไอคอนขนาดเล็ก", - "file_size_default" => "ไอคอน", - "file_size_big" => "ไอคอนขนาดใหญ่", - "file_size_big_super" => "ไอคอนขนาดใหญ่", - "upload" => "อัปโหลด", - "upload_ready" => "รอสำหรับการอัปโหลด", - "upload_success" => "อัปโหลดที่ประสบความสำเร็จ", - "upload_path_current" => "สลับไปยังไดเรกทอรีปัจจุบัน", - "upload_select" => "เลือกไฟล์", - "upload_max_size" => "สูงสุดที่อนุญาต", - "upload_size_info" => "หากคุณต้องการที่จะกำหนดค่าเพิ่มเติมกรุณาแก้ไข php.ini สูงสุดอัปโหลดได้รับอนุญาต เมื่อคุณเลือกไฟล์ที่มีขนาดใหญ่กว่าการกำหนดค่านี้จะกรองออกโดยอัตโนมัติ", - "upload_error" => "อัพโหลดล้มเหลว", - "upload_error_http" => "เครือข่ายหรือไฟร์วอลล์ข้อผิดพลาด", - "upload_muti" => "อัปโหลดหลายไฟล์", - "upload_drag" => "ลากและวางการอัปโหลด", - "upload_drag_tips" => "คลายอัปโหลด!", - "path_not_allow" => "ชื่อไฟล์ไม่ได้รับอนุญาต", - "download" => "ดาวน์โหลด", - "downloading" => "กำลังโหลด ...", - "download_address" => "ดาวน์โหลด", - "download_ready" => "จะถูกดาวน์โหลด", - "download_success" => "ดาวน์โหลดสำเร็จ!", - "download_error" => "ดาวน์โหลดล้มเหลว!", - "download_error_create" => "เขียนข้อผิดพลาด!", - "download_error_exists" => "ลิงก์ไปยังไฟล์ล้มเหลว!", - "upload_error_null" => "ไม่มีไฟล์!", - "upload_error_big" => "ขนาดไฟล์เกินขีด จำกัด ของเซิร์ฟเวอร์", - "upload_error_move" => "ล้มเหลวในการย้ายไฟล์!", - "upload_error_exists" => "ไฟล์ที่มีอยู่แล้ว", - "upload_local" => "อัพโหลดท้องถิ่น", - "download_from_server" => "ระยะไกลดาวน์โหลด", - "save_path" => "บันทึกเส้นทาง", - "upload_select_muti" => "ส่วนใหญ่ของการอัปโหลดไฟล์ที่เลือก", - "search" => "ค้นหา", - "searching" => "ค้นหา ...", - "search_result" => "ผลการค้นหา", - "seach_result_too_more" => "ผลการค้นหาที่มากเกินไปก็จะแนะนำสำหรับไดเรกทอรีหรือคำพูด", - "search_null" => "ไม่มีผล!", - "search_uplow" => "กรณีที่สำคัญ", - "search_content" => "เนื้อหาการค้นหาไฟล์", - "search_info" => "โปรดป้อนคำค้นหาและเส้นทางการค้นหา!", - "search_ext_tips" => "โดย | แยกตัวอย่างเช่น PHP | js | CSS
                    ไม่ได้กรอกค้นหาไฟล์ข้อความเริ่มต้น", - "file_type" => "ชนิดของไฟล์", - "goto" => "ข้ามไปยัง", - "server_dwonload_desc" => "งานที่ถูกบันทึกอยู่ในรายการดาวน์โหลด", - "parent_permission" => "สิทธิ์ไดเรกทอรีแม่", - "root_path" => "เอกสารของฉัน", - "lib" => "โกดัง", - "fav" => "ที่คั่นหนังสือ", - "desktop" => "สก์ท็อป", - "browser" => "เบราว์เซอร์", - "my_computer" => "คอมพิวเตอร์ของฉัน", - "recycle" => "ขยะ", - "my_document" => "เอกสารของฉัน", - "my_picture" => "รูปของฉัน", - "my_music" => "เพลงของฉัน", - "my_movie" => "วิดีโอของฉัน", - "my_download" => "การดาวน์โหลดของฉัน", - "ui_desktop" => "สก์ท็อป", - "ui_explorer" => "การจัดการไฟล์", - "ui_editor" => "บรรณาธิการ", - "adminer" => "adminer", - "ui_project_home" => "โครงการบ้าน", - "ui_login" => "เข้าสู่ระบบ", - "ui_logout" => "เลิก", - "setting" => "การตั้งค่าระบบ", - "setting_title" => "ตัวเลือก", - "setting_user" => "ศูนย์ส่วนบุคคล", - "setting_password" => "เปลี่ยนรหัสผ่าน", - "setting_password_old" => "รหัสผ่านเดิม", - "setting_password_new" => "แก้ไข", - "setting_language" => "การตั้งค่าภาษา", - "setting_member" => "การจัดการผู้ใช้", - "setting_group" => "การจัดการกลุ่มผู้ใช้", - "setting_group_add" => "เพิ่มกลุ่มผู้ใช้", - "setting_group_edit" => "กลุ่มผู้ใช้แก้ไข", - "setting_theme" => "การตั้งค่าธีม", - "setting_wall" => "การตั้งค่าวอลเปเปอร์", - "setting_wall_desktop" => "ภาพพื้นหลังเดสก์ท็อป", - "setting_wall_desktop_list" => "การจัดการ Wallpaper Desktop", - "setting_wall_login_list" => "การจัดการภาพพื้นหลังเข้าสู่ระบบ", - "setting_wall_login_tips" => "เคล็ดลับ: เมื่อมีมากกว่าหนึ่งชิ้นพื้นหลังอินเทอร์เฟซการเข้าสู่ระบบจะหมุนแบบสุ่ม", - "setting_wall_diy" => "วอลล์เปเปอร์ที่กำหนดเอง:", - "setting_wall_info" => "รูปภาพที่อยู่ URL ภาพท้องถิ่นสามารถเป็นสิทธิที่จะได้รับเบราว์เซอร์เพื่อเปิดภาพ", - "setting_fav" => "จัดการบุ๊ก", - "setting_help" => "การใช้วิธีใช้", - "setting_about" => "เกี่ยวกับการทำงาน", - "setting_success" => "การปรับเปลี่ยนมีผล!", - "can_not_repeat" => "ได้รับอนุญาตให้ทำซ้ำ", - "absolute_path" => "ที่อยู่แอบโซลูท", - "group" => "กลุ่มผู้ใช้", - "data_not_full" => "ข้อมูลที่ส่งไม่สมบูรณ์!", - "default_user_can_not_do" => "ผู้ใช้เริ่มต้นไม่สามารถดำเนินการ", - "default_group_can_not_do" => "กลุ่มผู้ใช้เริ่มต้นไม่สามารถดำเนินการ", - "username_can_not_null" => "ชื่อผู้ใช้ต้องไม่ว่างเปล่า!", - "groupname_can_not_null" => "ชื่อกลุ่มผู้ใช้ต้องไม่ว่างเปล่า!", - "groupdesc_can_not_null" => "กลุ่มผู้ใช้รายละเอียดไม่สามารถว่างเปล่า!", - "group_move_user_error" => "ผู้ใช้กลุ่มผู้ใช้ย้ายล้มเหลว", - "group_already_remove" => "กลุ่มผู้ใช้ถูกลบไปแล้ว", - "group_not_exists" => "กลุ่มผู้ใช้นี้ไม่ได้อยู่", - "member_add" => "เพิ่มผู้ใช้", - "password_null_not_update" => "พวกเขากล่าวว่าพวกเขาไม่ได้เปลี่ยนรหัสผ่านจะไม่เต็ม", - "if_save_file_tips" => "ไม่สามารถบันทึกไฟล์บางไฟล์ได้คุณแน่ใจหรือไม่ว่าต้องการปิดหน้าต่าง", - "if_save_file" => "ไฟล์ยังไม่ได้รับการบันทึกคุณต้องการบันทึก?", - "if_remove" => "ยืนยันการลบ", - "member_remove_tips" => "หลังจากที่คุณเอาไดเรกทอรีของผู้ใช้จะถูกล้าง", - "group_remove_tips" => "หลังจากที่คุณเอากลุ่มผู้ใช้ของผู้ใช้จะไม่สามารถเข้าสู่ระบบ
                    (กลุ่มผู้ใช้จำเป็นต้องตั้งค่า)", - "group_name" => "ชื่อกลุ่มผู้ใช้", - "group_name_tips" => "คำแนะนำชื่อภาษาอังกฤษไม่สามารถทำซ้ำได้", - "group_desc" => "ชื่อที่ใช้แสดง", - "group_desc_tips" => "ชื่อกลุ่มคำอธิบาย", - "group_role_ext" => "ข้อ จำกัด ในการขยาย", - "group_role_ext_tips" => "ที่มีหลาย | แยกออกจากกัน", - "group_role_file" => "การจัดการไฟล์", - "group_role_upload" => "อนุญาตให้อัปโหลด", - "group_role_user" => "ข้อมูลของผู้ใช้", - "group_role_group" => "การจัดการกลุ่มผู้ใช้", - "group_role_member" => "การจัดการผู้ใช้", - "group_role_mkfile" => "แฟ้มใหม่", - "group_role_mkdir" => "โฟลเดอร์ใหม่", - "group_role_pathrname" => "ตั้งชื่อใหม่", - "group_role_pathdelete" => "การลบไฟล์", - "group_role_pathinfo" => "คุณสมบัติของไฟล์", - "group_role_pathmove" => "ย้าย (คัดลอก / ตัด / วาง / ลากการทำงาน)", - "group_role_zip" => "การอัด", - "group_role_unzip" => "เปิดเครื่องรูด", - "group_role_search" => "ค้นหา", - "group_role_filesave" => "บันทึกไฟล์ที่จะแก้ไข", - "group_role_can_upload" => "การอัพโหลดและดาวน์โหลด", - "group_role_download" => "ระยะไกลดาวน์โหลด", - "group_role_passowrd" => "เปลี่ยนรหัสผ่าน", - "group_role_config" => "ข้อมูลการกำหนดค่า", - "group_role_fav" => "Bookmark ดำเนินงาน (เพิ่ม / แก้ไข / ลบ)", - "action_list" => "มุมมองรายการ", - "action_add" => "เพิ่ม", - "action_edit" => "แก้ไข", - "action_del" => "ลบ", - "group_role_ext_warning" => "ไม่อนุญาตให้อัพโหลดไฟล์ดังกล่าว
                    เปลี่ยนชื่อ (เปลี่ยนชื่อนามสกุลที่ระบุ)
                    แก้ไขบันทึกระยะไกลดาวน์โหลด, สารสกัดจาก", - "group_tips" => "
                  48. 1. ชื่อกลุ่มผู้ใช้ไม่สามารถทำสำเนาได้หลังจากเปลี่ยนชื่อกลุ่มแล้วจะเป็นของผู้ใช้ที่ได้รับการจัดโครงสร้างใหม่และจะเชื่อมโยงกันโดยอัตโนมัติ
                  49. 2. ส่วนขยายจำกัดความสัมพันธ์ระหว่างความปลอดภัยของระบบโปรดระมัดระวัง (ถ้าคุณสร้าง php ใหม่ในเว็บไดเรคทอรี่หมายความว่าการเปลี่ยนสิทธิ์ของโปรแกรมให้กับผู้ใช้รายนี้แทบจะเป็นไปไม่ได้)
                  50. 3. การจัดการครัวเรือนการจัดการกลุ่มสิทธิการดูสิทธิ์และการเพิ่มลบและปรับเปลี่ยนสิทธิถูกผูกมัดโปรแกรมจะเชื่อมโยงโดยอัตโนมัติ
                  51. 4. หลังจากที่ได้รับการตั้งค่ากลุ่มการอนุญาตให้เพิ่มกลุ่มสิทธิ์การอนุญาตที่ตามมาจะไม่ได้รับการสืบทอด (สิทธิ์นี้เทียบเท่ากับสิทธิ์สูงสุด)
                  52. ", - "not_null" => "ฟิลด์ที่จำเป็นต้องไม่ว่างเปล่า!", - "picture_can_not_null" => "ภาพถ่ายต้องไม่ว่างเปล่า!", - "rname_success" => "เปลี่ยนชื่อความสำเร็จ!", - "please_inpute_search_words" => "กรุณากรอกสตริงเพื่อค้นหา", - "remove_success" => "ลบเรียบร้อยแล้ว!", - "remove_fali" => "ลบล้มเหลว!", - "clipboard_null" => "คลิปบอร์ดว่างเปล่า!", - "create_success" => "ความสำเร็จใหม่!", - "create_error" => "ใหม่ล้มเหลวตรวจสอบสิทธิ์ของไดเรกทอรี!", - "copy_success" => "[คัดลอก] - ครอบคลุมความสำเร็จอย่างคลิปบอร์ด!", - "cute_success" => "[Cut] - ครอบคลุมความสำเร็จอย่างคลิปบอร์ด!", - "clipboard_state" => "สถานะคลิปบอร์ด:", - "no_permission_write_all" => "แฟ้มหรือไดเรกทอรีไม่สามารถเขียนได้", - "no_permission_write_file" => "ไฟล์ที่ไม่ได้เขียนได้รับอนุญาต", - "no_permission_read_all" => "แฟ้มหรือไดเรกทอรีมีสิทธิ์ในการอ่านไม่มี", - "copy_not_exists" => "แหล่งที่มาไม่ได้อยู่", - "current_has_parent" => "โฟลเดอร์เป้าหมายเป็นโฟลเดอร์ย่อยของโฟลเดอร์แหล่งที่มา!", - "past_success" => "ดำเนินการวางเสร็จสมบูรณ์", - "cute_past_success" => "ดําเนินการตัดเสร็จสมบูรณ์(แฟ้มแหล่งที่มาจะถูกลบคลิปบอร์ดว่างเปล่า)", - "zip_success" => "การบีบอัดเสร็จสมบูรณ์", - "not_zip" => "ไม่ได้เก็บ", - "zip_null" => "ไม่ได้เลือกแฟ้มหรือไดเรกทอรี", - "unzip_success" => "เปิดเครื่องรูดสมบูรณ์", - "gotoline" => "ข้ามไปยังบรรทัด", - "path_is_current" => "เส้นทางและเส้นทางปัจจุบันที่จะเปิดเหมือนกัน!", - "path_exists" => "ชื่อที่มีอยู่แล้ว!", - "undo" => "การเพิกถอน", - "redo" => "ต่อต้านการเพิกถอน", - "preview" => "ดูตัวอย่าง", - "wordwrap" => "ห่อ", - "show_gutter" => "แสดงหมายเลขบรรทัด", - "char_all_display" => "แสดงตัวอักษรที่มองไม่เห็น", - "auto_complete" => "แจ้งให้โดยอัตโนมัติ", - "auto_save" => "บันทึกอัตโนมัติ", - "function_list" => "รายการฟังก์ชัน", - "code_theme" => "รูปแบบการเข้ารหัส", - "font_size" => "ขนาดตัวอักษร", - "confirm" => "คุณแน่ใจหรือไม่ว่าต้องการทำเช่นนี้?", - "button_ok" => "กำหนด", - "button_submit" => "เสนอ", - "button_set" => "จัดตั้งขึ้น", - "button_cancel" => "ยกเลิก", - "button_edit" => "แก้ไข", - "button_save" => "บันทึก", - "button_apply" => "ใช้", - "button_save_all" => "บันทึกทั้งหมด", - "button_not_save" => "ไม่ได้บันทึก", - "button_add" => "เพิ่ม", - "button_back_add" => "กลับไปเพิ่ม", - "button_del" => "ลบ", - "button_save_edit" => "บันทึกการเปลี่ยนแปลง", - "button_save_submit" => "บันทึกส่ง", - "button_more" => "ขึ้น", - "button_select_all" => "เลือกทั้งหมดเลือก / Invert", - "charset_AUTO" => "การระบุตัวตนอัตโนมัติ", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "ภาษาอาหรับ", - "charset_ISO_8859_6" => "ภาษาอาหรับ", - "charset_ISO_8859_10" => "ภาษานอร์ดิก", - "charset_CP1257" => "ภาษาบอลติก", - "charset_ISO_8859_13" => "ภาษาบอลติก", - "charset_ISO_8859_4" => "ภาษาบอลติก", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "จอร์เจีย", - "charset_PT154" => "คาซัคสถาน", - "charset_CP949" => "เกาหลี", - "charset_EUC_KR" => "เกาหลี", - "charset_GB18030" => "ภาษาจีนตัวย่อ", - "charset_GBK" => "ภาษาจีนตัวย่อ", - "charset_ISO_8859_14" => "เซลติก", - "charset_CP1133" => "ลาว", - "charset_ISO_8859_16" => "โรมาเนีย", - "charset_ISO_8859_3" => "ยุโรปตอนใต้", - "charset_EUC_JP" => "ญี่ปุ่น", - "charset_ISO_2022_JP" => "ญี่ปุ่น", - "charset_SHIFT_JIS" => "ญี่ปุ่น", - "charset_KOI8_T" => "ภาษาทาจิกิสถาน", - "charset_ISO_8859_11" => "ไทย", - "charset_TIS_620" => "ไทย", - "charset_CP1254" => "ตุรกี", - "charset_CP1251" => "ริลลิก", - "charset_ISO_8859_5" => "ริลลิก", - "charset_KOI8_R" => "ริลลิก", - "charset_KOI8_U" => "ริลลิก", - "charset_CP1252" => "ภาษายุโรปตะวันตก", - "charset_ISO_8859_1" => "ภาษายุโรปตะวันตก", - "charset_ISO_8859_15" => "ภาษายุโรปตะวันตก", - "charset_Macintosh" => "ภาษายุโรปตะวันตก", - "charset_CP1255" => "ชาวอิสราเอล", - "charset_ISO_8859_8" => "ชาวอิสราเอล", - "charset_CP1253" => "กรีก", - "charset_ISO_8859_7" => "กรีก", - "charset_ARMSCII_8" => "อาร์เมเนีย", - "charset_CP1258" => "เวียตนาม", - "charset_VISCII" => "เวียตนาม", - "charset_CP1250" => "ภาษากลางยุโรป", - "charset_ISO_8859_2" => "ภาษากลางยุโรป", - "charset_default_set" => "การเข้ารหัสไฟล์", - "charset_convert_save" => "บันทึกไฟล์เข้ารหัสเป็น", - "PluginCenter" => "ศูนย์ปลั๊ก", - "PluginBuy" => "อนุมัติการซื้อ", - "PluginInstalled" => "ได้รับการติดตั้ง", - "PluginUpdate" => "ปรับปรุง", - "PluginListNull" => "มีเนื้อหาไม่เป็น!", - "PluginType" => "การจัดหมวดหมู่", - "PluginTypeAll" => "สมบูรณ์", - "PluginTypeFile" => "ไฟล์ที่เพิ่มขึ้น", - "PluginTypeSafe" => "เครื่องมือรักษาความปลอดภัย", - "PluginTypeTools" => "ประโยชน์", - "PluginTypeMedia" => "มัลติมีเดีย", - "PluginTypeOthers" => "อื่น ๆ", - "PluginInstall" => "ติดตั้งปลั๊กอิน", - "PluginEnable" => "เปิดใช้งานปลั๊กอิน", - "PluginDisable" => "ปิดการใช้งาน", - "PluginRemove" => "ถอนการติดตั้งปลั๊ก", - "PluginConfig" => "กำหนดค่าปลั๊กอิน", - "PluginStatus" => "รัฐ", - "PluginStatusEnabled" => "เปิดการใช้งาน", - "PluginStatusDisabled" => "ไม่ได้เปิดใช้", - "PluginStatusNotInstall" => "ไม่ได้ติดตั้ง", - "PluginInstalling" => "การติดตั้ง ...", - "PluginHasUpdate" => "อัพเดท", - "PluginUpdateStart" => "ปรับปรุงปลั๊กอิน", - "PluginNeedConfig" => "จำเป็นที่จะต้องเปิดการใช้งานกำหนดค่าเริ่มต้น", - "PluginConfigNotNull" => "ฟิลด์ที่จำเป็นต้องไม่ว่างเปล่า!", - "PluginOpen" => "เปิด", - "PluginAuther" => "ผู้เขียน", - "PluginVersion" => "ฉบับ", - "PluginDownloadNumber" => "การติดตั้ง", - "PluginBack" => "กลับ", - "PluginReadme" => "ลักษณะ", - "PluginResetConfig" => "เรียกคืนการตั้งค่าเริ่มต้น", - "PluginInstallSelf" => "ติดตั้งด้วยตนเอง", - "Plugin.config.auth" => "สิทธิ์", - "Plugin.config.authDesc" => "ทั้งหมดของการตั้งค่าที่มีอยู่หรือระบุผู้ใช้กลุ่มผู้ใช้กลุ่มสิทธิสามารถใช้", - "Plugin.config.authOpen" => "เปิดการเข้าถึง", - "Plugin.config.authOpenDesc" => "ไม่จำเป็นต้องไปเยี่ยมชมสามารถเข้าถึงได้สามารถใช้สำหรับการโทรติดต่อภายนอก", - "Plugin.config.authAll" => "เจ้าของ", - "Plugin.config.authUser" => "ผู้ใช้งาน", - "Plugin.config.authGroup" => "แผนกที่กำหนด", - "Plugin.config.authRole" => "กลุ่มสิทธิมนุษยชน", - "Plugin.Config.openWith" => "เปิดสไตล์", - "Plugin.Config.openWithDilog" => "โต้ตอบภายใน", - "Plugin.Config.openWithWindow" => "หน้าใหม่จะเปิดขึ้น", - "Plugin.Config.fileSort" => "การขยายการเชื่อมโยงความสำคัญ", - "Plugin.Config.fileSortDesc" => "ที่มีขนาดใหญ่ส่วนขยายที่จะเปิดความสำคัญสูง", - "Plugin.Config.fileExt" => "รูปแบบไฟล์ที่สนับสนุน", - "Plugin.Config.fileExtDesc" => "ส่วนขยายที่เกี่ยวข้องกับ plug-in", - "Plugin.tab.basic" => "การตั้งค่าพื้นฐาน", - "Plugin.tab.auth" => "สิทธิ์", - "Plugin.tab.others" => "การตั้งค่าอื่น ๆ", - "Plugin.default.aceEditor" => "Ace บรรณาธิการ", - "Plugin.default.htmlView" => "ดูตัวอย่างหน้าเว็บ", - "Plugin.default.picasa" => "Picasa เรียกดูภาพ", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "เล่น JPlayer", - "Plugin.auth.viewList" => "รายการปลั๊กอิน", - "Plugin.auth.setting" => "การตั้งค่าปลั๊กอิน", - "Plugin.auth.status" => "ปิด", - "Plugin.auth.install" => "การติดตั้ง / ถอนการติดตั้ง", - "Explorer.UI.openWith" => "เลือกเปิด", - "Explorer.UI.openWithText" => "Notepad เพื่อเปิด", - "Explorer.UI.appSetDefault" => "ตั้งค่าเปิดเริ่มต้น", - "Explorer.UI.appAwaysOpen" => "มักจะใช้โปรแกรมที่เลือกที่จะเปิดไฟล์นี้", - "Explorer.UI.selectAppDesc" => "เลือกโปรแกรมที่คุณต้องการที่จะเปิดไฟล์นี้", - "Explorer.UI.selectAppWarning" => "กรุณาเลือกโปรแกรม!", - "Explorer.UI.appTypeSupport" => "ได้รับการสนับสนุน", - "Explorer.UI.appTypeAll" => "แอปพลิเคชันทั้งหมด", - "kodApp.oexe.edit" => "แก้ไขแอปพลิเคชันแสง", - "kodApp.oexe.open" => "เปิดโปรแกรมของแสง" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/tr/about.html b/plugin/document/kod/config/i18n/tr/about.html deleted file mode 100644 index 91d0768d9..000000000 Binary files a/plugin/document/kod/config/i18n/tr/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/tr/edit.html b/plugin/document/kod/config/i18n/tr/edit.html deleted file mode 100644 index 3d9a16b60..000000000 --- a/plugin/document/kod/config/i18n/tr/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    zengin işlevsellik

                    -

                    Kod otomatik olarak ister

                    -

                    Çok teması: favori programlama stili seçin

                    -

                    Özel Yazı: Olay yerinde kullanım için

                    -

                    Çok imleç düzenleme, yüce karşılaştırılabilir blok düzenleme çevrimiçi programlama deneyimi

                    -

                    Blok katlama, genişletmek; sarın

                    -

                    birden fazla sekme desteği, anahtarlama sırası sürükleyin;

                    -

                    birden çok belge bakımı, bulma ve değiştirme; Geçmiş;

                    -

                    '' [], {} (), '' Otomatik tamamlama

                    -

                    online programlama aşık olanak çevrimiçi ve gerçek zamanlı önizleme!

                    -

                    destek zendcodeing, kod seksen yazmak

                    -

                    keşif için bekleyen daha fazla özellik ......

                    -
                    -
                    -

                    Kod vurgulama 150 çeşit

                    -

                    İpucu: html, JavaScript, CSS, daha az, sass, SCSS

                    -

                    web geliştirme: php, perl, python, yakut, kartal, go ...

                    -

                    Geleneksel diller: java, c c ++, C #, ActionScript, VBScript ...

                    -

                    Diğer: markdown, kabuk, sql, lua, xml, yaml ...

                    -
                    -
                    -
                    -
                    -

                    kısayol Eylem

                    -
                     Yaygın kullanılan kısayollar: 
                    - ctrl + s kaydetmek için 
                    - ctrl seçkin bir bütün ctrl + x Cut + 
                    - ctrl + c ctrl + v yapıştır kopyala 
                    - ctrl + z geri al Geri al Anti-ctrl + y 
                    - ctrl + f değiştirme ctrl + f + f bulmak için 
                    - win + alt + 0 çöküşü tüm kazanmak + alt + 0 + Tümünü Genişlet vardiya 
                    - esc [otomatik olarak iptal Çık arama ... ister] 
                    - ctrl-shift-s Önizleme 
                    - ctrl-shift-e gösterisi ve Yakın fonksiyonu 
                    -
                    -
                     seçin: 
                    - Fare marquee - sürükle 
                    - / Yukarı / sola / aşağı / sağ shift + home / end 
                    - shift + pageup / PageDown seçmek için aşağı yukarı çevirmek ve 
                    - ctrl + shift + ev / başlangıcına ve sonuna kadar geçerli imleç sonu 
                    - alt + fare blok seçimi sürükleyin 
                    - ctrl + alt + g toplu seçme ve mevcut çoklu sekme editörü girmek 
                    -
                    -
                     imleç: 
                    - Ev / end / yukarı / sola / aşağı / sağ 
                    - ctrl + ev / son belge kafa / kuyruk imleci 
                    - eşleşen etiketine ctrl + p Atlama 
                    - PageUp / PageDown yukarı ve aşağı imleç 
                    - alt + sol / sağ imleç satırın üstüne taşımak için 
                    - satırın sonuna + sol / sağ imleç vardiya & 
                    - ctrl + l, belirli bir satıra atlamak için 
                    - ctrl + alt + / aşağı (aşağıda) artırmak yukarı imleç 
                    -
                    -
                     Düzenleme: 
                    - ctrl + / Yorum ve yorumsuz ctrl + alt + a Justified 
                    - tablo sekme hizalama shift + tablo genel ilerleme tablosu 
                    - tüm satırı ctrl silmek silmek + d 
                    - ctrl sağ kelime satır silmek için silme + 
                    - ctrl / shift + backspace Soldaki kelimeyi silmek için 
                    - alt + shift + yukarı / aşağı ve kopya hattına eklenen (aşağıda) düzlem 
                    - alt imlecin sağında içeriğini silmek için silmek + 
                    - alt + yukarı / aşağı akım hattı ve hat (bir sonraki hat değişimi) üzerinde 
                    - ctrl + shift + d satır kopyalanabilir ve aşağıdaki ilave 
                    - ctrl kelimenin hakkını silmek için silme + 
                    - u küçük harfe dönüştürülür + ctrl + shift 
                    - ctrl büyük harfe u seçili metni + 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/tr/help.html b/plugin/document/kod/config/i18n/tr/help.html deleted file mode 100644 index 1c1b593f2..000000000 --- a/plugin/document/kod/config/i18n/tr/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    dosya Yönetimi
                    -

                    Dosya Seçimi: Radyo, fare marquee, ctrl rastgele seçilmiş, yukarı ve aşağı klavye, ev, son seçim-seçim kaydırır.

                    -

                    Dosya operasyonu: Bir dosyayı seçtikten sonra, silmek, kopyalamak, kesmek sıkıştırma özelliklerini görüntülemek, yeniden adlandırmak açık Önizleme ve diğer işlemler için ......

                    -

                    Dosya Yükleme: Yükleme birden fazla dosya toplu, HTML5 sürükle yükleme (sürükle sorunsuz pencere, sürükle yükleyebilir ve klasörler için destek düşmesi)

                    -

                    Sağ fonksiyon: Sağ dosya, klasör, sağ, daha doğru seçim işleminden sonra, masaüstü, sağ, sağ dizin ağacı, sağ bağlı menü kısayolları
                    - (- Kopyala - Tümünü Seç Kes - Yapıştır - Sil - Yeni isim ver, set ......)

                    -

                    Dosya Tarayıcı: Liste modu, simge modu; alt klasörler halinde çift tıklayın; adres çubuğuna çalışması; (ileri ve geri) bir klasör rekor tersi kaydını açın

                    -

                    Destek sürükle ve bırak: Belirtilen klasör işlevleri yerine getirmek için kesilen, sürükle kontrol

                    -

                    Kısayol tuşları: silmek, ctrl + A Tümünü Seç, ctrl + kopyalamak için C + X Kes, dosya arama (arama içeriği) ctrl

                    -
                    -
                    -
                    dosya Önizleme
                    -

                    Önizleme Dosya: Bir metin dosyası düzenleme ve kaydetme içeriğini görüntülemek, html, swf dosya önizleme,

                    -

                    Görüntü Önizleme: küçük, görüntü slayt gösterisi otomatik nesil;

                    -

                    Ses çalma: çevrimiçi müzik ve video dosyalarını oynatmak, destek mp3, WMA, orta, AAC, WAV, MP4,

                    -

                    Video: online video oynatma, desteklenen formatlar: FLV, F4V, 3gp

                    -

                    office: office Çevrimiçi Önizleme, desteklenen formatlar: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    Kısayollar
                    -

                    Aç girmek

                    -

                    ctrl tüm seçkin +

                    -

                    ctrl + c kopyalamak için seçilen

                    -

                    ctrl + v yapıştırmak için

                    -

                    ctrl + x Cut

                    -

                    ctrl + f geçerli dizini arama

                    -

                    alt + n Yeni Dosya

                    -

                    alt + m Yeni Klasör

                    -

                    Sil silmek seçilen

                    -

                    geri al geri

                    -

                    ileri ctrl + backspace

                    -

                    Seçilen f2 Rename (klasör)

                    -

                    Ev / bitiş dosyayı seçmek için / yukarı / aşağı / sol / sağ

                    -

                    Herhangi bir tuşla otomatik döngüyü Seçilen karakter dosyaları ve klasörleri ilk harfini basın edin

                    -
                    diff --git a/plugin/document/kod/config/i18n/tr/main.php b/plugin/document/kod/config/i18n/tr/main.php deleted file mode 100644 index 5d6fe7797..000000000 Binary files a/plugin/document/kod/config/i18n/tr/main.php and /dev/null differ diff --git a/plugin/document/kod/config/i18n/uk/about.html b/plugin/document/kod/config/i18n/uk/about.html deleted file mode 100644 index 7618d5ec7..000000000 --- a/plugin/document/kod/config/i18n/uk/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer є що?
                    -

                    KODExplorer є відкритим вихідним кодом веб-інтерфейс управління онлайн документ, редактор коду. Вона забезпечує свого роду класичні вікна користувальницького інтерфейсу, набір онлайн управління документами, попередній перегляд файлів, редагувати, завантажувати, завантажувати, розпакуйте онлайн відтворення музики. Дозволяє домогтися веб-розробки безпосередньо в браузері, вихідний код файлу попереднього перегляду, і розгорнути власник сайту і місцеве управління, як легкий, швидкий і безпечний досвід.

                    -

                    - дизайн -

                    -

                    класичної традиції, прагнення до інновацій, щоб надати користувачам зручний, безпечний і простий у використанні онлайн-систему управління хмарою.

                    -

                    щоразу, коли (якщо), де (де), є веб щоразу, коли ви хочете (хочете) це ваш інструмент управління (4W політика).

                    -

                    - орієнтований на користувача -

                    -

                    В даний час система управління KODExplorer в основному розташовані в персональному хмарі хостингу, малий управління підприємством хмарних ресурсів, управління мережевою диск, управління малими та середніми сайтів. Web Developer & Master (ветерани): редактора, стисненого резервного копіювання, розгортання, класичні робочі вікна інтерфейсу, легко почати і позбутися від хоста SSH, FTP команди комплекс бурових робіт.

                    -

                    особистий приватне хмара (новобранець): мережеві управління дискові ресурси, ту ж операцію класичні вікна інтерфейсу, ви можете помістити диск музики, перегляду файлів, екран завантаження і вивантаження швидко і легко.

                    -
                    - -
                    -
                    Особливості
                    -

                    всеосяжного управління документами, потужний онлайн редактор файлів

                    -

                    де б ви не знаходилися, ви можете управляти своїми файлами і онлайн-розваг, онлайн написання коду! Так само, як підходить для використання в якості операційної системи.

                    -

                    велике право операції з пересадки місцевої досвід, перетягнути, вікно вибору, ярлики, пошук файлів (пошук вмісту) ......

                    -

                    вікно вибору, перетягнути рух, завантаження перетягування, онлайн редактор, відео-плеєр, розпаковувати. Повна Аякса продуктивність гарантія і досвід!

                    -

                    кожна функція прямої безшовне з'єднання, в діалоговому вигляді, функції управління багатоцільові

                    -

                    Редактор підтримує мульти-документ, підтримка ZendCoding HTML, CSS, JS вище ефективність кодування!

                    -

                    ідеальний підтримка китайського, спотворений вирішення різних ситуацій;

                    -
                    - -
                    -
                    з відкритим вихідним кодом технології прийняття
                    -

                    1.Jquery:jpuery (плагін: Hotkeys.ztree.contentmenu) .js пануючого рамки розвитку. Робота операції Dom, BOM, операції CSS, і пакет Ajax

                    -

                    2.ArtDialog:гарний дизайн, сильна сумісність браузера віджет діалогу. Так спливаючі ручки, події і передача даних, щоб отримати більш уніфіковане управління

                    -

                    3.Ztree:управління список дерева, масштабованість дуже сильне маніпулювання даними дерево віджет

                    -

                    4.codemirror:редактор коду JS плагінів, підтримує безліч мов програмування для виділення

                    -

                    5.zendcoding:а підтримка HTML коди швидкого запису плагінів. Спрощує визначення коду написано. Простий збірник

                    -

                    6.less:ефективна модель функціональне розвиток CSS для поліпшення переднього кінця Таблиці стилів CSS можливість багаторазового використання , Простий збірник

                    -

                    7.SWFUpload:флеш завантажити файл

                    -

                    8 .CMP4:дуже хороший плагін Flash Player мультимедійних файлів, підтримка потокового мультимедіа, популярний інструмент для відтворення музики, відео. Підтримка для шкіри, високо настроюються параметри. Динамічний список XML завантажений. ммс потокового мультимедіа, RSTP відкрита ліцензія джерело підтримка відтворення медіа

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/uk/edit.html b/plugin/document/kod/config/i18n/uk/edit.html deleted file mode 100644 index 0a8ec12bc..000000000 --- a/plugin/document/kod/config/i18n/uk/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    багаті функціональні можливості

                    -

                    код автоматично запропонує

                    -

                    мульти-тема: вибрати свій улюблений стиль програмування

                    -

                    користувальницьких шрифтів: для наступної сцени за допомогою

                    -

                    більш редагування курсора, редагування блоку і т.д. порівнянна з піднесеною досвід онлайн програмування

                    -

                    блоку згорнуто, розгорніть, загорнути

                    -

                    підтримка декількох вкладок, перетягніть послідовність перемикань;

                    -

                    збереження декількох документів, пошук і заміна; історія;

                    -

                    автозаповнення [], {}, (), "", ""

                    -

                    онлайн перегляд в реальному часі, що дозволяє закохатися в інтернет-програмуванні!

                    -

                    zendcodeing підтримка, писати код вісімдесят

                    -

                    більше можливостей чекає вашого відкриття ......

                    -
                    -
                    -

                    150 DuoZhong підсвічування коду

                    -

                    карта: HTML, JavaScript, CSS, менше, зухвалість, СКС

                    -

                    веб-розробки: PHP, Perl , Python, Ruby, elang, йди ...

                    -

                    традиційні мови: Java, C, C ++, C #, Actionscript, VBScript ...

                    -

                    інше: уцінки, оболонки, SQL, Lua, XML, YAML ...

                    -
                    -
                    -
                    -
                    -

                    поєднання клавіш

                    -
                    часто використовувані сполучення клавіш: 
                    - Ctrl + S, щоб зберегти 
                    - Ctrl + A Виділити все Ctrl + X зсуву скоротити 
                    - Ctrl + C, щоб скопіювати Ctrl + V, щоб вставити 
                    - Ctrl + Z скасувати Ctrl + Y анти відкликанням 
                    - Ctrl + F, щоб знайти Ctrl + F + F, щоб замінити 
                    - Win + Alt + 0 згорнути все виграти + Alt + Shift + 0 розгорнути всі 
                    - ESC [пошук виходу скасовується автоматично запитує ...] 
                    - Ctrl-Shift-s перегляд 
                    - Ctrl-Shift-е шоу і функція Закрити 
                    -
                    -
                    вибір: 
                    - миші шатровим - перетягнути 
                    - зрушення + Home / End / вгору / вліво / вниз / вправо 
                    - Shift + PageUp / PageDown перевернути догори і вниз, щоб вибрати 
                    - Ctrl + Shift + Home / кінець поточного курсора в початок і кінець 
                    - Alt + миша, щоб перетягнути вибір блоку 
                    - Ctrl + Alt + G партії вибрати і ввести поточний редактор з декількома вкладками 
                    -
                    -
                    курсор: 
                    - Home / End / вгору / вліво / вниз / вправо 
                    - Ctrl + Home / End курсор уподобання документа / хвіст 
                    - Ctrl + P перейти до відповідності тег 
                    - Pageup / PageDown курсор вгору і вниз 
                    - Alt + вліво / вправо курсора, щоб перейти до верхньої частини лінії 
                    - Shift + вліво / вправо, щоб перемістити курсор в початок і кінець 
                    - Ctrl + L Перейти до зазначеної рядку 
                    - Ctrl + Alt + вгору / вниз (нижче) збільшити курсор 
                    -
                    -
                    редактор: 
                    - Ctrl + / коментувати і розкоментувати Ctrl + Alt + лівий і правий вирівнювати 
                    - вкладку таблиця вирівнювання Shift + таблиці таблиці в цілому просування 
                    - видалити видалити Ctrl + D, щоб видалити весь рядок 
                    - Ctrl + Delete, щоб видалити рядок на потрібне слово 
                    - Ctrl / Shift + Backspace, щоб видалити слово зліва 
                    - Alt + Shift + вгору / вниз копію і додав до лінії (нижче) особи 
                    - Alt + Delete, щоб видалити вміст праворуч від курсора 
                    - Alt + вгору / вниз від поточного рядка і рядки (наступного обміну лінія) 
                    - Ctrl + Shift + D рядки копіюються і додані наступні 
                    - Ctrl + Delete видалити право слова 
                    - Ctrl + Shift + U перетворюється в нижній регістр 
                    - Ctrl + U виділений текст у верхній регістр 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/uk/help.html b/plugin/document/kod/config/i18n/uk/help.html deleted file mode 100644 index 5afbc842c..000000000 --- a/plugin/document/kod/config/i18n/uk/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    управління файлами
                    -

                    Вибір файлу: радіо, миша рядка, що біжить, перекласти ці вибори, Ctrl, обраний випадковим чином, клавіатуру вгору і вниз, додому, вибір кінця.

                    -

                    Робота з файлами: Після вибору файлу, ви можете копіювати, вирізати, видаляти, переглядати властивості стиснення, перейменовувати, відкритий перегляд і інші операції ......

                    -

                    Завантаження файлів: Завантажити кілька файлів пакетної; html5 завантаження перетягування (плавно завантажувати вікна, підтримку перетягування для папок)

                    -

                    Права функція правою кнопкою файл, папку, праворуч, більше відразу після операції виборів, робочий стіл, правий, правий дерево каталогів, права межа ярлики меню
                    - (Select All - Копіювати - Вирізати - Вставити - Видалити - щоб перейменувати, комплект ......)

                    -

                    Браузер файлів: режим списку, режим значок, двічі клацніть на вкладені папки, операції в адресному рядку, відкрити папку записи протилежний рекорд (вперед і назад)

                    -

                    Підтримка перетягування: Перевірте опір, скоротити для досягнення зазначеної функції папки

                    -

                    Клавіші швидкого доступу: видалити видалити, Ctrl + A Виділити все, Ctrl + C, щоб скопіювати, + X Вирізати, пошук файлів (пошук по вмісту) Впр

                    -
                    -
                    -
                    Попередній перегляд файлу
                    -

                    Попередній перегляд файлу: переглядати вміст редагування текстового файлу і збереження; HTML, SWF-файл попереднього перегляду,

                    -

                    Попередній перегляд: автоматична генерація мініатюр, слайд-шоу зображень;

                    -

                    Відтворення аудіо: грати музику онлайн і відео файлів, підтримка MP3, WMA, MID, AAC, WAV; MP4,

                    -

                    Відео: онлайн відтворення відео, підтримувані формати: FLV, F4V, 3gp

                    -

                    офіс: Інтернет Preview, Підтримувані формати: DOC, DOCX, PPT, PPTX, XLS, XLSX

                    -
                    -
                    -
                    Клавіші швидкого доступу
                    -

                    відкрити введіть

                    -

                    Ctrl + A Виділити все

                    -

                    CTRL + C, щоб скопіювати обраний

                    -

                    Ctrl + V, щоб вставити

                    -

                    Ctrl + X Вирізати

                    -

                    Ctrl + F для пошуку поточного каталогу

                    -

                    Alt + N Новий файл

                    -

                    Alt + M Нова папка

                    -

                    Видалити Видалити вибраний

                    -

                    Backspace Назад

                    -

                    Ctrl + Backspace вперед

                    -

                    f2 Перейменувати обраний (папка)

                    -

                    головна / кінець / вгору / вниз / вліво / вправо, щоб вибрати файл

                    -

                    Anykey Перевірте, щоб натиснути на першу букву символьних файлів & папок обраного автоматичного циклу

                    -
                    diff --git a/plugin/document/kod/config/i18n/uk/main.php b/plugin/document/kod/config/i18n/uk/main.php deleted file mode 100644 index b09745aac..000000000 --- a/plugin/document/kod/config/i18n/uk/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Будь ласка, виберіть файл ...", - "path_api_select_folder" => "Будь ласка, виберіть папку ...", - "path_api_select_image" => "Будь ласка, виберіть зображення ...", - "share_can_upload" => "дозволити завантаження", - "move_error" => "Перемістити не вдалося", - "setting_basic" => "Основні налаштування", - "setting_user_sound_open" => "відкрита бухта", - "setting_user_animate_open" => "відкрити Анімація", - "recycle_open_if" => "відкрити кошика", - "recycle_open" => "відкритий", - "setting_user_recycle_desc" => "Після видалення буде видалено безпосередньо фізичне видалення", - "setting_user_animate_desc" => "Вікно відкрито та інша анімація", - "setting_user_sound_desc" => "Операція звук", - "setting_user_imageThumb" => "Ескізи зображень", - "setting_user_imageThumb_desc" => "Кращий досвід перегляду після відкриття", - "setting_user_fileSelect" => "Відкрийте перевірку значка файлу", - "setting_user_fileSelect_desc" => "Перевірте значок файлу лівої клавіші, клацніть правою кнопкою миші на клавіатурі", - "qrcode" => "URL QR-код", - "theme_mac" => "Mac мінімалістський білий", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Метро Синій Класичний", - "theme_metro_green" => "Метро світло-зелений", - "theme_metro_purple" => "Метро елегантний фіолетовий", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Метро яскраво-помаранчевий", - "theme_alpha_image" => "Яскравий - літаючий", - "theme_alpha_image_sun" => "Яскравий - Захід", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Користувальницькі", - "theme_diy_title" => "Параметри користувальницької теми", - "theme_diy_background" => "фон", - "theme_diy_image" => "зображення", - "theme_diy_color_blur" => "градієнт кольору", - "theme_diy_image_blur" => "розмивання Зображення", - "theme_diy_image_url" => "фотографій адреса", - "theme_diy_color_start" => "починаючи колір", - "theme_diy_color_end" => "кінець Колір", - "theme_diy_color_radius" => "градієнт кут", - "system_role_admin_set" => "Адміністратори мають всі права, без установки!", - "login_error_user_not_use" => "Користувач був відключений! Будь ласка, зверніться до адміністратора", - "login_error_kod_version" => "конфлікт версій", - "login_error_role" => "Перегляд дозволів групи не існує, будь ласка, зверніться до адміністратора", - "no_permission_group" => "Ви не в цій групі!", - "no_permission_write" => "Каталог не має права на запис", - "user" => "користувач", - "save_as" => "зберегти як", - "check_update" => "оновлення", - "keyboard_type" => "режим клавіатури", - "font_family" => "шрифти", - "code_mode" => "підсвічування синтаксису", - "path_can_not_share" => "Підтримка тільки поділитися своїми власними документами!", - "path_can_not_action" => "Цей каталог не підтримує цю операцію!", - "wap_page_pc" => "PC Версія", - "wap_page_phone" => "мобільний", - "image_size" => "розміри зображення", - "no_permission_action" => "У вас немає цього дозволу, будь ласка, зверніться до адміністратора!", - "path_is_root_tips" => "Він прийшов в кореневій каталог!", - "kod_group" => "організація", - "my_kod_group" => "Я в кафедрі", - "space_tips_default" => "(GB) 0 немає меж", - "space_tips_full" => "без обмеження", - "space_size" => "простір", - "space_size_use" => "Використання простору", - "space_is_full" => "Не залишилося достатньо місця, будь ласка, зв'яжіться з адміністратором!", - "system_open_true_path" => "Успішно відкритий в файловий менеджер!", - "group_role_error" => "дозволу ролі помилок (без настройки дозволу)", - "group_role_error_admin" => "недостатньо дозволів", - "markdown_content" => "Таблиця змісту", - "system_group" => "Користувачі та відділи", - "system_group_edit" => "Управління відділом", - "system_group_role" => "роль особистості", - "system_group_create" => "Новий відділ", - "system_group_name" => "Назва кафедри", - "system_group_father" => "Начальник відділу", - "system_group_add" => "Додати підрозділ", - "system_group_remove" => "Видаліть відділ", - "system_group_remove_tips" => "Ви впевнені, що ви видалите відділ?
                    Після видалення частини користувача буде видалено, підсектор перейшов у кореневий сектор", - "system_group_select" => "Виберіть відділ", - "system_group_select_result" => "Члени будуть належати до наступних секторах", - "system_role_admin_tips" => "Зауваження: Системні адміністратори не мають повноважень контролювати", - "system_member_action" => "управління користувачами", - "system_member_add" => "новий користувач", - "system_member_role" => "ролі дозволів", - "system_member_role_select" => "вибрати", - "system_member_password_tips" => "Чи не заповнювати не змінений", - "system_set_home_path" => "Призначений для користувача каталог", - "system_set_home_path_tips" => "Каталог за замовчуванням порожній", - "system_member_group" => "Де департамент", - "system_member_group_edit" => "Редакційний відділ", - "system_member_remove" => "видалити користувача", - "system_member_remove_tips" => "Підтвердити видалення користувача?
                    після того, як ви видалите каталог користувача буде повністю стертий", - "system_member_set_role" => "Для підтвердження зміни обраних дозволів групи користувачів?", - "system_member_remove_group" => "Визначити обраний користувач буде видалений з цієї групи?", - "system_member_import" => "Bulk додати", - "system_member_import_desc" => "Один користувач в рядку,
                    вже існують Ігнорування", - "system_member_use" => "включити", - "system_member_unuse" => "забороняти", - "system_member_space" => "Встановити розмір простору користувача ", - "system_member_space_tips" => " Встановити розмір простору користувача ", - "system_member_space_number" => " Повинно бути число!", - "system_member_group_config" => "Відділ налаштування партії", - "system_member_group_remove" => "Вилучено з кафедри", - "system_member_group_insert" => "Додати до відділу", - "system_member_group_reset" => "Скинути відділ", - "system_member_group_error" => "Департамент помилка", - "system_group_action" => "Управління відділом", - "system_role_add" => "Додати роль ідентичності", - "system_role_read" => "Тільки для читання", - "system_role_write" => "Можна читати і писати", - "system_setting_root_path" => "доступ до Root", - "system_setting_root_path_desc" => "Тільки системний адміністратор може отримати доступ до всіх каталогів, інші права група користувачів може бачити тільки свій власний каталог користувача. Якщо ви хочете, щоб включити або вимкнути
                    доступ адміністратора до інших каталогів, ви можете змінити PHP open_basedir параметрів анти-міжсайтових,встановити", - "system_group_role_title" => "Управління ролі органів влади", - "system_group_role_remove" => "Добре, щоб видалити роль департаменту", - "system_group_role_style" => "стиль", - "system_group_role_display" => "чи", - "system_group_role_display_desc" => "Вкажіть, чи відображати права користувачів відділень", - "role_type_name_read" => "зчитування", - "role_type_name_read:list" => "список файлів", - "role_type_name_read:info" => "Файл (папка) властивість View, пошук папки", - "role_type_name_read:copy" => "копіювання файлів", - "role_type_name_read:preview" => "Попередній перегляд файлів (фотографії, документи, аудіо та відео)", - "role_type_name_read:download" => "Файл (папку) Завантажити", - "role_type_name_write" => "запис", - "role_type_name_write:add" => "Створіть файл (папку), витягти стислий файл", - "role_type_name_write:edit" => "Збережіть файл для редагування", - "role_type_name_write:change" => "Перейменувати, налаштувати структуру каталогів", - "role_type_name_write:upload" => "Файл (папку) завантажувати, дистанційна завантажити", - "role_type_name_write:remove" => "Файл (папку) видаляти, вирізати", - "group_guest" => "відвідувачі", - "group_guest_desc" => "Ви не є членом департаменту,
                    можете отримати доступ лише до розділу [розділений каталогом відділень] наступного вмісту, дозволу для читання.", - "group_role_lebel_desc" => "Ви є членом цього відділу
                    Всі документи всередині відділу Всі права захищені адміністратором", - "button_save_and_add" => "Зберегти і продовжити, щоб додати", - "path_cannot_search" => "Каталог не підтримує пошук!", - "not_support" => "Чи не дозволені!", - "group_not_exist" => "Група користувачів не існує!", - "upload_clear_all" => "Очистити всі", - "upload_clear" => "Очистити завершені", - "upload_setting" => "встановлювати", - "upload_tips" => "Використовує скибочку завантажувати, більше не підлягає php.ini межі, рекомендується перетягнути папку хром і падіння досвід завантаження", - "upload_exist" => "Файл з таким же ім'ям", - "upload_exist_rename" => "перейменовувати", - "upload_exist_replace" => "обкладинка", - "upload_exist_skip" => "скакати", - "upload_add_more" => "Bulk додати", - "more" => "більше", - "system_setting" => "Системні налаштування", - "openProject" => "Відкрийте редактор проекту", - "url_download" => "скачати", - "url_link" => "URL", - "app_type_link" => "Клавіші швидкого доступу", - "createLink" => "створити ярлик", - "createLinkHome" => "Направлено на робочий стіл ярлик", - "createProject" => "Додавання до проекту редактора", - "only_read" => "Тільки для читання", - "only_read_desc" => "Каталог не має права на запис
                    Можна встановити дозволи для цього каталогу на сервері", - "not_read" => "нечитаний", - "explorerNew" => "KOD посилання", - "zip_download_ready" => "Після стиснення буде автоматично завантажувати, будь ласка, зачекайте ...", - "set_background" => "Встановити як шпалери для робочого столу", - "share" => "Поділитися", - "my_share" => "Моя частка", - "group_share" => "Груповий зовнішній обмін", - "share_edit" => "Редагувати публікацію", - "share_remove" => "Скасувати обмін", - "share_remove_tips" => "Ви впевнені, що хочете скасувати спільний доступ? Публічне з'єднання буде недійсним.", - "share_path" => "Поділіться цим шляхом", - "share_title" => "Обмін ресурсами", - "share_name" => "Поділіться заголовком", - "share_time" => "витікання", - "share_time_desc" => "Нуль не встановлено", - "share_password" => "витяг пароля", - "share_password_desc" => "Порожній пароль не встановлено", - "share_cancle" => "заборонити обмін", - "share_create" => "Створити публічну посилання", - "share_url" => "Загальний адреса", - "share_not_download" => "завантажити заборона", - "share_not_download_tips" => "Шерер заборонили завантаження!", - "share_code_read" => "читач коду", - "share_save" => "збереження конфігурації", - "share_error_param" => "Параметр Помилка!", - "share_error_user" => "Інформація про користувача Помилка!", - "share_error_sid" => "Частка не існує!", - "share_error_time" => "Ви приходите занадто пізно, частка минув!", - "share_error_path" => "Загальний файл не існує, то він буде знищений або видалити його!", - "share_error_password" => "Неправильний пароль!", - "share_error_show_tips" => "Цей тип не підтримує попередній перегляд файлів!", - "share_view_num" => "переглядів:", - "share_download_num" => "завантаження:", - "share_open_page" => "Відкрийте загальну сторінку", - "open_the_path" => "Введіть каталог", - "recycle_clear" => "Очистити кошик", - "recycle_clear_success" => "Порожній успіх сміття!", - "recycle_clear_info" => "Ви впевнені, що ви хочете повністю порожній сміття?", - "fav_remove" => "Скасувати збір", - "remove_item" => "предмети", - "uploading" => "вивантаження", - "upload_tips_more" => "Занадто багато файлів, рекомендація стислій завантаження, а потім розпакувати онлайн!", - "uploading_move" => "У процесі злиття передавайте ...", - "show_file" => "Нові сторінки попереднього перегляду", - "unknow_file_title" => "Відкрити файл Tip!", - "unknow_file_tips" => "Не підтримали застосування цього файлу, ви можете:", - "unknow_file_try" => "пробувати", - "unknow_file_download" => "завантажити файл", - "unknow_plugin_search" => "встановлений пошук пов'язаних додатків", - "config_save_error_auth" => "Неможливо зберегти конфігурацію, адміністрація відключила можливість використовувати цей привілей!", - "config_save_error_file" => "Помилка, файл недоступний для запису!", - "beautify_code" => "код Formatter", - "convert_case" => "перетворення Case", - "convert_upper_case" => "Перетворений в верхній регістр", - "convert_lower_case" => "Перетворений в нижній регістр", - "editor_insert_time" => "Поточний час ", - "editor_md5" => " Шифрування Md5 ", - "editor_qrcode" => " Рядовий двомірний код ", - "editor_regx" => " Тестування регулярного виразу ", - "editor_chinese" => " Спрощена конвертація ", - "editor_chinese_simple" => " Перетворити на спрощений китайський ", - "editor_chinese_traditional" => " Перетворити на традиційний китайський ", - "editor_base64" => "Кодек Base64 ", - "editor_base64_encode" => " Кодування Base64 ", - "editor_base64_decode" => " Декодування Base64 ", - "editor_url" => " Кодек URL ", - "editor_url_encode" => " Кодування URL-адреси ", - "editor_url_decode" => " Дешифрування URL-адреси ", - "editor_unicode" => " Кодек Unicode ", - "editor_unicode_encode" => " Кодування Unicode ", - "editor_unicode_decode" => " Розшифровка Unicode", - "editor_tools_select_tips" => " Будь ласка, виберіть вміст, який потрібно перетворити!", - "editor_calc" => "Безкоштовний калькулятор", - "shortcut" => "Клавіші швидкого доступу", - "use_free" => "Продовжувати використовувати безкоштовну версію", - "learn_more" => "Детальніше", - "replace" => "заміщати", - "selectAll" => "вибрати", - "reload" => "перезавантажувати", - "about" => "на", - "complete_current" => "Авто-завершення струму", - "view" => "вид", - "tools" => "інструмент", - "help" => "допомога", - "not_exists" => "Не існує", - "group_role_fileDownload" => "завантаження", - "group_role_share" => "частка", - "users_share" => "поділ", - "system_setting_save" => "налаштування безпеки", - "system_setting_menu" => "управління меню", - "system_name" => "Назва програми", - "system_name_desc" => "Назва програми логотип", - "system_desc" => "опис програми", - "path_hidden" => "виключення Каталог", - "version_not_support" => "Ваша версія не підтримує це, будь ласка, перейдіть на офіційний веб-сайт, щоб купити розширену версію!", - "version_not_support_number" => "У міру того як число обмежень не підтримує цю операцію, будь ласка, купіть розширену версію офіційного сайту!", - "path_hidden_desc" => "Каталоги і файли за замовчуванням не відображається, розділених комами", - "new_user_folder" => "Новий користувач буде створений каталог за замовчуванням", - "new_user_folder_desc" => "через кому", - "new_user_app" => "Новий користувач буде створений додатком за замовчуванням", - "new_user_app_desc" => "Центр прикладних програм, безліч розділених комами", - "auto_login" => "Відвідувачі автоматичного входу в систему", - "auto_login_desc" => "Логін за замовчуванням користувачguest/guestкористувачів, після відкриття, щоб гарантувати, що користувач існує", - "first_in" => "Після входу в значення за замовчуванням", - "version_price_free" => "безкоштовно", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Довідник недоступна для запису, встановити каталог і все підкаталоги, щоб спробувати ще раз після того, як читання-запис!", - "menu_name" => "назва меню", - "menu_hidden" => "приховувати", - "menu_show" => "дисплей", - "menu_move_down" => "вниз", - "menu_move_up" => "вгору", - "menu_move_del" => "видаляти", - "menu_open_window" => "Відкрити нове вікно", - "menu_sub_menu" => "Підменю", - "url_path" => "URL-адресу", - "url_path_desc" => "URL-адресу або JS-код", - "no_permission_read" => "У вас немає дозволу на читання!", - "no_permission_download" => "У вас немає дозволу на скачування!", - "php_env_check" => "Умови експлуатації моніторинг:", - "php_env_error" => "Php бібліотека відсутня", - "php_env_error_ignore" => "Ігнорувати і введіть", - "php_env_error_version" => "PHP версія не може бути менше, ніж 5,0", - "php_env_error_path" => "Чи не доступний для запису", - "php_env_error_list_dir" => "Ваш веб-сервер відкриває каталог функцію зі списком з міркувань безпеки, відключити цю функцію!як?", - "php_env_error_gd" => "бібліотека Php GD повинна бути відкрита, в іншому випадку код, використовуйте ескіз не працюватиме належним чином", - "install_login" => "Ви можете використовувати наступний логін", - "install_enter" => "система", - "install_user_default" => "Адміністратор: {0} / (нижче встановити пароль)
                    Середній користувач: {1}
                    користувачі гостей: {2}", - "login_root_password" => "Встановити пароль адміністратора", - "login_root_password_repeat" => "Підтвердіть пароль ще раз", - "login_root_password_equal" => "Паролі не збігаються!", - "login_root_password_tips" => "Встановити пароль адміністратора!", - "forget_password" => "Забули пароль", - "forget_password_tips" => "Забули пароль адміністратора:
                    Будь ласка , увійдіть сервер видалити ./data/system/install.lock скидання;

                    Non-адміністратора Забули пароль:
                    Будь ласка, зверніться до адміністратора, щоб скинути!", - "copyright_desc" => "Kodexplorer є високо оцінений система управління веб-документ, ви можете використовувати його для внутрішнього управління документами або спільно, можуть також використовуватися на сервері управління сайтом, замінити Ftp, навіть webIDE безпосередньо в інтерактивному режимі розробки. Ви також можете запрограмувати друге розвиток, щоб інтегрувати це в існуючі системи.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Манго хмара • Провідник", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Манго хмара • Провідник", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, KOD, kodCloud, WebOS, webIDE, PHP filemanage, filemanage, Dao хмара, хмара манго, системи управління документами, підприємство хмара диск, дослідник ,, документацію, інтернет-офіс, інтернет-офіс, інтернет-CAD попередній перегляд, редагування онлайн , онлайн редактор", - "kod_meta_description" => "KodExplorer може затьмарити дорога (раніше манго хмара) є провідним постачальником державних / корпоративних приватних хмар і онлайн систему управління документообігом для особистих веб-сайтів, розгортання корпоративних приватних хмар, зберігання мережі, онлайн управління документообігом, інтернет для того щоб забезпечити безпечну і керовану, простий і легкий використання, високо індивідуальні приватні хмарні продукти. Використання Windows інтерфейсу стилю, практика роботи, без необхідності адаптації до швидко приступити до роботи, підтримувати сотні популярних онлайн-формат перегляд файлів, відтворення і редагування екологічного, потужного, це колись суд, вже не невіддільний від приватного хмара пропозицій.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "увійти", - "guest_login" => "Гість Вхід", - "username" => "Вхід в обліковий запис", - "userNickName" => "Нік користувача", - "password" => "пароль", - "login_code" => "коди", - "need_check_code" => "Код аутентифікації увійти з відкритим", - "need_check_code_desc" => "Після входу ви повинні ввести код підтвердження.", - "setting_csrf_protect" => "Відкрита захист CSRF", - "setting_csrf_protect_desc" => "Після відкриття типу атаки може ефективно захистити CSRF", - "login_rember_password" => "Запам'ятати пароль", - "setting_show_root_group" => "Перерахуйте всі відділи", - "setting_show_root_group_desc" => "Дерево каталогу кореневого департаменту слід перерахувати всі підрозділи", - "setting_show_share_user" => "Список всіх користувачів", - "setting_show_share_user_desc" => "Коректний відділ каталогу дерева вказується для всіх користувачів", - "setting_clear_user_recycle" => "Порожні кошики для всіх користувачів", - "setting_clear_cache" => "Очистити кеш", - "setting_icp" => "Авторське право або номер запису", - "setting_global_css" => "Призначені для користувача глобальні CSS", - "setting_global_css_desc" => "Всі сторінки будуть вставляти призначені для користувача CSS", - "setting_global_html" => "Статистичний код HTML", - "setting_global_html_desc" => "Всі сторінки будуть вставлені в цьому пункті HTML коді, код може бути поміщена статистика сторонньої", - "us" => "kodcloud.com", - "login_not_null" => "Ім'я користувача і пароль не може бути порожнім!", - "code_error" => "коди помилок", - "password_error" => "Ім'я користувача або пароль невірні!", - "password_not_null" => "Пароль не може бути порожнім!", - "old_password_error" => "Старий пароль неправильний!", - "permission" => "Дозвіл!", - "permission_edit" => "зміна дозволів", - "file_info_owner" => "власник", - "file_info_group" => "група", - "no_permission" => "Адміністратор вимкнув цей привілей!", - "no_permission_ext" => "Адміністратор заборонив цей тип прав доступу до файлів", - "dialog_max" => "максимізувати", - "dialog_min" => "мінімізувати", - "dialog_min_all" => "Згорнути все", - "dialog_display_all" => "Показати всі вікна", - "dialog_close_all" => "Закрити всі", - "open" => "відкритий", - "others" => "інше", - "open_with" => "Відкрито для ...", - "close" => "близько", - "close_all" => "Закрити всі", - "close_left" => "Закрийте ліву вкладку", - "close_right" => "Закрити вкладки праворуч", - "close_others" => "Закрити Інша", - "loading" => "Операція ...", - "warning" => "попередження", - "getting" => "Отримайте ...", - "sending" => "Передача даних ...", - "data_error" => "Помилка в даних!", - "get_success" => "Отримати успіх!", - "save_success" => "Успішно збережено!", - "success" => "успішна робота", - "error" => "Чи не вдалося виконати операцію", - "error_repeat" => "Операція не вдалася, ім'я вже існує!", - "word_error" => "Помилка ", - "word_success" => " Успіх", - "system_error" => "системна помилка", - "name" => "ім'я", - "type" => "тип", - "contain" => "містити", - "address" => "розташування", - "size" => "розмір", - "byte" => "байт", - "path" => "шлях", - "action" => "операційна", - "create_time" => "створений", - "modify_time" => "модифікований", - "last_time" => "Останній візит", - "sort_type" => "Сортування по", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "відкритий каталог", - "system_path_not_change" => "Системний каталог, не може бути змінений", - "file" => "файл", - "folder" => "папка", - "copy" => "копія", - "past" => "палиця", - "clone" => "створити копію", - "cute" => "ножиці", - "cute_to" => "Перемістити в ...", - "copy_to" => "Копіювати в ...", - "remove" => "видаляти", - "remove_force" => "повністю видалити", - "info" => "властивість", - "list_type" => "вид", - "list_icon" => "іконка масиву", - "list_list" => "розташування списку", - "list_list_split" => "режим колонки", - "sort_up" => "інкремент", - "sort_down" => "регресний", - "order_type" => "Сортування по", - "order_desc" => "спадний", - "order_asc" => "висхідна", - "rename" => "перейменовувати", - "add_to_fav" => "Додати до вибраного", - "search_in_path" => "Пошук папок", - "add_to_play" => "Додати в плейлист", - "manage_fav" => "Керування вибраними", - "refresh_tree" => "Оновити дерево каталогів", - "manage_folder" => "управління каталогом", - "close_menu" => "Закрити меню", - "zip" => "Створити стиснений пакет", - "unzip" => "Щоб витягти ...", - "unzip_folder" => "Розпакувати в папку", - "unzip_this" => "Витримка току", - "unzip_to" => "Щоб витягти ...", - "zipview_file_big" => "Файл занадто великий, а потім витягти операцію попереднього перегляду!", - "clipboard" => "Перегляд буфера обміну", - "clipboard_clear" => "Порожній буфер обміну", - "full_screen" => "повний екран", - "folder_info_item" => "предмети", - "folder_info_item_select" => "обраний", - "file_load_all" => "Двічі клацніть, щоб завантажити всі ......", - "tips" => "підказка", - "ziping" => "Архівування ...", - "unziping" => "Розпакування ...", - "moving" => "Мобільна робота ...", - "remove_title" => "підтвердження видалення", - "remove_info" => "Підтвердити, щоб вилучити вибрані елементи?", - "remove_title_force" => "постійно видалений", - "remove_info_force" => "Ви впевнені, що хочете назавжди видалити цей документ?", - "name_isexists" => "Неправильно, ім'я вже існує!", - "install" => "встановлювати", - "width" => "ширина", - "height" => "висока", - "app" => "легкі Додатки", - "app_store" => "легкі Додатки", - "app_create" => "створення програми", - "app_edit" => "змініть додаток", - "app_group_all" => "повний", - "app_group_game" => "гра", - "app_group_tools" => "інструмент", - "app_group_reader" => "зчитування", - "app_group_movie" => "телебачення", - "app_group_music" => "музика", - "app_group_life" => "життя", - "app_group_others" => "інше", - "app_desc" => "опис", - "app_icon" => "значок Додатки", - "app_icon_show" => "URL-адресу або каталог", - "app_group" => "пакет програм", - "app_type" => "тип", - "app_type_url" => "посилання", - "app_type_code" => "розширення JS", - "app_display" => "екстер'єр", - "app_display_border" => "Без кордонів (тобто вибору полів)", - "app_display_size" => "Зміна розміру (Перевірте регулювання)", - "app_size" => "розмір", - "app_url" => "адреса Посилання", - "app_code" => "JS-код", - "edit" => "редагувати", - "edit_can_not" => "Чи не текстовий файл", - "edit_too_big" => "Файл занадто великий, вона не може бути більше, ніж 40M", - "open_default" => "За замовчуванням Open", - "open_ie" => "Відкрийте браузер", - "refresh" => "оновлення", - "refresh_all" => "примусове оновлення", - "newfile" => "новий файл", - "newfile_save_as" => "зберегти в", - "newfolder" => "Нова папка", - "newothers" => "новий Інша", - "path_loading" => "Loading ...", - "go" => "Прогулянка!", - "go_up" => "верхній шар", - "history_next" => "вперед", - "history_back" => "відбій", - "address_in_edit" => "Натисніть, щоб увійти в режим редагування", - "double_click_rename" => "Двічі клацніть перейменуванням", - "double_click_open" => "Двічі клацніть, щоб відкрити", - "path_null" => "Папка порожня!", - "file_size_title" => "Розмір значків", - "file_size_small_super" => "крихітні", - "file_size_small" => "маленькі іконки", - "file_size_default" => "іконки", - "file_size_big" => "великі значки", - "file_size_big_super" => "Велика іконка", - "upload" => "Завантажити", - "upload_ready" => "очікування завантаження", - "upload_success" => "Завантаження успішно завершена", - "upload_path_current" => "Перемикання в поточний каталог", - "upload_select" => "Виберіть Файл", - "upload_max_size" => "максимально допустима", - "upload_size_info" => "Якщо ви хочете налаштувати більше, будь ласка, змінити php.ini максимально допустиму завантаження. При виборі файлу більше цієї конфігурації буде автоматично відфільтрувати.", - "upload_error" => "Збій при завантаженні", - "upload_error_http" => "Мережа або брандмауера помилки", - "upload_muti" => "Завантаження декількох файлів", - "upload_drag" => "перетягніть завантаження", - "upload_drag_tips" => "Послабити завантажити!", - "path_not_allow" => "Файл не допускається", - "download" => "скачати", - "downloading" => "Loading ...", - "download_address" => "скачати", - "download_ready" => "буде завантажена", - "download_success" => "Завантажити Вийшло!", - "download_error" => "Помилка завантаження!", - "download_error_create" => "Не вдалося записати!", - "download_error_exists" => "Посилання на файл не вдалося!", - "upload_error_null" => "Немає файлу!", - "upload_error_big" => "Розмір файлу перевищує межі сервера", - "upload_error_move" => "Чи не вдалося перемістити файл!", - "upload_error_exists" => "Файл вже існує", - "upload_local" => "місцевий Завантажити", - "download_from_server" => "Remote Download", - "save_path" => "Save Path", - "upload_select_muti" => "Безліч обраній завантаження файлів", - "search" => "пошук", - "searching" => "Йде пошук ...", - "search_result" => "результати пошуку", - "seach_result_too_more" => "Занадто багато результатів пошуку, рекомендується для каталогу або слів", - "search_null" => "Немає результатів!", - "search_uplow" => "чутливий до регістру", - "search_content" => "Зміст Пошук файлів", - "search_info" => "Будь ласка, введіть слово для пошуку та пошуку шляхів!", - "search_ext_tips" => "За | відокремленого, наприклад PHP | JS | CSS
                    контейнер не заповнюється пошуку текстовий файл за умовчанням", - "file_type" => "Тип файлу", - "goto" => "Перейти до", - "server_dwonload_desc" => "Завдання була додана в список завантаження", - "parent_permission" => "дозволів батьківського каталогу", - "root_path" => "Мої документи", - "lib" => "джерело", - "fav" => "закладка", - "desktop" => "робочий стіл", - "browser" => "браузер", - "my_computer" => "Мій комп'ютер", - "recycle" => "погань", - "my_document" => "Мої документи", - "my_picture" => "Мої фотографії", - "my_music" => "моя музика", - "my_movie" => "моє відео", - "my_download" => "Мої Завантаження", - "ui_desktop" => "робочий стіл", - "ui_explorer" => "управління файлами", - "ui_editor" => "редактор", - "adminer" => "adminer", - "ui_project_home" => "проект Головна", - "ui_login" => "увійти", - "ui_logout" => "вихід", - "setting" => "Системні налаштування", - "setting_title" => "опції", - "setting_user" => "Персональний центр", - "setting_password" => "зміна пароля", - "setting_password_old" => "Старий пароль", - "setting_password_new" => "Після доопрацювання в", - "setting_language" => "налаштування мови", - "setting_member" => "управління користувачами", - "setting_group" => "Управління користувачами групи", - "setting_group_add" => "Додати групу користувачів", - "setting_group_edit" => "Групи користувачів Редагувати", - "setting_theme" => "налаштування теми", - "setting_wall" => "Параметри шпалер", - "setting_wall_desktop" => "Настільні шпалери", - "setting_wall_desktop_list" => "Управління робочого столу", - "setting_wall_login_list" => "Вхід для керування шпалерами", - "setting_wall_login_tips" => "Порада. Якщо є декілька шматків, то фон інтерфейсу входу повернеться випадковим чином", - "setting_wall_diy" => "Призначені для користувача шпалери:", - "setting_wall_info" => "Зображення URL-адресу, місцеві кадри можуть мати рацію, щоб отримати браузер, щоб відкрити зображення", - "setting_fav" => "Менеджер закладок", - "setting_help" => "Використання довідки", - "setting_about" => "Про роботи", - "setting_success" => "Модифікація вступило в силу!", - "can_not_repeat" => "Чи не дозволяється повторювати", - "absolute_path" => "абсолютний адреса", - "group" => "Групи користувачів", - "data_not_full" => "Дані, представлені неповним!", - "default_user_can_not_do" => "Користувач за замовчуванням не може працювати", - "default_group_can_not_do" => "групи користувачів за замовчуванням не може працювати", - "username_can_not_null" => "Ім'я користувача не може бути порожнім!", - "groupname_can_not_null" => "Ім'я користувача групи не може бути порожнім!", - "groupdesc_can_not_null" => "Група користувачів Опис не може бути порожнім!", - "group_move_user_error" => "Користувач Група користувачів ходу не вдалося", - "group_already_remove" => "Група користувача була видалена", - "group_not_exists" => "Ця група користувача не існує", - "member_add" => "Додати користувача", - "password_null_not_update" => "Вони сказали, що вони не міняли пароль не заповнений", - "if_save_file_tips" => "Деякі файли не зберігаються. Ви впевнені, що закриєте вікно?", - "if_save_file" => "Файл не був збережений, ви хочете зберегти?", - "if_remove" => "підтвердити Видалити", - "member_remove_tips" => "Після того, як ви видалите каталог користувача будуть видалені", - "group_remove_tips" => "Після видалення групи користувачів користувачів не може увійти
                    (необхідно повторно встановити групи користувачів)", - "group_name" => "Ім'я користувача групи", - "group_name_tips" => "Рекомендація англійська назва, не може бути повторена", - "group_desc" => "Показати ім'я", - "group_desc_tips" => "Назва групи Опис", - "group_role_ext" => "обмеження розширення", - "group_role_ext_tips" => "При наявності декількох | розділених", - "group_role_file" => "управління файлами", - "group_role_upload" => "дозволити завантаження", - "group_role_user" => "дані користувача", - "group_role_group" => "Управління користувачами групи", - "group_role_member" => "управління користувачами", - "group_role_mkfile" => "новий файл", - "group_role_mkdir" => "Нова папка", - "group_role_pathrname" => "перейменовувати", - "group_role_pathdelete" => "видалення файлу", - "group_role_pathinfo" => "властивості файлу", - "group_role_pathmove" => "Перемістити (копіювати / вирізати / вставити / перетягування операції)", - "group_role_zip" => "компресія", - "group_role_unzip" => "розстебнути блискавку", - "group_role_search" => "пошук", - "group_role_filesave" => "Збережіть файл для редагування", - "group_role_can_upload" => "Завантаження і скачування", - "group_role_download" => "Remote Download", - "group_role_passowrd" => "зміна пароля", - "group_role_config" => "дані конфігурації", - "group_role_fav" => "Операції Закладка (додавання / редагування / видалення)", - "action_list" => "Перегляд списку", - "action_add" => "додавати", - "action_edit" => "редагувати", - "action_del" => "видаляти", - "group_role_ext_warning" => "Завантаження не допустити, щоб такі файли,
                    Перейменувати (перейменований в зазначеному розширенням),
                    редагувати зберегти, завантажити віддалений, екстракт", - "group_tips" => "
                  53. 1. Ім'я групи користувачів не може бути повторюваним. Після зміни назви групи вона належить реорганізованому користувачеві та автоматично асоціюється.
                  54. 2. Розширення обмежують зв'язок між системою безпеки, будьте обережні (якщо ви створите новий php у веб-каталозі, це означає, що зміна дозволів програми для цього користувача практично неможливо).
                  55. 3. Управління господарством, управління правами людини, права на перегляд, додавання, видалення та зміна прав пов'язані; програми автоматично асоціюються
                  56. 4. Після того, як група дозволу додати групу дозволів, подальше дозвіл не успадковується (це дозволи еквівалентно найвищому дозволу).
                  57. ", - "not_null" => "Обов'язкові для заповнення поля не може бути порожнім!", - "picture_can_not_null" => "Фотографії не може бути порожнім!", - "rname_success" => "Перейменувати успіх!", - "please_inpute_search_words" => "Введіть рядок для пошуку", - "remove_success" => "Видаляється успішно!", - "remove_fali" => "Видалити не вдалося!", - "clipboard_null" => "Буфер обміну порожній!", - "create_success" => "Новий успіх!", - "create_error" => "Новий збій, перевірте дозволу каталогу!", - "copy_success" => "[Копіювати] - покриття успіху з буфером обміну!", - "cute_success" => "[Cut] - покриття успіху з буфером обміну!", - "clipboard_state" => "Буфер обміну статус:", - "no_permission_write_all" => "Файл або каталог не доступний для запису", - "no_permission_write_file" => "Файл не має права на запис", - "no_permission_read_all" => "Файл або каталог не має права на читання", - "copy_not_exists" => "Джерело не існує", - "current_has_parent" => "Цільова папка є вкладеної папки джерела!", - "past_success" => "операція вставки завершується", - "cute_past_success" => "операція різання завершена(вихідний файл видаляється, буфер обміну порожній)", - "zip_success" => "стиснення завершено", - "not_zip" => "Чи не архів", - "zip_null" => "Файл не вибрано або каталог", - "unzip_success" => "розпакуйте повна", - "gotoline" => "Перейти до рядка", - "path_is_current" => "Шлях і поточний шлях, щоб відкрити те ж саме!", - "path_exists" => "Ім'я вже існує!", - "undo" => "відгук", - "redo" => "анти відкликання", - "preview" => "попередній перегляд", - "wordwrap" => "Wrap", - "show_gutter" => "Показати номери рядків", - "char_all_display" => "Показати невидимі символи", - "auto_complete" => "автоматично запитує", - "auto_save" => "Автоматично зберегти", - "function_list" => "список функцій", - "code_theme" => "Coding Style", - "font_size" => "Розмір шрифту", - "confirm" => "Ви впевнені, що хочете це зробити?", - "button_ok" => "визначити", - "button_submit" => "уявити", - "button_set" => "встановлювати", - "button_cancel" => "скасований", - "button_edit" => "редагувати", - "button_save" => "зберегти", - "button_apply" => "Застосувати", - "button_save_all" => "зберегти всі", - "button_not_save" => "Ніколи не зберігати", - "button_add" => "додавати", - "button_back_add" => "назад додати", - "button_del" => "видаляти", - "button_save_edit" => "зберегти зміни", - "button_save_submit" => "зберегти Надіслати", - "button_more" => "більше", - "button_select_all" => "Вибрати все / Звернути виділення", - "charset_AUTO" => "Автоматична ідентифікація", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "арабська", - "charset_ISO_8859_6" => "арабська", - "charset_ISO_8859_10" => "скандинавські мови", - "charset_CP1257" => "балтійські мови", - "charset_ISO_8859_13" => "балтійські мови", - "charset_ISO_8859_4" => "балтійські мови", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "грузинський", - "charset_PT154" => "казах", - "charset_CP949" => "корейський", - "charset_EUC_KR" => "корейський", - "charset_GB18030" => "спрощена китайська", - "charset_GBK" => "спрощена китайська", - "charset_ISO_8859_14" => "кельтський", - "charset_CP1133" => "Лао", - "charset_ISO_8859_16" => "румунський", - "charset_ISO_8859_3" => "південноєвропейських", - "charset_EUC_JP" => "японський", - "charset_ISO_2022_JP" => "японський", - "charset_SHIFT_JIS" => "японський", - "charset_KOI8_T" => "таджицька мова", - "charset_ISO_8859_11" => "тайський", - "charset_TIS_620" => "тайський", - "charset_CP1254" => "турецька", - "charset_CP1251" => "кирилиця", - "charset_ISO_8859_5" => "кирилиця", - "charset_KOI8_R" => "кирилиця", - "charset_KOI8_U" => "кирилиця", - "charset_CP1252" => "мови Західної Європи", - "charset_ISO_8859_1" => "мови Західної Європи", - "charset_ISO_8859_15" => "мови Західної Європи", - "charset_Macintosh" => "мови Західної Європи", - "charset_CP1255" => "іврит", - "charset_ISO_8859_8" => "іврит", - "charset_CP1253" => "грецький", - "charset_ISO_8859_7" => "грецький", - "charset_ARMSCII_8" => "вірменин", - "charset_CP1258" => "в'єтнамський", - "charset_VISCII" => "в'єтнамський", - "charset_CP1250" => "Мови Центральної Європи", - "charset_ISO_8859_2" => "Мови Центральної Європи", - "charset_default_set" => "Кодування файлу", - "charset_convert_save" => "Збережіть файл, закодований в", - "PluginCenter" => "підключи центр", - "PluginBuy" => "Авторизація покупки", - "PluginInstalled" => "було встановлено", - "PluginUpdate" => "оновлення", - "PluginListNull" => "Там немає змісту!", - "PluginType" => "класифікація", - "PluginTypeAll" => "повний", - "PluginTypeFile" => "розширення файлу", - "PluginTypeSafe" => "засоби безпеки", - "PluginTypeTools" => "утиліта", - "PluginTypeMedia" => "мультимедіа", - "PluginTypeOthers" => "інше", - "PluginInstall" => "встановити пробку", - "PluginEnable" => "включити плагіни", - "PluginDisable" => "забороняти", - "PluginRemove" => "видаліть пробку", - "PluginConfig" => "Налаштування плагіна", - "PluginStatus" => "стан", - "PluginStatusEnabled" => "включено", - "PluginStatusDisabled" => "Чи не включений", - "PluginStatusNotInstall" => "не встановлено", - "PluginInstalling" => "Установка ...", - "PluginHasUpdate" => "оновлення", - "PluginUpdateStart" => "оновлення плагіна", - "PluginNeedConfig" => "Необхідність включення початкової конфігурації", - "PluginConfigNotNull" => "Обов'язкові для заповнення поле не може бути порожнім!", - "PluginOpen" => "відкритий", - "PluginAuther" => "автор", - "PluginVersion" => "видання", - "PluginDownloadNumber" => "встановлено", - "PluginBack" => "повернення", - "PluginReadme" => "опис", - "PluginResetConfig" => "Відновити налаштування за замовчуванням", - "PluginInstallSelf" => "Ручна установка", - "Plugin.config.auth" => "права доступу", - "Plugin.config.authDesc" => "Всі доступні настройки, або вказати користувачів, групи користувачів, групи прав можна використовувати", - "Plugin.config.authOpen" => "Відкритий доступ", - "Plugin.config.authOpenDesc" => "Не потрібно відвідувати, можна отримати доступ, можна використовувати для виклику зовнішнього інтерфейсу", - "Plugin.config.authAll" => "держатель", - "Plugin.config.authUser" => "користувач", - "Plugin.config.authGroup" => "Призначений відділ", - "Plugin.config.authRole" => "група з прав", - "Plugin.Config.openWith" => "відкритий стиль", - "Plugin.Config.openWithDilog" => "внутрішній діалог", - "Plugin.Config.openWithWindow" => "Відкриється нова сторінка", - "Plugin.Config.fileSort" => "пріоритет Розширення асоціації", - "Plugin.Config.fileSortDesc" => "Чим більше розширення, щоб відкрити вищий пріоритет", - "Plugin.Config.fileExt" => "Підтримувані формати файлів", - "Plugin.Config.fileExtDesc" => "Пов'язане Розширення модуля", - "Plugin.tab.basic" => "Основні настройки", - "Plugin.tab.auth" => "права доступу", - "Plugin.tab.others" => "інші налаштування", - "Plugin.default.aceEditor" => "Ace Editor", - "Plugin.default.htmlView" => "Веб-сторінка Перегляд", - "Plugin.default.picasa" => "перегляд фото Picasa", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer гравець", - "Plugin.auth.viewList" => "Список плагінів", - "Plugin.auth.setting" => "Налаштування плагіна", - "Plugin.auth.status" => "Вимкнути", - "Plugin.auth.install" => "Встановити / видалити", - "Explorer.UI.openWith" => "Виберіть Open", - "Explorer.UI.openWithText" => "Блокнот, щоб відкрити", - "Explorer.UI.appSetDefault" => "Встановити відкрито за замовчуванням", - "Explorer.UI.appAwaysOpen" => "Завжди використовувати вибрану програму для відкриття цього файлу", - "Explorer.UI.selectAppDesc" => "Виберіть програму, яку ви хочете відкрити цей файл", - "Explorer.UI.selectAppWarning" => "Будь ласка, виберіть додаток!", - "Explorer.UI.appTypeSupport" => "Підтримується", - "Explorer.UI.appTypeAll" => "Усі програми", - "kodApp.oexe.edit" => "Редагувати легке додаток", - "kodApp.oexe.open" => "Відкрийте програму світла" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/uz/about.html b/plugin/document/kod/config/i18n/uz/about.html deleted file mode 100644 index ae4ecd29a..000000000 Binary files a/plugin/document/kod/config/i18n/uz/about.html and /dev/null differ diff --git a/plugin/document/kod/config/i18n/uz/edit.html b/plugin/document/kod/config/i18n/uz/edit.html deleted file mode 100644 index 6321dd670..000000000 --- a/plugin/document/kod/config/i18n/uz/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    Rich funktsional

                    -

                    Kodi avtomatik ravishda talab qiladi

                    -

                    Bir nechta mavzu: sevimli dasturlash uslubi tanlang

                    -

                    Custom Shrift: sahnada foydalanish uchun

                    -

                    Multi kursor tartibga solish, ulug'vor uchun teng blok tartibga solish onlayn dasturlash tajribasi

                    -

                    Blok yig'ma, kengaytirish; o'rash

                    -

                    bir necha yorliqlariga qo'llab-quvvatlash, kommutatsiya ketma-ketlikni sudrab;

                    -

                    bir necha hujjatlarni saqlab, topish va almashtirish; tarixi;

                    -

                    '' [], {}, (), '' Auto-to'liq

                    -

                    Agar onlayn dasturlash oshiq imkonini beradi Online real vaqt ko'rib chiqish!

                    -

                    qo'llab-quvvatlash zendcodeing, kodni sakson yozish

                    -

                    Sizning kashf kutib ko'proq xususiyatlari ......

                    -
                    -
                    -

                    kodi belgilash 150 turlari

                    -

                    Maslahat: html, JavaScript, CSS, kam, Sass, SCSS

                    -

                    veb rivojlantirish: php, Perl, Python, Ruby, burgut, borib ...

                    -

                    An'anaviy tillar: java, c, c ++, C #, ActionScript, VBScript ...

                    -

                    Boshqalar: Markdown, shell, SQL, Lua, XML, YAML ...

                    -
                    -
                    -
                    -
                    -

                    klavishalar tadbirlar

                    -
                     Tez-tez ishlatiladigan qisqa klavishlar: 
                    - Ctrl + s saqlab qolish uchun 
                    - Ctrl bir tanlang barcha Ctrl + x chiqib ketish + 
                    - Ctrl + c ctrl + v pasta nusxasi 
                    - Ctrl + z Undo Undo Anti Ctrl + y 
                    - Ctrl + F almashtirish Ctrl + F + F topish 
                    - Win + alt + 0 hammasini g'alaba + alt + + 0 kengaytirish siljitish 
                    - ESC [avtomatik ravishda bekor Exit qidiruv ... so'raydi] 
                    - Ctrl-Shift-s Ko'rib chiqish 
                    - Ctrl-Shift-e show & Close funktsiyasi 
                    -
                    -
                     tanlang: 
                    - Sichqoncha Marquee - drag 
                    - / Yuqoriga / chap / pastga / o'ng shift + home / end 
                    - shift + pageUp / PageDown tanlash uchun pastga aylantiring va 
                    - Ctrl + Shift + home / boshida va oxirida joriy Kursordan end 
                    - alt + sichqoncha blok tanlash ergashtirish uchun 
                    - Ctrl + alt + g partiyasi tanlang va joriy multi-tab muharriri kiriting 
                    -
                    -
                     kursor: 
                    - Bosh sahifa / end / yuqoriga / chap / pastga / o'ng 
                    - Ctrl + home / end hujjat bosh / dumi uchun kursorni 
                    - taalukli teg uchun Ctrl + p O'tish 
                    - pageUp / PageDown yuqoriga va pastga kursor 
                    - alt + chap / o'ng kursor liniyasi yuqori ko'chib o'tishga 
                    - Xatning oxirida + chap / o'ng kursorni siljitish & 
                    - Ctrl + l muayyan ketma-ket o'tish uchun 
                    - Ctrl + alt + / pastga (quyidagi) ziyoda tashkil kursor 
                    -
                    -
                     Edit: 
                    - Ctrl + / Izoh & yorumsuz Ctrl + alt + asoslantirilgan 
                    - Jadval yorlig'i Hizalama shift + stol umumiy ilgarilab stol 
                    - butun liniyasi CTRL o'chirish o'chirish + d 
                    - Ctrl o'ng so'z satr o'chirish uchun o'chirish + 
                    - Ctrl / shift + Backspace chapda so'zni o'chirish uchun 
                    - alt + shift + yuqoriga / pastga va nusxasi liniyasi qo'shiladi (ostida) samolyot 
                    - alt Kursordan huquqining mazmunini o'chirish uchun o'chirish + 
                    - alt + yuqoriga / pastga oqim liniyasi va yo'nalish (keyingi liniyasi almashish) haqida 
                    - Ctrl + Shift + D satrlarni nusxa va quyidagi qo'shiladi 
                    - Ctrl so'zning huquqiga o'chirish uchun o'chirish + 
                    - u kichikligi aylanadi + Ctrl + shift 
                    - Ctrl bosh harfga U tanlab matnni + 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/uz/help.html b/plugin/document/kod/config/i18n/uz/help.html deleted file mode 100644 index 0579fedc1..000000000 --- a/plugin/document/kod/config/i18n/uz/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    Fayl boshqarish
                    -

                    File Selection: radio, sichqoncha Marquee, CTRL tasodifiy tanlanadi, yuqoriga va pastga klaviatura, uy, end tanlash-saylov siljitish.

                    -

                    File operatsiya: Faylni tanlash so'ng, o'chirish, kesib, nusxa siqishni xususiyatlarini ko'rish, qayta nomlash ochiq Ko'rib chiqish va boshqa operatsiyalar mumkin ......

                    -

                    File upload: upload bir necha fayllar partiyasi; html5 drag upload (drag muammosiz oyna, drag upload va papkalarga uchun qo'llab-quvvatlash tomchi)

                    -

                    O'ng funktsiyasi: o'ng-fayl, papka, o'ng, yana o'ng saylov operatsiyadan so'ng, ish stoli, o'ng, o'ng katalog daraxt, o'ng bog'lab menyu yorliq-
                    - (- Copy - Barcha tugatish-ni tanlang - Yapıştır'ı - O'chirish - Nomini o'zgartirish, belgilangan ......)

                    -

                    Fayl Brauzer: ro'yxati rejimi, icon rejimi; sub-papkalar ichiga ikki-kliklang; manzili bar operatsiya (oldinga va orqaga) a folder rekord qarama-qarshi bo'lgan rekord ochish

                    -

                    Support drag va tomchi: Ko'rsatilgan jild vazifasini erishish uchun kesib, drag tekshiring

                    -

                    Qisqa tugmalari: o'chirish, Ctrl + A tanlang barcha, Ctrl + nusxa ko'chirish uchun C, + X kamaytirilishi, fayl qidirish (izlash kontent) Ctrl

                    -
                    -
                    -
                    Fayl Ko'rib chiqish
                    -

                    Oldindan ko'rish Fayl: a matn fayl tahrir qilish va tejash mazmunini ko'rish, HTML, SWF fayl oldindan ko'rish,

                    -

                    Image Ko'rib chiqish: eskizlar image slide show avtomatik avlod;

                    -

                    Ovoz ijro: onlayn musiqa va video fayllarni ijro; qo'llab-quvvatlash mp3, wma, o'rta, AAC, wav, mp4,

                    -

                    Video: onlayn video ijro etish, qo'llab-quvvatladi formatlari: flv, F4V, 3gp

                    -

                    ofis: ofis Online Ko'rib chiqish, qo'llab-quvvatladi formatlari: doc, docx, ppt, PPTX, xls, xlsx

                    -
                    -
                    -
                    Qisqa klavish
                    -

                    Ochish kiriting

                    -

                    Ctrl, barcha a tanlang +

                    -

                    Ctrl + c nusxa ko'chirish uchun tanlangan

                    -

                    Ctrl + v joylashtirish uchun

                    -

                    Ctrl + x CUT

                    -

                    Ctrl + f joriy katalogini qo'ng'iroq qilish

                    -

                    alt + n Yangi Fayl

                    -

                    alt + m Yangi jild

                    -

                    O'chirish o'chirish Tanlangan

                    -

                    orqaga qaytish

                    -

                    oldinga Ctrl + Backspace

                    -

                    Tanlangan F2 Rename (papka)

                    -

                    Bosh sahifa / end faylni tanlash uchun / yuqoriga / pastga / / chap o'ng

                    -

                    anykey avtomatik aylanishiga tanlangan belgilar fayllar va papkalarni birinchi harfini bosing tekshiring

                    -
                    diff --git a/plugin/document/kod/config/i18n/uz/main.php b/plugin/document/kod/config/i18n/uz/main.php deleted file mode 100644 index 541299298..000000000 --- a/plugin/document/kod/config/i18n/uz/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Faylni tanlang ...", - "path_api_select_folder" => "Papka tanlang ...", - "path_api_select_image" => "tasvirni tanlang ...", - "share_can_upload" => "Yuklash ruxsat berish", - "move_error" => "ko'chirish muvaffaqiyatsiz", - "setting_basic" => "asosiy Sozlamalar", - "setting_user_sound_open" => "Open Sound", - "setting_user_animate_open" => "Open Animatsiya", - "recycle_open_if" => "Qayta ishlab chiqarish inbox oching", - "recycle_open" => "ochiq", - "setting_user_recycle_desc" => "O'chirish to'g'ridan-to'g'ri jismoniy o'chirilgandan so'ng o'chiriladi", - "setting_user_animate_desc" => "Oyna ochiq va boshqa animatsiya", - "setting_user_sound_desc" => "Operatsion ovozi", - "setting_user_imageThumb" => "Rasm eskizlari", - "setting_user_imageThumb_desc" => "Ochilishdan keyin yaxshi ko'rish tajribasi", - "setting_user_fileSelect" => "Fayl belgisini tekshirishni oching", - "setting_user_fileSelect_desc" => "Fayl ramzi chap tugmasini bosing, menyuning yorliqlarini o'ng tugmasini bosing", - "qrcode" => "URL QR code", - "theme_mac" => "Mac minimalist oq", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro Blue Classic", - "theme_metro_green" => "Metro engil yashil", - "theme_metro_purple" => "safsar Metro nafis", - "theme_metro_pink" => "metro Rose", - "theme_metro_orange" => "Metro yorqin apelsin", - "theme_alpha_image" => "Yorqin - Uchar", - "theme_alpha_image_sun" => "Yorqin - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Custom", - "theme_diy_title" => "Custom Theme Sozlamalar", - "theme_diy_background" => "fon", - "theme_diy_image" => "surat", - "theme_diy_color_blur" => "Gradient rang", - "theme_diy_image_blur" => "Picture blur", - "theme_diy_image_url" => "Rasm manzili", - "theme_diy_color_start" => "boshlab rang", - "theme_diy_color_end" => "End color", - "theme_diy_color_radius" => "Gradient burchagi", - "system_role_admin_set" => "Administratorlar o'rnatish holda, barcha huquqlarga ega!", - "login_error_user_not_use" => "Foydalanuvchi o'chirib qilindi! boshqaruvchisiga murojaat qiling", - "login_error_kod_version" => "Version mojaro", - "login_error_role" => "View togri guruh mavjud emas, boshqaruvchisiga murojaat qiling", - "no_permission_group" => "Siz bu guruhda emas!", - "no_permission_write" => "katalog yozish ruxsat mavjud emas", - "user" => "foydalanuvchi", - "save_as" => "sifatida saqlash", - "check_update" => "yangilash", - "keyboard_type" => "klaviatura Mode", - "font_family" => "Fonts", - "code_mode" => "sintaksisi rang", - "path_can_not_share" => "faqat o'z hujjatlarni almashish qo'llab-quvvatlaydi!", - "path_can_not_action" => "Bu katalog, bu operatsiyani qo'llab-quvvatlamaydi!", - "wap_page_pc" => "Kompyuter Version", - "wap_page_phone" => "ko'chma", - "image_size" => "Image o'lchamlari", - "no_permission_action" => "Siz bu ruxsat mavjud emas, boshqaruvchisiga murojaat qiling!", - "path_is_root_tips" => "Bu ildiz katalogga keldi!", - "kod_group" => "tashkilot", - "my_kod_group" => "Men bo'limda bo'laman", - "space_tips_default" => "(GB) 0 yo'q chegarasi", - "space_tips_full" => "cheklanmagan holda", - "space_size" => "maydon", - "space_size_use" => "makon foydalanish", - "space_is_full" => "Qolgan joy etarli emas, ma'murga murojaat qiling!", - "system_open_true_path" => "Muvaffaqiyatli Fayl menejeri ochildi!", - "group_role_error" => "Roli togri xato (hech ruxsat ri)", - "group_role_error_admin" => "yetarli ruxsatlar", - "markdown_content" => "Mundarija", - "system_group" => "Foydalanuvchilar va bo'limlar", - "system_group_edit" => "Kafedra boshqarmasi", - "system_group_role" => "ahamiyati hisobga olish", - "system_group_create" => "Yangi bo'lim", - "system_group_name" => "Bo'lim nomi", - "system_group_father" => "Yuqori bo'lim", - "system_group_add" => "Alohida bo'limni qo'shish", - "system_group_remove" => "Bo'limni olib tashlang", - "system_group_remove_tips" => "Bo'limni o'chirmoqchimisiz?
                    Foydalanuvchilarning bir qismi o'chirilgandan so'ng, pastki sektor root sektoriga o'tadi", - "system_group_select" => "tanlang bo'limi", - "system_group_select_result" => "A'zolar quyidagi sohalarda tegishli bo'ladi", - "system_role_admin_tips" => "Izohlar: Tizim rahbarlari nazorat qilish huquqiga ega emaslar", - "system_member_action" => "foydalanuvchining boshqarish", - "system_member_add" => "Yangi foydalanuvchi", - "system_member_role" => "ruxsat roli", - "system_member_role_select" => "tanlang", - "system_member_password_tips" => "to'ldirish qilmang tahrirlangan emas", - "system_set_home_path" => "Custom Katalog", - "system_set_home_path_tips" => "Standart katalog bo'sh bo'lgan", - "system_member_group" => "Bo'lim qaerda", - "system_member_group_edit" => "Tahririyat bo'limi", - "system_member_remove" => "User o'chirish", - "system_member_remove_tips" => "o foydalanuvchi tasdiqlang? Keyin
                    Foydalanuvchi katalogini o'chirib butunlay o'chirib tashlanadi", - "system_member_set_role" => "Tanlangan foydalanuvchi guruhi ruxsatnomalar o'zgarishlarni tasdiqlash uchun?", - "system_member_remove_group" => "Tanlangan foydalanuvchi bu guruhdan olib tashlanadi aniqlab?", - "system_member_import" => "ommaviy qo'shish", - "system_member_import_desc" => "har bir liniyada bir foydalanuvchi,
                    allaqachon jimgina e'tibor berilmaydi mavjudmi", - "system_member_use" => "yoqish", - "system_member_unuse" => "o'chirib", - "system_member_space" => "Foydalanuvchi bo'sh joyini belgilang ", - "system_member_space_tips" => " Foydalanuvchi bo'sh joyini belgilang ", - "system_member_space_number" => " Bir raqam bo'lishi kerak!", - "system_member_group_config" => "Partiya sozlamalari bo'limi", - "system_member_group_remove" => "Bo'limdan olib tashlandi", - "system_member_group_insert" => "Bo'limga qo'shish", - "system_member_group_reset" => "Bo'limni tiklash", - "system_member_group_error" => "Bo'lim xatosi", - "system_group_action" => "Kafedra boshqarmasi", - "system_role_add" => "Ahamiyati Identity qo'shish", - "system_role_read" => "Faqat o'qish", - "system_role_write" => "o'qish va yozish mumkin", - "system_setting_root_path" => "root kirish", - "system_setting_root_path_desc" => "Faqat bir tizim ma'muri barcha kataloglarni kirishingiz mumkin, foydalanuvchilar, boshqa huquqlari guruhlari faqat o'z foydalanuvchi katalogini ko'rish mumkin. Agar yoqish yoki boshqa katalogga uchun
                    administrator kirish off bo'lsangiz, siz", - "system_group_role_title" => "Vakolatli hokimiyatni boshqarish", - "system_group_role_remove" => "Bo'limning rolini o'chirish uchun OK ni bosing", - "system_group_role_style" => "uslub", - "system_group_role_display" => "yoki", - "system_group_role_display_desc" => "Bo'limning foydalanuvchi huquqlarini ko'rsatish yoki o'rnatmaslikni belgilang", - "role_type_name_read" => "o'qing", - "role_type_name_read:list" => "Fayl ro'yxati", - "role_type_name_read:info" => "File (papka) mulk View, Folder qidiruv", - "role_type_name_read:copy" => "Nusxa ko'chirish Fayl", - "role_type_name_read:preview" => "Fayl Ko'rib chiqish (rasmlar, hujjatlar, audio va video)", - "role_type_name_read:download" => "File (papka) Download", - "role_type_name_write" => "yozish", - "role_type_name_write:add" => "Faylni (papka) yaratish, siqilgan fayl chiqarib", - "role_type_name_write:edit" => "Tahrir qilish uchun faylni saqlash", - "role_type_name_write:change" => ", Nomini o'zgartirish, katalog tuzilishini rostlash", - "role_type_name_write:upload" => "File (papka) upload, uzoq yuklash", - "role_type_name_write:remove" => "File (papka) o'chirish, kesib", - "group_guest" => "Mehmon:", - "group_guest_desc" => "Siz kafedraning a'zosi emassiz,
                    quyidagi tarkibga faqat o'qish uchun ruxsatnomalar [bo'lim almashinadigan katalogga] kira oladi.", - "group_role_lebel_desc" => "Siz ushbu bo'limning a'zosi bo'lsangiz,
                    Bo'limdagi barcha hujjatlar Administrator tomonidan himoyalangan", - "button_save_and_add" => "Saqlash va kiritish davom", - "path_cannot_search" => "katalog qidirish qo'llab-quvvatlamaydi!", - "not_support" => "qo'llanmagan!", - "group_not_exist" => "Foydalanuvchi guruhi mavjud emas!", - "upload_clear_all" => "Clear barcha", - "upload_clear" => "aniq yakunlandi", - "upload_setting" => "sozlang", - "upload_tips" => "php.ini limiti mavzu endi tilim upload, foydalanadi; tavsiya Chrome papkani drag va tomchi o'rnatish tajribasi", - "upload_exist" => "Shu nomi Fayl", - "upload_exist_rename" => "Nomini o'zgartirish", - "upload_exist_replace" => "qoplama", - "upload_exist_skip" => "Siz identifikatsiyadan o'tmadingiz", - "upload_add_more" => "ommaviy qo'shish", - "more" => "ko'proq", - "system_setting" => "System Settings", - "openProject" => "loyiha muharriri oching", - "url_download" => "Download", - "url_link" => "manzili zanjirning Outside", - "app_type_link" => "Qisqa klavish", - "createLink" => "Yorliq yaratish", - "createLinkHome" => "ish stoli yorliqni yuborilgan", - "createProject" => "muharriri loyihaga qo'shilishi", - "only_read" => "Faqat o'qish", - "only_read_desc" => "katalog Agar serverda ushbu Direktoriyaning uchun ruxsatini mumkin
                    yozish ruxsat mavjud emas", - "not_read" => "o'qilmaydi", - "explorerNew" => "kod havola", - "zip_download_ready" => "avtomatik ravishda yuklab beradi Siqilgandan keyin, please ...", - "set_background" => "Desktop Wallpaper sifatida sozlash", - "share" => "Ulashish", - "my_share" => "Mening ulushim", - "group_share" => "Guruh tashqi almashinuvi", - "share_edit" => "Almashuvni tahrirlash", - "share_remove" => "Almashishni bekor qiling", - "share_remove_tips" => "Almashishni bekor qilmoqchimisiz? Jamoat aloqasi bekor qilinadi.", - "share_path" => "Yo'lni ulashing", - "share_title" => "Resurs almashuvi", - "share_name" => "Sarlavha bilan baham ko'ring", - "share_time" => "tugash", - "share_time_desc" => "Null belgilangan emas", - "share_password" => "Extract parol", - "share_password_desc" => "Bo'sh parol o'rnatish emas", - "share_cancle" => "Unsharing", - "share_create" => "jamoat linkni yaratish", - "share_url" => "Birgalikda Manzil", - "share_not_download" => "Download ban", - "share_not_download_tips" => "Sharer yuklab man!", - "share_code_read" => "Code o'quvchi", - "share_save" => "saqlash Konfiguratsiya", - "share_error_param" => "Parametr xato!", - "share_error_user" => "Foydalanuvchi haqida ma'lumot Xato!", - "share_error_sid" => "Ulushi mavjud emas!", - "share_error_time" => "Siz juda kech, ulushi muddati tugagan kel!", - "share_error_path" => "mavjud emas faylni Birgalikda, u o'chirilgan yoki uni olib tashlanadi!", - "share_error_password" => "Noto'g'ri parol!", - "share_error_show_tips" => "Bu turdagi fayl oldindan qo'llab-quvvatlamaydi!", - "share_view_num" => "Ko'rib chiqildi:", - "share_download_num" => "Yuklab olish:", - "share_open_page" => "o'rtoqlashdi sahifani oching", - "open_the_path" => "katalogini kiriting", - "recycle_clear" => "bo'sh axlat", - "recycle_clear_success" => "Bo'sh axlat muvaffaqiyat!", - "recycle_clear_info" => "Agar axlat to'la bo'sh istasangiz ishonchingiz komilmi?", - "fav_remove" => "to'plamni Bekor qilish", - "remove_item" => "mahsulot", - "uploading" => "Yuklab olish", - "upload_tips_more" => "Juda ko'p fayllar siqilgan Yuklash tavsiya, keyin onlayn unzip!", - "uploading_move" => "Birlashtirish jarayonida ...", - "show_file" => "Yangi-sahifani ko'rib chiqish", - "unknow_file_title" => "Open Maslahat Fayl!", - "unknow_file_tips" => "Mumkin, bu faylning ilovasini qo'llab-quvvatlash emas, balki:", - "unknow_file_try" => "urinish", - "unknow_file_download" => "faylni ko'chirib olish", - "unknow_plugin_search" => "Qidiruv bog'liq ilovalar o'rnatilgan", - "config_save_error_auth" => "konfiguratsiyani saqlab bo'lmadi, administrator, bu sharafga man!", - "config_save_error_file" => "Xato, yozib bo'lmaydi fayli!", - "beautify_code" => "Code Formatter", - "convert_case" => "Case aylantirish", - "convert_upper_case" => "bosh harfga aylantiriladi", - "convert_lower_case" => "kichikligi O'tkazilgan", - "editor_insert_time" => "Joriy vaqt ", - "editor_md5" => " Md5 shifrlash ", - "editor_qrcode" => " Ikkita o'lchovli kod ", - "editor_regx" => " Muntazam ifoda qilish testi ", - "editor_chinese" => " Soddalashtirilgan konversion ", - "editor_chinese_simple" => " Soddalashtirilgan xitoylarga aylantirish ", - "editor_chinese_traditional" => " An'anaviy xitoylarga aylantirilsin ", - "editor_base64" => "Base64 kodek ", - "editor_base64_encode" => " Base64 kodlash ", - "editor_base64_decode" => " Base64 dekodlash ", - "editor_url" => " URL kodek ", - "editor_url_encode" => " URL kodlash ", - "editor_url_decode" => " URLni kodlash ", - "editor_unicode" => " Unicode kodek ", - "editor_unicode_encode" => " Unicode kodlash ", - "editor_unicode_decode" => " Unicode kodlash", - "editor_tools_select_tips" => " Iltimos, aylantirish kerakli kontentni tanlang!", - "editor_calc" => "Bepul hisoblash", - "shortcut" => "Qisqa klavish", - "use_free" => "bepul versiyasini foydalanish davom", - "learn_more" => "Qo'shimcha ma'lumot", - "replace" => "almashtiring", - "selectAll" => "tanlang", - "reload" => "qayta yuklash", - "about" => "On", - "complete_current" => "oqimining Auto-bajarilishi", - "view" => "ko'rinish", - "tools" => "asbob", - "help" => "yordam", - "not_exists" => "mavjud emas", - "group_role_fileDownload" => "Yuklamalar", - "group_role_share" => "Share", - "users_share" => "almashish", - "system_setting_save" => "Xavfsizlik Sozlamalarni", - "system_setting_menu" => "menyu boshqarish", - "system_name" => "dastur nomi", - "system_name_desc" => "Dastur logo nomi", - "system_desc" => "dastur Tavsif", - "path_hidden" => "Directory istisnolar", - "version_not_support" => "Bu qo'llab-quvvatlamaydi Sizning versiyasi, ilg'or versiyasini sotib olish uchun rasmiy veb-saytiga tashrif buyuring!", - "version_not_support_number" => "cheklash soni bu operatsiyani qo'llab-quvvatlamaydi sifatida, rasmiy veb-sayt rivojlangan versiyasini sotib iltimos!", - "path_hidden_desc" => "sukut katalog va fayllar vergul bilan ajratilgan, ko'rsatilmasa", - "new_user_folder" => "Yangi foydalanuvchi ko'rsatuv katalog tomonidan yaratilgan", - "new_user_folder_desc" => "vergul bilan ajratilgan", - "new_user_app" => "Yangi foydalanuvchi standart ilova tomonidan yaratilgan", - "new_user_app_desc" => "Ilovalar amaliy markazi, vergul bilan ajratilgan bir qancha", - "auto_login" => "Mehmonlari avtomatik kirish", - "auto_login_desc" => "Standart kirish Foydalanuvchiguest/guestfoydalanuvchilar; ochilishida keyin foydalanuvchi mavjud bo'lishini ta'minlash uchun", - "first_in" => "Odatiy kirib keyin", - "version_price_free" => "ozod", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory yoziladigan emas, katalogini o'rnatish va barcha kichik katalog-o'qish, yozish, keyin yana harakat qilib ko'ring!", - "menu_name" => "Menu nomi", - "menu_hidden" => "yashir", - "menu_show" => "displey", - "menu_move_down" => "pastga", - "menu_move_up" => "up", - "menu_move_del" => "o'chirish", - "menu_open_window" => "Yangi oyna ochish", - "menu_sub_menu" => "Sub menyusi", - "url_path" => "url manzili", - "url_path_desc" => "url manzil yoki js kodi", - "no_permission_read" => "Agar o'qish uchun ruxsat yo'q!", - "no_permission_download" => "Siz yuklab olish uchun ruxsat yo'q!", - "php_env_check" => "atrof-muhit monitoringini Operatsion:", - "php_env_error" => "PHP kutubxonasi yo'q", - "php_env_error_ignore" => "E'tibor berilmasin va kiriting", - "php_env_error_version" => "PHP versiyasi kam 5.0 bo'lishi mumkin emas", - "php_env_error_path" => "yozib bo'lmaydi", - "php_env_error_list_dir" => "Veb-server xavfsizlik sabablari tufayli xususiyati ro'yxati katalogini ochadi, ushbu xususiyatni o'chirib qo'ying!qanday?", - "php_env_error_gd" => "Php GD kutubxona to'g'ri ishlamaydi ayol suratini foydalanish, aks holda kodi ochiq bo'lishi kerak", - "install_login" => "Siz quyidagi hisob Kirish foydalanishingiz mumkin", - "install_enter" => "tizim", - "install_user_default" => "Administrator: {0} / (a ​​parol o'rnating ostida)
                    O'rtacha Foydalanuvchi: {1}
                    Mehmon foydalanuvchilar: {2}", - "login_root_password" => "Administrator Parolni o'rnating", - "login_root_password_repeat" => "yana Parolni tasdiqlang", - "login_root_password_equal" => "ikki parollar mos emas!", - "login_root_password_tips" => "ma'mur parol belgilash!", - "forget_password" => "Parolni unutdingizmi", - "forget_password_tips" => "Administrator Parolni unutdingizmi:
                    qayta o'rnatish ./data/system/install.lock o'chirish serverini kiring;

                    Non-administrator Parolni unutdingizmi:
                    qayta o'rnatish uchun boshqaruvchisiga murojaat qiling!", - "copyright_desc" => "Kodexplorer siz ham webIDE bevosita onlayn rivojlantirish, FTP o'rniga, ichki hujjat boshqarish yoki birgalikda, shuningdek, sayt boshqarish serverida foydalanish mumkin uchun foydalanishingiz mumkin, juda tan veb hujjat boshqarish sistemasidir. Bundan tashqari, mavjud tizimlar, bu integratsiya qilish uchun ikkinchi rivojlanishini dasturlashingiz mumkin.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "KodExplorer by", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango bulut • Explorer", - "kod_power_by" => " - KodExplorer by", - "kod_name_copyright" => "Mango bulut • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, WebOS, webIDE, php filemanage, filemanage, Dao bulut, bulut mango, hujjat boshqarish tizimlari, korxona bulut disk, tadqiqotchi ,, onlayn hujjatlar, onlayn Office, onlayn ofis, onlayn SAPR korib, onlayn tahrirlash onlayn muharriri", - "kod_meta_description" => "KodExplorer yo'li bulut mumkin (avval bulut Mango) xavfsiz va nazorat, oddiy va oson ta'minlash uchun bir hukumat / korporativ xususiy bulutlar va shaxsiy veb-saytlar uchun onlayn hujjat boshqaruv tizimi, korxona xususiy bulut ilovalar, tarmoq saqlash, onlayn hujjat boshqaruv etakchi provayder, onlayn idora foydalanish, yuqori xususiy bulut mahsulotlarini tayyorlangan. bo'lmasdan, Windows uslubi interfeysi, operatsion amaliyotini foydalanish mashhur Onlayn korib chiqish fayl formatida, ijro etish va tartibga solish, atrof-muhit-do'st, kuchli yuzlab qo'llab-quvvatlash, tez boshlash uchun moslashtirish, xususiy endi ajralmas bir marta sinov bo'ladi bulut qurbonliklar.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Kirish", - "guest_login" => "mehmon Ro'yxatdan", - "username" => "Kirish hisobi", - "userNickName" => "Foydalanuvchi taxallusi", - "password" => "parol", - "login_code" => "kodlari", - "need_check_code" => "Kirish autentifikatsiya kodi ochiq", - "need_check_code_desc" => "Kiritilganidan so'ng, tasdiqlash kodini kiritishingiz kerak.", - "setting_csrf_protect" => "Ochiq csrf himoya", - "setting_csrf_protect_desc" => "samarali csrf himoya mumkin hujum ochilish turi so'ng", - "login_rember_password" => "Parolni eslash", - "setting_show_root_group" => "Barcha bo'limlarni ro'yxatlash", - "setting_show_root_group_desc" => "Daraxt katalogi ildiz bo'limi barcha bo'linmalar ro'yxatini ko'rsatadimi", - "setting_show_share_user" => "Barcha foydalanuvchilar ro'yxati", - "setting_show_share_user_desc" => "Daraxt katalogi ildiz bo'limi barcha foydalanuvchilar almashinuvi uchun berilgan", - "setting_clear_user_recycle" => "barcha foydalanuvchilar uchun Qayta ishlab chiqarish", - "setting_clear_cache" => "keshni tozalash", - "setting_icp" => "Copyright yoki rekord soni", - "setting_global_css" => "Custom global css", - "setting_global_css_desc" => "Barcha sahifalar o'rganish CSS chiqadi", - "setting_global_html" => "Statistik kodi HTML", - "setting_global_html_desc" => "Barcha sahifalar, bu paragraf html kodi joylashtirilgan bo'ladi, kodi uchinchi tomon statistika joylashtirilishi mumkin", - "us" => "Yelkan Network Studios", - "login_not_null" => "Login va parol bo'sh bo'lishi mumkin emas!", - "code_error" => "xato kodlari", - "password_error" => "Foydalanuvchi nomi yoki parol noto'g'ri!", - "password_not_null" => "Parolni bo'sh bo'lishi mumkin emas!", - "old_password_error" => "Old parol noto'g'ri!", - "permission" => "Ruxsat!", - "permission_edit" => "turishni o'zgartirish", - "file_info_owner" => "egasi", - "file_info_group" => "guruh", - "no_permission" => "Administrator, bu sharafga o'chirib qo'ygan!", - "no_permission_ext" => "Administrator fayl ruxsatini bu turini taqiqlangan", - "dialog_max" => "Ushbu bo'limda izlash", - "dialog_min" => "kamaytirish", - "dialog_min_all" => "barcha kamaytirish", - "dialog_display_all" => "Barcha oyna ko'rsatish", - "dialog_close_all" => "Close barcha", - "open" => "ochiq", - "others" => "boshqa", - "open_with" => "Ochish uchun ochiq ...", - "close" => "yaqin", - "close_all" => "Close barcha", - "close_left" => "chapga yorlig'ini yoping", - "close_right" => "o'ng yaqin tabs", - "close_others" => "Yopish Boshqa", - "loading" => "Operation ...", - "warning" => "ogohlantirish", - "getting" => "Qiling ...", - "sending" => "Ma'lumotlar uzatish ...", - "data_error" => "Data Xato!", - "get_success" => "Muvaffaqiyati oling!", - "save_success" => "Muvaffaqiyatli saqlandi!", - "success" => "muvaffaqiyatli operatsiya", - "error" => "Operation olmadi", - "error_repeat" => "operatsiya muvaffaqiyatsiz, nomi allaqachon mavjud!", - "word_error" => "Muvaffaqiyatsiz ", - "word_success" => " Muvaffaqiyat", - "system_error" => "tizim xatosi", - "name" => "ism", - "type" => "shrift", - "contain" => "o'z ichiga olgan", - "address" => "Manzil", - "size" => "Size", - "byte" => "baytda", - "path" => "yo'l", - "action" => "Foydalanish", - "create_time" => "yaratilgan", - "modify_time" => "tahrirlangan", - "last_time" => "oxirgi tashrif", - "sort_type" => "saralash", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "umumiy katalog", - "system_path_not_change" => "System katalog, o'zgartirish mumkin emas", - "file" => "Fayl", - "folder" => "papka", - "copy" => "nusxa", - "past" => "tayoq", - "clone" => "nusxasini yaratish", - "cute" => "qirqtirmoq", - "cute_to" => "ko'chib ...", - "copy_to" => "Nusxa ko'chirish uchun ...", - "remove" => "o'chirish", - "remove_force" => "butunlay olib tashlash", - "info" => "mulk", - "list_type" => "ko'rinish", - "list_icon" => "Belgini array", - "list_list" => "ro'yxati joylashtirish", - "list_list_split" => "ustun rejimi", - "sort_up" => "oshirish", - "sort_down" => "kamaytirish", - "order_type" => "saralash", - "order_desc" => "kamayish bo'yicha", - "order_asc" => "o'sish bo'yicha", - "rename" => "Nomini o'zgartirish", - "add_to_fav" => "Tanlanganlarga qo'shish", - "search_in_path" => "Jildni qidirish", - "add_to_play" => "Ijro ro'yxatiga qo'shish", - "manage_fav" => "Sevimlilarni boshqarish", - "refresh_tree" => "Refresh katalog daraxt", - "manage_folder" => "Directory Management", - "close_menu" => "Yopish menyu", - "zip" => "Siqilgan paketni yaratish", - "unzip" => "chiqarib olish uchun ...", - "unzip_folder" => "papkaga unzip", - "unzip_this" => "toki bilan chiqarib", - "unzip_to" => "chiqarib olish uchun ...", - "zipview_file_big" => "Fayl juda katta, keyin oldindan ko'rish operatsiya chiqarib!", - "clipboard" => "View Clipboard", - "clipboard_clear" => "bo'sh Clipboard", - "full_screen" => "to'liq ekran", - "folder_info_item" => "mahsulot", - "folder_info_item_select" => "tanlangan", - "file_load_all" => "Barcha yuklash uchun ikki marta bosing ......", - "tips" => "tez", - "ziping" => "Siqishni ...", - "unziping" => "Qazib olish ...", - "moving" => "Mobile operatsiya ...", - "remove_title" => "Confirmation o'chirish", - "remove_info" => "Tanlangan elementni o'chirish uchun tasdiqlang?", - "remove_title_force" => "butunlay o'chiriladi", - "remove_info_force" => "Siz ishonch hosil doimiy bu hujjatni o'chirishni istaysizmi?", - "name_isexists" => "Noto'g'ri, nomi allaqachon mavjud!", - "install" => "o'rnatmoq", - "width" => "eng", - "height" => "baland", - "app" => "nur Ilovalar", - "app_store" => "nur Ilovalar", - "app_create" => "ariza yaratish", - "app_edit" => "dasturni o'zgartirish", - "app_group_all" => "to'la", - "app_group_game" => "o'yin", - "app_group_tools" => "asbob", - "app_group_reader" => "o'qing", - "app_group_movie" => "televideniye", - "app_group_music" => "musiqa", - "app_group_life" => "hayot", - "app_group_others" => "boshqa", - "app_desc" => "Tavsif", - "app_icon" => "ilovalar icon", - "app_icon_show" => "url manzil yoki katalog", - "app_group" => "Application paketi", - "app_type" => "shrift", - "app_type_url" => "aloqa", - "app_type_code" => "js kengaytmasi", - "app_display" => "tashqi", - "app_display_border" => "Chegarasiz (ya'ni chegarasiz tanlang)", - "app_display_size" => "(Moslashuvga tekshiring) o'lchamlarini", - "app_size" => "Size", - "app_url" => "Link manzili", - "app_code" => "js kodi", - "edit" => "Edit", - "edit_can_not" => "Emas, balki bir matn fayli", - "edit_too_big" => "File juda katta, u 40m kattaroq bo'lishi mumkin emas", - "open_default" => "Default Open", - "open_ie" => "brauzerni oching", - "refresh" => "yangilamoq", - "refresh_all" => "a Qayta majburlash", - "newfile" => "Yangi Fayl", - "newfile_save_as" => "saqlash", - "newfolder" => "Yangi jild", - "newothers" => "Yangi Boshqa", - "path_loading" => "Loading ...", - "go" => "Yur!", - "go_up" => "yuqori qatlam", - "history_next" => "olg'a", - "history_back" => "dam", - "address_in_edit" => "tahrirlash rejimiga kirish uchun bosing", - "double_click_rename" => "Nomini ikki marta bosing", - "double_click_open" => "ochish uchun ikki marta bosing", - "path_null" => "Jild bo'sh!", - "file_size_title" => "Belgini hajmi", - "file_size_small_super" => "Ultra-kichik", - "file_size_small" => "kichik Icons", - "file_size_default" => "Icons", - "file_size_big" => "katta Icons", - "file_size_big_super" => "katta Icon", - "upload" => "Yuklab olish", - "upload_ready" => "yuklash kutilmoqda", - "upload_success" => "muvaffaqiyatli yuklash", - "upload_path_current" => "joriy katalogga o'tish", - "upload_select" => "tanlang Fayl", - "upload_max_size" => "maksimal ruxsat etilgan", - "upload_size_info" => "Agar ko'proq modernizatsiya qilish uchun bo'lsangiz, php.ini maksimal ruxsat upload o'zgartirish iltimos. Agar tanlash, bu konfiguratsion kattaroq bir fayl avtomatik ravishda filtri bo'ladi.", - "upload_error" => "Yuklab bo'lmadi", - "upload_error_http" => "Tarmoq va xavfsizlik devori xatolar", - "upload_muti" => "Bir nechta fayl yuklash", - "upload_drag" => "Drag va tomchi yuklash", - "upload_drag_tips" => "upload azobga kiritinglar!", - "path_not_allow" => "Fayl nomi ruxsat yo'q", - "download" => "Download", - "downloading" => "Loading ...", - "download_address" => "Download", - "download_ready" => "yuklab olinadi", - "download_success" => "Muvaffaqiyati yuklab oling!", - "download_error" => "Download amalga oshmadi!", - "download_error_create" => "Yozish xatosi!", - "download_error_exists" => "Link muvaffaqiyatsiz faylga!", - "upload_error_null" => "No fayl!", - "upload_error_big" => "Fayl hajmi server isrofchi", - "upload_error_move" => "Faylni ko'chirish bo'lmadi!", - "upload_error_exists" => "Fayl allaqachon mavjud", - "upload_local" => "mahalliy Yuklab olish", - "download_from_server" => "masofadan Download", - "save_path" => "saqlash yo'l", - "upload_select_muti" => "tanlovli Fayl yuklanayotgan bir ko'pchilik", - "search" => "Qidiruv", - "searching" => "Qidirilmoqda ...", - "search_result" => "Qidiruv natijalari", - "seach_result_too_more" => "Juda ko'p qidiruv natijalari, u bir katalog yoki so'z uchun tavsiya etiladi", - "search_null" => "Hech qanday natija!", - "search_uplow" => "sezgir Case", - "search_content" => "Qidiruv fayl mazmuni", - "search_info" => "bir qo'ng'iroq atamasi kiriting va yo'llar qidirish Iltimos!", - "search_ext_tips" => "ajratilgan | tomonidan; misol PHP uchun | js | css
                    standart matnli fayl qidirish to'ldirish emas", - "file_type" => "Fayl turi", - "goto" => "O'tish", - "server_dwonload_desc" => "Vazifa download ro'yxatiga qo'shildi", - "parent_permission" => "Ota-ona katalog ruxsatlar", - "root_path" => "Mening Hujjatlar", - "lib" => "omborxona", - "fav" => "Bookmark", - "desktop" => "Desktop", - "browser" => "brauzer", - "my_computer" => "Mening Kompyuter", - "recycle" => "axlat", - "my_document" => "Mening Hujjatlar", - "my_picture" => "Mening Photos", - "my_music" => "Mening Musiqa", - "my_movie" => "Mening Videos", - "my_download" => "Mening Yuklamalar", - "ui_desktop" => "Desktop", - "ui_explorer" => "Fayl boshqarish", - "ui_editor" => "muharrir", - "adminer" => "adminer", - "ui_project_home" => "Project Bosh sahifa", - "ui_login" => "Kirish", - "ui_logout" => "Chiqish", - "setting" => "System Settings", - "setting_title" => "Options", - "setting_user" => "shaxsiy markazi", - "setting_password" => "Change Password", - "setting_password_old" => "Old Password", - "setting_password_new" => "uchun qayta ko'rib", - "setting_language" => "Til sozlamalari", - "setting_member" => "foydalanuvchining boshqarish", - "setting_group" => "Foydalanuvchi guruhi boshqarish", - "setting_group_add" => "Foydalanuvchi guruhi qo'shish", - "setting_group_edit" => "Edit Foydalanuvchi Guruhlar", - "setting_theme" => "Theme Sozlamalar", - "setting_wall" => "Fon rasmi sozlamalari", - "setting_wall_desktop" => "Stol fon rasmi", - "setting_wall_desktop_list" => "Ish stoli fon rasmi", - "setting_wall_login_list" => "Wallpaper Management dasturiga kirish", - "setting_wall_login_tips" => "Maslahat: Bittadan ortiq parcha bo'lsa, login interfeysi tasodifiy aylanadi", - "setting_wall_diy" => "Fon rasmi:", - "setting_wall_info" => "Picture url manzili, mahalliy rasmlar tasvirni ochish uchun brauzer olish huquqi bo'lishi mumkin", - "setting_fav" => "Bookmark menejeri", - "setting_help" => "Yordam foydalanish", - "setting_about" => "ishlar haqida", - "setting_success" => "Modifikatsiya ta'sir etdi!", - "can_not_repeat" => "takrorlash uchun ruxsat yo'q", - "absolute_path" => "mutlaq manzili", - "group" => "foydalanuvchi Guruhlar", - "data_not_full" => "Data to'liq taqdim!", - "default_user_can_not_do" => "default foydalanuvchi faoliyat mumkin emas", - "default_group_can_not_do" => "Default foydalanuvchi guruhlari faoliyat mumkin emas", - "username_can_not_null" => "Foydalanuvchi nomi bo'sh bo'lishi mumkin emas!", - "groupname_can_not_null" => "Foydalanuvchi guruhi nomi bo'sh bo'lishi mumkin emas!", - "groupdesc_can_not_null" => "Foydalanuvchi Group Tavsif bo'sh bo'lishi mumkin emas!", - "group_move_user_error" => "Foydalanuvchi Group foydalanuvchilar olmadi harakat", - "group_already_remove" => "Foydalanuvchi guruhi ketgandir", - "group_not_exists" => "Ushbu foydalanuvchi guruhi mavjud emas", - "member_add" => "User qo'shish", - "password_null_not_update" => "Ular parol to'lgan emas o'zgarmadi dedi", - "if_save_file_tips" => "Ba'zi fayllar saqlanmaydi. Oynani yopishingizga ishonchingiz komilmi?", - "if_save_file" => "Fayl saqlangan emas, siz saqlamoqchi?", - "if_remove" => "o'chirish tasdiqlang", - "member_remove_tips" => "Agar foydalanuvchi katalog tozalanadi olib tashlash keyin", - "group_remove_tips" => "Agar kirish mumkin emas foydalanuvchilar foydalanuvchi guruhini olib tashlash keyin
                    (kerak qayta o'rnatish foydalanuvchi guruhi)", - "group_name" => "Foydalanuvchi guruhi nomi", - "group_name_tips" => "Tavsiyalar Ingliz nomi, takrorlash mumkin emas", - "group_desc" => "displey nomi", - "group_desc_tips" => "Group nomi Tavsifi", - "group_role_ext" => "Extension cheklovlar", - "group_role_ext_tips" => "bir necha bilan | ajratilgan", - "group_role_file" => "Fayl boshqarish", - "group_role_upload" => "Yuklash ruxsat berish", - "group_role_user" => "foydalanuvchi ma'lumotlar", - "group_role_group" => "Foydalanuvchi guruhi boshqarish", - "group_role_member" => "foydalanuvchining boshqarish", - "group_role_mkfile" => "Yangi Fayl", - "group_role_mkdir" => "Yangi jild", - "group_role_pathrname" => "Nomini o'zgartirish", - "group_role_pathdelete" => "Fayl o'chirish", - "group_role_pathinfo" => "Fayl xususiyatlari", - "group_role_pathmove" => "Ko'chirish (nusxa / qism / pasta / drag operatsiya)", - "group_role_zip" => "siqish", - "group_role_unzip" => "unzip", - "group_role_search" => "Qidiruv", - "group_role_filesave" => "tartibga solish uchun faylni saqlash", - "group_role_can_upload" => "Yuklab olish va yuklab olish", - "group_role_download" => "masofadan Download", - "group_role_passowrd" => "Change Password", - "group_role_config" => "konfiguratsiya Data", - "group_role_fav" => "Bookmark operatsiyalar (qo'shish / tahrirla / o'chirish)", - "action_list" => "ro'yxati View", - "action_add" => "qo'shish", - "action_edit" => "Edit", - "action_del" => "o'chirish", - "group_role_ext_warning" => "Bunday fayllar yo'l qo'ymaydi upload,
                    Rename (belgilangan uzaytirish uchun qayta nomlandi),
                    tahrirlash va saqlash, masofadan download, ko'chirma", - "group_tips" => "
                  58. 1. Foydalanuvchilar guruhining nomi takrorlanmas. Guruh nomi o'zgartirilgandan so'ng, u qayta tashkil etilgan foydalanuvchiga tegishli va u avtomatik ravishda bog'lanadi.
                  59. 2. Kengaytmalar tizim xavfsizligi o'rtasidagi aloqani cheklaydi, iltimos, ehtiyot bo'ling (agar veb-katalogda yangi php yaratadigan bo'lsangiz, bu dasturning foydalanuvchining ruxsatini o'zgartirish deyarli mumkin emas)
                  60. 3. Xo'jaliklarni boshqarish, huquqlarni guruhlarni boshqarish, huquqlarni ko'rish va huquqlarni qo'shib qo'shish, yo'q qilish va o'zgartirish majburiydir, dasturlar avtomatik ravishda bog'lanadi
                  61. 4. Ruxsatlar guruhi ruxsat guruhini qo'shib qo'ygandan so'ng, keyingi ruxsatnoma meros qilib olinmaydi (bu ruxsat eng yuqori ruxsatnomaga teng).
                  62. ", - "not_null" => "Kerakli joylar bo'sh bo'lishi mumkin emas!", - "picture_can_not_null" => "Rasm bo'sh bo'lishi mumkin emas!", - "rname_success" => "muvaffaqiyat nomini o'zgartirish!", - "please_inpute_search_words" => "qo'ng'iroq qilish uchun, bir mag'lubiyatga kiriting", - "remove_success" => "muvaffaqiyatli o'chirildi!", - "remove_fali" => "O'chirish muvaffaqiyatsiz tugadi!", - "clipboard_null" => "Clipboard bo'sh!", - "create_success" => "Yangi muvaffaqiyat!", - "create_error" => "Yangi katalog ruxsat tekshirish, muvaffaqiyatsiz!", - "copy_success" => "[Replikatsiya] - clipboard muvaffaqiyat qamrab!", - "cute_success" => "[CUT] - clipboard muvaffaqiyat qamrab!", - "clipboard_state" => "Clipboard holati:", - "no_permission_write_all" => "fayl yoki katalog yoziladigan emas", - "no_permission_write_file" => "Fayl yozish ruxsat mavjud emas", - "no_permission_read_all" => "fayl yoki katalog yo'q o'qish ruxsat bor", - "copy_not_exists" => "Source mavjud emas", - "current_has_parent" => "Target papkani manba papka, bir kichik klasörüdür!", - "past_success" => "joylashtirish yakunlandi", - "cute_past_success" => "chiqib ketish jarayoni yakunlandi(manba fayl bo'sh, clipboardga o'chiriladi)", - "zip_success" => "siqish yakunlandi", - "not_zip" => "arxiv emas", - "zip_null" => "fayl yoki katalog tanlangan emas", - "unzip_success" => "to'liq unzip", - "gotoline" => "chiziq O'tish", - "path_is_current" => "path va joriy path Shu ochish!", - "path_exists" => "nomi allaqachon mavjud!", - "undo" => "Bekor", - "redo" => "Anti bekor", - "preview" => "ko'rib chiqish", - "wordwrap" => "Wrap", - "show_gutter" => "Line raqamlari ko'rsatish", - "char_all_display" => "ko'rinmas belgilarni ko'rsatish", - "auto_complete" => "avtomatik ravishda talab qiladi", - "auto_save" => "Avtomatik saqlash", - "function_list" => "funktsiya ro'yxati", - "code_theme" => "kodlash Style", - "font_size" => "shrift o'lchami", - "confirm" => "Buni xohlaysizmi?", - "button_ok" => "aniqlash", - "button_submit" => "Submit", - "button_set" => "sozlang", - "button_cancel" => "bekor", - "button_edit" => "Edit", - "button_save" => "saqlash", - "button_apply" => "Ilova qiling", - "button_save_all" => "saqlash barcha", - "button_not_save" => "saqlab qilmang", - "button_add" => "qo'shish", - "button_back_add" => "Orqaga qo'shish", - "button_del" => "o'chirish", - "button_save_edit" => "o'zgarishlarni saqlang", - "button_save_submit" => "Submit saqlash", - "button_more" => "ko'proq", - "button_select_all" => "Barcha / Tanlash tartibini almashtirish tanlang", - "charset_AUTO" => "Avtomatik identifikatsiya qilish", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "arab", - "charset_ISO_8859_6" => "arab", - "charset_ISO_8859_10" => "Nordic tillar", - "charset_CP1257" => "Boltiq tillar", - "charset_ISO_8859_13" => "Boltiq tillar", - "charset_ISO_8859_4" => "Boltiq tillar", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "Gruziya", - "charset_PT154" => "qozoq", - "charset_CP949" => "Koreya", - "charset_EUC_KR" => "Koreya", - "charset_GB18030" => "Soddalashtirilgan Xitoy", - "charset_GBK" => "Soddalashtirilgan Xitoy", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "Lao", - "charset_ISO_8859_16" => "Ruminiya", - "charset_ISO_8859_3" => "Janubiy Yevropa", - "charset_EUC_JP" => "Yaponiya", - "charset_ISO_2022_JP" => "Yaponiya", - "charset_SHIFT_JIS" => "Yaponiya", - "charset_KOI8_T" => "tojik tili", - "charset_ISO_8859_11" => "Tailand", - "charset_TIS_620" => "Tailand", - "charset_CP1254" => "Turkiya", - "charset_CP1251" => "kirill", - "charset_ISO_8859_5" => "kirill", - "charset_KOI8_R" => "kirill", - "charset_KOI8_U" => "kirill", - "charset_CP1252" => "G'arbiy Evropa tillari", - "charset_ISO_8859_1" => "G'arbiy Evropa tillari", - "charset_ISO_8859_15" => "G'arbiy Evropa tillari", - "charset_Macintosh" => "G'arbiy Evropa tillari", - "charset_CP1255" => "ibroniy", - "charset_ISO_8859_8" => "ibroniy", - "charset_CP1253" => "yunon", - "charset_ISO_8859_7" => "yunon", - "charset_ARMSCII_8" => "arman", - "charset_CP1258" => "Vetnam", - "charset_VISCII" => "Vetnam", - "charset_CP1250" => "Markaziy Evropa tillari", - "charset_ISO_8859_2" => "Markaziy Evropa tillari", - "charset_default_set" => "Fayl kodlash", - "charset_convert_save" => "deb kodlangan fayl saqlash", - "PluginCenter" => "Plug markazi", - "PluginBuy" => "Sotib olish huquqi", - "PluginInstalled" => "o'rnatilgan qilingan", - "PluginUpdate" => "yangilash", - "PluginListNull" => "hech qanday mazmun yo'q!", - "PluginType" => "klassifikatsiya", - "PluginTypeAll" => "to'la", - "PluginTypeFile" => "Kengaytirilgan fayl", - "PluginTypeSafe" => "Xavfsizlik Asboblar", - "PluginTypeTools" => "Kommunal", - "PluginTypeMedia" => "multimedia", - "PluginTypeOthers" => "boshqa", - "PluginInstall" => "vilkasini o'rnatish", - "PluginEnable" => "plagin yoqish", - "PluginDisable" => "o'chirib qo'yish", - "PluginRemove" => "vilkasini o'chirib tashlang", - "PluginConfig" => "plagini moslashName", - "PluginStatus" => "Davlat", - "PluginStatusEnabled" => "yoqilgan", - "PluginStatusDisabled" => "yoqilmagan", - "PluginStatusNotInstall" => "O'rnatilgan emas", - "PluginInstalling" => "O'rnatish ...", - "PluginHasUpdate" => "yangilanishlar", - "PluginUpdateStart" => "Yangilash plagini", - "PluginNeedConfig" => "boshlang'ich konfiguratsiyani faollashtirish uchun ehtiyoj", - "PluginConfigNotNull" => "Kerakli joylar bo'sh bo'lishi mumkin emas!", - "PluginOpen" => "ochiq", - "PluginAuther" => "Muallif", - "PluginVersion" => "Edition", - "PluginDownloadNumber" => "O'rnatish", - "PluginBack" => "Qaytish", - "PluginReadme" => "Tavsif", - "PluginResetConfig" => "Standart sozlamalarni tiklash", - "PluginInstallSelf" => "Qo'lda o'rnatish", - "Plugin.config.auth" => "ruxsatlar", - "Plugin.config.authDesc" => "mavjud sozlash barcha yoki belgilash foydalanuvchilar, foydalanuvchi guruhlari, huquqlari guruhlari foydalanishingiz mumkin", - "Plugin.config.authOpen" => "Ochiq kirish", - "Plugin.config.authOpenDesc" => "Kirishning hojati yo'q, tashqi interfeys qo'ng'iroqlari uchun ishlatilishi mumkin", - "Plugin.config.authAll" => "Mustahkamlovchi", - "Plugin.config.authUser" => "foydalanuvchi", - "Plugin.config.authGroup" => "Maxsus bo'lim", - "Plugin.config.authRole" => "huquqlari guruhi", - "Plugin.Config.openWith" => "ochiq uslubi", - "Plugin.Config.openWithDilog" => "ichki muloqot", - "Plugin.Config.openWithWindow" => "Yangi sahifa ochiladi", - "Plugin.Config.fileSort" => "Kengaytma birlashmasi ustuvor", - "Plugin.Config.fileSortDesc" => "yuqori ustuvor ochish uchun kengaytirish katta", - "Plugin.Config.fileExt" => "Qo'llab-quvvatlanadigan fayl formatlari", - "Plugin.Config.fileExtDesc" => "plagini uchun Bog'liq Extension", - "Plugin.tab.basic" => "Asosiy Sozlamalar", - "Plugin.tab.auth" => "ruxsatlar", - "Plugin.tab.others" => "Boshqa sozlash", - "Plugin.default.aceEditor" => "Ace muharriri", - "Plugin.default.htmlView" => "Veb-sahifani ko'rib", - "Plugin.default.picasa" => "Picasa rasm varaqlash", - "Plugin.default.zipView" => "Archive Preview", - "Plugin.default.jPlayer" => "jPlayer futbolchi", - "Plugin.auth.viewList" => "Plagin ro'yxati", - "Plugin.auth.setting" => "Plugin sozlamalari", - "Plugin.auth.status" => "O'chirib qo'ying", - "Plugin.auth.install" => "O'rnatish / o'chirish", - "Explorer.UI.openWith" => "Open ni tanlang", - "Explorer.UI.openWithText" => "Notepad ochish", - "Explorer.UI.appSetDefault" => "Standart o'rnatish ochiq", - "Explorer.UI.appAwaysOpen" => "Har doim bu faylni ochish uchun tanlangan dastur foydalanish", - "Explorer.UI.selectAppDesc" => "Ushbu faylni ochish uchun kerakli dasturni tanlang", - "Explorer.UI.selectAppWarning" => "dasturni tanlang Iltimos!", - "Explorer.UI.appTypeSupport" => "Qo'llab-quvvatlanadi", - "Explorer.UI.appTypeAll" => "Barcha ilovalar", - "kodApp.oexe.edit" => "Nur ilovasini tahrirlash", - "kodApp.oexe.open" => "yorug'lik dasturni oching" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/vi/about.html b/plugin/document/kod/config/i18n/vi/about.html deleted file mode 100644 index dcf898844..000000000 --- a/plugin/document/kod/config/i18n/vi/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer là những gì?
                    -

                    KODExplorer là một mã nguồn mở dựa trên Web quản lý tài liệu trực tuyến, biên tập mã. Nó cung cấp một loại cửa sổ giao diện cổ điển của người dùng, một bộ quản lý tài liệu trực tuyến, tập tin xem trước, chỉnh sửa, tải lên, tải về, nghe nhạc trực tuyến giải nén. Cho phép bạn để đạt được phát triển web trực tiếp trong trình duyệt, tập tin mã nguồn xem trước, và triển khai các chủ sở hữu trang web và các hoạt động địa phương là dễ dàng, nhanh chóng và kinh nghiệm an toàn.

                    -

                    - thiết kế -

                    -

                    truyền thống cổ điển, việc theo đuổi sự đổi mới, cung cấp cho người sử dụng thuận tiện, an toàn và dễ dàng để sử dụng hệ thống quản lý đám mây trực tuyến.

                    -

                    bất cứ khi nào (khi nào), trong đó (ở đâu), có các trang web bất cứ khi nào bạn muốn (muốn) nó là công cụ quản lý của bạn (4W chính sách).

                    -

                    - hướng người dùng -

                    -

                    hiện hệ thống quản lý KODExplorer chủ yếu nằm trong các đám mây cá nhân lưu trữ, nhỏ quản lý doanh nghiệp điện toán đám mây nguồn lực, quản lý ổ đĩa mạng, quản lý của các khu vực vừa và nhỏ. Web Developer & Master (cựu chiến binh): biên tập trực tuyến, sao lưu nén, triển khai, cổ điển hoạt động cửa sổ giao diện, dễ dàng để bắt đầu và thoát khỏi những SSH host, lệnh ftp hoạt động nhàm chán phức tạp.

                    -

                    đám mây cá nhân tư nhân (tân binh): nguồn tài nguyên đĩa mạng quản lý, cùng hoạt động cửa sổ cổ điển giao diện, bạn có thể đặt các ổ duyệt âm nhạc mạng, các file hình, tải lên và tải về nhanh chóng và dễ dàng.

                    -
                    - -
                    -
                    Tính năng
                    -

                    quản lý tài liệu toàn diện, mạnh mẽ sửa file trực tuyến

                    -

                    bất cứ nơi nào bạn đang có, bạn có thể quản lý các tập tin của bạn, và giải trí trực tuyến, viết mã trực tuyến! Cũng như thích hợp để sử dụng như các hệ điều hành.

                    -

                    rộng ghép kinh nghiệm địa phương ngay hoạt động, kéo, hộp lựa chọn, các phím tắt, tìm kiếm tập tin (nội dung tìm kiếm) ......

                    -

                    hộp lựa chọn, kéo di chuyển, kéo và thả tải lên, biên tập trực tuyến, video player, giải nén. hiệu suất đảm bảo ajax đầy đủ và kinh nghiệm!

                    -

                    mỗi chức năng trực tiếp kết nối liền mạch, trong hình thức thoại, chức năng quản lý đa nhiệm

                    -

                    Editor hỗ trợ đa tài liệu, hỗ trợ ZendCoding html, css, js cao mã hóa hiệu quả!

                    -

                    hoàn hảo hỗ trợ của Trung Quốc, bị cắt xén giải quyết các tình huống khác nhau;

                    -
                    - -
                    -
                    mã nguồn mở ứng dụng công nghệ
                    -

                    1.Jquery:jpuery (plugin: Hotkeys.ztree.contentmenu) .js khuôn khổ phát triển chủ đạo. Hoạt động của các hoạt động Dom, BOM, vận hành css, và gói Ajax

                    -

                    2.ArtDialog:một thiết kế đẹp, khả năng tương thích trình duyệt mạnh mẽ Widget thoại. Vì vậy, cửa sổ pop-up xử lý, sự kiện và truyền tải dữ liệu để có được một thống nhất quản lý tốt hơn

                    -

                    3.Ztree:kiểm soát cây danh sách, khả năng mở rộng là rất phụ tùng cây thao tác dữ liệu mạnh mẽ

                    -

                    4.codemirror:một trình soạn thảo mã js plugins, hỗ trợ nhiều ngôn ngữ lập trình để làm nổi bật

                    -

                    5.zendcoding:một mã hỗ trợ html nhanh chóng ghi plug-ins. Đơn giản hóa các định nghĩa của mã được viết. biên soạn đơn giản

                    -

                    6.less:một hiệu quả, mô hình phát triển css chức năng để cải thiện kết thúc trước stylesheets css có thể dùng lại . Đơn giản biên soạn

                    -

                    7.SWFUpload:file flash upload

                    -

                    8 .CMP4:một máy nghe nhạc flash rất tốt cắm các tập tin media, hỗ trợ cho các phương tiện truyền thông, phổ biến công cụ phát lại video âm nhạc. Hỗ trợ cho da, cài đặt cấu hình cao. Năng động, danh sách xml nạp. mms phương tiện truyền thông, RSTP mở giấy phép mã nguồn phương tiện truyền thông phát lại hỗ trợ

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/vi/edit.html b/plugin/document/kod/config/i18n/vi/edit.html deleted file mode 100644 index ca13a1c89..000000000 --- a/plugin/document/kod/config/i18n/vi/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    Các tính năng đặc trưng

                    -

                    Mã nhắc tự động

                    -

                    Multi-chủ đề: Chọn phong cách lập trình yêu thích của bạn

                    -

                    Tuỳ chỉnh Font: để sử dụng trong ngữ cảnh

                    -

                    Chỉnh sửa con trỏ, chỉnh sửa khối chương trình trực tuyến đơn giản và dễ dàng

                    -

                    Đóng, mở rộng khối; bao

                    -

                    Hỗ trợ cho nhiều tab, kéo chuỗi chuyển đổi;

                    -

                    Duy trì nhiều tài liệu, tìm kiếm và thay thế; Lịch sử;

                    -

                    Tự động hoàn thiện phần thiếu [], {}, (), '' ''

                    -

                    Trực tuyến thời gian thực xem trước để bạn yêu lập trình trực tuyến hơn !

                    -

                    Hỗ trợ Zendcoding, viết mã bát thập phân

                    -

                    Nhiều tính năng khác chờ bạn khám phá ......

                    -
                    -
                    -

                    150 loại mã nổi bật

                    -

                    Mẹo: HTML, Javascript, CSS, LESS, SASS, SCSS

                    -

                    Phát triển web: PHP, Perl, Python, Ruby, Elang, GO ...

                    -

                    Ngôn ngữ truyền thống: Java, C, C++, C#, ActionScript, VBScript ...

                    -

                    Khác: markdown, Bash, Sql, Lua, XML, YAML ...

                    -
                    -
                    -
                    -
                    -

                    Phím tắt

                    -
                     phím tắt thường được sử dụng: 
                    - Ctrl + S để lưu 
                    - Ctrl + A chọn tất cả Ctrl + X Cắt 
                    - Ctrl + C Ctrl + V dán
                    - Ctrl + Z Hoàn tác Ctrl + Y Bỏ hoàn tác
                    - Ctrl + F Tìm Ctrl + F + F Thay thế 
                    - Windows + Alt + 0 Thu gọn tất cả Windows + Alt + shift + 0 Mở rộng tất cả 
                    - esc [Thoát tìm kiếm hủy bỏ tự động nhắc nhở ...] 
                    - Ctrl + Shift + S Xem trước 
                    - Ctrl + Shift + E Hiển thị & Đóng chức năng 
                    -
                    -
                     Chọn: 
                    - Mouse marquee  - kéo 
                    - Shift + home / end / Up / Left / Down / Right 
                    - Shift + PageUp / PageDown lật lên và xuống để chọn 
                    - Ctrl + Shift + nhà / kết thúc của con trỏ hiện tại đến đầu và kết thúc 
                    - Alt + chuột để kéo các lựa chọn khối 
                    - Ctrl + Alt + g hàng loạt lựa chọn và nhập chỉnh sửa đa tab hiện tại 
                    -
                    -
                     Cursor: 
                    - home / End / Up / Left / Down / Right 
                    - Ctrl + Home / end di chuyển con trỏ đến đầu tài liệu / đuôi 
                    - Ctrl + P Nhảy tới vị trí có từ khóa 
                    - PageUp / PageDown con trỏ lên và xuống 
                    - Alt + con trỏ chuột trái / phải để di chuyển đến đầu dòng 
                    - Shift + chuột trái / phải để kết thúc dòng & 
                    - Ctrl + l để chuyển đến một dòng cụ thể 
                    - Ctrl + Alt + lên / xuống (bên dưới) tăng con trỏ 
                    -
                    -
                     Edit: 
                    - Ctrl + / Comment & bỏ Comment Ctrl + Alt + A chữa lại 
                    - sự thay đổi liên tab bảng + bảng bảng tiến bộ tổng thể 
                    - xóa xóa xóa toàn bộ dây chuyền Ctrl + d 
                    - Ctrl + Delete để xóa các dòng vào từ bên phải 
                    - Ctrl / Shift + Backspace để xóa từ bên trái 
                    - Alt + Shift + lên / xuống và thêm vào dòng copy (bên dưới)
                    - Alt + delete để xóa các nội dung của bên phải con trỏ 
                    - Alt + lên / xuống trên dòng hiện tại và dòng (trao đổi dòng tiếp theo) 
                    - Ctrl + Shift + d hàng sao chép và thêm vào sau 
                    - Ctrl + Delete để xóa các bên phải của từ 
                    - Ctrl + Shift + U chuyển đổi thành chữ thường 
                    - Ctrl + U văn bản đã chọn chữ hoa 
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/vi/help.html b/plugin/document/kod/config/i18n/vi/help.html deleted file mode 100644 index 83fb3f579..000000000 --- a/plugin/document/kod/config/i18n/vi/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    Quản lý tập tin
                    -

                    Lựa chọn tệp: radio, chuột marquee, chuyển dịch tranh cử, ctrl chọn ngẫu nhiên, bàn phím lên xuống, nhà, lựa chọn cuối cùng.

                    -

                    Tập tin hoạt động: Sau khi chọn một tập tin, bạn có thể sao chép, cắt, xóa, xem thuộc tính của nén, đổi tên, Preview mở và các hoạt động khác ......

                    -

                    File Upload: Upload nhiều file cùng lúc; html5 kéo tải lên (kéo để liên tục tải lên cửa sổ, kéo và thả hỗ trợ cho các thư mục)

                    -

                    chức năng bên phải: phải tập tin, thư mục, bên phải, nhiều hơn sau khi các hoạt động bầu cử, máy tính để bàn, phải, cây thư mục bên phải, các phím tắt menu ngữ ràng buộc
                    - (Chọn tất cả - Copy - Cut - Paste - Xóa - Đổi tên, đặt ......)

                    -

                    File Browser: chế độ danh sách, chế độ biểu tượng, double-click vào thư mục con; hoạt động thanh địa chỉ; mở một kỷ lục trái ngược bản ghi thư mục (phía trước và phía sau)

                    -

                    Hỗ trợ kéo và thả: Kiểm tra kéo, cắt để đạt được các chức năng thư mục chỉ định

                    -

                    Phím tắt: xóa xóa, Ctrl + A Chọn tất cả, Ctrl + C để sao chép, + X Cắt, tìm kiếm tập tin (nội dung tìm kiếm) ctrl

                    -
                    -
                    -
                    tập tin Xem trước
                    -

                    File Preview: xem nội dung của một chỉnh sửa tập tin văn bản và tiết kiệm; html, tập tin swf xem trước,

                    -

                    Xem trước hình ảnh: tự động tạo ra hình thu nhỏ, hình ảnh slide show;

                    -

                    Âm thanh phát lại: chơi nhạc trực tuyến và các tập tin video, hỗ trợ mp3, wma, mid, aac, wav, mp4,

                    -

                    Video: Xem lại video trực tuyến, hỗ trợ các định dạng: FLV, F4V, 3gp

                    -

                    văn phòng: văn phòng trực tuyến Preview, hỗ trợ các định dạng: doc, docx, ppt, pptx, xls, xlsx

                    -
                    -
                    -
                    Phím tắt
                    -

                    nhập mở

                    -

                    ctrl + một lựa chọn tất cả

                    -

                    Ctrl + C để sao chép các lựa chọn

                    -

                    ctrl + v để dán

                    -

                    ctrl + x Cut

                    -

                    Ctrl + F để tìm kiếm các thư mục hiện tại

                    -

                    alt + n New File

                    -

                    alt + m New Folder

                    -

                    xóa Delete selected

                    -

                    Backspace Trở lại

                    -

                    ctrl + backspace về phía trước

                    -

                    f2 Rename chọn (thư mục)

                    -

                    home / end / lên / xuống / trái / phải để chọn tập tin

                    -

                    Phím bất Kiểm tra để nhấn chữ cái đầu tiên của các tập tin và thư mục nhân vật được lựa chọn chu kỳ tự động

                    -
                    diff --git a/plugin/document/kod/config/i18n/vi/main.php b/plugin/document/kod/config/i18n/vi/main.php deleted file mode 100644 index cd9e743f3..000000000 --- a/plugin/document/kod/config/i18n/vi/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "Vui lòng chọn các tập tin ...", - "path_api_select_folder" => "Vui lòng chọn một thư mục ...", - "path_api_select_image" => "Vui lòng chọn một hình ảnh ...", - "share_can_upload" => "Cho phép tải lên", - "move_error" => "Di chuyển thất bại", - "setting_basic" => "Cài đặt cơ bản", - "setting_user_sound_open" => "Bật loa", - "setting_user_animate_open" => "Bật hoạt cảnh", - "recycle_open_if" => "Mở Recycle Bin", - "recycle_open" => "Mở", - "setting_user_recycle_desc" => "Sau khi xóa dữ liệu sẽ bị xóa vĩnh viễn", - "setting_user_animate_desc" => "Cửa sổ mở và các hoạt cảnh khác", - "setting_user_sound_desc" => "Âm vận hành", - "setting_user_imageThumb" => "Hình thu nhỏ", - "setting_user_imageThumb_desc" => "Trải nghiệm duyệt tốt hơn sau khi mở", - "setting_user_fileSelect" => "Mở kiểm tra tệp tin", - "setting_user_fileSelect_desc" => "Kiểm tra phím bên trái tệp tin, nhấp chuột phải vào mục tắt của trình đơn", - "qrcode" => "URL mã QR", - "theme_mac" => "Mac trắng tối giản", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro xanh cổ điển", - "theme_metro_green" => "Metro ánh sáng màu xanh lá cây", - "theme_metro_purple" => "Metro thanh lịch màu tím", - "theme_metro_pink" => "Metro Rose", - "theme_metro_orange" => "Metro cam tươi sáng", - "theme_alpha_image" => "Bright - bay", - "theme_alpha_image_sun" => "Bright - Sunset", - "theme_alpha_image_sky" => "Symphony - Blue Sky", - "theme_diy" => "Tuỳ", - "theme_diy_title" => "Cài đặt tùy chỉnh Theme", - "theme_diy_background" => "Hình nền", - "theme_diy_image" => "Ảnh", - "theme_diy_color_blur" => "Màu Gradient", - "theme_diy_image_blur" => "Hiện tượng mờ ảnh", - "theme_diy_image_url" => "URL ảnh", - "theme_diy_color_start" => "Màu bắt đầu", - "theme_diy_color_end" => "Màu kết thúc", - "theme_diy_color_radius" => "Góc Gradient", - "system_role_admin_set" => "Người quản trị có tất cả các quyền, mà không cần thiết!", - "login_error_user_not_use" => "Người dùng đã bị vô hiệu hóa! Vui lòng liên hệ với quản trị", - "login_error_kod_version" => "Xung đột phiên bản", - "login_error_role" => "Xem các quyền nhóm không tồn tại, xin vui lòng liên hệ với quản trị viên", - "no_permission_group" => "Bạn đang không ở trong nhóm này!", - "no_permission_write" => "Các thư mục không có quyền ghi", - "user" => "người sử dụng", - "save_as" => "Lưu như là", - "check_update" => "Cập nhật", - "keyboard_type" => "Bàn phím", - "font_family" => "Fonts", - "code_mode" => "Highlight cú pháp", - "path_can_not_share" => "Chỉ hỗ trợ chia sẻ tài liệu của riêng bạn!", - "path_can_not_action" => "Thư mục này không hỗ trợ hoạt động này!", - "wap_page_pc" => "PC", - "wap_page_phone" => "Điện thoại", - "image_size" => "Kích thước hình ảnh", - "no_permission_action" => "Bạn không có quyền này, xin vui lòng liên hệ với người quản trị!", - "path_is_root_tips" => "Nó đã đi vào thư mục gốc!", - "kod_group" => "Tất cả các nhóm", - "my_kod_group" => "Tôi ở trong phòng", - "space_tips_default" => "Dung lượng không giới hạn", - "space_tips_full" => "Không giới hạn", - "space_size" => "Kích thước vùng trống", - "space_size_use" => "Sử dụng không gian", - "space_is_full" => "Không còn đủ dung lượng, vui lòng liên hệ với quản trị viên!", - "system_open_true_path" => "mở thành công trong bộ quản lý tập tin!", - "group_role_error" => "quyền vai trò lỗi (không cho phép cài đặt)", - "group_role_error_admin" => "Không đủ giấy phép", - "markdown_content" => "Mục lục", - "system_group" => "Người dùng và bộ phận", - "system_group_edit" => "Quản lý", - "system_group_role" => "sắc vai trò", - "system_group_create" => "Bộ phận mới", - "system_group_name" => "Tên khoa", - "system_group_father" => "Phòng cao cấp", - "system_group_add" => "Thêm chi nhánh", - "system_group_remove" => "Loại bỏ các bộ phận", - "system_group_remove_tips" => "Bạn có chắc chắn để xóa các phòng ban?
                    Sau khi xóa bỏ một phần của người sử dụng, khu vực phụ được chuyển đến khu vực gốc", - "system_group_select" => "Chọn bộ phận", - "system_group_select_result" => "Các thành viên sẽ thuộc về các lĩnh vực sau", - "system_role_admin_tips" => "Nhận xét: Quản trị viên hệ thống không được phép kiểm soát", - "system_member_action" => "Quản lý người dùng", - "system_member_add" => "người dùng mới", - "system_member_role" => "vai trò phép", - "system_member_role_select" => "lựa chọn", - "system_member_password_tips" => "Không điền không thay đổi", - "system_set_home_path" => "Catalog tùy chỉnh", - "system_set_home_path_tips" => "Các thư mục mặc định là rỗng", - "system_member_group" => "Nơi phòng", - "system_member_group_edit" => "Bộ phận biên tập", - "system_member_remove" => "xóa tài khoản", - "system_member_remove_tips" => "Xác nhận người dùng xóa?
                    sau khi bạn loại bỏ các thư mục người dùng sẽ bị xóa hoàn toàn", - "system_member_set_role" => "Để xác nhận sự thay đổi của các điều khoản nhóm người sử dụng lựa chọn?", - "system_member_remove_group" => "Xác định người dùng được lựa chọn sẽ được loại bỏ khỏi nhóm này?", - "system_member_import" => "thêm hàng loạt", - "system_member_import_desc" => "Một người dùng trên mỗi dòng,
                    đã tồn tại được âm thầm bỏ qua", - "system_member_use" => "cho phép", - "system_member_unuse" => "Vô hiệu hóa", - "system_member_space" => "Đặt kích thước không gian người dùng ", - "system_member_space_tips" => " Đặt kích thước không gian người dùng ", - "system_member_space_number" => " Phải là một con số!", - "system_member_group_config" => "Bộ phận sản xuất hàng loạt", - "system_member_group_remove" => "Đã bị xóa khỏi phòng", - "system_member_group_insert" => "Thêm vào bộ phận", - "system_member_group_reset" => "Đặt lại bộ phận", - "system_member_group_error" => "Lỗi của Bộ", - "system_group_action" => "Quản lý", - "system_role_add" => "Thêm vai trò nhận dạng", - "system_role_read" => "Chỉ đọc", - "system_role_write" => "Có thể đọc và viết", - "system_setting_root_path" => "truy cập root", - "system_setting_root_path_desc" => "Chỉ có một người quản trị hệ thống có thể truy cập vào tất cả các thư mục, các nhóm nhân quyền khác của người sử dụng chỉ có thể xem thư mục người dùng của mình. Nếu bạn muốn bật hoặc tắt
                    truy cập quản trị vào thư mục khác, bạn có thể thay đổi các thông số php open_basedir chống cross-site,thiết", - "system_group_role_title" => "Quản lý vai trò của cơ quan chức năng", - "system_group_role_remove" => "OK để xóa vai trò của bộ phận", - "system_group_role_style" => "phong cách", - "system_group_role_display" => "Cho dù", - "system_group_role_display_desc" => "Đặt xem có hiển thị quyền người dùng của bộ phận hay không", - "role_type_name_read" => "đọc", - "role_type_name_read:list" => "Danh sách tập tin", - "role_type_name_read:info" => "Tệp (thư mục) Bất động sản Xem, tìm kiếm thư mục", - "role_type_name_read:copy" => "Sao chép tập tin", - "role_type_name_read:preview" => "xem trước tập tin (hình ảnh, văn bản, âm thanh và video)", - "role_type_name_read:download" => "Tệp (thư mục) Tải về", - "role_type_name_write" => "viết", - "role_type_name_write:add" => "Tạo một tập tin (thư mục), trích xuất các tập tin nén", - "role_type_name_write:edit" => "Lưu tập tin để chỉnh sửa", - "role_type_name_write:change" => "Đổi tên, điều chỉnh cấu trúc thư mục", - "role_type_name_write:upload" => "Tệp (thư mục) tải lên, tải về từ xa", - "role_type_name_write:remove" => "Tệp (thư mục) xóa, cắt", - "group_guest" => "Khách thăm", - "group_guest_desc" => "Bạn không phải là thành viên của bộ phận,
                    chỉ có thể truy cập vào [thư mục chia sẻ bộ phận] nội dung sau đây, cho phép chỉ đọc.", - "group_role_lebel_desc" => "Bạn là thành viên của bộ phận này,
                    Tất cả các tài liệu trong bộ phận Tất cả các quyền được quản trị viên", - "button_save_and_add" => "Lưu và tiếp tục thêm", - "path_cannot_search" => "Các thư mục không hỗ trợ việc tìm kiếm!", - "not_support" => "Không được hỗ trợ!", - "group_not_exist" => "nhóm người sử dụng không tồn tại!", - "upload_clear_all" => "Xóa tất cả", - "upload_clear" => "Hoàn thành", - "upload_setting" => "Thiết lập", - "upload_tips" => "Để tải lên không còn bị giới hạn kiểm tra php.ini", - "upload_exist" => "Tập tin cùng tên", - "upload_exist_rename" => "Đổi tên", - "upload_exist_replace" => "Ghi đè", - "upload_exist_skip" => "Bỏ qua", - "upload_add_more" => "Thêm hàng loạt", - "more" => "Thêm", - "system_setting" => "Cài đặt hệ thống", - "openProject" => "Mở trình soạn thảo dự án", - "url_download" => "Tải về", - "url_link" => "URL", - "app_type_link" => "Phím tắt", - "createLink" => "Tạo phím tắt", - "createLinkHome" => "Gửi đến các phím tắt máy tính để bàn", - "createProject" => "Thêm vào dự án biên tập viên", - "only_read" => "Chỉ đọc", - "only_read_desc" => "Các thư mục không có quyền ghi
                    Bạn có thể thiết lập quyền cho thư mục này trên máy chủ", - "not_read" => "không thể đọc được", - "explorerNew" => "Liên kết kod", - "zip_download_ready" => "Sau khi nén sẽ tự động tải về, vui lòng đợi ...", - "set_background" => "Đặt làm hình nền", - "share" => "Chia sẻ", - "my_share" => "Chia sẻ của tôi", - "group_share" => "Chia sẻ bên ngoài nhóm", - "share_edit" => "Chỉnh sửa chia sẻ", - "share_remove" => "Huỷ chia sẻ", - "share_remove_tips" => "Bạn có chắc chắn muốn hủy chia sẻ? Kết nối công cộng sẽ bị vô hiệu.", - "share_path" => "Chia sẻ con đường", - "share_title" => "Chia sẻ tài nguyên", - "share_name" => "Chia sẻ tiêu đề", - "share_time" => "Hết hạn", - "share_time_desc" => "Null không được thiết lập", - "share_password" => "mật khẩu Extract", - "share_password_desc" => "mật khẩu trống không được thiết lập", - "share_cancle" => "không chia sẻ", - "share_create" => "Tạo một liên kết nào", - "share_url" => "chia sẻ Địa chỉ", - "share_not_download" => "Tải về lệnh cấm", - "share_not_download_tips" => "Sharer cấm download!", - "share_code_read" => "Mã đọc", - "share_save" => "Lưu cấu hình", - "share_error_param" => "Thông số lỗi!", - "share_error_user" => "Thông tin người sử dụng Error!", - "share_error_sid" => "Chia sẻ không tồn tại!", - "share_error_time" => "Bạn đến quá muộn, các phần đã hết hạn!", - "share_error_path" => "Chia sẻ tập tin không tồn tại, nó sẽ bị xóa hoặc gỡ bỏ nó!", - "share_error_password" => "mật khẩu sai!", - "share_error_show_tips" => "loại này không hỗ trợ xem trước tập tin!", - "share_view_num" => "Lần đọc:", - "share_download_num" => "Downloads:", - "share_open_page" => "Mở trang chia sẻ", - "open_the_path" => "nhập thư mục", - "recycle_clear" => "Dọn sạch thùng rác", - "recycle_clear_success" => "Trống thùng rác thành công!", - "recycle_clear_info" => "Bạn có chắc chắn bạn muốn hoàn toàn trống rỗng vào thùng rác?", - "fav_remove" => "Hủy bỏ các bộ sưu tập", - "remove_item" => "mục", - "uploading" => "Tải lên", - "upload_tips_more" => "Quá nhiều tập tin, kiến ​​nghị của tải lên nén, sau đó giải nén trực tuyến!", - "uploading_move" => "Trong quá trình chuyển hợp nhất ...", - "show_file" => "xem trước trang mới", - "unknow_file_title" => "File Open Mẹo!", - "unknow_file_tips" => "Không ủng hộ việc áp dụng các tập tin này, bạn có thể:", - "unknow_file_try" => "thử", - "unknow_file_download" => "Tải file", - "unknow_plugin_search" => "ứng dụng tìm kiếm liên quan đến cài đặt", - "config_save_error_auth" => "Không thể lưu cấu hình, quản trị cấm đặc quyền này!", - "config_save_error_file" => "Lỗi, tập tin không thể ghi!", - "beautify_code" => "Mã Formatter", - "convert_case" => "đổi sang hộp", - "convert_upper_case" => "Chuyển đổi sang chữ hoa", - "convert_lower_case" => "Chuyển đổi thành chữ thường", - "editor_insert_time" => "Thời gian hiện tại ", - "editor_md5" => " Mã hóa Md5 ", - "editor_qrcode" => " Mã chuỗi hai chiều ", - "editor_regx" => " Kiểm tra biểu thức chính quy ", - "editor_chinese" => " Chuyển đổi đơn giản ", - "editor_chinese_simple" => " Chuyển đổi sang tiếng Trung giản thể ", - "editor_chinese_traditional" => " Chuyển đổi sang tiếng Trung Phồn thể ", - "editor_base64" => "Codec Base64 ", - "editor_base64_encode" => " Mã hóa Base64 ", - "editor_base64_decode" => " Giải mã Base64 ", - "editor_url" => " Codec URL ", - "editor_url_encode" => " Mã hóa URL ", - "editor_url_decode" => " Giải mã URL ", - "editor_unicode" => " Bộ giải mã Unicode ", - "editor_unicode_encode" => " Mã hóa Unicode ", - "editor_unicode_decode" => " Giải mã Unicode", - "editor_tools_select_tips" => " Vui lòng chọn nội dung bạn muốn chuyển đổi!", - "editor_calc" => "Máy tính miễn phí", - "shortcut" => "Phím tắt", - "use_free" => "Tiếp tục sử dụng phiên bản miễn phí", - "learn_more" => "Tìm hiểu thêm", - "replace" => "thay thế", - "selectAll" => "lựa chọn", - "reload" => "Nạp lại", - "about" => "trên", - "complete_current" => "Tự động hoàn thành của hiện tại", - "view" => "quang cảnh", - "tools" => "dụng cụ", - "help" => "giúp", - "not_exists" => "Không tồn tại", - "group_role_fileDownload" => "tải", - "group_role_share" => "phần", - "users_share" => "chia sẻ", - "system_setting_save" => "Security Settings", - "system_setting_menu" => "quản lý đơn", - "system_name" => "Tên chương trình", - "system_name_desc" => "tiêu đề biểu tượng chương trình", - "system_desc" => "Mô tả chương trình", - "path_hidden" => "loại trừ thư mục", - "version_not_support" => "Phiên bản của bạn không hỗ trợ này, vui lòng vào trang web chính thức để mua phiên bản tiên tiến!", - "version_not_support_number" => "Khi số lượng hạn chế không hỗ trợ hoạt động này, hãy mua phiên bản tiên tiến của các trang web chính thức!", - "path_hidden_desc" => "Thư mục và các tập tin theo mặc định không hiển thị, cách nhau bằng dấu phẩy", - "new_user_folder" => "Người dùng mới được tạo ra bởi thư mục mặc định", - "new_user_folder_desc" => "Nhau bằng dấu phẩy", - "new_user_app" => "Người dùng mới được tạo ra bởi ứng dụng mặc định", - "new_user_app_desc" => "Ứng dụng Trung tâm Ứng dụng, đa số cách nhau bởi dấu phẩy", - "auto_login" => "Thăm tự động đăng nhập", - "auto_login_desc" => "Đăng nhập mặc định sử dụngguest/guestngười sử dụng, sau khi mở cửa để đảm bảo rằng người dùng tồn tại", - "first_in" => "Sau khi đăng nhập vào mặc định", - "version_price_free" => "tự do", - "version_name_1" => "VIP 1", - "version_name_2" => "VIP 2", - "version_name_3" => "VIP 3", - "version_name_4" => "VIP 4", - "version_name_5" => "VIP 5", - "version_name_6" => "VIP 6", - "version_vip_free" => "Free", - "version_vip_1" => "VIP 1", - "version_vip_2" => "VIP 2", - "version_vip_3" => "VIP 3", - "version_vip_4" => "VIP 4", - "version_vip_5" => "VIP 5", - "version_vip_6" => "VIP 6", - "path_can_not_write_data" => "Directory là không ghi được, thiết lập các thư mục và tất cả các thư mục con để thử lại sau khi đọc-viết!", - "menu_name" => "tên đơn", - "menu_hidden" => "giấu", - "menu_show" => "trưng bày", - "menu_move_down" => "xuống", - "menu_move_up" => "up", - "menu_move_del" => "xóa bỏ", - "menu_open_window" => "Mở một cửa sổ mới", - "menu_sub_menu" => "Submenu", - "url_path" => "địa chỉ url", - "url_path_desc" => "địa chỉ url hoặc mã js", - "no_permission_read" => "Bạn không có quyền để đọc!", - "no_permission_download" => "Bạn không có quyền để tải về!", - "php_env_check" => "Hoạt động giám sát môi trường:", - "php_env_error" => "Thư viện Php bị thiếu", - "php_env_error_ignore" => "Bỏ qua và nhập", - "php_env_error_version" => "PHP phiên bản không thể ít hơn 5.0", - "php_env_error_path" => "không thể ghi", - "php_env_error_list_dir" => "máy chủ web của bạn mở thư mục tính năng niêm yết vì lý do an ninh, vô hiệu hóa tính năng này!thế nào?", - "php_env_error_gd" => "thư viện php GD nên được mở, nếu không thì mã, sử dụng các hình ảnh thu nhỏ sẽ không hoạt động đúng", - "install_login" => "Bạn có thể sử dụng tài khoản đăng nhập sau", - "install_enter" => "hệ thống", - "install_user_default" => "Administrator: {0} / (dưới đây thiết lập một mật khẩu)
                    người sử dụng trung bình: {1}
                    người sử dụng của khách: {2}", - "login_root_password" => "Đặt mật khẩu Administrator", - "login_root_password_repeat" => "Xác nhận lại mật khẩu", - "login_root_password_equal" => "Hai mật khẩu không phù hợp!", - "login_root_password_tips" => "Thiết lập một mật khẩu quản trị!", - "forget_password" => "Quên mật khẩu của bạn", - "forget_password_tips" => "Quên Administrator Password:
                    Hãy đăng nhập máy chủ xóa ./data/system/install.lock thiết lập lại;

                    Non-quản trị viên Quên mật khẩu:
                    Hãy liên hệ với người quản trị để thiết lập lại!", - "copyright_desc" => "Kodexplorer là một hệ thống quản lý tài liệu web rất hoan nghênh, bạn có thể sử dụng nó để quản lý tài liệu nội bộ hoặc chia sẻ, cũng có thể được sử dụng trên các máy chủ quản lý trang web, thay thế Ftp, thậm chí như webIDE phát triển trực tiếp trực tuyến. Bạn cũng có thể lập trình phát triển thứ hai để hội nhập này vào các hệ thống hiện tại của bạn.", - "copyright_contact" => "Contact us:kodcloud@qq.com . Feedback", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "Mango đám mây • Explorer", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "Mango đám mây • Explorer", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer, kod, kodCloud, webOS, webIDE, php filemanage, filemanage, Dao đám mây, điện toán đám mây xoài, hệ thống quản lý tài liệu, đĩa doanh nghiệp điện toán đám mây, nhà thám hiểm ,, tài liệu trực tuyến, Văn phòng trực tuyến, văn phòng trực tuyến, xem trước CAD trực tuyến, chỉnh sửa trực tuyến , biên tập viên trực tuyến", - "kod_meta_description" => "KodExplorer thể đám mây đường (trước đây xoài đám mây) là nhà cung cấp hàng đầu của chính phủ / đám mây doanh nghiệp tư nhân và hệ thống quản lý tài liệu trực tuyến cho các trang web cá nhân, doanh nghiệp triển khai điện toán đám mây tư nhân, lưu trữ mạng, quản lý tài liệu trực tuyến, văn phòng trực tuyến để cung cấp an toàn và kiểm soát, đơn giản và dễ dàng sử dụng, tùy biến rất cao sản phẩm điện toán đám mây tư nhân. Sử dụng cửa sổ giao diện phong cách, thực tiễn điều hành, mà không cần phải điều chỉnh để nhanh chóng bắt đầu, hỗ trợ hàng trăm định dạng file phổ biến xem trước trực tuyến, phát lại và chỉnh sửa thân thiện môi trường, mạnh mẽ, là một thử nghiệm một lần, không còn thể tách rời khỏi tin đám mây cúng dường.", - "kod_meta_copyright" => "kodcloud.com", - "login" => "Đăng nhập", - "guest_login" => "khách Đăng nhập", - "username" => "Tài khoản đăng nhập", - "userNickName" => "Biệt hiệu người dùng", - "password" => "mật khẩu", - "login_code" => "Codes", - "need_check_code" => "mã xác thực đăng nhập mở", - "need_check_code_desc" => "Sau khi đăng nhập, bạn phải nhập mã xác minh.", - "setting_csrf_protect" => "bảo vệ CSRF Mở", - "setting_csrf_protect_desc" => "Sau khi loại mở cuộc tấn công có hiệu quả có thể bảo vệ CSRF", - "login_rember_password" => "Ghi nhớ mật khẩu", - "setting_show_root_group" => "Liệt kê tất cả các phòng ban", - "setting_show_root_group_desc" => "Bộ phận thư mục gốc của cây thư mục để liệt kê tất cả các phòng ban", - "setting_show_share_user" => "Một danh sách tất cả người dùng", - "setting_show_share_user_desc" => "Bộ phận gốc thư mục gốc được liệt kê cho tất cả người dùng chia sẻ", - "setting_clear_user_recycle" => "Làm trống thùng rác cho tất cả người dùng", - "setting_clear_cache" => "Empty cache", - "setting_icp" => "Copyright hoặc hồ sơ số", - "setting_global_css" => "css tùy chỉnh toàn cầu", - "setting_global_css_desc" => "Tất cả các trang sẽ chèn tùy chỉnh css", - "setting_global_html" => "HTML code thống kê", - "setting_global_html_desc" => "Tất cả các trang sẽ được chèn vào trong mã html đoạn này, các mã có thể được đặt thống kê của bên thứ ba", - "us" => "kodcloud.com", - "login_not_null" => "Tên người dùng và mật khẩu không thể để trống!", - "code_error" => "mã lỗi", - "password_error" => "tên người dùng hoặc mật khẩu không đúng!", - "password_not_null" => "Mật khẩu không thể để trống!", - "old_password_error" => "Mật khẩu cũ là sai!", - "permission" => "Giấy phép!", - "permission_edit" => "Sửa Quyền", - "file_info_owner" => "chủ nhân", - "file_info_group" => "nhóm", - "no_permission" => "Quản trị viên đã vô hiệu hóa quyền này!", - "no_permission_ext" => "Quản trị viên cấm kiểu này cho phép file", - "dialog_max" => "phát huy tối đa", - "dialog_min" => "Giảm thiểu", - "dialog_min_all" => "Thu nhỏ tất cả", - "dialog_display_all" => "Hiện tất cả các cửa sổ", - "dialog_close_all" => "Đóng tất cả", - "open" => "Mở", - "others" => "Khác", - "open_with" => "Mở bằng ...", - "close" => "Đóng", - "close_all" => "Đóng tất cả", - "close_left" => "Đóng tab còn lại", - "close_right" => "Đóng các tab bên phải", - "close_others" => "Đóng khác", - "loading" => "Đang tải...", - "warning" => "Cảnh báo", - "getting" => "Lấy ...", - "sending" => "truyền tải dữ liệu ...", - "data_error" => "Lỗi dữ liệu!", - "get_success" => "Nhận thành công!", - "save_success" => "Lưu thành công!", - "success" => "thành công", - "error" => "lỗi", - "error_repeat" => "Thao tác thất bại, cái tên đã tồn tại!", - "word_error" => "Không thành công ", - "word_success" => " Thành công", - "system_error" => "lỗi hệ thống", - "name" => "tên", - "type" => "kiểu", - "contain" => "chứa", - "address" => "vị trí", - "size" => "kích thước", - "byte" => "byte", - "path" => "đường dẫn", - "action" => "điều hành", - "create_time" => "tạo", - "modify_time" => "Được thay đổi", - "last_time" => "Lần đăng nhập mới", - "sort_type" => "Sắp xếp theo", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "Thư mục chia sẻ", - "system_path_not_change" => "Thư mục hệ thống, không thể được sửa đổi", - "file" => "file", - "folder" => "Thư mục", - "copy" => "Sao chép", - "past" => "Dán", - "clone" => "Tạo một bản sao", - "cute" => "Cắt", - "cute_to" => "Di chuyển đến ...", - "copy_to" => "Sao chép đến ...", - "remove" => "Xóa bỏ", - "remove_force" => "Loại bỏ hoàn toàn", - "info" => "Lấy thông tin", - "list_type" => "Góc nhìn", - "list_icon" => "Mảng Icon", - "list_list" => "Danh sách", - "list_list_split" => "Cột", - "sort_up" => "Tăng", - "sort_down" => "Giảm", - "order_type" => "Sắp xếp theo", - "order_desc" => "Giảm dần", - "order_asc" => "Tăng dần", - "rename" => "Đổi tên", - "add_to_fav" => "Thêm vào yêu thích", - "search_in_path" => "Tìm kiếm thư mục", - "add_to_play" => "Thêm vào Playlist", - "manage_fav" => "Quản lý Danh mục ưa thích", - "refresh_tree" => "cây thư mục Refresh", - "manage_folder" => "Quản lý thư mục", - "close_menu" => "Đóng đơn", - "zip" => "Tạo một gói nén", - "unzip" => "Để trích xuất ...", - "unzip_folder" => "Giải nén vào một thư mục", - "unzip_this" => "Giải nén vào hiện tại", - "unzip_to" => "Để trích xuất ...", - "zipview_file_big" => "Các tập tin là quá lớn, và sau đó trích xuất các hoạt động xem trước!", - "clipboard" => "Xem Clipboard", - "clipboard_clear" => "Clipboard trống", - "full_screen" => "Full Screen", - "folder_info_item" => "mục", - "folder_info_item_select" => "Một lựa chọn", - "file_load_all" => "Double-click để load tất cả ......", - "tips" => "nhanh chóng", - "ziping" => "Nén ...", - "unziping" => "Trích xuất ...", - "moving" => "hoạt động điện thoại di động ...", - "remove_title" => "xóa xác nhận", - "remove_info" => "Xác nhận để xóa các mục đã chọn?", - "remove_title_force" => "xóa vĩnh viễn", - "remove_info_force" => "Bạn có chắc muốn xóa vĩnh viễn tài liệu này?", - "name_isexists" => "Sai, cái tên đã tồn tại!", - "install" => "đặt", - "width" => "chiều rộng", - "height" => "cao", - "app" => "Ứng dụng", - "app_store" => "Store", - "app_create" => "Create Application", - "app_edit" => "Sửa đổi các ứng dụng", - "app_group_all" => "Tất cả", - "app_group_game" => "Trò chơi", - "app_group_tools" => "Công cụ", - "app_group_reader" => "Đọc", - "app_group_movie" => "Tivi", - "app_group_music" => "Am nhạc", - "app_group_life" => "Đời sống", - "app_group_others" => "Khác", - "app_desc" => "Miêu tả", - "app_icon" => "Biểu tượng ứng dụng", - "app_icon_show" => "Địa chỉ URL hoặc các thư mục", - "app_group" => "Nhóm ứng dụng", - "app_type" => "Kiểu", - "app_type_url" => "Liên kết", - "app_type_code" => "Mở rộng", - "app_display" => "Ngoài", - "app_display_border" => "Không biên giới (tức là chọn không biên giới)", - "app_display_size" => "Chỉnh kích cỡ (Kiểm tra để điều chỉnh)", - "app_size" => "Kích thước", - "app_url" => "Địa chỉ liên kết", - "app_code" => "mã js", - "edit" => "chỉnh sửa", - "edit_can_not" => "Không phải là một tập tin văn bản", - "edit_too_big" => "Tập tin quá lớn, nó có thể không được lớn hơn 40M", - "open_default" => "Mở mặc định", - "open_ie" => "Mở trình duyệt", - "refresh" => "Làm mới", - "refresh_all" => "Làm mới", - "newfile" => "Tạo mới tập tin", - "newfile_save_as" => "Lưu vào", - "newfolder" => "Thư mục mới", - "newothers" => "Khác", - "path_loading" => "Đang tải ...", - "go" => "Tới!", - "go_up" => "Tới thư mục cha", - "history_next" => "Tiếp", - "history_back" => "Lùi", - "address_in_edit" => "Click để vào chế độ chỉnh sửa", - "double_click_rename" => "Nhấp đúp vào để sửa", - "double_click_open" => "Double-click để mở", - "path_null" => "Thư mục rỗng!", - "file_size_title" => "Kích thước Icon", - "file_size_small_super" => "Siêu nhỏ", - "file_size_small" => "Nhỏ", - "file_size_default" => "Mặc định", - "file_size_big" => "Lớn", - "file_size_big_super" => "Siêu lớn", - "upload" => "Tải lên", - "upload_ready" => "Đang chờ tải lên", - "upload_success" => "Tải lên thành công", - "upload_path_current" => "Chuyển đến thư mục hiện tại", - "upload_select" => "Chọn file", - "upload_max_size" => "Các tối đa cho phép", - "upload_size_info" => "Nếu bạn muốn cấu hình thêm, vui lòng sửa đổi tối đa php.ini cho phép tải lên. Khi bạn chọn một tập tin lớn hơn cấu hình này sẽ tự động lọc ra.", - "upload_error" => "không thể tải lên", - "upload_error_http" => "Lỗi mạng hoặc tường lửa", - "upload_muti" => "upload nhiều file", - "upload_drag" => "Kéo và thả tải lên", - "upload_drag_tips" => "Nới lỏng để tải lên!", - "path_not_allow" => "Tên tệp không được phép", - "download" => "Tải về", - "downloading" => "Đang tải ...", - "download_address" => "Tải về", - "download_ready" => "Sẽ được tải về", - "download_success" => "Tải về thành công!", - "download_error" => "Tải về thất bại!", - "download_error_create" => "Viết lỗi!", - "download_error_exists" => "Liên kết đến tập tin không thành công!", - "upload_error_null" => "Không có tập tin!", - "upload_error_big" => "Kích thước vượt quá giới hạn máy chủ", - "upload_error_move" => "Không thể di chuyển tập tin!", - "upload_error_exists" => "Các tập tin đã tồn tại", - "upload_local" => "Tải lên địa phương", - "download_from_server" => "Tải về trên server", - "save_path" => "Lưu đường dẫn", - "upload_select_muti" => "Một đa số tập tin tải lên lựa chọn", - "search" => "Tìm kiếm", - "searching" => "Tìm kiếm ...", - "search_result" => "Kết quả tìm kiếm", - "seach_result_too_more" => "Quá nhiều kết quả tìm kiếm, nó được khuyến khích cho một thư mục hoặc các từ", - "search_null" => "Không có kết quả!", - "search_uplow" => "trường hợp nhạy cảm", - "search_content" => "nội dung tập tin tìm kiếm", - "search_info" => "Vui lòng nhập một thuật ngữ tìm kiếm và những con đường tìm kiếm!", - "search_ext_tips" => "Bằng | tách, ví dụ php | js | css
                    không điền vào việc tìm kiếm tập tin văn bản mặc định", - "file_type" => "file Type", - "goto" => "Chuyển đến", - "server_dwonload_desc" => "Nhiệm vụ đã được thêm vào danh sách tải về", - "parent_permission" => "Thư mục cho phép cha mẹ", - "root_path" => "Tài liệu của tôi", - "lib" => "nhà kho", - "fav" => "Bookmark", - "desktop" => "Máy tính để bàn", - "browser" => "Trình duyệt", - "my_computer" => "máy tính của tôi", - "recycle" => "rác", - "my_document" => "Tài liệu của tôi", - "my_picture" => "Hình ảnh của tôi", - "my_music" => "Âm nhạc của tôi", - "my_movie" => "Video của tôi", - "my_download" => "My Downloads", - "ui_desktop" => "Máy tính để bàn", - "ui_explorer" => "Quản lý tập tin", - "ui_editor" => "Biên tập viên", - "adminer" => "adminer", - "ui_project_home" => "Dự án Trang chủ", - "ui_login" => "Đăng nhập", - "ui_logout" => "Thoát", - "setting" => "Cài đặt hệ thống", - "setting_title" => "Tùy chọn", - "setting_user" => "Trung tâm cá nhân", - "setting_password" => "thay đổi mật khẩu", - "setting_password_old" => "Mật khẩu cũ", - "setting_password_new" => "sửa đổi để", - "setting_language" => "Cài đặt ngôn ngữ", - "setting_member" => "Quản lý người dùng", - "setting_group" => "quản lý nhóm người dùng", - "setting_group_add" => "Thêm người dùng Nhóm", - "setting_group_edit" => "Sửa các nhóm tài", - "setting_theme" => "Cài đặt chủ đề", - "setting_wall" => "Cài đặt hình nền", - "setting_wall_desktop" => "Hình nền máy tính để bàn", - "setting_wall_desktop_list" => "Quản lý ảnh nền màn hình", - "setting_wall_login_list" => "Đăng nhập Quản lý Hình nền", - "setting_wall_login_tips" => "Mẹo: Khi có nhiều hơn một mảnh, nền giao diện đăng nhập sẽ xoay ngẫu nhiên", - "setting_wall_diy" => "hình nền tùy chỉnh:", - "setting_wall_info" => "Hình ảnh địa chỉ url, hình ảnh địa phương có thể được quyền nhận các trình duyệt để mở hình ảnh", - "setting_fav" => "Bookmark quản lý", - "setting_help" => "Sử dụng Trợ giúp", - "setting_about" => "về công trình", - "setting_success" => "Sửa đổi đã có hiệu lực!", - "can_not_repeat" => "Không được phép lặp lại", - "absolute_path" => "địa chỉ tuyệt đối", - "group" => "Nhóm người dùng", - "data_not_full" => "Dữ liệu đã nộp không đầy đủ!", - "default_user_can_not_do" => "Người dùng mặc định không thể hoạt động", - "default_group_can_not_do" => "nhóm mặc định người sử dụng không thể hoạt động", - "username_can_not_null" => "Tên người dùng không thể để trống!", - "groupname_can_not_null" => "Tên nhóm người dùng không thể để trống!", - "groupdesc_can_not_null" => "Nhóm người dùng Mô tả không thể để trống!", - "group_move_user_error" => "Người dùng Nhóm người dùng di chuyển thất bại", - "group_already_remove" => "Các nhóm người sử dụng đã bị xóa", - "group_not_exists" => "nhóm người sử dụng này không tồn tại", - "member_add" => "Thêm người dùng", - "password_null_not_update" => "Họ nói rằng họ không thay đổi mật khẩu không được điền", - "if_save_file_tips" => "Một số tệp không được lưu. Bạn có chắc chắn đóng cửa sổ không?", - "if_save_file" => "Tập tin chưa được lưu, bạn muốn tiết kiệm?", - "if_remove" => "Xác nhận Xóa", - "member_remove_tips" => "Sau khi loại bỏ các thư mục người dùng sẽ bị xóa", - "group_remove_tips" => "Sau khi loại bỏ các nhóm người sử dụng của người dùng không thể đăng nhập
                    (cần phải tái thiết lập nhóm người dùng)", - "group_name" => "Tên nhóm người sử dụng", - "group_name_tips" => "Khuyến nghị tên tiếng Anh, không có thể được lặp đi lặp lại", - "group_desc" => "Tên hiển thị", - "group_desc_tips" => "Tên nhóm Mô tả", - "group_role_ext" => "hạn chế mở rộng", - "group_role_ext_tips" => "Với nhiều | tách", - "group_role_file" => "Quản lý tập tin", - "group_role_upload" => "cho phép tải lên", - "group_role_user" => "dữ liệu người dùng", - "group_role_group" => "quản lý nhóm người dùng", - "group_role_member" => "Quản lý người dùng", - "group_role_mkfile" => "tập tin mới", - "group_role_mkdir" => "New Folder", - "group_role_pathrname" => "Đổi đường dẫn", - "group_role_pathdelete" => "xóa tập tin", - "group_role_pathinfo" => "tập tin thuộc tính", - "group_role_pathmove" => "Di chuyển (copy / cắt / dán / kéo hoạt động)", - "group_role_zip" => "Nén", - "group_role_unzip" => "Giải nén", - "group_role_search" => "Tìm kiếm", - "group_role_filesave" => "Lưu các tập tin để chỉnh sửa", - "group_role_can_upload" => "Tải lên và tải xuống", - "group_role_download" => "Tải về trên Server", - "group_role_passowrd" => "Thay đổi mật khẩu", - "group_role_config" => "Dữ liệu người dùng", - "group_role_fav" => "Đánh dấu(thêm / sửa / xóa)", - "action_list" => "Xem danh sách", - "action_add" => "Thêm", - "action_edit" => "Sửa", - "action_del" => "Xóa", - "group_role_ext_warning" => "Tải lên không cho phép các tập tin đó,
                    Đổi tên (Đổi tên phần mở rộng được xác định),
                    sửa lưu, từ xa tải về, giải nén", - "group_tips" => "
                  63. 1. Tên nhóm người dùng không thể trùng lặp Sau khi tên nhóm được sửa đổi, nó thuộc về người dùng được tổ chức lại và được tự động liên kết.
                  64. 2. Mở rộng giới hạn mối quan hệ giữa bảo mật hệ thống, hãy thận trọng (nếu bạn tạo một php mới trong thư mục web, có nghĩa là thay đổi quyền của chương trình cho người dùng này hầu như không thể)
                  65. 3. Quản lý hộ gia đình, quản lý nhóm quyền, xem các quyền và bổ sung, xóa bỏ và xóa quyền bị ràng buộc, các chương trình được tự động liên kết
                  66. 4. Sau khi nhóm phép được thiết lập để thêm nhóm cho phép, sự cho phép tiếp theo không phải là kế thừa (quyền này tương đương với quyền cao nhất).
                  67. ", - "not_null" => "Các trường bắt buộc không thể để trống!", - "picture_can_not_null" => "Hình ảnh không thể để trống!", - "rname_success" => "Đổi tên thành công!", - "please_inpute_search_words" => "Vui lòng nhập một chuỗi ký tự để tìm kiếm", - "remove_success" => "Xóa thành công!", - "remove_fali" => "Xóa không thành công!", - "clipboard_null" => "Clipboard là trống rỗng!", - "create_success" => "Tạo thành công !", - "create_error" => "Tạo thất bại, kiểm tra phân quyền thư mục!", - "copy_success" => "[Sao chép] - đã lưu vàp clipboard!", - "cute_success" => "[Cắt] - đã lưu vào clipboard!", - "clipboard_state" => "Tình trạng Clipboard:", - "no_permission_write_all" => "Các tập tin hoặc thư mục không cho phép ghi", - "no_permission_write_file" => "Các file không có quyền ghi", - "no_permission_read_all" => "Các tập tin hoặc thư mục không có sự cho phép đọc", - "copy_not_exists" => "Nguồn không tồn tại", - "current_has_parent" => "Thư mục đích là một thư mục con của thư mục nguồn!", - "past_success" => "dán hoạt động được hoàn", - "cute_past_success" => "hoạt động cắt xong(tập tin nguồn bị xóa, clipboard trống)", - "zip_success" => "Nén thành công", - "not_zip" => "Nén lỗi", - "zip_null" => "Không chọn tập tin hoặc thư mục", - "unzip_success" => "Giải nén xong", - "gotoline" => "Nhảy vào dòng", - "path_is_current" => "Các con đường và con đường hiện tại để mở cùng!", - "path_exists" => "Các tên đã tồn tại!", - "undo" => "Hoàn tác", - "redo" => "Làm lại", - "preview" => "Xem trước", - "wordwrap" => "Bọc", - "show_gutter" => "Hiện số dòng", - "char_all_display" => "Hiện các nhân vật vô hình", - "auto_complete" => "Tự động hoàn thành", - "auto_save" => "Tự động lưu", - "function_list" => "Danh sách chức năng", - "code_theme" => "Code Style", - "font_size" => "Cỡ chữ", - "confirm" => "Bạn có chắc chắn muốn làm việc này không?", - "button_ok" => "Xác nhận", - "button_submit" => "Xác nhận", - "button_set" => "Thiết lập", - "button_cancel" => "Hủy", - "button_edit" => "Sửa", - "button_save" => "Lưu", - "button_apply" => "Áp dụng", - "button_save_all" => "Lưu tất cả", - "button_not_save" => "Không lưu", - "button_add" => "Thêm", - "button_back_add" => "Thêm lại", - "button_del" => "Xóa", - "button_save_edit" => "Lưu các thay đổi", - "button_save_submit" => "Lưu và Gửi", - "button_more" => "Thêm", - "button_select_all" => "Chọn tất cả / Invert Selection", - "charset_AUTO" => "Nhận dạng tự động", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "Ả rập", - "charset_ISO_8859_6" => "Ả rập", - "charset_ISO_8859_10" => "Tiếng Bắc Âu", - "charset_CP1257" => "Tiếng Baltic", - "charset_ISO_8859_13" => "Tiếng Baltic", - "charset_ISO_8859_4" => "Tiếng Baltic", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "Gruzia", - "charset_PT154" => "Kazakhstan", - "charset_CP949" => "Hàn Quốc", - "charset_EUC_KR" => "Hàn Quốc", - "charset_GB18030" => "Trung giản thể", - "charset_GBK" => "Trung giản thể", - "charset_ISO_8859_14" => "Celtic", - "charset_CP1133" => "Lào", - "charset_ISO_8859_16" => "Rumani", - "charset_ISO_8859_3" => "Nam Âu", - "charset_EUC_JP" => "Nhật Bản", - "charset_ISO_2022_JP" => "Nhật Bản", - "charset_SHIFT_JIS" => "Nhật Bản", - "charset_KOI8_T" => "Tiếng Tajik", - "charset_ISO_8859_11" => "Thái", - "charset_TIS_620" => "Thái", - "charset_CP1254" => "Thổ Nhĩ Kỳ", - "charset_CP1251" => "Cyrillic", - "charset_ISO_8859_5" => "Cyrillic", - "charset_KOI8_R" => "Cyrillic", - "charset_KOI8_U" => "Cyrillic", - "charset_CP1252" => "Tiếng Tây Âu", - "charset_ISO_8859_1" => "Tiếng Tây Âu", - "charset_ISO_8859_15" => "Tiếng Tây Âu", - "charset_Macintosh" => "Tiếng Tây Âu", - "charset_CP1255" => "Hebrew", - "charset_ISO_8859_8" => "Hebrew", - "charset_CP1253" => "Hy Lạp", - "charset_ISO_8859_7" => "Hy Lạp", - "charset_ARMSCII_8" => "Armenia", - "charset_CP1258" => "Tiếng việt", - "charset_VISCII" => "Tiếng việt", - "charset_CP1250" => "Tiếng khu vực trung tâm châu Âu", - "charset_ISO_8859_2" => "Tiếng khu vực trung tâm châu Âu", - "charset_default_set" => "Định dạng ký tự", - "charset_convert_save" => "Lưu tập tin được mã hóa như", - "PluginCenter" => "Plugin Center", - "PluginBuy" => "Ủy quyền mua", - "PluginInstalled" => "Đã được cài đặt", - "PluginUpdate" => "Cập nhật", - "PluginListNull" => "Không có nội dung!", - "PluginType" => "Phân loại", - "PluginTypeAll" => "Tất cả", - "PluginTypeFile" => "Tập tin tăng cường", - "PluginTypeSafe" => "Công cụ bảo mật", - "PluginTypeTools" => "Tiện ích", - "PluginTypeMedia" => "Multimedia", - "PluginTypeOthers" => "Khấc", - "PluginInstall" => "cài đặt plug", - "PluginEnable" => "Enable plug-ins", - "PluginDisable" => "Vô hiệu hóa", - "PluginRemove" => "Gỡ bỏ cài đặt các plug", - "PluginConfig" => "Cấu hình các plugin", - "PluginStatus" => "Trạng thái", - "PluginStatusEnabled" => "Bật", - "PluginStatusDisabled" => "không được kích hoạt", - "PluginStatusNotInstall" => "không cài đặt", - "PluginInstalling" => "Lắp đặt ...", - "PluginHasUpdate" => "Cập nhật", - "PluginUpdateStart" => "Cập nhật plug-in", - "PluginNeedConfig" => "Sự cần thiết phải cho phép cấu hình ban đầu", - "PluginConfigNotNull" => "Các trường bắt buộc không thể để trống!", - "PluginOpen" => "Mở", - "PluginAuther" => "Tác giả", - "PluginVersion" => "Phiên bản", - "PluginDownloadNumber" => "Số lần cài đặt", - "PluginBack" => "Trả lại", - "PluginReadme" => "Mô tả", - "PluginResetConfig" => "Khôi phục cài đặt mặc định", - "PluginInstallSelf" => "Cài đặt thủ công", - "Plugin.config.auth" => "Quyền", - "Plugin.config.authDesc" => "Tất cả các thiết lập có sẵn, hoặc chỉ định người dùng, nhóm người dùng, các nhóm nhân quyền có thể sử dụng", - "Plugin.config.authOpen" => "Mở truy cập", - "Plugin.config.authOpenDesc" => "Không cần truy cập có thể được truy cập, có thể được sử dụng cho các cuộc gọi giao diện bên ngoài", - "Plugin.config.authAll" => "Tất cả", - "Plugin.config.authUser" => "Người dùng", - "Plugin.config.authGroup" => "Bộ phận chỉ định", - "Plugin.config.authRole" => "Nhóm quyền", - "Plugin.Config.openWith" => "Mở với ứng dụng", - "Plugin.Config.openWithDilog" => "Cửa sổ nội bộ", - "Plugin.Config.openWithWindow" => "Trang mới mở ra", - "Plugin.Config.fileSort" => "Phần mở rộng ưu tiên", - "Plugin.Config.fileSortDesc" => "Các phần mở rộng để mở ưu tiên cao hơn lớn hơn", - "Plugin.Config.fileExt" => "Định dạng tệp được hỗ trợ", - "Plugin.Config.fileExtDesc" => "Liên quan đến mở rộng đến các plug-in", - "Plugin.tab.basic" => "Cài đặt cơ bản", - "Plugin.tab.auth" => "Quyền", - "Plugin.tab.others" => "cài đặt khác", - "Plugin.default.aceEditor" => "Ace Biên tập viên", - "Plugin.default.htmlView" => "Web Page Preview", - "Plugin.default.picasa" => "duyệt hình ảnh Picasa", - "Plugin.default.zipView" => "Xem trước nội dung file nén", - "Plugin.default.jPlayer" => "máy nghe nhạc jPlayer", - "Plugin.auth.viewList" => "Danh sách trình cắm", - "Plugin.auth.setting" => "Cài đặt plugin", - "Plugin.auth.status" => "Tắt", - "Plugin.auth.install" => "Cài đặt / gỡ cài đặt", - "Explorer.UI.openWith" => "chọn mở", - "Explorer.UI.openWithText" => "Mở Notepad", - "Explorer.UI.appSetDefault" => "Đặt mở mặc định", - "Explorer.UI.appAwaysOpen" => "Luôn luôn sử dụng chương trình được lựa chọn để mở tập tin này", - "Explorer.UI.selectAppDesc" => "Chọn chương trình bạn muốn mở tập tin này", - "Explorer.UI.selectAppWarning" => "Vui lòng chọn các ứng dụng!", - "Explorer.UI.appTypeSupport" => "Hỗ trợ", - "Explorer.UI.appTypeAll" => "Tất cả các ứng dụng", - "kodApp.oexe.edit" => "Chỉnh sửa ứng dụng ánh sáng", - "kodApp.oexe.open" => "Mở ứng dụng của ánh sáng" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/zh-CN/about.html b/plugin/document/kod/config/i18n/zh-CN/about.html deleted file mode 100644 index 54e4e6cba..000000000 --- a/plugin/document/kod/config/i18n/zh-CN/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer是什么?
                    -

                    KODExplorer是一个公开源码的基于Web的在线文件管理、代码编辑器。它提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署的同时拥有与本地操作一样方便、快捷、安全的体验。

                    -

                    ——设计理念——

                    -

                    传承经典,追求创新,为用户提供方便快捷、安全易用的在线云管理系统。

                    -

                    无论何时(when)、何地(where),拥有web只要你想(want)它就是你的管理利器(4W策略)。

                    -

                    ——面向用户——

                    -

                    目前KODExplorer系统管理主要定位在个人云主机、中小企业云资源管理、网盘管理、中小型网站管理等。Web开发者&站长(老鸟):在线编辑、压缩备份、部署,经典windows界面操作,上手容易,远离了主机的SSH、ftp复杂枯燥的命令操作。

                    -

                    个人私有云(菜鸟):管理网盘资源,同样经典windows界面操作,可以就地浏览网盘音乐、视屏文件,上传下载快捷方便。

                    -
                    - -
                    -
                    特色
                    -

                    完备的文件管理,强大的在线文件编辑器

                    -

                    无论您在哪里,都可以管理您的文件;并可以在线娱乐,在线写代码!就像适宜用操作系统那样。

                    -

                    丰富的本地体验移植,右键操作,拖拽,框中选择,快捷键,文件搜索(内容中搜索)……

                    -

                    框中选择,拖拽移动,拖拽上传,在线编辑器,影音播放器,解压缩。全面ajax保证性能和体验!

                    -

                    各个功能直接无缝连接;以对话框形式存在,多任务管理等功能

                    -

                    编辑器支持多文档;支持ZendCoding html,css,js代码编写效率更高!

                    -

                    完美中文支持,各种情况下乱码解决;

                    -
                    - -
                    -
                    开源技术采用
                    -

                    1.Jquery:jpuery(plugin:Hotkeys.ztree.contentmenu).js主流开发框架。对Dom操作、BOM操作、css操作,以及Ajax封装

                    -

                    2.ArtDialog:一个设计优美,对浏览器兼容性极强的对话框插件。使弹出窗口处理,事件以及数据的传输得到了更好的统一管理方式

                    -

                    3.Ztree:列表树控件,扩展性很强的树形数据操作插件

                    -

                    4.codemirror:一个代码编辑js插件,支持各种编程语言的高亮处理

                    -

                    5.zendcoding:一个支持html代码快速编写插件。定义方式简化代码编写。有简单编译功能

                    -

                    6.less:一种高效的,函数式css开发模式,提高前端css样式表的可复用性。有简单编译功能

                    -

                    7.SWFUpload:flash多文件上传

                    -

                    8.CMP4:一个非常优秀的flash媒体文件播放插件,支持流媒体,常用音乐视频的播放工具。支持换皮肤,高可配置性的设置。列表xml的动态加载。mms流媒体,rstp开源协议媒体播放支持

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/zh-CN/edit.html b/plugin/document/kod/config/i18n/zh-CN/edit.html deleted file mode 100644 index 64783981a..000000000 --- a/plugin/document/kod/config/i18n/zh-CN/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    丰富的功能

                    -

                    代码自动提示

                    -

                    多主题:选择你喜欢的编程风格

                    -

                    自定义字体:适合种场景下使用

                    -

                    多光标编辑,块编辑等媲美sublime的在线编程体验

                    -

                    代码块折叠、展开;自动换行

                    -

                    支持多标签,拖动切换顺序;

                    -

                    维持多个文档、查找替换;历史记录;

                    -

                    自动补全[],{},(),"",''

                    -

                    在线实时预览,使您爱上在线编程!

                    -

                    zendcodeing支持,写代码健步如飞

                    -

                    更多功能,等待你的发现……

                    -
                    -
                    -

                    150多种代码高亮

                    -

                    前端:html,JavaScript,css,less,sass,scss

                    -

                    web开发:php,perl,python,ruby,elang,go...

                    -

                    传统语言:java,c,c++,c#,actionScript,VBScript...

                    -

                    其他:markdown,shell,sql,lua,xml,yaml...

                    -
                    -
                    -
                    -
                    -

                    快捷键操作

                    -
                    常用快捷键:
                    -      ctrl+s 保存      
                    -      ctrl+a 全选      ctrl+x 剪切   
                    -      ctrl+c 复制      ctrl+v 粘贴
                    -      ctrl+z 撤销      ctrl+y 反撤销
                    -      ctrl+f 查找      ctrl+f+f 替换
                    -      win+alt+0 折叠所有   win+alt+shift+0 展开所有
                    -      esc [退出搜索,取消自动提示...]
                    -      ctrl-shift-s  预览
                    -      ctrl-shift-e  显示&关闭函数
                    -    
                    -
                    选择:
                    -      鼠标框选——拖动
                    -      shift+home/end/up/left/down/right  
                    -      shift+pageUp/PageDown 上下翻页选中
                    -      ctrl+shift+ home/end  当前光标到头尾
                    -      alt+鼠标拖动  块选择
                    -      ctrl+alt+g  批量选中当前并进入多标签编辑
                    -    
                    -
                     光标移动:
                    -      home/end/up/left/down/right
                    -      ctrl+home/end 光标移动到文档首/尾
                    -      ctrl+p 跳转到匹配的标签
                    -      pageUp/PageDown 光标上下翻页
                    -      alt+left/right 光标移动到行首位
                    -      shift+left/right  光标移动到行首&尾
                    -      ctrl+l 跳转到指定行
                    -      ctrl+alt+up/down  上(下)增加光标
                    -    
                    -
                    编辑:
                    -      ctrl+/ 注释&取消注释  ctrl+alt+a 左右对齐      
                    -      table tab对齐         shift+table 整体前移table
                    -      delete 删除           ctrl+d 删除整行
                    -      ctrl+delete           删除该行右侧单词
                    -      ctrl/shift+backspace  删除左侧单词
                    -      alt+shift+up/down     复制行并添加到上(下面)面
                    -      alt+delete            删除光标右侧内容
                    -      alt+up/down           当前行和上一行(下一行交换)
                    -      ctrl+shift+d          复制行并添加到下面
                    -      ctrl+delete           删除右侧单词
                    -      ctrl+shift+u 转换成小写 
                    -      ctrl+u 选中内容转换成大写
                    -    
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/zh-CN/help.html b/plugin/document/kod/config/i18n/zh-CN/help.html deleted file mode 100644 index ff1d08f3c..000000000 --- a/plugin/document/kod/config/i18n/zh-CN/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    文件管理
                    -

                    文件选择:单选,鼠标框选,shift连选,ctrl随意选择,键盘上下左右、home、end选择。

                    -

                    文件操作:选择文件后,可以进行复制,剪切,删除,属性查看,压缩,重命名,打开预览等操作……

                    -

                    文件上传:多文件批量上传;html5拖拽上传(拖拽到窗口实现无缝上传,支持文件夹拖拽)

                    -

                    右键功能:文件右键,文件夹右键,多选后右键操作,桌面右键,树目录右键操作,右键菜单绑定快捷键
                             - (全选——复制——剪切——粘贴——删除——重命名,设置……)

                    -

                    文件浏览:列表模式,图标模式;双击进入子文件夹;地址栏操作;打开文件夹记录逆势操作记录(前进后退)

                    -

                    支持拖拽操作:选中后拖拽,实现剪切到指定文件夹功能

                    -

                    快捷键操作:delete删除,ctrl+A全选,ctrl+C复制,ctrl+X剪切,文件搜索(内容中搜索)

                    -
                    -
                    -
                    文件预览
                    -

                    文件预览:文本文件内容查看编辑保存;html,swf文件预览,

                    -

                    图片预览:自动生成缩略图,图片幻灯片播放;

                    -

                    音频播放:在线播放音乐,视频文件;支持mp3,wma,mid,aac,wav;mp4,

                    -

                    视频播放:在线视频文件播放,支持格式:flv,f4v,3gp

                    -

                    office:office在线预览,支持格式:doc,docx,ppt,pptx,xls,xlsx

                    -
                    -
                    -
                    快捷键
                    -

                    enter 打开

                    -

                    ctrl+a 全选

                    -

                    ctrl+c 复制选中

                    -

                    ctrl+v 粘贴

                    -

                    ctrl+x 剪切

                    -

                    ctrl+f 当前目录进行搜索

                    -

                    alt+n 新建文件

                    -

                    alt+m 新建文件夹

                    -

                    delete 删除选中

                    -

                    backspace 后退

                    -

                    ctrl+backspace 前进

                    -

                    f2 重命名选中(文件文件夹)

                    -

                    home/end/up/down/left/right 选择文件

                    -

                    anykey 选中以按下字符首字母的文件&文件夹 自动循环选中

                    -
                    diff --git a/plugin/document/kod/config/i18n/zh-CN/main.php b/plugin/document/kod/config/i18n/zh-CN/main.php deleted file mode 100644 index e64dc9d9f..000000000 --- a/plugin/document/kod/config/i18n/zh-CN/main.php +++ /dev/null @@ -1,805 +0,0 @@ - "请选择文件...", - "path_api_select_folder" => "请选择文件夹...", - "path_api_select_image" => "请选择图片...", - "share_can_upload" => "允许上传", - "move_error" => "移动失败", - "setting_basic" => "基础设置", - "setting_user_sound_open" => "开启音效", - "setting_user_animate_open" => "开启动画", - "recycle_open_if" => "开启回收站", - "recycle_open" => "开启", - "setting_user_recycle_desc" => "关闭后删除会直接物理删除,建议开启", - "setting_user_animate_desc" => "窗口打开等动画,操作不流畅时可以考虑关闭", - "setting_user_sound_desc" => "打开文件、删除文件、清空回收站等操作音效", - "setting_user_imageThumb" => "开启图片缩略图", - "setting_user_imageThumb_desc" => "开启后图片浏览体验更佳", - "setting_user_fileSelect" => "开启文件图标勾选", - "setting_user_fileSelect_desc" => "文件图标的左键勾选,右键菜单的快捷入口", - "qrcode" => "URL 二维码", - "theme_mac" => "Mac 简约白", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro 经典蓝", - "theme_metro_green" => "Metro 淡绿", - "theme_metro_purple" => "Metro 高雅紫", - "theme_metro_pink" => "Metro 玫红", - "theme_metro_orange" => "Metro 亮橙", - "theme_alpha_image" => "炫彩——飞扬", - "theme_alpha_image_sun" => "炫彩——夕阳", - "theme_alpha_image_sky" => "炫彩——蓝天", - "theme_diy" => "自定义", - "theme_diy_title" => "自定义主题设置", - "theme_diy_background" => "背景", - "theme_diy_image" => "图片", - "theme_diy_color_blur" => "渐变颜色", - "theme_diy_image_blur" => "图片模糊处理", - "theme_diy_image_url" => "图片地址", - "theme_diy_color_start" => "开始颜色", - "theme_diy_color_end" => "结束颜色", - "theme_diy_color_radius" => "渐变角度", - "system_role_admin_set" => "系统管理员拥有所有权限,无需设置!", - "login_error_user_not_use" => "用户已被禁用!请联系管理员", - "login_error_kod_version" => "程序版本冲突", - "login_error_role" => "所属权限组不存在,请联系管理员", - "no_permission_group" => "您不在该用户组!", - "no_permission_write" => "该目录没有写权限", - "user" => "用户", - "save_as" => "另存为", - "check_update" => "更新", - "keyboard_type" => "键盘模式", - "font_family" => "字体", - "code_mode" => "高亮语法", - "path_can_not_share" => "仅支持分享您自己的文档!", - "path_can_not_action" => "此目录不支持该操作!", - "wap_page_pc" => "电脑版", - "wap_page_phone" => "手机版", - "image_size" => "图片尺寸", - "no_permission_action" => "您没有此权限,请联系管理员!", - "path_is_root_tips" => "已经到根目录了!", - "kod_group" => "组织架构", - "my_kod_group" => "我在的部门", - "space_tips_default" => "(GB) 0则不限制", - "space_tips_full" => "不限制", - "space_size" => "空间大小", - "space_size_use" => "空间使用", - "space_is_full" => "剩余空间不足,请联系管理员!", - "system_open_true_path" => "成功在文件管理中打开!", - "group_role_error" => "权限角色错误(没有权限设置)", - "group_role_error_admin" => "权限不足", - "markdown_content" => "内容目录", - "system_group" => "用户与部门", - "system_group_edit" => "部门管理", - "system_group_role" => "角色身份", - "system_group_create" => "新建部门", - "system_group_name" => "部门名称", - "system_group_father" => "上级部门", - "system_group_add" => "添加子部门", - "system_group_remove" => "删除部门", - "system_group_remove_tips" => "确认删除该部门?
                    删除后属于该部门的用户会移除,子部门移动到根部门", - "system_group_select" => "选择所在部门", - "system_group_select_result" => "成员将属于以下部门", - "system_role_admin_tips" => "备注:系统管理员不受权限控制", - "system_member_action" => "用户管理", - "system_member_add" => "新建用户", - "system_member_role" => "权限角色", - "system_member_role_select" => "选择", - "system_member_password_tips" => "不填则不修改", - "system_set_home_path" => "自定义目录", - "system_set_home_path_tips" => "为空则使用默认目录", - "system_member_group" => "所在部门", - "system_member_group_edit" => "编辑部门", - "system_member_remove" => "删除用户", - "system_member_remove_tips" => "确认删除用户?
                    删除后该用户目录会彻底删除", - "system_member_set_role" => "确认更改所选用户的权限组?", - "system_member_remove_group" => "确定将所选用户从该组移除?", - "system_member_import" => "批量添加", - "system_member_import_desc" => "每行一个用户,
                    已存在则自动忽略", - "system_member_use" => "启用", - "system_member_unuse" => "禁用", - "system_member_space" => "设置用户空间大小", - "system_member_space_tips" => "设置用户空间大小", - "system_member_space_number" => "必须是数字!", - "system_member_group_config" => "批量设置部门", - "system_member_group_remove" => "从该部门移除", - "system_member_group_insert" => "添加到部门", - "system_member_group_reset" => "重置部门", - "system_member_group_error" => "部门错误", - "system_group_action" => "部门管理", - "system_role_add" => "添加角色身份", - "system_role_read" => "只读", - "system_role_write" => "可读写", - "system_setting_root_path" => "根目录访问", - "system_setting_root_path_desc" => "仅系统管理员可以访问所有目录,其他权限组用户只能看到自己的用户目录。
                    如果想开启或关闭管理员访问其他目录,可以修改php防跨站open_basedir参数,如何设置 ", - "system_group_role_title" => "部门权限角色管理", - "system_group_role_remove" => "确定删除部门角色", - "system_group_role_style" => "样式", - "system_group_role_display" => "是否显示", - "system_group_role_display_desc" => "设置部门用户权限时是否显示", - "role_type_name_read" => "读取", - "role_type_name_read:list" => "文件列表", - "role_type_name_read:info" => "文件(夹)属性查看,文件夹搜索", - "role_type_name_read:copy" => "文件复制", - "role_type_name_read:preview" => "文件预览(图片,文档,音视频等)", - "role_type_name_read:download" => "文件(夹)下载", - "role_type_name_write" => "写入", - "role_type_name_write:add" => "创建文件(夹),压缩解压文件", - "role_type_name_write:edit" => "编辑保存文件", - "role_type_name_write:change" => "重命名,粘贴到此处,内部拖拽移动或复制", - "role_type_name_write:upload" => "文件(夹)上传,远程下载", - "role_type_name_write:remove" => "文件(夹)删除,剪切", - "group_guest" => "访客", - "group_guest_desc" => "您不是该部门成员,
                    仅能访问[部门共享目录]下面的内容,只读权限.", - "group_role_lebel_desc" => "您是该部门成员,
                    部门内文档所有操作权限均由管理员分配", - "button_save_and_add" => "保存并继续添加", - "path_cannot_search" => "该目录不支持搜索!", - "not_support" => "暂不支持!", - "group_not_exist" => "用户组不存在!", - "upload_clear_all" => "清空所有", - "upload_clear" => "清空已完成", - "upload_setting" => "设置", - "upload_tips" => "采用分片上传,不再受php.ini限制;推荐chrome体验文件夹拖拽上传", - "upload_exist" => "同名文件处理", - "upload_exist_rename" => "重命名", - "upload_exist_replace" => "覆盖", - "upload_exist_skip" => "跳过", - "upload_add_more" => "批量添加", - "more" => "更多", - "system_setting" => "系统设置", - "openProject" => "编辑器打开项目", - "url_download" => "下载地址", - "url_link" => "外链地址", - "app_type_link" => "快捷方式", - "createLink" => "创建快捷方式", - "createLinkHome" => "发送到桌面快捷方式", - "createProject" => "添加到编辑器工程", - "only_read" => "只读", - "only_read_desc" => "该目录没有写权限
                    可以在服务器设置此目录的权限", - "not_read" => "不可读", - "explorerNew" => "kod 链接", - "zip_download_ready" => "压缩后会自动下载,请稍后...", - "set_background" => "设置为桌面壁纸", - "share" => "分享", - "my_share" => "我的分享", - "group_share" => "部门对外分享", - "share_edit" => "编辑分享", - "share_remove" => "取消分享", - "share_remove_tips" => "确定取消分享?公开连接将失效.", - "share_path" => "分享路径", - "share_title" => "资源分享", - "share_name" => "分享标题", - "share_time" => "到期时间", - "share_time_desc" => "为空则不设置", - "share_password" => "提取密码", - "share_password_desc" => "为空则不设置密码", - "share_cancle" => "取消共享", - "share_create" => "创建公开链接", - "share_url" => "共享地址", - "share_not_download" => "禁止下载", - "share_not_download_tips" => "共享者禁止了下载!", - "share_code_read" => "代码阅读", - "share_save" => "保存配置", - "share_error_param" => "参数错误!", - "share_error_user" => "用户信息错误!", - "share_error_sid" => "共享不存在!", - "share_error_time" => "您来晚了,该共享已经过期!", - "share_error_path" => "共享文件不存在,被删除或者移走了!", - "share_error_password" => "密码错误!", - "share_error_show_tips" => "该类型文件暂不支持预览!", - "share_view_num" => "浏览:", - "share_download_num" => "下载:", - "share_open_page" => "打开共享页面", - "open_the_path" => "进入所在目录", - "recycle_clear" => "清空回收站", - "recycle_clear_success" => "清空回收站成功!", - "recycle_clear_info" => "您确定要彻底清空回收站吗?", - "fav_remove" => "取消该收藏", - "remove_item" => "项内容", - "uploading" => "上传中 ", - "upload_tips_more" => "文件过多,建议压缩后上传,然后在线解压!", - "uploading_move" => "合并转存中...", - "show_file" => "新页面预览", - "unknow_file_title" => "文件打开提示!", - "unknow_file_tips" => "没有支持此文件的应用,您可以:", - "unknow_file_try" => "尝试", - "unknow_file_download" => "下载该文件", - "unknow_plugin_search" => "搜索相关的应用安装", - "config_save_error_auth" => "配置保存失败,管理员禁止了此权限!", - "config_save_error_file" => "错误,文件没有写权限!", - "beautify_code" => "代码格式化", - "convert_case" => "大小写转换", - "convert_upper_case" => "转换为大写", - "convert_lower_case" => "转换为小写", - "editor_insert_time" => "当前时间", - "editor_md5" => "md5加密", - "editor_qrcode" => "字符串二维码", - "editor_regx" => "正则表达式测试", - "editor_chinese" => "繁简转换", - "editor_chinese_simple" => "转换为简体中文", - "editor_chinese_traditional" => "转换为繁体中文", - "editor_base64" => "base64编解码", - "editor_base64_encode" => "base64 编码", - "editor_base64_decode" => "base64 解码", - "editor_url" => "URL编解码", - "editor_url_encode" => "URL 编码", - "editor_url_decode" => "URL 解码", - "editor_unicode" => "Unicode编解码", - "editor_unicode_encode" => "Unicode 编码", - "editor_unicode_decode" => "Unicode 解码", - "editor_tools_select_tips" => "请先选中要转换的内容!", - "editor_calc" => "自由计算器", - "shortcut" => "快捷键", - "use_free" => "继续使用免费版", - "learn_more" => "了解更多", - "replace" => "替换", - "selectAll" => "全选", - "reload" => "重新载入", - "about" => "关于", - "complete_current" => "自动补全当前", - "view" => "视图", - "tools" => "工具", - "help" => "帮助", - "not_exists" => "不存在", - "group_role_fileDownload" => "文件下载", - "group_role_share" => "共享", - "users_share" => "的共享", - "system_setting_save" => "安全设置", - "system_setting_menu" => "菜单管理", - "system_name" => "程序名称", - "system_name_desc" => "程序logo标题", - "system_desc" => "程序描述", - "path_hidden" => "目录排除", - "version_not_support" => "您的版本不支持此操作,请到官网购买高级版本!", - "version_not_support_number" => "由于数量限制不支持此操作,请到官网购买高级版本!", - "path_hidden_desc" => "默认不显示的目录和文件,逗号隔开", - "new_user_folder" => "新用户默认创建目录", - "new_user_folder_desc" => "用逗号隔开", - "new_user_app" => "新用户默认创建app", - "new_user_app_desc" => "应用中心的应用,多个用逗号隔开", - "auto_login" => "游客自动登录", - "auto_login_desc" => "默认登录用户为guest/guest的用户;开启后确保该用户存在", - "first_in" => "登录后默认进入", - "version_price_free" => "免费", - "version_name_1" => "团队版", - "version_name_2" => "专业版", - "version_name_3" => "企业版", - "version_name_4" => "高级版1", - "version_name_5" => "高级版2", - "version_name_6" => "高级版3", - "version_vip_free" => "免费版", - "version_vip_1" => "VIP 1 (团队版)", - "version_vip_2" => "VIP 2 (专业版)", - "version_vip_3" => "VIP 3 (企业版)", - "version_vip_4" => "VIP 4 (高级版)", - "version_vip_5" => "VIP 5 (高级版)", - "version_vip_6" => "VIP 6 (高级版)", - "path_can_not_write_data" => "目录不可写,请将该目录及所有子目录设置为可读写后再试!", - "menu_name" => "菜单名", - "menu_hidden" => "隐藏", - "menu_show" => "显示", - "menu_move_down" => "下移", - "menu_move_up" => "上移", - "menu_move_del" => "删除", - "menu_open_window" => "新窗口打开", - "menu_sub_menu" => "子菜单", - "url_path" => "url地址", - "url_path_desc" => "url地址或js代码", - "no_permission_read" => "您没有读取权限!", - "no_permission_download" => "您没有下载权限!", - "php_env_check" => "运行环境检测:", - "php_env_error" => "php库缺失", - "php_env_error_ignore" => "忽略并进入", - "php_env_error_version" => "PHP版本不能低于5.0", - "php_env_error_path" => "不可写", - "php_env_error_list_dir" => "您的web服务器开启了列目录功能,为安全考虑请禁用该功能!如何操作?", - "php_env_error_gd" => "须开启php GD库,否则验证码、缩略图使用将不正常", - "install_login" => "您可以用如下账号登录", - "install_enter" => "进入系统", - "install_user_default" => "管理员:{0}/(在下面设置密码)
                    普通用户:{1}
                    游客用户:{2}", - "login_root_password" => "设置管理员密码", - "login_root_password_repeat" => "再次确认密码", - "login_root_password_equal" => "两次密码不一致!", - "login_root_password_tips" => "请设置管理员密码!", - "forget_password" => "忘记密码", - "forget_password_tips" => "管理员忘记密码:
                    请登录服务器删除./data/system/install.lock后重置;

                    非管理员忘记密码:
                    请联系管理员重置!", - "copyright_desc" => "Kodexplorer是一款备受好评的web文档管理系统,你可以用它来做内部文档管理或共享、也可以用来管理服务器上的网站,取代Ftp,甚至可以当作webIDE直接在线开发。同时你也可以将此程序二次开发整合到你现有的系统。", - "copyright_contact" => "授权或定制请联系QQ:3532208565问题反馈", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "可道云•资源管理器", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "可道云•资源管理器", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer,kod,kodCloud,webos,webIDE,php filemanage,filemanage,可道云,芒果云,文档管理系统,企业云盘,资源管理器,,在线文档,在线Office,在线办公,在线CAD预览,在线编辑,在线编辑器 ", - "kod_meta_description" => "KodExplorer可道云(原芒果云)是业内领先的政务/企业私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品。采用windows风格界面、操作习惯,无需适应即可快速上手,支持几百种常用文件格式的在线预览、播放和编辑,环境友好,功能强大,是一款一经试用,就再也离不开的私有云产品。", - "kod_meta_copyright" => "kodcloud.com", - "login" => "登录", - "guest_login" => "游客登录", - "username" => "登录账号", - "userNickName" => "用户昵称", - "password" => "密码", - "login_code" => "验证码", - "need_check_code" => "登录验证码开启", - "need_check_code_desc" => "开启后登录必须需要输入验证码。", - "setting_csrf_protect" => "开启csrf保护", - "setting_csrf_protect_desc" => "开启后能有效防护csrf类攻击", - "login_rember_password" => "记住密码", - "setting_show_root_group" => "罗列所有部门", - "setting_show_root_group_desc" => "树目录根部门是否列出所有部门", - "setting_show_share_user" => "罗列所有用户", - "setting_show_share_user_desc" => "树目录根部门是否列出所有用户分享", - "setting_clear_user_recycle" => "清空所有用户回收站", - "setting_clear_cache" => "清空缓存", - "setting_icp" => "版权或备案号", - "setting_global_css" => "自定义全局css", - "setting_global_css_desc" => "所有页面将会插入自定义css", - "setting_global_html" => "统计代码 HTML", - "setting_global_html_desc" => "所有页面将插入此段html代码,可以放置第三方统计代码", - "us" => "千帆网络工作室", - "login_not_null" => "用户名密码不能为空!", - "code_error" => "验证码错误", - "password_error" => "用户名或密码错误!", - "password_not_null" => "密码不能为空!", - "old_password_error" => "原密码错误!", - "permission" => "权限!", - "permission_edit" => "修改权限", - "file_info_owner" => "所有者", - "file_info_group" => "组", - "no_permission" => "管理员禁止了此权限!", - "no_permission_ext" => "管理员禁止了该类型文件权限", - "dialog_max" => "最大化", - "dialog_min" => "最小化", - "dialog_min_all" => "最小化所有", - "dialog_display_all" => "显示所有窗口", - "dialog_close_all" => "关闭所有", - "open" => "打开", - "others" => "其他", - "open_with" => "打开为...", - "close" => "关闭", - "close_all" => "关闭全部", - "close_left" => "关闭左侧标签", - "close_right" => "关闭右侧标签", - "close_others" => "关闭其他", - "loading" => "操作中...", - "warning" => "警告", - "getting" => "获取中...", - "sending" => "数据发送中...", - "data_error" => "数据出错!", - "get_success" => "获取成功!", - "save_success" => "保存成功!", - "success" => "操作成功", - "error" => "操作失败", - "error_repeat" => "操作失败,该名称已存在!", - "word_error" => "失败", - "word_success" => "成功", - "system_error" => "系统错误", - "name" => "名称", - "type" => "类型", - "contain" => "包含", - "address" => "位置", - "size" => "大小", - "byte" => "字节", - "path" => "路径", - "action" => "操作", - "create_time" => "创建时间", - "modify_time" => "修改时间", - "last_time" => "最后访问", - "sort_type" => "排序方式", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "公共目录", - "system_path_not_change" => "系统目录,不允许修改", - "file" => "文件", - "folder" => "文件夹", - "copy" => "复制", - "past" => "粘贴", - "clone" => "创建副本", - "cute" => "剪切", - "cute_to" => "移动到...", - "copy_to" => "复制到...", - "remove" => "删除", - "remove_force" => "彻底删除", - "info" => "属性", - "list_type" => "查看", - "list_icon" => "图标排列", - "list_list" => "列表排列", - "list_list_split" => "分栏模式", - "sort_up" => "递增", - "sort_down" => "递减", - "order_type" => "排序方式", - "order_desc" => "降序", - "order_asc" => "升序", - "rename" => "重命名", - "add_to_fav" => "添加到收藏夹", - "search_in_path" => "文件夹中搜索", - "add_to_play" => "添加到播放列表", - "manage_fav" => "管理收藏夹", - "refresh_tree" => "刷新树目录", - "manage_folder" => "管理目录", - "close_menu" => "关闭菜单", - "zip" => "创建压缩包", - "unzip" => "解压到...", - "unzip_folder" => "解压到文件夹", - "unzip_this" => "解压到当前", - "unzip_to" => "解压到...", - "zipview_file_big" => "该文件太大,请解压后再进行预览操作!", - "clipboard" => "查看剪贴板", - "clipboard_clear" => "清空剪贴板", - "full_screen" => "全屏", - "folder_info_item" => "个项目", - "folder_info_item_select" => "个选中", - "file_load_all" => "双击加载全部……", - "tips" => "提示", - "ziping" => "正在压缩...", - "unziping" => "正在解压...", - "moving" => "移动操作中...", - "remove_title" => "删除确认", - "remove_info" => "确认删除选中内容吗?", - "remove_title_force" => "永久删除", - "remove_info_force" => "确定要永久删除此文档吗?", - "name_isexists" => "出错了,该名称已存在!", - "install" => "安装", - "width" => "宽", - "height" => "高", - "app" => "轻应用", - "app_store" => "轻应用", - "app_create" => "创建应用", - "app_edit" => "修改应用", - "app_group_all" => "全部", - "app_group_game" => "游戏", - "app_group_tools" => "工具", - "app_group_reader" => "阅读", - "app_group_movie" => "影视", - "app_group_music" => "音乐", - "app_group_life" => "生活", - "app_group_others" => "其他", - "app_desc" => "描述", - "app_icon" => "应用图标", - "app_icon_show" => "url地址或该目录", - "app_group" => "应用分组", - "app_type" => "类型", - "app_type_url" => "链接", - "app_type_code" => "js扩展", - "app_display" => "外观", - "app_display_border" => "无边框(选中即无边框)", - "app_display_size" => "调整大小(选中即可调整)", - "app_size" => "尺寸", - "app_url" => "链接地址", - "app_code" => "js 代码", - "edit" => "编辑", - "edit_can_not" => "不是文本文件", - "edit_too_big" => "文件太大,不能大于40M", - "open_default" => "默认方式打开", - "open_ie" => "浏览器打开", - "refresh" => "刷新", - "refresh_all" => "强制刷新", - "newfile" => "新建文件", - "newfile_save_as" => "保存到", - "newfolder" => "新建文件夹", - "newothers" => "新建其他", - "path_loading" => "载入中...", - "go" => "走着!", - "go_up" => "上层", - "history_next" => "前进", - "history_back" => "后退", - "address_in_edit" => "点击进入编辑状态", - "double_click_rename" => "双击名称重命名", - "double_click_open" => "双击打开", - "path_null" => "文件夹为空!", - "file_size_title" => "图标大小", - "file_size_small_super" => "超小", - "file_size_small" => "小图标", - "file_size_default" => "中图标", - "file_size_big" => "大图标", - "file_size_big_super" => "超大图标", - "upload" => "上传", - "upload_ready" => "等待上传 ", - "upload_success" => "上传成功", - "upload_path_current" => "切换到当前目录", - "upload_select" => "选择文件", - "upload_max_size" => "最大允许", - "upload_size_info" => "如果想配置更大,请修改php.ini中允许上传的最大值。选择文件时,大于该配置的将自动过滤掉。", - "upload_error" => "上传失败", - "upload_error_http" => "网络或防火墙错误", - "upload_muti" => "多文件上传", - "upload_drag" => "拖拽上传", - "upload_drag_tips" => "松开即可上传!", - "path_not_allow" => "文件名不允许出现", - "download" => "下载", - "downloading" => "下载中...", - "download_address" => "外链地址", - "download_ready" => "即将下载", - "download_success" => "下载成功!", - "download_error" => "下载失败!", - "download_error_create" => "写入出错!", - "download_error_exists" => "链接到文件失败!", - "upload_error_null" => "没有文件!", - "upload_error_big" => "文件大小超过服务器限制", - "upload_error_move" => "移动文件失败!", - "upload_error_exists" => "该文件已存在", - "upload_local" => "本地上传", - "download_from_server" => "离线下载", - "save_path" => "保存路径", - "upload_select_muti" => "可选择多个文件上传", - "search" => "搜索", - "searching" => "搜索中...", - "search_result" => "搜索结果", - "seach_result_too_more" => "搜索结果太多,建议换一个目录或词语", - "search_null" => "没有搜索结果!", - "search_uplow" => "区分大小写", - "search_content" => "搜索文件内容", - "search_info" => "请输入搜索词和路径进行搜索!", - "search_ext_tips" => "用|隔开;例如 php|js|css
                    不填则搜索默认文本文件", - "file_type" => "文件类型", - "goto" => "跳转到", - "server_dwonload_desc" => "个任务加入到下载列表", - "parent_permission" => "父目录权限", - "root_path" => "我的文档", - "project_root_path" => "项目文档", - "lib" => "库", - "fav" => "收藏夹", - "desktop" => "桌面", - "browser" => "浏览器", - "my_computer" => "我的电脑", - "recycle" => "回收站", - "my_document" => "我的文档", - "my_picture" => "我的照片", - "my_music" => "我的音乐", - "my_movie" => "我的视频", - "my_download" => "我的下载", - "ui_desktop" => "桌面", - "ui_explorer" => "文件管理", - "ui_editor" => "编辑器", - "adminer" => "adminer", - "ui_project_home" => "项目主页", - "ui_login" => "登录", - "ui_logout" => "退出", - "setting" => "系统设置", - "setting_title" => "选项", - "setting_user" => "个人中心", - "setting_password" => "修改密码", - "setting_password_old" => "原密码", - "setting_password_new" => "修改为", - "setting_language" => "语言设置", - "setting_member" => "用户管理", - "setting_group" => "用户组管理", - "setting_group_add" => "添加用户组", - "setting_group_edit" => "编辑用户组", - "setting_theme" => "主题设置", - "setting_wall" => "壁纸设置", - "setting_wall_desktop" => "桌面壁纸", - "setting_wall_desktop_list" => "桌面壁纸管理", - "setting_wall_login_list" => "登陆壁纸管理", - "setting_wall_login_tips" => "提示 : 当如上面片多于1张时,登陆界面背景将随机轮换", - "setting_wall_diy" => "自定义壁纸:", - "setting_wall_info" => "图片url地址,本地图片可以右键图片浏览器打开即可得到", - "setting_fav" => "收藏夹管理", - "setting_help" => "使用帮助", - "setting_about" => "关于作品", - "setting_success" => "修改已生效!", - "can_not_repeat" => "不允许重复", - "absolute_path" => "绝对地址", - "group" => "用户组", - "data_not_full" => "数据提交不完整!", - "default_user_can_not_do" => "默认用户不能操作", - "default_group_can_not_do" => "默认用户组不能操作", - "username_can_not_null" => "用户名不能为空!", - "groupname_can_not_null" => "用户组名不能为空!", - "groupdesc_can_not_null" => "用户组描述不能为空!", - "group_move_user_error" => "所属用户组用户移动失败", - "group_already_remove" => "该用户组已被删除", - "group_not_exists" => "该用户组不存在", - "member_add" => "添加用户", - "password_null_not_update" => "密码不填表示不更改", - "if_save_file_tips" => "有文件未保存,确定关闭窗口?", - "if_save_file" => "文件尚未保存,是否保存?", - "if_remove" => "确认删除", - "member_remove_tips" => "删除后该用户目录会被清空", - "group_remove_tips" => "删除后该用户组用户无法登录
                    (需要重新设置用户组)", - "group_name" => "用户组名", - "group_name_tips" => "建议英文名,不能重复", - "group_desc" => "展示名称", - "group_desc_tips" => "组名描述", - "group_role_ext" => "扩展名限制", - "group_role_ext_tips" => "多个用|分隔开", - "group_role_file" => "文件管理", - "group_role_upload" => "允许上传", - "group_role_user" => "用户数据", - "group_role_group" => "用户组管理", - "group_role_member" => "用户管理", - "group_role_mkfile" => "新建文件", - "group_role_mkdir" => "新建文件夹", - "group_role_pathrname" => "重命名", - "group_role_pathdelete" => "文件删除", - "group_role_pathinfo" => "文件属性", - "group_role_pathmove" => "移动(复制/剪切/粘贴/拖拽操作)", - "group_role_zip" => "压缩", - "group_role_unzip" => "解压", - "group_role_search" => "搜索", - "group_role_filesave" => "编辑保存文件", - "group_role_can_upload" => "上传下载", - "group_role_download" => "远程下载", - "group_role_passowrd" => "修改密码", - "group_role_config" => "配置数据", - "group_role_fav" => "收藏夹操作(添加/编辑/删除)", - "action_list" => "列表查看", - "action_add" => "添加", - "action_edit" => "编辑", - "action_del" => "删除", - "group_role_ext_warning" => "不允许此类文件的上传,
                    重命名(重命名为指定扩展名),
                    编辑保存,远程下载,解压", - "group_tips" => "
                  68. 1.用户组名不能重复,修改组名后原属于改组用户会自动关联
                  69. 2.扩展名限制关系系统安全性,请务必谨慎操作(如果在web目录下新建php;就意味着改程序的权限对此用户形同虚设)
                  70. 3.户管理、权限组管理;查看权限和增删改权限是绑定的;程序会自动关联
                  71. 4.设定权限组能添加权限组后,后续权限是不继承的(此权限相当于最高权限)
                  72. ", - "not_null" => "必填项不能为空!", - "picture_can_not_null" => "图片地址不能为空!", - "rname_success" => "重命名成功!", - "please_inpute_search_words" => "请输入要搜索的字符串", - "remove_success" => "删除成功!", - "remove_fali" => "删除失败!", - "clipboard_null" => "剪贴板为空!", - "create_success" => "新建成功!", - "create_error" => "新建失败,请检查目录权限!", - "copy_success" => "【复制】—— 覆盖剪贴板成功!", - "cute_success" => "【剪切】—— 覆盖剪贴板成功!", - "clipboard_state" => "剪切板状态:", - "no_permission_write_all" => "该文件或目录没有写权限", - "no_permission_write_file" => "该文件没有写权限", - "no_permission_read_all" => "该文件或目录没有读权限", - "copy_not_exists" => "来源不存在", - "current_has_parent" => "目标文件夹是源文件夹的子文件夹!", - "past_success" => "粘贴操作完成", - "cute_past_success" => "剪切操作完成(源文件被删除,剪贴板清空)", - "zip_success" => "压缩完成", - "not_zip" => "不是压缩文件", - "zip_null" => "没有选择的文件或目录", - "unzip_success" => "解压完成", - "gotoline" => "跳转到行", - "path_is_current" => "所打开路径和当前路径一样!", - "path_exists" => "该名称已存在!", - "undo" => "撤销", - "redo" => "反撤销", - "preview" => "预览", - "wordwrap" => "自动换行", - "show_gutter" => "显示行号", - "char_all_display" => "显示不可见字符", - "auto_complete" => "自动提示", - "auto_save" => "自动保存", - "function_list" => "函数列表", - "code_theme" => "代码风格", - "font_size" => "字体大小", - "confirm" => "确定进行该操作?", - "button_ok" => "确定", - "button_submit" => "提交", - "button_set" => "设置", - "button_cancel" => "取消", - "button_edit" => "编辑", - "button_save" => "保存", - "button_apply" => "应用", - "button_save_all" => "保存全部", - "button_not_save" => "不保存", - "button_add" => "添加", - "button_back_add" => "返回添加", - "button_del" => "删除", - "button_save_edit" => "保存修改", - "button_save_submit" => "保存提交", - "button_more" => "更多", - "button_select_all" => "全选/反选", - "charset_AUTO" => "自动识别", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "阿拉伯文", - "charset_ISO_8859_6" => "阿拉伯文", - "charset_ISO_8859_10" => "北欧语言", - "charset_CP1257" => "波罗的海周边语言", - "charset_ISO_8859_13" => "波罗的海周边语言", - "charset_ISO_8859_4" => "波罗的海周边语言", - "charset_BIG5_HKSCS" => "繁体-香港", - "charset_BIG5" => "繁体-台湾", - "charset_Georgian_Academy" => "格鲁吉亚文", - "charset_PT154" => "哈萨克文", - "charset_CP949" => "韩语", - "charset_EUC_KR" => "韩语", - "charset_GB18030" => "简体中文", - "charset_GBK" => "简体中文", - "charset_ISO_8859_14" => "凯尔特语", - "charset_CP1133" => "老挝文", - "charset_ISO_8859_16" => "罗马尼亚文", - "charset_ISO_8859_3" => "南欧语言", - "charset_EUC_JP" => "日文", - "charset_ISO_2022_JP" => "日文", - "charset_SHIFT_JIS" => "日文", - "charset_KOI8_T" => "塔吉克语", - "charset_ISO_8859_11" => "泰文", - "charset_TIS_620" => "泰文", - "charset_CP1254" => "土耳其文", - "charset_CP1251" => "西里尔语", - "charset_ISO_8859_5" => "西里尔语", - "charset_KOI8_R" => "西里尔语", - "charset_KOI8_U" => "西里尔语", - "charset_CP1252" => "西欧语言", - "charset_ISO_8859_1" => "西欧语言", - "charset_ISO_8859_15" => "西欧语言", - "charset_Macintosh" => "西欧语言", - "charset_CP1255" => "希伯来文", - "charset_ISO_8859_8" => "希伯来文", - "charset_CP1253" => "希腊文", - "charset_ISO_8859_7" => "希腊文", - "charset_ARMSCII_8" => "亚美尼亚文", - "charset_CP1258" => "越南文", - "charset_VISCII" => "越南文", - "charset_CP1250" => "中欧语言", - "charset_ISO_8859_2" => "中欧语言", - "charset_default_set" => "文件编码", - "charset_convert_save" => "转换编码为", - "PluginCenter" => "插件中心", - "PluginBuy" => "购买授权", - "PluginInstalled" => "已安装", - "PluginUpdate" => "更新", - "PluginListNull" => "没有内容!", - "PluginType" => "分类", - "PluginTypeAll" => "全部", - "PluginTypeFile" => "文件增强", - "PluginTypeSafe" => "安全工具", - "PluginTypeTools" => "实用工具", - "PluginTypeMedia" => "多媒体", - "PluginTypeOthers" => "其他", - "PluginInstall" => "安装插件", - "PluginEnable" => "启用插件", - "PluginDisable" => "禁用", - "PluginRemove" => "卸载插件", - "PluginConfig" => "配置插件", - "PluginStatus" => "状态", - "PluginStatusEnabled" => "已启用", - "PluginStatusDisabled" => "未启用", - "PluginStatusNotInstall" => "未安装", - "PluginInstalling" => "安装中...", - "PluginHasUpdate" => "有更新", - "PluginUpdateStart" => "更新插件", - "PluginNeedConfig" => "需要初始化配置才能启用", - "PluginConfigNotNull" => "必填项不能为空!", - "PluginOpen" => "打开", - "PluginAuther" => "作者", - "PluginVersion" => "版本", - "PluginDownloadNumber" => "安装次数", - "PluginBack" => "返回", - "PluginReadme" => "描述", - "PluginResetConfig" => "恢复默认设置", - "PluginInstallSelf" => "手动安装", - "Plugin.config.auth" => "使用权限", - "Plugin.config.authDesc" => "设置所有人可用,或者指定用户、用户组、权限组可以使用", - "Plugin.config.authOpen" => "开放访问", - "Plugin.config.authOpenDesc" => "无需登录皆可访问,可用于对外接口调用", - "Plugin.config.authAll" => "所有人", - "Plugin.config.authUser" => "指定用户", - "Plugin.config.authGroup" => "指定部门", - "Plugin.config.authRole" => "指定权限组", - "Plugin.Config.openWith" => "打开样式", - "Plugin.Config.openWithDilog" => "内部对话框", - "Plugin.Config.openWithWindow" => "新页面打开", - "Plugin.Config.fileSort" => "扩展名关联优先级", - "Plugin.Config.fileSortDesc" => "越大扩展名打开优先级越高", - "Plugin.Config.fileExt" => "支持的文件格式", - "Plugin.Config.fileExtDesc" => "关联扩展名到该插件", - "Plugin.tab.basic" => "基础设置", - "Plugin.tab.auth" => "权限设置", - "Plugin.tab.others" => "其他设置", - "Plugin.default.aceEditor" => "Ace编辑器", - "Plugin.default.htmlView" => "网页预览", - "Plugin.default.picasa" => "Picasa 图片浏览", - "Plugin.default.zipView" => "在线解压缩", - "Plugin.default.jPlayer" => "jPlayer 播放器", - "Plugin.auth.viewList" => "插件列表", - "Plugin.auth.setting" => "插件设置", - "Plugin.auth.status" => "开启关闭", - "Plugin.auth.install" => "安装/卸载", - "Explorer.UI.openWith" => "选择打开方式", - "Explorer.UI.openWithText" => "记事本打开", - "Explorer.UI.appSetDefault" => "设置默认打开", - "Explorer.UI.appAwaysOpen" => "始终使用选择的程序打开这种文件", - "Explorer.UI.selectAppDesc" => "选择您想用来打开此文件的程序", - "Explorer.UI.selectAppWarning" => "请选择应用!", - "Explorer.UI.appTypeSupport" => "支持应用", - "Explorer.UI.appTypeAll" => "所有应用", - "kodApp.oexe.edit" => "编辑轻应用", - "kodApp.oexe.open" => "打开轻应用" -); \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/zh-TW/about.html b/plugin/document/kod/config/i18n/zh-TW/about.html deleted file mode 100644 index 398fca894..000000000 --- a/plugin/document/kod/config/i18n/zh-TW/about.html +++ /dev/null @@ -1,33 +0,0 @@ -
                    -
                    KODExplorer是什麼?
                    -

                    KODExplorer是一個公開原始碼的基於Web的線上檔案管理、程式碼編輯器。它提供了類windows經典使用者介面,一整套線上檔案管理、檔案預覽、編輯、上傳下載、線上解壓縮、音樂播放功能。讓你直接在瀏覽器端實現web開發、原始碼檔案預覽、網站部署的同時擁有與本機操作一樣方便、快捷、安全的體驗。

                    -

                    ——設計理念——

                    -

                    傳承經典,追求創新,為使用者提供方便快捷、安全易用的線上雲管理系統。

                    -

                    無論何時(when)、何地(where),擁有web只要你想(want)它就是你的管理利器(4W策略)。

                    -

                    ——面向使用者——

                    -

                    目前KODExplorer系統管理主要定位在個人云主機、中小企業雲資源管理、網路硬碟管理、中小型網站管理等。 Web開發者&站長(老鳥):線上編輯、壓縮備份、部署,經典windows介面操作,上手容易,遠離了主機的SSH、ftp複雜枯燥的指令操作。

                    -

                    個人私有雲(菜鳥):管理網路硬碟資源,同樣經典windows介面操作,可以就地瀏覽網路硬碟音樂、視屏檔案,上傳下載快捷方便。

                    -
                    - -
                    -
                    特色
                    -

                    完備的檔案管理,強大的線上檔案編輯器

                    -

                    無論您在哪裡,都可以管理您的檔案;並可以線上娛樂,線上寫程式碼!就像適宜用操作系統那樣。

                    -

                    豐富的本機體驗移植,右鍵操作,拖曳,框中選擇,快捷鍵,檔案搜尋(內容中搜尋)……

                    -

                    框中選擇,拖曳移動,拖曳上傳,線上編輯器,影音播放器,解壓縮。全面ajax保證性能和體驗!

                    -

                    各個功能直接無縫連線;以對話框形式存在,多任務管理等功能

                    -

                    編輯器支援多檔案;支援ZendCoding html,css,js程式碼編寫效率更高!

                    -

                    完美中文支援,各種情況下亂碼解決;

                    -
                    - -
                    -
                    開源技術採用
                    -

                    1.Jquery:jpuery(plugin:Hotkeys.ztree.contentmenu).js主流開發框架。對Dom操作、BOM操作、css操作,以及Ajax封裝

                    -

                    2.ArtDialog:一個設計優美,對瀏覽器相容性極強的對話框插件。使彈出視窗處理,事件以及資料的傳輸得到了更好的統一管理方式

                    -

                    3.Ztree:列表樹控制項,擴展性很強的樹形資料操作插件

                    -

                    4.codemirror:一個程式碼編輯js插件,支援各種程式語言的高亮處理

                    -

                    5.zendcoding:一個支援html程式碼快速編寫插件。定義方式簡化程式碼編寫。有簡單編譯功能

                    -

                    6.less:一種高效的,函數式css開發模式,提高前端css樣式表的可複用性。有簡單編譯功能

                    -

                    7.SWFUpload:flash多檔案上傳

                    -

                    8.CMP4:一個非常優秀的flash媒體檔案播放插件,支援流媒體,常用音樂影片的播放工具。支援換外觀,高可配置性的設定。列表xml的動態載入。 mms流媒體,rstp開源協議媒體播放支援

                    -
                    \ No newline at end of file diff --git a/plugin/document/kod/config/i18n/zh-TW/edit.html b/plugin/document/kod/config/i18n/zh-TW/edit.html deleted file mode 100644 index fb58f5031..000000000 --- a/plugin/document/kod/config/i18n/zh-TW/edit.html +++ /dev/null @@ -1,72 +0,0 @@ -
                    -
                    -

                    豐富的功能

                    -

                    程式碼自動提示

                    -

                    多主題:選擇你喜歡的編程風格

                    -

                    自訂字體:適合種場景下使用

                    -

                    多游標編輯,塊編輯等媲美sublime的線上編程體驗

                    -

                    程式碼塊折疊、展開;自動換行

                    -

                    支援多標籤,拖動切換順序;

                    -

                    維持多個檔案、尋找取代;歷史記錄;

                    -

                    自動補全[],{},(),"",''

                    -

                    線上即時預覽,使您愛上線上編程!

                    -

                    zendcodeing支援,寫程式碼健步如飛

                    -

                    更多功能,等待你的發現……

                    -
                    -
                    -

                    150多種程式碼高亮

                    -

                    前端:html,JavaScript,css,less,sass,scss

                    -

                    web開發:php,perl,python,ruby,elang,go...

                    -

                    傳統語言:java,c,c++,c#,actionScript,VBScript...

                    -

                    其他:markdown,shell,sql,lua,xml,yaml...

                    -
                    -
                    -
                    -
                    -

                    快捷鍵操作

                    -
                    常用快捷鍵: 
                    - ctrl+s 儲存
                    - ctrl+a 全選ctrl+x 剪下
                    - ctrl+c 複製ctrl+v 貼上
                    - ctrl+z 撤銷ctrl+y 反撤銷
                    - ctrl+f 尋找ctrl+f+f 取代
                    - win+alt+0 折疊所有win+alt+shift+0 展開所有
                    - esc [退出搜尋,取消自動提示...] 
                    - ctrl-shift-s 預覽
                    - ctrl-shift-e 顯示&關閉函數
                    -
                    -
                    選擇: 
                    -滑鼠框選——拖動
                    - shift+home/end/up/left/down/right 
                    - shift+pageUp/PageDown 上下翻頁選中
                    - ctrl+shift+ home/end 目前游標到頭尾
                    - alt+滑鼠拖動塊選擇
                    - ctrl+alt+g 批次選中目前並進入多標籤編輯
                    -
                    -
                    游標移動: 
                    - home/end/up/left/down/right 
                    - ctrl+home/end 游標移動到檔案首/尾
                    - ctrl+p 跳轉到匹配的標籤
                    - pageUp/PageDown 游標上下翻頁
                    - alt+left/right 游標移動到行首位
                    - shift+left/right 游標移動到行首&尾
                    - ctrl+l 跳轉到指定行
                    - ctrl+alt+up/down 上(下)增加游標
                    -
                    -
                    編輯: 
                    - ctrl+/ 註釋&取消註釋ctrl+alt+a 左右對齊
                    - table tab對齊shift+table 整體前移table 
                    - delete 刪除ctrl+d 刪除整行
                    - ctrl+delete 刪除該行右側單詞
                    - ctrl/shift+backspace 刪除左側單詞
                    - alt+shift+up/down 複製行並添加到上(下面)面
                    - alt+delete 刪除游標右側內容
                    - alt+up/down 目前行和上一行(下一行交換) 
                    - ctrl+shift+d 複製行並添加到下面
                    - ctrl+delete 刪除右側單詞
                    - ctrl+shift+u 轉換成小寫
                    - ctrl+u 選中內容轉換成大寫
                    -
                    -
                    -
                    - diff --git a/plugin/document/kod/config/i18n/zh-TW/help.html b/plugin/document/kod/config/i18n/zh-TW/help.html deleted file mode 100644 index f660631e4..000000000 --- a/plugin/document/kod/config/i18n/zh-TW/help.html +++ /dev/null @@ -1,36 +0,0 @@ -
                    -
                    檔案管理
                    -

                    檔案選擇:單選,滑鼠框選,shift連選,ctrl隨意選擇,鍵盤上下左右、home、end選擇。

                    -

                    檔案操作:選擇檔案後,可以進行複製,剪下,刪除,屬性查看,壓縮,重新命名,打開預覽等操作……

                    -

                    檔案上傳:多檔案批次上傳;html5拖曳上傳(拖曳到視窗實現無縫上傳,支援資料夾拖曳)

                    -

                    右鍵功能:檔案右鍵,資料夾右鍵,多選後右鍵操作,桌面右鍵,樹目錄右鍵操作,右鍵選單綁定快捷鍵
                    - (全選——複製——剪下——貼上——刪除——重新命名,設定……)

                    -

                    檔案瀏覽:列表模式,圖示模式;雙擊進入子資料夾;地址欄操作;打開資料夾記錄逆勢操作記錄(前進後退)

                    -

                    支援拖曳操作:選中後拖曳,實現剪下到指定資料夾功能

                    -

                    快捷鍵操作:delete刪除,ctrl+A全選,ctrl+C複製,ctrl+X剪下,檔案搜尋(內容中搜尋)

                    -
                    -
                    -
                    檔案預覽
                    -

                    檔案預覽:文字檔案內容查看編輯儲存;html,swf檔案預覽,

                    -

                    圖片預覽:自動生成縮圖,圖片幻燈片播放;

                    -

                    音訊播放:線上播放音樂,影片檔案;支援mp3,wma,mid,aac,wav;mp4,

                    -

                    影片播放:線上影片檔案播放,支援格式:flv,f4v,3gp

                    -

                    office:office線上預覽,支援格式:doc,docx,ppt,pptx,xls,xlsx

                    -
                    -
                    -
                    快捷鍵
                    -

                    enter 打開

                    -

                    ctrl+a 全選

                    -

                    ctrl+c 複製選中

                    -

                    ctrl+v 貼上

                    -

                    ctrl+x 剪下

                    -

                    ctrl+f 目前目錄進行搜尋

                    -

                    alt+n 建立檔案

                    -

                    alt+m 建立資料夾

                    -

                    delete 刪除選中

                    -

                    backspace 後退

                    -

                    ctrl+backspace 前進

                    -

                    f2 重新命名選中(檔案資料夾)

                    -

                    home/end/up/down/left/right 選擇檔案

                    -

                    anykey 選中以按下字元首字母的檔案&資料夾自動循環選中

                    -
                    diff --git a/plugin/document/kod/config/i18n/zh-TW/main.php b/plugin/document/kod/config/i18n/zh-TW/main.php deleted file mode 100644 index be7924640..000000000 --- a/plugin/document/kod/config/i18n/zh-TW/main.php +++ /dev/null @@ -1,804 +0,0 @@ - "請選擇檔案...", - "path_api_select_folder" => "請選擇資料夾...", - "path_api_select_image" => "請選擇圖片...", - "share_can_upload" => "允許上傳", - "move_error" => "移動失敗", - "setting_basic" => "基礎設定", - "setting_user_sound_open" => "開啟音效", - "setting_user_animate_open" => "開啟動畫", - "recycle_open_if" => "開啟垃圾筒", - "recycle_open" => "開啟", - "setting_user_recycle_desc" => "關閉後刪除會直接物理刪除,建議開啟", - "setting_user_animate_desc" => "視窗打開等動畫,操作不流暢時可以考慮關閉", - "setting_user_sound_desc" => "打開檔案、刪除檔案、清空回收站等操作音效", - "setting_user_imageThumb" => "開啟圖片縮圖", - "setting_user_imageThumb_desc" => "開啟後圖片瀏覽體驗更佳", - "setting_user_fileSelect" => "開啟檔案圖示勾選", - "setting_user_fileSelect_desc" => "檔案圖示的左鍵勾選,右鍵選單的快捷入口", - "qrcode" => "URL 二維碼", - "theme_mac" => "Mac 簡約白", - "theme_win7" => "Windows 7", - "theme_win10" => "Windows 10", - "theme_metro" => "Metro 經典藍", - "theme_metro_green" => "Metro 淡綠", - "theme_metro_purple" => "Metro 高雅紫", - "theme_metro_pink" => "Metro 玫紅", - "theme_metro_orange" => "Metro 亮橙", - "theme_alpha_image" => "炫彩——飛揚", - "theme_alpha_image_sun" => "炫彩——夕陽", - "theme_alpha_image_sky" => "幻彩——藍天", - "theme_diy" => "自訂", - "theme_diy_title" => "自訂主題設定", - "theme_diy_background" => "背景", - "theme_diy_image" => "圖片", - "theme_diy_color_blur" => "漸變顏色", - "theme_diy_image_blur" => "圖片模糊處理", - "theme_diy_image_url" => "圖片地址", - "theme_diy_color_start" => "開始顏色", - "theme_diy_color_end" => "結束顏色", - "theme_diy_color_radius" => "漸變角度", - "system_role_admin_set" => "系統管理員擁有所有權限,無需設定!", - "login_error_user_not_use" => "使用者已被禁用!請聯繫管理員", - "login_error_kod_version" => "程式版本衝突", - "login_error_role" => "所屬權限組不存在,請聯繫管理員", - "no_permission_group" => "您不在該使用者組!", - "no_permission_write" => "該目錄無寫權限", - "user" => "使用者", - "save_as" => "另存為", - "check_update" => "更新", - "keyboard_type" => "鍵盤模式", - "font_family" => "字體", - "code_mode" => "高亮語法", - "path_can_not_share" => "僅支援分享您自己的檔案!", - "path_can_not_action" => "此目錄不支援該操作!", - "wap_page_pc" => "電腦版", - "wap_page_phone" => "手機版", - "image_size" => "圖片尺寸", - "no_permission_action" => "您無此權限,請聯繫管理員!", - "path_is_root_tips" => "已經到根目錄了!", - "kod_group" => "組織架構", - "my_kod_group" => "我在的部門", - "space_tips_default" => "(GB) 0則不限制", - "space_tips_full" => "不限制", - "space_size" => "空間大小", - "space_size_use" => "空間使用", - "space_is_full" => "剩餘空間不足,請聯繫管理員!", - "system_open_true_path" => "成功在檔案管理中打開!", - "group_role_error" => "權限角色錯誤(無權限設定)", - "group_role_error_admin" => "權限不足", - "markdown_content" => "內容目錄", - "system_group" => "使用者與部門", - "system_group_edit" => "部門管理", - "system_group_role" => "角色身份", - "system_group_create" => "建立部門", - "system_group_name" => "部門名稱", - "system_group_father" => "上級部門", - "system_group_add" => "添加子部門", - "system_group_remove" => "刪除部門", - "system_group_remove_tips" => "確認刪除該部門?
                    刪除後屬於該部門的使用者會移除,子部門移動到根部門", - "system_group_select" => "選擇所在部門", - "system_group_select_result" => "成員將屬於以下部門", - "system_role_admin_tips" => "備註:系統管理員不受權限控制", - "system_member_action" => "使用者管理", - "system_member_add" => "建立使用者", - "system_member_role" => "權限角色", - "system_member_role_select" => "選擇", - "system_member_password_tips" => "不填則不修改", - "system_set_home_path" => "自訂目錄", - "system_set_home_path_tips" => "為空則使用預設目錄", - "system_member_group" => "所在部門", - "system_member_group_edit" => "編輯部門", - "system_member_remove" => "刪除使用者", - "system_member_remove_tips" => "確認刪除使用者?
                    刪除後該使用者目錄會徹底刪除", - "system_member_set_role" => "確認更改所選使用者的權限組?", - "system_member_remove_group" => "確定將所選使用者從該組移除?", - "system_member_import" => "批次添加", - "system_member_import_desc" => "每行一個使用者,
                    已存在則自動忽略", - "system_member_use" => "啟用", - "system_member_unuse" => "禁用", - "system_member_space" => "設定使用者空間大小", - "system_member_space_tips" => "設定使用者空間大小", - "system_member_space_number" => "必須是數字!", - "system_member_group_config" => "批次設定部門", - "system_member_group_remove" => "從該部門移除", - "system_member_group_insert" => "添加到部門", - "system_member_group_reset" => "重設部門", - "system_member_group_error" => "部門錯誤", - "system_group_action" => "部門管理", - "system_role_add" => "添加角色身份", - "system_role_read" => "唯讀", - "system_role_write" => "可讀寫", - "system_setting_root_path" => "根目錄訪問", - "system_setting_root_path_desc" => "僅系統管理員可以訪問所有目錄,其他權限組使用者只能看到自己的使用者目錄。
                    如果想開啟或關閉管理員訪問其他目錄,可以修改php防跨站open_basedir參數,如何設定", - "system_group_role_title" => "部門權限角色管理", - "system_group_role_remove" => "確定刪除部門角色", - "system_group_role_style" => "樣式", - "system_group_role_display" => "是否顯示", - "system_group_role_display_desc" => "設定部門使用者權限時是否顯示", - "role_type_name_read" => "讀取", - "role_type_name_read:list" => "檔案列表", - "role_type_name_read:info" => "檔案(夾)屬性查看,資料夾搜尋", - "role_type_name_read:copy" => "檔案複製", - "role_type_name_read:preview" => "檔案預覽(圖片,檔案,影音等)", - "role_type_name_read:download" => "檔案(夾)下載", - "role_type_name_write" => "寫入", - "role_type_name_write:add" => "建立檔案(夾),壓縮解壓檔案", - "role_type_name_write:edit" => "編輯儲存檔案", - "role_type_name_write:change" => "重新命名,調整目錄結構", - "role_type_name_write:upload" => "檔案(夾)上傳,遠程下載", - "role_type_name_write:remove" => "檔案(夾)刪除,剪下", - "group_guest" => "訪客", - "group_guest_desc" => "您不是該部門成員,
                    僅能訪問[部門共享目錄]下面的內容,唯讀權限.", - "group_role_lebel_desc" => "您是該部門成員,
                    部門內檔案所有操作權限均由管理員分配", - "button_save_and_add" => "儲存並繼續添加", - "path_cannot_search" => "該目錄不支援搜尋!", - "not_support" => "暫不支援!", - "group_not_exist" => "使用者組不存在!", - "upload_clear_all" => "清空所有", - "upload_clear" => "清空已完成", - "upload_setting" => "設定", - "upload_tips" => "採取分段上傳,不再受php.ini限制;推薦Chrome體驗資料夾拖曳上傳", - "upload_exist" => "重複的檔案", - "upload_exist_rename" => "重新命名", - "upload_exist_replace" => "覆蓋", - "upload_exist_skip" => "略過", - "upload_add_more" => "批次添加", - "more" => "更多", - "system_setting" => "系統設定", - "openProject" => "編輯器開啟項目", - "url_download" => "下載網址", - "url_link" => "網址", - "app_type_link" => "捷徑", - "createLink" => "建立捷徑", - "createLinkHome" => "發送到桌面捷徑", - "createProject" => "新增志編輯器工程", - "only_read" => "唯讀", - "only_read_desc" => "此目錄無寫權限
                    可以在作業系統中設定此目錄的權限", - "not_read" => "不可讀", - "explorerNew" => "kod 連結", - "zip_download_ready" => "壓縮後會自動下載,請稍後...", - "set_background" => "設定為桌面壁紙", - "share" => "分享", - "my_share" => "我的分享", - "group_share" => "群組對外分享", - "share_edit" => "編輯分享", - "share_remove" => "取消分享", - "share_remove_tips" => "確定取消分享?公開連線將失效.", - "share_path" => "分享路徑", - "share_title" => "資源分享", - "share_name" => "分享標題", - "share_time" => "到期時間", - "share_time_desc" => "為空則不設定", - "share_password" => "提取密碼", - "share_password_desc" => "為空則不設定密碼", - "share_cancle" => "取消共用", - "share_create" => "建立公開連結", - "share_url" => "共用網址", - "share_not_download" => "禁止下載", - "share_not_download_tips" => "共用者禁止了下載!", - "share_code_read" => "程式碼閱讀", - "share_save" => "儲存設定", - "share_error_param" => "參數錯誤!", - "share_error_user" => "使用者資訊錯誤!", - "share_error_sid" => "共用不存在!", - "share_error_time" => "您來晚了,該共用已經過期!", - "share_error_path" => "共用檔案不存在,被刪除或者移走了!", - "share_error_password" => "密碼錯誤!", - "share_error_show_tips" => "該類型檔案暫不支援預覽!", - "share_view_num" => "檢視:", - "share_download_num" => "下載:", - "share_open_page" => "打開共用頁面", - "open_the_path" => "進入所在目錄", - "recycle_clear" => "清除垃圾筒", - "recycle_clear_success" => "清除垃圾筒成功!", - "recycle_clear_info" => "您確定要徹底清空垃圾筒嗎?", - "fav_remove" => "取消該收藏", - "remove_item" => "項內容", - "uploading" => "上傳中 ", - "upload_tips_more" => "檔案過多,建議壓縮後上傳,然後線上解壓!", - "uploading_move" => "合併轉存中...", - "show_file" => "新頁面預覽", - "unknow_file_title" => "檔案打開提示!", - "unknow_file_tips" => "沒有支援此檔案的應用,您可以:", - "unknow_file_try" => "嘗試", - "unknow_file_download" => "下載該檔案", - "unknow_plugin_search" => "搜尋相關的應用安裝", - "config_save_error_auth" => "設定儲存失敗,管理員禁止了此權限!", - "config_save_error_file" => "錯誤,檔案沒有寫權限!", - "beautify_code" => "程式碼格式化", - "convert_case" => "大小寫轉換", - "convert_upper_case" => "轉換為大寫", - "convert_lower_case" => "轉換為小寫", - "editor_insert_time" => "目前時間", - "editor_md5" => " md5加密", - "editor_qrcode" => "字串二維碼", - "editor_regx" => "正則表達式測試", - "editor_chinese" => "繁簡轉換", - "editor_chinese_simple" => "轉換為簡體中文", - "editor_chinese_traditional" => "轉換為繁體中文", - "editor_base64" => "base64編解碼", - "editor_base64_encode" => " base64 編碼", - "editor_base64_decode" => " base64 解碼", - "editor_url" => " URL編解碼", - "editor_url_encode" => " URL 編碼", - "editor_url_decode" => " URL 解碼", - "editor_unicode" => " Unicode編解碼", - "editor_unicode_encode" => " Unicode 編碼", - "editor_unicode_decode" => " Unicode 解碼", - "editor_tools_select_tips" => "請先選中要轉換的內容!", - "editor_calc" => "自由計算器", - "shortcut" => "快捷鍵", - "use_free" => "繼續使用免費版", - "learn_more" => "了解更多", - "replace" => "取代", - "selectAll" => "全選", - "reload" => "重新載入", - "about" => "關於", - "complete_current" => "自動補全目前", - "view" => "檢視", - "tools" => "工具", - "help" => "幫助", - "not_exists" => "不存在", - "group_role_fileDownload" => "檔案下載", - "group_role_share" => "共用", - "users_share" => "的共享", - "system_setting_save" => "安全設定", - "system_setting_menu" => "選單管理", - "system_name" => "程式名稱", - "system_name_desc" => "程式logo標題", - "system_desc" => "程式描述", - "path_hidden" => "目錄排除", - "version_not_support" => "您的版本不支援此操作,請到官網購買進階版本!", - "version_not_support_number" => "由於數量限制不支援此操作,請到官網購買進階版本!", - "path_hidden_desc" => "預設不顯示的目錄和檔案,逗號隔開", - "new_user_folder" => "新使用者預設建立目錄", - "new_user_folder_desc" => "用逗號隔開", - "new_user_app" => "新使用者預設建立app", - "new_user_app_desc" => "應用中心的應用,多個用逗號隔開", - "auto_login" => "遊客自動登入", - "auto_login_desc" => "預設登入使用者為guest/guest的使用者;開啟後確保該使用者存在", - "first_in" => "登入後預設進入", - "version_price_free" => "免費", - "version_name_1" => "團隊版", - "version_name_2" => "專業版", - "version_name_3" => "企業版", - "version_name_4" => "進階版1", - "version_name_5" => "進階版2", - "version_name_6" => "進階版3", - "version_vip_free" => "免費版", - "version_vip_1" => "VIP 1 (團隊版)", - "version_vip_2" => "VIP 2 (專業版)", - "version_vip_3" => "VIP 3 (企業版)", - "version_vip_4" => "VIP 4 (進階版)", - "version_vip_5" => "VIP 5 (進階版)", - "version_vip_6" => "VIP 6 (進階版)", - "path_can_not_write_data" => "目錄不可寫,請將該目錄及所有子目錄設定為可讀寫後再試!", - "menu_name" => "選單名", - "menu_hidden" => "隱藏", - "menu_show" => "顯示", - "menu_move_down" => "下移", - "menu_move_up" => "上移", - "menu_move_del" => "刪除", - "menu_open_window" => "新視窗打開", - "menu_sub_menu" => "子選單", - "url_path" => "url地址", - "url_path_desc" => "url地址或js程式碼", - "no_permission_read" => "您沒有讀取權限!", - "no_permission_download" => "您沒有下載權限!", - "php_env_check" => "執行環境檢測:", - "php_env_error" => "php庫缺失", - "php_env_error_ignore" => "忽略並進入", - "php_env_error_version" => "PHP版本不能低於5.0", - "php_env_error_path" => "不可寫", - "php_env_error_list_dir" => "您的web伺服器開啟了列目錄功能,為安全考慮請禁用該功能!如何操作?", - "php_env_error_gd" => "須開啟php GD庫,否則驗證碼、縮圖使用將不正常", - "install_login" => "您可以用如下帳號登入", - "install_enter" => "進入系統", - "install_user_default" => "管理員:{0}/(在下面設定密碼)
                    普通使用者:{1}
                    遊客使用者:{2}", - "login_root_password" => "設定管理員密碼", - "login_root_password_repeat" => "再次確認密碼", - "login_root_password_equal" => "兩次密碼不一致!", - "login_root_password_tips" => "請設定管理員密碼!", - "forget_password" => "忘記密碼", - "forget_password_tips" => "管理員忘記密碼:
                    請登入伺服器刪除./data/system/install.lock後重設;

                    非管理員忘記密碼:
                    請聯繫管理員重設!", - "copyright_desc" => "Kodexplorer是一款備受好評的web檔案管理系統,你可以用它來做內部檔案管理或共享、也可以用來管理伺服器上的網站,取代Ftp,甚至可以當作webIDE直接線上開發。同時你也可以將此程式二次開發整合到你現有的系統。", - "copyright_contact" => "授權或訂製請聯繫QQ:3532208565問題回饋", - "copyright_info" => "Copyright © kodcloud.com.", - "copyright_pre" => "Powered by KodExplorer", - "kod_name" => "KodExplorer", - "kod_name_desc" => "可道雲•資源管理器", - "kod_power_by" => " - Powered by KodExplorer", - "kod_name_copyright" => "可道雲•資源管理器", - "kod_meta_name" => "KodExplorer", - "kod_meta_keywords" => "KodExplorer,kod,kodCloud,webos,webIDE,php filemanage,filemanage,可道雲,芒果雲,檔案管理系統,企業雲端硬碟,資源管理器,,線上檔案,線上Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器", - "kod_meta_description" => "KodExplorer可道雲(原芒果雲)是業內領先的政務/企業私有雲和線上檔案管理系統,為個人網站、企業私有雲部署、網路儲存、線上檔案管理、線上辦公等提供安全可控,簡便易用、可高度訂製的私有雲產品。採用windows風格介面、操作習慣,無需適應即可快速上手,支援幾百種常用檔案格式的線上預覽、播放和編輯,環境友好,功能強大,是一款一經試用,就再也離不開的私有雲產品。", - "kod_meta_copyright" => "kodcloud.com", - "login" => "登入", - "guest_login" => "遊客登入", - "username" => "登入帳號", - "userNickName" => "使用者暱稱", - "password" => "密碼", - "login_code" => "驗證碼", - "need_check_code" => "登入驗證碼開啟", - "need_check_code_desc" => "開啟後登入必須需要輸入驗證碼。", - "setting_csrf_protect" => "開啟csrf保護", - "setting_csrf_protect_desc" => "開啟後能有效防護csrf類攻擊", - "login_rember_password" => "記住密碼", - "setting_show_root_group" => "羅列所有部門", - "setting_show_root_group_desc" => "樹目錄根部門是否列出所有部門", - "setting_show_share_user" => "羅列所有使用者", - "setting_show_share_user_desc" => "樹目錄根部門是否列出所有使用者分享", - "setting_clear_user_recycle" => "清空所有使用者回收站", - "setting_clear_cache" => "清空快取", - "setting_icp" => "版權或備案號", - "setting_global_css" => "自訂全域css", - "setting_global_css_desc" => "所有頁面將會插入自訂css", - "setting_global_html" => "統計程式碼 HTML", - "setting_global_html_desc" => "所有頁面將插入此段html程式碼,可以放置第三方統計程式碼", - "us" => "千帆網路工作室", - "login_not_null" => "使用者名稱密碼不能為空!", - "code_error" => "驗證碼錯誤", - "password_error" => "使用者名稱或密碼錯誤!", - "password_not_null" => "密碼不能為空!", - "old_password_error" => "原密碼錯誤!", - "permission" => "許可權!", - "permission_edit" => "修改權限", - "file_info_owner" => "所有者", - "file_info_group" => "組", - "no_permission" => "您無此權限!", - "no_permission_ext" => "您無該類型檔案權限", - "dialog_max" => "最大化", - "dialog_min" => "最小化", - "dialog_min_all" => "最小化所有", - "dialog_display_all" => "顯示所有視窗", - "dialog_close_all" => "關閉所有", - "open" => "打開", - "others" => "其他", - "open_with" => "打開為...", - "close" => "關閉", - "close_all" => "關閉全部", - "close_left" => "關閉左側標籤", - "close_right" => "關閉右側標籤", - "close_others" => "關閉其他", - "loading" => "操作中...", - "warning" => "警告", - "getting" => "獲取中...", - "sending" => "資料發送中...", - "data_error" => "資料出錯!", - "get_success" => "獲取成功!", - "save_success" => "儲存成功!", - "success" => "操作成功", - "error" => "操作失敗", - "error_repeat" => "操作失敗,該名稱已存在!", - "word_error" => "失敗", - "word_success" => "成功", - "system_error" => "系統錯誤", - "name" => "名稱", - "type" => "類型", - "contain" => "包含", - "address" => "位置", - "size" => "大小", - "byte" => "位元組", - "path" => "路徑", - "action" => "操作", - "create_time" => "建立時間", - "modify_time" => "修改時間", - "last_time" => "最後訪問", - "sort_type" => "排序方式", - "time_type" => "Y/m/d H:i:s", - "time_type_info" => "Y/m/d H:i:s", - "public_path" => "公共目錄", - "system_path_not_change" => "系統目錄,不允許修改", - "file" => "檔", - "folder" => "檔夾", - "copy" => "複製", - "past" => "貼上", - "clone" => "建立副本", - "cute" => "剪下", - "cute_to" => "移動到...", - "copy_to" => "複製到...", - "remove" => "刪除", - "remove_force" => "徹底刪除", - "info" => "屬性", - "list_type" => "查看", - "list_icon" => "圖示排列", - "list_list" => "列表排列", - "list_list_split" => "分欄模式", - "sort_up" => "遞增", - "sort_down" => "遞減", - "order_type" => "排序方式", - "order_desc" => "降序", - "order_asc" => "昇冪", - "rename" => "重新命名", - "add_to_fav" => "添加到收藏夾", - "search_in_path" => "資料夾中搜尋", - "add_to_play" => "添加到播放列表", - "manage_fav" => "管理收藏夾", - "refresh_tree" => "刷新樹目錄", - "manage_folder" => "管理目錄", - "close_menu" => "關閉選單", - "zip" => "建立壓縮包", - "unzip" => "解壓到...", - "unzip_folder" => "解壓到檔案夾", - "unzip_this" => "解壓到目前", - "unzip_to" => "解壓到...", - "zipview_file_big" => "該檔案太大,請解壓後再進行預覽操作!", - "clipboard" => "查看剪貼簿", - "clipboard_clear" => "清空剪貼簿", - "full_screen" => "全螢幕", - "folder_info_item" => "個項目", - "folder_info_item_select" => "個選中", - "file_load_all" => " 雙擊載入全部……", - "tips" => "提示", - "ziping" => "正在壓縮...", - "unziping" => "正在解壓...", - "moving" => "移動操作中...", - "remove_title" => "刪除確認", - "remove_info" => "確認刪除選中內容嗎?", - "remove_title_force" => "永久刪除", - "remove_info_force" => "確定要永久刪除此檔案嗎?", - "name_isexists" => "出錯了,該名稱已存在!", - "install" => "安裝", - "width" => "寬", - "height" => "高", - "app" => "輕應用", - "app_store" => "輕應用", - "app_create" => "建立應用", - "app_edit" => "修改應用", - "app_group_all" => "全部", - "app_group_game" => "遊戲", - "app_group_tools" => "工具", - "app_group_reader" => "閱讀", - "app_group_movie" => "影視", - "app_group_music" => "音樂", - "app_group_life" => "生活", - "app_group_others" => "其他", - "app_desc" => "描述", - "app_icon" => "應用圖示", - "app_icon_show" => "url地址或該目錄", - "app_group" => "應用分組", - "app_type" => "類型", - "app_type_url" => "連結", - "app_type_code" => "js擴展", - "app_display" => "外觀", - "app_display_border" => "無邊框(選中即無邊框)", - "app_display_size" => "調整大小(選中即可調整)", - "app_size" => "尺寸", - "app_url" => "連結地址", - "app_code" => "js 程式碼", - "edit" => "編輯", - "edit_can_not" => "不是文字檔", - "edit_too_big" => "檔案太大,不能大於40M", - "open_default" => "預設方式打開", - "open_ie" => "瀏覽器打開", - "refresh" => "刷新", - "refresh_all" => "強制刷新", - "newfile" => "建立檔", - "newfile_save_as" => "儲存到", - "newfolder" => "建立檔夾", - "newothers" => "建立其他", - "path_loading" => "載入中...", - "go" => "走著!", - "go_up" => "上層", - "history_next" => "前進", - "history_back" => "後退", - "address_in_edit" => "點擊進入編輯狀態", - "double_click_rename" => "雙擊名稱重新命名", - "double_click_open" => "雙擊打開", - "path_null" => "資料夾為空!", - "file_size_title" => "圖示大小", - "file_size_small_super" => "超小", - "file_size_small" => "小圖示", - "file_size_default" => "中圖示", - "file_size_big" => "大圖示", - "file_size_big_super" => "超大圖示", - "upload" => "上傳", - "upload_ready" => "等待上傳 ", - "upload_success" => "上傳成功", - "upload_path_current" => "切換到目前目錄", - "upload_select" => "選擇檔", - "upload_max_size" => "最大允許", - "upload_size_info" => "如果想設定更大,請修改php.ini中允許上傳的最大值。選擇檔時,大於該設定的將自動過濾掉。", - "upload_error" => "上傳失敗", - "upload_error_http" => "網路或防火牆錯誤", - "upload_muti" => "多檔上傳", - "upload_drag" => "拖曳上傳", - "upload_drag_tips" => "鬆開即可上傳!", - "path_not_allow" => "檔案名不允許出現", - "download" => "下載", - "downloading" => "下載中...", - "download_address" => "外鏈地址", - "download_ready" => "即將下載", - "download_success" => "下載成功!", - "download_error" => "下載失敗!", - "download_error_create" => "寫入出錯!", - "download_error_exists" => "連結到檔案失敗!", - "upload_error_null" => "無檔!", - "upload_error_big" => "檔大小超過伺服器限制", - "upload_error_move" => "移動檔失敗!", - "upload_error_exists" => "該檔已存在", - "upload_local" => "本機上傳", - "download_from_server" => "離線下載", - "save_path" => "儲存路徑", - "upload_select_muti" => "可選擇多個檔上傳", - "search" => "搜尋", - "searching" => "搜尋中...", - "search_result" => "搜尋結果", - "seach_result_too_more" => "搜尋結果太多,建議換一個目錄或詞語", - "search_null" => "無搜尋結果!", - "search_uplow" => "區分大小寫", - "search_content" => "搜尋檔案內容", - "search_info" => "請輸入搜尋詞和路徑進行搜尋!", - "search_ext_tips" => "用|隔開;例如 php|js|css
                    不填則搜尋預設文字檔", - "file_type" => "檔類型", - "goto" => "跳轉到", - "server_dwonload_desc" => "個任務加入到下載列表", - "parent_permission" => "父目錄許可權", - "root_path" => "我的檔案", - "lib" => "庫", - "fav" => "收藏夾", - "desktop" => "桌面", - "browser" => "瀏覽器", - "my_computer" => "我的電腦", - "recycle" => "垃圾筒", - "my_document" => "我的檔案", - "my_picture" => "我的照片", - "my_music" => "我的音樂", - "my_movie" => "我的影片", - "my_download" => "我的下載", - "ui_desktop" => "桌面", - "ui_explorer" => "檔案管理", - "ui_editor" => "編輯器", - "adminer" => "adminer", - "ui_project_home" => "專案首頁", - "ui_login" => "登入", - "ui_logout" => "登出", - "setting" => "系統設定", - "setting_title" => "選項", - "setting_user" => "個人中心", - "setting_password" => "修改密碼", - "setting_password_old" => "原密碼", - "setting_password_new" => "修改為", - "setting_language" => "語言設定", - "setting_member" => "使用者管理", - "setting_group" => "使用者組管理", - "setting_group_add" => "添加使用者組", - "setting_group_edit" => "編輯使用者組", - "setting_theme" => "主題設定", - "setting_wall" => "壁紙設定", - "setting_wall_desktop" => "桌面壁紙", - "setting_wall_desktop_list" => "桌面壁紙管理", - "setting_wall_login_list" => "登入壁紙管理", - "setting_wall_login_tips" => "提示 : 當如上面片多於1張時,登入介面背景將隨機輪換", - "setting_wall_diy" => "自訂壁紙:", - "setting_wall_info" => "圖片url地址,本機圖片可以右鍵圖片瀏覽器打開即可得到", - "setting_fav" => "收藏夾管理", - "setting_help" => "使用幫助", - "setting_about" => "關於作品", - "setting_success" => "修改已生效!", - "can_not_repeat" => "不允許重複", - "absolute_path" => "絕對地址", - "group" => "使用者組", - "data_not_full" => "資料提交不完整!", - "default_user_can_not_do" => "預設使用者不能操作", - "default_group_can_not_do" => "預設使用者組不能操作", - "username_can_not_null" => "使用者名稱不能為空!", - "groupname_can_not_null" => "使用者組名不能為空!", - "groupdesc_can_not_null" => "使用者組描述不能為空!", - "group_move_user_error" => "所屬使用者組使用者移動失敗", - "group_already_remove" => "該使用者組已被刪除", - "group_not_exists" => "該使用者組不存在", - "member_add" => "添加使用者", - "password_null_not_update" => "密碼不填表示不更改", - "if_save_file_tips" => "有檔案未儲存,確定關閉視窗?", - "if_save_file" => "檔尚未儲存,是否儲存?", - "if_remove" => "確認刪除", - "member_remove_tips" => "刪除後該使用者目錄會被清除", - "group_remove_tips" => "刪除後該使用者組使用者無法登入
                    (需要重新設定使用者組)", - "group_name" => "使用者組名", - "group_name_tips" => "建議英文名,不能重複", - "group_desc" => "展示名稱", - "group_desc_tips" => "組名描述", - "group_role_ext" => "副檔名限制", - "group_role_ext_tips" => "多個用|分隔開", - "group_role_file" => "檔管理", - "group_role_upload" => "允許上傳", - "group_role_user" => "使用者資料", - "group_role_group" => "使用者組管理", - "group_role_member" => "使用者管理", - "group_role_mkfile" => "建立檔", - "group_role_mkdir" => "建立檔夾", - "group_role_pathrname" => "重新命名", - "group_role_pathdelete" => "檔案刪除", - "group_role_pathinfo" => "檔案屬性", - "group_role_pathmove" => "移動(複製/剪下/貼上/拖曳操作)", - "group_role_zip" => "壓縮", - "group_role_unzip" => "解壓", - "group_role_search" => "搜尋", - "group_role_filesave" => "編輯儲存檔", - "group_role_can_upload" => "上傳下載", - "group_role_download" => "遠程下載", - "group_role_passowrd" => "修改密碼", - "group_role_config" => "使用者設定", - "group_role_fav" => "收藏夾操作(添加/編輯/刪除)", - "action_list" => "列表查看", - "action_add" => "添加", - "action_edit" => "編輯", - "action_del" => "刪除", - "group_role_ext_warning" => "不允許此類檔的上傳,
                    重新命名(重新命名為指定副檔名),
                    編輯儲存,遠程下載,解壓", - "group_tips" => "
                  73. 1.使用者組名不能重複,修改組名後原屬於改組使用者會自動關聯
                  74. 2.副檔名限制關係系統安全性,請務必謹慎操作(如果在web目錄下建立php;就意味著改程式的權限對此使用者形同虛設)
                  75. 3.戶管理、權限組管理;查看權限和增刪改權限是綁定的;程式會自動關聯
                  76. 4.設定權限組能添加權限組後,後續權限是不繼承的(此權限相當於最高權限)
                  77. ", - "not_null" => "必填項不能為空!", - "picture_can_not_null" => "圖片地址不能為空!", - "rname_success" => "重新命名成功!", - "please_inpute_search_words" => "請輸入要搜尋的字串", - "remove_success" => "刪除成功!", - "remove_fali" => "刪除失敗!", - "clipboard_null" => "剪貼簿為空!", - "create_success" => "建立成功!", - "create_error" => "建立失敗,請檢查目錄許可權!", - "copy_success" => "【複製】—— 覆蓋剪貼簿成功!", - "cute_success" => "【剪下】—— 覆蓋剪貼簿成功!", - "clipboard_state" => "剪下板狀態:", - "no_permission_write_all" => "該檔案或目錄沒有寫權限", - "no_permission_write_file" => "該檔案無寫權限", - "no_permission_read_all" => "該檔案或目錄沒有讀取權限", - "copy_not_exists" => "來源不存在", - "current_has_parent" => "目標檔夾是原始檔案夾的子檔夾!", - "past_success" => "貼上操作完成", - "cute_past_success" => "剪下操作完成(來源檔案被刪除,剪貼簿清空)", - "zip_success" => "壓縮完成", - "not_zip" => "不是壓縮檔", - "zip_null" => "無選擇的檔或目錄", - "unzip_success" => "解壓完成", - "gotoline" => "跳轉到行", - "path_is_current" => "所打開路徑和目前路徑壹洋!", - "path_exists" => "該名稱已存在!", - "undo" => "復原", - "redo" => "反復原", - "preview" => "預覽", - "wordwrap" => "自動換行", - "show_gutter" => "顯示行號", - "char_all_display" => "顯示不可見字元", - "auto_complete" => "自動提示", - "auto_save" => "自動儲存", - "function_list" => "函數列表", - "code_theme" => "程式碼風格", - "font_size" => "字體大小", - "confirm" => "確定進行該操作?", - "button_ok" => "確定", - "button_submit" => "提交", - "button_set" => "設定", - "button_cancel" => "取消", - "button_edit" => "編輯", - "button_save" => "儲存", - "button_apply" => "應用", - "button_save_all" => "儲存全部", - "button_not_save" => "不儲存", - "button_add" => "添加", - "button_back_add" => "返回添加", - "button_del" => "刪除", - "button_save_edit" => "儲存修改", - "button_save_submit" => "儲存提交", - "button_more" => "更多", - "button_select_all" => "全選/反選", - "charset_AUTO" => "自動識別", - "charset_UTF_8" => "Unicode", - "charset_UTF_16" => "Unicode", - "charset_CP1256" => "阿拉伯文", - "charset_ISO_8859_6" => "阿拉伯文", - "charset_ISO_8859_10" => "北歐語言", - "charset_CP1257" => "波羅的海周邊語言", - "charset_ISO_8859_13" => "波羅的海周邊語言", - "charset_ISO_8859_4" => "波羅的海周邊語言", - "charset_BIG5_HKSCS" => "繁體-香港", - "charset_BIG5" => "繁體-台灣", - "charset_Georgian_Academy" => "喬治亞文", - "charset_PT154" => "哈薩克文", - "charset_CP949" => "韓語", - "charset_EUC_KR" => "韓語", - "charset_GB18030" => "簡體中文", - "charset_GBK" => "簡體中文", - "charset_ISO_8859_14" => "凱爾特語", - "charset_CP1133" => "寮國文", - "charset_ISO_8859_16" => "羅馬尼亞文", - "charset_ISO_8859_3" => "南歐語言", - "charset_EUC_JP" => "日文", - "charset_ISO_2022_JP" => "日文", - "charset_SHIFT_JIS" => "日文", - "charset_KOI8_T" => "塔吉克語", - "charset_ISO_8859_11" => "泰文", - "charset_TIS_620" => "泰文", - "charset_CP1254" => "土耳其文", - "charset_CP1251" => "西里爾語", - "charset_ISO_8859_5" => "西里爾語", - "charset_KOI8_R" => "西里爾語", - "charset_KOI8_U" => "西里爾語", - "charset_CP1252" => "西歐語言", - "charset_ISO_8859_1" => "西歐語言", - "charset_ISO_8859_15" => "西歐語言", - "charset_Macintosh" => "西歐語言", - "charset_CP1255" => "希伯來文", - "charset_ISO_8859_8" => "希伯來文", - "charset_CP1253" => "希臘文", - "charset_ISO_8859_7" => "希臘文", - "charset_ARMSCII_8" => "亞美尼亞文", - "charset_CP1258" => "越南文", - "charset_VISCII" => "越南文", - "charset_CP1250" => "中歐語言", - "charset_ISO_8859_2" => "中歐語言", - "charset_default_set" => "檔案編碼", - "charset_convert_save" => "轉換編碼為", - "PluginCenter" => "插件中心", - "PluginBuy" => "購買授權", - "PluginInstalled" => "已安裝", - "PluginUpdate" => "更新", - "PluginListNull" => "沒有內容!", - "PluginType" => "分類", - "PluginTypeAll" => "全部", - "PluginTypeFile" => "檔案增強", - "PluginTypeSafe" => "安全工具", - "PluginTypeTools" => "實用工具", - "PluginTypeMedia" => "多媒體", - "PluginTypeOthers" => "其他", - "PluginInstall" => "安裝插件", - "PluginEnable" => "啟用插件", - "PluginDisable" => "禁用", - "PluginRemove" => "移除插件", - "PluginConfig" => "配置插件", - "PluginStatus" => "狀態", - "PluginStatusEnabled" => "已啟用", - "PluginStatusDisabled" => "未啟用", - "PluginStatusNotInstall" => "未安裝", - "PluginInstalling" => "安裝中...", - "PluginHasUpdate" => "有更新", - "PluginUpdateStart" => "更新插件", - "PluginNeedConfig" => "需要初始化配置才能啟用", - "PluginConfigNotNull" => "必填項不能為空!", - "PluginOpen" => "打開", - "PluginAuther" => "作者", - "PluginVersion" => "版本", - "PluginDownloadNumber" => "安裝次數", - "PluginBack" => "返回", - "PluginReadme" => "描述", - "PluginResetConfig" => "恢復預設設定", - "PluginInstallSelf" => "手動安裝", - "Plugin.config.auth" => "使用權限", - "Plugin.config.authDesc" => "設定所有人可用,或者指定使用者、使用者組、權限組可以使用", - "Plugin.config.authOpen" => "開放訪問", - "Plugin.config.authOpenDesc" => "無需登入皆可訪問,可用於對外介面調用", - "Plugin.config.authAll" => "所有人", - "Plugin.config.authUser" => "指定使用者", - "Plugin.config.authGroup" => "指定部門", - "Plugin.config.authRole" => "指定權限組", - "Plugin.Config.openWith" => "打開樣式", - "Plugin.Config.openWithDilog" => "內部對話框", - "Plugin.Config.openWithWindow" => "新頁面打開", - "Plugin.Config.fileSort" => "副檔名關聯優先度", - "Plugin.Config.fileSortDesc" => "越大副檔名打開優先度越高", - "Plugin.Config.fileExt" => "支援的檔案格式", - "Plugin.Config.fileExtDesc" => "關聯副檔名到該插件", - "Plugin.tab.basic" => "基礎設定", - "Plugin.tab.auth" => "權限設定", - "Plugin.tab.others" => "其他設定", - "Plugin.default.aceEditor" => "Ace編輯器", - "Plugin.default.htmlView" => "網頁預覽", - "Plugin.default.picasa" => "Picasa 圖片瀏覽", - "Plugin.default.zipView" => "線上解壓縮", - "Plugin.default.jPlayer" => "jPlayer 播放器", - "Plugin.auth.viewList" => "插件列表", - "Plugin.auth.setting" => "插件設定", - "Plugin.auth.status" => "開啟關閉", - "Plugin.auth.install" => "安裝/移除", - "Explorer.UI.openWith" => "選擇打開方式", - "Explorer.UI.openWithText" => "記事本打開", - "Explorer.UI.appSetDefault" => "設定預設打開", - "Explorer.UI.appAwaysOpen" => "始終使用選擇的程式打開這種檔案", - "Explorer.UI.selectAppDesc" => "選擇您想用來打開此檔案的程式", - "Explorer.UI.selectAppWarning" => "請選擇應用!", - "Explorer.UI.appTypeSupport" => "支援應用", - "Explorer.UI.appTypeAll" => "所有應用", - "kodApp.oexe.edit" => "編輯輕應用", - "kodApp.oexe.open" => "打開輕應用" -); \ No newline at end of file diff --git a/plugin/document/kod/config/setting.php b/plugin/document/kod/config/setting.php deleted file mode 100644 index 524a40da1..000000000 --- a/plugin/document/kod/config/setting.php +++ /dev/null @@ -1,246 +0,0 @@ - 0, //下载地址生效时间,按秒计算,0代表不限制 - 'apiLoginTonken' => '', //设定则认为开启服务端api通信登陆,同时作为加密密匙 - 'updloadChunkSize' => 1024*1024*0.4,//0.4M;分片上传大小设定;需要小于php.ini上传限制的大小 - 'updloadThreads' => 10, //上传并发数;部分低配服务器上传失败则将此设置为1 - 'updloadBindary' => 0, //1:以二进制方式上传;后端服务器以php://input接收;0则为传统方式上传 - 'uploadCheckChunk' => true, //开关断点续传,一个文件上传一半时中断,同一个文件再次上传到同一个位置时会接着之前的进度上传。 - 'paramRewrite' => false, //开启url 去除? 直接跟参数 - 'httpSendFile' => false, //调用webserver下载 http://www.laruence.com/2012/05/02/2613.html; - //https://www.lovelucy.info/x-sendfile-in-nginx.html - - 'pluginServer' => "http://api.kodcloud.com/?", - 'staticPath' => "/static/", //静态文件目录,可以配置到cdn; - 'pluginHost' => PLUGIN_HOST //静态文件目录 -); -// windows upload threads;兼容不支持并发的服务器 -if($config['systemOS'] == 'windows'){ - $config['settings']['updloadThreads'] = 1; -} -// windows iis bin上传有限制 -if(strstr($_SERVER['SERVER_SOFTWARE'],'-IIS')){ - $config['settings']['updloadBindary'] = 0; -} -//自适应https -if(substr(APP_HOST,0,8) == 'https://'){ - $config['settings']['pluginServer'] = str_replace("http://",'https://',$config['settings']['pluginServer']); -} - -$config['settings']['appType'] = array( - array('type' => 'tools','name' => 'app_group_tools','class' => 'icon-suitcase'), - array('type' => 'game','name' => 'app_group_game','class' => 'icon-dashboard'), - array('type' => 'movie','name' => 'app_group_movie','class' => 'icon-film'), - array('type' => 'music','name' => 'app_group_music','class' => 'icon-music'), - array('type' => 'life','name' => 'app_group_life','class' => 'icon-map-marker'), - array('type' => 'others','name' => 'app_group_others','class' => 'icon-ellipsis-horizontal'), -); -$config['defaultPlugins'] = array( - 'adminer','DPlayer','imageExif','jPlayer','officeLive','photoSwipe','picasa',//'pdfjs', - 'simpleClock','toolsCommon','VLCPlayer','webodf','yzOffice','zipView' -); - - -//初始化系统配置 -$config['settingSystemDefault'] = array( - 'systemPassword' => rand_string(20), - 'systemName' => "KodExplorer", - 'systemDesc' => "——可道云.资源管理器", - 'pathHidden' => "Thumb.db,.DS_Store,.gitignore,.git",//目录列表隐藏的项 - 'autoLogin' => "0", // 是否自动登录;登录用户为guest - 'needCheckCode' => "0", // 登陆是否开启验证码;默认关闭 - 'firstIn' => "explorer", // 登录后默认进入[explorer desktop,editor] - - 'newUserApp' => "trello,一起写office,微信,365日历,石墨文档,ProcessOn,计算器,icloud,OfficeConverter", - 'newUserFolder' => "document,desktop,pictures,music", - 'newGroupFolder' => "share,doc,pictures", //新建分组默认建立文件夹 - 'groupShareFolder' => "share", - - 'desktopFolder' => 'desktop', // 桌面文件夹别名 - 'versionType' => "A", // 版本 - 'rootListUser' => 0, // 组织架构根节点展示群组内用户 - 'rootListGroup' => 0, // 组织架构根节点展示子群组 - 'csrfProtect' => 0, // 开启csrf保护 - 'currentVersion' => KOD_VERSION, - - 'wallpageDesktop' => "1,2,3,4,5,6,7,8,9,10,11,12,13", - 'wallpageLogin' => "2,3,6,8,9,11,12", -); -//初始化默认菜单配置 -$config['settingSystemDefault']['menu'] = array( - array('name'=>'desktop','type'=>'system','url'=>'kod_index.php?desktop','target'=>'_self','use'=>'1'), - array('name'=>'explorer','type'=>'system','url'=>'kod_index.php?explorer','target'=>'_self','use'=>'1'), - array('name'=>'editor','type'=>'system','url'=>'kod_index.php?editor','target'=>'_self','use'=>'1') -); -if( strstr(I18n::defaultLang(),'zh') || strstr(I18n::getType(),'zh') ){ - $config['settingSystemDefault']['newGroupFolder'] = "share,文档,图片资料,视频资料"; - $config['settingSystemDefault']['newUserFolder'] = "我的文档,图片,视频,音乐"; -} - -//新用户初始化默认配置 -$config['settingDefault'] = array( - 'listType' => "icon", // list||icon||split - 'listSortField' => "name", // name||size||ext||mtime - 'listSortOrder' => "up", // asc||desc - 'fileIconSize' => "80", // 图标大小 - 'animateOpen' => "1", // dialog动画 - 'soundOpen' => "0", // 操作音效 - 'theme' => "win10", // app theme [mac,win7,win10,metro,metro_green,alpha] - 'wall' => "8", // wall picture - "fileRepeat" => "replace", // rename,replace,skip - "recycleOpen" => "1", // 1 | 0 代表是否开启 - 'resizeConfig' => - '{"filename":250,"filetype":80,"filesize":80,"filetime":215,"editorTreeWidth":200,"explorerTreeWidth":200}' -); -$config['editorDefault'] = array( - 'fontSize' => '14px', - 'theme' => 'tomorrow', - 'autoWrap' => 1, //自适应宽度换行 - 'autoComplete' => 1, - 'functionList' => 1, - "tabSize" => 4, - "softTab" => 1, - "displayChar" => 0, //是否显示特殊字符 - "fontFamily" => "Menlo", //字体 - "keyboardType" => "ace", //ace vim emacs - "autoSave" => 0, //自动保存 -); - - -// 多选项总配置 -// http://blog.sina.com.cn/s/blog_7981f91f01012wm7.html -// http://monsoongale.iteye.com/blog/1044431 -$config['settingAll'] = array( - 'language' => array( - "en" => array("English","英语","English"), - "zh-CN" => array("简体中文","简体中文","Simplified Chinese"), - "zh-TW" => array("繁體中文","繁體中文","Traditional Chinese"), - "ar" => array("العربية","'阿拉伯语","Arabic"), - "bg" => array("Български","保加利亚语","Bulgarian"), - "bn" => array("বাংলা","孟加拉语","Bengali"), - "ca" => array("Català","加泰罗尼亚语","Catalan"), - "cs" => array("Čeština","捷克语","Czech"), - "da" => array("Dansk","丹麦语","Danish"), - "de" => array("Deutsch","德语","German"), - "el" => array("Ελληνικά","希腊语","Greek"), - "es" => array("Español","西班牙语","Spanish"), - "et" => array("Eesti","爱沙尼亚语","Estonian"), - "fa" => array("فارسی","波斯语","Persian"), - "fi" => array("suomen","芬兰语","Finnish"), - "fr" => array("Français","法语","French"), - "gl" => array("Galego","加利西亚语","Galician"), - "hi" => array("हिन्दी","印地语","Hindi"), - "hr" => array("Hrvatski","克罗地亚语","Croatian"), - "hu" => array("Magyar","匈牙利语","Hungarian"), - "id" => array("Bahasa Indonesia","印尼语","Indonesian"), - "it" => array("Italiano","意大利语","Italian"), - "ja" => array("日本語","日语","Japanese"), - "ko" => array("한국어","韩语","Korean"), - "lt" => array("Lietuvių","立陶宛语","Lithuanian"), - "nl" => array("Nederlands","荷兰语","Dutch"), - "no" => array("Norsk","挪威语","Norwegian"), - "pl" => array("Polski","波兰语","Polish"), - "pt" => array("Português","葡萄牙语","Portuguese"), - "ro" => array("Limba Română","罗马尼亚语","Romanian"), - "ru" => array("Русский язык","俄语","Russian"), - "si" => array("සිංහල","僧伽罗语","Sinhala"), - "sk" => array("Slovenčina","捷克斯洛伐克语","Czechoslovakia"), - "sl" => array("Slovenski","斯洛文尼亚语'","Slovenian"), - "sr" => array("Српски","塞尔维亚语","Serbian"), - "sv" => array("Svenska","瑞典语","Swedish"), - "ta" => array("த‌மிழ்","泰米尔语","Tamil"), - "th" => array("ภาษาไทย","泰语","Thai"), - "tr" => array("Türkçe","土耳其语","Turkish"), - "uk" => array("Українська","乌克兰语","Ukrainian"), - "uz" => array("O'zbekiston","乌兹别克语","Uzbek-cyrillic"), - "vi" => array("Tiếng Việt","越南语","Vietnamese"), - ),//de el fi fr nl pt d/m/Y H:i - - 'themeall' => "mac,win10,win7,metro,metro_green,metro_purple,metro_pink,metro_orange,alpha_image,alpha_image_sun,alpha_image_sky,diy", - 'codethemeall' => "chrome,clouds,crimson_editor,eclipse,github,kuroir,solarized_light,tomorrow,xcode,ambiance,monokai,idle_fingers,pastel_on_dark,solarized_dark,twilight,tomorrow_night_blue,tomorrow_night_eighties", - 'codefontall' => 'Source Code Pro,Consolas,Courier,DejaVu Sans Mono,Liberation Mono,Menlo,Monaco,Monospace' -); - - -//权限配置;精确到需要做权限控制的控制器和方法 -//需要权限认证的Action;root组无视权限 -$config['roleSetting'] = array( - 'explorer' => array( - 'pathInfo','pathList','treeList','pathChmod', - 'mkdir','mkfile','pathRname','pathDelete','zip','unzip','unzipList', - 'pathCopy','pathCute','pathCuteDrag','pathCopyDrag','clipboard','pathPast', - 'serverDownload','fileUpload','search','pathDeleteRecycle', - 'fileDownload','zipDownload','fileDownloadRemove','fileProxy','fileSave','officeView','officeSave'), - 'app' => array('userApp','initApp','add','edit','del'),// - 'editor' => array('fileGet','fileSave'), - - 'user' => array('changePassword','commonJs'),//可以设立公用账户 - 'userShare' => array('set','del'), - 'setting' => array('set','systemSetting','phpInfo','systemTools'), - 'fav' => array('add','del','edit'), - - 'systemMember' => array('get','add','edit','doAction','getByName'), - 'systemGroup' => array('get','add','del','edit'), - 'systemRole' => array('add','del','edit','roleGroupAction'), - //不开放此功能【避免扩展名修改,导致系统安全问题】 - 'pluginApp' => array('index','appList','changeStatus','setConfig','install','unInstall') -); - -$config['pathRoleDefine'] = array( - 'read' => array( - 'list' => array('explorer.index','explorer.pathList','explorer.treeList','editor.index','pluginApp.to'), - 'info' => array('explorer.pathInfo','explorer.search'), - 'copy' => array('explorer.pathCopy'), - 'preview'=>array('explorer.image','explorer.unzipList','explorer.fileProxy','explorer.officeView','editor.fileGet'), - 'download'=>array('explorer.fileDownload','explorer.zipDownload','explorer.fileDownloadRemove'), - ), - 'write' => array( - 'add' => array('explorer.mkdir','explorer.mkfile','explorer.zip','explorer.unzip','app.userApp'), - 'edit' => array('explorer.officeSave','explorer.imageRotate','editor.fileSave','explorer.fileSave'), - 'change'=> array('explorer.pathRname','explorer.pathPast','explorer.pathCopyDrag','explorer.pathCuteDrag'), - 'upload'=> array('explorer.fileUpload','explorer.serverDownload'), - 'remove'=> array('explorer.pathDelete','explorer.pathCute'), - ) -); - -$config['pathRoleGroupDefault'] = array( - '1' => array( - "name" => "read", - "style" => "blue-light", - "display" => 1, - "actions" => array( - "read:list" => 1, - "read:info" => 1, - "read:copy" => 1, - "read:preview" => 1, - "read:download" => 1, - ) - ), - '2' => array( - "name" => "write", - 'style' => "blue-deep", - "display" => 1, - "actions" => array( - "read:list" => 1, - "read:info" => 1, - "read:copy" => 1, - "read:preview" => 1, - "read:download" => 1, - - "write:add" => 1, - "write:edit" => 1, - "write:change" => 1, - "write:upload" => 1, - "write:remove" => 1, - ) - ), -); - diff --git a/plugin/document/kod/config/setting_user.php b/plugin/document/kod/config/setting_user.php deleted file mode 100644 index f7026068b..000000000 --- a/plugin/document/kod/config/setting_user.php +++ /dev/null @@ -1,2 +0,0 @@ -{ - "listType": "icon", - "listSortField": "mtime", - "listSortOrder": "up", - "fileIconSize": "80", - "animateOpen": "1", - "soundOpen": "0", - "theme": "win10", - "wall": "https:\/\/wallpaper.infinitynewtab.com\/wallpaper\/1115.jpg", - "fileRepeat": "replace", - "recycleOpen": "1", - "resizeConfig": "{"filename":250,"filetype":80,"filesize":80,"filetime":215,"editorTreeWidth":200,"explorerTreeWidth":211}", - "kodAppDefault": "{"php":"aceEditor"}" -} \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/data/editor_config.php b/plugin/document/kod/data/User/admin/data/editor_config.php deleted file mode 100644 index ef108f1ed..000000000 --- a/plugin/document/kod/data/User/admin/data/editor_config.php +++ /dev/null @@ -1,13 +0,0 @@ -{ - "fontSize": "14px", - "theme": "tomorrow", - "autoWrap": 1, - "autoComplete": 1, - "functionList": 1, - "tabSize": 4, - "softTab": 1, - "displayChar": 0, - "fontFamily": "Menlo", - "keyboardType": "ace", - "autoSave": 0 -} \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/data/fav.php b/plugin/document/kod/data/User/admin/data/fav.php deleted file mode 100644 index 7c4c8408d..000000000 --- a/plugin/document/kod/data/User/admin/data/fav.php +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/data/share.php b/plugin/document/kod/data/User/admin/data/share.php deleted file mode 100644 index 7c4c8408d..000000000 --- a/plugin/document/kod/data/User/admin/data/share.php +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/home/desktop/ProcessOn.oexe b/plugin/document/kod/data/User/admin/home/desktop/ProcessOn.oexe deleted file mode 100644 index ebed3cff5..000000000 --- a/plugin/document/kod/data/User/admin/home/desktop/ProcessOn.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/processon.com\/diagrams","icon":"on.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1115.jpg ; filename =utf-8''1115.jpg b/plugin/document/kod/data/User/admin/home/desktop/wallpage/1115.jpg ; filename =utf-8''1115.jpg deleted file mode 100644 index 444549216..000000000 Binary files a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1115.jpg ; filename =utf-8''1115.jpg and /dev/null differ diff --git a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1288.jpg ; filename =utf-8''1288.jpg b/plugin/document/kod/data/User/admin/home/desktop/wallpage/1288.jpg ; filename =utf-8''1288.jpg deleted file mode 100644 index 2fb65d2a5..000000000 Binary files a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1288.jpg ; filename =utf-8''1288.jpg and /dev/null differ diff --git a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1444.jpg ; filename =utf-8''1444.jpg b/plugin/document/kod/data/User/admin/home/desktop/wallpage/1444.jpg ; filename =utf-8''1444.jpg deleted file mode 100644 index b5ebef41a..000000000 Binary files a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1444.jpg ; filename =utf-8''1444.jpg and /dev/null differ diff --git a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1517.jpg ; filename =utf-8''1517.jpg b/plugin/document/kod/data/User/admin/home/desktop/wallpage/1517.jpg ; filename =utf-8''1517.jpg deleted file mode 100644 index 7952a36e1..000000000 Binary files a/plugin/document/kod/data/User/admin/home/desktop/wallpage/1517.jpg ; filename =utf-8''1517.jpg and /dev/null differ diff --git a/plugin/document/kod/data/User/admin/home/desktop/wallpage/929.jpg ; filename =utf-8''929.jpg b/plugin/document/kod/data/User/admin/home/desktop/wallpage/929.jpg ; filename =utf-8''929.jpg deleted file mode 100644 index 2a4aa0dd7..000000000 Binary files a/plugin/document/kod/data/User/admin/home/desktop/wallpage/929.jpg ; filename =utf-8''929.jpg and /dev/null differ diff --git "a/plugin/document/kod/data/User/admin/home/desktop/\345\276\256\344\277\241.oexe" "b/plugin/document/kod/data/User/admin/home/desktop/\345\276\256\344\277\241.oexe" deleted file mode 100644 index 4d4e7d54d..000000000 --- "a/plugin/document/kod/data/User/admin/home/desktop/\345\276\256\344\277\241.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"app","content":"window.open(\"https:\/\/wx.qq.com\/\");","icon":"wechart.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/admin/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" "b/plugin/document/kod/data/User/admin/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" deleted file mode 100644 index 0e63a6aef..000000000 --- "a/plugin/document/kod/data/User/admin/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"https:\/\/shimo.im\/desktop","icon":"shimo.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/admin/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" "b/plugin/document/kod/data/User/admin/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" deleted file mode 100644 index bee88a951..000000000 --- "a/plugin/document/kod/data/User/admin/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/tools.jb51.net\/static\/skin\/flash\/773460494c0e2274d5f07e568fadf8e0.swf","icon":"calcu.png","width":"538","height":"600","simple":0,"resize":1} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/admin/recycle_kod/365\346\227\245\345\216\206.oexe" "b/plugin/document/kod/data/User/admin/recycle_kod/365\346\227\245\345\216\206.oexe" deleted file mode 100644 index 98e06580d..000000000 --- "a/plugin/document/kod/data/User/admin/recycle_kod/365\346\227\245\345\216\206.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/baidu365.duapp.com\/wnl.html?bd_user=855814346&bd_sig=a64e6e262e8cfa1c42dd716617be2102&canvas_pos=platform","icon":"365.png","width":"544","height":"440","simple":0,"resize":1} \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/recycle_kod/OfficeConverter.oexe b/plugin/document/kod/data/User/admin/recycle_kod/OfficeConverter.oexe deleted file mode 100644 index 443b43e38..000000000 --- a/plugin/document/kod/data/User/admin/recycle_kod/OfficeConverter.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/cn.office-converter.com\/","icon":"officeconvert.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/User/admin/recycle_kod/icloud.oexe b/plugin/document/kod/data/User/admin/recycle_kod/icloud.oexe deleted file mode 100644 index c17c8c2ef..000000000 --- a/plugin/document/kod/data/User/admin/recycle_kod/icloud.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"app","content":"window.open(\"https:\/\/www.icloud.com\/\");","icon":"icloud.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/admin/recycle_kod/\344\270\200\350\265\267\345\206\231office.oexe" "b/plugin/document/kod/data/User/admin/recycle_kod/\344\270\200\350\265\267\345\206\231office.oexe" deleted file mode 100644 index 609d4bd1f..000000000 --- "a/plugin/document/kod/data/User/admin/recycle_kod/\344\270\200\350\265\267\345\206\231office.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"https:\/\/yiqixie.com\/d\/home","icon":"yiqixie.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/User/index.html b/plugin/document/kod/data/User/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin/document/kod/data/User/project0/data/config.php b/plugin/document/kod/data/User/project0/data/config.php deleted file mode 100644 index 179280d38..000000000 --- a/plugin/document/kod/data/User/project0/data/config.php +++ /dev/null @@ -1,13 +0,0 @@ -{ - "listType": "icon", - "listSortField": "name", - "listSortOrder": "up", - "fileIconSize": "80", - "animateOpen": "1", - "soundOpen": "0", - "theme": "win10", - "wall": "8", - "fileRepeat": "replace", - "recycleOpen": "1", - "resizeConfig": "{\"filename\":250,\"filetype\":80,\"filesize\":80,\"filetime\":215,\"editorTreeWidth\":200,\"explorerTreeWidth\":200}" -} \ No newline at end of file diff --git a/plugin/document/kod/data/User/project0/data/editor_config.php b/plugin/document/kod/data/User/project0/data/editor_config.php deleted file mode 100644 index ef108f1ed..000000000 --- a/plugin/document/kod/data/User/project0/data/editor_config.php +++ /dev/null @@ -1,13 +0,0 @@ -{ - "fontSize": "14px", - "theme": "tomorrow", - "autoWrap": 1, - "autoComplete": 1, - "functionList": 1, - "tabSize": 4, - "softTab": 1, - "displayChar": 0, - "fontFamily": "Menlo", - "keyboardType": "ace", - "autoSave": 0 -} \ No newline at end of file diff --git a/plugin/document/kod/data/User/project0/data/fav.php b/plugin/document/kod/data/User/project0/data/fav.php deleted file mode 100644 index 7c4c8408d..000000000 --- a/plugin/document/kod/data/User/project0/data/fav.php +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/plugin/document/kod/data/User/project0/data/share.php b/plugin/document/kod/data/User/project0/data/share.php deleted file mode 100644 index 7c4c8408d..000000000 --- a/plugin/document/kod/data/User/project0/data/share.php +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git "a/plugin/document/kod/data/User/project0/home/desktop/365\346\227\245\345\216\206.oexe" "b/plugin/document/kod/data/User/project0/home/desktop/365\346\227\245\345\216\206.oexe" deleted file mode 100644 index 98e06580d..000000000 --- "a/plugin/document/kod/data/User/project0/home/desktop/365\346\227\245\345\216\206.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/baidu365.duapp.com\/wnl.html?bd_user=855814346&bd_sig=a64e6e262e8cfa1c42dd716617be2102&canvas_pos=platform","icon":"365.png","width":"544","height":"440","simple":0,"resize":1} \ No newline at end of file diff --git a/plugin/document/kod/data/User/project0/home/desktop/OfficeConverter.oexe b/plugin/document/kod/data/User/project0/home/desktop/OfficeConverter.oexe deleted file mode 100644 index 443b43e38..000000000 --- a/plugin/document/kod/data/User/project0/home/desktop/OfficeConverter.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/cn.office-converter.com\/","icon":"officeconvert.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/User/project0/home/desktop/ProcessOn.oexe b/plugin/document/kod/data/User/project0/home/desktop/ProcessOn.oexe deleted file mode 100644 index ebed3cff5..000000000 --- a/plugin/document/kod/data/User/project0/home/desktop/ProcessOn.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/processon.com\/diagrams","icon":"on.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/User/project0/home/desktop/fulltext-5.7.sql b/plugin/document/kod/data/User/project0/home/desktop/fulltext-5.7.sql deleted file mode 100644 index c0225a9a3..000000000 --- a/plugin/document/kod/data/User/project0/home/desktop/fulltext-5.7.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Mysql5.7及以上版本执行 --- version 1.0 - ---ALTER table issue_main add fulltext index fulltext_summary( `summary`) with parser ngram; ---ALTER table issue_main add fulltext index fulltext_summary_description( `summary`, `description`) with parser ngram; ---ALTER table project_main add fulltext index fulltext_name_description( `name`, `description`) with parser ngram; ---ALTER table project_main add fulltext index fulltext_name( `name`) with parser ngram; \ No newline at end of file diff --git "a/plugin/document/kod/data/User/project0/home/desktop/\344\270\200\350\265\267\345\206\231office.oexe" "b/plugin/document/kod/data/User/project0/home/desktop/\344\270\200\350\265\267\345\206\231office.oexe" deleted file mode 100644 index 609d4bd1f..000000000 --- "a/plugin/document/kod/data/User/project0/home/desktop/\344\270\200\350\265\267\345\206\231office.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"https:\/\/yiqixie.com\/d\/home","icon":"yiqixie.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/project0/home/desktop/\345\276\256\344\277\241.oexe" "b/plugin/document/kod/data/User/project0/home/desktop/\345\276\256\344\277\241.oexe" deleted file mode 100644 index 4d4e7d54d..000000000 --- "a/plugin/document/kod/data/User/project0/home/desktop/\345\276\256\344\277\241.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"app","content":"window.open(\"https:\/\/wx.qq.com\/\");","icon":"wechart.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/project0/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" "b/plugin/document/kod/data/User/project0/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" deleted file mode 100644 index 0e63a6aef..000000000 --- "a/plugin/document/kod/data/User/project0/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"https:\/\/shimo.im\/desktop","icon":"shimo.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/User/project0/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" "b/plugin/document/kod/data/User/project0/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" deleted file mode 100644 index bee88a951..000000000 --- "a/plugin/document/kod/data/User/project0/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/tools.jb51.net\/static\/skin\/flash\/773460494c0e2274d5f07e568fadf8e0.swf","icon":"calcu.png","width":"538","height":"600","simple":0,"resize":1} \ No newline at end of file diff --git a/plugin/document/kod/data/project/1/home/desktop/ProcessOn.oexe b/plugin/document/kod/data/project/1/home/desktop/ProcessOn.oexe deleted file mode 100644 index ebed3cff5..000000000 --- a/plugin/document/kod/data/project/1/home/desktop/ProcessOn.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/processon.com\/diagrams","icon":"on.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/project/1/home/desktop/wallpage/1115.jpg ; filename =utf-8''1115.jpg b/plugin/document/kod/data/project/1/home/desktop/wallpage/1115.jpg ; filename =utf-8''1115.jpg deleted file mode 100644 index 444549216..000000000 Binary files a/plugin/document/kod/data/project/1/home/desktop/wallpage/1115.jpg ; filename =utf-8''1115.jpg and /dev/null differ diff --git a/plugin/document/kod/data/project/1/home/desktop/wallpage/1288.jpg ; filename =utf-8''1288.jpg b/plugin/document/kod/data/project/1/home/desktop/wallpage/1288.jpg ; filename =utf-8''1288.jpg deleted file mode 100644 index 2fb65d2a5..000000000 Binary files a/plugin/document/kod/data/project/1/home/desktop/wallpage/1288.jpg ; filename =utf-8''1288.jpg and /dev/null differ diff --git a/plugin/document/kod/data/project/1/home/desktop/wallpage/1444.jpg ; filename =utf-8''1444.jpg b/plugin/document/kod/data/project/1/home/desktop/wallpage/1444.jpg ; filename =utf-8''1444.jpg deleted file mode 100644 index b5ebef41a..000000000 Binary files a/plugin/document/kod/data/project/1/home/desktop/wallpage/1444.jpg ; filename =utf-8''1444.jpg and /dev/null differ diff --git a/plugin/document/kod/data/project/1/home/desktop/wallpage/1517.jpg ; filename =utf-8''1517.jpg b/plugin/document/kod/data/project/1/home/desktop/wallpage/1517.jpg ; filename =utf-8''1517.jpg deleted file mode 100644 index 7952a36e1..000000000 Binary files a/plugin/document/kod/data/project/1/home/desktop/wallpage/1517.jpg ; filename =utf-8''1517.jpg and /dev/null differ diff --git a/plugin/document/kod/data/project/1/home/desktop/wallpage/929.jpg ; filename =utf-8''929.jpg b/plugin/document/kod/data/project/1/home/desktop/wallpage/929.jpg ; filename =utf-8''929.jpg deleted file mode 100644 index 2a4aa0dd7..000000000 Binary files a/plugin/document/kod/data/project/1/home/desktop/wallpage/929.jpg ; filename =utf-8''929.jpg and /dev/null differ diff --git "a/plugin/document/kod/data/project/1/home/desktop/\345\276\256\344\277\241.oexe" "b/plugin/document/kod/data/project/1/home/desktop/\345\276\256\344\277\241.oexe" deleted file mode 100644 index 4d4e7d54d..000000000 --- "a/plugin/document/kod/data/project/1/home/desktop/\345\276\256\344\277\241.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"app","content":"window.open(\"https:\/\/wx.qq.com\/\");","icon":"wechart.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/project/1/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" "b/plugin/document/kod/data/project/1/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" deleted file mode 100644 index 0e63a6aef..000000000 --- "a/plugin/document/kod/data/project/1/home/desktop/\347\237\263\345\242\250\346\226\207\346\241\243.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"https:\/\/shimo.im\/desktop","icon":"shimo.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/project/1/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" "b/plugin/document/kod/data/project/1/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" deleted file mode 100644 index bee88a951..000000000 --- "a/plugin/document/kod/data/project/1/home/desktop/\350\256\241\347\256\227\345\231\250.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/tools.jb51.net\/static\/skin\/flash\/773460494c0e2274d5f07e568fadf8e0.swf","icon":"calcu.png","width":"538","height":"600","simple":0,"resize":1} \ No newline at end of file diff --git "a/plugin/document/kod/data/project/1/home/\346\210\221\347\232\204\346\226\207\346\241\243/xxxxxxxx.md" "b/plugin/document/kod/data/project/1/home/\346\210\221\347\232\204\346\226\207\346\241\243/xxxxxxxx.md" deleted file mode 100644 index 4ed00cb82..000000000 --- "a/plugin/document/kod/data/project/1/home/\346\210\221\347\232\204\346\226\207\346\241\243/xxxxxxxx.md" +++ /dev/null @@ -1 +0,0 @@ -xxxxxxxxxxxxxxxxxxxxxxx \ No newline at end of file diff --git "a/plugin/document/kod/data/project/1/recycle_kod/365\346\227\245\345\216\206.oexe" "b/plugin/document/kod/data/project/1/recycle_kod/365\346\227\245\345\216\206.oexe" deleted file mode 100644 index 98e06580d..000000000 --- "a/plugin/document/kod/data/project/1/recycle_kod/365\346\227\245\345\216\206.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/baidu365.duapp.com\/wnl.html?bd_user=855814346&bd_sig=a64e6e262e8cfa1c42dd716617be2102&canvas_pos=platform","icon":"365.png","width":"544","height":"440","simple":0,"resize":1} \ No newline at end of file diff --git a/plugin/document/kod/data/project/1/recycle_kod/OfficeConverter.oexe b/plugin/document/kod/data/project/1/recycle_kod/OfficeConverter.oexe deleted file mode 100644 index 443b43e38..000000000 --- a/plugin/document/kod/data/project/1/recycle_kod/OfficeConverter.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"http:\/\/cn.office-converter.com\/","icon":"officeconvert.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/project/1/recycle_kod/icloud.oexe b/plugin/document/kod/data/project/1/recycle_kod/icloud.oexe deleted file mode 100644 index c17c8c2ef..000000000 --- a/plugin/document/kod/data/project/1/recycle_kod/icloud.oexe +++ /dev/null @@ -1 +0,0 @@ -{"type":"app","content":"window.open(\"https:\/\/www.icloud.com\/\");","icon":"icloud.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git "a/plugin/document/kod/data/project/1/recycle_kod/\344\270\200\350\265\267\345\206\231office.oexe" "b/plugin/document/kod/data/project/1/recycle_kod/\344\270\200\350\265\267\345\206\231office.oexe" deleted file mode 100644 index 609d4bd1f..000000000 --- "a/plugin/document/kod/data/project/1/recycle_kod/\344\270\200\350\265\267\345\206\231office.oexe" +++ /dev/null @@ -1 +0,0 @@ -{"type":"url","content":"https:\/\/yiqixie.com\/d\/home","icon":"yiqixie.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0} \ No newline at end of file diff --git a/plugin/document/kod/data/session/index.html b/plugin/document/kod/data/session/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin/document/kod/data/system/.gitignore b/plugin/document/kod/data/system/.gitignore deleted file mode 100644 index 89b752aa8..000000000 --- a/plugin/document/kod/data/system/.gitignore +++ /dev/null @@ -1 +0,0 @@ -system_member.php \ No newline at end of file diff --git a/plugin/document/kod/data/system/apps.php b/plugin/document/kod/data/system/apps.php deleted file mode 100644 index 04696c0be..000000000 --- a/plugin/document/kod/data/system/apps.php +++ /dev/null @@ -1,355 +0,0 @@ -{ - "时钟": { - "type": "url", - "content": "http:\/\/hoorayos.com\/demo\/extapp\/clock\/index.php", - "group": "tools", - "name": "时钟", - "desc": "时钟挂件", - "icon": "time.png", - "width": "140", - "height": "140", - "simple": 1, - "resize": 0 - }, - "365日历": { - "type": "url", - "content": "http:\/\/baidu365.duapp.com\/wnl.html?bd_user=855814346&bd_sig=a64e6e262e8cfa1c42dd716617be2102&canvas_pos=platform", - "group": "life", - "name": "365日历", - "desc": "365日历", - "icon": "365.png", - "width": "544", - "height": "440", - "simple": 0, - "resize": 1 - }, - "快递查询": { - "type": "url", - "content": "http:\/\/baidu.kuaidi100.com\/index2.html", - "group": "tools", - "name": "快递查询", - "desc": "", - "icon": "kuaidi.gif", - "width": "545", - "height": "420", - "simple": 0, - "resize": 1 - }, - "黑8对决": { - "type": "url", - "content": "http:\/\/swf.baoku.360.cn\/swf\/20110921\/1\/ball.swf", - "group": "game", - "name": "黑8对决", - "desc": "经典台球", - "icon": "ball8.png", - "width": "650", - "height": "500", - "simple": 0, - "resize": 1 - }, - "百度随心听": { - "type": "url", - "content": "http:\/\/fm.baidu.com\/?embed=hao123", - "group": "music", - "name": "百度随心听", - "desc": "百度随心听", - "icon": "baidu.png", - "width": "980", - "height": "550", - "simple": 0, - "resize": 1 - }, - "计算器": { - "type": "url", - "content": "http:\/\/tools.jb51.net\/static\/skin\/flash\/773460494c0e2274d5f07e568fadf8e0.swf", - "group": "tools", - "name": "计算器", - "desc": "计算器", - "icon": "calcu.png", - "width": "538", - "height": "600", - "simple": 0, - "resize": 1 - }, - "天气": { - "type": "url", - "content": "http:\/\/hoorayos.com\/demo\/extapp\/weather\/index.php", - "group": "tools", - "name": "天气", - "desc": "天气预报", - "icon": "weather.png", - "width": "200", - "height": "300", - "simple": 1, - "resize": 0 - }, - "js在线压缩": { - "type": "url", - "content": "http:\/\/tool.lu\/js\/", - "group": "others", - "name": "js在线压缩", - "desc": "js在线压缩", - "icon": "js.png", - "width": "860", - "height": "620", - "simple": 0, - "resize": 1 - }, - "中国象棋": { - "type": "url", - "content": "http:\/\/sda.4399.com\/4399swf\/upload_swf\/ftp14\/cwb\/20140401\/y2.swf", - "group": "game", - "name": "中国象棋", - "desc": "中国象棋", - "icon": "xiangqi.jpg", - "width": "650", - "height": "502", - "simple": 0, - "resize": 1 - }, - "音悦台": { - "type": "url", - "content": "http:\/\/www.yinyuetai.com\/baidu\/index", - "group": "movie", - "name": "音悦台", - "desc": "音悦台", - "icon": "yingyuetai.png", - "width": "810", - "height": "460", - "simple": 0, - "resize": 1 - }, - "高德地图": { - "type": "url", - "content": "http:\/\/ditu.amap.com\/", - "group": "life", - "name": "高德地图", - "desc": "gaode map", - "icon": "map.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1 - }, - "有道词典": { - "type": "url", - "content": "http:\/\/dict.youdao.com\/app\/baidu", - "group": "tools", - "name": "有道词典", - "desc": "", - "icon": "youdao.jpg", - "width": "548", - "height": "490", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "豆瓣电台": { - "type": "url", - "content": "http:\/\/douban.fm\/partner\/qq_plus", - "group": "music", - "name": "豆瓣电台", - "desc": "豆瓣电台", - "icon": "douban.png", - "width": "545", - "height": "460", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "Web PhotoShop": { - "type": "url", - "content": "http:\/\/www.kantu.com\/tool\/ps\/", - "group": "tools", - "name": "Web PhotoShop", - "desc": "ps", - "icon": "ps.png", - "width": "800", - "height": "560", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "Vector Magic": { - "type": "url", - "content": "https:\/\/zh.vectormagic.com\/", - "group": "tools", - "name": "Vector Magic", - "desc": "转换成矢量图", - "icon": "vector.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "Kingdom Rush": { - "type": "url", - "content": "http:\/\/s4.4399.com:8080\/4399swf\/upload_swf\/ftp6\/liwen\/20110913\/4.swf", - "group": "game", - "name": "Kingdom Rush", - "desc": "皇家守卫军", - "icon": "kingdom.png", - "width": "700", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "腾讯canvas": { - "type": "app", - "content": "window.open(\"http:\/\/canvas.qq.com\/templates\");", - "group": "tools", - "name": "腾讯canvas", - "desc": "在线图片设计工具", - "icon": "qqcanvas.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "OfficeConverter": { - "type": "url", - "content": "http:\/\/cn.office-converter.com\/", - "group": "tools", - "name": "OfficeConverter", - "desc": "免费在线文件转换器", - "icon": "officeconvert.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "pptv直播": { - "type": "url", - "content": "http:\/\/app.aplus.pptv.com\/tgapp\/baidu\/live\/main", - "group": "movie", - "name": "pptv直播", - "desc": "", - "icon": "pptv.jpg", - "width": "798", - "height": "534", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "搜狐影视": { - "type": "url", - "content": "http:\/\/tv.sohu.com\/upload\/sohuapp\/index.html?api_key=9ca7e3cdef8af010b947f4934a427a2c", - "group": "movie", - "name": "搜狐影视", - "desc": "搜狐影视", - "icon": "souhu.jpg", - "width": "798", - "height": "583", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "百度脑图": { - "type": "url", - "content": "http:\/\/naotu.baidu.com\/", - "group": "tools", - "name": "百度脑图", - "desc": "在线思维导图", - "icon": "naotu.png", - "width": "80%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "网易云音乐": { - "type": "app", - "content": "window.open(\"http:\/\/music.163.com\/#\/my\/\");", - "group": "music", - "name": "网易云音乐", - "desc": "强大", - "icon": "wangyi.jpg", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "创可贴": { - "type": "url", - "content": "https:\/\/www.chuangkit.com\/startdesign", - "group": "tools", - "name": "创可贴", - "desc": "免费的在线设计工具", - "icon": "chuangketie.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "trello": { - "type": "app", - "content": "window.open(\"https:\/\/trello.com\/\");", - "group": "tools", - "name": "trello", - "desc": "项目管理云平台", - "icon": "trello.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "一起写office": { - "type": "url", - "content": "https:\/\/yiqixie.com\/d\/home", - "group": "tools", - "name": "一起写office", - "desc": "在线协作office", - "icon": "yiqixie.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "ProcessOn": { - "type": "url", - "content": "http:\/\/processon.com\/diagrams", - "group": "tools", - "name": "ProcessOn", - "desc": "免费在线作图,实时协作", - "icon": "on.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "石墨文档": { - "type": "url", - "content": "https:\/\/shimo.im\/desktop", - "group": "tools", - "name": "石墨文档", - "desc": "shimo", - "icon": "shimo.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "微信": { - "type": "app", - "content": "window.open(\"https:\/\/wx.qq.com\/\");", - "group": "tools", - "name": "微信", - "desc": "微信网页版", - "icon": "wechart.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/day/20200511/apps.php b/plugin/document/kod/data/system/backup/day/20200511/apps.php deleted file mode 100644 index 9bd2e00f7..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/apps.php +++ /dev/null @@ -1 +0,0 @@ -{"\u65f6\u949f":{"type":"url","content":"http:\/\/hoorayos.com\/demo\/extapp\/clock\/index.php","group":"tools","name":"\u65f6\u949f","desc":"\u65f6\u949f\u6302\u4ef6","icon":"time.png","width":"140","height":"140","simple":1,"resize":0},"365\u65e5\u5386":{"type":"url","content":"http:\/\/baidu365.duapp.com\/wnl.html?bd_user=855814346&bd_sig=a64e6e262e8cfa1c42dd716617be2102&canvas_pos=platform","group":"life","name":"365\u65e5\u5386","desc":"365\u65e5\u5386","icon":"365.png","width":"544","height":"440","simple":0,"resize":1},"\u5feb\u9012\u67e5\u8be2":{"type":"url","content":"http:\/\/baidu.kuaidi100.com\/index2.html","group":"tools","name":"\u5feb\u9012\u67e5\u8be2","desc":"","icon":"kuaidi.gif","width":"545","height":"420","simple":0,"resize":1},"\u9ed18\u5bf9\u51b3":{"type":"url","content":"http:\/\/swf.baoku.360.cn\/swf\/20110921\/1\/ball.swf","group":"game","name":"\u9ed18\u5bf9\u51b3","desc":"\u7ecf\u5178\u53f0\u7403","icon":"ball8.png","width":"650","height":"500","simple":0,"resize":1},"\u767e\u5ea6\u968f\u5fc3\u542c":{"type":"url","content":"http:\/\/fm.baidu.com\/?embed=hao123","group":"music","name":"\u767e\u5ea6\u968f\u5fc3\u542c","desc":"\u767e\u5ea6\u968f\u5fc3\u542c","icon":"baidu.png","width":"980","height":"550","simple":0,"resize":1},"\u8ba1\u7b97\u5668":{"type":"url","content":"http:\/\/tools.jb51.net\/static\/skin\/flash\/773460494c0e2274d5f07e568fadf8e0.swf","group":"tools","name":"\u8ba1\u7b97\u5668","desc":"\u8ba1\u7b97\u5668","icon":"calcu.png","width":"538","height":"600","simple":0,"resize":1},"\u5929\u6c14":{"type":"url","content":"http:\/\/hoorayos.com\/demo\/extapp\/weather\/kod_index.php","group":"tools","name":"\u5929\u6c14","desc":"\u5929\u6c14\u9884\u62a5","icon":"weather.png","width":"200","height":"300","simple":1,"resize":0},"js\u5728\u7ebf\u538b\u7f29":{"type":"url","content":"http:\/\/tool.lu\/js\/","group":"others","name":"js\u5728\u7ebf\u538b\u7f29","desc":"js\u5728\u7ebf\u538b\u7f29","icon":"js.png","width":"860","height":"620","simple":0,"resize":1},"\u4e2d\u56fd\u8c61\u68cb":{"type":"url","content":"http:\/\/sda.4399.com\/4399swf\/upload_swf\/ftp14\/cwb\/20140401\/y2.swf","group":"game","name":"\u4e2d\u56fd\u8c61\u68cb","desc":"\u4e2d\u56fd\u8c61\u68cb","icon":"xiangqi.jpg","width":"650","height":"502","simple":0,"resize":1},"\u97f3\u60a6\u53f0":{"type":"url","content":"http:\/\/www.yinyuetai.com\/baidu\/index","group":"movie","name":"\u97f3\u60a6\u53f0","desc":"\u97f3\u60a6\u53f0","icon":"yingyuetai.png","width":"810","height":"460","simple":0,"resize":1},"\u9ad8\u5fb7\u5730\u56fe":{"type":"url","content":"http:\/\/ditu.amap.com\/","group":"life","name":"\u9ad8\u5fb7\u5730\u56fe","desc":"gaode map","icon":"map.png","width":"800","height":"600","simple":0,"resize":1},"\u6709\u9053\u8bcd\u5178":{"type":"url","content":"http:\/\/dict.youdao.com\/app\/baidu","group":"tools","name":"\u6709\u9053\u8bcd\u5178","desc":"","icon":"youdao.jpg","width":"548","height":"490","simple":0,"resize":1,"undefined":0},"\u8c46\u74e3\u7535\u53f0":{"type":"url","content":"http:\/\/douban.fm\/partner\/qq_plus","group":"music","name":"\u8c46\u74e3\u7535\u53f0","desc":"\u8c46\u74e3\u7535\u53f0","icon":"douban.png","width":"545","height":"460","simple":0,"resize":1,"undefined":0},"iqiyi\u5f71\u89c6":{"type":"url","content":"http:\/\/www.qiyi.com\/mini\/baidu.html?from115","group":"movie","name":"iqiyi\u5f71\u89c6","desc":"iqiyi\u5f71\u89c6","icon":"iqiyi.png","width":"1000","height":"643","simple":0,"resize":1,"undefined":0},"Web PhotoShop":{"type":"url","content":"http:\/\/www.kantu.com\/tool\/ps\/","group":"tools","name":"Web PhotoShop","desc":"ps","icon":"ps.png","width":"800","height":"560","simple":0,"resize":1,"undefined":0},"icloud":{"type":"app","content":"window.open(\"https:\/\/www.icloud.com\/\");","group":"others","name":"icloud","desc":"icloud","icon":"icloud.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0},"\u8fc5\u6377\u6587\u6863\u8f6c\u6362":{"type":"url","content":"http:\/\/app.xunjiepdf.com\/","group":"tools","name":"\u8fc5\u6377\u6587\u6863\u8f6c\u6362","desc":"\u5404\u7c7b\u6587\u4ef6\u683c\u5f0f\u8f6c\u6362","icon":"xunjie.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"Vector Magic":{"type":"url","content":"https:\/\/zh.vectormagic.com\/","group":"tools","name":"Vector Magic","desc":"\u8f6c\u6362\u6210\u77e2\u91cf\u56fe","icon":"vector.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"Kingdom Rush":{"type":"url","content":"http:\/\/s4.4399.com:8080\/4399swf\/upload_swf\/ftp6\/liwen\/20110913\/4.swf","group":"game","name":"Kingdom Rush","desc":"\u7687\u5bb6\u5b88\u536b\u519b","icon":"kingdom.png","width":"700","height":"600","simple":0,"resize":1,"undefined":0},"\u817e\u8bafcanvas":{"type":"app","content":"window.open(\"http:\/\/canvas.qq.com\/templates\");","group":"tools","name":"\u817e\u8bafcanvas","desc":"\u5728\u7ebf\u56fe\u7247\u8bbe\u8ba1\u5de5\u5177","icon":"qqcanvas.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0},"OfficeConverter":{"type":"url","content":"http:\/\/cn.office-converter.com\/","group":"tools","name":"OfficeConverter","desc":"\u514d\u8d39\u5728\u7ebf\u6587\u4ef6\u8f6c\u6362\u5668","icon":"officeconvert.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"pptv\u76f4\u64ad":{"type":"url","content":"http:\/\/app.aplus.pptv.com\/tgapp\/baidu\/live\/main","group":"movie","name":"pptv\u76f4\u64ad","desc":"","icon":"pptv.jpg","width":"798","height":"534","simple":0,"resize":1,"undefined":0},"\u641c\u72d0\u5f71\u89c6":{"type":"url","content":"http:\/\/tv.sohu.com\/upload\/sohuapp\/index.html?api_key=9ca7e3cdef8af010b947f4934a427a2c","group":"movie","name":"\u641c\u72d0\u5f71\u89c6","desc":"\u641c\u72d0\u5f71\u89c6","icon":"souhu.jpg","width":"798","height":"583","simple":0,"resize":1,"undefined":0},"\u767e\u5ea6\u8111\u56fe":{"type":"url","content":"http:\/\/naotu.baidu.com\/","group":"tools","name":"\u767e\u5ea6\u8111\u56fe","desc":"\u5728\u7ebf\u601d\u7ef4\u5bfc\u56fe","icon":"naotu.png","width":"80%","height":"80%","simple":0,"resize":1,"undefined":0},"\u7f51\u6613\u4e91\u97f3\u4e50":{"type":"app","content":"window.open(\"http:\/\/music.163.com\/#\/my\/\");","group":"music","name":"\u7f51\u6613\u4e91\u97f3\u4e50","desc":"\u5f3a\u5927","icon":"wangyi.jpg","width":"800","height":"600","simple":0,"resize":1,"undefined":0},"\u521b\u53ef\u8d34":{"type":"url","content":"https:\/\/www.chuangkit.com\/startdesign","group":"tools","name":"\u521b\u53ef\u8d34","desc":"\u514d\u8d39\u7684\u5728\u7ebf\u8bbe\u8ba1\u5de5\u5177","icon":"chuangketie.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"trello":{"type":"app","content":"window.open(\"https:\/\/trello.com\/\");","group":"tools","name":"trello","desc":"\u9879\u76ee\u7ba1\u7406\u4e91\u5e73\u53f0","icon":"trello.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0},"\u4e00\u8d77\u5199office":{"type":"url","content":"https:\/\/yiqixie.com\/d\/home","group":"tools","name":"\u4e00\u8d77\u5199office","desc":"\u5728\u7ebf\u534f\u4f5coffice","icon":"yiqixie.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"ProcessOn":{"type":"url","content":"http:\/\/processon.com\/diagrams","group":"tools","name":"ProcessOn","desc":"\u514d\u8d39\u5728\u7ebf\u4f5c\u56fe\uff0c\u5b9e\u65f6\u534f\u4f5c","icon":"on.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"\u77f3\u58a8\u6587\u6863":{"type":"url","content":"https:\/\/shimo.im\/desktop","group":"tools","name":"\u77f3\u58a8\u6587\u6863","desc":"shimo","icon":"shimo.png","width":"90%","height":"80%","simple":0,"resize":1,"undefined":0},"\u5fae\u4fe1":{"type":"app","content":"window.open(\"https:\/\/wx.qq.com\/\");","group":"tools","name":"\u5fae\u4fe1","desc":"\u5fae\u4fe1\u7f51\u9875\u7248","icon":"wechart.png","width":"800","height":"600","simple":0,"resize":1,"undefined":0}} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/day/20200511/desktop_app.php b/plugin/document/kod/data/system/backup/day/20200511/desktop_app.php deleted file mode 100644 index 3377fba47..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/desktop_app.php +++ /dev/null @@ -1,59 +0,0 @@ - array( - "type" => "app", - "content" => "core.explorer('','".LNG('my_computer')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/computer.png", - "name" => LNG('my_computer'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'recycle' => array( - "type" => "app", - "content" => "core.explorer('".KOD_USER_RECYCLE."','".LNG('recycle')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/recycle.png", - "name" => LNG('recycle'), - "menuType" => "systemBox menu-recycle-button", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'PluginCenter' => array( - "type" => "app", - "content" => "core.openWindowBig('./kod_index.php?pluginApp/index','".LNG('PluginCenter')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/plugins.png", - "name" => LNG('PluginCenter'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'setting' => array( - "type" => "app", - "content" => "core.setting();", - "icon" => STATIC_PATH."images/file_icon/icon_others/setting.png", - "name" => LNG('setting'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "/", - "resize" => 1 - ), - 'appStore' => array( - "type" => "app", - "content" => "core.appStore();", - "icon" => STATIC_PATH."images/file_icon/icon_others/appStore.png", - "name" => LNG('app_store'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ) -); - -//管理员插件中心 -if(!$GLOBALS['isRoot']){ - unset($desktopApps['PluginCenter']); -} -return $desktopApps; diff --git a/plugin/document/kod/data/system/backup/day/20200511/system_group.php b/plugin/document/kod/data/system/backup/day/20200511/system_group.php deleted file mode 100644 index 39441c6ca..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/system_group.php +++ /dev/null @@ -1 +0,0 @@ -{"1":{"groupID":1,"name":"public","parentID":"","children":"","config":{"sizeMax":0,"sizeUse":0},"path":"public","createTime":""}} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/day/20200511/system_member.php b/plugin/document/kod/data/system/backup/day/20200511/system_member.php deleted file mode 100644 index 8450ae982..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/system_member.php +++ /dev/null @@ -1 +0,0 @@ -{"1":{"userID":"1","name":"admin","password":"21232f297a57a5a743894a0e4a801fc3","role":"1","config":{"sizeMax":1,"sizeUse":5369},"groupInfo":{"1":"write"},"path":"admin","status":1,"createTime":"","sizeMax":"1","lastLogin":""},"100":{"userID":"100","name":"demo","password":"fe01ce2a7fbac8fafaed7c982a04e229","role":"2","config":{"sizeMax":5,"sizeUse":1048576},"groupInfo":{"1":"write"},"path":"demo","status":1,"lastLogin":"","createTime":""},"101":{"userID":"101","name":"guest","password":"084e0343a0486ff05530df6c705c8bb4","role":"100","config":{"sizeMax":0.1,"sizeUse":1048576},"groupInfo":{"1":"read"},"path":"guest","status":1,"lastLogin":"","createTime":""}} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/day/20200511/system_role.php b/plugin/document/kod/data/system/backup/day/20200511/system_role.php deleted file mode 100644 index a413e0da7..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/system_role.php +++ /dev/null @@ -1 +0,0 @@ -{"1":{"name":"Administrator","extNotAllow":"","explorer.mkdir":0,"explorer.mkfile":0,"explorer.pathRname":0,"explorer.pathDelete":0,"explorer.zip":0,"explorer.unzip":0,"explorer.pathCopy":0,"explorer.pathChmod":0,"explorer.pathCute":0,"explorer.pathCuteDrag":0,"explorer.pathCopyDrag":0,"explorer.clipboard":0,"explorer.pathPast":0,"explorer.pathInfo":0,"explorer.serverDownload":0,"explorer.fileUpload":0,"explorer.search":0,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":0,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":0,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":0,"editor.fileGet":0,"editor.fileSave":0,"userShare.set":0,"userShare.del":0,"setting.set":0,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":0,"fav.del":0,"fav.edit":0,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0},"2":{"name":"default","extNotAllow":"htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm","explorer.mkdir":1,"explorer.mkfile":1,"explorer.pathRname":1,"explorer.pathDelete":1,"explorer.zip":1,"explorer.unzip":1,"explorer.pathCopy":1,"explorer.pathChmod":0,"explorer.pathCute":1,"explorer.pathCuteDrag":1,"explorer.pathCopyDrag":0,"explorer.clipboard":1,"explorer.pathPast":1,"explorer.pathInfo":1,"explorer.serverDownload":1,"explorer.fileUpload":1,"explorer.search":1,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":1,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":1,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":1,"editor.fileGet":0,"editor.fileSave":1,"userShare.set":1,"userShare.del":1,"setting.set":1,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":1,"fav.del":1,"fav.edit":1,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0},"100":{"name":"guest","extNotAllow":"htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm","explorer.mkdir":0,"explorer.mkfile":0,"explorer.pathRname":0,"explorer.pathDelete":0,"explorer.zip":0,"explorer.unzip":0,"explorer.pathCopy":0,"explorer.pathChmod":0,"explorer.pathCute":0,"explorer.pathCuteDrag":0,"explorer.pathCopyDrag":0,"explorer.clipboard":0,"explorer.pathPast":0,"explorer.pathInfo":0,"explorer.serverDownload":0,"explorer.fileUpload":0,"explorer.search":1,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":0,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":0,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":0,"editor.fileGet":0,"editor.fileSave":0,"userShare.set":0,"userShare.del":0,"setting.set":0,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":0,"fav.del":0,"fav.edit":0,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0}} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/day/20200511/system_role_group.php b/plugin/document/kod/data/system/backup/day/20200511/system_role_group.php deleted file mode 100644 index 62c8495a8..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/system_role_group.php +++ /dev/null @@ -1,31 +0,0 @@ -{ - "1": { - "name": "read", - "style": "blue-light", - "display": 1, - "actions": { - "read:list": 1, - "read:info": 1, - "read:copy": 1, - "read:preview": 1, - "read:download": 1 - } - }, - "2": { - "name": "write", - "style": "blue-deep", - "display": 1, - "actions": { - "read:list": 1, - "read:info": 1, - "read:copy": 1, - "read:preview": 1, - "read:download": 1, - "write:add": 1, - "write:edit": 1, - "write:change": 1, - "write:upload": 1, - "write:remove": 1 - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/day/20200511/system_setting.php b/plugin/document/kod/data/system/backup/day/20200511/system_setting.php deleted file mode 100644 index 11074cfcb..000000000 --- a/plugin/document/kod/data/system/backup/day/20200511/system_setting.php +++ /dev/null @@ -1,203 +0,0 @@ -{ - "systemPassword": "WNDkey3am9AYdVbDbkn8", - "systemName": "KodExplorer", - "systemDesc": "——可道云.资源管理器", - "pathHidden": "Thumb.db,.DS_Store,.gitignore,.git", - "autoLogin": "0", - "needCheckCode": "0", - "firstIn": "explorer", - "newUserApp": "trello,一起写office,微信,365日历,石墨文档,ProcessOn,计算器,icloud,OfficeConverter", - "newUserFolder": "我的文档,图片,视频,音乐", - "newGroupFolder": "share,文档,图片资料,视频资料", - "groupShareFolder": "share", - "desktopFolder": "desktop", - "versionType": "A", - "rootListUser": 0, - "rootListGroup": 0, - "csrfProtect": 0, - "currentVersion": "4.39", - "wallpageDesktop": "1,2,3,4,5,6,7,8,9,10,11,12,13", - "wallpageLogin": "2,3,6,8,9,11,12", - "menu": [ - { - "name": "desktop", - "type": "system", - "url": "kod_index.php?desktop", - "target": "_self", - "use": "1" - }, - { - "name": "explorer", - "type": "system", - "url": "kod_index.php?explorer", - "target": "_self", - "use": "1" - }, - { - "name": "editor", - "type": "system", - "url": "kod_index.php?editor", - "target": "_self", - "use": "1" - } - ], - "pluginList": { - "adminer": { - "id": "adminer", - "regiest": { - "templateCommonHeader": "adminerPlugin.addMenu" - }, - "status": 1, - "config": { - "pluginAuth": "role:1", - "menuSubMenu": 1 - } - }, - "DPlayer": { - "id": "DPlayer", - "regiest": { - "user.commonJs.insert": "DPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "subtitle": "0", - "fileSort": 200, - "fileExt": "mp4,m4v,flv,mov,f4v,ogv,webm,webmv,mkv" - } - }, - "imageExif": { - "id": "imageExif", - "regiest": { - "user.commonJs.insert": "imageExifPlugin.echoJs", - "share.image": "imageExifPlugin.imageCheck", - "explorer.image": "imageExifPlugin.imageCheck" - }, - "status": 1, - "config": { - "pluginAuth": "all:1" - } - }, - "jPlayer": { - "id": "jPlayer", - "regiest": { - "user.commonJs.insert": "jPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "mp3,wav,m4a,aac,oga,ogg,webma,mp4,m4v,flv,mov,f4v,ogv,webm,webmv,m3u8a,m3ua,flac,fla,rtmp,rtmpa", - "fileSort": 10 - } - }, - "officeLive": { - "id": "officeLive", - "regiest": { - "user.commonJs.insert": "officeLivePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "pluginAuthOpen": 0, - "openWith": "dialog", - "apiServer": "https:\/\/owa-box.vips100.com\/op\/view.aspx?src=", - "fileExt": "doc,docx,docm,dot,dotx,dotm,rtf,xls,xlsx,xlt,xlsb,xlsm,csv,ppt,pptx,pps,ppsx,pptm,potm,ppam,potx,ppsm,odt,ods,odp,ott,ots,otp,wps,wpt", - "fileSort": 5 - } - }, - "photoSwipe": { - "id": "photoSwipe", - "regiest": { - "user.commonJs.insert": "photoSwipePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - "fileSort": 20 - } - }, - "picasa": { - "id": "picasa", - "regiest": { - "user.commonJs.insert": "picasaPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - "fileSort": 10 - } - }, - "simpleClock": { - "id": "simpleClock", - "regiest": { - "user.commonJs.insert": "simpleClockPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1" - } - }, - "toolsCommon": { - "id": "toolsCommon", - "regiest": { - "user.commonJs.insert": "toolsCommonPlugin.echoJs" - }, - "status": 1, - "config": [] - }, - "VLCPlayer": { - "id": "VLCPlayer", - "regiest": { - "user.commonJs.insert": "VLCPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "aac,arc,arj,asf,asx,avi,f4v,flv, m2ts,m4v,mp2,mov,mp3,mp4,mp4v,mpe,mpg,mts,mkv,ogv,3gp,mpeg,wav,wma,wmv,rm,rmvb,vob,webm,webmv, mp3,wav,wma,m4a,aac,oga,ogg,webma", - "fileSort": 1 - } - }, - "webodf": { - "id": "webodf", - "regiest": { - "user.commonJs.insert": "webodfPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "openWith": "dialog", - "fileExt": "odf,odt,ods,odp", - "fileSort": 5000 - } - }, - "yzOffice": { - "id": "yzOffice", - "regiest": { - "user.commonJs.insert": "yzOfficePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "openWith": "dialog", - "fileExt": "doc,docx,docm,dot,dotx,dotm,rtf,wps,wpt,xls,xlsx,xlt,xlsm,csv,ppt,pptx,pps,ppsx", - "fileSort": 50, - "cacheFile": "1", - "preview": "0" - } - }, - "zipView": { - "id": "zipView", - "regiest": { - "user.commonJs.insert": "zipViewPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "zip,tar,gz,tgz,ipa,apk,rar,7z,iso,bz2,zx,z,arj,epub", - "fileSort": 10 - } - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/last/apps.php b/plugin/document/kod/data/system/backup/last/apps.php deleted file mode 100644 index 04696c0be..000000000 --- a/plugin/document/kod/data/system/backup/last/apps.php +++ /dev/null @@ -1,355 +0,0 @@ -{ - "时钟": { - "type": "url", - "content": "http:\/\/hoorayos.com\/demo\/extapp\/clock\/index.php", - "group": "tools", - "name": "时钟", - "desc": "时钟挂件", - "icon": "time.png", - "width": "140", - "height": "140", - "simple": 1, - "resize": 0 - }, - "365日历": { - "type": "url", - "content": "http:\/\/baidu365.duapp.com\/wnl.html?bd_user=855814346&bd_sig=a64e6e262e8cfa1c42dd716617be2102&canvas_pos=platform", - "group": "life", - "name": "365日历", - "desc": "365日历", - "icon": "365.png", - "width": "544", - "height": "440", - "simple": 0, - "resize": 1 - }, - "快递查询": { - "type": "url", - "content": "http:\/\/baidu.kuaidi100.com\/index2.html", - "group": "tools", - "name": "快递查询", - "desc": "", - "icon": "kuaidi.gif", - "width": "545", - "height": "420", - "simple": 0, - "resize": 1 - }, - "黑8对决": { - "type": "url", - "content": "http:\/\/swf.baoku.360.cn\/swf\/20110921\/1\/ball.swf", - "group": "game", - "name": "黑8对决", - "desc": "经典台球", - "icon": "ball8.png", - "width": "650", - "height": "500", - "simple": 0, - "resize": 1 - }, - "百度随心听": { - "type": "url", - "content": "http:\/\/fm.baidu.com\/?embed=hao123", - "group": "music", - "name": "百度随心听", - "desc": "百度随心听", - "icon": "baidu.png", - "width": "980", - "height": "550", - "simple": 0, - "resize": 1 - }, - "计算器": { - "type": "url", - "content": "http:\/\/tools.jb51.net\/static\/skin\/flash\/773460494c0e2274d5f07e568fadf8e0.swf", - "group": "tools", - "name": "计算器", - "desc": "计算器", - "icon": "calcu.png", - "width": "538", - "height": "600", - "simple": 0, - "resize": 1 - }, - "天气": { - "type": "url", - "content": "http:\/\/hoorayos.com\/demo\/extapp\/weather\/index.php", - "group": "tools", - "name": "天气", - "desc": "天气预报", - "icon": "weather.png", - "width": "200", - "height": "300", - "simple": 1, - "resize": 0 - }, - "js在线压缩": { - "type": "url", - "content": "http:\/\/tool.lu\/js\/", - "group": "others", - "name": "js在线压缩", - "desc": "js在线压缩", - "icon": "js.png", - "width": "860", - "height": "620", - "simple": 0, - "resize": 1 - }, - "中国象棋": { - "type": "url", - "content": "http:\/\/sda.4399.com\/4399swf\/upload_swf\/ftp14\/cwb\/20140401\/y2.swf", - "group": "game", - "name": "中国象棋", - "desc": "中国象棋", - "icon": "xiangqi.jpg", - "width": "650", - "height": "502", - "simple": 0, - "resize": 1 - }, - "音悦台": { - "type": "url", - "content": "http:\/\/www.yinyuetai.com\/baidu\/index", - "group": "movie", - "name": "音悦台", - "desc": "音悦台", - "icon": "yingyuetai.png", - "width": "810", - "height": "460", - "simple": 0, - "resize": 1 - }, - "高德地图": { - "type": "url", - "content": "http:\/\/ditu.amap.com\/", - "group": "life", - "name": "高德地图", - "desc": "gaode map", - "icon": "map.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1 - }, - "有道词典": { - "type": "url", - "content": "http:\/\/dict.youdao.com\/app\/baidu", - "group": "tools", - "name": "有道词典", - "desc": "", - "icon": "youdao.jpg", - "width": "548", - "height": "490", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "豆瓣电台": { - "type": "url", - "content": "http:\/\/douban.fm\/partner\/qq_plus", - "group": "music", - "name": "豆瓣电台", - "desc": "豆瓣电台", - "icon": "douban.png", - "width": "545", - "height": "460", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "Web PhotoShop": { - "type": "url", - "content": "http:\/\/www.kantu.com\/tool\/ps\/", - "group": "tools", - "name": "Web PhotoShop", - "desc": "ps", - "icon": "ps.png", - "width": "800", - "height": "560", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "Vector Magic": { - "type": "url", - "content": "https:\/\/zh.vectormagic.com\/", - "group": "tools", - "name": "Vector Magic", - "desc": "转换成矢量图", - "icon": "vector.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "Kingdom Rush": { - "type": "url", - "content": "http:\/\/s4.4399.com:8080\/4399swf\/upload_swf\/ftp6\/liwen\/20110913\/4.swf", - "group": "game", - "name": "Kingdom Rush", - "desc": "皇家守卫军", - "icon": "kingdom.png", - "width": "700", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "腾讯canvas": { - "type": "app", - "content": "window.open(\"http:\/\/canvas.qq.com\/templates\");", - "group": "tools", - "name": "腾讯canvas", - "desc": "在线图片设计工具", - "icon": "qqcanvas.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "OfficeConverter": { - "type": "url", - "content": "http:\/\/cn.office-converter.com\/", - "group": "tools", - "name": "OfficeConverter", - "desc": "免费在线文件转换器", - "icon": "officeconvert.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "pptv直播": { - "type": "url", - "content": "http:\/\/app.aplus.pptv.com\/tgapp\/baidu\/live\/main", - "group": "movie", - "name": "pptv直播", - "desc": "", - "icon": "pptv.jpg", - "width": "798", - "height": "534", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "搜狐影视": { - "type": "url", - "content": "http:\/\/tv.sohu.com\/upload\/sohuapp\/index.html?api_key=9ca7e3cdef8af010b947f4934a427a2c", - "group": "movie", - "name": "搜狐影视", - "desc": "搜狐影视", - "icon": "souhu.jpg", - "width": "798", - "height": "583", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "百度脑图": { - "type": "url", - "content": "http:\/\/naotu.baidu.com\/", - "group": "tools", - "name": "百度脑图", - "desc": "在线思维导图", - "icon": "naotu.png", - "width": "80%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "网易云音乐": { - "type": "app", - "content": "window.open(\"http:\/\/music.163.com\/#\/my\/\");", - "group": "music", - "name": "网易云音乐", - "desc": "强大", - "icon": "wangyi.jpg", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "创可贴": { - "type": "url", - "content": "https:\/\/www.chuangkit.com\/startdesign", - "group": "tools", - "name": "创可贴", - "desc": "免费的在线设计工具", - "icon": "chuangketie.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "trello": { - "type": "app", - "content": "window.open(\"https:\/\/trello.com\/\");", - "group": "tools", - "name": "trello", - "desc": "项目管理云平台", - "icon": "trello.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "一起写office": { - "type": "url", - "content": "https:\/\/yiqixie.com\/d\/home", - "group": "tools", - "name": "一起写office", - "desc": "在线协作office", - "icon": "yiqixie.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "ProcessOn": { - "type": "url", - "content": "http:\/\/processon.com\/diagrams", - "group": "tools", - "name": "ProcessOn", - "desc": "免费在线作图,实时协作", - "icon": "on.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "石墨文档": { - "type": "url", - "content": "https:\/\/shimo.im\/desktop", - "group": "tools", - "name": "石墨文档", - "desc": "shimo", - "icon": "shimo.png", - "width": "90%", - "height": "80%", - "simple": 0, - "resize": 1, - "undefined": 0 - }, - "微信": { - "type": "app", - "content": "window.open(\"https:\/\/wx.qq.com\/\");", - "group": "tools", - "name": "微信", - "desc": "微信网页版", - "icon": "wechart.png", - "width": "800", - "height": "600", - "simple": 0, - "resize": 1, - "undefined": 0 - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/last/desktop_app.php b/plugin/document/kod/data/system/backup/last/desktop_app.php deleted file mode 100644 index 3377fba47..000000000 --- a/plugin/document/kod/data/system/backup/last/desktop_app.php +++ /dev/null @@ -1,59 +0,0 @@ - array( - "type" => "app", - "content" => "core.explorer('','".LNG('my_computer')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/computer.png", - "name" => LNG('my_computer'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'recycle' => array( - "type" => "app", - "content" => "core.explorer('".KOD_USER_RECYCLE."','".LNG('recycle')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/recycle.png", - "name" => LNG('recycle'), - "menuType" => "systemBox menu-recycle-button", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'PluginCenter' => array( - "type" => "app", - "content" => "core.openWindowBig('./kod_index.php?pluginApp/index','".LNG('PluginCenter')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/plugins.png", - "name" => LNG('PluginCenter'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'setting' => array( - "type" => "app", - "content" => "core.setting();", - "icon" => STATIC_PATH."images/file_icon/icon_others/setting.png", - "name" => LNG('setting'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "/", - "resize" => 1 - ), - 'appStore' => array( - "type" => "app", - "content" => "core.appStore();", - "icon" => STATIC_PATH."images/file_icon/icon_others/appStore.png", - "name" => LNG('app_store'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ) -); - -//管理员插件中心 -if(!$GLOBALS['isRoot']){ - unset($desktopApps['PluginCenter']); -} -return $desktopApps; diff --git a/plugin/document/kod/data/system/backup/last/system_group.php b/plugin/document/kod/data/system/backup/last/system_group.php deleted file mode 100644 index 78982a3d4..000000000 --- a/plugin/document/kod/data/system/backup/last/system_group.php +++ /dev/null @@ -1,14 +0,0 @@ -{ - "1": { - "groupID": 1, - "name": "public", - "parentID": "", - "children": "", - "config": { - "sizeMax": 0, - "sizeUse": 0 - }, - "path": "public", - "createTime": 1589187576 - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/last/system_member.php b/plugin/document/kod/data/system/backup/last/system_member.php deleted file mode 100644 index e719ce1fe..000000000 --- a/plugin/document/kod/data/system/backup/last/system_member.php +++ /dev/null @@ -1,109 +0,0 @@ -{ - "1": { - "name": "admin", - "path": "admin", - "password": "333c5253ccb85fdb290cce37bb57cb7e", - "userID": "1", - "role": "1", - "config": { - "sizeMax": "0", - "sizeUse": 1024 - }, - "groupInfo": { - "1": "write" - }, - "createTime": 1589187576, - "status": 1, - "lastLogin": 1625476398 - }, - "100": { - "userID": "100", - "name": "project92", - "nickName": "project92", - "password": "333c5253ccb85fdb290cce37bb57cb7e", - "role": "2", - "config": { - "sizeMax": 5, - "sizeUse": 1048576 - }, - "groupInfo": { - "1": "write" - }, - "path": "project92_100", - "status": 1, - "lastLogin": 1612405887, - "createTime": 1612405884 - }, - "101": { - "userID": "101", - "name": "project1", - "nickName": "project1", - "password": "333c5253ccb85fdb290cce37bb57cb7e", - "role": "2", - "config": { - "sizeMax": 5, - "sizeUse": 1048576 - }, - "groupInfo": { - "1": "write" - }, - "path": "project1_101", - "status": 1, - "lastLogin": 1612512308, - "createTime": 1612510973 - }, - "102": { - "userID": "102", - "name": "project3", - "nickName": "project3", - "password": "333c5253ccb85fdb290cce37bb57cb7e", - "role": "2", - "config": { - "sizeMax": 5, - "sizeUse": 1048576 - }, - "groupInfo": { - "1": "write" - }, - "path": "project3", - "status": 1, - "lastLogin": 1615860230, - "createTime": 1612855697 - }, - "103": { - "userID": "103", - "name": "project36", - "nickName": "project36", - "password": "333c5253ccb85fdb290cce37bb57cb7e", - "role": "2", - "config": { - "sizeMax": 5, - "sizeUse": 1048576 - }, - "groupInfo": { - "1": "write" - }, - "path": "project36_103", - "status": 1, - "lastLogin": 1618904326, - "createTime": 1618904325 - }, - "104": { - "userID": "104", - "name": "project91", - "nickName": "project91", - "password": "5946efebafeebac79a19cbbc9a5e5b0d", - "role": "2", - "config": { - "sizeMax": 5, - "sizeUse": 1048576 - }, - "groupInfo": { - "1": "write" - }, - "path": "project91", - "status": 1, - "lastLogin": 1625476399, - "createTime": 1625476399 - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/last/system_role.php b/plugin/document/kod/data/system/backup/last/system_role.php deleted file mode 100644 index a413e0da7..000000000 --- a/plugin/document/kod/data/system/backup/last/system_role.php +++ /dev/null @@ -1 +0,0 @@ -{"1":{"name":"Administrator","extNotAllow":"","explorer.mkdir":0,"explorer.mkfile":0,"explorer.pathRname":0,"explorer.pathDelete":0,"explorer.zip":0,"explorer.unzip":0,"explorer.pathCopy":0,"explorer.pathChmod":0,"explorer.pathCute":0,"explorer.pathCuteDrag":0,"explorer.pathCopyDrag":0,"explorer.clipboard":0,"explorer.pathPast":0,"explorer.pathInfo":0,"explorer.serverDownload":0,"explorer.fileUpload":0,"explorer.search":0,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":0,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":0,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":0,"editor.fileGet":0,"editor.fileSave":0,"userShare.set":0,"userShare.del":0,"setting.set":0,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":0,"fav.del":0,"fav.edit":0,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0},"2":{"name":"default","extNotAllow":"htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm","explorer.mkdir":1,"explorer.mkfile":1,"explorer.pathRname":1,"explorer.pathDelete":1,"explorer.zip":1,"explorer.unzip":1,"explorer.pathCopy":1,"explorer.pathChmod":0,"explorer.pathCute":1,"explorer.pathCuteDrag":1,"explorer.pathCopyDrag":0,"explorer.clipboard":1,"explorer.pathPast":1,"explorer.pathInfo":1,"explorer.serverDownload":1,"explorer.fileUpload":1,"explorer.search":1,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":1,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":1,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":1,"editor.fileGet":0,"editor.fileSave":1,"userShare.set":1,"userShare.del":1,"setting.set":1,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":1,"fav.del":1,"fav.edit":1,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0},"100":{"name":"guest","extNotAllow":"htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm","explorer.mkdir":0,"explorer.mkfile":0,"explorer.pathRname":0,"explorer.pathDelete":0,"explorer.zip":0,"explorer.unzip":0,"explorer.pathCopy":0,"explorer.pathChmod":0,"explorer.pathCute":0,"explorer.pathCuteDrag":0,"explorer.pathCopyDrag":0,"explorer.clipboard":0,"explorer.pathPast":0,"explorer.pathInfo":0,"explorer.serverDownload":0,"explorer.fileUpload":0,"explorer.search":1,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":0,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":0,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":0,"editor.fileGet":0,"editor.fileSave":0,"userShare.set":0,"userShare.del":0,"setting.set":0,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":0,"fav.del":0,"fav.edit":0,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0}} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/last/system_role_group.php b/plugin/document/kod/data/system/backup/last/system_role_group.php deleted file mode 100644 index 62c8495a8..000000000 --- a/plugin/document/kod/data/system/backup/last/system_role_group.php +++ /dev/null @@ -1,31 +0,0 @@ -{ - "1": { - "name": "read", - "style": "blue-light", - "display": 1, - "actions": { - "read:list": 1, - "read:info": 1, - "read:copy": 1, - "read:preview": 1, - "read:download": 1 - } - }, - "2": { - "name": "write", - "style": "blue-deep", - "display": 1, - "actions": { - "read:list": 1, - "read:info": 1, - "read:copy": 1, - "read:preview": 1, - "read:download": 1, - "write:add": 1, - "write:edit": 1, - "write:change": 1, - "write:upload": 1, - "write:remove": 1 - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/backup/last/system_setting.php b/plugin/document/kod/data/system/backup/last/system_setting.php deleted file mode 100644 index 2d6266860..000000000 --- a/plugin/document/kod/data/system/backup/last/system_setting.php +++ /dev/null @@ -1,203 +0,0 @@ -{ - "systemPassword": "WNDkey3am9AYdVbDbkn8", - "systemName": "Masterlab文件管理模块", - "systemDesc": "", - "pathHidden": "Thumb.db,.DS_Store,.gitignore,.git", - "autoLogin": "0", - "needCheckCode": "0", - "firstIn": "explorer", - "newUserApp": "一起写office,微信,365日历,石墨文档,ProcessOn,计算器,icloud,OfficeConverter", - "newUserFolder": "我的文档,图片,视频,音乐", - "newGroupFolder": "share,文档,图片资料,视频资料", - "groupShareFolder": "share", - "desktopFolder": "desktop", - "versionType": "A", - "rootListUser": 0, - "rootListGroup": 0, - "csrfProtect": 0, - "currentVersion": "4.40", - "wallpageDesktop": "1,2,3,4,5,6,7,8,9,10,11,12,13", - "wallpageLogin": "2,3,6,8,9,11,12", - "menu": [ - { - "name": "desktop", - "type": "system", - "url": "kod_index.php?desktop", - "target": "_self", - "use": "1" - }, - { - "name": "explorer", - "type": "system", - "url": "kod_index.php?explorer", - "target": "_self", - "use": "1" - }, - { - "name": "editor", - "type": "system", - "url": "kod_index.php?editor", - "target": "_self", - "use": "1" - } - ], - "pluginList": { - "adminer": { - "id": "adminer", - "regiest": { - "templateCommonHeader": "adminerPlugin.addMenu" - }, - "status": 1, - "config": { - "pluginAuth": "role:1", - "menuSubMenu": 1 - } - }, - "DPlayer": { - "id": "DPlayer", - "regiest": { - "user.commonJs.insert": "DPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "subtitle": "0", - "fileSort": 200, - "fileExt": "mp4,m4v,flv,mov,f4v,ogv,webm,webmv,mkv" - } - }, - "imageExif": { - "id": "imageExif", - "regiest": { - "user.commonJs.insert": "imageExifPlugin.echoJs", - "share.image": "imageExifPlugin.imageCheck", - "explorer.image": "imageExifPlugin.imageCheck" - }, - "status": 1, - "config": { - "pluginAuth": "all:1" - } - }, - "jPlayer": { - "id": "jPlayer", - "regiest": { - "user.commonJs.insert": "jPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "mp3,wav,m4a,aac,oga,ogg,webma,mp4,m4v,flv,mov,f4v,ogv,webm,webmv,m3u8a,m3ua,flac,fla,rtmp,rtmpa", - "fileSort": 10 - } - }, - "officeLive": { - "id": "officeLive", - "regiest": { - "user.commonJs.insert": "officeLivePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "pluginAuthOpen": 0, - "openWith": "dialog", - "apiServer": "https:\/\/owa-box.vips100.com\/op\/view.aspx?src=", - "fileExt": "doc,docx,docm,dot,dotx,dotm,rtf,xls,xlsx,xlt,xlsb,xlsm,csv,ppt,pptx,pps,ppsx,pptm,potm,ppam,potx,ppsm,odt,ods,odp,ott,ots,otp,wps,wpt", - "fileSort": 5 - } - }, - "photoSwipe": { - "id": "photoSwipe", - "regiest": { - "user.commonJs.insert": "photoSwipePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - "fileSort": 20 - } - }, - "picasa": { - "id": "picasa", - "regiest": { - "user.commonJs.insert": "picasaPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - "fileSort": 10 - } - }, - "simpleClock": { - "id": "simpleClock", - "regiest": { - "user.commonJs.insert": "simpleClockPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1" - } - }, - "toolsCommon": { - "id": "toolsCommon", - "regiest": { - "user.commonJs.insert": "toolsCommonPlugin.echoJs" - }, - "status": 1, - "config": [] - }, - "VLCPlayer": { - "id": "VLCPlayer", - "regiest": { - "user.commonJs.insert": "VLCPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "aac,arc,arj,asf,asx,avi,f4v,flv, m2ts,m4v,mp2,mov,mp3,mp4,mp4v,mpe,mpg,mts,mkv,ogv,3gp,mpeg,wav,wma,wmv,rm,rmvb,vob,webm,webmv, mp3,wav,wma,m4a,aac,oga,ogg,webma", - "fileSort": 1 - } - }, - "webodf": { - "id": "webodf", - "regiest": { - "user.commonJs.insert": "webodfPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "openWith": "dialog", - "fileExt": "odf,odt,ods,odp", - "fileSort": 5000 - } - }, - "yzOffice": { - "id": "yzOffice", - "regiest": { - "user.commonJs.insert": "yzOfficePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "openWith": "dialog", - "fileExt": "doc,docx,docm,dot,dotx,dotm,rtf,wps,wpt,xls,xlsx,xlt,xlsm,csv,ppt,pptx,pps,ppsx", - "fileSort": 50, - "cacheFile": "1", - "preview": "0" - } - }, - "zipView": { - "id": "zipView", - "regiest": { - "user.commonJs.insert": "zipViewPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "zip,tar,gz,tgz,ipa,apk,rar,7z,iso,bz2,zx,z,arj,epub", - "fileSort": 10 - } - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/desktop_app.php b/plugin/document/kod/data/system/desktop_app.php deleted file mode 100644 index 3377fba47..000000000 --- a/plugin/document/kod/data/system/desktop_app.php +++ /dev/null @@ -1,59 +0,0 @@ - array( - "type" => "app", - "content" => "core.explorer('','".LNG('my_computer')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/computer.png", - "name" => LNG('my_computer'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'recycle' => array( - "type" => "app", - "content" => "core.explorer('".KOD_USER_RECYCLE."','".LNG('recycle')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/recycle.png", - "name" => LNG('recycle'), - "menuType" => "systemBox menu-recycle-button", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'PluginCenter' => array( - "type" => "app", - "content" => "core.openWindowBig('./kod_index.php?pluginApp/index','".LNG('PluginCenter')."');", - "icon" => STATIC_PATH."images/file_icon/icon_others/plugins.png", - "name" => LNG('PluginCenter'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ), - 'setting' => array( - "type" => "app", - "content" => "core.setting();", - "icon" => STATIC_PATH."images/file_icon/icon_others/setting.png", - "name" => LNG('setting'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "/", - "resize" => 1 - ), - 'appStore' => array( - "type" => "app", - "content" => "core.appStore();", - "icon" => STATIC_PATH."images/file_icon/icon_others/appStore.png", - "name" => LNG('app_store'), - "menuType" => "systemBox menu-default", - "ext" => 'oexe', - "path" => "", - "resize" => 1 - ) -); - -//管理员插件中心 -if(!$GLOBALS['isRoot']){ - unset($desktopApps['PluginCenter']); -} -return $desktopApps; diff --git a/plugin/document/kod/data/system/index.html b/plugin/document/kod/data/system/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin/document/kod/data/system/install.lock b/plugin/document/kod/data/system/install.lock deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin/document/kod/data/system/system_group.php b/plugin/document/kod/data/system/system_group.php deleted file mode 100644 index 78982a3d4..000000000 --- a/plugin/document/kod/data/system/system_group.php +++ /dev/null @@ -1,14 +0,0 @@ -{ - "1": { - "groupID": 1, - "name": "public", - "parentID": "", - "children": "", - "config": { - "sizeMax": 0, - "sizeUse": 0 - }, - "path": "public", - "createTime": 1589187576 - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/system_member.php b/plugin/document/kod/data/system/system_member.php deleted file mode 100644 index 3af56c5bc..000000000 --- a/plugin/document/kod/data/system/system_member.php +++ /dev/null @@ -1,19 +0,0 @@ -{ - "1": { - "name": "admin", - "path": "admin", - "password": "05a671c66aefea124cc08b76ea6d30bb", - "userID": "1", - "role": "1", - "config": { - "sizeMax": "0", - "sizeUse": 1024 - }, - "groupInfo": { - "1": "write" - }, - "createTime": 1589187576, - "status": 1, - "lastLogin": 1611720653 - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/system_role.php b/plugin/document/kod/data/system/system_role.php deleted file mode 100644 index a413e0da7..000000000 --- a/plugin/document/kod/data/system/system_role.php +++ /dev/null @@ -1 +0,0 @@ -{"1":{"name":"Administrator","extNotAllow":"","explorer.mkdir":0,"explorer.mkfile":0,"explorer.pathRname":0,"explorer.pathDelete":0,"explorer.zip":0,"explorer.unzip":0,"explorer.pathCopy":0,"explorer.pathChmod":0,"explorer.pathCute":0,"explorer.pathCuteDrag":0,"explorer.pathCopyDrag":0,"explorer.clipboard":0,"explorer.pathPast":0,"explorer.pathInfo":0,"explorer.serverDownload":0,"explorer.fileUpload":0,"explorer.search":0,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":0,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":0,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":0,"editor.fileGet":0,"editor.fileSave":0,"userShare.set":0,"userShare.del":0,"setting.set":0,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":0,"fav.del":0,"fav.edit":0,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0},"2":{"name":"default","extNotAllow":"htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm","explorer.mkdir":1,"explorer.mkfile":1,"explorer.pathRname":1,"explorer.pathDelete":1,"explorer.zip":1,"explorer.unzip":1,"explorer.pathCopy":1,"explorer.pathChmod":0,"explorer.pathCute":1,"explorer.pathCuteDrag":1,"explorer.pathCopyDrag":0,"explorer.clipboard":1,"explorer.pathPast":1,"explorer.pathInfo":1,"explorer.serverDownload":1,"explorer.fileUpload":1,"explorer.search":1,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":1,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":1,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":1,"editor.fileGet":0,"editor.fileSave":1,"userShare.set":1,"userShare.del":1,"setting.set":1,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":1,"fav.del":1,"fav.edit":1,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0},"100":{"name":"guest","extNotAllow":"htm|html|php|phtml|pwml|asp|aspx|ascx|jsp|pl|htaccess|shtml|shtm|phtm","explorer.mkdir":0,"explorer.mkfile":0,"explorer.pathRname":0,"explorer.pathDelete":0,"explorer.zip":0,"explorer.unzip":0,"explorer.pathCopy":0,"explorer.pathChmod":0,"explorer.pathCute":0,"explorer.pathCuteDrag":0,"explorer.pathCopyDrag":0,"explorer.clipboard":0,"explorer.pathPast":0,"explorer.pathInfo":0,"explorer.serverDownload":0,"explorer.fileUpload":0,"explorer.search":1,"explorer.pathDeleteRecycle":0,"explorer.fileDownload":0,"explorer.zipDownload":0,"explorer.fileDownloadRemove":0,"explorer.fileProxy":0,"explorer.officeView":0,"explorer.officeSave":0,"app.userApp":0,"app.initApp":0,"app.add":0,"app.edit":0,"app.del":0,"user.changePassword":0,"editor.fileGet":0,"editor.fileSave":0,"userShare.set":0,"userShare.del":0,"setting.set":0,"setting.systemSetting":0,"setting.phpInfo":0,"fav.add":0,"fav.del":0,"fav.edit":0,"systemMember.get":0,"systemMember.add":0,"systemMember.doAction":0,"systemMember.edit":0,"systemGroup.get":0,"systemGroup.add":0,"systemGroup.del":0,"systemGroup.edit":0,"systemRole.add":0,"systemRole.del":0,"systemRole.edit":0}} \ No newline at end of file diff --git a/plugin/document/kod/data/system/system_role_group.php b/plugin/document/kod/data/system/system_role_group.php deleted file mode 100644 index 62c8495a8..000000000 --- a/plugin/document/kod/data/system/system_role_group.php +++ /dev/null @@ -1,31 +0,0 @@ -{ - "1": { - "name": "read", - "style": "blue-light", - "display": 1, - "actions": { - "read:list": 1, - "read:info": 1, - "read:copy": 1, - "read:preview": 1, - "read:download": 1 - } - }, - "2": { - "name": "write", - "style": "blue-deep", - "display": 1, - "actions": { - "read:list": 1, - "read:info": 1, - "read:copy": 1, - "read:preview": 1, - "read:download": 1, - "write:add": 1, - "write:edit": 1, - "write:change": 1, - "write:upload": 1, - "write:remove": 1 - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/system/system_setting.php b/plugin/document/kod/data/system/system_setting.php deleted file mode 100644 index 2d6266860..000000000 --- a/plugin/document/kod/data/system/system_setting.php +++ /dev/null @@ -1,203 +0,0 @@ -{ - "systemPassword": "WNDkey3am9AYdVbDbkn8", - "systemName": "Masterlab文件管理模块", - "systemDesc": "", - "pathHidden": "Thumb.db,.DS_Store,.gitignore,.git", - "autoLogin": "0", - "needCheckCode": "0", - "firstIn": "explorer", - "newUserApp": "一起写office,微信,365日历,石墨文档,ProcessOn,计算器,icloud,OfficeConverter", - "newUserFolder": "我的文档,图片,视频,音乐", - "newGroupFolder": "share,文档,图片资料,视频资料", - "groupShareFolder": "share", - "desktopFolder": "desktop", - "versionType": "A", - "rootListUser": 0, - "rootListGroup": 0, - "csrfProtect": 0, - "currentVersion": "4.40", - "wallpageDesktop": "1,2,3,4,5,6,7,8,9,10,11,12,13", - "wallpageLogin": "2,3,6,8,9,11,12", - "menu": [ - { - "name": "desktop", - "type": "system", - "url": "kod_index.php?desktop", - "target": "_self", - "use": "1" - }, - { - "name": "explorer", - "type": "system", - "url": "kod_index.php?explorer", - "target": "_self", - "use": "1" - }, - { - "name": "editor", - "type": "system", - "url": "kod_index.php?editor", - "target": "_self", - "use": "1" - } - ], - "pluginList": { - "adminer": { - "id": "adminer", - "regiest": { - "templateCommonHeader": "adminerPlugin.addMenu" - }, - "status": 1, - "config": { - "pluginAuth": "role:1", - "menuSubMenu": 1 - } - }, - "DPlayer": { - "id": "DPlayer", - "regiest": { - "user.commonJs.insert": "DPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "subtitle": "0", - "fileSort": 200, - "fileExt": "mp4,m4v,flv,mov,f4v,ogv,webm,webmv,mkv" - } - }, - "imageExif": { - "id": "imageExif", - "regiest": { - "user.commonJs.insert": "imageExifPlugin.echoJs", - "share.image": "imageExifPlugin.imageCheck", - "explorer.image": "imageExifPlugin.imageCheck" - }, - "status": 1, - "config": { - "pluginAuth": "all:1" - } - }, - "jPlayer": { - "id": "jPlayer", - "regiest": { - "user.commonJs.insert": "jPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "mp3,wav,m4a,aac,oga,ogg,webma,mp4,m4v,flv,mov,f4v,ogv,webm,webmv,m3u8a,m3ua,flac,fla,rtmp,rtmpa", - "fileSort": 10 - } - }, - "officeLive": { - "id": "officeLive", - "regiest": { - "user.commonJs.insert": "officeLivePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "pluginAuthOpen": 0, - "openWith": "dialog", - "apiServer": "https:\/\/owa-box.vips100.com\/op\/view.aspx?src=", - "fileExt": "doc,docx,docm,dot,dotx,dotm,rtf,xls,xlsx,xlt,xlsb,xlsm,csv,ppt,pptx,pps,ppsx,pptm,potm,ppam,potx,ppsm,odt,ods,odp,ott,ots,otp,wps,wpt", - "fileSort": 5 - } - }, - "photoSwipe": { - "id": "photoSwipe", - "regiest": { - "user.commonJs.insert": "photoSwipePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - "fileSort": 20 - } - }, - "picasa": { - "id": "picasa", - "regiest": { - "user.commonJs.insert": "picasaPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - "fileSort": 10 - } - }, - "simpleClock": { - "id": "simpleClock", - "regiest": { - "user.commonJs.insert": "simpleClockPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1" - } - }, - "toolsCommon": { - "id": "toolsCommon", - "regiest": { - "user.commonJs.insert": "toolsCommonPlugin.echoJs" - }, - "status": 1, - "config": [] - }, - "VLCPlayer": { - "id": "VLCPlayer", - "regiest": { - "user.commonJs.insert": "VLCPlayerPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "aac,arc,arj,asf,asx,avi,f4v,flv, m2ts,m4v,mp2,mov,mp3,mp4,mp4v,mpe,mpg,mts,mkv,ogv,3gp,mpeg,wav,wma,wmv,rm,rmvb,vob,webm,webmv, mp3,wav,wma,m4a,aac,oga,ogg,webma", - "fileSort": 1 - } - }, - "webodf": { - "id": "webodf", - "regiest": { - "user.commonJs.insert": "webodfPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "openWith": "dialog", - "fileExt": "odf,odt,ods,odp", - "fileSort": 5000 - } - }, - "yzOffice": { - "id": "yzOffice", - "regiest": { - "user.commonJs.insert": "yzOfficePlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "openWith": "dialog", - "fileExt": "doc,docx,docm,dot,dotx,dotm,rtf,wps,wpt,xls,xlsx,xlt,xlsm,csv,ppt,pptx,pps,ppsx", - "fileSort": 50, - "cacheFile": "1", - "preview": "0" - } - }, - "zipView": { - "id": "zipView", - "regiest": { - "user.commonJs.insert": "zipViewPlugin.echoJs" - }, - "status": 1, - "config": { - "pluginAuth": "all:1", - "fileExt": "zip,tar,gz,tgz,ipa,apk,rar,7z,iso,bz2,zx,z,arj,epub", - "fileSort": 10 - } - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/data/temp/index.html b/plugin/document/kod/data/temp/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin/document/kod/data/temp/thumb/1836516f9cff20b2131fcfde24b3e12c_250.png b/plugin/document/kod/data/temp/thumb/1836516f9cff20b2131fcfde24b3e12c_250.png deleted file mode 100644 index b2c811791..000000000 Binary files a/plugin/document/kod/data/temp/thumb/1836516f9cff20b2131fcfde24b3e12c_250.png and /dev/null differ diff --git a/plugin/document/kod/data/temp/thumb/6f9ad61f4d49fbf870ae8ff311e92277_250.png b/plugin/document/kod/data/temp/thumb/6f9ad61f4d49fbf870ae8ff311e92277_250.png deleted file mode 100644 index 3f701ed8f..000000000 Binary files a/plugin/document/kod/data/temp/thumb/6f9ad61f4d49fbf870ae8ff311e92277_250.png and /dev/null differ diff --git a/plugin/document/kod/data/temp/thumb/9421eb44e10f12b09b510d77a6b7b4b3_250.png b/plugin/document/kod/data/temp/thumb/9421eb44e10f12b09b510d77a6b7b4b3_250.png deleted file mode 100644 index ab87e2cb9..000000000 Binary files a/plugin/document/kod/data/temp/thumb/9421eb44e10f12b09b510d77a6b7b4b3_250.png and /dev/null differ diff --git a/plugin/document/kod/data/temp/thumb/cc098388c465f31a5ea0e9c669aa2f9c_250.png b/plugin/document/kod/data/temp/thumb/cc098388c465f31a5ea0e9c669aa2f9c_250.png deleted file mode 100644 index 7d3972cb1..000000000 Binary files a/plugin/document/kod/data/temp/thumb/cc098388c465f31a5ea0e9c669aa2f9c_250.png and /dev/null differ diff --git a/plugin/document/kod/data/temp/thumb/d2eba12ffc7c0dcdd09edbb0a133560b_250.png b/plugin/document/kod/data/temp/thumb/d2eba12ffc7c0dcdd09edbb0a133560b_250.png deleted file mode 100644 index c367a1cc2..000000000 Binary files a/plugin/document/kod/data/temp/thumb/d2eba12ffc7c0dcdd09edbb0a133560b_250.png and /dev/null differ diff --git a/plugin/document/kod/data/temp/thumb/index.html b/plugin/document/kod/data/temp/thumb/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugin/document/kod/data/temp/yzOffice/fc4d0b89d03a2973ec9c55ae4afb58290/info.json b/plugin/document/kod/data/temp/yzOffice/fc4d0b89d03a2973ec9c55ae4afb58290/info.json deleted file mode 100644 index aa2952ec2..000000000 --- a/plugin/document/kod/data/temp/yzOffice/fc4d0b89d03a2973ec9c55ae4afb58290/info.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "currentStep": 1, - "success": 0, - "taskUuid": "2fbae774bc0150629de54bb3580a6006", - "hideData": [], - "steps": [ - { - "name": "upload", - "process": "uploadProcess", - "status": 2, - "result": "\r\n404 Not Found<\/title><\/head>\r\n<body>\r\n<center><h1>404 Not Found<\/h1><\/center>\r\n<hr><center>nginx\/1.16.0<\/center>\r\n<\/body>\r\n<\/html>\r\n<!-- a padding to disable MSIE and Chrome friendly error page -->\r\n<!-- a padding to disable MSIE and Chrome friendly error page -->\r\n<!-- a padding to disable MSIE and Chrome friendly error page -->\r\n<!-- a padding to disable MSIE and Chrome friendly error page -->\r\n<!-- a padding to disable MSIE and Chrome friendly error page -->\r\n<!-- a padding to disable MSIE and Chrome friendly error page -->\r\n" - }, - { - "name": "convert", - "process": "convert", - "status": 0, - "result": "" - } - ] -} \ No newline at end of file diff --git a/plugin/document/kod/data/temp/yzOffice/files/fc4d0b89d03a2973ec9c55ae4afb5829.xls b/plugin/document/kod/data/temp/yzOffice/files/fc4d0b89d03a2973ec9c55ae4afb5829.xls deleted file mode 100644 index 217572cff..000000000 Binary files a/plugin/document/kod/data/temp/yzOffice/files/fc4d0b89d03a2973ec9c55ae4afb5829.xls and /dev/null differ diff --git a/plugin/document/kod/index2.php b/plugin/document/kod/index2.php deleted file mode 100644 index 004e8af15..000000000 --- a/plugin/document/kod/index2.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - ob_start(); - include('config/config.php'); - $app = new Application(); - init_config(); - $app->run(); -?> diff --git a/plugin/document/kod/kod_index.php b/plugin/document/kod/kod_index.php deleted file mode 100644 index 004e8af15..000000000 --- a/plugin/document/kod/kod_index.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - ob_start(); - include('config/config.php'); - $app = new Application(); - init_config(); - $app->run(); -?> diff --git a/plugin/document/kod/plugins/DPlayer/app.php b/plugin/document/kod/plugins/DPlayer/app.php deleted file mode 100644 index 5a725e521..000000000 --- a/plugin/document/kod/plugins/DPlayer/app.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -class DPlayerPlugin extends PluginBase{ - function __construct(){ - parent::__construct(); - } - public function regiest(){ - $this->hookRegiest(array( - 'user.commonJs.insert' => 'DPlayerPlugin.echoJs', - )); - } - public function echoJs($st,$act){ - if($this->isFileExtence($st,$act)){ - $this->echoFile('static/main.js'); - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/plugins/DPlayer/package.json b/plugin/document/kod/plugins/DPlayer/package.json deleted file mode 100644 index ffc188219..000000000 --- a/plugin/document/kod/plugins/DPlayer/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "id":"DPlayer", - "name":"DPlayer播放器", - "title":"DPlayer播放器", - "version":"1.07", - "source":{ - "icon":"{{pluginHost}}static/images/icon.png", - }, - "category":"media,file", - "description":"DPlayer mediafile player;", - "keywords":"", - "auther":{ - "copyright":"kodcloud.", - "homePage":"http://www.kodcloud.com", - }, - "configItem":{ - "pluginAuth":{ - "type":"userSelect", - "value":"all:1", - "display":"{{LNG.Plugin.config.auth}}", - "desc":"{{LNG.Plugin.config.authDesc}}", - "require":1 - }, - "subtitle":{ - "type":"switch", - "display":"自动加载字幕", - "desc":"字幕需要放在视频文件同位置,与视频文件同名并追加.vtt", - "value":"0" - }, - "step001":"<hr/>", - "fileSort":{ - "type":"number", - "display":"{{LNG.Plugin.Config.fileSort}}", - "desc":"{{LNG.Plugin.Config.fileSortDesc}}", - "value":200, - }, - "fileExt":{ - "type":"tags", - "display":"{{LNG.Plugin.Config.fileExt}}", - "desc":"{{LNG.Plugin.Config.fileExtDesc}}", - //"value":"mp3,wav,m4a,aac,oga,ogg,webma,mp4,m4v,flv,mov,f4v,ogv,webm,webmv,mkv", - "value":"mp4,m4v,flv,mov,f4v,ogv,webm,webmv,mkv", - } - } -} diff --git a/plugin/document/kod/plugins/DPlayer/static/DPlayer/DPlayer.min.css b/plugin/document/kod/plugins/DPlayer/static/DPlayer/DPlayer.min.css deleted file mode 100644 index 8c9c86d61..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/DPlayer/DPlayer.min.css +++ /dev/null @@ -1,59 +0,0 @@ -button[data-balloon]{overflow:visible}[data-balloon]{position:relative;cursor:pointer}[data-balloon]:after{font-family:sans-serif!important;font-weight:400!important;font-style:normal!important;text-shadow:none!important;font-size:12px!important;background:hsla(0,0%,7%,.9);border-radius:4px;color:#fff;content:attr(data-balloon);padding:.5em 1em;white-space:nowrap}[data-balloon]:after,[data-balloon]:before{filter:alpha(opactiy=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;pointer-events:none;transition:all .18s ease-out .18s;position:absolute;z-index:10}[data-balloon]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002C14.285 12.002 8.594 0 2.658 0z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;content:""}[data-balloon]:hover:after,[data-balloon]:hover:before,[data-balloon][data-balloon-visible]:after,[data-balloon][data-balloon-visible]:before{filter:alpha(opactiy=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;pointer-events:auto}[data-balloon].font-awesome:after{font-family:FontAwesome}[data-balloon][data-balloon-break]:after{white-space:pre}[data-balloon][data-balloon-blunt]:after,[data-balloon][data-balloon-blunt]:before{transition:none}[data-balloon][data-balloon-pos=up]:after{margin-bottom:11px}[data-balloon][data-balloon-pos=up]:after,[data-balloon][data-balloon-pos=up]:before{bottom:100%;left:50%;-webkit-transform:translate(-50%,10px);transform:translate(-50%,10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up]:before{margin-bottom:5px}[data-balloon][data-balloon-pos=up]:hover:after,[data-balloon][data-balloon-pos=up]:hover:before,[data-balloon][data-balloon-pos=up][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[data-balloon][data-balloon-pos=up-left]:after{left:0;margin-bottom:11px}[data-balloon][data-balloon-pos=up-left]:after,[data-balloon][data-balloon-pos=up-left]:before{bottom:100%;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up-left]:before{left:5px;margin-bottom:5px}[data-balloon][data-balloon-pos=up-left]:hover:after,[data-balloon][data-balloon-pos=up-left]:hover:before,[data-balloon][data-balloon-pos=up-left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=up-right]:after{right:0;margin-bottom:11px}[data-balloon][data-balloon-pos=up-right]:after,[data-balloon][data-balloon-pos=up-right]:before{bottom:100%;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up-right]:before{right:5px;margin-bottom:5px}[data-balloon][data-balloon-pos=up-right]:hover:after,[data-balloon][data-balloon-pos=up-right]:hover:before,[data-balloon][data-balloon-pos=up-right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=down]:after{margin-top:11px}[data-balloon][data-balloon-pos=down]:after,[data-balloon][data-balloon-pos=down]:before{left:50%;top:100%;-webkit-transform:translate(-50%,-10px);transform:translate(-50%,-10px)}[data-balloon][data-balloon-pos=down]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;margin-top:5px}[data-balloon][data-balloon-pos=down]:hover:after,[data-balloon][data-balloon-pos=down]:hover:before,[data-balloon][data-balloon-pos=down][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[data-balloon][data-balloon-pos=down-left]:after{left:0;margin-top:11px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-left]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;left:5px;margin-top:5px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-left]:hover:after,[data-balloon][data-balloon-pos=down-left]:hover:before,[data-balloon][data-balloon-pos=down-left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=down-right]:after{right:0;margin-top:11px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-right]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;right:5px;margin-top:5px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-right]:hover:after,[data-balloon][data-balloon-pos=down-right]:hover:before,[data-balloon][data-balloon-pos=down-right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=left]:after{margin-right:11px;right:100%;top:50%;-webkit-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon][data-balloon-pos=left]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002C12.002 21.715 0 27.406 0 33.342z'/%3E%3C/svg%3E");background-size:100% auto;width:6px;height:18px;margin-right:5px;right:100%;top:50%;-webkit-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon][data-balloon-pos=left]:hover:after,[data-balloon][data-balloon-pos=left]:hover:before,[data-balloon][data-balloon-pos=left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=left][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-balloon][data-balloon-pos=right]:after{left:100%;margin-left:11px;top:50%;-webkit-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon][data-balloon-pos=right]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002C-.002 14.285 12 8.594 12 2.658z'/%3E%3C/svg%3E");background-size:100% auto;width:6px;height:18px;left:100%;margin-left:5px;top:50%;-webkit-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon][data-balloon-pos=right]:hover:after,[data-balloon][data-balloon-pos=right]:hover:before,[data-balloon][data-balloon-pos=right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=right][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-balloon][data-balloon-length=small]:after{white-space:normal;width:80px}[data-balloon][data-balloon-length=medium]:after{white-space:normal;width:150px}[data-balloon][data-balloon-length=large]:after{white-space:normal;width:260px}[data-balloon][data-balloon-length=xlarge]:after{white-space:normal;width:380px}@media screen and (max-width:768px){[data-balloon][data-balloon-length=xlarge]:after{white-space:normal;width:90vw}}[data-balloon][data-balloon-length=fit]:after{white-space:normal;width:100%}@-webkit-keyframes my-face{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-.5px) rotate(-1.5deg);transform:translateY(-.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}28%{-webkit-transform:translateY(.5px) rotate(1.5deg);transform:translateY(.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}32%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}34%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}50%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(.5px) rotate(2.5deg);transform:translateY(.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}76%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-.5deg);transform:translateY(2.5px) rotate(-.5deg)}92%{-webkit-transform:translateY(.5px) rotate(-.5deg);transform:translateY(.5px) rotate(-.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(.5deg);transform:translateY(2.5px) rotate(.5deg)}96%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}0%,to{-webkit-transform:translate(0) rotate(0deg);transform:translate(0) rotate(0deg)}}@keyframes my-face{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-.5px) rotate(-1.5deg);transform:translateY(-.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}28%{-webkit-transform:translateY(.5px) rotate(1.5deg);transform:translateY(.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}32%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}34%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}50%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(.5px) rotate(2.5deg);transform:translateY(.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}76%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-.5deg);transform:translateY(2.5px) rotate(-.5deg)}92%{-webkit-transform:translateY(.5px) rotate(-.5deg);transform:translateY(.5px) rotate(-.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(.5deg);transform:translateY(2.5px) rotate(.5deg)}96%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}0%,to{-webkit-transform:translate(0) rotate(0deg);transform:translate(0) rotate(0deg)}}.dplayer{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:1}.dplayer *{box-sizing:content-box}.dplayer svg{width:100%;height:100%}.dplayer svg circle,.dplayer svg path{fill:#fff}.dplayer:-webkit-full-screen{width:100%;height:100%;background:#000;position:fixed;z-index:100000;left:0;top:0}.dplayer:-webkit-full-screen .dplayer-danmaku .dplayer-danmaku-bottom.dplayer-danmaku-move,.dplayer:-webkit-full-screen .dplayer-danmaku .dplayer-danmaku-top.dplayer-danmaku-move{-webkit-animation:danmaku-center 6s linear;animation:danmaku-center 6s linear;-webkit-animation-play-state:inherit;animation-play-state:inherit}.dplayer:-webkit-full-screen .dplayer-danmaku .dplayer-danmaku-right.dplayer-danmaku-move{-webkit-animation:danmaku 8s linear;animation:danmaku 8s linear;-webkit-animation-play-state:inherit;animation-play-state:inherit}.dplayer.dplayer-live .dplayer-bar-wrap,.dplayer.dplayer-live .dplayer-setting-loop,.dplayer.dplayer-live .dplayer-setting-speed,.dplayer.dplayer-live .dplayer-time,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-comment,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box .dplayer-setting-danmaku,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box .dplayer-setting-danunlimit,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box .dplayer-setting-showdan,.dplayer.dplayer-no-danmaku .dplayer-danmaku{display:none}.dplayer.dplayer-arrow .dplayer-danmaku{font-size:18px}.dplayer.dplayer-arrow .dplayer-icon{margin:0 -3px}.dplayer.dplayer-playing .dplayer-danmaku .dplayer-danmaku-move{-webkit-animation-play-state:running;animation-play-state:running}@media (min-width:900px){.dplayer.dplayer-playing .dplayer-controller,.dplayer.dplayer-playing .dplayer-controller-mask{opacity:0}.dplayer.dplayer-playing:hover .dplayer-controller,.dplayer.dplayer-playing:hover .dplayer-controller-mask{opacity:1}}.dplayer.dplayer-loading .dplayer-bezel .diplayer-loading-icon{display:block}.dplayer.dplayer-loading .dplayer-danmaku,.dplayer.dplayer-loading .dplayer-danmaku-move,.dplayer.dplayer-paused .dplayer-danmaku,.dplayer.dplayer-paused .dplayer-danmaku-move{-webkit-animation-play-state:paused;animation-play-state:paused}.dplayer.dplayer-hide-controller{cursor:none}.dplayer.dplayer-hide-controller .dplayer-controller,.dplayer.dplayer-hide-controller .dplayer-controller-mask{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.dplayer.dplayer-show-controller .dplayer-controller,.dplayer.dplayer-show-controller .dplayer-controller-mask{opacity:1}.dplayer.dplayer-fulled{position:fixed;z-index:100000;left:0;top:0;width:100%;height:100%}.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-camera-icon,.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-volume{display:none}.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-full .dplayer-full-in-icon{position:static;display:inline-block}.dplayer.dplayer-mobile .dplayer-bar-time{display:none}.dplayer-web-fullscreen-fix{position:fixed;top:0;left:0;margin:0;padding:0}[data-balloon]:before{display:none}[data-balloon]:after{padding:.3em .7em;background:hsla(0,0%,7%,.7)}[data-balloon][data-balloon-pos=up]:after{margin-bottom:0}.dplayer-bezel{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.dplayer-bezel .dplayer-bezel-icon{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;box-sizing:border-box;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none}.dplayer-bezel .dplayer-bezel-icon.dplayer-bezel-transition{-webkit-animation:bezel-hide .5s linear;animation:bezel-hide .5s linear}@-webkit-keyframes bezel-hide{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(2);transform:scale(2)}}@keyframes bezel-hide{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(2);transform:scale(2)}}.dplayer-bezel .dplayer-danloading{position:absolute;top:50%;margin-top:-7px;width:100%;text-align:center;font-size:14px;line-height:14px;-webkit-animation:my-face 5s infinite ease-in-out;animation:my-face 5s infinite ease-in-out}.dplayer-bezel .diplayer-loading-icon{display:none;position:absolute;top:50%;left:50%;margin:-18px 0 0 -18px;height:36px;width:36px;pointer-events:none}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-hide{display:none}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot{-webkit-animation:diplayer-loading-dot-fade .8s ease infinite;animation:diplayer-loading-dot-fade .8s ease infinite;opacity:0;-webkit-transform-origin:4px 4px;transform-origin:4px 4px}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-7{-webkit-animation-delay:.7s;animation-delay:.7s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-6{-webkit-animation-delay:.6s;animation-delay:.6s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-5{-webkit-animation-delay:.5s;animation-delay:.5s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-4{-webkit-animation-delay:.4s;animation-delay:.4s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-3{-webkit-animation-delay:.3s;animation-delay:.3s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-2{-webkit-animation-delay:.2s;animation-delay:.2s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-1{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes diplayer-loading-dot-fade{0%{opacity:.7;-webkit-transform:scale(1.2);transform:scale(1.2)}50%{opacity:.25;-webkit-transform:scale(.9);transform:scale(.9)}to{opacity:.25;-webkit-transform:scale(.85);transform:scale(.85)}}@keyframes diplayer-loading-dot-fade{0%{opacity:.7;-webkit-transform:scale(1.2);transform:scale(1.2)}50%{opacity:.25;-webkit-transform:scale(.9);transform:scale(.9)}to{opacity:.25;-webkit-transform:scale(.85);transform:scale(.85)}}.dplayer-controller-mask{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%}.dplayer-controller,.dplayer-controller-mask{position:absolute;bottom:0;transition:all .3s ease}.dplayer-controller{left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dplayer-controller.dplayer-controller-comment .dplayer-icons{display:none}.dplayer-controller.dplayer-controller-comment .dplayer-icons.dplayer-comment-box{display:block}.dplayer-controller .dplayer-bar-wrap{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.dplayer-controller .dplayer-bar-wrap:hover .dplayer-bar .dplayer-played .dplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-preview{position:absolute;background:#fff;pointer-events:none;display:none;background-size:auto 100%}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-preview-canvas{position:absolute;width:100%;height:100%;z-index:1;pointer-events:none}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-time{position:absolute;left:0;top:-20px;width:30px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-time.hidden{opacity:0}.dplayer-controller .dplayer-bar-wrap .dplayer-bar{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-loaded{background:hsla(0,0%,100%,.4);transition:all .5s ease}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-loaded,.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-played{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-played .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.dplayer-controller .dplayer-icons{height:38px;position:absolute;bottom:0}.dplayer-controller .dplayer-icons.dplayer-comment-box{display:none;position:absolute;transition:all .3s ease-in-out;z-index:2;height:38px;bottom:0;left:20px;right:20px;color:#fff}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-icon{padding:7px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-icon{position:absolute;left:0;top:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-send-icon{position:absolute;right:0;top:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box{position:absolute;background:rgba(28,28,28,.9);bottom:41px;left:0;box-shadow:0 0 25px rgba(0,0,0,.3);border-radius:4px;padding:10px 10px 16px;font-size:14px;width:204px;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box.dplayer-comment-setting-open{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box input[type=radio]{display:none}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box label{cursor:pointer}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-title{font-size:13px;color:#fff;line-height:30px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type{font-size:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type .dplayer-comment-setting-title{margin-bottom:6px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type label:nth-child(2) span{border-radius:4px 0 0 4px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type label:nth-child(4) span{border-radius:0 4px 4px 0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type span{width:33%;padding:4px 6px;line-height:16px;display:inline-block;font-size:12px;color:#fff;border:1px solid #fff;margin-right:-1px;box-sizing:border-box;text-align:center;cursor:pointer}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type input:checked+span{background:#e4e4e6;color:#1c1c1c}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color{font-size:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color label{font-size:0;padding:6px;display:inline-block}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color span{width:22px;height:22px;display:inline-block;border-radius:50%;box-sizing:border-box;cursor:pointer}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color span:hover{-webkit-animation:my-face 5s infinite ease-in-out;animation:my-face 5s infinite ease-in-out}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input{outline:none;border:none;padding:8px 31px;font-size:14px;line-height:18px;text-align:center;border-radius:4px;background:none;margin:0;height:100%;box-sizing:border-box;width:100%;color:#fff}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::-webkit-input-placeholder{color:#fff;opacity:.8}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input:-ms-input-placeholder,.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::-ms-input-placeholder{color:#fff;opacity:.8}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::placeholder{color:#fff;opacity:.8}.dplayer-controller .dplayer-icons.dplayer-icons-left .dplayer-icon{padding:7px}.dplayer-controller .dplayer-icons.dplayer-icons-right{right:20px}.dplayer-controller .dplayer-icons.dplayer-icons-right .dplayer-icon{padding:8px}.dplayer-controller .dplayer-icons .dplayer-live-badge,.dplayer-controller .dplayer-icons .dplayer-time{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.dplayer-controller .dplayer-icons .dplayer-live-dot{display:inline-block;width:6px;height:6px;vertical-align:4%;margin-right:5px;content:"";border-radius:6px}.dplayer-controller .dplayer-icons .dplayer-icon{width:40px;height:100%;border:none;background-color:transparent;outline:none;cursor:pointer;vertical-align:middle;box-sizing:border-box;display:inline-block}.dplayer-controller .dplayer-icons .dplayer-icon .dplayer-icon-content{transition:all .2s ease-in-out;opacity:.8}.dplayer-controller .dplayer-icons .dplayer-icon:hover .dplayer-icon-content{opacity:1}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-quality-icon{color:#fff;width:auto;line-height:22px;font-size:14px}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-comment-icon{padding:10px 9px 9px}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-setting-icon{padding-top:8.5px}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-volume-icon{width:43px}.dplayer-controller .dplayer-icons .dplayer-volume{position:relative;display:inline-block;cursor:pointer;height:100%}.dplayer-controller .dplayer-icons .dplayer-volume:hover .dplayer-volume-bar-wrap .dplayer-volume-bar{width:45px}.dplayer-controller .dplayer-icons .dplayer-volume:hover .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-volume.dplayer-volume-active .dplayer-volume-bar-wrap .dplayer-volume-bar{width:45px}.dplayer-controller .dplayer-icons .dplayer-volume.dplayer-volume-active .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap{display:inline-block;margin:0 10px 0 -5px;vertical-align:middle;height:100%}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.dplayer-controller .dplayer-icons .dplayer-setting,.dplayer-controller .dplayer-icons .dplayer-subtitle-btn{display:inline-block;height:100%}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box{position:absolute;right:0;bottom:50px;-webkit-transform:scale(0);transform:scale(0);width:150px;border-radius:2px;background:rgba(28,28,28,.9);padding:7px 0;transition:all .3s ease-in-out;overflow:hidden;z-index:2}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box>div{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box>div.dplayer-setting-origin-panel{display:block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-open{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-narrow{width:70px;height:180px;text-align:center}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-speed .dplayer-setting-origin-panel{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-speed .dplayer-setting-speed-panel{display:block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-item,.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-speed-item{height:30px;padding:5px 10px;box-sizing:border-box;cursor:pointer;position:relative}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-item:hover,.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-speed-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku{padding:5px 0}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-label{padding:0 10px;display:inline}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku:hover .dplayer-label{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku:hover .dplayer-danmaku-bar-wrap{display:inline-block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku.dplayer-setting-danmaku-active .dplayer-label{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku.dplayer-setting-danmaku-active .dplayer-danmaku-bar-wrap{display:inline-block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap{padding:0 10px;box-sizing:border-box;display:none;vertical-align:middle;height:100%;width:100%}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar{position:relative;top:8.5px;width:100%;height:3px;background:#fff;transition:all .3s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar .dplayer-danmaku-bar-inner{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;background:#aaa;will-change:width}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar .dplayer-danmaku-bar-inner .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;background:#aaa}.dplayer-controller .dplayer-icons .dplayer-full{display:inline-block;height:100%;position:relative}.dplayer-controller .dplayer-icons .dplayer-full:hover .dplayer-full-in-icon{display:block}.dplayer-controller .dplayer-icons .dplayer-full .dplayer-full-in-icon{position:absolute;top:-30px;z-index:1;display:none}.dplayer-controller .dplayer-icons .dplayer-quality{position:relative;display:inline-block;height:100%;z-index:2}.dplayer-controller .dplayer-icons .dplayer-quality:hover .dplayer-quality-list,.dplayer-controller .dplayer-icons .dplayer-quality:hover .dplayer-quality-mask{display:block}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-mask{display:none;position:absolute;bottom:38px;left:-18px;width:80px;padding-bottom:12px}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-list{display:none;font-size:12px;width:80px;border-radius:2px;background:rgba(28,28,28,.9);padding:5px 0;transition:all .3s ease-in-out;overflow:hidden;color:#fff;text-align:center}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-item{height:25px;box-sizing:border-box;cursor:pointer;line-height:25px}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-controller .dplayer-icons .dplayer-comment{display:inline-block;height:100%}.dplayer-controller .dplayer-icons .dplayer-label{color:#eee;font-size:13px;display:inline-block;vertical-align:middle;white-space:nowrap}.dplayer-controller .dplayer-icons .dplayer-toggle{width:32px;height:20px;text-align:center;font-size:0;vertical-align:middle;position:absolute;top:5px;right:10px}.dplayer-controller .dplayer-icons .dplayer-toggle input{max-height:0;max-width:0;display:none}.dplayer-controller .dplayer-icons .dplayer-toggle input+label{display:inline-block;position:relative;box-shadow:inset 0 0 0 0 #dfdfdf;border:1px solid #dfdfdf;height:20px;width:32px;border-radius:10px;box-sizing:border-box;cursor:pointer;transition:.2s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-toggle input+label:after,.dplayer-controller .dplayer-icons .dplayer-toggle input+label:before{content:"";position:absolute;display:block;height:18px;width:18px;top:0;left:0;border-radius:15px;transition:.2s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-toggle input+label:after{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label{border-color:hsla(0,0%,100%,.5)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label:before{width:30px;background:hsla(0,0%,100%,.5)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label:after{left:12px}.dplayer-danmaku{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff}.dplayer-danmaku .dplayer-danmaku-item{display:inline-block;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;white-space:nowrap;text-shadow:.5px .5px .5px rgba(0,0,0,.5)}.dplayer-danmaku .dplayer-danmaku-item--demo{position:absolute;visibility:hidden}.dplayer-danmaku .dplayer-danmaku-right{position:absolute;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.dplayer-danmaku .dplayer-danmaku-right.dplayer-danmaku-move{will-change:transform;-webkit-animation:danmaku 5s linear;animation:danmaku 5s linear;-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes danmaku{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes danmaku{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.dplayer-danmaku .dplayer-danmaku-bottom,.dplayer-danmaku .dplayer-danmaku-top{position:absolute;width:100%;text-align:center;visibility:hidden}.dplayer-danmaku .dplayer-danmaku-bottom.dplayer-danmaku-move,.dplayer-danmaku .dplayer-danmaku-top.dplayer-danmaku-move{will-change:visibility;-webkit-animation:danmaku-center 4s linear;animation:danmaku-center 4s linear;-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes danmaku-center{0%{visibility:visible}to{visibility:visible}}@keyframes danmaku-center{0%{visibility:visible}to{visibility:visible}}.dplayer-logo{pointer-events:none;position:absolute;left:20px;top:20px;max-width:50px;max-height:50px}.dplayer-logo img{max-width:100%;max-height:100%;background:none}.dplayer-menu{position:absolute;width:170px;border-radius:2px;background:rgba(28,28,28,.85);padding:5px 0;overflow:hidden;z-index:3;display:none}.dplayer-menu.dplayer-menu-show{display:block}.dplayer-menu .dplayer-menu-item{height:30px;box-sizing:border-box;cursor:pointer}.dplayer-menu .dplayer-menu-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-menu .dplayer-menu-item a{padding:0 10px;line-height:30px;color:#eee;font-size:13px;display:inline-block;vertical-align:middle;width:100%;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dplayer-menu .dplayer-menu-item a:hover{text-decoration:none}.dplayer-notice{opacity:0;position:absolute;bottom:60px;left:20px;font-size:14px;border-radius:2px;background:rgba(28,28,28,.9);padding:7px 20px;transition:all .3s ease-in-out;overflow:hidden;color:#fff;pointer-events:none}.dplayer-subtitle{position:absolute;bottom:40px;width:90%;left:5%;text-align:center;color:#fff;text-shadow:.5px .5px .5px rgba(0,0,0,.5);font-size:20px}.dplayer-subtitle.dplayer-subtitle-hide{display:none}.dplayer-mask{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.dplayer-mask.dplayer-mask-show{display:block}.dplayer-video-wrap{position:relative;background:#000;font-size:0;width:100%;height:100%}.dplayer-video-wrap .dplayer-video{width:100%;height:100%;display:none}.dplayer-video-wrap .dplayer-video-current{display:block}.dplayer-video-wrap .dplayer-video-prepare{display:none}.dplayer-info-panel{position:absolute;top:10px;left:10px;width:400px;background:rgba(28,28,28,.8);padding:10px;color:#fff;font-size:12px;border-radius:2px}.dplayer-info-panel-hide{display:none}.dplayer-info-panel .dplayer-info-panel-close{cursor:pointer;position:absolute;right:10px;top:10px}.dplayer-info-panel .dplayer-info-panel-item>span{display:inline-block;vertical-align:middle;line-height:15px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dplayer-info-panel .dplayer-info-panel-item-title{width:100px;text-align:right;margin-right:10px}.dplayer-info-panel .dplayer-info-panel-item-data{width:260px} -/*# sourceMappingURL=DPlayer.min.css.map*/ - - -.dialog-simple.dplayer-dialog, -.dialog-simple.dplayer-dialog .aui-outer, -.dialog-simple.dplayer-dialog .aui-border {overflow: visible;} -div.dialog-simple.dplayer-dialog .aui-header{} -div.dialog-simple.dplayer-dialog .aui-title{ - background:#666;filter: alpha(opacity=50);opacity:0.5; - border-radius: 0;opacity:1; -} -div.dialog-simple.dplayer-dialog .aui-header {top:0px;background:#000;background:rgba(0,0,0,0.01);} -div.dialog-simple.dplayer-dialog.dialog-max .aui-header {top:0px;background:transparent;} -div.dialog-simple.dplayer-dialog .aui-title{background:#000;filter: alpha(opacity=50);opacity:0.5;} -.Dplayer { - display:block; - color:#f9f9f9; - box-shadow: 0 2px 30px rgba(50,50,50,0.5); - margin:0; - height: 100%;width: 100%; - background: #000; - position: relative; -} -.dialog-simple.dplayer-dialog.aui-state-drag .aui-title, -.dialog-simple.dplayer-dialog .dialog-mouse-in .aui-title{ - opacity:1;background: rgba(0,0,0,0.3); - margin-left: -1px;margin-top: -1px; -} -div.dialog-simple.dplayer-dialog .aui-header{ - position: absolute; - left: 0px;right: 0px; - width: 100%;height: 40px; -} -div.dialog-simple.dplayer-dialog .aui-title-bar{z-index: 100;} -div.dialog-simple.dplayer-dialog .aui-title{background:none;opacity: 0;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-min, -body div.dialog-simple.dplayer-dialog .aui-outer .aui-max, -body div.dialog-simple.dplayer-dialog .aui-outer .aui-close{ - border-radius: 50%; - background-image: none; - background: rgba(255, 255, 255, 0.3); - width: 18px; - height: 18px; - font-size: 12px; - line-height: 18px; -} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-min:hover{background: #ffeb3b;color: #8e810d;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-max:hover{background: #4CAF50;color: #19581c;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-close:hover{background:#f30;color:#751717;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-close{right:6px;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-max{right: 28px;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-min{right: 50px;} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-close:before{content: "\f00d";} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-max:before{content: "\f065";} -body div.dialog-simple.dplayer-dialog .aui-outer .aui-min:before{content: "\f068";} -.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box label { - cursor: pointer;display: inline; -} diff --git a/plugin/document/kod/plugins/DPlayer/static/DPlayer/DPlayer.min.js b/plugin/document/kod/plugins/DPlayer/static/DPlayer/DPlayer.min.js deleted file mode 100644 index 41c66714e..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/DPlayer/DPlayer.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("DPlayer",[],t):"object"==typeof exports?exports.DPlayer=t():e.DPlayer=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=5)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=/mobile/i.test(window.navigator.userAgent),a={secondToTime:function(e){var t=function(e){return e<10?"0"+e:""+e},n=Math.floor(e/3600),i=Math.floor((e-3600*n)/60),a=Math.floor(e-3600*n-60*i);return(n>0?[n,i,a]:[i,a]).map(t).join(":")},getElementViewLeft:function(e){var t=e.offsetLeft,n=e.offsetParent,i=document.body.scrollLeft+document.documentElement.scrollLeft;if(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement)for(;null!==n&&n!==e;)t+=n.offsetLeft,n=n.offsetParent;else for(;null!==n;)t+=n.offsetLeft,n=n.offsetParent;return t-i},getScrollPosition:function(){return{left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,top:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}},setScrollPosition:function(e){var t=e.left,n=void 0===t?0:t,i=e.top,a=void 0===i?0:i;this.isFirefox?(document.documentElement.scrollLeft=n,document.documentElement.scrollTop=a):window.scrollTo(n,a)},isMobile:i,isFirefox:/firefox/i.test(window.navigator.userAgent),isChrome:/chrome/i.test(window.navigator.userAgent),storage:{set:function(e,t){localStorage.setItem(e,t)},get:function(e){return localStorage.getItem(e)}},cumulativeOffset:function(e){var t=0,n=0;do{t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent}while(e);return{top:t,left:n}},nameMap:{dragStart:i?"touchstart":"mousedown",dragMove:i?"touchmove":"mousemove",dragEnd:i?"touchend":"mouseup"}};t.default=a},function(e,t,n){"use strict";var i,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":a(window))&&(i=window)}e.exports=i},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var a=n(16),o=i(a),s=n(17),r=i(s),l=n(18),c=i(l),u=n(19),d=i(u),p=n(20),h=i(p),y=n(21),m=i(y),f=n(22),v=i(f),g=n(23),b=i(g),k=n(24),w=i(k),x=n(25),S=i(x),T=n(26),L=i(T),M=n(27),q=i(M),_=n(28),E=i(_),B=n(29),P=i(B),C=n(30),O=i(C),z=n(31),F=i(z),j={play:o.default,pause:r.default,volumeUp:c.default,volumeDown:d.default,volumeOff:h.default,full:m.default,fullWeb:v.default,setting:b.default,right:w.default,comment:S.default,commentOff:L.default,send:q.default,pallette:E.default,camera:P.default,subtitle:O.default,loading:F.default};t.default=j},function(e,t,n){"use strict";e.exports=n(33)},function(e,t,n){var i=n(3);e.exports=function(e){"use strict";e=e||{};var t="",n=e.enableSubtitle,a=e.subtitle,o=e.current,s=e.pic,r=i.$escape,l=e.screenshot,c=e.preload,u=e.url,n=a&&"webvtt"===a.type;return t+='\n<video\n class="dplayer-video ',o&&(t+="dplayer-video-current"),t+='"\n webkit-playsinline\n playsinline\n ',s&&(t+='poster="',t+=r(s),t+='"'),t+="\n ",(l||n)&&(t+='crossorigin="anonymous"'),t+="\n ",c&&(t+='preload="',t+=r(c),t+='"'),t+="\n ",u&&(t+='src="',t+=r(u),t+='"'),t+="\n >\n ",n&&(t+='\n <track kind="metadata" default src="',t+=r(a.url),t+='"></track>\n '),t+="\n</video>"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(6);var i=n(7),a=function(e){return e&&e.__esModule?e:{default:e}}(i);console.log("\n %c DPlayer v1.22.2 d3847a3 %c http://dplayer.js.org \n\n","color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;"),t.default=a.default},function(e,t){},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=n(8),r=i(s),l=n(0),c=i(l),u=n(12),d=i(u),p=n(14),h=i(p),y=n(15),m=i(y),f=n(2),v=i(f),g=n(35),b=i(g),k=n(36),w=i(k),x=n(37),S=i(x),T=n(38),L=i(T),M=n(39),q=i(M),_=n(40),E=i(_),B=n(41),P=i(B),C=n(42),O=i(C),z=n(43),F=i(z),j=n(45),I=i(j),D=n(46),W=i(D),H=n(47),A=i(H),R=n(48),V=i(R),X=n(49),N=i(X),U=n(4),$=i(U),Q=0,J=[],Y=function(){function e(t){var n=this;a(this,e),this.options=(0,d.default)(t),this.options.video.quality&&(this.qualityIndex=this.options.video.defaultQuality,this.quality=this.options.video.quality[this.options.video.defaultQuality]),this.tran=new h.default(this.options.lang).tran,this.events=new w.default,this.user=new L.default(this),this.container=this.options.container,this.container.classList.add("dplayer"),this.options.danmaku||this.container.classList.add("dplayer-no-danmaku"),this.options.live&&this.container.classList.add("dplayer-live"),c.default.isMobile&&this.container.classList.add("dplayer-mobile"),this.arrow=this.container.offsetWidth<=500,this.arrow&&this.container.classList.add("dplayer-arrow"),this.template=new m.default({container:this.container,options:this.options,index:Q,tran:this.tran}),this.video=this.template.video,this.bar=new E.default(this.template),this.bezel=new O.default(this.template.bezel),this.fullScreen=new S.default(this),this.controller=new F.default(this),this.options.danmaku&&(this.danmaku=new b.default({container:this.template.danmaku,opacity:this.user.get("opacity"),callback:function(){setTimeout(function(){n.template.danmakuLoading.style.display="none",n.options.autoplay&&n.play()},0)},error:function(e){n.notice(e)},apiBackend:this.options.apiBackend,borderColor:this.options.theme,height:this.arrow?24:30,time:function(){return n.video.currentTime},unlimited:this.user.get("unlimited"),api:{id:this.options.danmaku.id,address:this.options.danmaku.api,token:this.options.danmaku.token,maximum:this.options.danmaku.maximum,addition:this.options.danmaku.addition,user:this.options.danmaku.user},events:this.events}),this.comment=new W.default(this)),this.setting=new I.default(this),document.addEventListener("click",function(){n.focus=!1},!0),this.container.addEventListener("click",function(){n.focus=!0},!0),this.paused=!0,this.time=new P.default(this),this.hotkey=new A.default(this),this.contextmenu=new V.default(this),this.initVideo(this.video,this.quality&&this.quality.type||this.options.video.type),this.infoPanel=new N.default(this),!this.danmaku&&this.options.autoplay&&this.play(),Q++,J.push(this)}return o(e,[{key:"seek",value:function(e){e=Math.max(e,0),this.video.duration&&(e=Math.min(e,this.video.duration)),this.video.currentTime<e?this.notice(this.tran("FF")+" "+(e-this.video.currentTime).toFixed(0)+" "+this.tran("s")):this.video.currentTime>e&&this.notice(this.tran("REW")+" "+(this.video.currentTime-e).toFixed(0)+" "+this.tran("s")),this.video.currentTime=e,this.danmaku&&this.danmaku.seek(),this.bar.set("played",e/this.video.duration,"width")}},{key:"play",value:function(){var e=this;if(this.paused=!1,this.video.paused&&this.bezel.switch(v.default.play),this.template.playButton.innerHTML=v.default.pause,r.default.resolve(this.video.play()).catch(function(){e.pause()}).then(function(){}),this.time.enable("loading"),this.time.enable("progress"),this.container.classList.remove("dplayer-paused"),this.container.classList.add("dplayer-playing"),this.danmaku&&this.danmaku.play(),this.options.mutex)for(var t=0;t<J.length;t++)this!==J[t]&&J[t].pause()}},{key:"pause",value:function(){this.paused=!0,this.container.classList.remove("dplayer-loading"),this.video.paused||this.bezel.switch(v.default.pause),this.ended=!1,this.template.playButton.innerHTML=v.default.play,this.video.pause(),this.time.disable("loading"),this.time.disable("progress"),this.container.classList.remove("dplayer-playing"),this.container.classList.add("dplayer-paused"),this.danmaku&&this.danmaku.pause()}},{key:"switchVolumeIcon",value:function(){this.volume()>=.95?this.template.volumeIcon.innerHTML=v.default.volumeUp:this.volume()>0?this.template.volumeIcon.innerHTML=v.default.volumeDown:this.template.volumeIcon.innerHTML=v.default.volumeOff}},{key:"volume",value:function(e,t,n){if(e=parseFloat(e),!isNaN(e)){e=Math.max(e,0),e=Math.min(e,1),this.bar.set("volume",e,"width");var i=(100*e).toFixed(0)+"%";this.template.volumeBarWrapWrap.dataset.balloon=i,t||this.user.set("volume",e),n||this.notice(this.tran("Volume")+" "+(100*e).toFixed(0)+"%"),this.video.volume=e,this.video.muted&&(this.video.muted=!1),this.switchVolumeIcon()}return this.video.volume}},{key:"toggle",value:function(){this.video.paused?this.play():this.pause()}},{key:"on",value:function(e,t){this.events.on(e,t)}},{key:"switchVideo",value:function(e,t){this.pause(),this.video.poster=e.pic?e.pic:"",this.video.src=e.url,this.initMSE(this.video,e.type||"auto"),t&&(this.template.danmakuLoading.style.display="block",this.bar.set("played",0,"width"),this.bar.set("loaded",0,"width"),this.template.ptime.innerHTML="00:00",this.template.danmaku.innerHTML="",this.danmaku&&this.danmaku.reload({id:t.id,address:t.api,token:t.token,maximum:t.maximum,addition:t.addition,user:t.user}))}},{key:"initMSE",value:function(e,t){var n=this;if(this.type=t,this.options.video.customType&&this.options.video.customType[t])"[object Function]"===Object.prototype.toString.call(this.options.video.customType[t])?this.options.video.customType[t](this.video,this):console.error("Illegal customType: "+t);else switch("auto"===this.type&&(/m3u8(#|\?|$)/i.exec(e.src)?this.type="hls":/.flv(#|\?|$)/i.exec(e.src)?this.type="flv":/.mpd(#|\?|$)/i.exec(e.src)?this.type="dash":this.type="normal"),this.type){case"hls":if(Hls)if(Hls.isSupported()){var i=new Hls;i.loadSource(e.src),i.attachMedia(e)}else this.notice("Error: Hls is not supported.");else this.notice("Error: Can't find Hls.");break;case"flv":if(flvjs&&flvjs.isSupported())if(flvjs.isSupported()){var a=flvjs.createPlayer({type:"flv",url:e.src});a.attachMediaElement(e),a.load()}else this.notice("Error: flvjs is not supported.");else this.notice("Error: Can't find flvjs.");break;case"dash":dashjs?dashjs.MediaPlayer().create().initialize(e,e.src,!1):this.notice("Error: Can't find dashjs.");break;case"webtorrent":if(WebTorrent)if(WebTorrent.WEBRTC_SUPPORT){this.container.classList.add("dplayer-loading");var o=new WebTorrent,s=e.src;o.add(s,function(e){e.files.find(function(e){return e.name.endsWith(".mp4")}).renderTo(n.video,{autoplay:n.options.autoplay},function(){n.container.classList.remove("dplayer-loading")})})}else this.notice("Error: Webtorrent is not supported.");else this.notice("Error: Can't find Webtorrent.")}}},{key:"initVideo",value:function(e,t){var n=this;this.initMSE(e,t),this.on("durationchange",function(){1!==e.duration&&(n.template.dtime.innerHTML=c.default.secondToTime(e.duration))}),this.on("progress",function(){var t=e.buffered.length?e.buffered.end(e.buffered.length-1)/e.duration:0;n.bar.set("loaded",t,"width")}),this.on("error",function(){n.tran&&n.notice&&(n.type,n.notice(n.tran("This video fails to load"),-1))}),this.ended=!1,this.on("ended",function(){n.bar.set("played",1,"width"),n.setting.loop?(n.seek(0),e.play()):(n.ended=!0,n.pause()),n.danmaku&&(n.danmaku.danIndex=0)}),this.on("play",function(){n.paused&&n.play()}),this.on("pause",function(){n.paused||n.pause()});for(var i=0;i<this.events.videoEvents.length;i++)!function(t){e.addEventListener(n.events.videoEvents[t],function(){n.events.trigger(n.events.videoEvents[t])})}(i);this.volume(this.user.get("volume"),!0,!0),this.options.subtitle&&(this.subtitle=new q.default(this.template.subtitle,this.video,this.options.subtitle,this.events),this.user.get("subtitle")||this.subtitle.hide())}},{key:"switchQuality",value:function(e){var t=this;if(this.qualityIndex!==e&&!this.switchingQuality){this.qualityIndex=e,this.switchingQuality=!0,this.quality=this.options.video.quality[e],this.template.qualityButton.innerHTML=this.quality.name;var n=this.video.paused;this.video.pause();var i=(0,$.default)({current:!1,pic:null,screenshot:this.options.screenshot,preload:"auto",url:this.quality.url,subtitle:this.options.subtitle}),a=(new DOMParser).parseFromString(i,"text/html").body.firstChild;this.template.videoWrap.insertBefore(a,this.template.videoWrap.getElementsByTagName("div")[0]),this.prevVideo=this.video,this.video=a,this.initVideo(this.video,this.quality.type||this.options.video.type),this.seek(this.prevVideo.currentTime),this.notice(this.tran("Switching to")+" "+this.quality.name+" "+this.tran("quality"),-1),this.events.trigger("quality_start",this.quality),this.on("canplay",function(){if(t.prevVideo){if(t.video.currentTime!==t.prevVideo.currentTime)return void t.seek(t.prevVideo.currentTime);t.template.videoWrap.removeChild(t.prevVideo),t.video.classList.add("dplayer-video-current"),n||t.video.play(),t.prevVideo=null,t.notice(t.tran("Switched to")+" "+t.quality.name+" "+t.tran("quality")),t.switchingQuality=!1,t.events.trigger("quality_end")}})}}},{key:"notice",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.8;this.template.notice.innerHTML=e,this.template.notice.style.opacity=i,this.noticeTime&&clearTimeout(this.noticeTime),this.events.trigger("notice_show",e),this.noticeTime=setTimeout(function(){t.template.notice.style.opacity=0,t.events.trigger("notice_hide")},n)}},{key:"resize",value:function(){this.danmaku&&this.danmaku.resize(),this.events.trigger("resize")}},{key:"speed",value:function(e){this.video.playbackRate=e}},{key:"destroy",value:function(){J.splice(J.indexOf(this),1),this.pause(),this.controller.destroy(),this.time.destroy(),this.video.src="",this.container.innerHTML="",this.events.trigger("destroy");for(var e in this)this.hasOwnProperty(e)&&"paused"!==e&&delete this[e]}}]),e}();t.default=Y},function(e,t,n){"use strict";(function(t){function n(){}function i(e,t){return function(){e.apply(t,arguments)}}function a(e){if(!(this instanceof a))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],u(e,this)}function o(e,t){for(;3===e._state;)e=e._value;if(0===e._state)return void e._deferreds.push(t);e._handled=!0,a._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null===n)return void(1===e._state?s:r)(t.promise,e._value);var i;try{i=n(e._value)}catch(e){return void r(t.promise,e)}s(t.promise,i)})}function s(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"===(void 0===t?"undefined":d(t))||"function"==typeof t)){var n=t.then;if(t instanceof a)return e._state=3,e._value=t,void l(e);if("function"==typeof n)return void u(i(n,t),e)}e._state=1,e._value=t,l(e)}catch(t){r(e,t)}}function r(e,t){e._state=2,e._value=t,l(e)}function l(e){2===e._state&&0===e._deferreds.length&&a._immediateFn(function(){e._handled||a._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function u(e,t){var n=!1;try{e(function(e){n||(n=!0,s(t,e))},function(e){n||(n=!0,r(t,e))})}catch(e){if(n)return;n=!0,r(t,e)}}var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p=setTimeout;a.prototype.catch=function(e){return this.then(null,e)},a.prototype.then=function(e,t){var i=new this.constructor(n);return o(this,new c(e,t,i)),i},a.prototype.finally=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){return t.reject(n)})})},a.all=function(e){return new a(function(t,n){function i(e,s){try{if(s&&("object"===(void 0===s?"undefined":d(s))||"function"==typeof s)){var r=s.then;if("function"==typeof r)return void r.call(s,function(t){i(e,t)},n)}a[e]=s,0==--o&&t(a)}catch(e){n(e)}}if(!e||void 0===e.length)throw new TypeError("Promise.all accepts an array");var a=Array.prototype.slice.call(e);if(0===a.length)return t([]);for(var o=a.length,s=0;s<a.length;s++)i(s,a[s])})},a.resolve=function(e){return e&&"object"===(void 0===e?"undefined":d(e))&&e.constructor===a?e:new a(function(t){t(e)})},a.reject=function(e){return new a(function(t,n){n(e)})},a.race=function(e){return new a(function(t,n){for(var i=0,a=e.length;i<a;i++)e[i].then(t,n)})},a._immediateFn="function"==typeof t&&function(e){t(e)}||function(e){p(e,0)},a._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},e.exports=a}).call(t,n(9).setImmediate)},function(e,t,n){"use strict";function i(e,t){this._id=e,this._clearFn=t}var a=Function.prototype.apply;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(10),t.setImmediate=setImmediate,t.clearImmediate=clearImmediate},function(e,t,n){"use strict";(function(e,t){!function(e,n){function i(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var i={callback:e,args:t};return c[l]=i,r(l),l++}function a(e){delete c[e]}function o(e){var t=e.callback,i=e.args;switch(i.length){case 0:t();break;case 1:t(i[0]);break;case 2:t(i[0],i[1]);break;case 3:t(i[0],i[1],i[2]);break;default:t.apply(n,i)}}function s(e){if(u)setTimeout(s,0,e);else{var t=c[e];if(t){u=!0;try{o(t)}finally{a(e),u=!1}}}}if(!e.setImmediate){var r,l=1,c={},u=!1,d=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,"[object process]"==={}.toString.call(e.process)?function(){r=function(e){t.nextTick(function(){s(e)})}}():function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?function(){var t="setImmediate$"+Math.random()+"$",n=function(n){n.source===e&&"string"==typeof n.data&&0===n.data.indexOf(t)&&s(+n.data.slice(t.length))};e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(n){e.postMessage(t+n,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){s(e.data)},r=function(t){e.port2.postMessage(t)}}():d&&"onreadystatechange"in d.createElement("script")?function(){var e=d.documentElement;r=function(t){var n=d.createElement("script");n.onreadystatechange=function(){s(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():function(){r=function(e){setTimeout(s,0,e)}}(),p.setImmediate=i,p.clearImmediate=a}}("undefined"==typeof self?void 0===e?void 0:e:self)}).call(t,n(1),n(11))},function(e,t,n){"use strict";function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function o(e){if(d===setTimeout)return setTimeout(e,0);if((d===i||!d)&&setTimeout)return d=setTimeout,setTimeout(e,0);try{return d(e,0)}catch(t){try{return d.call(null,e,0)}catch(t){return d.call(this,e,0)}}}function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===a||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function r(){f&&y&&(f=!1,y.length?m=y.concat(m):v=-1,m.length&&l())}function l(){if(!f){var e=o(r);f=!0;for(var t=m.length;t;){for(y=m,m=[];++v<t;)y&&y[v].run();v=-1,t=m.length}y=null,f=!1,s(e)}}function c(e,t){this.fun=e,this.array=t}function u(){}var d,p,h=e.exports={};!function(){try{d="function"==typeof setTimeout?setTimeout:i}catch(e){d=i}try{p="function"==typeof clearTimeout?clearTimeout:a}catch(e){p=a}}();var y,m=[],f=!1,v=-1;h.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];m.push(new c(e,t)),1!==m.length||f||o(l)},c.prototype.run=function(){this.fun.apply(null,this.array)},h.title="browser",h.browser=!0,h.env={},h.argv=[],h.version="",h.versions={},h.on=u,h.addListener=u,h.once=u,h.off=u,h.removeListener=u,h.removeAllListeners=u,h.emit=u,h.prependListener=u,h.prependOnceListener=u,h.listeners=function(e){return[]},h.binding=function(e){throw new Error("process.binding is not supported")},h.cwd=function(){return"/"},h.chdir=function(e){throw new Error("process.chdir is not supported")},h.umask=function(){return 0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(13),o=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){var t={container:e.element||document.getElementsByClassName("dplayer")[0],live:!1,autoplay:!1,theme:"#b7daff",loop:!1,lang:(navigator.language||navigator.browserLanguage).toLowerCase(),screenshot:!1,hotkey:!0,preload:"auto",volume:.7,apiBackend:o.default,video:{},contextmenu:[],mutex:!0};for(var n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n]);return e.video&&!e.video.type&&(e.video.type="auto"),"object"===i(e.danmaku)&&e.danmaku&&!e.danmaku.user&&(e.danmaku.user="DIYgod"),e.subtitle&&(!e.subtitle.type&&(e.subtitle.type="webvtt"),!e.subtitle.fontSize&&(e.subtitle.fontSize="20px"),!e.subtitle.bottom&&(e.subtitle.bottom="40px"),!e.subtitle.color&&(e.subtitle.color="#fff")),e.video.quality&&(e.video.url=e.video.quality[e.video.defaultQuality].url),e.lang&&(e.lang=e.lang.toLowerCase()),e.contextmenu=e.contextmenu.concat([{text:"Video info",click:function(e){e.infoPanel.triggle()}},{text:"About author",link:"https://diygod.me"},{text:"DPlayer v1.22.2",link:"https://github.com/MoePlayer/DPlayer"}]),e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n,i,a){var o=new XMLHttpRequest;o.onreadystatechange=function(){if(4===o.readyState){if(o.status>=200&&o.status<300||304===o.status){var e=JSON.parse(o.responseText);return 0!==e.code?i(o,e):n(o,e)}a(o)}},o.open(null!==t?"POST":"GET",e,!0),o.setRequestHeader("Content-type","application/json; charset=UTF-8"),o.send(null!==t?JSON.stringify(t):null)};t.default={send:function(e,t,n){i(e,t,function(e,t){console.log("Post danmaku: ",t),n&&n()},function(e,t){alert(t.msg)},function(e){console.log("Request was unsuccessful: "+e.status)})},read:function(e,t){i(e,null,function(e,n){t(null,n.danmaku)},function(e,n){t({status:e.status,response:n})},function(e){t({status:e.status,response:null})})}}},function(e,t,n){"use strict";function i(e){var t=this;this.lang=e,this.tran=function(e){return a[t.lang]&&a[t.lang][e]?a[t.lang][e]:e}}Object.defineProperty(t,"__esModule",{value:!0});var a={"zh-cn":{"Danmaku is loading":"\u5f39\u5e55\u52a0\u8f7d\u4e2d",Top:"\u9876\u90e8",Bottom:"\u5e95\u90e8",Rolling:"\u6eda\u52a8","Input danmaku, hit Enter":"\u8f93\u5165\u5f39\u5e55\uff0c\u56de\u8f66\u53d1\u9001","About author":"\u5173\u4e8e\u4f5c\u8005","DPlayer feedback":"\u64ad\u653e\u5668\u610f\u89c1\u53cd\u9988","About DPlayer":"\u5173\u4e8e DPlayer \u64ad\u653e\u5668",Loop:"\u6d17\u8111\u5faa\u73af",Speed:"\u901f\u5ea6","Opacity for danmaku":"\u5f39\u5e55\u900f\u660e\u5ea6",Normal:"\u6b63\u5e38","Please input danmaku content!":"\u8981\u8f93\u5165\u5f39\u5e55\u5185\u5bb9\u554a\u5582\uff01","Set danmaku color":"\u8bbe\u7f6e\u5f39\u5e55\u989c\u8272","Set danmaku type":"\u8bbe\u7f6e\u5f39\u5e55\u7c7b\u578b","Show danmaku":"\u663e\u793a\u5f39\u5e55","This video fails to load":"\u89c6\u9891\u52a0\u8f7d\u5931\u8d25","Switching to":"\u6b63\u5728\u5207\u6362\u81f3","Switched to":"\u5df2\u7ecf\u5207\u6362\u81f3",quality:"\u753b\u8d28",FF:"\u5feb\u8fdb",REW:"\u5feb\u9000","Unlimited danmaku":"\u6d77\u91cf\u5f39\u5e55","Send danmaku":"\u53d1\u9001\u5f39\u5e55",Setting:"\u8bbe\u7f6e","Full screen":"\u5168\u5c4f","Web full screen":"\u9875\u9762\u5168\u5c4f",Send:"\u53d1\u9001",Screenshot:"\u622a\u56fe",s:"\u79d2","Show subtitle":"\u663e\u793a\u5b57\u5e55","Hide subtitle":"\u9690\u85cf\u5b57\u5e55",Volume:"\u97f3\u91cf",Live:"\u76f4\u64ad","Video info":"\u89c6\u9891\u7edf\u8ba1\u4fe1\u606f"},"zh-tw":{"Danmaku is loading":"\u5f48\u5e55\u52a0\u8f09\u4e2d",Top:"\u9802\u90e8",Bottom:"\u5e95\u90e8",Rolling:"\u6efe\u52d5","Input danmaku, hit Enter":"\u8f38\u5165\u5f48\u5e55\uff0cEnter \u767c\u9001","About author":"\u95dc\u65bc\u4f5c\u8005","DPlayer feedback":"\u64ad\u653e\u5668\u610f\u898b\u53cd\u994b","About DPlayer":"\u95dc\u65bc DPlayer \u64ad\u653e\u5668",Loop:"\u5faa\u74b0\u64ad\u653e",Speed:"\u901f\u5ea6","Opacity for danmaku":"\u5f48\u5e55\u900f\u660e\u5ea6",Normal:"\u6b63\u5e38","Please input danmaku content!":"\u8acb\u8f38\u5165\u5f48\u5e55\u5185\u5bb9\u554a\uff01","Set danmaku color":"\u8a2d\u7f6e\u5f48\u5e55\u984f\u8272","Set danmaku type":"\u8a2d\u7f6e\u5f48\u5e55\u985e\u578b","Show danmaku":"\u986f\u793a\u5f48\u5e55","This video fails to load":"\u8996\u983b\u52a0\u8f09\u5931\u6557","Switching to":"\u6b63\u5728\u5207\u63db\u81f3","Switched to":"\u5df2\u7d93\u5207\u63db\u81f3",quality:"\u756b\u8cea",FF:"\u5feb\u9032",REW:"\u5feb\u9000","Unlimited danmaku":"\u6d77\u91cf\u5f48\u5e55","Send danmaku":"\u767c\u9001\u5f48\u5e55",Setting:"\u8a2d\u7f6e","Full screen":"\u5168\u5c4f","Web full screen":"\u9801\u9762\u5168\u5c4f",Send:"\u767c\u9001",Screenshot:"\u622a\u5716",s:"\u79d2","Show subtitle":"\u986f\u793a\u5b57\u5e55","Hide subtitle":"\u96b1\u85cf\u5b57\u5e55",Volume:"\u97f3\u91cf",Live:"\u76f4\u64ad","Video info":"\u8996\u983b\u7d71\u8a08\u4fe1\u606f"}};t.default=i},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=n(2),r=i(s),l=n(32),c=i(l),u=function(){function e(t){a(this,e),this.container=t.container,this.options=t.options,this.index=t.index,this.tran=t.tran,this.init()}return o(e,[{key:"init",value:function(){this.container.innerHTML=(0,c.default)({options:this.options,index:this.index,tran:this.tran,icons:r.default,video:{current:!0,pic:this.options.video.pic,screenshot:this.options.screenshot,preload:this.options.preload,url:this.options.video.url,subtitle:this.options.subtitle}}),this.volumeBar=this.container.querySelector(".dplayer-volume-bar-inner"),this.volumeBarWrap=this.container.querySelector(".dplayer-volume-bar"),this.volumeBarWrapWrap=this.container.querySelector(".dplayer-volume-bar-wrap"),this.volumeButton=this.container.querySelector(".dplayer-volume"),this.volumeIcon=this.container.querySelector(".dplayer-volume-icon .dplayer-icon-content"),this.playedBar=this.container.querySelector(".dplayer-played"),this.loadedBar=this.container.querySelector(".dplayer-loaded"),this.playedBarWrap=this.container.querySelector(".dplayer-bar-wrap"),this.playedBarTime=this.container.querySelector(".dplayer-bar-time"),this.danmaku=this.container.querySelector(".dplayer-danmaku"),this.danmakuLoading=this.container.querySelector(".dplayer-danloading"),this.video=this.container.querySelector(".dplayer-video-current"),this.bezel=this.container.querySelector(".dplayer-bezel-icon"),this.playButton=this.container.querySelector(".dplayer-play-icon"),this.videoWrap=this.container.querySelector(".dplayer-video-wrap"),this.controllerMask=this.container.querySelector(".dplayer-controller-mask"),this.ptime=this.container.querySelector(".dplayer-ptime"),this.settingButton=this.container.querySelector(".dplayer-setting-icon"),this.settingBox=this.container.querySelector(".dplayer-setting-box"),this.mask=this.container.querySelector(".dplayer-mask"),this.loop=this.container.querySelector(".dplayer-setting-loop"),this.loopToggle=this.container.querySelector(".dplayer-setting-loop .dplayer-toggle-setting-input"),this.showDanmaku=this.container.querySelector(".dplayer-setting-showdan"),this.showDanmakuToggle=this.container.querySelector(".dplayer-showdan-setting-input"),this.unlimitDanmaku=this.container.querySelector(".dplayer-setting-danunlimit"),this.unlimitDanmakuToggle=this.container.querySelector(".dplayer-danunlimit-setting-input"),this.speed=this.container.querySelector(".dplayer-setting-speed"),this.speedItem=this.container.querySelectorAll(".dplayer-setting-speed-item"),this.danmakuOpacityBar=this.container.querySelector(".dplayer-danmaku-bar-inner"),this.danmakuOpacityBarWrap=this.container.querySelector(".dplayer-danmaku-bar"),this.danmakuOpacityBarWrapWrap=this.container.querySelector(".dplayer-danmaku-bar-wrap"),this.danmakuOpacityBox=this.container.querySelector(".dplayer-setting-danmaku"),this.dtime=this.container.querySelector(".dplayer-dtime"),this.controller=this.container.querySelector(".dplayer-controller"),this.commentInput=this.container.querySelector(".dplayer-comment-input"),this.commentButton=this.container.querySelector(".dplayer-comment-icon"),this.commentSettingBox=this.container.querySelector(".dplayer-comment-setting-box"),this.commentSettingButton=this.container.querySelector(".dplayer-comment-setting-icon"),this.commentSettingFill=this.container.querySelector(".dplayer-comment-setting-icon path"),this.commentSendButton=this.container.querySelector(".dplayer-send-icon"),this.commentSendFill=this.container.querySelector(".dplayer-send-icon path"),this.commentColorSettingBox=this.container.querySelector(".dplayer-comment-setting-color"),this.browserFullButton=this.container.querySelector(".dplayer-full-icon"),this.webFullButton=this.container.querySelector(".dplayer-full-in-icon"),this.menu=this.container.querySelector(".dplayer-menu"),this.menuItem=this.container.querySelectorAll(".dplayer-menu-item"),this.qualityList=this.container.querySelector(".dplayer-quality-list"),this.camareButton=this.container.querySelector(".dplayer-camera-icon"),this.subtitleButton=this.container.querySelector(".dplayer-subtitle-icon"),this.subtitleButtonInner=this.container.querySelector(".dplayer-subtitle-icon .dplayer-icon-content"),this.subtitle=this.container.querySelector(".dplayer-subtitle"),this.qualityButton=this.container.querySelector(".dplayer-quality-icon"),this.barPreview=this.container.querySelector(".dplayer-bar-preview"),this.barWrap=this.container.querySelector(".dplayer-bar-wrap"),this.notice=this.container.querySelector(".dplayer-notice"),this.infoPanel=this.container.querySelector(".dplayer-info-panel"),this.infoPanelClose=this.container.querySelector(".dplayer-info-panel-close"),this.infoVersion=this.container.querySelector(".dplayer-info-panel-item-version .dplayer-info-panel-item-data"),this.infoFPS=this.container.querySelector(".dplayer-info-panel-item-fps .dplayer-info-panel-item-data"),this.infoType=this.container.querySelector(".dplayer-info-panel-item-type .dplayer-info-panel-item-data"),this.infoUrl=this.container.querySelector(".dplayer-info-panel-item-url .dplayer-info-panel-item-data"),this.infoResolution=this.container.querySelector(".dplayer-info-panel-item-resolution .dplayer-info-panel-item-data"),this.infoDuration=this.container.querySelector(".dplayer-info-panel-item-duration .dplayer-info-panel-item-data"),this.infoDanmakuId=this.container.querySelector(".dplayer-info-panel-item-danmaku-id .dplayer-info-panel-item-data"),this.infoDanmakuApi=this.container.querySelector(".dplayer-info-panel-item-danmaku-api .dplayer-info-panel-item-data"),this.infoDanmakuAmount=this.container.querySelector(".dplayer-info-panel-item-danmaku-amount .dplayer-info-panel-item-data")}}]),e}();t.default=u},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 32"><path d="M15.552 15.168q0.448 0.32 0.448 0.832 0 0.448-0.448 0.768l-13.696 8.512q-0.768 0.512-1.312 0.192t-0.544-1.28v-16.448q0-0.96 0.544-1.28t1.312 0.192z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 17 32"><path d="M14.080 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048zM2.88 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 21 32"><path d="M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528zM25.152 16q0 2.72-1.536 5.056t-4 3.36q-0.256 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.704 0.672-1.056 1.024-0.512 1.376-0.8 1.312-0.96 2.048-2.4t0.736-3.104-0.736-3.104-2.048-2.4q-0.352-0.288-1.376-0.8-0.672-0.352-0.672-1.056 0-0.448 0.32-0.8t0.8-0.352q0.224 0 0.48 0.096 2.496 1.056 4 3.36t1.536 5.056z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 21 32"><path d="M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 21 32"><path d="M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 33"><path d="M6.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v4h4c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333zM30.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h4v-4c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM30.667 12c-0.8 0-1.333-0.533-1.333-1.333v-4h-4c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM1.333 12c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333h-4v4c0 0.8-0.533 1.333-1.333 1.333z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 33"><path d="M24.965 24.38h-18.132c-1.366 0-2.478-1.113-2.478-2.478v-11.806c0-1.364 1.111-2.478 2.478-2.478h18.132c1.366 0 2.478 1.113 2.478 2.478v11.806c0 1.364-1.11 2.478-2.478 2.478zM6.833 10.097v11.806h18.134l-0.002-11.806h-18.132zM2.478 28.928h5.952c0.684 0 1.238-0.554 1.238-1.239 0-0.684-0.554-1.238-1.238-1.238h-5.952v-5.802c0-0.684-0.554-1.239-1.238-1.239s-1.239 0.556-1.239 1.239v5.802c0 1.365 1.111 2.478 2.478 2.478zM30.761 19.412c-0.684 0-1.238 0.554-1.238 1.238v5.801h-5.951c-0.686 0-1.239 0.554-1.239 1.238 0 0.686 0.554 1.239 1.239 1.239h5.951c1.366 0 2.478-1.111 2.478-2.478v-5.801c0-0.683-0.554-1.238-1.239-1.238zM0 5.55v5.802c0 0.683 0.554 1.238 1.238 1.238s1.238-0.555 1.238-1.238v-5.802h5.952c0.684 0 1.238-0.554 1.238-1.238s-0.554-1.238-1.238-1.238h-5.951c-1.366-0.001-2.478 1.111-2.478 2.476zM32 11.35v-5.801c0-1.365-1.11-2.478-2.478-2.478h-5.951c-0.686 0-1.239 0.554-1.239 1.238s0.554 1.238 1.239 1.238h5.951v5.801c0 0.683 0.554 1.237 1.238 1.237 0.686 0.002 1.239-0.553 1.239-1.236z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 28"><path d="M28.633 17.104c0.035 0.21 0.026 0.463-0.026 0.76s-0.14 0.598-0.262 0.904c-0.122 0.306-0.271 0.581-0.445 0.825s-0.367 0.419-0.576 0.524c-0.209 0.105-0.393 0.157-0.55 0.157s-0.332-0.035-0.524-0.105c-0.175-0.052-0.393-0.1-0.655-0.144s-0.528-0.052-0.799-0.026c-0.271 0.026-0.541 0.083-0.812 0.17s-0.502 0.236-0.694 0.445c-0.419 0.437-0.664 0.934-0.734 1.493s0.009 1.092 0.236 1.598c0.175 0.349 0.148 0.699-0.079 1.048-0.105 0.14-0.271 0.284-0.498 0.432s-0.476 0.284-0.747 0.406-0.555 0.218-0.851 0.288c-0.297 0.070-0.559 0.105-0.786 0.105-0.157 0-0.306-0.061-0.445-0.183s-0.236-0.253-0.288-0.393h-0.026c-0.192-0.541-0.52-1.009-0.982-1.402s-1-0.589-1.611-0.589c-0.594 0-1.131 0.197-1.611 0.589s-0.816 0.851-1.009 1.375c-0.087 0.21-0.218 0.362-0.393 0.458s-0.367 0.144-0.576 0.144c-0.244 0-0.52-0.044-0.825-0.131s-0.611-0.197-0.917-0.327c-0.306-0.131-0.581-0.284-0.825-0.458s-0.428-0.349-0.55-0.524c-0.087-0.122-0.135-0.266-0.144-0.432s0.057-0.397 0.197-0.694c0.192-0.402 0.266-0.86 0.223-1.375s-0.266-0.991-0.668-1.428c-0.244-0.262-0.541-0.432-0.891-0.511s-0.681-0.109-0.995-0.092c-0.367 0.017-0.742 0.087-1.127 0.21-0.244 0.070-0.489 0.052-0.734-0.052-0.192-0.070-0.371-0.231-0.537-0.485s-0.314-0.533-0.445-0.838c-0.131-0.306-0.231-0.62-0.301-0.943s-0.087-0.59-0.052-0.799c0.052-0.384 0.227-0.629 0.524-0.734 0.524-0.21 0.995-0.555 1.415-1.035s0.629-1.017 0.629-1.611c0-0.611-0.21-1.144-0.629-1.598s-0.891-0.786-1.415-0.996c-0.157-0.052-0.288-0.179-0.393-0.38s-0.157-0.406-0.157-0.616c0-0.227 0.035-0.48 0.105-0.76s0.162-0.55 0.275-0.812 0.244-0.502 0.393-0.72c0.148-0.218 0.31-0.38 0.485-0.485 0.14-0.087 0.275-0.122 0.406-0.105s0.275 0.052 0.432 0.105c0.524 0.21 1.070 0.275 1.637 0.197s1.070-0.327 1.506-0.747c0.21-0.209 0.362-0.467 0.458-0.773s0.157-0.607 0.183-0.904c0.026-0.297 0.026-0.568 0-0.812s-0.048-0.419-0.065-0.524c-0.035-0.105-0.066-0.227-0.092-0.367s-0.013-0.262 0.039-0.367c0.105-0.244 0.293-0.458 0.563-0.642s0.563-0.336 0.878-0.458c0.314-0.122 0.62-0.214 0.917-0.275s0.533-0.092 0.707-0.092c0.227 0 0.406 0.074 0.537 0.223s0.223 0.301 0.275 0.458c0.192 0.471 0.507 0.886 0.943 1.244s0.952 0.537 1.546 0.537c0.611 0 1.153-0.17 1.624-0.511s0.803-0.773 0.996-1.297c0.070-0.14 0.179-0.284 0.327-0.432s0.301-0.223 0.458-0.223c0.244 0 0.511 0.035 0.799 0.105s0.572 0.166 0.851 0.288c0.279 0.122 0.537 0.279 0.773 0.472s0.423 0.402 0.563 0.629c0.087 0.14 0.113 0.293 0.079 0.458s-0.070 0.284-0.105 0.354c-0.227 0.506-0.297 1.039-0.21 1.598s0.341 1.048 0.76 1.467c0.419 0.419 0.934 0.651 1.546 0.694s1.179-0.057 1.703-0.301c0.14-0.087 0.31-0.122 0.511-0.105s0.371 0.096 0.511 0.236c0.262 0.244 0.493 0.616 0.694 1.113s0.336 1 0.406 1.506c0.035 0.297-0.013 0.528-0.144 0.694s-0.266 0.275-0.406 0.327c-0.542 0.192-1.004 0.528-1.388 1.009s-0.576 1.026-0.576 1.637c0 0.594 0.162 1.113 0.485 1.559s0.747 0.764 1.27 0.956c0.122 0.070 0.227 0.14 0.314 0.21 0.192 0.157 0.323 0.358 0.393 0.602v0zM16.451 19.462c0.786 0 1.528-0.149 2.227-0.445s1.305-0.707 1.821-1.231c0.515-0.524 0.921-1.131 1.218-1.821s0.445-1.428 0.445-2.214c0-0.786-0.148-1.524-0.445-2.214s-0.703-1.292-1.218-1.808c-0.515-0.515-1.122-0.921-1.821-1.218s-1.441-0.445-2.227-0.445c-0.786 0-1.524 0.148-2.214 0.445s-1.292 0.703-1.808 1.218c-0.515 0.515-0.921 1.118-1.218 1.808s-0.445 1.428-0.445 2.214c0 0.786 0.149 1.524 0.445 2.214s0.703 1.297 1.218 1.821c0.515 0.524 1.118 0.934 1.808 1.231s1.428 0.445 2.214 0.445v0z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M27.128 0.38h-22.553c-2.336 0-4.229 1.825-4.229 4.076v16.273c0 2.251 1.893 4.076 4.229 4.076h4.229v-2.685h8.403l-8.784 8.072 1.566 1.44 7.429-6.827h9.71c2.335 0 4.229-1.825 4.229-4.076v-16.273c0-2.252-1.894-4.076-4.229-4.076zM28.538 19.403c0 1.5-1.262 2.717-2.819 2.717h-8.36l-0.076-0.070-0.076 0.070h-11.223c-1.557 0-2.819-1.217-2.819-2.717v-13.589c0-1.501 1.262-2.718 2.819-2.718h19.734c1.557 0 2.819-0.141 2.819 1.359v14.947zM9.206 10.557c-1.222 0-2.215 0.911-2.215 2.036s0.992 2.035 2.215 2.035c1.224 0 2.216-0.911 2.216-2.035s-0.992-2.036-2.216-2.036zM22.496 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.224 0 2.215-0.911 2.215-2.035s-0.991-2.036-2.215-2.036zM15.852 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.222 0 2.215-0.911 2.215-2.035s-0.992-2.036-2.215-2.036z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M27.090 0.131h-22.731c-2.354 0-4.262 1.839-4.262 4.109v16.401c0 2.269 1.908 4.109 4.262 4.109h4.262v-2.706h8.469l-8.853 8.135 1.579 1.451 7.487-6.88h9.787c2.353 0 4.262-1.84 4.262-4.109v-16.401c0-2.27-1.909-4.109-4.262-4.109v0zM28.511 19.304c0 1.512-1.272 2.738-2.841 2.738h-8.425l-0.076-0.070-0.076 0.070h-11.311c-1.569 0-2.841-1.226-2.841-2.738v-13.696c0-1.513 1.272-2.739 2.841-2.739h19.889c1.569 0 2.841-0.142 2.841 1.37v15.064z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M13.725 30l3.9-5.325-3.9-1.125v6.45zM0 17.5l11.050 3.35 13.6-11.55-10.55 12.425 11.8 3.65 6.1-23.375-32 15.5z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M19.357 2.88c1.749 0 3.366 0.316 4.851 0.946 1.485 0.632 2.768 1.474 3.845 2.533s1.922 2.279 2.532 3.661c0.611 1.383 0.915 2.829 0.915 4.334 0 1.425-0.304 2.847-0.915 4.271-0.611 1.425-1.587 2.767-2.928 4.028-0.855 0.813-1.811 1.607-2.869 2.38s-2.136 1.465-3.233 2.075c-1.099 0.61-2.198 1.098-3.296 1.465-1.098 0.366-2.115 0.549-3.051 0.549-1.343 0-2.441-0.438-3.296-1.311-0.854-0.876-1.281-2.41-1.281-4.608 0-0.366 0.020-0.773 0.060-1.221s0.062-0.895 0.062-1.343c0-0.773-0.183-1.353-0.55-1.738-0.366-0.387-0.793-0.58-1.281-0.58-0.652 0-1.21 0.295-1.678 0.886s-0.926 1.23-1.373 1.921c-0.447 0.693-0.905 1.334-1.372 1.923s-1.028 0.886-1.679 0.886c-0.529 0-1.048-0.427-1.556-1.282s-0.763-2.259-0.763-4.212c0-2.197 0.529-4.241 1.587-6.133s2.462-3.529 4.21-4.912c1.75-1.383 3.762-2.471 6.041-3.264 2.277-0.796 4.617-1.212 7.018-1.253zM7.334 15.817c0.569 0 1.047-0.204 1.434-0.611s0.579-0.875 0.579-1.404c0-0.569-0.193-1.047-0.579-1.434s-0.864-0.579-1.434-0.579c-0.529 0-0.987 0.193-1.373 0.579s-0.58 0.864-0.58 1.434c0 0.53 0.194 0.998 0.58 1.404 0.388 0.407 0.845 0.611 1.373 0.611zM12.216 11.79c0.691 0 1.292-0.254 1.8-0.763s0.762-1.107 0.762-1.8c0-0.732-0.255-1.343-0.762-1.831-0.509-0.489-1.109-0.732-1.8-0.732-0.732 0-1.342 0.244-1.831 0.732-0.488 0.488-0.732 1.098-0.732 1.831 0 0.693 0.244 1.292 0.732 1.8s1.099 0.763 1.831 0.763zM16.366 25.947c0.692 0 1.282-0.214 1.77-0.64s0.732-0.987 0.732-1.678-0.244-1.261-0.732-1.709c-0.489-0.448-1.078-0.671-1.77-0.671-0.65 0-1.21 0.223-1.678 0.671s-0.702 1.018-0.702 1.709c0 0.692 0.234 1.25 0.702 1.678s1.027 0.64 1.678 0.64zM19.113 9.592c0.651 0 1.129-0.203 1.433-0.611 0.305-0.406 0.459-0.874 0.459-1.404 0-0.488-0.154-0.947-0.459-1.373-0.304-0.427-0.782-0.641-1.433-0.641-0.529 0-1.008 0.193-1.434 0.58s-0.64 0.865-0.64 1.434c0 0.571 0.213 1.049 0.64 1.434 0.427 0.389 0.905 0.581 1.434 0.581zM24.848 12.826c0.57 0 1.067-0.213 1.495-0.64 0.427-0.427 0.64-0.947 0.64-1.556 0-0.57-0.214-1.068-0.64-1.495-0.428-0.427-0.927-0.64-1.495-0.64-0.611 0-1.129 0.213-1.555 0.64-0.428 0.427-0.642 0.926-0.642 1.495 0 0.611 0.213 1.129 0.642 1.556s0.947 0.64 1.555 0.64z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M16 23c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6zM16 13c-2.206 0-4 1.794-4 4s1.794 4 4 4c2.206 0 4-1.794 4-4s-1.794-4-4-4zM27 28h-22c-1.654 0-3-1.346-3-3v-16c0-1.654 1.346-3 3-3h3c0.552 0 1 0.448 1 1s-0.448 1-1 1h-3c-0.551 0-1 0.449-1 1v16c0 0.552 0.449 1 1 1h22c0.552 0 1-0.448 1-1v-16c0-0.551-0.448-1-1-1h-11c-0.552 0-1-0.448-1-1s0.448-1 1-1h11c1.654 0 3 1.346 3 3v16c0 1.654-1.346 3-3 3zM24 10.5c0 0.828 0.672 1.5 1.5 1.5s1.5-0.672 1.5-1.5c0-0.828-0.672-1.5-1.5-1.5s-1.5 0.672-1.5 1.5zM15 4c0 0.552-0.448 1-1 1h-4c-0.552 0-1-0.448-1-1v0c0-0.552 0.448-1 1-1h4c0.552 0 1 0.448 1 1v0z"></path></svg>'},function(e,t){e.exports='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M26.667 5.333h-21.333c-0 0-0.001 0-0.001 0-1.472 0-2.666 1.194-2.666 2.666 0 0 0 0.001 0 0.001v-0 16c0 0 0 0.001 0 0.001 0 1.472 1.194 2.666 2.666 2.666 0 0 0.001 0 0.001 0h21.333c0 0 0.001 0 0.001 0 1.472 0 2.666-1.194 2.666-2.666 0-0 0-0.001 0-0.001v0-16c0-0 0-0.001 0-0.001 0-1.472-1.194-2.666-2.666-2.666-0 0-0.001 0-0.001 0h0zM5.333 16h5.333v2.667h-5.333v-2.667zM18.667 24h-13.333v-2.667h13.333v2.667zM26.667 24h-5.333v-2.667h5.333v2.667zM26.667 18.667h-13.333v-2.667h13.333v2.667z"></path></svg>'},function(e,t){e.exports='<svg version="1.1" viewBox="0 0 22 22"><svg x="7" y="1"><circle class="diplayer-loading-dot diplayer-loading-dot-0" cx="4" cy="4" r="2"></circle></svg><svg x="11" y="3"><circle class="diplayer-loading-dot diplayer-loading-dot-1" cx="4" cy="4" r="2"></circle></svg><svg x="13" y="7"><circle class="diplayer-loading-dot diplayer-loading-dot-2" cx="4" cy="4" r="2"></circle></svg><svg x="11" y="11"><circle class="diplayer-loading-dot diplayer-loading-dot-3" cx="4" cy="4" r="2"></circle></svg><svg x="7" y="13"><circle class="diplayer-loading-dot diplayer-loading-dot-4" cx="4" cy="4" r="2"></circle></svg><svg x="3" y="11"><circle class="diplayer-loading-dot diplayer-loading-dot-5" cx="4" cy="4" r="2"></circle></svg><svg x="1" y="7"><circle class="diplayer-loading-dot diplayer-loading-dot-6" cx="4" cy="4" r="2"></circle></svg><svg x="3" y="3"><circle class="diplayer-loading-dot diplayer-loading-dot-7" cx="4" cy="4" r="2"></circle></svg></svg>'},function(e,t,n){var i=n(3);e.exports=function(e){"use strict";e=e||{};var t="",a=(arguments[1],e.video),o=e.options,s=i.$escape,r=e.tran,l=e.icons,c=e.index,u=i.$each;e.$value,e.$index;return t+='<div class="dplayer-mask"></div>\n<div class="dplayer-video-wrap">\n ',function(e){t+=e}(n(4)(a)),t+="\n ",o.logo&&(t+='\n <div class="dplayer-logo">\n <img src="',t+=s(o.logo),t+='">\n </div>\n '),t+='\n <div class="dplayer-danmaku"',o.danmaku&&o.danmaku.bottm&&(t+=' style="margin-bottom:',t+=s(o.danmaku.bottm),t+='"'),t+='>\n <div class="dplayer-danmaku-item dplayer-danmaku-item--demo"></div>\n </div>\n <div class="dplayer-subtitle"></div>\n <div class="dplayer-bezel">\n <span class="dplayer-bezel-icon"></span>\n ',o.danmaku&&(t+='\n <span class="dplayer-danloading">',t+=s(r("Danmaku is loading")),t+="</span>\n "),t+='\n <span class="diplayer-loading-icon">',t+=l.loading,t+='</span>\n </div>\n</div>\n<div class="dplayer-controller-mask"></div>\n<div class="dplayer-controller">\n <div class="dplayer-icons dplayer-comment-box">\n <button class="dplayer-icon dplayer-comment-setting-icon" data-balloon="',t+=s(r("Setting")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.pallette,t+='</span>\n </button>\n <div class="dplayer-comment-setting-box">\n <div class="dplayer-comment-setting-color">\n <div class="dplayer-comment-setting-title">',t+=s(r("Set danmaku color")),t+='</div>\n <label>\n <input type="radio" name="dplayer-danmaku-color-',t+=s(c),t+='" value="#fff" checked>\n <span style="background: #fff;"></span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-color-',t+=s(c),t+='" value="#e54256">\n <span style="background: #e54256"></span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-color-',t+=s(c),t+='" value="#ffe133">\n <span style="background: #ffe133"></span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-color-',t+=s(c),t+='" value="#64DD17">\n <span style="background: #64DD17"></span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-color-',t+=s(c),t+='" value="#39ccff">\n <span style="background: #39ccff"></span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-color-',t+=s(c),t+='" value="#D500F9">\n <span style="background: #D500F9"></span>\n </label>\n </div>\n <div class="dplayer-comment-setting-type">\n <div class="dplayer-comment-setting-title">',t+=s(r("Set danmaku type")),t+='</div>\n <label>\n <input type="radio" name="dplayer-danmaku-type-',t+=s(c),t+='" value="top">\n <span>',t+=s(r("Top")),t+='</span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-type-',t+=s(c),t+='" value="right" checked>\n <span>',t+=s(r("Rolling")),t+='</span>\n </label>\n <label>\n <input type="radio" name="dplayer-danmaku-type-',t+=s(c),t+='" value="bottom">\n <span>',t+=s(r("Bottom")),t+='</span>\n </label>\n </div>\n </div>\n <input class="dplayer-comment-input" type="text" placeholder="',t+=s(r("Input danmaku, hit Enter")),t+='" maxlength="30">\n <button class="dplayer-icon dplayer-send-icon" data-balloon="',t+=s(r("Send")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.send,t+='</span>\n </button>\n </div>\n <div class="dplayer-icons dplayer-icons-left">\n <button class="dplayer-icon dplayer-play-icon">\n <span class="dplayer-icon-content">',t+=l.play,t+='</span>\n </button>\n <div class="dplayer-volume">\n <button class="dplayer-icon dplayer-volume-icon">\n <span class="dplayer-icon-content">',t+=l.volumeDown,t+='</span>\n </button>\n <div class="dplayer-volume-bar-wrap" data-balloon-pos="up">\n <div class="dplayer-volume-bar">\n <div class="dplayer-volume-bar-inner" style="background: ',t+=s(o.theme),t+=';">\n <span class="dplayer-thumb" style="background: ',t+=s(o.theme),t+='"></span>\n </div>\n </div>\n </div>\n </div>\n <span class="dplayer-time">\n <span class="dplayer-ptime">0:00</span> /\n <span class="dplayer-dtime">0:00</span>\n </span>\n ',o.live&&(t+='\n <span class="dplayer-live-badge"><span class="dplayer-live-dot" style="background: ',t+=s(o.theme),t+=';"></span>',t+=s(r("Live")),t+="</span>\n "),t+='\n </div>\n <div class="dplayer-icons dplayer-icons-right">\n ',o.video.quality&&(t+='\n <div class="dplayer-quality">\n <button class="dplayer-icon dplayer-quality-icon">',t+=s(o.video.quality[o.video.defaultQuality].name),t+='</button>\n <div class="dplayer-quality-mask">\n <div class="dplayer-quality-list">\n ',u(o.video.quality,function(e,n){t+='\n <div class="dplayer-quality-item" data-index="',t+=s(n),t+='">',t+=s(e.name),t+="</div>\n "}),t+="\n </div>\n </div>\n </div>\n "),t+="\n ",o.screenshot&&(t+='\n <div class="dplayer-icon dplayer-camera-icon" data-balloon="',t+=s(r("Screenshot")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.camera,t+="</span>\n </div>\n "),t+='\n <div class="dplayer-comment">\n <button class="dplayer-icon dplayer-comment-icon" data-balloon="',t+=s(r("Send danmaku")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.comment,t+="</span>\n </button>\n </div>\n ",o.subtitle&&(t+='\n <div class="dplayer-subtitle-btn">\n <button class="dplayer-icon dplayer-subtitle-icon" data-balloon="',t+=s(r("Hide subtitle")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.subtitle,t+="</span>\n </button>\n </div>\n "),t+='\n <div class="dplayer-setting">\n <button class="dplayer-icon dplayer-setting-icon" data-balloon="',t+=s(r("Setting")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.setting,t+='</span>\n </button>\n <div class="dplayer-setting-box">\n <div class="dplayer-setting-origin-panel">\n <div class="dplayer-setting-item dplayer-setting-speed">\n <span class="dplayer-label">',t+=s(r("Speed")),t+='</span>\n <div class="dplayer-toggle">',t+=l.right,t+='</div>\n </div>\n <div class="dplayer-setting-item dplayer-setting-loop">\n <span class="dplayer-label">',t+=s(r("Loop")),t+='</span>\n <div class="dplayer-toggle">\n <input class="dplayer-toggle-setting-input" type="checkbox" name="dplayer-toggle">\n <label for="dplayer-toggle"></label>\n </div>\n </div>\n <div class="dplayer-setting-item dplayer-setting-showdan">\n <span class="dplayer-label">',t+=s(r("Show danmaku")),t+='</span>\n <div class="dplayer-toggle">\n <input class="dplayer-showdan-setting-input" type="checkbox" name="dplayer-toggle-dan">\n <label for="dplayer-toggle-dan"></label>\n </div>\n </div>\n <div class="dplayer-setting-item dplayer-setting-danunlimit">\n <span class="dplayer-label">',t+=s(r("Unlimited danmaku")),t+='</span>\n <div class="dplayer-toggle">\n <input class="dplayer-danunlimit-setting-input" type="checkbox" name="dplayer-toggle-danunlimit">\n <label for="dplayer-toggle-danunlimit"></label>\n </div>\n </div>\n <div class="dplayer-setting-item dplayer-setting-danmaku">\n <span class="dplayer-label">',t+=s(r("Opacity for danmaku")),t+='</span>\n <div class="dplayer-danmaku-bar-wrap">\n <div class="dplayer-danmaku-bar">\n <div class="dplayer-danmaku-bar-inner">\n <span class="dplayer-thumb"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="dplayer-setting-speed-panel">\n <div class="dplayer-setting-speed-item" data-speed="0.5">\n <span class="dplayer-label">0.5</span>\n </div>\n <div class="dplayer-setting-speed-item" data-speed="0.75">\n <span class="dplayer-label">0.75</span>\n </div>\n <div class="dplayer-setting-speed-item" data-speed="1">\n <span class="dplayer-label">',t+=s(r("Normal")),t+='</span>\n </div>\n <div class="dplayer-setting-speed-item" data-speed="1.25">\n <span class="dplayer-label">1.25</span>\n </div>\n <div class="dplayer-setting-speed-item" data-speed="1.5">\n <span class="dplayer-label">1.5</span>\n </div>\n <div class="dplayer-setting-speed-item" data-speed="2">\n <span class="dplayer-label">2</span>\n </div>\n </div>\n </div>\n </div>\n <div class="dplayer-full">\n <button class="dplayer-icon dplayer-full-in-icon" data-balloon="',t+=s(r("Web full screen")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.fullWeb,t+='</span>\n </button>\n <button class="dplayer-icon dplayer-full-icon" data-balloon="',t+=s(r("Full screen")),t+='" data-balloon-pos="up">\n <span class="dplayer-icon-content">',t+=l.full,t+='</span>\n </button>\n </div>\n </div>\n <div class="dplayer-bar-wrap">\n <div class="dplayer-bar-time hidden">00:00</div>\n <div class="dplayer-bar-preview"></div>\n <div class="dplayer-bar">\n <div class="dplayer-loaded" style="width: 0;"></div>\n <div class="dplayer-played" style="width: 0; background: ',t+=s(o.theme),t+='">\n <span class="dplayer-thumb" style="background: ',t+=s(o.theme),t+='"></span>\n </div>\n </div>\n </div>\n</div>\n<div class="dplayer-info-panel dplayer-info-panel-hide">\n <div class="dplayer-info-panel-close">[x]</div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-version">\n <span class="dplayer-info-panel-item-title">Player version</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-fps">\n <span class="dplayer-info-panel-item-title">Player FPS</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-type">\n <span class="dplayer-info-panel-item-title">Video type</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-url">\n <span class="dplayer-info-panel-item-title">Video url</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-resolution">\n <span class="dplayer-info-panel-item-title">Video resolution</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-duration">\n <span class="dplayer-info-panel-item-title">Video duration</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n ',o.danmaku&&(t+='\n <div class="dplayer-info-panel-item dplayer-info-panel-item-danmaku-id">\n <span class="dplayer-info-panel-item-title">Danamku id</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-danmaku-api">\n <span class="dplayer-info-panel-item-title">Danamku api</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n <div class="dplayer-info-panel-item dplayer-info-panel-item-danmaku-amount">\n <span class="dplayer-info-panel-item-title">Danamku amount</span>\n <span class="dplayer-info-panel-item-data"></span>\n </div>\n '),t+='\n</div>\n<div class="dplayer-menu">\n ',u(o.contextmenu,function(e,n){t+='\n <div class="dplayer-menu-item">\n <a target="_blank" href="',t+=s(e.link||"javascript:void(0);"),t+='">',t+=s(r(e.text)),t+="</a>\n </div>\n "}),t+='\n</div>\n<div class="dplayer-notice"></div>'}},function(e,t,n){"use strict";(function(t){function i(e){return"string"!=typeof e&&(e=void 0===e||null===e?"":"function"==typeof e?i(e.call(e)):JSON.stringify(e)),e}function a(e){var t=""+e,n=r.exec(t);if(!n)return e;var i="",a=void 0,o=void 0,s=void 0;for(a=n.index,o=0;a<t.length;a++){switch(t.charCodeAt(a)){case 34:s=""";break;case 38:s="&";break;case 39:s="'";break;case 60:s="<";break;case 62:s=">";break;default:continue}o!==a&&(i+=t.substring(o,a)),o=a+1,i+=s}return o!==a?i+t.substring(o,a):i}var o=n(34),s=Object.create(o?t:window),r=/["&'<>]/;s.$escape=function(e){return a(i(e))},s.$each=function(e,t){if(Array.isArray(e))for(var n=0,i=e.length;n<i;n++)t(e[n],n);else for(var a in e)t(e[a],a)},e.exports=s}).call(t,n(1))},function(e,t,n){"use strict";(function(t){e.exports=!1;try{e.exports="[object process]"===Object.prototype.toString.call(t.process)}catch(e){}}).call(t,n(1))},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t){i(this,e),this.options=t,this.container=this.options.container,this.danTunnel={right:{},top:{},bottom:{}},this.danIndex=0,this.dan=[],this.showing=!0,this._opacity=this.options.opacity,this.events=this.options.events,this.unlimited=this.options.unlimited,this._measure(""),this.load()}return o(e,[{key:"load",value:function(){var e=this,t=void 0;t=this.options.api.maximum?this.options.api.address+"v2/?id="+this.options.api.id+"&max="+this.options.api.maximum:this.options.api.address+"v2/?id="+this.options.api.id;var n=(this.options.api.addition||[]).slice(0);n.push(t),this.events&&this.events.trigger("danmaku_load_start",n),this._readAllEndpoints(n,function(t){e.dan=[].concat.apply([],t).sort(function(e,t){return e.time-t.time}),window.requestAnimationFrame(function(){e.frame()}),e.options.callback(),e.events&&e.events.trigger("danmaku_load_end")})}},{key:"reload",value:function(e){this.options.api=e,this.dan=[],this.clear(),this.load()}},{key:"_readAllEndpoints",value:function(e,t){for(var n=this,i=[],a=0,o=0;o<e.length;++o)this.options.apiBackend.read(e[o],function(o){return function(s,r){if(++a,s)s.response?n.options.error(s.response.msg):n.options.error("Request was unsuccessful: "+s.status),i[o]=[];else{var l=["right","top","bottom"];i[o]=r?r.map(function(e){return{time:e[0],type:l[e[1]],color:e[2],author:e[3],text:e[4]}}):[]}if(a===e.length)return t(i)}}(o))}},{key:"send",value:function(e,t){var n={token:this.options.api.token,player:this.options.api.id,author:this.options.api.user,time:this.options.time(),text:e.text,color:e.color,type:e.type};this.options.apiBackend.send(this.options.api.address+"v2/",n,t),this.dan.splice(this.danIndex,0,n),this.danIndex++;var i={text:this.htmlEncode(n.text),color:n.color,type:n.type,border:"2px solid "+this.options.borderColor};this.draw(i),this.events&&this.events.trigger("danmaku_send",n)}},{key:"frame",value:function(){var e=this;if(this.dan.length&&!this.paused&&this.showing){for(var t=this.dan[this.danIndex],n=[];t&&this.options.time()>parseFloat(t.time);)n.push(t),t=this.dan[++this.danIndex];this.draw(n)}window.requestAnimationFrame(function(){e.frame()})}},{key:"opacity",value:function(e){if(void 0!==e){for(var t=this.container.getElementsByClassName("dplayer-danmaku-item"),n=0;n<t.length;n++)t[n].style.opacity=e;this._opacity=e,this.events&&this.events.trigger("danmaku_opacity",this._opacity)}return this._opacity}},{key:"draw",value:function(e){var t=this;if(this.showing){var n=this.options.height,i=this.container.offsetWidth,o=this.container.offsetHeight,s=parseInt(o/n),r=function(e){var n=e.offsetWidth||parseInt(e.style.width),i=e.getBoundingClientRect().right||t.container.getBoundingClientRect().right+n;return t.container.getBoundingClientRect().right-i},l=function(e){return(i+e)/5},c=function(e,n,o){for(var c=i/l(o),u=0;t.unlimited||u<s;u++){var d=function(a){var o=t.danTunnel[n][a+""];if(!o||!o.length)return t.danTunnel[n][a+""]=[e],e.addEventListener("animationend",function(){t.danTunnel[n][a+""].splice(0,1)}),{v:a%s};if("right"!==n)return"continue";for(var u=0;u<o.length;u++){var d=r(o[u])-10;if(d<=i-c*l(parseInt(o[u].style.width))||d<=0)break;if(u===o.length-1)return t.danTunnel[n][a+""].push(e),e.addEventListener("animationend",function(){t.danTunnel[n][a+""].splice(0,1)}),{v:a%s}}}(u);switch(d){case"continue":continue;default:if("object"===(void 0===d?"undefined":a(d)))return d.v}}return-1};"[object Array]"!==Object.prototype.toString.call(e)&&(e=[e]);for(var u=document.createDocumentFragment(),d=0;d<e.length;d++)!function(a){e[a].type||(e[a].type="right"),e[a].color||(e[a].color="#fff");var o=document.createElement("div");o.classList.add("dplayer-danmaku-item"),o.classList.add("dplayer-danmaku-"+e[a].type),e[a].border?o.innerHTML='<span style="border:'+e[a].border+'">'+e[a].text+"</span>":o.innerHTML=e[a].text,o.style.opacity=t._opacity,o.style.color=e[a].color,o.addEventListener("animationend",function(){t.container.removeChild(o)});var s=t._measure(e[a].text),r=void 0;switch(e[a].type){case"right":r=c(o,e[a].type,s),r>=0&&(o.style.width=s+1+"px",o.style.top=n*r+"px",o.style.transform="translateX(-"+i+"px)");break;case"top":r=c(o,e[a].type),r>=0&&(o.style.top=n*r+"px");break;case"bottom":r=c(o,e[a].type),r>=0&&(o.style.bottom=n*r+"px");break;default:console.error("Can't handled danmaku type: "+e[a].type)}r>=0&&(o.classList.add("dplayer-danmaku-move"),u.appendChild(o))}(d);return this.container.appendChild(u),u}}},{key:"play",value:function(){this.paused=!1}},{key:"pause",value:function(){this.paused=!0}},{key:"_measure",value:function(e){if(!this.context){var t=getComputedStyle(this.container.getElementsByClassName("dplayer-danmaku-item")[0],null);this.context=document.createElement("canvas").getContext("2d"),this.context.font=t.getPropertyValue("font")}return this.context.measureText(e).width}},{key:"seek",value:function(){this.clear();for(var e=0;e<this.dan.length;e++){if(this.dan[e].time>=this.options.time()){this.danIndex=e;break}this.danIndex=this.dan.length}}},{key:"clear",value:function(){this.danTunnel={right:{},top:{},bottom:{}},this.danIndex=0,this.options.container.innerHTML="",this.events&&this.events.trigger("danmaku_clear")}},{key:"htmlEncode",value:function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}},{key:"resize",value:function(){for(var e=this.container.offsetWidth,t=this.container.getElementsByClassName("dplayer-danmaku-item"),n=0;n<t.length;n++)t[n].style.transform="translateX(-"+e+"px)"}},{key:"hide",value:function(){this.showing=!1,this.pause(),this.clear(),this.events&&this.events.trigger("danmaku_hide")}},{key:"show",value:function(){this.seek(),this.showing=!0,this.play(),this.events&&this.events.trigger("danmaku_show")}},{key:"unlimit",value:function(e){this.unlimited=e}}]),e}();t.default=s},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(){i(this,e),this.events={},this.videoEvents=["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","mozaudioavailable","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],this.playerEvents=["screenshot","thumbnails_show","thumbnails_hide","danmaku_show","danmaku_hide","danmaku_clear","danmaku_loaded","danmaku_send","danmaku_opacity","contextmenu_show","contextmenu_hide","notice_show","notice_hide","quality_start","quality_end","destroy","resize","fullscreen","fullscreen_cancel","webfullscreen","webfullscreen_cancel","subtitle_show","subtitle_hide","subtitle_change"]}return a(e,[{key:"on",value:function(e,t){this.type(e)&&"function"==typeof t&&(this.events[e]||(this.events[e]=[]),this.events[e].push(t))}},{key:"trigger",value:function(e,t){if(this.events[e]&&this.events[e].length)for(var n=0;n<this.events[e].length;n++)this.events[e][n](t)}},{key:"type",value:function(e){return-1!==this.playerEvents.indexOf(e)?"player":-1!==this.videoEvents.indexOf(e)?"video":(console.error("Unknown event name: "+e),null)}}]),e}();t.default=o},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n(0),s=function(e){return e&&e.__esModule?e:{default:e}}(o),r=function(){function e(t){var n=this;i(this,e),this.player=t,this.player.events.on("webfullscreen",function(){n.player.resize()}),this.player.events.on("webfullscreen_cancel",function(){n.player.resize(),s.default.setScrollPosition(n.lastScrollPosition)});var a=function(){n.player.resize(),n.isFullScreen("browser")?n.player.events.trigger("fullscreen"):(s.default.setScrollPosition(n.lastScrollPosition),n.player.events.trigger("fullscreen_cancel"))};this.player.container.addEventListener("fullscreenchange",a),this.player.container.addEventListener("mozfullscreenchange",a),this.player.container.addEventListener("webkitfullscreenchange",a)}return a(e,[{key:"isFullScreen",value:function(){switch(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser"){case"browser":return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;case"web":return this.player.container.classList.contains("dplayer-fulled")}}},{key:"request",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser",t="browser"===e?"web":"browser",n=this.isFullScreen(t);switch(n||(this.lastScrollPosition=s.default.getScrollPosition()),e){case"browser":this.player.container.requestFullscreen?this.player.container.requestFullscreen():this.player.container.mozRequestFullScreen?this.player.container.mozRequestFullScreen():this.player.container.webkitRequestFullscreen?this.player.container.webkitRequestFullscreen():this.player.video.webkitEnterFullscreen&&this.player.video.webkitEnterFullscreen();break;case"web":this.player.container.classList.add("dplayer-fulled"),document.body.classList.add("dplayer-web-fullscreen-fix"),this.player.events.trigger("webfullscreen")}n&&this.cancel(t)}},{key:"cancel",value:function(){switch(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser"){case"browser":document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen();break;case"web":this.player.container.classList.remove("dplayer-fulled"),document.body.classList.remove("dplayer-web-fullscreen-fix"),this.player.events.trigger("webfullscreen_cancel")}}},{key:"toggle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser";this.isFullScreen(e)?this.cancel(e):this.request(e)}}]),e}();t.default=r},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n(0),s=function(e){return e&&e.__esModule?e:{default:e}}(o),r=function(){function e(t){i(this,e),this.storageName={opacity:"dplayer-danmaku-opacity",volume:"dplayer-volume",unlimited:"dplayer-danmaku-unlimited",danmaku:"dplayer-danmaku-show",subtitle:"dplayer-subtitle-show"},this.default={opacity:.7,volume:t.options.volume||.7,unlimited:(t.options.danmaku&&t.options.danmaku.unlimited?1:0)||0,danmaku:1,subtitle:1},this.data={},this.init()}return a(e,[{key:"init",value:function(){for(var e in this.storageName){var t=this.storageName[e];this.data[e]=parseFloat(s.default.storage.get(t)||this.default[e])}}},{key:"get",value:function(e){return this.data[e]}},{key:"set",value:function(e,t){this.data[e]=t,s.default.storage.set(this.storageName[e],t)}}]),e}();t.default=r},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(t,n,a,o){i(this,e),this.container=t,this.video=n,this.options=a,this.events=o,this.init()}return a(e,[{key:"init",value:function(){var e=this;if(this.container.style.fontSize=this.options.fontSize,this.container.style.bottom=this.options.bottom,this.container.style.color=this.options.color,this.video.textTracks&&this.video.textTracks[0]){var t=this.video.textTracks[0];t.oncuechange=function(){var n=t.activeCues[0];if(n){e.container.innerHTML="";var i=document.createElement("p");i.appendChild(n.getCueAsHTML()),e.container.appendChild(i)}else e.container.innerHTML="";e.events.trigger("subtitle_change")}}}},{key:"show",value:function(){this.container.classList.remove("dplayer-subtitle-hide"),this.events.trigger("subtitle_show")}},{key:"hide",value:function(){this.container.classList.add("dplayer-subtitle-hide"),this.events.trigger("subtitle_hide")}},{key:"toggle",value:function(){this.container.classList.contains("dplayer-subtitle-hide")?this.show():this.hide()}}]),e}();t.default=o},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(t){i(this,e),this.elements={},this.elements.volume=t.volumeBar,this.elements.played=t.playedBar,this.elements.loaded=t.loadedBar,this.elements.danmaku=t.danmakuOpacityBar}return a(e,[{key:"set",value:function(e,t,n){t=Math.max(t,0),t=Math.min(t,1),this.elements[e].style[n]=100*t+"%"}},{key:"get",value:function(e){return parseFloat(this.elements[e].style.width)/100}}]),e}();t.default=o},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n(0),s=function(e){return e&&e.__esModule?e:{default:e}}(o),r=function(){function e(t){i(this,e),this.player=t,window.requestAnimationFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),this.types=["loading","progress","info","fps"],this.init()}return a(e,[{key:"init",value:function(){for(var e=0;e<this.types.length;e++){var t=this.types[e];"fps"!==t&&this["init"+t+"Checker"]()}}},{key:"initloadingChecker",value:function(){var e=this,t=0,n=0,i=!1;this.loadingChecker=setInterval(function(){e.enableloadingChecker&&(n=e.player.video.currentTime,i||n!==t||e.player.video.paused||(e.player.container.classList.add("dplayer-loading"),i=!0),i&&n>t&&!e.player.video.paused&&(e.player.container.classList.remove("dplayer-loading"),i=!1),t=n)},100)}},{key:"initprogressChecker",value:function(){var e=this;this.progressChecker=setInterval(function(){if(e.enableprogressChecker){e.player.bar.set("played",e.player.video.currentTime/e.player.video.duration,"width");var t=s.default.secondToTime(e.player.video.currentTime);e.player.template.ptime.innerHTML!==t&&(e.player.template.ptime.innerHTML=s.default.secondToTime(e.player.video.currentTime))}},100)}},{key:"initfpsChecker",value:function(){var e=this;window.requestAnimationFrame(function(){if(e.enablefpsChecker)if(e.initfpsChecker(),e.fpsStart){e.fpsIndex++;var t=new Date;t-e.fpsStart>1e3&&(e.player.infoPanel.fps(e.fpsIndex/(t-e.fpsStart)*1e3),e.fpsStart=new Date,e.fpsIndex=0)}else e.fpsStart=new Date,e.fpsIndex=0;else e.fpsStart=0,e.fpsIndex=0})}},{key:"initinfoChecker",value:function(){var e=this;this.infoChecker=setInterval(function(){e.enableinfoChecker&&e.player.infoPanel.update()},1e3)}},{key:"enable",value:function(e){this["enable"+e+"Checker"]=!0,"fps"===e&&this.initfpsChecker()}},{key:"disable",value:function(e){this["enable"+e+"Checker"]=!1}},{key:"destroy",value:function(e){this[e+"Checker"]&&clearInterval(this[e+"Checker"])}}]),e}();t.default=r},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(t){var n=this;i(this,e),this.container=t,this.container.addEventListener("animationend",function(){n.container.classList.remove("dplayer-bezel-transition")})}return a(e,[{key:"switch",value:function(e){this.container.innerHTML=e,this.container.classList.add("dplayer-bezel-transition")}}]),e}();t.default=o},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=n(0),r=i(s),l=n(44),c=i(l),u=n(2),d=i(u),p=function(){function e(t){var n=this;a(this,e),this.player=t,this.autoHideTimer=0,r.default.isMobile||(this.player.container.addEventListener("mousemove",function(){n.setAutoHide()}),this.player.container.addEventListener("click",function(){n.setAutoHide()}),this.player.on("play",function(){n.setAutoHide()}),this.player.on("pause",function(){n.setAutoHide()})),this.initPlayButton(),this.initThumbnails(),this.initPlayedBar(),this.initFullButton(),this.initQualityButton(),this.initScreenshotButton(),this.initSubtitleButton(),r.default.isMobile||this.initVolumeButton()}return o(e,[{key:"initPlayButton",value:function(){var e=this;this.player.template.playButton.addEventListener("click",function(){e.player.toggle()}),r.default.isMobile?(this.player.template.videoWrap.addEventListener("click",function(){e.toggle()}),this.player.template.controllerMask.addEventListener("click",function(){e.toggle()})):(this.player.template.videoWrap.addEventListener("click",function(){e.player.toggle()}),this.player.template.controllerMask.addEventListener("click",function(){e.player.toggle()}))}},{key:"initThumbnails",value:function(){var e=this;this.player.options.video.thumbnails&&(this.thumbnails=new c.default({container:this.player.template.barPreview,barWidth:this.player.template.barWrap.offsetWidth,url:this.player.options.video.thumbnails,events:this.player.events}),this.player.on("loadedmetadata",function(){e.thumbnails.resize(160,e.player.video.videoHeight/e.player.video.videoWidth*160)}))}},{key:"initPlayedBar",value:function(){var e=this,t=function(t){var n=((t.clientX||t.changedTouches[0].clientX)-r.default.getElementViewLeft(e.player.template.playedBarWrap))/e.player.template.playedBarWrap.clientWidth;n=Math.max(n,0),n=Math.min(n,1),e.player.bar.set("played",n,"width"),e.player.template.ptime.innerHTML=r.default.secondToTime(n*e.player.video.duration)},n=function n(i){document.removeEventListener(r.default.nameMap.dragEnd,n),document.removeEventListener(r.default.nameMap.dragMove,t);var a=((i.clientX||i.changedTouches[0].clientX)-r.default.getElementViewLeft(e.player.template.playedBarWrap))/e.player.template.playedBarWrap.clientWidth;a=Math.max(a,0),a=Math.min(a,1),e.player.bar.set("played",a,"width"),e.player.seek(e.player.bar.get("played")*e.player.video.duration),e.player.time.enable("progress")};this.player.template.playedBarWrap.addEventListener(r.default.nameMap.dragStart,function(){e.player.time.disable("progress"),document.addEventListener(r.default.nameMap.dragMove,t),document.addEventListener(r.default.nameMap.dragEnd,n)}),this.player.template.playedBarWrap.addEventListener(r.default.nameMap.dragMove,function(t){if(e.player.video.duration){var n=r.default.cumulativeOffset(e.player.template.playedBarWrap).left,i=(t.clientX||t.changedTouches[0].clientX)-n;if(i<0||i>e.player.template.playedBarWrap.offsetWidth)return;var a=e.player.video.duration*(i/e.player.template.playedBarWrap.offsetWidth);r.default.isMobile&&e.thumbnails&&e.thumbnails.show(),e.thumbnails&&e.thumbnails.move(i),e.player.template.playedBarTime.style.left=i-20+"px",e.player.template.playedBarTime.innerText=r.default.secondToTime(a),e.player.template.playedBarTime.classList.remove("hidden")}}),this.player.template.playedBarWrap.addEventListener(r.default.nameMap.dragEnd,function(){r.default.isMobile&&e.thumbnails&&e.thumbnails.hide()}),r.default.isMobile||(this.player.template.playedBarWrap.addEventListener("mouseenter",function(){e.player.video.duration&&(e.thumbnails&&e.thumbnails.show(),e.player.template.playedBarTime.classList.remove("hidden"))}),this.player.template.playedBarWrap.addEventListener("mouseleave",function(){e.player.video.duration&&(e.thumbnails&&e.thumbnails.hide(),e.player.template.playedBarTime.classList.add("hidden"))}))}},{key:"initFullButton",value:function(){var e=this;this.player.template.browserFullButton.addEventListener("click",function(){e.player.fullScreen.toggle("browser")}),this.player.template.webFullButton.addEventListener("click",function(){e.player.fullScreen.toggle("web")})}},{key:"initVolumeButton",value:function(){var e=this,t=function(t){var n=t||window.event,i=((n.clientX||n.changedTouches[0].clientX)-r.default.getElementViewLeft(e.player.template.volumeBarWrap)-5.5)/35;e.player.volume(i)},n=function n(){document.removeEventListener(r.default.nameMap.dragEnd,n),document.removeEventListener(r.default.nameMap.dragMove,t),e.player.template.volumeButton.classList.remove("dplayer-volume-active")};this.player.template.volumeBarWrapWrap.addEventListener("click",function(t){var n=t||window.event,i=((n.clientX||n.changedTouches[0].clientX)-r.default.getElementViewLeft(e.player.template.volumeBarWrap)-5.5)/35;e.player.volume(i)}),this.player.template.volumeBarWrapWrap.addEventListener(r.default.nameMap.dragStart,function(){document.addEventListener(r.default.nameMap.dragMove,t),document.addEventListener(r.default.nameMap.dragEnd,n),e.player.template.volumeButton.classList.add("dplayer-volume-active")}),this.player.template.volumeIcon.addEventListener("click",function(){e.player.video.muted?(e.player.video.muted=!1,e.player.switchVolumeIcon(),e.player.bar.set("volume",e.player.volume(),"width")):(e.player.video.muted=!0,e.player.template.volumeIcon.innerHTML=d.default.volumeOff,e.player.bar.set("volume",0,"width"))})}},{key:"initQualityButton",value:function(){var e=this;this.player.options.video.quality&&this.player.template.qualityList.addEventListener("click",function(t){t.target.classList.contains("dplayer-quality-item")&&e.player.switchQuality(t.target.dataset.index)})}},{key:"initScreenshotButton",value:function(){var e=this;this.player.options.screenshot&&this.player.template.camareButton.addEventListener("click",function(){var t=document.createElement("canvas");t.width=e.player.video.videoWidth,t.height=e.player.video.videoHeight,t.getContext("2d").drawImage(e.player.video,0,0,t.width,t.height);var n=void 0;t.toBlob(function(e){n=URL.createObjectURL(e);var t=document.createElement("a");t.href=n,t.download="DPlayer.png",t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t),URL.revokeObjectURL(n)}),e.player.events.trigger("screenshot",n)})}},{key:"initSubtitleButton",value:function(){var e=this;this.player.options.subtitle&&(this.player.events.on("subtitle_show",function(){e.player.template.subtitleButton.dataset.balloon=e.player.tran("Hide subtitle"),e.player.template.subtitleButtonInner.style.opacity="",e.player.user.set("subtitle",1)}),this.player.events.on("subtitle_hide",function(){e.player.template.subtitleButton.dataset.balloon=e.player.tran("Show subtitle"),e.player.template.subtitleButtonInner.style.opacity="0.4",e.player.user.set("subtitle",0)}),this.player.template.subtitleButton.addEventListener("click",function(){e.player.subtitle.toggle()}))}},{key:"setAutoHide",value:function(){var e=this;this.show(),clearTimeout(this.autoHideTimer),this.autoHideTimer=setTimeout(function(){!e.player.video.played.length||e.player.paused||e.disableAutoHide||e.hide()},3e3)}},{key:"show",value:function(){this.player.container.classList.remove("dplayer-hide-controller")}},{key:"hide",value:function(){this.player.container.classList.add("dplayer-hide-controller"),this.player.setting.hide(),this.player.comment&&this.player.comment.hide()}},{key:"isShow",value:function(){return!this.player.container.classList.contains("dplayer-hide-controller")}},{key:"toggle",value:function(){this.isShow()?this.hide():this.show()}},{key:"destroy",value:function(){clearTimeout(this.autoHideTimer)}}]),e}();t.default=p},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(t){i(this,e),this.container=t.container,this.barWidth=t.barWidth,this.container.style.backgroundImage="url('"+t.url+"')",this.events=t.events}return a(e,[{key:"resize",value:function(e,t){this.container.style.width=e+"px",this.container.style.height=t+"px",this.container.style.top=2-t+"px"}},{key:"show",value:function(){this.container.style.display="block",this.events&&this.events.trigger("thumbnails_show")}},{key:"move",value:function(e){this.container.style.backgroundPosition="-"+160*(Math.ceil(e/this.barWidth*100)-1)+"px 0",this.container.style.left=e-this.container.offsetWidth/2+"px"}},{key:"hide",value:function(){this.container.style.display="none",this.events&&this.events.trigger("thumbnails_hide")}}]),e}();t.default=o},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n(0),s=function(e){return e&&e.__esModule?e:{default:e}}(o),r=function(){function e(t){var n=this;i(this,e),this.player=t,this.player.template.mask.addEventListener("click",function(){n.hide()}),this.player.template.settingButton.addEventListener("click",function(){n.show()}),this.loop=this.player.options.loop,this.player.template.loopToggle.checked=this.loop,this.player.template.loop.addEventListener("click",function(){n.player.template.loopToggle.checked=!n.player.template.loopToggle.checked,n.player.template.loopToggle.checked?n.loop=!0:n.loop=!1,n.hide()}),this.showDanmaku=this.player.user.get("danmaku"),this.showDanmaku||this.player.danmaku&&this.player.danmaku.hide(),this.player.template.showDanmakuToggle.checked=this.showDanmaku,this.player.template.showDanmaku.addEventListener("click",function(){n.player.template.showDanmakuToggle.checked=!n.player.template.showDanmakuToggle.checked,n.player.template.showDanmakuToggle.checked?(n.showDanmaku=!0,n.player.danmaku.show()):(n.showDanmaku=!1,n.player.danmaku.hide()),n.player.user.set("danmaku",n.showDanmaku?1:0),n.hide()}),this.unlimitDanmaku=this.player.user.get("unlimited"),this.player.template.unlimitDanmakuToggle.checked=this.unlimitDanmaku,this.player.template.unlimitDanmaku.addEventListener("click",function(){n.player.template.unlimitDanmakuToggle.checked=!n.player.template.unlimitDanmakuToggle.checked,n.player.template.unlimitDanmakuToggle.checked?(n.unlimitDanmaku=!0,n.player.danmaku.unlimit(!0)):(n.unlimitDanmaku=!1,n.player.danmaku.unlimit(!1)),n.player.user.set("unlimited",n.unlimitDanmaku?1:0),n.hide()}),this.player.template.speed.addEventListener("click",function(){n.player.template.settingBox.classList.add("dplayer-setting-box-narrow"),n.player.template.settingBox.classList.add("dplayer-setting-box-speed")});for(var a=0;a<this.player.template.speedItem.length;a++)!function(e){n.player.template.speedItem[e].addEventListener("click",function(){n.player.speed(n.player.template.speedItem[e].dataset.speed),n.hide()})}(a);if(this.player.danmaku){this.player.on("danmaku_opacity",function(e){n.player.bar.set("danmaku",e,"width"),n.player.user.set("opacity",e)}),this.player.danmaku.opacity(this.player.user.get("opacity"));var o=function(e){var t=e||window.event,i=((t.clientX||t.changedTouches[0].clientX)-s.default.getElementViewLeft(n.player.template.danmakuOpacityBarWrap))/130;i=Math.max(i,0),i=Math.min(i,1),n.player.danmaku.opacity(i)},r=function e(){document.removeEventListener(s.default.nameMap.dragEnd,e),document.removeEventListener(s.default.nameMap.dragMove,o),n.player.template.danmakuOpacityBox.classList.remove("dplayer-setting-danmaku-active")};this.player.template.danmakuOpacityBarWrapWrap.addEventListener("click",function(e){var t=e||window.event,i=((t.clientX||t.changedTouches[0].clientX)-s.default.getElementViewLeft(n.player.template.danmakuOpacityBarWrap))/130;i=Math.max(i,0),i=Math.min(i,1),n.player.danmaku.opacity(i)}),this.player.template.danmakuOpacityBarWrapWrap.addEventListener(s.default.nameMap.dragStart,function(){document.addEventListener(s.default.nameMap.dragMove,o),document.addEventListener(s.default.nameMap.dragEnd,r),n.player.template.danmakuOpacityBox.classList.add("dplayer-setting-danmaku-active")})}}return a(e,[{key:"hide",value:function(){var e=this;this.player.template.settingBox.classList.remove("dplayer-setting-box-open"),this.player.template.mask.classList.remove("dplayer-mask-show"),setTimeout(function(){e.player.template.settingBox.classList.remove("dplayer-setting-box-narrow"),e.player.template.settingBox.classList.remove("dplayer-setting-box-speed")},300),this.player.controller.disableAutoHide=!1}},{key:"show",value:function(){this.player.template.settingBox.classList.add("dplayer-setting-box-open"),this.player.template.mask.classList.add("dplayer-mask-show"),this.player.controller.disableAutoHide=!0}}]),e}();t.default=r},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(t){var n=this;i(this,e),this.player=t,this.player.template.mask.addEventListener("click",function(){n.hide()}),this.player.template.commentButton.addEventListener("click",function(){n.show()}),this.player.template.commentSettingButton.addEventListener("click",function(){n.toggleSetting()}),this.player.template.commentColorSettingBox.addEventListener("click",function(){if(n.player.template.commentColorSettingBox.querySelector("input:checked+span")){var e=n.player.template.commentColorSettingBox.querySelector("input:checked").value;n.player.template.commentSettingFill.style.fill=e,n.player.template.commentInput.style.color=e,n.player.template.commentSendFill.style.fill=e}}),this.player.template.commentInput.addEventListener("click",function(){n.hideSetting()}),this.player.template.commentInput.addEventListener("keydown",function(e){13===(e||window.event).keyCode&&n.send()}),this.player.template.commentSendButton.addEventListener("click",function(){n.send()})}return a(e,[{key:"show",value:function(){this.player.controller.disableAutoHide=!0,this.player.template.controller.classList.add("dplayer-controller-comment"),this.player.template.mask.classList.add("dplayer-mask-show"),this.player.container.classList.add("dplayer-show-controller"),this.player.template.commentInput.focus()}},{key:"hide",value:function(){this.player.template.controller.classList.remove("dplayer-controller-comment"),this.player.template.mask.classList.remove("dplayer-mask-show"),this.player.container.classList.remove("dplayer-show-controller"),this.player.controller.disableAutoHide=!1,this.hideSetting()}},{key:"showSetting",value:function(){this.player.template.commentSettingBox.classList.add("dplayer-comment-setting-open")}},{key:"hideSetting",value:function(){this.player.template.commentSettingBox.classList.remove("dplayer-comment-setting-open")}},{key:"toggleSetting",value:function(){this.player.template.commentSettingBox.classList.contains("dplayer-comment-setting-open")?this.hideSetting():this.showSetting()}},{key:"send",value:function(){var e=this;if(this.player.template.commentInput.blur(),!this.player.template.commentInput.value.replace(/^\s+|\s+$/g,""))return void this.player.notice(this.player.tran("Please input danmaku content!"));this.player.danmaku.send({text:this.player.template.commentInput.value,color:this.player.container.querySelector(".dplayer-comment-setting-color input:checked").value,type:this.player.container.querySelector(".dplayer-comment-setting-type input:checked").value},function(){e.player.template.commentInput.value="",e.hide()})}}]),e}();t.default=o},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function e(t){i(this,e),t.options.hotkey&&document.addEventListener("keydown",function(e){if(t.focus){var n=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==n&&"TEXTAREA"!==n&&""!==i&&"true"!==i){var a=e||window.event,o=void 0;switch(a.keyCode){case 32:a.preventDefault(),t.toggle();break;case 37:a.preventDefault(),t.seek(t.video.currentTime-5),t.controller.setAutoHide();break;case 39:a.preventDefault(),t.seek(t.video.currentTime+5),t.controller.setAutoHide();break;case 38:a.preventDefault(),o=t.volume()+.1,t.volume(o);break;case 40:a.preventDefault(),o=t.volume()-.1,t.volume(o)}}}}),document.addEventListener("keydown",function(e){switch((e||window.event).keyCode){case 27:t.fullScreen.isFullScreen("web")&&t.fullScreen.cancel("web")}})};t.default=a},function(e,t,n){"use strict";function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t){var n=this;a(this,e),this.player=t,[].concat(i(this.player.template.menuItem)).map(function(e,t){return n.player.options.contextmenu[t].click&&e.addEventListener("click",function(){n.player.options.contextmenu[t].click(n.player),n.hide()}),e}),this.player.container.addEventListener("contextmenu",function(e){var t=e||window.event;t.preventDefault();var i=n.player.container.getBoundingClientRect();n.show(t.clientX-i.left,t.clientY-i.top),n.player.template.mask.addEventListener("click",function(){n.hide()})})}return o(e,[{key:"show",value:function(e,t){this.player.template.menu.classList.add("dplayer-menu-show");var n=this.player.container.getBoundingClientRect();e+this.player.template.menu.offsetWidth>=n.width?(this.player.template.menu.style.right=n.width-e+"px",this.player.template.menu.style.left="initial"):(this.player.template.menu.style.left=e+"px",this.player.template.menu.style.right="initial"),t+this.player.template.menu.offsetHeight>=n.height?(this.player.template.menu.style.bottom=n.height-t+"px",this.player.template.menu.style.top="initial"):(this.player.template.menu.style.top=t+"px",this.player.template.menu.style.bottom="initial"),this.player.template.mask.classList.add("dplayer-mask-show"),this.player.events.trigger("contextmenu_show")}},{key:"hide",value:function(){this.player.template.mask.classList.remove("dplayer-mask-show"),this.player.template.menu.classList.remove("dplayer-menu-show"),this.player.events.trigger("contextmenu_hide")}}]),e}();t.default=s},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=function(){function e(t){var n=this;i(this,e),this.container=t.template.infoPanel,this.template=t.template,this.video=t.video,this.player=t,this.template.infoPanelClose.addEventListener("click",function(){n.hide()})}return a(e,[{key:"show",value:function(){this.beginTime=Date.now(),this.update(),this.player.time.enable("info"),this.player.time.enable("fps"),this.container.classList.remove("dplayer-info-panel-hide")}},{key:"hide",value:function(){this.player.time.disable("info"),this.player.time.disable("fps"),this.container.classList.add("dplayer-info-panel-hide")}},{key:"triggle",value:function(){this.container.classList.contains("dplayer-info-panel-hide")?this.show():this.hide()}},{key:"update",value:function(){this.template.infoVersion.innerHTML="v1.22.2 d3847a3",this.template.infoType.innerHTML=this.player.type,this.template.infoUrl.innerHTML=this.player.options.video.url,this.template.infoResolution.innerHTML=this.player.video.videoWidth+" x "+this.player.video.videoHeight,this.template.infoDuration.innerHTML=this.player.video.duration,this.player.options.danmaku&&(this.template.infoDanmakuId.innerHTML=this.player.options.danmaku.id,this.template.infoDanmakuApi.innerHTML=this.player.options.danmaku.api,this.template.infoDanmakuAmount.innerHTML=this.player.danmaku.dan.length)}},{key:"fps",value:function(e){this.template.infoFPS.innerHTML=""+e.toFixed(1)}}]),e}();t.default=o}]).default}); -//# sourceMappingURL=DPlayer.min.js.map \ No newline at end of file diff --git a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/dash.all.min.js b/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/dash.all.min.js deleted file mode 100644 index 074f2e26d..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/dash.all.min.js +++ /dev/null @@ -1,32 +0,0 @@ -/*! v2.6.6-363caf5, 2018-02-14T14:22:17Z */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(b,c,d){"use strict";var e={};e.encode=function(a){for(var b=[],c=0;c<a.length;++c){var d=a.charCodeAt(c);d<128?b.push(d):d<2048?(b.push(192|d>>6),b.push(128|63&d)):d<65536?(b.push(224|d>>12),b.push(128|63&d>>6),b.push(128|63&d)):(b.push(240|d>>18),b.push(128|63&d>>12),b.push(128|63&d>>6),b.push(128|63&d))}return b},e.decode=function(a){for(var b=[],c=0;c<a.length;){var d=a[c++];d<128||(d<224?(d=(31&d)<<6,d|=63&a[c++]):d<240?(d=(15&d)<<12,d|=(63&a[c++])<<6,d|=63&a[c++]):(d=(7&d)<<18,d|=(63&a[c++])<<12,d|=(63&a[c++])<<6,d|=63&a[c++])),b.push(String.fromCharCode(d))}return b.join("")};var f={};!function(b){var c=function(a){for(var c=0,d=[],e=0|a.length/3;0<e--;){var f=(a[c]<<16)+(a[c+1]<<8)+a[c+2];c+=3,d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push(b.charAt(63&f))}if(2==a.length-c){var f=(a[c]<<16)+(a[c+1]<<8);d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push("=")}else if(1==a.length-c){var f=a[c]<<16;d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push("==")}return d.join("")},d=function(){for(var a=[],c=0;c<b.length;++c)a[b.charCodeAt(c)]=c;return a["=".charCodeAt(0)]=0,a}(),g=function(a){for(var b=0,c=[],e=0|a.length/4;0<e--;){var f=(d[a.charCodeAt(b)]<<18)+(d[a.charCodeAt(b+1)]<<12)+(d[a.charCodeAt(b+2)]<<6)+d[a.charCodeAt(b+3)];c.push(255&f>>16),c.push(255&f>>8),c.push(255&f),b+=4}return c&&("="==a.charAt(b-2)?(c.pop(),c.pop()):"="==a.charAt(b-1)&&c.pop()),c},h={};h.encode=function(a){for(var b=[],c=0;c<a.length;++c)b.push(a.charCodeAt(c));return b},h.decode=function(b){for(var c=0;c<s.length;++c)a[c]=String.fromCharCode(a[c]);return a.join("")},f.decodeArray=function(a){var b=g(a);return new Uint8Array(b)},f.encodeASCII=function(a){var b=h.encode(a);return c(b)},f.decodeASCII=function(a){var b=g(a);return h.decode(b)},f.encode=function(a){var b=e.encode(a);return c(b)},f.decode=function(a){var b=g(a);return e.decode(b)}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),void 0!==d&&(d.decode=f.decode,d.decodeArray=f.decodeArray,d.encode=f.encode)},{}],2:[function(a,b,c){"use strict";!function(a){var b={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},c=function(a){var c=a;return b.hasOwnProperty(a)&&(c=b[a]),String.fromCharCode(c)},d=15,e=32,f={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},g={17:2,18:4,21:6,22:8,23:10,19:13,20:15},h={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},i={25:2,26:4,29:6,30:8,31:10,27:13,28:15},j=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],k={verboseFilter:{DATA:3,DEBUG:3,INFO:2,WARNING:2,TEXT:1,ERROR:0},time:null,verboseLevel:0,setTime:function(a){this.time=a},log:function(a,b){var c=this.verboseFilter[a];this.verboseLevel>=c&&console.log(this.time+" ["+a+"] "+b)}},l=function(a){for(var b=[],c=0;c<a.length;c++)b.push(a[c].toString(16));return b},m=function(a,b,c,d,e){this.foreground=a||"white",this.underline=b||!1,this.italics=c||!1,this.background=d||"black",this.flash=e||!1};m.prototype={reset:function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},setStyles:function(a){for(var b=["foreground","underline","italics","background","flash"],c=0;c<b.length;c++){var d=b[c];a.hasOwnProperty(d)&&(this[d]=a[d])}},isDefault:function(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash},equals:function(a){return this.foreground===a.foreground&&this.underline===a.underline&&this.italics===a.italics&&this.background===a.background&&this.flash===a.flash},copy:function(a){this.foreground=a.foreground,this.underline=a.underline,this.italics=a.italics,this.background=a.background,this.flash=a.flash},toString:function(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash}};var n=function(a,b,c,d,e,f){this.uchar=a||" ",this.penState=new m(b,c,d,e,f)};n.prototype={reset:function(){this.uchar=" ",this.penState.reset()},setChar:function(a,b){this.uchar=a,this.penState.copy(b)},setPenState:function(a){this.penState.copy(a)},equals:function(a){return this.uchar===a.uchar&&this.penState.equals(a.penState)},copy:function(a){this.uchar=a.uchar,this.penState.copy(a.penState)},isEmpty:function(){return" "===this.uchar&&this.penState.isDefault()}};var o=function(){this.chars=[];for(var a=0;a<e;a++)this.chars.push(new n);this.pos=0,this.currPenState=new m};o.prototype={equals:function(a){for(var b=!0,c=0;c<e;c++)if(!this.chars[c].equals(a.chars[c])){b=!1;break}return b},copy:function(a){for(var b=0;b<e;b++)this.chars[b].copy(a.chars[b])},isEmpty:function(){for(var a=!0,b=0;b<e;b++)if(!this.chars[b].isEmpty()){a=!1;break}return a},setCursor:function(a){this.pos!==a&&(this.pos=a),this.pos<0?(k.log("ERROR","Negative cursor position "+this.pos),this.pos=0):this.pos>e&&(k.log("ERROR","Too large cursor position "+this.pos),this.pos=e)},moveCursor:function(a){var b=this.pos+a;if(a>1)for(var c=this.pos+1;c<b+1;c++)this.chars[c].setPenState(this.currPenState);this.setCursor(b)},backSpace:function(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)},insertChar:function(a){a>=144&&this.backSpace();var b=c(a);if(this.pos>=e)return void k.log("ERROR","Cannot insert "+a.toString(16)+" ("+b+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(b,this.currPenState),this.moveCursor(1)},clearFromPos:function(a){var b;for(b=a;b<e;b++)this.chars[b].reset()},clear:function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},clearToEndOfRow:function(){this.clearFromPos(this.pos)},getTextString:function(){for(var a=[],b=!0,c=0;c<e;c++){var d=this.chars[c].uchar;" "!==d&&(b=!1),a.push(d)}return b?"":a.join("")},setPenStyles:function(a){this.currPenState.setStyles(a),this.chars[this.pos].setPenState(this.currPenState)}};var p=function(){this.rows=[];for(var a=0;a<d;a++)this.rows.push(new o);this.currRow=d-1,this.nrRollUpRows=null,this.reset()};p.prototype={reset:function(){for(var a=0;a<d;a++)this.rows[a].clear();this.currRow=d-1},equals:function(a){for(var b=!0,c=0;c<d;c++)if(!this.rows[c].equals(a.rows[c])){b=!1;break}return b},copy:function(a){for(var b=0;b<d;b++)this.rows[b].copy(a.rows[b])},isEmpty:function(){for(var a=!0,b=0;b<d;b++)if(!this.rows[b].isEmpty()){a=!1;break}return a},backSpace:function(){this.rows[this.currRow].backSpace()},clearToEndOfRow:function(){this.rows[this.currRow].clearToEndOfRow()},insertChar:function(a){this.rows[this.currRow].insertChar(a)},setPen:function(a){this.rows[this.currRow].setPenStyles(a)},moveCursor:function(a){this.rows[this.currRow].moveCursor(a)},setCursor:function(a){k.log("INFO","setCursor: "+a),this.rows[this.currRow].setCursor(a)},setPAC:function(a){k.log("INFO","pacData = "+JSON.stringify(a));var b=a.row-1;this.nrRollUpRows&&b<this.nrRollUpRows-1&&(b=this.nrRollUpRows-1),this.currRow=b;var c=this.rows[this.currRow];if(null!==a.indent){var d=a.indent,e=Math.max(d-1,0);c.setCursor(a.indent),a.color=c.chars[e].penState.foreground}var f={foreground:a.color,underline:a.underline,italics:a.italics,background:"black",flash:!1};this.setPen(f)},setBkgData:function(a){k.log("INFO","bkgData = "+JSON.stringify(a)),this.backSpace(),this.setPen(a),this.insertChar(32)},setRollUpRows:function(a){this.nrRollUpRows=a},rollUp:function(){if(null===this.nrRollUpRows)return void k.log("DEBUG","roll_up but nrRollUpRows not set yet");k.log("TEXT",this.getDisplayText());var a=this.currRow+1-this.nrRollUpRows,b=this.rows.splice(a,1)[0];b.clear(),this.rows.splice(this.currRow,0,b),k.log("INFO","Rolling up")},getDisplayText:function(a){a=a||!1;for(var b=[],c="",e=-1,f=0;f<d;f++){var g=this.rows[f].getTextString();g&&(e=f+1,a?b.push("Row "+e+': "'+g+'"'):b.push(g.trim()))}return b.length>0&&(c=a?"["+b.join(" | ")+"]":b.join("\n")),c},getTextAndFormat:function(){return this.rows}};var q=function(a,b){this.chNr=a,this.outputFilter=b,this.mode=null,this.verbose=0,this.displayedMemory=new p,this.nonDisplayedMemory=new p,this.lastOutputScreen=new p,this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null};q.prototype={modes:["MODE_ROLL-UP","MODE_POP-ON","MODE_PAINT-ON","MODE_TEXT"],reset:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},getHandler:function(){return this.outputFilter},setHandler:function(a){this.outputFilter=a},setPAC:function(a){this.writeScreen.setPAC(a)},setBkgData:function(a){this.writeScreen.setBkgData(a)},setMode:function(a){a!==this.mode&&(this.mode=a,k.log("INFO","MODE="+a),"MODE_POP-ON"==this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=a)},insertChars:function(a){for(var b=0;b<a.length;b++)this.writeScreen.insertChar(a[b]);var c=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";k.log("INFO",c+": "+this.writeScreen.getDisplayText(!0)),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(k.log("TEXT","DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())},cc_RCL:function(){k.log("INFO","RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")},cc_BS:function(){k.log("INFO","BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())},cc_AOF:function(){},cc_AON:function(){},cc_DER:function(){k.log("INFO","DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()},cc_RU:function(a){k.log("INFO","RU("+a+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(a)},cc_FON:function(){k.log("INFO","FON - Flash On"),this.writeScreen.setPen({flash:!0})},cc_RDC:function(){k.log("INFO","RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")},cc_TR:function(){k.log("INFO","TR"),this.setMode("MODE_TEXT")},cc_RTD:function(){k.log("INFO","RTD"),this.setMode("MODE_TEXT")},cc_EDM:function(){k.log("INFO","EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate()},cc_CR:function(){k.log("CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate()},cc_ENM:function(){k.log("INFO","ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()},cc_EOC:function(){if(k.log("INFO","EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var a=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=a,this.writeScreen=this.nonDisplayedMemory,k.log("TEXT","DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate()},cc_TO:function(a){k.log("INFO","TO("+a+") - Tab Offset"),this.writeScreen.moveCursor(a)},cc_MIDROW:function(a){var b={flash:!1};if(b.underline=a%2==1,b.italics=a>=46,b.italics)b.foreground="white";else{var c=Math.floor(a/2)-16,d=["white","green","blue","cyan","red","yellow","magenta"];b.foreground=d[c]}k.log("INFO","MIDROW: "+JSON.stringify(b)),this.writeScreen.setPen(b)},outputDataUpdate:function(){var a=k.time;null!==a&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(a,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:a):this.cueStartTime=a,this.lastOutputScreen.copy(this.displayedMemory))},cueSplitAtTime:function(a){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.displayedMemory),this.cueStartTime=a))}};var r=function(a,b,c){this.field=a||1,this.outputs=[b,c],this.channels=[new q(1,b),new q(2,c)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}};r.prototype={getHandler:function(a){return this.channels[a].getHandler()},setHandler:function(a,b){this.channels[a].setHandler(b)},addData:function(a,b){var c,d,e,f=!1;this.lastTime=a,k.setTime(a);for(var g=0;g<b.length;g+=2)if(d=127&b[g],e=127&b[g+1],d>=16&&d<=31&&d===this.lastCmdA&&e===this.lastCmdB)this.lastCmdA=null,this.lastCmdB=null,k.log("DEBUG","Repeated command ("+l([d,e])+") is dropped");else if(0!==d||0!==e){if(k.log("DATA","["+l([b[g],b[g+1]])+"] -> ("+l([d,e])+")"),c=this.parseCmd(d,e),c||(c=this.parseMidrow(d,e)),c||(c=this.parsePAC(d,e)),c||(c=this.parseBackgroundAttributes(d,e)),!c&&(f=this.parseChars(d,e)))if(this.currChNr&&this.currChNr>=0){var h=this.channels[this.currChNr-1];h.insertChars(f)}else k.log("WARNING","No channel found yet. TEXT-MODE?");c?this.dataCounters.cmd+=2:f?this.dataCounters.char+=2:(this.dataCounters.other+=2,k.log("WARNING","Couldn't parse cleaned data "+l([d,e])+" orig: "+l([b[g],b[g+1]])))}else this.dataCounters.padding+=2},parseCmd:function(a,b){var c=null,d=(20===a||21===a||28===a||29===a)&&32<=b&&b<=47,e=(23===a||31===a)&&33<=b&&b<=35;if(!d&&!e)return!1;c=20===a||21===a||23===a?1:2;var f=this.channels[c-1];return 20===a||21===a||28===a||29===a?32===b?f.cc_RCL():33===b?f.cc_BS():34===b?f.cc_AOF():35===b?f.cc_AON():36===b?f.cc_DER():37===b?f.cc_RU(2):38===b?f.cc_RU(3):39===b?f.cc_RU(4):40===b?f.cc_FON():41===b?f.cc_RDC():42===b?f.cc_TR():43===b?f.cc_RTD():44===b?f.cc_EDM():45===b?f.cc_CR():46===b?f.cc_ENM():47===b&&f.cc_EOC():f.cc_TO(b-32),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},parseMidrow:function(a,b){var c=null;if((17===a||25===a)&&32<=b&&b<=47){if((c=17===a?1:2)!==this.currChNr)return k.log("ERROR","Mismatch channel in midrow parsing"),!1;var d=this.channels[c-1];return d.insertChars([32]),d.cc_MIDROW(b),k.log("DEBUG","MIDROW ("+l([a,b])+")"),this.lastCmdA=a,this.lastCmdB=b,!0}return!1},parsePAC:function(a,b){var c=null,d=null,e=(17<=a&&a<=23||25<=a&&a<=31)&&64<=b&&b<=127,j=(16===a||24===a)&&64<=b&&b<=95;if(!e&&!j)return!1;c=a<=23?1:2,d=64<=b&&b<=95?1===c?f[a]:h[a]:1===c?g[a]:i[a];var k=this.interpretPAC(d,b);return this.channels[c-1].setPAC(k),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},interpretPAC:function(a,b){var c=b,d={color:null,italics:!1,indent:null,underline:!1,row:a};return c=b>95?b-96:b-64,d.underline=1==(1&c),c<=13?d.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(c/2)]:c<=15?(d.italics=!0,d.color="white"):d.indent=4*Math.floor((c-16)/2),d},parseChars:function(a,b){var d=null,e=null,f=null;if(a>=25?(d=2,f=a-8):(d=1,f=a),17<=f&&f<=19){var g=b;g=17===f?b+80:18===f?b+112:b+144,k.log("INFO","Special char '"+c(g)+"' in channel "+d),e=[g],this.lastCmdA=a,this.lastCmdB=b}else 32<=a&&a<=127&&(e=0===b?[a]:[a,b],this.lastCmdA=null,this.lastCmdB=null);if(e){var h=l(e);k.log("DEBUG","Char codes = "+h.join(","))}return e},parseBackgroundAttributes:function(a,b){var c,d,e,f,g=(16===a||24===a)&&32<=b&&b<=47,h=(23===a||31===a)&&45<=b&&b<=47;return!(!g&&!h)&&(c={},16===a||24===a?(d=Math.floor((b-32)/2),c.background=j[d],b%2==1&&(c.background=c.background+"_semi")):45===b?c.background="transparent":(c.foreground="black",47===b&&(c.underline=!0)),e=a<24?1:2,f=this.channels[e-1],f.setBkgData(c),this.lastCmdA=a,this.lastCmdB=b,!0)},reset:function(){for(var a=0;a<this.channels.length;a++)this.channels[a]&&this.channels[a].reset();this.lastCmdA=null,this.lastCmdB=null},cueSplitAtTime:function(a){for(var b=0;b<this.channels.length;b++)this.channels[b]&&this.channels[b].cueSplitAtTime(a)}};var s=function(a,b,c){for(var d=0,e=b,f=[],g=function(a,b,c,d){if(4!==a||b<8)return null;var e=c.getUint8(d),f=c.getUint16(d+1),g=c.getUint32(d+3),h=c.getUint8(d+7);return 181==e&&49==f&&1195456820==g&&3==h};e<b+c;){if(d=a.getUint32(e),6===(31&a.getUint8(e+4)))for(var h=e+5,i=-1;h<e+4+d-1;){i=0;for(var j=255;255===j;)j=a.getUint8(h),i+=j,h++;var k=0;for(j=255;255===j;)j=a.getUint8(h),k+=j,h++;g(i,k,a,h)&&f.push([h,k]),h+=k}e+=d+4}return f},t=function(a,b){var c=b[0],d=[[],[]];c+=8;var e=31&a.getUint8(c);c+=2;for(var f=0;f<e;f++){var g=a.getUint8(c),h=4&g,i=3&g;c++;var j=a.getUint8(c);c++;var k=a.getUint8(c);c++,h&&(127&j)+(127&k)!=0&&(0===i?(d[0].push(j),d[0].push(k)):1===i&&(d[1].push(j),d[1].push(k)))}return d};a.logger=k,a.PenState=m,a.CaptionScreen=p,a.Cea608Parser=r,a.findCea608Nalus=s,a.extractCea608DataFromRange=t}(void 0===c?(void 0).cea608parser={}:c)},{}],3:[function(a,b,c){"use strict";function d(a){var b,c,d;for(b=[],d=0,c=a.length;d<c;d+=1)a[d].isRoot?b.push("root"):b.push(a[d].name);var e=function(a,b){var c;if(null!==a&&null!==b)for(c in a)a.hasOwnProperty(c)&&(b.hasOwnProperty(c)||(b[c]=a[c]))},f=function(a,b,c){var d,f,g,h,i;if(null!==a&&0!==a.length)for(d=0,f=a.length;d<f;d+=1)g=a[d],b.hasOwnProperty(g.name)&&(c.hasOwnProperty(g.name)?g.merge&&(h=b[g.name],i=c[g.name],"object"==typeof h&&"object"==typeof i?e(h,i):null!=g.mergeFunction?c[g.name]=g.mergeFunction(h,i):c[g.name]=h+i):c[g.name]=b[g.name])},g=function a(b,c){var d,e,g,h,i,j,k,l=b;if(null!==l.children&&0!==l.children.length)for(d=0,e=l.children.length;d<e;d+=1)if(j=l.children[d],c.hasOwnProperty(j.name))if(j.isArray)for(i=c[j.name+"_asArray"],g=0,h=i.length;g<h;g+=1)k=i[g],f(l.properties,c,k),a(j,k);else k=c[j.name],f(l.properties,c,k),a(j,k)};return{run:function c(d){var e,f,h,i,j,k,l;if(null===d)return d;if("object"!=typeof d)return d;for(e=0,f=b.length;e<f;e+=1)"root"===b[e]&&(j=a[e],k=d,g(j,k));for(i in d)if(d.hasOwnProperty(i)&&"__children"!=i){if(-1!==(h=b.indexOf(i)))if(j=a[h],j.isArray)for(l=d[i+"_asArray"],e=0,f=l.length;e<f;e+=1)k=l[e],g(j,k);else k=d[i],g(j,k);c(d[i])}return d}}}Object.defineProperty(c,"__esModule",{value:!0}),c.default=d,b.exports=c.default},{}],4:[function(a,b,c){"use strict";function d(a){function b(){void 0===a.escapeMode&&(a.escapeMode=!0),void 0===a.attributePrefix&&(a.attributePrefix="_"),a.arrayAccessForm=a.arrayAccessForm||"none",a.emptyNodeForm=a.emptyNodeForm||"text",void 0===a.enableToStringFunc&&(a.enableToStringFunc=!0),a.arrayAccessFormPaths=a.arrayAccessFormPaths||[],void 0===a.skipEmptyTextNodesForObj&&(a.skipEmptyTextNodesForObj=!0),void 0===a.stripWhitespaces&&(a.stripWhitespaces=!0),a.datetimeAccessFormPaths=a.datetimeAccessFormPaths||[],void 0===a.useDoubleQuotes&&(a.useDoubleQuotes=!1),a.xmlElementsFilter=a.xmlElementsFilter||[],a.jsonPropertiesFilter=a.jsonPropertiesFilter||[],void 0===a.keepCData&&(a.keepCData=!1),void 0===a.ignoreRoot&&(a.ignoreRoot=!1)}function c(){}function d(a){var b=a.localName;return null==b&&(b=a.baseName),null!=b&&""!=b||(b=a.nodeName),b}function e(a){return a.prefix}function f(a){return"string"==typeof a?a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):a}function g(a,b,c,d){for(var e=0;e<a.length;e++){var f=a[e];if("string"==typeof f){if(f==d)break}else if(f instanceof RegExp){if(f.test(d))break}else if("function"==typeof f&&f(b,c,d))break}return e!=a.length}function h(b,c,d){switch(a.arrayAccessForm){case"property":b[c]instanceof Array?b[c+"_asArray"]=b[c]:b[c+"_asArray"]=[b[c]]}!(b[c]instanceof Array)&&a.arrayAccessFormPaths.length>0&&g(a.arrayAccessFormPaths,b,c,d)&&(b[c]=[b[c]])}function i(a){var b=a.split(/[-T:+Z]/g),c=new Date(b[0],b[1]-1,b[2]),d=b[5].split(".");if(c.setHours(b[3],b[4],d[0]),d.length>1&&c.setMilliseconds(d[1]),b[6]&&b[7]){var e=60*b[6]+Number(b[7]);e=0+("-"==(/\d\d-\d\d:\d\d$/.test(a)?"-":"+")?-1*e:e),c.setMinutes(c.getMinutes()-e-c.getTimezoneOffset())}else-1!==a.indexOf("Z",a.length-1)&&(c=new Date(Date.UTC(c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds())));return c}function j(b,c,d){if(a.datetimeAccessFormPaths.length>0){var e=d.split(".#")[0];return g(a.datetimeAccessFormPaths,b,c,e)?i(b):b}return b}function k(b,c,d,e){return!(c==z.ELEMENT_NODE&&a.xmlElementsFilter.length>0)||g(a.xmlElementsFilter,b,d,e)}function l(b,c){if(b.nodeType==z.DOCUMENT_NODE){for(var f=new Object,g=b.childNodes,i=0;i<g.length;i++){var m=g[i];if(m.nodeType==z.ELEMENT_NODE)if(a.ignoreRoot)f=l(m);else{f={};var n=d(m);f[n]=l(m)}}return f}if(b.nodeType==z.ELEMENT_NODE){var f=new Object;f.__cnt=0;for(var o=[],g=b.childNodes,i=0;i<g.length;i++){var m=g[i],n=d(m);if(m.nodeType!=z.COMMENT_NODE){var p=c+"."+n;if(k(f,m.nodeType,n,p))if(f.__cnt++,null==f[n]){var q=l(m,p);if("#text"!=n||/[^\s]/.test(q)){var r={};r[n]=q,o.push(r)}f[n]=q,h(f,n,p)}else{null!=f[n]&&(f[n]instanceof Array||(f[n]=[f[n]],h(f,n,p)));var q=l(m,p);if("#text"!=n||/[^\s]/.test(q)){var r={};r[n]=q,o.push(r)}f[n][f[n].length]=q}}}f.__children=o;for(var s=d(b),t=0;t<b.attributes.length;t++){var u=b.attributes[t];f.__cnt++;for(var v=u.value,w=0,x=a.matchers.length;w<x;w++){var y=a.matchers[w];y.test(u,s)&&(v=y.converter(u.value))}f[a.attributePrefix+u.name]=v}var A=e(b);return null!=A&&""!=A&&(f.__cnt++,f.__prefix=A),null!=f["#text"]&&(f.__text=f["#text"],f.__text instanceof Array&&(f.__text=f.__text.join("\n")),a.stripWhitespaces&&(f.__text=f.__text.trim()),delete f["#text"],"property"==a.arrayAccessForm&&delete f["#text_asArray"],f.__text=j(f.__text,n,c+"."+n)),null!=f["#cdata-section"]&&(f.__cdata=f["#cdata-section"],delete f["#cdata-section"],"property"==a.arrayAccessForm&&delete f["#cdata-section_asArray"]),0==f.__cnt&&"text"==a.emptyNodeForm?f="":1==f.__cnt&&null!=f.__text?f=f.__text:1!=f.__cnt||null==f.__cdata||a.keepCData?f.__cnt>1&&null!=f.__text&&a.skipEmptyTextNodesForObj&&(a.stripWhitespaces&&""==f.__text||""==f.__text.trim())&&delete f.__text:f=f.__cdata,delete f.__cnt,!a.enableToStringFunc||null==f.__text&&null==f.__cdata||(f.toString=function(){return(null!=this.__text?this.__text:"")+(null!=this.__cdata?this.__cdata:"")}),f}if(b.nodeType==z.TEXT_NODE||b.nodeType==z.CDATA_SECTION_NODE)return b.nodeValue}function m(b,c,d,e){var g="<"+(null!=b&&null!=b.__prefix?b.__prefix+":":"")+c;if(null!=d)for(var h=0;h<d.length;h++){var i=d[h],j=b[i];a.escapeMode&&(j=f(j)),g+=" "+i.substr(a.attributePrefix.length)+"=",a.useDoubleQuotes?g+='"'+j+'"':g+="'"+j+"'"}return g+=e?"/>":">"}function n(a,b){return"</"+(null!=a.__prefix?a.__prefix+":":"")+b+">"}function o(a,b){return-1!==a.indexOf(b,a.length-b.length)}function p(b,c){return!!("property"==a.arrayAccessForm&&o(c.toString(),"_asArray")||0==c.toString().indexOf(a.attributePrefix)||0==c.toString().indexOf("__")||b[c]instanceof Function)}function q(a){var b=0;if(a instanceof Object)for(var c in a)p(a,c)||b++;return b}function r(b,c,d){return 0==a.jsonPropertiesFilter.length||""==d||g(a.jsonPropertiesFilter,b,c,d)}function s(b){var c=[];if(b instanceof Object)for(var d in b)-1==d.toString().indexOf("__")&&0==d.toString().indexOf(a.attributePrefix)&&c.push(d);return c}function t(b){var c="";return null!=b.__cdata&&(c+="<![CDATA["+b.__cdata+"]]>"),null!=b.__text&&(a.escapeMode?c+=f(b.__text):c+=b.__text),c}function u(b){var c="";return b instanceof Object?c+=t(b):null!=b&&(a.escapeMode?c+=f(b):c+=b),c}function v(a,b){return""===a?b:a+"."+b}function w(a,b,c,d){var e="";if(0==a.length)e+=m(a,b,c,!0);else for(var f=0;f<a.length;f++)e+=m(a[f],b,s(a[f]),!1),e+=x(a[f],v(d,b)),e+=n(a[f],b);return e}function x(a,b){var c="";if(q(a)>0)for(var d in a)if(!p(a,d)&&(""==b||r(a,d,v(b,d)))){var e=a[d],f=s(e);if(null==e||void 0==e)c+=m(e,d,f,!0);else if(e instanceof Object)if(e instanceof Array)c+=w(e,d,f,b);else if(e instanceof Date)c+=m(e,d,f,!1),c+=e.toISOString(),c+=n(e,d);else{var g=q(e);g>0||null!=e.__text||null!=e.__cdata?(c+=m(e,d,f,!1),c+=x(e,v(b,d)),c+=n(e,d)):c+=m(e,d,f,!0)}else c+=m(e,d,f,!1),c+=u(e),c+=n(e,d)}return c+=u(a)}var y="1.2.0";a=a||{},b(),c();var z={ELEMENT_NODE:1,TEXT_NODE:3,CDATA_SECTION_NODE:4,COMMENT_NODE:8,DOCUMENT_NODE:9};this.parseXmlString=function(a){window.ActiveXObject||window;if(void 0===a)return null;var b;if(window.DOMParser){var c=new window.DOMParser;try{b=c.parseFromString(a,"text/xml"),b.getElementsByTagNameNS("*","parsererror").length>0&&(b=null)}catch(d){b=null}}else 0==a.indexOf("<?")&&(a=a.substr(a.indexOf("?>")+2)),b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a);return b},this.asArray=function(a){return void 0===a||null==a?[]:a instanceof Array?a:[a]},this.toXmlDateTime=function(a){return a instanceof Date?a.toISOString():"number"==typeof a?new Date(a).toISOString():null},this.asDateTime=function(a){return"string"==typeof a?i(a):a},this.xml2json=function(a){return l(a)},this.xml_str2json=function(a){var b=this.parseXmlString(a);return null!=b?this.xml2json(b):null},this.json2xml_str=function(a){return x(a,"")},this.json2xml=function(a){var b=this.json2xml_str(a);return this.parseXmlString(b)},this.getVersion=function(){return y}}Object.defineProperty(c,"__esModule",{value:!0}),c.default=d,b.exports=c.default},{}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(6),f=a(117),g=d(f),h=a(148),i=d(h),j=a(95),k=d(j);dashjs.Protection=i.default,dashjs.MetricsReporting=g.default,dashjs.MediaPlayerFactory=k.default,c.default=dashjs,c.MediaPlayer=e.MediaPlayer,c.Protection=i.default,c.MetricsReporting=g.default,c.MediaPlayerFactory=k.default},{117:117,148:148,6:6,95:95}],6:[function(a,b,c){(function(b){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(93),f=d(e),g=a(51),h=d(g),i=a(52),j="undefined"!=typeof window&&window||b,k=j.dashjs;k||(k=j.dashjs={}),k.MediaPlayer=f.default,k.FactoryMaker=h.default,k.Version=(0,i.getVersionString)(),c.default=k,c.MediaPlayer=f.default,c.FactoryMaker=h.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{51:51,52:52,93:93}],7:[function(a,b,c){!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===f||b===k?62:b===g||b===l?63:b<h?-1:b<h+10?b-h+26+26:b<j+26?b-j:b<i+26?b-i+26:void 0}function c(a){function c(a){j[l++]=a}var d,f,g,h,i,j;if(a.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new e(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,f=0;d<g;d+=4,f+=3)h=b(a.charAt(d))<<18|b(a.charAt(d+1))<<12|b(a.charAt(d+2))<<6|b(a.charAt(d+3)),c((16711680&h)>>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function d(a){function b(a){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var d,e,f,g=a.length%3,h="";for(d=0,f=a.length-g;d<f;d+=3)e=(a[d]<<16)+(a[d+1]<<8)+a[d+2],h+=c(e);switch(g){case 1:e=a[a.length-1],h+=b(e>>2),h+=b(e<<4&63),h+="==";break;case 2:e=(a[a.length-2]<<8)+a[a.length-1],h+=b(e>>10),h+=b(e>>4&63),h+=b(e<<2&63),h+="="}return h}var e="undefined"!=typeof Uint8Array?Uint8Array:Array,f="+".charCodeAt(0),g="/".charCodeAt(0),h="0".charCodeAt(0),i="a".charCodeAt(0),j="A".charCodeAt(0),k="-".charCodeAt(0),l="_".charCodeAt(0);a.toByteArray=c,a.fromByteArray=d}(void 0===c?this.base64js={}:c)},{}],8:[function(a,b,c){},{}],9:[function(a,b,c){function d(a){if(a&&!i(a))throw new Error("Unknown encoding: "+a)}function e(a){return a.toString(this.encoding)}function f(a){this.charReceived=a.length%2,this.charLength=this.charReceived?2:0}function g(a){this.charReceived=a.length%3,this.charLength=this.charReceived?3:0}var h=a(10).Buffer,i=h.isEncoding||function(a){switch(a&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},j=c.StringDecoder=function(a){switch(this.encoding=(a||"utf8").toLowerCase().replace(/[-_]/,""),d(a),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=f;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=g;break;default:return void(this.write=e)}this.charBuffer=new h(6),this.charReceived=0,this.charLength=0};j.prototype.write=function(a){for(var b="";this.charLength;){var c=a.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived<this.charLength)return"";a=a.slice(c,a.length),b=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var d=b.charCodeAt(b.length-1);if(!(d>=55296&&d<=56319)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&d<=56319){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(b<=2&&c>>4==14){this.charLength=3;break}if(b<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{10:10}],10:[function(a,b,c){(function(b){/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> - * @license MIT - */ -"use strict";function d(){function a(){}try{var b=new Uint8Array(1);return b.foo=function(){return 42},b.constructor=a,42===b.foo()&&b.constructor===a&&"function"==typeof b.subarray&&0===b.subarray(1,1).byteLength}catch(c){return!1}}function e(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function f(a){return this instanceof f?(f.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),"number"==typeof a?g(this,a):"string"==typeof a?h(this,a,arguments.length>1?arguments[1]:"utf8"):i(this,a)):arguments.length>1?new f(a,arguments[1]):new f(a)}function g(a,b){if(a=p(a,b<0?0:0|q(b)),!f.TYPED_ARRAY_SUPPORT)for(var c=0;c<b;c++)a[c]=0;return a}function h(a,b,c){return"string"==typeof c&&""!==c||(c="utf8"),a=p(a,0|s(b,c)),a.write(b,c),a}function i(a,b){if(f.isBuffer(b))return j(a,b);if(Y(b))return k(a,b);if(null==b)throw new TypeError("must start with number, buffer, array or string");if("undefined"!=typeof ArrayBuffer){if(b.buffer instanceof ArrayBuffer)return l(a,b);if(b instanceof ArrayBuffer)return m(a,b)}return b.length?n(a,b):o(a,b)}function j(a,b){var c=0|q(b.length);return a=p(a,c),b.copy(a,0,0,c),a}function k(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;d<c;d+=1)a[d]=255&b[d];return a}function l(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;d<c;d+=1)a[d]=255&b[d];return a}function m(a,b){return f.TYPED_ARRAY_SUPPORT?(b.byteLength,a=f._augment(new Uint8Array(b))):a=l(a,new Uint8Array(b)),a}function n(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;d<c;d+=1)a[d]=255&b[d];return a}function o(a,b){var c,d=0;"Buffer"===b.type&&Y(b.data)&&(c=b.data,d=0|q(c.length)),a=p(a,d);for(var e=0;e<d;e+=1)a[e]=255&c[e];return a}function p(a,b){return f.TYPED_ARRAY_SUPPORT?(a=f._augment(new Uint8Array(b)),a.__proto__=f.prototype):(a.length=b,a._isBuffer=!0),0!==b&&b<=f.poolSize>>>1&&(a.parent=Z),a}function q(a){if(a>=e())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+e().toString(16)+" bytes");return 0|a}function r(a,b){if(!(this instanceof r))return new r(a,b);var c=new f(a,b);return delete c.parent,c}function s(a,b){"string"!=typeof a&&(a=""+a);var c=a.length;if(0===c)return 0;for(var d=!1;;)switch(b){case"ascii":case"binary":case"raw":case"raws":return c;case"utf8":case"utf-8":return R(a).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*c;case"hex":return c>>>1;case"base64":return U(a).length;default:if(d)return R(a).length;b=(""+b).toLowerCase(),d=!0}}function t(a,b,c){var d=!1;if(b|=0,c=void 0===c||c===1/0?this.length:0|c,a||(a="utf8"),b<0&&(b=0),c>this.length&&(c=this.length),c<=b)return"";for(;;)switch(a){case"hex":return F(this,b,c);case"utf8":case"utf-8":return B(this,b,c);case"ascii":return D(this,b,c);case"binary":return E(this,b,c);case"base64":return A(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}}function u(a,b,c,d){c=Number(c)||0;var e=a.length-c;d?(d=Number(d))>e&&(d=e):d=e;var f=b.length;if(f%2!=0)throw new Error("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;g<d;g++){var h=parseInt(b.substr(2*g,2),16);if(isNaN(h))throw new Error("Invalid hex string");a[c+g]=h}return g}function v(a,b,c,d){return V(R(b,a.length-c),a,c,d)}function w(a,b,c,d){return V(S(b),a,c,d)}function x(a,b,c,d){return w(a,b,c,d)}function y(a,b,c,d){return V(U(b),a,c,d)}function z(a,b,c,d){return V(T(b,a.length-c),a,c,d)}function A(a,b,c){return 0===b&&c===a.length?W.fromByteArray(a):W.fromByteArray(a.slice(b,c))}function B(a,b,c){c=Math.min(a.length,c);for(var d=[],e=b;e<c;){var f=a[e],g=null,h=f>239?4:f>223?3:f>191?2:1;if(e+h<=c){var i,j,k,l;switch(h){case 1:f<128&&(g=f);break;case 2:i=a[e+1],128==(192&i)&&(l=(31&f)<<6|63&i)>127&&(g=l);break;case 3:i=a[e+1],j=a[e+2],128==(192&i)&&128==(192&j)&&(l=(15&f)<<12|(63&i)<<6|63&j)>2047&&(l<55296||l>57343)&&(g=l);break;case 4:i=a[e+1],j=a[e+2],k=a[e+3],128==(192&i)&&128==(192&j)&&128==(192&k)&&(l=(15&f)<<18|(63&i)<<12|(63&j)<<6|63&k)>65535&&l<1114112&&(g=l)}}null===g?(g=65533,h=1):g>65535&&(g-=65536,d.push(g>>>10&1023|55296),g=56320|1023&g),d.push(g),e+=h}return C(d)}function C(a){var b=a.length;if(b<=$)return String.fromCharCode.apply(String,a);for(var c="",d=0;d<b;)c+=String.fromCharCode.apply(String,a.slice(d,d+=$));return c}function D(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;e<c;e++)d+=String.fromCharCode(127&a[e]);return d}function E(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;e<c;e++)d+=String.fromCharCode(a[e]);return d}function F(a,b,c){var d=a.length;(!b||b<0)&&(b=0),(!c||c<0||c>d)&&(c=d);for(var e="",f=b;f<c;f++)e+=Q(a[f]);return e}function G(a,b,c){for(var d=a.slice(b,c),e="",f=0;f<d.length;f+=2)e+=String.fromCharCode(d[f]+256*d[f+1]);return e}function H(a,b,c){if(a%1!=0||a<0)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length")}function I(a,b,c,d,e,g){if(!f.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>e||b<g)throw new RangeError("value is out of bounds");if(c+d>a.length)throw new RangeError("index out of range")}function J(a,b,c,d){b<0&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);e<f;e++)a[c+e]=(b&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}function K(a,b,c,d){b<0&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);e<f;e++)a[c+e]=b>>>8*(d?e:3-e)&255}function L(a,b,c,d,e,f){if(b>e||b<f)throw new RangeError("value is out of bounds");if(c+d>a.length)throw new RangeError("index out of range");if(c<0)throw new RangeError("index out of range")}function M(a,b,c,d,e){return e||L(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),X.write(a,b,c,d,23,4),c+4}function N(a,b,c,d,e){return e||L(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),X.write(a,b,c,d,52,8),c+8}function O(a){if(a=P(a).replace(aa,""),a.length<2)return"";for(;a.length%4!=0;)a+="=";return a}function P(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Q(a){return a<16?"0"+a.toString(16):a.toString(16)}function R(a,b){b=b||1/0;for(var c,d=a.length,e=null,f=[],g=0;g<d;g++){if((c=a.charCodeAt(g))>55295&&c<57344){if(!e){if(c>56319){(b-=3)>-1&&f.push(239,191,189);continue}if(g+1===d){(b-=3)>-1&&f.push(239,191,189);continue}e=c;continue}if(c<56320){(b-=3)>-1&&f.push(239,191,189),e=c;continue}c=65536+(e-55296<<10|c-56320)}else e&&(b-=3)>-1&&f.push(239,191,189);if(e=null,c<128){if((b-=1)<0)break;f.push(c)}else if(c<2048){if((b-=2)<0)break;f.push(c>>6|192,63&c|128)}else if(c<65536){if((b-=3)<0)break;f.push(c>>12|224,c>>6&63|128,63&c|128)}else{if(!(c<1114112))throw new Error("Invalid code point");if((b-=4)<0)break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,63&c|128)}}return f}function S(a){for(var b=[],c=0;c<a.length;c++)b.push(255&a.charCodeAt(c));return b}function T(a,b){for(var c,d,e,f=[],g=0;g<a.length&&!((b-=2)<0);g++)c=a.charCodeAt(g),d=c>>8,e=c%256,f.push(e),f.push(d);return f}function U(a){return W.toByteArray(O(a))}function V(a,b,c,d){for(var e=0;e<d&&!(e+c>=b.length||e>=a.length);e++)b[e+c]=a[e];return e}var W=a(7),X=a(17),Y=a(27);c.Buffer=f,c.SlowBuffer=r,c.INSPECT_MAX_BYTES=50,f.poolSize=8192;var Z={};f.TYPED_ARRAY_SUPPORT=void 0!==b.TYPED_ARRAY_SUPPORT?b.TYPED_ARRAY_SUPPORT:d(),f.TYPED_ARRAY_SUPPORT?(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array):(f.prototype.length=void 0,f.prototype.parent=void 0),f.isBuffer=function(a){return!(null==a||!a._isBuffer)},f.compare=function(a,b){if(!f.isBuffer(a)||!f.isBuffer(b))throw new TypeError("Arguments must be Buffers");if(a===b)return 0;for(var c=a.length,d=b.length,e=0,g=Math.min(c,d);e<g&&a[e]===b[e];)++e;return e!==g&&(c=a[e],d=b[e]),c<d?-1:d<c?1:0},f.isEncoding=function(a){switch(String(a).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(a,b){if(!Y(a))throw new TypeError("list argument must be an Array of Buffers.");if(0===a.length)return new f(0);var c;if(void 0===b)for(b=0,c=0;c<a.length;c++)b+=a[c].length;var d=new f(b),e=0;for(c=0;c<a.length;c++){var g=a[c];g.copy(d,e),e+=g.length}return d},f.byteLength=s,f.prototype.toString=function(){var a=0|this.length;return 0===a?"":0===arguments.length?B(this,0,a):t.apply(this,arguments)},f.prototype.equals=function(a){if(!f.isBuffer(a))throw new TypeError("Argument must be a Buffer");return this===a||0===f.compare(this,a)},f.prototype.inspect=function(){var a="",b=c.INSPECT_MAX_BYTES;return this.length>0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),"<Buffer "+a+">"},f.prototype.compare=function(a){if(!f.isBuffer(a))throw new TypeError("Argument must be a Buffer");return this===a?0:f.compare(this,a)},f.prototype.indexOf=function(a,b){function c(a,b,c){for(var d=-1,e=0;c+e<a.length;e++)if(a[c+e]===b[-1===d?0:e-d]){if(-1===d&&(d=e),e-d+1===b.length)return c+d}else d=-1;return-1}if(b>2147483647?b=2147483647:b<-2147483648&&(b=-2147483648),b>>=0,0===this.length)return-1;if(b>=this.length)return-1;if(b<0&&(b=Math.max(this.length+b,0)),"string"==typeof a)return 0===a.length?-1:String.prototype.indexOf.call(this,a,b);if(f.isBuffer(a))return c(this,a,b);if("number"==typeof a)return f.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,a,b):c(this,[a],b);throw new TypeError("val must be string, number or Buffer")},f.prototype.get=function(a){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(a)},f.prototype.set=function(a,b){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(a,b)},f.prototype.write=function(a,b,c,d){if(void 0===b)d="utf8",c=this.length,b=0;else if(void 0===c&&"string"==typeof b)d=b,c=this.length,b=0;else if(isFinite(b))b|=0,isFinite(c)?(c|=0,void 0===d&&(d="utf8")):(d=c,c=void 0);else{var e=d;d=b,b=0|c,c=e}var f=this.length-b;if((void 0===c||c>f)&&(c=f),a.length>0&&(c<0||b<0)||b>this.length)throw new RangeError("attempt to write outside buffer bounds");d||(d="utf8");for(var g=!1;;)switch(d){case"hex":return u(this,a,b,c);case"utf8":case"utf-8":return v(this,a,b,c);case"ascii":return w(this,a,b,c);case"binary":return x(this,a,b,c);case"base64":return y(this,a,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return z(this,a,b,c);default:if(g)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase(),g=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;f.prototype.slice=function(a,b){var c=this.length;a=~~a,b=void 0===b?c:~~b,a<0?(a+=c)<0&&(a=0):a>c&&(a=c),b<0?(b+=c)<0&&(b=0):b>c&&(b=c),b<a&&(b=a);var d;if(f.TYPED_ARRAY_SUPPORT)d=f._augment(this.subarray(a,b));else{var e=b-a;d=new f(e,void 0);for(var g=0;g<e;g++)d[g]=this[g+a]}return d.length&&(d.parent=this.parent||this),d},f.prototype.readUIntLE=function(a,b,c){a|=0,b|=0,c||H(a,b,this.length);for(var d=this[a],e=1,f=0;++f<b&&(e*=256);)d+=this[a+f]*e;return d},f.prototype.readUIntBE=function(a,b,c){a|=0,b|=0,c||H(a,b,this.length);for(var d=this[a+--b],e=1;b>0&&(e*=256);)d+=this[a+--b]*e;return d},f.prototype.readUInt8=function(a,b){return b||H(a,1,this.length),this[a]},f.prototype.readUInt16LE=function(a,b){return b||H(a,2,this.length),this[a]|this[a+1]<<8},f.prototype.readUInt16BE=function(a,b){return b||H(a,2,this.length),this[a]<<8|this[a+1]},f.prototype.readUInt32LE=function(a,b){return b||H(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},f.prototype.readUInt32BE=function(a,b){return b||H(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},f.prototype.readIntLE=function(a,b,c){a|=0,b|=0,c||H(a,b,this.length);for(var d=this[a],e=1,f=0;++f<b&&(e*=256);)d+=this[a+f]*e;return e*=128,d>=e&&(d-=Math.pow(2,8*b)),d},f.prototype.readIntBE=function(a,b,c){a|=0,b|=0,c||H(a,b,this.length);for(var d=b,e=1,f=this[a+--d];d>0&&(e*=256);)f+=this[a+--d]*e;return e*=128,f>=e&&(f-=Math.pow(2,8*b)),f},f.prototype.readInt8=function(a,b){return b||H(a,1,this.length),128&this[a]?-1*(255-this[a]+1):this[a]},f.prototype.readInt16LE=function(a,b){b||H(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt16BE=function(a,b){b||H(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt32LE=function(a,b){return b||H(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},f.prototype.readInt32BE=function(a,b){return b||H(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},f.prototype.readFloatLE=function(a,b){return b||H(a,4,this.length),X.read(this,a,!0,23,4)},f.prototype.readFloatBE=function(a,b){return b||H(a,4,this.length),X.read(this,a,!1,23,4)},f.prototype.readDoubleLE=function(a,b){return b||H(a,8,this.length),X.read(this,a,!0,52,8)},f.prototype.readDoubleBE=function(a,b){return b||H(a,8,this.length),X.read(this,a,!1,52,8)},f.prototype.writeUIntLE=function(a,b,c,d){a=+a,b|=0,c|=0,d||I(this,a,b,c,Math.pow(2,8*c),0);var e=1,f=0;for(this[b]=255&a;++f<c&&(e*=256);)this[b+f]=a/e&255;return b+c},f.prototype.writeUIntBE=function(a,b,c,d){a=+a,b|=0,c|=0,d||I(this,a,b,c,Math.pow(2,8*c),0);var e=c-1,f=1;for(this[b+e]=255&a;--e>=0&&(f*=256);)this[b+e]=a/f&255;return b+c},f.prototype.writeUInt8=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,1,255,0),f.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),this[b]=255&a,b+1},f.prototype.writeUInt16LE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8):J(this,a,b,!0),b+2},f.prototype.writeUInt16BE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=255&a):J(this,a,b,!1),b+2},f.prototype.writeUInt32LE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=255&a):K(this,a,b,!0),b+4},f.prototype.writeUInt32BE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a):K(this,a,b,!1),b+4},f.prototype.writeIntLE=function(a,b,c,d){if(a=+a,b|=0,!d){var e=Math.pow(2,8*c-1);I(this,a,b,c,e-1,-e)}var f=0,g=1,h=a<0?1:0;for(this[b]=255&a;++f<c&&(g*=256);)this[b+f]=(a/g>>0)-h&255;return b+c},f.prototype.writeIntBE=function(a,b,c,d){if(a=+a,b|=0,!d){var e=Math.pow(2,8*c-1);I(this,a,b,c,e-1,-e)}var f=c-1,g=1,h=a<0?1:0;for(this[b+f]=255&a;--f>=0&&(g*=256);)this[b+f]=(a/g>>0)-h&255;return b+c},f.prototype.writeInt8=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,1,127,-128),f.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),a<0&&(a=255+a+1),this[b]=255&a,b+1},f.prototype.writeInt16LE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8):J(this,a,b,!0),b+2},f.prototype.writeInt16BE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=255&a):J(this,a,b,!1),b+2},f.prototype.writeInt32LE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):K(this,a,b,!0),b+4},f.prototype.writeInt32BE=function(a,b,c){return a=+a,b|=0,c||I(this,a,b,4,2147483647,-2147483648),a<0&&(a=4294967295+a+1),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a):K(this,a,b,!1),b+4},f.prototype.writeFloatLE=function(a,b,c){return M(this,a,b,!0,c)},f.prototype.writeFloatBE=function(a,b,c){return M(this,a,b,!1,c)},f.prototype.writeDoubleLE=function(a,b,c){return N(this,a,b,!0,c)},f.prototype.writeDoubleBE=function(a,b,c){return N(this,a,b,!1,c)},f.prototype.copy=function(a,b,c,d){if(c||(c=0),d||0===d||(d=this.length),b>=a.length&&(b=a.length),b||(b=0),d>0&&d<c&&(d=c),d===c)return 0;if(0===a.length||0===this.length)return 0;if(b<0)throw new RangeError("targetStart out of bounds");if(c<0||c>=this.length)throw new RangeError("sourceStart out of bounds");if(d<0)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length),a.length-b<d-c&&(d=a.length-b+c);var e,g=d-c;if(this===a&&c<b&&b<d)for(e=g-1;e>=0;e--)a[e+b]=this[e+c];else if(g<1e3||!f.TYPED_ARRAY_SUPPORT)for(e=0;e<g;e++)a[e+b]=this[e+c];else a._set(this.subarray(c,c+g),b);return g},f.prototype.fill=function(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),c<b)throw new RangeError("end < start");if(c!==b&&0!==this.length){if(b<0||b>=this.length)throw new RangeError("start out of bounds");if(c<0||c>this.length)throw new RangeError("end out of bounds");var d;if("number"==typeof a)for(d=b;d<c;d++)this[d]=a;else{var e=R(a.toString()),f=e.length;for(d=b;d<c;d++)this[d]=e[d%f]}return this}},f.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(f.TYPED_ARRAY_SUPPORT)return new f(this).buffer;for(var a=new Uint8Array(this.length),b=0,c=a.length;b<c;b+=1)a[b]=this[b];return a.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var _=f.prototype;f._augment=function(a){return a.constructor=f,a._isBuffer=!0,a._set=a.set,a.get=_.get,a.set=_.set,a.write=_.write,a.toString=_.toString,a.toLocaleString=_.toString,a.toJSON=_.toJSON,a.equals=_.equals,a.compare=_.compare,a.indexOf=_.indexOf,a.copy=_.copy,a.slice=_.slice,a.readUIntLE=_.readUIntLE,a.readUIntBE=_.readUIntBE,a.readUInt8=_.readUInt8,a.readUInt16LE=_.readUInt16LE,a.readUInt16BE=_.readUInt16BE,a.readUInt32LE=_.readUInt32LE,a.readUInt32BE=_.readUInt32BE,a.readIntLE=_.readIntLE,a.readIntBE=_.readIntBE,a.readInt8=_.readInt8,a.readInt16LE=_.readInt16LE,a.readInt16BE=_.readInt16BE,a.readInt32LE=_.readInt32LE,a.readInt32BE=_.readInt32BE,a.readFloatLE=_.readFloatLE,a.readFloatBE=_.readFloatBE,a.readDoubleLE=_.readDoubleLE,a.readDoubleBE=_.readDoubleBE,a.writeUInt8=_.writeUInt8,a.writeUIntLE=_.writeUIntLE,a.writeUIntBE=_.writeUIntBE,a.writeUInt16LE=_.writeUInt16LE,a.writeUInt16BE=_.writeUInt16BE,a.writeUInt32LE=_.writeUInt32LE,a.writeUInt32BE=_.writeUInt32BE,a.writeIntLE=_.writeIntLE,a.writeIntBE=_.writeIntBE,a.writeInt8=_.writeInt8,a.writeInt16LE=_.writeInt16LE,a.writeInt16BE=_.writeInt16BE,a.writeInt32LE=_.writeInt32LE,a.writeInt32BE=_.writeInt32BE,a.writeFloatLE=_.writeFloatLE,a.writeFloatBE=_.writeFloatBE,a.writeDoubleLE=_.writeDoubleLE,a.writeDoubleBE=_.writeDoubleBE,a.fill=_.fill,a.inspect=_.inspect,a.toArrayBuffer=_.toArrayBuffer,a};var aa=/[^+\/0-9A-Za-z-_]/g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{17:17,27:27,7:7}],11:[function(a,b,c){/*! codem-isoboxer v0.3.5 https://github.com/madebyhiro/codem-isoboxer/blob/master/LICENSE.txt */ -var d={};d.parseBuffer=function(a){return new e(a).parse()},d.addBoxProcessor=function(a,b){"string"==typeof a&&"function"==typeof b&&(f.prototype._boxProcessors[a]=b)},d.createFile=function(){return new e},d.createBox=function(a,b,c){var d=f.create(a);return b&&b.append(d,c),d},d.createFullBox=function(a,b,c){var e=d.createBox(a,b,c);return e.version=0,e.flags=0,e},d.Utils={},d.Utils.dataViewToString=function(a,b){var c=b||"utf-8";if("undefined"!=typeof TextDecoder)return new TextDecoder(c).decode(a);var d=[],e=0;if("utf-8"===c)for(;e<a.byteLength;){var f=a.getUint8(e++);f<128||(f<224?(f=(31&f)<<6,f|=63&a.getUint8(e++)):f<240?(f=(15&f)<<12,f|=(63&a.getUint8(e++))<<6,f|=63&a.getUint8(e++)):(f=(7&f)<<18,f|=(63&a.getUint8(e++))<<12,f|=(63&a.getUint8(e++))<<6,f|=63&a.getUint8(e++))),d.push(String.fromCharCode(f))}else for(;e<a.byteLength;)d.push(String.fromCharCode(a.getUint8(e++)));return d.join("")},d.Utils.utf8ToByteArray=function(a){var b,c;if("undefined"!=typeof TextEncoder)b=(new TextEncoder).encode(a);else for(b=[],c=0;c<a.length;++c){var d=a.charCodeAt(c);d<128?b.push(d):d<2048?(b.push(192|d>>6),b.push(128|63&d)):d<65536?(b.push(224|d>>12),b.push(128|63&d>>6),b.push(128|63&d)):(b.push(240|d>>18),b.push(128|63&d>>12),b.push(128|63&d>>6),b.push(128|63&d))}return b},d.Utils.appendBox=function(a,b,c){if(b._offset=a._cursor.offset,b._root=a._root?a._root:a,b._raw=a._raw,b._parent=a,-1!==c){if(void 0===c||null===c)return void a.boxes.push(b);var d,e=-1;if("number"==typeof c)e=c;else{if("string"==typeof c)d=c;else{if("object"!=typeof c||!c.type)return void a.boxes.push(b);d=c.type}for(var f=0;f<a.boxes.length;f++)if(d===a.boxes[f].type){e=f+1;break}}a.boxes.splice(e,0,b)}},void 0!==c&&(c.parseBuffer=d.parseBuffer,c.addBoxProcessor=d.addBoxProcessor,c.createFile=d.createFile,c.createBox=d.createBox,c.createFullBox=d.createFullBox,c.Utils=d.Utils),d.Cursor=function(a){this.offset=void 0===a?0:a};var e=function(a){this._cursor=new d.Cursor,this.boxes=[],a&&(this._raw=new DataView(a))};e.prototype.fetch=function(a){var b=this.fetchAll(a,!0);return b.length?b[0]:null},e.prototype.fetchAll=function(a,b){var c=[];return e._sweep.call(this,a,c,b),c},e.prototype.parse=function(){for(this._cursor.offset=0,this.boxes=[];this._cursor.offset<this._raw.byteLength;){var a=f.parse(this);if(void 0===a.type)break;this.boxes.push(a)}return this},e._sweep=function(a,b,c){this.type&&this.type==a&&b.push(this);for(var d in this.boxes){if(b.length&&c)return;e._sweep.call(this.boxes[d],a,b,c)}},e.prototype.write=function(){var a,b=0;for(a=0;a<this.boxes.length;a++)b+=this.boxes[a].getLength(!1);var c=new Uint8Array(b);for(this._rawo=new DataView(c.buffer),this.bytes=c,this._cursor.offset=0,a=0;a<this.boxes.length;a++)this.boxes[a].write();return c.buffer},e.prototype.append=function(a,b){d.Utils.appendBox(this,a,b)};var f=function(){this._cursor=new d.Cursor};f.parse=function(a){var b=new f;return b._offset=a._cursor.offset,b._root=a._root?a._root:a,b._raw=a._raw,b._parent=a,b._parseBox(),a._cursor.offset=b._raw.byteOffset+b._raw.byteLength,b},f.create=function(a){var b=new f;return b.type=a,b.boxes=[],b},f.prototype._boxContainers=["dinf","edts","mdia","meco","mfra","minf","moof","moov","mvex","stbl","strk","traf","trak","tref","udta","vttc","sinf","schi","encv","enca"],f.prototype._boxProcessors={},f.prototype._procField=function(a,b,c){this._parsing?this[a]=this._readField(b,c):this._writeField(b,c,this[a])},f.prototype._procFieldArray=function(a,b,c,d){var e;if(this._parsing)for(this[a]=[],e=0;e<b;e++)this[a][e]=this._readField(c,d);else for(e=0;e<this[a].length;e++)this._writeField(c,d,this[a][e])},f.prototype._procFullBox=function(){this._procField("version","uint",8),this._procField("flags","uint",24)},f.prototype._procEntries=function(a,b,c){var d;if(this._parsing)for(this[a]=[],d=0;d<b;d++)this[a].push({}),c.call(this,this[a][d]);else for(d=0;d<b;d++)c.call(this,this[a][d])},f.prototype._procSubEntries=function(a,b,c,d){var e;if(this._parsing)for(a[b]=[],e=0;e<c;e++)a[b].push({}),d.call(this,a[b][e]);else for(e=0;e<c;e++)d.call(this,a[b][e])},f.prototype._procEntryField=function(a,b,c,d){this._parsing?a[b]=this._readField(c,d):this._writeField(c,d,a[b])},f.prototype._procSubBoxes=function(a,b){var c;if(this._parsing)for(this[a]=[],c=0;c<b;c++)this[a].push(f.parse(this));else for(c=0;c<b;c++)this._rawo?this[a][c].write():this.size+=this[a][c].getLength()},f.prototype._readField=function(a,b){switch(a){case"uint":return this._readUint(b);case"int":return this._readInt(b);case"template":return this._readTemplate(b);case"string":return-1===b?this._readTerminatedString():this._readString(b);case"data":return this._readData(b);case"utf8":return this._readUTF8String();default:return-1}},f.prototype._readInt=function(a){var b=null,c=this._cursor.offset-this._raw.byteOffset;switch(a){case 8:b=this._raw.getInt8(c);break;case 16:b=this._raw.getInt16(c);break;case 32:b=this._raw.getInt32(c);break;case 64:var d=this._raw.getInt32(c),e=this._raw.getInt32(c+4);b=d*Math.pow(2,32)+e}return this._cursor.offset+=a>>3,b},f.prototype._readUint=function(a){var b,c,d=null,e=this._cursor.offset-this._raw.byteOffset;switch(a){case 8:d=this._raw.getUint8(e);break;case 16:d=this._raw.getUint16(e);break;case 24:b=this._raw.getUint16(e),c=this._raw.getUint8(e+2),d=(b<<8)+c;break;case 32:d=this._raw.getUint32(e);break;case 64:b=this._raw.getUint32(e),c=this._raw.getUint32(e+4),d=b*Math.pow(2,32)+c}return this._cursor.offset+=a>>3,d},f.prototype._readString=function(a){for(var b="",c=0;c<a;c++){var d=this._readUint(8);b+=String.fromCharCode(d)}return b},f.prototype._readTemplate=function(a){return this._readUint(a/2)+this._readUint(a/2)/Math.pow(2,a/2)},f.prototype._readTerminatedString=function(){for(var a="";this._cursor.offset-this._offset<this._raw.byteLength;){var b=this._readUint(8);if(0===b)break;a+=String.fromCharCode(b)}return a},f.prototype._readData=function(a){var b=a>0?a:this._raw.byteLength-(this._cursor.offset-this._offset);if(b>0){var c=new Uint8Array(this._raw.buffer,this._cursor.offset,b);return this._cursor.offset+=b,c}return null},f.prototype._readUTF8String=function(){var a=this._raw.byteLength-(this._cursor.offset-this._offset),b=null;return a>0&&(b=new DataView(this._raw.buffer,this._cursor.offset,a),this._cursor.offset+=a),b?d.Utils.dataViewToString(b):b},f.prototype._parseBox=function(){if(this._parsing=!0,this._cursor.offset=this._offset,this._offset+8>this._raw.buffer.byteLength)return void(this._root._incomplete=!0);switch(this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this.size){case 0:this._raw=new DataView(this._raw.buffer,this._offset,this._raw.byteLength-this._cursor.offset+8);break;case 1:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.largesize);break;default:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.size)}this._incomplete||(this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type)?this._parseContainerBox():this._data=this._readData())},f.prototype._parseFullBox=function(){this.version=this._readUint(8),this.flags=this._readUint(24)},f.prototype._parseContainerBox=function(){for(this.boxes=[];this._cursor.offset-this._raw.byteOffset<this._raw.byteLength;)this.boxes.push(f.parse(this))},f.prototype.append=function(a,b){d.Utils.appendBox(this,a,b)},f.prototype.getLength=function(){if(this._parsing=!1,this._rawo=null,this.size=0,this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type))for(var a=0;a<this.boxes.length;a++)this.size+=this.boxes[a].getLength();return this._data&&this._writeData(this._data),this.size},f.prototype.write=function(){switch(this._parsing=!1,this._cursor.offset=this._parent._cursor.offset,this.size){case 0:this._rawo=new DataView(this._parent._rawo.buffer,this._cursor.offset,this.parent._rawo.byteLength-this._cursor.offset);break;case 1:this._rawo=new DataView(this._parent._rawo.buffer,this._cursor.offset,this.largesize);break;default:this._rawo=new DataView(this._parent._rawo.buffer,this._cursor.offset,this.size)}if(this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type))for(var a=0;a<this.boxes.length;a++)this.boxes[a].write();return this._data&&this._writeData(this._data),this._parent._cursor.offset+=this.size,this.size},f.prototype._writeInt=function(a,b){if(this._rawo){var c=this._cursor.offset-this._rawo.byteOffset;switch(a){case 8:this._rawo.setInt8(c,b);break;case 16:this._rawo.setInt16(c,b);break;case 32:this._rawo.setInt32(c,b);break;case 64:var d=Math.floor(b/Math.pow(2,32)),e=b-d*Math.pow(2,32);this._rawo.setUint32(c,d),this._rawo.setUint32(c+4,e)}this._cursor.offset+=a>>3}else this.size+=a>>3},f.prototype._writeUint=function(a,b){if(this._rawo){var c,d,e=this._cursor.offset-this._rawo.byteOffset;switch(a){case 8:this._rawo.setUint8(e,b);break;case 16:this._rawo.setUint16(e,b);break;case 24:c=(16776960&b)>>8,d=255&b,this._rawo.setUint16(e,c),this._rawo.setUint8(e+2,d);break;case 32:this._rawo.setUint32(e,b);break;case 64:c=Math.floor(b/Math.pow(2,32)),d=b-c*Math.pow(2,32),this._rawo.setUint32(e,c),this._rawo.setUint32(e+4,d)}this._cursor.offset+=a>>3}else this.size+=a>>3},f.prototype._writeString=function(a,b){for(var c=0;c<a;c++)this._writeUint(8,b.charCodeAt(c))},f.prototype._writeTerminatedString=function(a){if(0!==a.length){for(var b=0;b<a.length;b++)this._writeUint(8,a.charCodeAt(b));this._writeUint(8,0)}},f.prototype._writeTemplate=function(a,b){var c=Math.floor(b),d=(b-c)*Math.pow(2,a/2);this._writeUint(a/2,c),this._writeUint(a/2,d)},f.prototype._writeData=function(a){var b;if(a)if(this._rawo){if(a instanceof Array){for(var c=this._cursor.offset-this._rawo.byteOffset,b=0;b<a.length;b++)this._rawo.setInt8(c+b,a[b]);this._cursor.offset+=a.length}a instanceof Uint8Array&&(this._root.bytes.set(a,this._cursor.offset),this._cursor.offset+=a.length)}else this.size+=a.length},f.prototype._writeUTF8String=function(a){var b=d.Utils.utf8ToByteArray(a);if(this._rawo)for(var c=new DataView(this._rawo.buffer,this._cursor.offset,b.length),e=0;e<b.length;e++)c.setUint8(e,b[e]);else this.size+=b.length},f.prototype._writeField=function(a,b,c){switch(a){case"uint":this._writeUint(b,c);break;case"int":this._writeInt(b,c);break;case"template":this._writeTemplate(b,c);break;case"string":-1==b?this._writeTerminatedString(c):this._writeString(b,c);break;case"data":this._writeData(c);break;case"utf8":this._writeUTF8String(c)}},f.prototype._boxProcessors.avc1=f.prototype._boxProcessors.encv=function(){this._procFieldArray("reserved1",6,"uint",8),this._procField("data_reference_index","uint",16),this._procField("pre_defined1","uint",16),this._procField("reserved2","uint",16),this._procFieldArray("pre_defined2",3,"uint",32),this._procField("width","uint",16),this._procField("height","uint",16),this._procField("horizresolution","template",32),this._procField("vertresolution","template",32),this._procField("reserved3","uint",32),this._procField("frame_count","uint",16),this._procFieldArray("compressorname",32,"uint",8),this._procField("depth","uint",16),this._procField("pre_defined3","int",16),this._procField("config","data",-1)},f.prototype._boxProcessors.dref=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procSubBoxes("entries",this.entry_count)},f.prototype._boxProcessors.elst=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procEntries("entries",this.entry_count,function(a){this._procEntryField(a,"segment_duration","uint",1===this.version?64:32),this._procEntryField(a,"media_time","int",1===this.version?64:32),this._procEntryField(a,"media_rate_integer","int",16),this._procEntryField(a,"media_rate_fraction","int",16)})},f.prototype._boxProcessors.emsg=function(){this._procFullBox(),this._procField("scheme_id_uri","string",-1),this._procField("value","string",-1),this._procField("timescale","uint",32),this._procField("presentation_time_delta","uint",32),this._procField("event_duration","uint",32),this._procField("id","uint",32),this._procField("message_data","data",-1)},f.prototype._boxProcessors.free=f.prototype._boxProcessors.skip=function(){this._procField("data","data",-1)},f.prototype._boxProcessors.frma=function(){this._procField("data_format","uint",32)},f.prototype._boxProcessors.ftyp=f.prototype._boxProcessors.styp=function(){this._procField("major_brand","string",4),this._procField("minor_version","uint",32);var a=-1;this._parsing&&(a=(this._raw.byteLength-(this._cursor.offset-this._raw.byteOffset))/4),this._procFieldArray("compatible_brands",a,"string",4)},f.prototype._boxProcessors.hdlr=function(){this._procFullBox(),this._procField("pre_defined","uint",32),this._procField("handler_type","string",4),this._procFieldArray("reserved",3,"uint",32),this._procField("name","string",-1)},f.prototype._boxProcessors.mdat=function(){this._procField("data","data",-1)},f.prototype._boxProcessors.mdhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("timescale","uint",32),this._procField("duration","uint",1==this.version?64:32),this._parsing||"string"!=typeof this.language||(this.language=this.language.charCodeAt(0)-96<<10|this.language.charCodeAt(1)-96<<5|this.language.charCodeAt(2)-96),this._procField("language","uint",16),this._parsing&&(this.language=String.fromCharCode(96+(this.language>>10&31),96+(this.language>>5&31),96+(31&this.language))),this._procField("pre_defined","uint",16)},f.prototype._boxProcessors.mehd=function(){this._procFullBox(),this._procField("fragment_duration","uint",1==this.version?64:32)},f.prototype._boxProcessors.mfhd=function(){this._procFullBox(),this._procField("sequence_number","uint",32)},f.prototype._boxProcessors.mfro=function(){this._procFullBox(),this._procField("mfra_size","uint",32)},f.prototype._boxProcessors.mp4a=f.prototype._boxProcessors.enca=function(){this._procFieldArray("reserved1",6,"uint",8),this._procField("data_reference_index","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procField("channelcount","uint",16),this._procField("samplesize","uint",16),this._procField("pre_defined","uint",16),this._procField("reserved3","uint",16),this._procField("samplerate","template",32),this._procField("esds","data",-1)},f.prototype._boxProcessors.mvhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("timescale","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procField("rate","template",32),this._procField("volume","template",16),this._procField("reserved1","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procFieldArray("matrix",9,"template",32),this._procFieldArray("pre_defined",6,"uint",32),this._procField("next_track_ID","uint",32)},f.prototype._boxProcessors.payl=function(){this._procField("cue_text","utf8")},f.prototype._boxProcessors.pssh=function(){this._procFullBox(),this._procFieldArray("SystemID",16,"uint",8),this._procField("DataSize","uint",32),this._procFieldArray("Data",this.DataSize,"uint",8)},f.prototype._boxProcessors.schm=function(){this._procFullBox(),this._procField("scheme_type","uint",32),this._procField("scheme_version","uint",32),1&this.flags&&this._procField("scheme_uri","string",-1)},f.prototype._boxProcessors.sdtp=function(){this._procFullBox();var a=-1;this._parsing&&(a=this._raw.byteLength-(this._cursor.offset-this._raw.byteOffset)),this._procFieldArray("sample_dependency_table",a,"uint",8)},f.prototype._boxProcessors.sidx=function(){this._procFullBox(),this._procField("reference_ID","uint",32),this._procField("timescale","uint",32),this._procField("earliest_presentation_time","uint",1==this.version?64:32),this._procField("first_offset","uint",1==this.version?64:32),this._procField("reserved","uint",16),this._procField("reference_count","uint",16),this._procEntries("references",this.reference_count,function(a){this._parsing||(a.reference=(1&a.reference_type)<<31,a.reference|=2147483647&a.referenced_size,a.sap=(1&a.starts_with_SAP)<<31,a.sap|=(3&a.SAP_type)<<28,a.sap|=268435455&a.SAP_delta_time),this._procEntryField(a,"reference","uint",32),this._procEntryField(a,"subsegment_duration","uint",32),this._procEntryField(a,"sap","uint",32),this._parsing&&(a.reference_type=a.reference>>31&1,a.referenced_size=2147483647&a.reference,a.starts_with_SAP=a.sap>>31&1,a.SAP_type=a.sap>>28&7,a.SAP_delta_time=268435455&a.sap)})},f.prototype._boxProcessors.smhd=function(){this._procFullBox(),this._procField("balance","uint",16),this._procField("reserved","uint",16)},f.prototype._boxProcessors.ssix=function(){this._procFullBox(),this._procField("subsegment_count","uint",32),this._procEntries("subsegments",this.subsegment_count,function(a){this._procEntryField(a,"ranges_count","uint",32),this._procSubEntries(a,"ranges",a.ranges_count,function(a){this._procEntryField(a,"level","uint",8),this._procEntryField(a,"range_size","uint",24)})})},f.prototype._boxProcessors.stsd=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procSubBoxes("entries",this.entry_count)},f.prototype._boxProcessors.subs=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procEntries("entries",this.entry_count,function(a){this._procEntryField(a,"sample_delta","uint",32),this._procEntryField(a,"subsample_count","uint",16),this._procSubEntries(a,"subsamples",a.subsample_count,function(a){this._procEntryField(a,"subsample_size","uint",1===this.version?32:16),this._procEntryField(a,"subsample_priority","uint",8),this._procEntryField(a,"discardable","uint",8),this._procEntryField(a,"codec_specific_parameters","uint",32)})})},f.prototype._boxProcessors.tenc=function(){this._procFullBox(),this._procField("default_IsEncrypted","uint",24),this._procField("default_IV_size","uint",8),this._procFieldArray("default_KID",16,"uint",8)},f.prototype._boxProcessors.tfdt=function(){this._procFullBox(),this._procField("baseMediaDecodeTime","uint",1==this.version?64:32)},f.prototype._boxProcessors.tfhd=function(){this._procFullBox(),this._procField("track_ID","uint",32),1&this.flags&&this._procField("base_data_offset","uint",64),2&this.flags&&this._procField("sample_description_offset","uint",32),8&this.flags&&this._procField("default_sample_duration","uint",32),16&this.flags&&this._procField("default_sample_size","uint",32),32&this.flags&&this._procField("default_sample_flags","uint",32)},f.prototype._boxProcessors.tfra=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._parsing||(this.reserved=0,this.reserved|=(48&this.length_size_of_traf_num)<<4,this.reserved|=(12&this.length_size_of_trun_num)<<2,this.reserved|=3&this.length_size_of_sample_num),this._procField("reserved","uint",32),this._parsing&&(this.length_size_of_traf_num=(48&this.reserved)>>4,this.length_size_of_trun_num=(12&this.reserved)>>2,this.length_size_of_sample_num=3&this.reserved),this._procField("number_of_entry","uint",32),this._procEntries("entries",this.number_of_entry,function(a){this._procEntryField(a,"time","uint",1===this.version?64:32),this._procEntryField(a,"moof_offset","uint",1===this.version?64:32),this._procEntryField(a,"traf_number","uint",8*(this.length_size_of_traf_num+1)),this._procEntryField(a,"trun_number","uint",8*(this.length_size_of_trun_num+1)),this._procEntryField(a,"sample_number","uint",8*(this.length_size_of_sample_num+1))})},f.prototype._boxProcessors.tkhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("track_ID","uint",32),this._procField("reserved1","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procFieldArray("reserved2",2,"uint",32),this._procField("layer","uint",16),this._procField("alternate_group","uint",16),this._procField("volume","template",16),this._procField("reserved3","uint",16),this._procFieldArray("matrix",9,"template",32),this._procField("width","template",32),this._procField("height","template",32)},f.prototype._boxProcessors.trex=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._procField("default_sample_description_index","uint",32),this._procField("default_sample_duration","uint",32),this._procField("default_sample_size","uint",32),this._procField("default_sample_flags","uint",32)},f.prototype._boxProcessors.trun=function(){this._procFullBox(),this._procField("sample_count","uint",32),1&this.flags&&this._procField("data_offset","int",32),4&this.flags&&this._procField("first_sample_flags","uint",32),this._procEntries("samples",this.sample_count,function(a){256&this.flags&&this._procEntryField(a,"sample_duration","uint",32),512&this.flags&&this._procEntryField(a,"sample_size","uint",32),1024&this.flags&&this._procEntryField(a,"sample_flags","uint",32),2048&this.flags&&this._procEntryField(a,"sample_composition_time_offset",1===this.version?"int":"uint",32)})},f.prototype._boxProcessors["url "]=f.prototype._boxProcessors["urn "]=function(){this._procFullBox(),"urn "===this.type&&this._procField("name","string",-1),this._procField("location","string",-1)},f.prototype._boxProcessors.vlab=function(){this._procField("source_label","utf8")},f.prototype._boxProcessors.vmhd=function(){this._procFullBox(),this._procField("graphicsmode","uint",16),this._procFieldArray("opcolor",3,"uint",16)},f.prototype._boxProcessors.vttC=function(){this._procField("config","utf8")},f.prototype._boxProcessors.vtte=function(){}},{}],12:[function(a,b,c){(function(a){function b(a){return Array.isArray?Array.isArray(a):"[object Array]"===q(a)}function d(a){return"boolean"==typeof a}function e(a){return null===a}function f(a){return null==a}function g(a){return"number"==typeof a}function h(a){return"string"==typeof a}function i(a){return"symbol"==typeof a}function j(a){return void 0===a}function k(a){return"[object RegExp]"===q(a)}function l(a){return"object"==typeof a&&null!==a}function m(a){return"[object Date]"===q(a)}function n(a){return"[object Error]"===q(a)||a instanceof Error}function o(a){return"function"==typeof a}function p(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||void 0===a}function q(a){return Object.prototype.toString.call(a)}c.isArray=b,c.isBoolean=d,c.isNull=e,c.isNullOrUndefined=f,c.isNumber=g,c.isString=h,c.isSymbol=i,c.isUndefined=j,c.isRegExp=k,c.isObject=l,c.isDate=m,c.isError=n,c.isFunction=o,c.isPrimitive=p,c.isBuffer=a.isBuffer}).call(this,{isBuffer:a(26)})},{26:26}],13:[function(a,b,c){function d(a){return null===a||void 0===a}function e(a){return!(!a||"object"!=typeof a||"number"!=typeof a.length)&&("function"==typeof a.copy&&"function"==typeof a.slice&&!(a.length>0&&"number"!=typeof a[0]))}function f(a,b,c){var f,k;if(d(a)||d(b))return!1;if(a.prototype!==b.prototype)return!1;if(i(a))return!!i(b)&&(a=g.call(a),b=g.call(b),j(a,b,c));if(e(a)){if(!e(b))return!1;if(a.length!==b.length)return!1;for(f=0;f<a.length;f++)if(a[f]!==b[f])return!1;return!0}try{var l=h(a),m=h(b)}catch(n){return!1}if(l.length!=m.length)return!1;for(l.sort(),m.sort(),f=l.length-1;f>=0;f--)if(l[f]!=m[f])return!1;for(f=l.length-1;f>=0;f--)if(k=l[f],!j(a[k],b[k],c))return!1;return typeof a==typeof b}var g=Array.prototype.slice,h=a(15),i=a(14),j=b.exports=function(a,b,c){return c||(c={}),a===b||(a instanceof Date&&b instanceof Date?a.getTime()===b.getTime():!a||!b||"object"!=typeof a&&"object"!=typeof b?c.strict?a===b:a==b:f(a,b,c))}},{14:14,15:15}],14:[function(a,b,c){function d(a){return"[object Arguments]"==Object.prototype.toString.call(a)}function e(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Object.prototype.hasOwnProperty.call(a,"callee")&&!Object.prototype.propertyIsEnumerable.call(a,"callee")||!1}var f="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();c=b.exports=f?d:e,c.supported=d,c.unsupported=e},{}],15:[function(a,b,c){function d(a){var b=[];for(var c in a)b.push(c);return b}c=b.exports="function"==typeof Object.keys?Object.keys:d,c.shim=d},{}],16:[function(a,b,c){function d(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function e(a){return"function"==typeof a}function f(a){return"number"==typeof a}function g(a){return"object"==typeof a&&null!==a}function h(a){return void 0===a}b.exports=d,d.EventEmitter=d,d.prototype._events=void 0,d.prototype._maxListeners=void 0,d.defaultMaxListeners=10,d.prototype.setMaxListeners=function(a){if(!f(a)||a<0||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},d.prototype.emit=function(a){var b,c,d,f,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||g(this._events.error)&&!this._events.error.length)){if((b=arguments[1])instanceof Error)throw b;throw TypeError('Uncaught, unspecified "error" event.')}if(c=this._events[a],h(c))return!1;if(e(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(d=arguments.length,f=new Array(d-1),i=1;i<d;i++)f[i-1]=arguments[i];c.apply(this,f)}else if(g(c)){for(d=arguments.length,f=new Array(d-1),i=1;i<d;i++)f[i-1]=arguments[i];for(j=c.slice(),d=j.length,i=0;i<d;i++)j[i].apply(this,f)}return!0},d.prototype.addListener=function(a,b){var c;if(!e(b))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,e(b.listener)?b.listener:b),this._events[a]?g(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,g(this._events[a])&&!this._events[a].warned){var c;c=h(this._maxListeners)?d.defaultMaxListeners:this._maxListeners,c&&c>0&&this._events[a].length>c&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())}return this},d.prototype.on=d.prototype.addListener,d.prototype.once=function(a,b){function c(){this.removeListener(a,c),d||(d=!0,b.apply(this,arguments))}if(!e(b))throw TypeError("listener must be a function");var d=!1;return c.listener=b,this.on(a,c),this},d.prototype.removeListener=function(a,b){var c,d,f,h;if(!e(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],f=c.length,d=-1,c===b||e(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(g(c)){for(h=f;h-- >0;)if(c[h]===b||c[h].listener&&c[h].listener===b){d=h;break}if(d<0)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(d,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},d.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],e(c))this.removeListener(a,c);else for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},d.prototype.listeners=function(a){return this._events&&this._events[a]?e(this._events[a])?[this._events[a]]:this._events[a].slice():[]},d.listenerCount=function(a,b){return a._events&&a._events[b]?e(a._events[b])?1:a._events[b].length:0}},{}],17:[function(a,b,c){c.read=function(a,b,c,d,e){var f,g,h=8*e-d-1,i=(1<<h)-1,j=i>>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?NaN:1/0*(n?-1:1);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<<j)-1,l=k>>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=b<0||0===b&&1/b<0?1:0;for(b=Math.abs(b),isNaN(b)||b===1/0?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<<e|h,j+=e;j>0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],18:[function(a,b,c){!function(a,b,c,d,e){function f(a){this.node=a}function g(){this.events=[],this.head=null,this.body=null}function h(){this.styling=null,this.layout=null}function i(){this.styles={}}function j(){this.id=null,this.styleAttrs=null,this.styleRefs=null}function k(){this.regions={}}function l(a){this.kind=a,this.begin=null,this.end=null,this.styleAttrs=null,this.regionID=null,this.sets=null,this.timeContainer=null}function m(){l.call(this,"body")}function n(){l.call(this,"div")}function o(){l.call(this,"p")}function p(){l.call(this,"span"),this.space=null}function q(){l.call(this,"span"),this.space=null,this.text=null}function r(){l.call(this,"br")}function s(){this.id=null,this.begin=null,this.end=null,this.styleAttrs=null,this.sets=null}function t(){this.begin=null,this.end=null,this.qname=null,this.value=null}function u(a){return a&&"xml:id"in a.attributes?a.attributes["xml:id"].value||null:null}function v(a){return a&&"region"in a.attributes?a.attributes.region.value:""}function w(a,b){var c=a&&"timeContainer"in a.attributes?a.attributes.timeContainer.value:null;return c&&"par"!==c?"seq"===c?"seq":(K(b,"Illegal value of timeContainer (assuming 'par')"),"par"):"par"}function x(a){return a&&"style"in a.attributes?a.attributes.style.value.split(" "):[]}function y(a,b){var c={};if(null!==a)for(var e in a.attributes){var f=a.attributes[e].uri+" "+a.attributes[e].local,g=d.byQName[f];if(void 0!==g){var h=g.parse(a.attributes[e].value);null!==h?(c[f]=h,g===d.byName.zIndex&&J(b,"zIndex attribute present but not used by IMSC1 since regions do not overlap")):K(b,"Cannot parse styling attribute "+f+" --\x3e "+a.attributes[e].value)}}return c}function z(a,b,c){for(var d in a.attributes)if(a.attributes[d].uri===b&&a.attributes[d].local===c)return a.attributes[d].value;return null}function A(a,b){var d=z(a,c.ns_ittp,"aspectRatio"),e=null;if(null!==d){var f=/(\d+) (\d+)/,g=f.exec(d);if(null!==g){var h=parseInt(g[1]),i=parseInt(g[2]);0!==h&&0!==i?e=h/i:K(b,"Illegal aspectRatio values (ignoring)")}else K(b,"Malformed aspectRatio attribute (ignoring)")}return e}function B(a,b){var d=z(a,c.ns_ttp,"cellResolution"),e=15,f=32;if(null!==d){var g=/(\d+) (\d+)/,h=g.exec(d);null!==h?(f=parseInt(h[1]),e=parseInt(h[2])):J(b,"Malformed cellResolution value (using initial value instead)")}return{w:f,h:e}}function C(a,b){var d,e=z(a,c.ns_ttp,"frameRate"),f=30;if(null!==e){d=/(\d+)/.exec(e),null!==d?f=parseInt(d[1]):J(b,"Malformed frame rate attribute (using initial value instead)")} -var g=z(a,c.ns_ttp,"frameRateMultiplier"),h=1;if(null!==g){d=/(\d+) (\d+)/.exec(g),null!==d?h=parseInt(d[1])/parseInt(d[2]):J(b,"Malformed frame rate multiplier attribute (using initial value instead)")}var i=h*f,j=1,k=z(a,c.ns_ttp,"tickRate");if(null===k)null!==e&&(j=i);else{d=/(\d+)/.exec(k),null!==d?j=parseInt(d[1]):J(b,"Malformed tick rate attribute (using initial value instead)")}return{effectiveFrameRate:i,tickRate:j}}function D(a,b){var d=z(a,c.ns_tts,"extent");if(null===d)return null;var f=d.split(" ");if(2!==f.length)return J(b,"Malformed extent (ignoring)"),null;var g=e.parseLength(f[0]),h=e.parseLength(f[1]);return h&&g?{h:h,w:g}:(J(b,"Malformed extent values (ignoring)"),null)}function E(a,b,c){var d,e=/^(\d{2,}):(\d\d):(\d\d(?:\.\d+)?)$/,f=/^(\d{2,}):(\d\d):(\d\d)\:(\d{2,})$/,g=/^(\d+(?:\.\d+)?)f$/,h=/^(\d+(?:\.\d+)?)t$/,i=/^(\d+(?:\.\d+)?)ms$/,j=/^(\d+(?:\.\d+)?)s$/,k=/^(\d+(?:\.\d+)?)h$/,l=/^(\d+(?:\.\d+)?)m$/,m=null;return null!==(d=g.exec(c))?null!==b&&(m=parseFloat(d[1])/b):null!==(d=h.exec(c))?null!==a&&(m=parseFloat(d[1])/a):null!==(d=i.exec(c))?m=parseFloat(d[1])/1e3:null!==(d=j.exec(c))?m=parseFloat(d[1]):null!==(d=k.exec(c))?m=3600*parseFloat(d[1]):null!==(d=l.exec(c))?m=60*parseFloat(d[1]):null!==(d=e.exec(c))?m=3600*parseInt(d[1])+60*parseInt(d[2])+parseFloat(d[3]):null!==(d=f.exec(c))&&null!==b&&(m=3600*parseInt(d[1])+60*parseInt(d[2])+parseInt(d[3])+(null===d[4]?0:parseInt(d[4])/b)),m}function F(a,b,c,d){var e=b&&"seq"===b.timeContainer,f=0;c&&"begin"in c.attributes&&null===(f=E(a.tickRate,a.effectiveFrameRate,c.attributes.begin.value))&&(J(d,"Malformed begin value "+c.attributes.begin.value+" (using 0)"),f=0);var g=e?0:null;c&&"dur"in c.attributes&&null===(g=E(a.tickRate,a.effectiveFrameRate,c.attributes.dur.value))&&J(d,"Malformed dur value "+c.attributes.dur.value+" (ignoring)");var h=null;c&&"end"in c.attributes&&null===(h=E(a.tickRate,a.effectiveFrameRate,c.attributes.end.value))&&J(d,"Malformed end value (ignoring)");var i=0;if(b&&(i=e&&"contents"in b&&b.contents.length>0?b.contents[b.contents.length-1].end:b.begin||0),f+=i,null!==g)h=f+g;else{var j=b&&"end"in b?b.end:Number.POSITIVE_INFINITY;h=null!==h?h+i:j}return{begin:f,end:h}}function G(a,b,c){for(;b.styleRefs.length>0;){var d=b.styleRefs.pop();d in a.styles?(G(a,a.styles[d],c),I(a.styles[d].styleAttrs,b.styleAttrs)):K(c,"Non-existant style id referenced")}}function H(a,b,c,d){for(var e=b.length-1;e>=0;e--){var f=b[e];f in a.styles?I(a.styles[f].styleAttrs,c):K(d,"Non-existant style id referenced")}}function I(a,b){for(var c in a)c in b||(b[c]=a[c])}function J(a,b){if(a&&a.warn&&a.warn(b))throw b}function K(a,b){if(a&&a.error&&a.error(b))throw b}function L(a,b){throw a&&a.fatal&&a.fatal(b),b}function M(a,b){for(var c,d=0,e=a.length-1;d<=e;){c=Math.floor((d+e)/2);var f=a[c];if(f<b)d=c+1;else{if(!(f>b))return{found:!0,index:c};e=c-1}}return{found:!1,index:d}}a.fromXML=function(a,d,e){var l=b.parser(!0,{xmlns:!0}),u=[],v=[],w=[],x=0,y=null;l.onclosetag=function(a){if(u[0]instanceof i)for(var b in u[0].styles)G(u[0],u[0].styles[b],d);else if(u[0]instanceof o||u[0]instanceof p){if(u[0].contents.length>1){var g,h=[u[0].contents[0]];for(g=1;g<u[0].contents.length;g++)u[0].contents[g]instanceof q&&h[h.length-1]instanceof q?h[h.length-1].text+=u[0].contents[g].text:h.push(u[0].contents[g]);u[0].contents=h}u[0]instanceof p&&1===u[0].contents.length&&u[0].contents[0]instanceof q&&null===u[0].text&&(u[0].text=u[0].contents[0].text,delete u[0].contents)}else u[0]instanceof f&&(u[0].node.uri===c.ns_tt&&"metadata"===u[0].node.local?x--:x>0&&e&&"onCloseTag"in e&&e.onCloseTag());w.shift(),v.shift(),u.shift()},l.ontext=function(a){if(void 0===u[0]);else if(u[0]instanceof p||u[0]instanceof o){var b=new q;b.initFromText(y,u[0],a,w[0],d),u[0].contents.push(b)}else u[0]instanceof f&&x>0&&e&&"onText"in e&&e.onText(a)},l.onopentag=function(a){var b=a.attributes["xml:space"];b?w.unshift(b.value):0===w.length?w.unshift("default"):w.unshift(w[0]);var l=a.attributes["xml:lang"];if(l?v.unshift(l.value):0===v.length?v.unshift(""):v.unshift(v[0]),a.uri===c.ns_tt)if("tt"===a.local)null!==y&&L("Two <tt> elements at ("+this.line+","+this.column+")"),y=new g,y.initFromNode(a,d),u.unshift(y);else if("head"===a.local)u[0]instanceof g||L("Parent of <head> element is not <tt> at ("+this.line+","+this.column+")"),null!==y.head&&L("Second <head> element at ("+this.line+","+this.column+")"),y.head=new h,u.unshift(y.head);else if("styling"===a.local)u[0]instanceof h||L("Parent of <styling> element is not <head> at ("+this.line+","+this.column+")"),null!==y.head.styling&&L("Second <styling> element at ("+this.line+","+this.column+")"),y.head.styling=new i,u.unshift(y.head.styling);else if("style"===a.local){var q;u[0]instanceof i?(q=new j,q.initFromNode(a,d),q.id?y.head.styling.styles[q.id]=q:K("<style> element missing @id attribute"),u.unshift(q)):u[0]instanceof s?(q=new j,q.initFromNode(a,d),I(q.styleAttrs,u[0].styleAttrs),u.unshift(q)):L(d,"Parent of <style> element is not <styling> or <region> at ("+this.line+","+this.column+")")}else if("layout"===a.local)u[0]instanceof h||L(d,"Parent of <layout> element is not <head> at "+this.line+","+this.column+")"),null!==y.head.layout&&L(d,"Second <layout> element at "+this.line+","+this.column+")"),y.head.layout=new k,u.unshift(y.head.layout);else if("region"===a.local){u[0]instanceof k||L(d,"Parent of <region> element is not <layout> at "+this.line+","+this.column+")");var z=new s;z.initFromNode(y,a,d),!z.id||z.id in y.head.layout.regions?K(d,"Ignoring <region> with duplicate or missing @id at "+this.line+","+this.column+")"):(y.head.layout.regions[z.id]=z,y._registerEvent(z)),u.unshift(z)}else if("body"===a.local){u[0]instanceof g||L(d,"Parent of <body> element is not <tt> at "+this.line+","+this.column+")"),null!==y.body&&L(d,"Second <body> element at "+this.line+","+this.column+")");var A=new m;A.initFromNode(y,a,d),y._registerEvent(A),y.body=A,u.unshift(A)}else if("div"===a.local){u[0]instanceof n||u[0]instanceof m||L(d,"Parent of <div> element is not <body> or <div> at "+this.line+","+this.column+")");var B=new n;B.initFromNode(y,u[0],a,d),y._registerEvent(B),u[0].contents.push(B),u.unshift(B)}else if("p"===a.local){u[0]instanceof n||L(d,"Parent of <p> element is not <div> at "+this.line+","+this.column+")");var C=new o;C.initFromNode(y,u[0],a,d),y._registerEvent(C),u[0].contents.push(C),u.unshift(C)}else if("span"===a.local){u[0]instanceof p||u[0]instanceof o||L(d,"Parent of <span> element is not <span> or <p> at "+this.line+","+this.column+")");var D=new p;D.initFromNode(y,u[0],a,w[0],d),y._registerEvent(D),u[0].contents.push(D),u.unshift(D)}else if("br"===a.local){u[0]instanceof p||u[0]instanceof o||L(d,"Parent of <br> element is not <span> or <p> at "+this.line+","+this.column+")");var E=new r;E.initFromNode(y,u[0],a,d),y._registerEvent(E),u[0].contents.push(E),u.unshift(E)}else if("set"===a.local){u[0]instanceof p||u[0]instanceof o||u[0]instanceof n||u[0]instanceof m||u[0]instanceof s||u[0]instanceof r||L(d,"Parent of <set> element is not a content element or a region at "+this.line+","+this.column+")");var F=new t;F.initFromNode(y,u[0],a,d),y._registerEvent(F),u[0].sets.push(F),u.unshift(F)}else u.unshift(new f(a));else u.unshift(new f(a));if(u[0]instanceof f)if(a.uri===c.ns_tt&&"metadata"===a.local)x++;else if(x>0&&e&&"onOpenTag"in e){var G=[];for(var H in a.attributes)G[a.attributes[H].uri+" "+a.attributes[H].local]={uri:a.attributes[H].uri,local:a.attributes[H].local,value:a.attributes[H].value};e.onOpenTag(a.uri,a.local,G)}},l.write(a).close(),null!==y.head?delete y.head.styling:y.head=new h,null===y.head.layout&&(y.head.layout=new k);var z=!1;for(var A in y.head.layout.regions){z=!0;break}if(!z){var B=s.createDefaultRegion();y.head.layout.regions[B.id]=B}return y},g.prototype.initFromNode=function(a,b){this.cellResolution=B(a,b);var d=C(a,b);this.effectiveFrameRate=d.effectiveFrameRate,this.tickRate=d.tickRate,this.aspectRatio=A(a,b);var e=z(a,c.ns_ttp,"timeBase");null!==e&&"media"!==e&&L(b,"Unsupported time base");var f=D(a,b);null===f?this.pxDimensions={h:480,w:640}:("px"===f.h.unit&&"px"===f.w.unit||L(b,"Extent on TT must be in px or absent"),this.pxDimensions={h:f.h.value,w:f.w.value})},g.prototype._registerEvent=function(a){if(!(a.end<=a.begin)){var b=M(this.events,a.begin);if(b.found||this.events.splice(b.index,0,a.begin),a.end!==Number.POSITIVE_INFINITY){var c=M(this.events,a.end);c.found||this.events.splice(c.index,0,a.end)}}},g.prototype.getMediaTimeRange=function(){return[this.events[0],this.events[this.events.length-1]]},g.prototype.getMediaTimeEvents=function(){return this.events},j.prototype.initFromNode=function(a,b){this.id=u(a),this.styleAttrs=y(a,b),this.styleRefs=x(a)},l.prototype.initFromNode=function(a,b,c,d){var e=F(a,b,c,d);this.begin=e.begin,this.end=e.end,this.styleAttrs=y(c,d),null!==a.head&&null!==a.head.styling&&H(a.head.styling,x(c),this.styleAttrs,d),this.regionID=v(c),this.sets=[],this.timeContainer=w(c,d)},m.prototype.initFromNode=function(a,b,c){l.prototype.initFromNode.call(this,a,null,b,c),this.contents=[]},n.prototype.initFromNode=function(a,b,c,d){l.prototype.initFromNode.call(this,a,b,c,d),this.contents=[]},o.prototype.initFromNode=function(a,b,c,d){l.prototype.initFromNode.call(this,a,b,c,d),this.contents=[]},p.prototype.initFromNode=function(a,b,c,d,e){l.prototype.initFromNode.call(this,a,b,c,e),this.space=d,this.contents=[]},q.prototype.initFromText=function(a,b,c,d,e){l.prototype.initFromNode.call(this,a,b,null,e),this.text=c,this.space=d},r.prototype.initFromNode=function(a,b,c,d){l.prototype.initFromNode.call(this,a,b,c,d)},s.createDefaultRegion=function(){var a=new s;return a.id="",a.begin=0,a.end=Number.POSITIVE_INFINITY,a.styleAttrs={},a.sets=[],a},s.prototype.initFromNode=function(a,b,c){this.id=u(b);var d=F(a,null,b,c);this.begin=d.begin,this.end=d.end,this.styleAttrs=y(b,c),this.sets=[],null!==a.head&&null!==a.head.styling&&H(a.head.styling,x(b),this.styleAttrs,c)},t.prototype.initFromNode=function(a,b,c,d){var e=F(a,b,c,d);this.begin=e.begin,this.end=e.end;var f=y(c,d);for(var g in f){if(this.qname){K(d,"More than one style specified on set");break}this.qname=g,this.value=f[g]}}}(void 0===c?this.imscDoc={}:c,"undefined"==typeof sax?a(45):sax,"undefined"==typeof imscNames?a(22):imscNames,"undefined"==typeof imscStyles?a(23):imscStyles,"undefined"==typeof imscUtils?a(24):imscUtils)},{22:22,23:23,24:24,45:45}],19:[function(a,b,c){!function(a,b,c){function d(a,b,h){var j;if("region"===h.kind?(j=document.createElement("div"),j.style.position="absolute"):"body"===h.kind?j=document.createElement("div"):"div"===h.kind?j=document.createElement("div"):"p"===h.kind?j=document.createElement("p"):"span"===h.kind?j=document.createElement("span"):"br"===h.kind&&(j=document.createElement("br")),!j)return void n(a.errorHandler,"Error processing ISD element kind: "+h.kind);j.style.margin="0";for(var k in o){var l=o[k],m=h.styleAttrs[l.qname];void 0!==m&&null!==l.map&&l.map(a,j,h,m)}var p=j,q=h.styleAttrs[c.byName.multiRowAlign.qname];if(q&&"auto"!==q){var r=document.createElement("span");r.style.display="inline-block",r.style.textAlign=q,j.appendChild(r),p=r,a.mra=q}var s=h.styleAttrs[c.byName.linePadding.qname];if(s&&s>0&&(a.lp=s),"span"===h.kind&&h.text)if(a.lp||a.mra)for(var t=0;t<h.text.length;t++){var u=document.createElement("span");u.textContent=h.text.charAt(t),j.appendChild(u)}else j.textContent=h.text;b.appendChild(j);for(var v in h.contents)d(a,p,h.contents[v]);if((a.lp||a.mra)&&"p"===h.kind){var w=[];f(p,w,"red"),i(w,a.lp*a.h),a.lp&&delete a.lp,a.mra&&delete a.mra}if("region"===h.kind){var x=[];g(p,x);var y=h.styleAttrs[c.byName.writingMode.qname];if(("lrtb"===y||"lr"===y||"rltb"===y||"rl"===y)&&a.enableRollUp&&h.contents.length>0&&"after"===h.styleAttrs[c.byName.displayAlign.qname]){var z=""===h.id?"_":h.id,A=new e(z,x);if(a.currentISDState[A.id]=A,a.previousISDState&&A.id in a.previousISDState&&a.previousISDState[A.id].plist.length>0&&A.plist.length>1&&A.plist[A.plist.length-2].text===a.previousISDState[A.id].plist[a.previousISDState[A.id].plist.length-1].text){var B=j.firstElementChild;B.style.bottom="-"+A.plist[A.plist.length-1].height+"px",B.style.transition="transform 0.4s",B.style.position="relative",B.style.transform="translateY(-"+A.plist[A.plist.length-1].height+"px)"}}}}function e(a,b){this.id=a,this.plist=b}function f(a,b,c){if(0===a.childElementCount)b.push({element:a,bgcolor:c});else for(var d=a.style.backgroundColor||c,e=a.firstChild;e;)e.nodeType===Node.ELEMENT_NODE&&f(e,b,d),e=e.nextSibling}function g(a,b){if(0===a.childElementCount&&"span"===a.localName){var c=a.getBoundingClientRect();0!==b.length&&h(c.top,c.height,b[b.length-1].top,b[b.length-1].height)?(c.top<b[b.length-1].top&&(b[b.length-1].top=c.top),c.height>b[b.length-1].height&&(b[b.length-1].height=c.height),b[b.length-1].text+=a.textContent):b.push({top:c.top,height:c.height,text:a.textContent})}else for(var d=a.firstChild;d;)d.nodeType===Node.ELEMENT_NODE&&g(d,b),d=d.nextSibling}function h(a,b,c,d){return a+b<c+d&&a>c||c+d<=a+b&&c>=a}function i(a,b){for(var c=null,d=!0,e=!1,f=0;f<=a.length;f++)if(f===a.length||"br"!==a[f].element.localName){if(null===c||f===a.length||!h(a[f].element.getBoundingClientRect().top,a[f].element.getBoundingClientRect().height,a[c].element.getBoundingClientRect().top,a[c].element.getBoundingClientRect().height)){if(b&&!d){for(;--f>=0;)if(0!==a[f].element.getBoundingClientRect().width){if(k(a[f].element,a[f].color,b),0!==a[f].element.getBoundingClientRect().width&&h(a[f].element.getBoundingClientRect().top,a[f].element.getBoundingClientRect().height,a[c].element.getBoundingClientRect().top,a[c].element.getBoundingClientRect().height))break;l(a[f].element)}d=!0;continue}if(f!==a.length&&null!==c&&!e){var g=document.createElement("br");a[f].element.parentElement.insertBefore(g,a[f].element),a.splice(f,0,{element:g}),e=!0;continue}if(f!==a.length&&b)for(;f<a.length;f++)if(0!==a[f].element.getBoundingClientRect().width){j(a[f].element,a[f].color,b);break}d=!1,e=!1,c=f}}else e=!0}function j(a,b,c){a.style.paddingLeft=c+"px",a.style.backgroundColor=b}function k(a,b,c){a.style.paddingRight=c+"px",a.style.backgroundColor=b}function l(a){a.style.paddingRight=null}function m(a,b){this.qname=a,this.map=b}function n(a,b){if(a&&a.error&&a.error(b))throw b}a.render=function(a,b,c,e,f,g,h,i,j){var k=e||b.clientHeight,l=f||b.clientWidth;if(null!==a.aspectRatio){var m=k*a.aspectRatio;m>l?k=Math.round(l/a.aspectRatio):l=m}var n=document.createElement("div");n.style.position="relative",n.style.width=l+"px",n.style.height=k+"px",n.style.margin="auto",n.style.top=0,n.style.bottom=0,n.style.left=0,n.style.right=0,n.style.zIndex=0;var o={h:k,w:l,regionH:null,regionW:null,imgResolver:c,displayForcedOnlyMode:g||!1,isd:a,errorHandler:h,previousISDState:i,enableRollUp:j||!1,currentISDState:{}};b.appendChild(n);for(var p in a.contents)d(o,n,a.contents[p]);return o.currentISDState};var o=[new m("http://www.w3.org/ns/ttml#styling backgroundColor",function(a,b,c,d){b.style.backgroundColor="rgba("+d[0].toString()+","+d[1].toString()+","+d[2].toString()+","+(d[3]/255).toString()+")"}),new m("http://www.w3.org/ns/ttml#styling color",function(a,b,c,d){b.style.color="rgba("+d[0].toString()+","+d[1].toString()+","+d[2].toString()+","+(d[3]/255).toString()+")"}),new m("http://www.w3.org/ns/ttml#styling direction",function(a,b,c,d){b.style.direction=d}),new m("http://www.w3.org/ns/ttml#styling display",function(a,b,c,d){}),new m("http://www.w3.org/ns/ttml#styling displayAlign",function(a,b,c,d){b.style.display="flex",b.style.flexDirection="column","before"===d?b.style.justifyContent="flex-start":"center"===d?b.style.justifyContent="center":"after"===d&&(b.style.justifyContent="flex-end")}),new m("http://www.w3.org/ns/ttml#styling extent",function(a,b,c,d){a.regionH=d.h*a.h,a.regionW=d.w*a.w;var e=0,f=0,g=c.styleAttrs["http://www.w3.org/ns/ttml#styling padding"];g&&(e=(g[0]+g[2])*a.h,f=(g[1]+g[3])*a.w),b.style.height=a.regionH-e+"px",b.style.width=a.regionW-f+"px"}),new m("http://www.w3.org/ns/ttml#styling fontFamily",function(a,b,c,d){var e=[];for(var f in d)"monospaceSerif"===d[f]?(e.push("Courier New"),e.push('"Liberation Mono"'),e.push("Courier"),e.push("monospace")):"proportionalSansSerif"===d[f]?(e.push("Arial"),e.push("Helvetica"),e.push('"Liberation Sans"'),e.push("sans-serif")):"monospace"===d[f]?e.push("monospace"):"sansSerif"===d[f]?e.push("sans-serif"):"serif"===d[f]?e.push("serif"):"monospaceSansSerif"===d[f]?(e.push("Consolas"),e.push("monospace")):"proportionalSerif"===d[f]?e.push("serif"):e.push(d[f]);b.style.fontFamily=e.join(",")}),new m("http://www.w3.org/ns/ttml#styling fontSize",function(a,b,c,d){b.style.fontSize=d*a.h+"px"}),new m("http://www.w3.org/ns/ttml#styling fontStyle",function(a,b,c,d){b.style.fontStyle=d}),new m("http://www.w3.org/ns/ttml#styling fontWeight",function(a,b,c,d){b.style.fontWeight=d}),new m("http://www.w3.org/ns/ttml#styling lineHeight",function(a,b,c,d){b.style.lineHeight="normal"===d?"normal":d*a.h+"px"}),new m("http://www.w3.org/ns/ttml#styling opacity",function(a,b,c,d){b.style.opacity=d}),new m("http://www.w3.org/ns/ttml#styling origin",function(a,b,c,d){b.style.top=d.h*a.h+"px",b.style.left=d.w*a.w+"px"}),new m("http://www.w3.org/ns/ttml#styling overflow",function(a,b,c,d){b.style.overflow=d}),new m("http://www.w3.org/ns/ttml#styling padding",function(a,b,c,d){var e=[];e[0]=d[0]*a.h+"px",e[1]=d[3]*a.w+"px",e[2]=d[2]*a.h+"px",e[3]=d[1]*a.w+"px",b.style.padding=e.join(" ")}),new m("http://www.w3.org/ns/ttml#styling showBackground",null),new m("http://www.w3.org/ns/ttml#styling textAlign",function(a,b,d,e){var f,g=d.styleAttrs[c.byName.direction.qname];f="start"===e?"rtl"===g?"right":"left":"end"===e?"rtl"===g?"left":"right":e,b.style.textAlign=f}),new m("http://www.w3.org/ns/ttml#styling textDecoration",function(a,b,c,d){b.style.textDecoration=d.join(" ").replace("lineThrough","line-through")}),new m("http://www.w3.org/ns/ttml#styling textOutline",function(a,b,c,d){b.style.textShadow="none"===d?"":"rgba("+d.color[0].toString()+","+d.color[1].toString()+","+d.color[2].toString()+","+(d.color[3]/255).toString()+") 0px 0px "+d.thickness*a.h+"px"}),new m("http://www.w3.org/ns/ttml#styling unicodeBidi",function(a,b,c,d){var e;e="bidiOverride"===d?"bidi-override":d,b.style.unicodeBidi=e}),new m("http://www.w3.org/ns/ttml#styling visibility",function(a,b,c,d){b.style.visibility=d}),new m("http://www.w3.org/ns/ttml#styling wrapOption",function(a,b,c,d){"wrap"===d?"preserve"===c.space?b.style.whiteSpace="pre-wrap":b.style.whiteSpace="normal":"preserve"===c.space?b.style.whiteSpace="pre":b.style.whiteSpace="noWrap"}),new m("http://www.w3.org/ns/ttml#styling writingMode",function(a,b,c,d){"lrtb"===d||"lr"===d?b.style.writingMode="horizontal-tb":"rltb"===d||"rl"===d?b.style.writingMode="horizontal-tb":"tblr"===d?b.style.writingMode="vertical-lr":"tbrl"!==d&&"tb"!==d||(b.style.writingMode="vertical-rl")}),new m("http://www.w3.org/ns/ttml#styling zIndex",function(a,b,c,d){b.style.zIndex=d}),new m("http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt backgroundImage",function(a,b,c,d){if(null!==a.imgResolver&&null!==d){var e=document.createElement("img"),f=a.imgResolver(d,e);f&&(e.src=f),e.height=a.regionH,e.width=a.regionW,b.appendChild(e)}}),new m("http://www.w3.org/ns/ttml/profile/imsc1#styling forcedDisplay",function(a,b,c,d){a.displayForcedOnlyMode&&!1===d&&(b.style.visibility="hidden")})],p={};for(var q in o)p[o[q].qname]=o[q]}(void 0===c?this.imscHTML={}:c,"undefined"==typeof imscNames?a(22):imscNames,"undefined"==typeof imscStyles?a(23):imscStyles)},{22:22,23:23}],20:[function(a,b,c){!function(a,b,c){function d(a,b,g,j,k,l,m,n){if(b<m.begin||b>=m.end)return null;var o="regionID"in m&&""!==m.regionID?m.regionID:l;if(null!==k&&o!==g.id&&(!("contents"in m)||"contents"in m&&0===m.contents.length||""!==o))return null;var p=new h(m);for(var q in m.sets)b<m.sets[q].begin||b>=m.sets[q].end||(p.styleAttrs[m.sets[q].qname]=m.sets[q].value);var r={};for(var s in p.styleAttrs)if(r[s]=!0,s===c.byName.writingMode.qname&&!(c.byName.direction.qname in p.styleAttrs)){var t=p.styleAttrs[s];"lrtb"===t||"lr"===t?p.styleAttrs[c.byName.direction.qname]="ltr":"rltb"!==t&&"rl"!==t||(p.styleAttrs[c.byName.direction.qname]="rtl")}if(null!==k)for(var u in c.all){var v=c.all[u];if(v.qname===c.byName.textDecoration.qname){var w=k.styleAttrs[v.qname],x=p.styleAttrs[v.qname],y=[];void 0===x?y=w:-1===x.indexOf("none")?((-1===x.indexOf("noUnderline")&&-1!==w.indexOf("underline")||-1!==x.indexOf("underline"))&&y.push("underline"),(-1===x.indexOf("noLineThrough")&&-1!==w.indexOf("lineThrough")||-1!==x.indexOf("lineThrough"))&&y.push("lineThrough"),(-1===x.indexOf("noOverline")&&-1!==w.indexOf("overline")||-1!==x.indexOf("overline"))&&y.push("overline")):y.push("none"),p.styleAttrs[v.qname]=y}else v.inherit&&v.qname in k.styleAttrs&&!(v.qname in p.styleAttrs)&&(p.styleAttrs[v.qname]=k.styleAttrs[v.qname])}for(var z in c.all){var A=c.all[z];A.qname in p.styleAttrs||("region"===p.kind||!1===A.inherit&&null!==A.initial)&&(p.styleAttrs[A.qname]=A.parse(A.initial),r[A.qname]=!0)}for(var B in c.all){var C=c.all[B];if(C.qname in r&&null!==C.compute){var D=C.compute(a,k,p,p.styleAttrs[C.qname]);null!==D?p.styleAttrs[C.qname]=D:i(n,"Style '"+C.qname+"' on element '"+p.kind+"' cannot be computed")}}if("none"===p.styleAttrs[c.byName.display.qname])return null;var E;null===k?E=null===j?[]:[j]:"contents"in m&&(E=m.contents);for(var F in E){var G=d(a,b,g,j,p,o,E[F]);null!==G&&p.contents.push(G.element)}for(var H in p.styleAttrs){-1===c.byQName[H].applies.indexOf(p.kind)&&delete p.styleAttrs[H]}if("span"===p.kind&&p.text&&"default"===p.space){var I=p.text.replace(/\s+/g," ");p.text=I}if("p"===p.kind){var J=[];e(p,J);for(var K=0,L="after_br",M=0;;)if("after_br"===L)K>=J.length||"br"===J[K].kind?(L="before_br",M=K,K--):("preserve"!==J[K].space&&(J[K].text=J[K].text.replace(/^\s+/g,"")),J[K].text.length>0?(L="looking_br",K++):J.splice(K,1));else if("before_br"===L)if(K<0||"br"===J[K].kind){if(L="after_br",(K=M+1)>=J.length)break}else if("preserve"!==J[K].space&&(J[K].text=J[K].text.replace(/\s+$/g,"")),J[K].text.length>0){if(L="after_br",(K=M+1)>=J.length)break}else J.splice(K,1),K--;else K>=J.length||"br"===J[K].kind?(L="before_br",M=K,K--):K++;f(p)}return"div"===p.kind&&c.byName.backgroundImage.qname in p.styleAttrs||"br"===p.kind||"contents"in p&&p.contents.length>0||"span"===p.kind&&null!==p.text||"region"===p.kind&&"always"===p.styleAttrs[c.byName.showBackground.qname]?{region_id:o,element:p}:null}function e(a,b){if("contents"in a)for(var c in a.contents)e(a.contents[c],b);else b.push(a)}function f(a){if("br"===a.kind)return!1;if("text"in a)return 0===a.text.length;if("contents"in a){for(var b=a.contents.length;b--;)f(a.contents[b])&&a.contents.splice(b,1);return 0===a.contents.length}}function g(a){this.contents=[],this.aspectRatio=a.aspectRatio}function h(a){this.kind=a.kind||"region",a.id&&(this.id=a.id),this.styleAttrs={};for(var b in a.styleAttrs)this.styleAttrs[b]=a.styleAttrs[b];"text"in a?this.text=a.text:"br"!==a.kind&&(this.contents=[]),"space"in a&&(this.space=a.space)}function i(a,b){if(a&&a.error&&a.error(b))throw b}a.generateISD=function(a,b,c){var e=new g(a);for(var f in a.head.layout.regions){var h=d(a,b,a.head.layout.regions[f],a.body,null,"",a.head.layout.regions[f],c);null!==h&&e.contents.push(h.element)}return e}}(void 0===c?this.imscISD={}:c,"undefined"==typeof imscNames?a(22):imscNames,"undefined"==typeof imscStyles?a(23):imscStyles)},{22:22,23:23}],21:[function(a,b,c){c.generateISD=a(20).generateISD,c.fromXML=a(18).fromXML,c.renderHTML=a(19).render},{18:18,19:19,20:20}],22:[function(a,b,c){!function(a){a.ns_tt="http://www.w3.org/ns/ttml",a.ns_tts="http://www.w3.org/ns/ttml#styling",a.ns_ttp="http://www.w3.org/ns/ttml#parameter",a.ns_xml="http://www.w3.org/XML/1998/namespace",a.ns_itts="http://www.w3.org/ns/ttml/profile/imsc1#styling",a.ns_ittp="http://www.w3.org/ns/ttml/profile/imsc1#parameter",a.ns_smpte="http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt",a.ns_ebutts="urn:ebu:tt:style"}(void 0===c?this.imscNames={}:c)},{}],23:[function(a,b,c){!function(a,b,c){function d(a,b,c,d,e,f,g,h){this.name=b,this.ns=a,this.qname=a+" "+b,this.inherit=e,this.animatable=f,this.initial=c,this.applies=d,this.parse=g,this.compute=h}a.all=[new d(b.ns_tts,"backgroundColor","transparent",["body","div","p","region","span"],!1,!0,c.parseColor,null),new d(b.ns_tts,"color","white",["span"],!0,!0,c.parseColor,null),new d(b.ns_tts,"direction","ltr",["p","span"],!0,!0,function(a){return a},null),new d(b.ns_tts,"display","auto",["body","div","p","region","span"],!1,!0,function(a){return a},null),new d(b.ns_tts,"displayAlign","before",["region"],!1,!0,function(a){return a},null),new d(b.ns_tts,"extent","auto",["tt","region"],!1,!0,function(a){if("auto"===a)return a;var b=a.split(" ");if(2!==b.length)return null;var d=c.parseLength(b[0]),e=c.parseLength(b[1]);return e&&d?{h:e,w:d}:null},function(a,b,c,d){var e,f;if("auto"===d)e=1;else if("%"===d.h.unit)e=d.h.value/100;else{if("px"!==d.h.unit)return null;e=d.h.value/a.pxDimensions.h}if("auto"===d)f=1;else if("%"===d.w.unit)f=d.w.value/100;else{if("px"!==d.w.unit)return null;f=d.w.value/a.pxDimensions.w}return{h:e,w:f}}),new d(b.ns_tts,"fontFamily","default",["span"],!0,!0,function(a){var b=a.split(","),c=[];for(var d in b)"'"!==b[d].charAt(0)&&'"'!==b[d].charAt(0)&&"default"===b[d]?c.push("monospaceSerif"):c.push(b[d]);return c},null),new d(b.ns_tts,"fontSize","1c",["span"],!0,!0,c.parseLength,function(b,c,d,e){var f;if("%"===e.unit)f=null!==c?c.styleAttrs[a.byName.fontSize.qname]*e.value/100:e.value/100/b.cellResolution.h;else if("em"===e.unit)f=null!==c?c.styleAttrs[a.byName.fontSize.qname]*e.value:e.value/b.cellResolution.h;else if("c"===e.unit)f=e.value/b.cellResolution.h;else{if("px"!==e.unit)return null;f=e.value/b.pxDimensions.h}return f}),new d(b.ns_tts,"fontStyle","normal",["span"],!0,!0,function(a){return a},null),new d(b.ns_tts,"fontWeight","normal",["span"],!0,!0,function(a){return a},null),new d(b.ns_tts,"lineHeight","normal",["p"],!0,!0,function(a){return"normal"===a?a:c.parseLength(a)},function(b,c,d,e){var f;if("normal"===e)f=e;else if("%"===e.unit)f=d.styleAttrs[a.byName.fontSize.qname]*e.value/100;else if("em"===e.unit)f=d.styleAttrs[a.byName.fontSize.qname]*e.value;else if("c"===e.unit)f=e.value/b.cellResolution.h;else{if("px"!==e.unit)return null;f=e.value/b.pxDimensions.h}return f}),new d(b.ns_tts,"opacity",1,["region"],!1,!0,parseFloat,null),new d(b.ns_tts,"origin","auto",["region"],!1,!0,function(a){if("auto"===a)return a;var b=a.split(" ");if(2!==b.length)return null;var d=c.parseLength(b[0]),e=c.parseLength(b[1]);return e&&d?{h:e,w:d}:null},function(a,b,c,d){var e,f;if("auto"===d)e=0;else if("%"===d.h.unit)e=d.h.value/100;else{if("px"!==d.h.unit)return null;e=d.h.value/a.pxDimensions.h}if("auto"===d)f=0;else if("%"===d.w.unit)f=d.w.value/100;else{if("px"!==d.w.unit)return null;f=d.w.value/a.pxDimensions.w}return{h:e,w:f}}),new d(b.ns_tts,"overflow","hidden",["region"],!1,!0,function(a){return a},null),new d(b.ns_tts,"padding","0px",["region"],!1,!0,function(a){var b=a.split(" ");if(b.length>4)return null;var d=[];for(var e in b){var f=c.parseLength(b[e]);if(!f)return null;d.push(f)}return d},function(b,c,d,e){var f;if(1===e.length)f=[e[0],e[0],e[0],e[0]];else if(2===e.length)f=[e[0],e[1],e[0],e[1]];else if(3===e.length)f=[e[0],e[1],e[2],e[1]];else{if(4!==e.length)return null;f=[e[0],e[1],e[2],e[3]]}var g=d.styleAttrs[a.byName.writingMode.qname];if("lrtb"===g||"lr"===g)f=[f[0],f[3],f[2],f[1]];else if("rltb"===g||"rl"===g)f=[f[0],f[1],f[2],f[3]];else if("tblr"===g)f=[f[3],f[0],f[1],f[2]];else{if("tbrl"!==g&&"tb"!==g)return null;f=[f[3],f[2],f[1],f[0]]}var h=[];for(var i in f)if(0===f[i].value)h[i]=0;else if("%"===f[i].unit)h[i]="0"===i||"2"===i?d.styleAttrs[a.byName.extent.qname].h*f[i].value/100:d.styleAttrs[a.byName.extent.qname].w*f[i].value/100;else if("em"===f[i].unit)h[i]=d.styleAttrs[a.byName.fontSize.qname]*f[i].value;else if("c"===f[i].unit)h[i]=f[i].value/b.cellResolution.h;else{if("px"!==f[i].unit)return null;h[i]=f[i].value/b.pxDimensions.h}return h}),new d(b.ns_tts,"showBackground","always",["region"],!1,!0,function(a){return a},null),new d(b.ns_tts,"textAlign","start",["p"],!0,!0,function(a){return a},function(a,b,c,d){return"left"===d?"start":"right"===d?"end":d}),new d(b.ns_tts,"textDecoration","none",["span"],!0,!0,function(a){return a.split(" ")},null),new d(b.ns_tts,"textOutline","none",["span"],!0,!0,function(a){if("none"===a)return a;var b={},d=a.split(" ");if(0===d.length||d.length>2)return null;var e=c.parseColor(d[0]);if(b.color=e,null!==e&&d.shift(),1!==d.length)return null;var f=c.parseLength(d[0]);return f?(b.thickness=f,b):null},function(b,c,d,e){if("none"===e)return e;var f={};if(null===e.color?f.color=d.styleAttrs[a.byName.color.qname]:f.color=e.color,"%"===e.thickness.unit)f.thickness=d.styleAttrs[a.byName.fontSize.qname]*e.thickness.value/100;else if("em"===e.thickness.unit)f.thickness=d.styleAttrs[a.byName.fontSize.qname]*e.thickness.value;else if("c"===e.thickness.unit)f.thickness=e.thickness.value/b.cellResolution.h;else{if("px"!==e.thickness.unit)return null;f.thickness=e.thickness.value/b.pxDimensions.h}return f}),new d(b.ns_tts,"unicodeBidi","normal",["span","p"],!1,!0,function(a){return a},null),new d(b.ns_tts,"visibility","visible",["body","div","p","region","span"],!0,!0,function(a){return a},null),new d(b.ns_tts,"wrapOption","wrap",["span"],!0,!0,function(a){return a},null),new d(b.ns_tts,"writingMode","lrtb",["region"],!1,!0,function(a){return a},null),new d(b.ns_tts,"zIndex","auto",["region"],!1,!0,function(a){var b;return"auto"===a?b=a:(b=parseInt(a),isNaN(b)&&(b=null)),b},null),new d(b.ns_ebutts,"linePadding","0c",["p"],!0,!1,c.parseLength,function(a,b,c,d){return"c"===d.unit?d.value/a.cellResolution.h:null}),new d(b.ns_ebutts,"multiRowAlign","auto",["p"],!0,!1,function(a){return a},null),new d(b.ns_smpte,"backgroundImage",null,["div"],!1,!1,function(a){return a},null),new d(b.ns_itts,"forcedDisplay","false",["body","div","p","region","span"],!0,!0,function(a){return"true"===a},null)],a.byQName={};for(var e in a.all)a.byQName[a.all[e].qname]=a.all[e];a.byName={};for(var f in a.all)a.byName[a.all[f].name]=a.all[f]}(void 0===c?this.imscStyles={}:c,"undefined"==typeof imscNames?a(22):imscNames,"undefined"==typeof imscUtils?a(24):imscUtils)},{22:22,24:24}],24:[function(a,b,c){!function(a){var b=/#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?/,c=/rgb\((\d+),(\d+),(\d+)\)/,d=/rgba\((\d+),(\d+),(\d+),(\d+)\)/,e={transparent:[0,0,0,0],black:[0,0,0,255],silver:[192,192,192,255],gray:[128,128,128,255],white:[255,255,255,255],maroon:[128,0,0,255],red:[255,0,0,255],purple:[128,0,128,255],fuchsia:[255,0,255,255],magenta:[255,0,255,255],green:[0,128,0,255],lime:[0,255,0,255],olive:[128,128,0,255],yellow:[255,255,0,255],navy:[0,0,128,255],blue:[0,0,255,255],teal:[0,128,128,255],aqua:[0,255,255,255],cyan:[0,255,255,255]};a.parseColor=function(a){var f,g=null;return a in e?g=e[a]:null!==(f=b.exec(a))?g=[parseInt(f[1],16),parseInt(f[2],16),parseInt(f[3],16),void 0!==f[4]?parseInt(f[4],16):255]:null!==(f=c.exec(a))?g=[parseInt(f[1]),parseInt(f[2]),parseInt(f[3]),255]:null!==(f=d.exec(a))&&(g=[parseInt(f[1]),parseInt(f[2]),parseInt(f[3]),parseInt(f[4])]),g};var f=/^((?:\+|\-)?\d*(?:\.\d+)?)(px|em|c|%)$/;a.parseLength=function(a){var b,c=null;return null!==(b=f.exec(a))&&(c={value:parseFloat(b[1]),unit:b[2]}),c}}(void 0===c?this.imscUtils={}:c)},{}],25:[function(a,b,c){"function"==typeof Object.create?b.exports=function(a,b){a.super_=b,a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}:b.exports=function(a,b){a.super_=b;var c=function(){};c.prototype=b.prototype,a.prototype=new c, -a.prototype.constructor=a}},{}],26:[function(a,b,c){function d(a){return!!a.constructor&&"function"==typeof a.constructor.isBuffer&&a.constructor.isBuffer(a)}function e(a){return"function"==typeof a.readFloatLE&&"function"==typeof a.slice&&d(a.slice(0,0))}/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> - * @license MIT - */ -b.exports=function(a){return null!=a&&(d(a)||e(a)||!!a._isBuffer)}},{}],27:[function(a,b,c){var d={}.toString;b.exports=Array.isArray||function(a){return"[object Array]"==d.call(a)}},{}],28:[function(a,b,c){(function(a){"use strict";function c(b,c,d,e){if("function"!=typeof b)throw new TypeError('"callback" argument must be a function');var f,g,h=arguments.length;switch(h){case 0:case 1:return a.nextTick(b);case 2:return a.nextTick(function(){b.call(null,c)});case 3:return a.nextTick(function(){b.call(null,c,d)});case 4:return a.nextTick(function(){b.call(null,c,d,e)});default:for(f=new Array(h-1),g=0;g<f.length;)f[g++]=arguments[g];return a.nextTick(function(){b.apply(null,f)})}}!a.version||0===a.version.indexOf("v0.")||0===a.version.indexOf("v1.")&&0!==a.version.indexOf("v1.8.")?b.exports=c:b.exports=a.nextTick}).call(this,a(29))},{29:29}],29:[function(a,b,c){function d(){throw new Error("setTimeout has not been defined")}function e(){throw new Error("clearTimeout has not been defined")}function f(a){if(l===setTimeout)return setTimeout(a,0);if((l===d||!l)&&setTimeout)return l=setTimeout,setTimeout(a,0);try{return l(a,0)}catch(b){try{return l.call(null,a,0)}catch(b){return l.call(this,a,0)}}}function g(a){if(m===clearTimeout)return clearTimeout(a);if((m===e||!m)&&clearTimeout)return m=clearTimeout,clearTimeout(a);try{return m(a)}catch(b){try{return m.call(null,a)}catch(b){return m.call(this,a)}}}function h(){q&&o&&(q=!1,o.length?p=o.concat(p):r=-1,p.length&&i())}function i(){if(!q){var a=f(h);q=!0;for(var b=p.length;b;){for(o=p,p=[];++r<b;)o&&o[r].run();r=-1,b=p.length}o=null,q=!1,g(a)}}function j(a,b){this.fun=a,this.array=b}function k(){}var l,m,n=b.exports={};!function(){try{l="function"==typeof setTimeout?setTimeout:d}catch(a){l=d}try{m="function"==typeof clearTimeout?clearTimeout:e}catch(a){m=e}}();var o,p=[],q=!1,r=-1;n.nextTick=function(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];p.push(new j(a,b)),1!==p.length||q||f(i)},j.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=k,n.addListener=k,n.once=k,n.off=k,n.removeListener=k,n.removeAllListeners=k,n.emit=k,n.prependListener=k,n.prependOnceListener=k,n.listeners=function(a){return[]},n.binding=function(a){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(a){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},{}],30:[function(a,b,c){b.exports=a(31)},{31:31}],31:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);j.call(this,a),k.call(this,a),a&&!1===a.readable&&(this.readable=!1),a&&!1===a.writable&&(this.writable=!1),this.allowHalfOpen=!0,a&&!1===a.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",e)}function e(){this.allowHalfOpen||this._writableState.ended||g(f,this)}function f(a){a.end()}var g=a(28),h=Object.keys||function(a){var b=[];for(var c in a)b.push(c);return b};b.exports=d;var i=a(12);i.inherits=a(25);var j=a(33),k=a(35);i.inherits(d,j);for(var l=h(k.prototype),m=0;m<l.length;m++){var n=l[m];d.prototype[n]||(d.prototype[n]=k.prototype[n])}Object.defineProperty(d.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(a){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=a,this._writableState.destroyed=a)}}),d.prototype._destroy=function(a,b){this.push(null),this.end(),g(b,a)}},{12:12,25:25,28:28,33:33,35:35}],32:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);e.call(this,a)}b.exports=d;var e=a(34),f=a(12);f.inherits=a(25),f.inherits(d,e),d.prototype._transform=function(a,b,c){c(null,a)}},{12:12,25:25,34:34}],33:[function(a,b,c){(function(c,d){"use strict";function e(a){return L.from(a)}function f(a){return L.isBuffer(a)||a instanceof M}function g(a,b,c){if("function"==typeof a.prependListener)return a.prependListener(b,c);a._events&&a._events[b]?I(a._events[b])?a._events[b].unshift(c):a._events[b]=[c,a._events[b]]:a.on(b,c)}function h(b,c){H=H||a(31),b=b||{},this.objectMode=!!b.objectMode,c instanceof H&&(this.objectMode=this.objectMode||!!b.readableObjectMode);var d=b.highWaterMark,e=this.objectMode?16:16384;this.highWaterMark=d||0===d?d:e,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new R,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(Q||(Q=a(47).StringDecoder),this.decoder=new Q(b.encoding),this.encoding=b.encoding)}function i(b){if(H=H||a(31),!(this instanceof i))return new i(b);this._readableState=new h(b,this),this.readable=!0,b&&("function"==typeof b.read&&(this._read=b.read),"function"==typeof b.destroy&&(this._destroy=b.destroy)),K.call(this)}function j(a,b,c,d,f){var g=a._readableState;if(null===b)g.reading=!1,p(a,g);else{var h;f||(h=l(g,b)),h?a.emit("error",h):g.objectMode||b&&b.length>0?("string"==typeof b||g.objectMode||Object.getPrototypeOf(b)===L.prototype||(b=e(b)),d?g.endEmitted?a.emit("error",new Error("stream.unshift() after end event")):k(a,g,b,!0):g.ended?a.emit("error",new Error("stream.push() after EOF")):(g.reading=!1,g.decoder&&!c?(b=g.decoder.write(b),g.objectMode||0!==b.length?k(a,g,b,!1):s(a,g)):k(a,g,b,!1))):d||(g.reading=!1)}return m(g)}function k(a,b,c,d){b.flowing&&0===b.length&&!b.sync?(a.emit("data",c),a.read(0)):(b.length+=b.objectMode?1:c.length,d?b.buffer.unshift(c):b.buffer.push(c),b.needReadable&&q(a)),s(a,b)}function l(a,b){var c;return f(b)||"string"==typeof b||void 0===b||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c}function m(a){return!a.ended&&(a.needReadable||a.length<a.highWaterMark||0===a.length)}function n(a){return a>=U?a=U:(a--,a|=a>>>1,a|=a>>>2,a|=a>>>4,a|=a>>>8,a|=a>>>16,a++),a}function o(a,b){return a<=0||0===b.length&&b.ended?0:b.objectMode?1:a!==a?b.flowing&&b.length?b.buffer.head.data.length:b.length:(a>b.highWaterMark&&(b.highWaterMark=n(a)),a<=b.length?a:b.ended?b.length:(b.needReadable=!0,0))}function p(a,b){if(!b.ended){if(b.decoder){var c=b.decoder.end();c&&c.length&&(b.buffer.push(c),b.length+=b.objectMode?1:c.length)}b.ended=!0,q(a)}}function q(a){var b=a._readableState;b.needReadable=!1,b.emittedReadable||(P("emitReadable",b.flowing),b.emittedReadable=!0,b.sync?G(r,a):r(a))}function r(a){P("emit readable"),a.emit("readable"),y(a)}function s(a,b){b.readingMore||(b.readingMore=!0,G(t,a,b))}function t(a,b){for(var c=b.length;!b.reading&&!b.flowing&&!b.ended&&b.length<b.highWaterMark&&(P("maybeReadMore read 0"),a.read(0),c!==b.length);)c=b.length;b.readingMore=!1}function u(a){return function(){var b=a._readableState;P("pipeOnDrain",b.awaitDrain),b.awaitDrain&&b.awaitDrain--,0===b.awaitDrain&&J(a,"data")&&(b.flowing=!0,y(a))}}function v(a){P("readable nexttick read 0"),a.read(0)}function w(a,b){b.resumeScheduled||(b.resumeScheduled=!0,G(x,a,b))}function x(a,b){b.reading||(P("resume read 0"),a.read(0)),b.resumeScheduled=!1,b.awaitDrain=0,a.emit("resume"),y(a),b.flowing&&!b.reading&&a.read(0)}function y(a){var b=a._readableState;for(P("flow",b.flowing);b.flowing&&null!==a.read(););}function z(a,b){if(0===b.length)return null;var c;return b.objectMode?c=b.buffer.shift():!a||a>=b.length?(c=b.decoder?b.buffer.join(""):1===b.buffer.length?b.buffer.head.data:b.buffer.concat(b.length),b.buffer.clear()):c=A(a,b.buffer,b.decoder),c}function A(a,b,c){var d;return a<b.head.data.length?(d=b.head.data.slice(0,a),b.head.data=b.head.data.slice(a)):d=a===b.head.data.length?b.shift():c?B(a,b):C(a,b),d}function B(a,b){var c=b.head,d=1,e=c.data;for(a-=e.length;c=c.next;){var f=c.data,g=a>f.length?f.length:a;if(g===f.length?e+=f:e+=f.slice(0,a),0===(a-=g)){g===f.length?(++d,c.next?b.head=c.next:b.head=b.tail=null):(b.head=c,c.data=f.slice(g));break}++d}return b.length-=d,e}function C(a,b){var c=L.allocUnsafe(a),d=b.head,e=1;for(d.data.copy(c),a-=d.data.length;d=d.next;){var f=d.data,g=a>f.length?f.length:a;if(f.copy(c,c.length-a,0,g),0===(a-=g)){g===f.length?(++e,d.next?b.head=d.next:b.head=b.tail=null):(b.head=d,d.data=f.slice(g));break}++e}return b.length-=e,c}function D(a){var b=a._readableState;if(b.length>0)throw new Error('"endReadable()" called on non-empty stream');b.endEmitted||(b.ended=!0,G(E,b,a))}function E(a,b){a.endEmitted||0!==a.length||(a.endEmitted=!0,b.readable=!1,b.emit("end"))}function F(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}var G=a(28);b.exports=i;var H,I=a(27);i.ReadableState=h;var J=(a(16).EventEmitter,function(a,b){return a.listeners(b).length}),K=a(38),L=a(44).Buffer,M=d.Uint8Array||function(){},N=a(12);N.inherits=a(25);var O=a(8),P=void 0;P=O&&O.debuglog?O.debuglog("stream"):function(){};var Q,R=a(36),S=a(37);N.inherits(i,K);var T=["error","close","destroy","pause","resume"];Object.defineProperty(i.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(a){this._readableState&&(this._readableState.destroyed=a)}}),i.prototype.destroy=S.destroy,i.prototype._undestroy=S.undestroy,i.prototype._destroy=function(a,b){this.push(null),b(a)},i.prototype.push=function(a,b){var c,d=this._readableState;return d.objectMode?c=!0:"string"==typeof a&&(b=b||d.defaultEncoding,b!==d.encoding&&(a=L.from(a,b),b=""),c=!0),j(this,a,b,!1,c)},i.prototype.unshift=function(a){return j(this,a,null,!0,!1)},i.prototype.isPaused=function(){return!1===this._readableState.flowing},i.prototype.setEncoding=function(b){return Q||(Q=a(47).StringDecoder),this._readableState.decoder=new Q(b),this._readableState.encoding=b,this};var U=8388608;i.prototype.read=function(a){P("read",a),a=parseInt(a,10);var b=this._readableState,c=a;if(0!==a&&(b.emittedReadable=!1),0===a&&b.needReadable&&(b.length>=b.highWaterMark||b.ended))return P("read: emitReadable",b.length,b.ended),0===b.length&&b.ended?D(this):q(this),null;if(0===(a=o(a,b))&&b.ended)return 0===b.length&&D(this),null;var d=b.needReadable;P("need readable",d),(0===b.length||b.length-a<b.highWaterMark)&&(d=!0,P("length less than watermark",d)),b.ended||b.reading?(d=!1,P("reading or ended",d)):d&&(P("do read"),b.reading=!0,b.sync=!0,0===b.length&&(b.needReadable=!0),this._read(b.highWaterMark),b.sync=!1,b.reading||(a=o(c,b)));var e;return e=a>0?z(a,b):null,null===e?(b.needReadable=!0,a=0):b.length-=a,0===b.length&&(b.ended||(b.needReadable=!0),c!==a&&b.ended&&D(this)),null!==e&&this.emit("data",e),e},i.prototype._read=function(a){this.emit("error",new Error("_read() is not implemented"))},i.prototype.pipe=function(a,b){function d(a,b){P("onunpipe"),a===m&&b&&!1===b.hasUnpiped&&(b.hasUnpiped=!0,f())}function e(){P("onend"),a.end()}function f(){P("cleanup"),a.removeListener("close",j),a.removeListener("finish",k),a.removeListener("drain",q),a.removeListener("error",i),a.removeListener("unpipe",d),m.removeListener("end",e),m.removeListener("end",l),m.removeListener("data",h),r=!0,!n.awaitDrain||a._writableState&&!a._writableState.needDrain||q()}function h(b){P("ondata"),s=!1,!1!==a.write(b)||s||((1===n.pipesCount&&n.pipes===a||n.pipesCount>1&&-1!==F(n.pipes,a))&&!r&&(P("false write response, pause",m._readableState.awaitDrain),m._readableState.awaitDrain++,s=!0),m.pause())}function i(b){P("onerror",b),l(),a.removeListener("error",i),0===J(a,"error")&&a.emit("error",b)}function j(){a.removeListener("finish",k),l()}function k(){P("onfinish"),a.removeListener("close",j),l()}function l(){P("unpipe"),m.unpipe(a)}var m=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=a;break;case 1:n.pipes=[n.pipes,a];break;default:n.pipes.push(a)}n.pipesCount+=1,P("pipe count=%d opts=%j",n.pipesCount,b);var o=(!b||!1!==b.end)&&a!==c.stdout&&a!==c.stderr,p=o?e:l;n.endEmitted?G(p):m.once("end",p),a.on("unpipe",d);var q=u(m);a.on("drain",q);var r=!1,s=!1;return m.on("data",h),g(a,"error",i),a.once("close",j),a.once("finish",k),a.emit("pipe",m),n.flowing||(P("pipe resume"),m.resume()),a},i.prototype.unpipe=function(a){var b=this._readableState,c={hasUnpiped:!1};if(0===b.pipesCount)return this;if(1===b.pipesCount)return a&&a!==b.pipes?this:(a||(a=b.pipes),b.pipes=null,b.pipesCount=0,b.flowing=!1,a&&a.emit("unpipe",this,c),this);if(!a){var d=b.pipes,e=b.pipesCount;b.pipes=null,b.pipesCount=0,b.flowing=!1;for(var f=0;f<e;f++)d[f].emit("unpipe",this,c);return this}var g=F(b.pipes,a);return-1===g?this:(b.pipes.splice(g,1),b.pipesCount-=1,1===b.pipesCount&&(b.pipes=b.pipes[0]),a.emit("unpipe",this,c),this)},i.prototype.on=function(a,b){var c=K.prototype.on.call(this,a,b);if("data"===a)!1!==this._readableState.flowing&&this.resume();else if("readable"===a){var d=this._readableState;d.endEmitted||d.readableListening||(d.readableListening=d.needReadable=!0,d.emittedReadable=!1,d.reading?d.length&&q(this):G(v,this))}return c},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var a=this._readableState;return a.flowing||(P("resume"),a.flowing=!0,w(this,a)),this},i.prototype.pause=function(){return P("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(P("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(a){var b=this._readableState,c=!1,d=this;a.on("end",function(){if(P("wrapped end"),b.decoder&&!b.ended){var a=b.decoder.end();a&&a.length&&d.push(a)}d.push(null)}),a.on("data",function(e){if(P("wrapped data"),b.decoder&&(e=b.decoder.write(e)),(!b.objectMode||null!==e&&void 0!==e)&&(b.objectMode||e&&e.length)){d.push(e)||(c=!0,a.pause())}});for(var e in a)void 0===this[e]&&"function"==typeof a[e]&&(this[e]=function(b){return function(){return a[b].apply(a,arguments)}}(e));for(var f=0;f<T.length;f++)a.on(T[f],d.emit.bind(d,T[f]));return d._read=function(b){P("wrapped _read",b),c&&(c=!1,a.resume())},d},i._fromList=z}).call(this,a(29),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12,16:16,25:25,27:27,28:28,29:29,31:31,36:36,37:37,38:38,44:44,47:47,8:8}],34:[function(a,b,c){"use strict";function d(a){this.afterTransform=function(b,c){return e(a,b,c)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function e(a,b,c){var d=a._transformState;d.transforming=!1;var e=d.writecb;if(!e)return a.emit("error",new Error("write callback called multiple times"));d.writechunk=null,d.writecb=null,null!==c&&void 0!==c&&a.push(c),e(b);var f=a._readableState;f.reading=!1,(f.needReadable||f.length<f.highWaterMark)&&a._read(f.highWaterMark)}function f(a){if(!(this instanceof f))return new f(a);h.call(this,a),this._transformState=new d(this);var b=this;this._readableState.needReadable=!0,this._readableState.sync=!1,a&&("function"==typeof a.transform&&(this._transform=a.transform),"function"==typeof a.flush&&(this._flush=a.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(a,c){g(b,a,c)}):g(b)})}function g(a,b,c){if(b)return a.emit("error",b);null!==c&&void 0!==c&&a.push(c);var d=a._writableState,e=a._transformState;if(d.length)throw new Error("Calling transform done when ws.length != 0");if(e.transforming)throw new Error("Calling transform done when still transforming");return a.push(null)}b.exports=f;var h=a(31),i=a(12);i.inherits=a(25),i.inherits(f,h),f.prototype.push=function(a,b){return this._transformState.needTransform=!1,h.prototype.push.call(this,a,b)},f.prototype._transform=function(a,b,c){throw new Error("_transform() is not implemented")},f.prototype._write=function(a,b,c){var d=this._transformState;if(d.writecb=c,d.writechunk=a,d.writeencoding=b,!d.transforming){var e=this._readableState;(d.needTransform||e.needReadable||e.length<e.highWaterMark)&&this._read(e.highWaterMark)}},f.prototype._read=function(a){var b=this._transformState;null!==b.writechunk&&b.writecb&&!b.transforming?(b.transforming=!0,this._transform(b.writechunk,b.writeencoding,b.afterTransform)):b.needTransform=!0},f.prototype._destroy=function(a,b){var c=this;h.prototype._destroy.call(this,a,function(a){b(a),c.emit("close")})}},{12:12,25:25,31:31}],35:[function(a,b,c){(function(c,d){"use strict";function e(a){var b=this;this.next=null,this.entry=null,this.finish=function(){A(b,a)}}function f(a){return H.from(a)}function g(a){return H.isBuffer(a)||a instanceof I}function h(){}function i(b,c){C=C||a(31),b=b||{},this.objectMode=!!b.objectMode,c instanceof C&&(this.objectMode=this.objectMode||!!b.writableObjectMode);var d=b.highWaterMark,f=this.objectMode?16:16384;this.highWaterMark=d||0===d?d:f,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var g=!1===b.decodeStrings;this.decodeStrings=!g,this.defaultEncoding=b.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){r(c,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}function j(b){if(C=C||a(31),!(K.call(j,this)||this instanceof C))return new j(b);this._writableState=new i(b,this),this.writable=!0,b&&("function"==typeof b.write&&(this._write=b.write),"function"==typeof b.writev&&(this._writev=b.writev),"function"==typeof b.destroy&&(this._destroy=b.destroy),"function"==typeof b.final&&(this._final=b.final)),G.call(this)}function k(a,b){var c=new Error("write after end");a.emit("error",c),B(b,c)}function l(a,b,c,d){var e=!0,f=!1;return null===c?f=new TypeError("May not write null values to stream"):"string"==typeof c||void 0===c||b.objectMode||(f=new TypeError("Invalid non-string/buffer chunk")),f&&(a.emit("error",f),B(d,f),e=!1),e}function m(a,b,c){return a.objectMode||!1===a.decodeStrings||"string"!=typeof b||(b=H.from(b,c)),b}function n(a,b,c,d,e,f){if(!c){var g=m(b,d,e);d!==g&&(c=!0,e="buffer",d=g)}var h=b.objectMode?1:d.length;b.length+=h;var i=b.length<b.highWaterMark;if(i||(b.needDrain=!0),b.writing||b.corked){var j=b.lastBufferedRequest;b.lastBufferedRequest={chunk:d,encoding:e,isBuf:c,callback:f,next:null},j?j.next=b.lastBufferedRequest:b.bufferedRequest=b.lastBufferedRequest,b.bufferedRequestCount+=1}else o(a,b,!1,h,d,e,f);return i}function o(a,b,c,d,e,f,g){b.writelen=d,b.writecb=g,b.writing=!0,b.sync=!0,c?a._writev(e,b.onwrite):a._write(e,f,b.onwrite),b.sync=!1}function p(a,b,c,d,e){--b.pendingcb,c?(B(e,d),B(y,a,b),a._writableState.errorEmitted=!0,a.emit("error",d)):(e(d),a._writableState.errorEmitted=!0,a.emit("error",d),y(a,b))}function q(a){a.writing=!1,a.writecb=null,a.length-=a.writelen,a.writelen=0}function r(a,b){var c=a._writableState,d=c.sync,e=c.writecb;if(q(c),b)p(a,c,d,b,e);else{var f=v(c);f||c.corked||c.bufferProcessing||!c.bufferedRequest||u(a,c),d?D(s,a,c,f,e):s(a,c,f,e)}}function s(a,b,c,d){c||t(a,b),b.pendingcb--,d(),y(a,b)}function t(a,b){0===b.length&&b.needDrain&&(b.needDrain=!1,a.emit("drain"))}function u(a,b){b.bufferProcessing=!0;var c=b.bufferedRequest;if(a._writev&&c&&c.next){var d=b.bufferedRequestCount,f=new Array(d),g=b.corkedRequestsFree;g.entry=c;for(var h=0,i=!0;c;)f[h]=c,c.isBuf||(i=!1),c=c.next,h+=1;f.allBuffers=i,o(a,b,!0,b.length,f,"",g.finish),b.pendingcb++,b.lastBufferedRequest=null,g.next?(b.corkedRequestsFree=g.next,g.next=null):b.corkedRequestsFree=new e(b)}else{for(;c;){var j=c.chunk,k=c.encoding,l=c.callback;if(o(a,b,!1,b.objectMode?1:j.length,j,k,l),c=c.next,b.writing)break}null===c&&(b.lastBufferedRequest=null)}b.bufferedRequestCount=0,b.bufferedRequest=c,b.bufferProcessing=!1}function v(a){return a.ending&&0===a.length&&null===a.bufferedRequest&&!a.finished&&!a.writing}function w(a,b){a._final(function(c){b.pendingcb--,c&&a.emit("error",c),b.prefinished=!0,a.emit("prefinish"),y(a,b)})}function x(a,b){b.prefinished||b.finalCalled||("function"==typeof a._final?(b.pendingcb++,b.finalCalled=!0,B(w,a,b)):(b.prefinished=!0,a.emit("prefinish")))}function y(a,b){var c=v(b);return c&&(x(a,b),0===b.pendingcb&&(b.finished=!0,a.emit("finish"))),c}function z(a,b,c){b.ending=!0,y(a,b),c&&(b.finished?B(c):a.once("finish",c)),b.ended=!0,a.writable=!1}function A(a,b,c){var d=a.entry;for(a.entry=null;d;){var e=d.callback;b.pendingcb--,e(c),d=d.next}b.corkedRequestsFree?b.corkedRequestsFree.next=a:b.corkedRequestsFree=a}var B=a(28);b.exports=j;var C,D=!c.browser&&["v0.10","v0.9."].indexOf(c.version.slice(0,5))>-1?setImmediate:B;j.WritableState=i;var E=a(12);E.inherits=a(25);var F={deprecate:a(48)},G=a(38),H=a(44).Buffer,I=d.Uint8Array||function(){},J=a(37);E.inherits(j,G),i.prototype.getBuffer=function(){for(var a=this.bufferedRequest,b=[];a;)b.push(a),a=a.next;return b},function(){try{Object.defineProperty(i.prototype,"buffer",{get:F.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(a){}}();var K;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(K=Function.prototype[Symbol.hasInstance],Object.defineProperty(j,Symbol.hasInstance,{value:function(a){return!!K.call(this,a)||a&&a._writableState instanceof i}})):K=function(a){return a instanceof this},j.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},j.prototype.write=function(a,b,c){var d=this._writableState,e=!1,i=g(a)&&!d.objectMode;return i&&!H.isBuffer(a)&&(a=f(a)),"function"==typeof b&&(c=b,b=null),i?b="buffer":b||(b=d.defaultEncoding),"function"!=typeof c&&(c=h),d.ended?k(this,c):(i||l(this,d,a,c))&&(d.pendingcb++,e=n(this,d,i,a,b,c)),e},j.prototype.cork=function(){this._writableState.corked++},j.prototype.uncork=function(){var a=this._writableState;a.corked&&(a.corked--,a.writing||a.corked||a.finished||a.bufferProcessing||!a.bufferedRequest||u(this,a))},j.prototype.setDefaultEncoding=function(a){if("string"==typeof a&&(a=a.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((a+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+a);return this._writableState.defaultEncoding=a,this},j.prototype._write=function(a,b,c){c(new Error("_write() is not implemented"))},j.prototype._writev=null,j.prototype.end=function(a,b,c){var d=this._writableState;"function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),null!==a&&void 0!==a&&this.write(a,b),d.corked&&(d.corked=1,this.uncork()),d.ending||d.finished||z(this,d,c)},Object.defineProperty(j.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(a){this._writableState&&(this._writableState.destroyed=a)}}),j.prototype.destroy=J.destroy,j.prototype._undestroy=J.undestroy,j.prototype._destroy=function(a,b){this.end(),b(a)}}).call(this,a(29),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12,25:25,28:28,29:29,31:31,37:37,38:38,44:44,48:48}],36:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function e(a,b,c){a.copy(b,c)}var f=a(44).Buffer;b.exports=function(){function a(){d(this,a),this.head=null,this.tail=null,this.length=0}return a.prototype.push=function(a){var b={data:a,next:null};this.length>0?this.tail.next=b:this.head=b,this.tail=b,++this.length},a.prototype.unshift=function(a){var b={data:a,next:this.head};0===this.length&&(this.tail=b),this.head=b,++this.length},a.prototype.shift=function(){if(0!==this.length){var a=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,a}},a.prototype.clear=function(){this.head=this.tail=null,this.length=0},a.prototype.join=function(a){if(0===this.length)return"";for(var b=this.head,c=""+b.data;b=b.next;)c+=a+b.data;return c},a.prototype.concat=function(a){if(0===this.length)return f.alloc(0);if(1===this.length)return this.head.data;for(var b=f.allocUnsafe(a>>>0),c=this.head,d=0;c;)e(c.data,b,d),d+=c.data.length,c=c.next;return b},a}()},{44:44}],37:[function(a,b,c){"use strict";function d(a,b){var c=this,d=this._readableState&&this._readableState.destroyed,e=this._writableState&&this._writableState.destroyed;if(d||e)return void(b?b(a):!a||this._writableState&&this._writableState.errorEmitted||g(f,this,a));this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(a||null,function(a){!b&&a?(g(f,c,a),c._writableState&&(c._writableState.errorEmitted=!0)):b&&b(a)})}function e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function f(a,b){a.emit("error",b)}var g=a(28);b.exports={destroy:d,undestroy:e}},{28:28}],38:[function(a,b,c){b.exports=a(16).EventEmitter},{16:16}],39:[function(a,b,c){b.exports=a(40).PassThrough},{40:40}],40:[function(a,b,c){c=b.exports=a(33),c.Stream=c,c.Readable=c,c.Writable=a(35),c.Duplex=a(31),c.Transform=a(34),c.PassThrough=a(32)},{31:31,32:32,33:33,34:34,35:35}],41:[function(a,b,c){b.exports=a(40).Transform},{40:40}],42:[function(a,b,c){b.exports=a(35)},{35:35}],43:[function(a,b,c){var d=c.decimalAdjust=function(a,b,c){return void 0===c||0==+c?Math[a](b):(b=+b,c=+c,isNaN(b)||"number"!=typeof c||c%1!=0?NaN:(b=b.toString().split("e"),b=Math[a](+(b[0]+"e"+(b[1]?+b[1]-c:-c))),b=b.toString().split("e"),+(b[0]+"e"+(b[1]?+b[1]+c:c))))};b.exports={round10:function(a,b){return d("round",a,b)},floor10:function(a,b){return d("floor",a,b)},ceil10:function(a,b){return d("ceil",a,b)}},b.exports.polyfill=function(){Math.round10||(Math.round10=b.exports.round10),Math.floor10||(Math.floor10=b.exports.floor10),Math.ceil10||(Math.ceil10=b.exports.ceil10)}},{}],44:[function(a,b,c){function d(a,b){for(var c in a)b[c]=a[c]}function e(a,b,c){return g(a,b,c)}var f=a(10),g=f.Buffer;g.from&&g.alloc&&g.allocUnsafe&&g.allocUnsafeSlow?b.exports=f:(d(f,c),c.Buffer=e),d(g,e),e.from=function(a,b,c){if("number"==typeof a)throw new TypeError("Argument must not be a number");return g(a,b,c)},e.alloc=function(a,b,c){if("number"!=typeof a)throw new TypeError("Argument must be a number");var d=g(a);return void 0!==b?"string"==typeof c?d.fill(b,c):d.fill(b):d.fill(0),d},e.allocUnsafe=function(a){if("number"!=typeof a)throw new TypeError("Argument must be a number");return g(a)},e.allocUnsafeSlow=function(a){if("number"!=typeof a)throw new TypeError("Argument must be a number");return f.SlowBuffer(a)}},{10:10}],45:[function(a,b,c){(function(b){!function(c){function d(a,b){if(!(this instanceof d))return new d(a,b);var e=this;f(e),e.q=e.c="",e.bufferCheckPosition=c.MAX_BUFFER_LENGTH,e.opt=b||{},e.opt.lowercase=e.opt.lowercase||e.opt.lowercasetags,e.looseCase=e.opt.lowercase?"toLowerCase":"toUpperCase",e.tags=[],e.closed=e.closedRoot=e.sawRoot=!1,e.tag=e.error=null,e.strict=!!a,e.noscript=!(!a&&!e.opt.noscript),e.state=U.BEGIN,e.strictEntities=e.opt.strictEntities,e.ENTITIES=e.strictEntities?Object.create(c.XML_ENTITIES):Object.create(c.ENTITIES),e.attribList=[],e.opt.xmlns&&(e.ns=Object.create(P)),e.trackPosition=!1!==e.opt.position,e.trackPosition&&(e.position=e.line=e.column=0),n(e,"onready")}function e(a){for(var b=Math.max(c.MAX_BUFFER_LENGTH,10),d=0,e=0,f=D.length;e<f;e++){var g=a[D[e]].length;if(g>b)switch(D[e]){case"textNode":p(a);break;case"cdata":o(a,"oncdata",a.cdata),a.cdata="";break;case"script":o(a,"onscript",a.script),a.script="";break;default:r(a,"Max buffer length exceeded: "+D[e])}d=Math.max(d,g)}var h=c.MAX_BUFFER_LENGTH-d;a.bufferCheckPosition=h+a.position}function f(a){for(var b=0,c=D.length;b<c;b++)a[D[b]]=""}function g(a){p(a),""!==a.cdata&&(o(a,"oncdata",a.cdata),a.cdata=""),""!==a.script&&(o(a,"onscript",a.script),a.script="")}function h(a,b){return new i(a,b)}function i(a,b){if(!(this instanceof i))return new i(a,b);E.apply(this),this._parser=new d(a,b),this.writable=!0,this.readable=!0;var c=this;this._parser.onend=function(){c.emit("end")},this._parser.onerror=function(a){c.emit("error",a),c._parser.error=null},this._decoder=null,F.forEach(function(a){Object.defineProperty(c,"on"+a,{get:function(){return c._parser["on"+a]},set:function(b){if(!b)return c.removeAllListeners(a),c._parser["on"+a]=b,b;c.on(a,b)},enumerable:!0,configurable:!1})})}function j(a){return a.split("").reduce(function(a,b){return a[b]=!0,a},{})}function k(a){return"[object RegExp]"===Object.prototype.toString.call(a)}function l(a,b){return k(a)?!!b.match(a):a[b]}function m(a,b){return!l(a,b)}function n(a,b,c){a[b]&&a[b](c)}function o(a,b,c){a.textNode&&p(a),n(a,b,c)}function p(a){a.textNode=q(a.opt,a.textNode),a.textNode&&n(a,"ontext",a.textNode),a.textNode=""}function q(a,b){return a.trim&&(b=b.trim()),a.normalize&&(b=b.replace(/\s+/g," ")),b}function r(a,b){return p(a),a.trackPosition&&(b+="\nLine: "+a.line+"\nColumn: "+a.column+"\nChar: "+a.c),b=new Error(b),a.error=b,n(a,"onerror",b),a}function s(a){return a.sawRoot&&!a.closedRoot&&t(a,"Unclosed root tag"),a.state!==U.BEGIN&&a.state!==U.BEGIN_WHITESPACE&&a.state!==U.TEXT&&r(a,"Unexpected end"),p(a),a.c="",a.closed=!0,n(a,"onend"),d.call(a,a.strict,a.opt),a}function t(a,b){if("object"!=typeof a||!(a instanceof d))throw new Error("bad call to strictFail");a.strict&&r(a,b)}function u(a){a.strict||(a.tagName=a.tagName[a.looseCase]());var b=a.tags[a.tags.length-1]||a,c=a.tag={name:a.tagName,attributes:{}};a.opt.xmlns&&(c.ns=b.ns),a.attribList.length=0,o(a,"onopentagstart",c)}function v(a,b){var c=a.indexOf(":"),d=c<0?["",a]:a.split(":"),e=d[0],f=d[1];return b&&"xmlns"===a&&(e="xmlns",f=""),{prefix:e,local:f}}function w(a){if(a.strict||(a.attribName=a.attribName[a.looseCase]()),-1!==a.attribList.indexOf(a.attribName)||a.tag.attributes.hasOwnProperty(a.attribName))return void(a.attribName=a.attribValue="");if(a.opt.xmlns){var b=v(a.attribName,!0),c=b.prefix,d=b.local;if("xmlns"===c)if("xml"===d&&a.attribValue!==N)t(a,"xml: prefix must be bound to "+N+"\nActual: "+a.attribValue);else if("xmlns"===d&&a.attribValue!==O)t(a,"xmlns: prefix must be bound to "+O+"\nActual: "+a.attribValue);else{var e=a.tag,f=a.tags[a.tags.length-1]||a;e.ns===f.ns&&(e.ns=Object.create(f.ns)),e.ns[d]=a.attribValue}a.attribList.push([a.attribName,a.attribValue])}else a.tag.attributes[a.attribName]=a.attribValue,o(a,"onattribute",{name:a.attribName,value:a.attribValue});a.attribName=a.attribValue=""}function x(a,b){if(a.opt.xmlns){var c=a.tag,d=v(a.tagName);c.prefix=d.prefix,c.local=d.local,c.uri=c.ns[d.prefix]||"",c.prefix&&!c.uri&&(t(a,"Unbound namespace prefix: "+JSON.stringify(a.tagName)),c.uri=d.prefix);var e=a.tags[a.tags.length-1]||a;c.ns&&e.ns!==c.ns&&Object.keys(c.ns).forEach(function(b){o(a,"onopennamespace",{prefix:b,uri:c.ns[b]})});for(var f=0,g=a.attribList.length;f<g;f++){var h=a.attribList[f],i=h[0],j=h[1],k=v(i,!0),l=k.prefix,m=k.local,n=""===l?"":c.ns[l]||"",p={name:i,value:j,prefix:l,local:m,uri:n};l&&"xmlns"!==l&&!n&&(t(a,"Unbound namespace prefix: "+JSON.stringify(l)),p.uri=l),a.tag.attributes[i]=p,o(a,"onattribute",p)}a.attribList.length=0}a.tag.isSelfClosing=!!b,a.sawRoot=!0,a.tags.push(a.tag),o(a,"onopentag",a.tag),b||(a.noscript||"script"!==a.tagName.toLowerCase()?a.state=U.TEXT:a.state=U.SCRIPT,a.tag=null,a.tagName=""),a.attribName=a.attribValue="",a.attribList.length=0}function y(a){ -if(!a.tagName)return t(a,"Weird empty close tag."),a.textNode+="</>",void(a.state=U.TEXT);if(a.script){if("script"!==a.tagName)return a.script+="</"+a.tagName+">",a.tagName="",void(a.state=U.SCRIPT);o(a,"onscript",a.script),a.script=""}var b=a.tags.length,c=a.tagName;a.strict||(c=c[a.looseCase]());for(var d=c;b--;){if(a.tags[b].name===d)break;t(a,"Unexpected close tag")}if(b<0)return t(a,"Unmatched closing tag: "+a.tagName),a.textNode+="</"+a.tagName+">",void(a.state=U.TEXT);a.tagName=c;for(var e=a.tags.length;e-- >b;){var f=a.tag=a.tags.pop();a.tagName=a.tag.name,o(a,"onclosetag",a.tagName);var g={};for(var h in f.ns)g[h]=f.ns[h];var i=a.tags[a.tags.length-1]||a;a.opt.xmlns&&f.ns!==i.ns&&Object.keys(f.ns).forEach(function(b){var c=f.ns[b];o(a,"onclosenamespace",{prefix:b,uri:c})})}0===b&&(a.closedRoot=!0),a.tagName=a.attribValue=a.attribName="",a.attribList.length=0,a.state=U.TEXT}function z(a){var b,c=a.entity,d=c.toLowerCase(),e="";return a.ENTITIES[c]?a.ENTITIES[c]:a.ENTITIES[d]?a.ENTITIES[d]:(c=d,"#"===c.charAt(0)&&("x"===c.charAt(1)?(c=c.slice(2),b=parseInt(c,16),e=b.toString(16)):(c=c.slice(1),b=parseInt(c,10),e=b.toString(10))),c=c.replace(/^0+/,""),e.toLowerCase()!==c?(t(a,"Invalid character entity"),"&"+a.entity+";"):String.fromCodePoint(b))}function A(a,b){"<"===b?(a.state=U.OPEN_WAKA,a.startTagPosition=a.position):m(G,b)&&(t(a,"Non-whitespace before first tag."),a.textNode=b,a.state=U.TEXT)}function B(a,b){var c="";return b<a.length&&(c=a.charAt(b)),c}function C(a){var b=this;if(this.error)throw this.error;if(b.closed)return r(b,"Cannot write after close. Assign an onready handler.");if(null===a)return s(b);"object"==typeof a&&(a=a.toString());for(var c=0,d="";;){if(d=B(a,c++),b.c=d,!d)break;switch(b.trackPosition&&(b.position++,"\n"===d?(b.line++,b.column=0):b.column++),b.state){case U.BEGIN:if(b.state=U.BEGIN_WHITESPACE,"\ufeff"===d)continue;A(b,d);continue;case U.BEGIN_WHITESPACE:A(b,d);continue;case U.TEXT:if(b.sawRoot&&!b.closedRoot){for(var f=c-1;d&&"<"!==d&&"&"!==d;)(d=B(a,c++))&&b.trackPosition&&(b.position++,"\n"===d?(b.line++,b.column=0):b.column++);b.textNode+=a.substring(f,c-1)}"<"!==d||b.sawRoot&&b.closedRoot&&!b.strict?(!m(G,d)||b.sawRoot&&!b.closedRoot||t(b,"Text data outside of root node."),"&"===d?b.state=U.TEXT_ENTITY:b.textNode+=d):(b.state=U.OPEN_WAKA,b.startTagPosition=b.position);continue;case U.SCRIPT:"<"===d?b.state=U.SCRIPT_ENDING:b.script+=d;continue;case U.SCRIPT_ENDING:"/"===d?b.state=U.CLOSE_TAG:(b.script+="<"+d,b.state=U.SCRIPT);continue;case U.OPEN_WAKA:if("!"===d)b.state=U.SGML_DECL,b.sgmlDecl="";else if(l(G,d));else if(l(Q,d))b.state=U.OPEN_TAG,b.tagName=d;else if("/"===d)b.state=U.CLOSE_TAG,b.tagName="";else if("?"===d)b.state=U.PROC_INST,b.procInstName=b.procInstBody="";else{if(t(b,"Unencoded <"),b.startTagPosition+1<b.position){var g=b.position-b.startTagPosition;d=new Array(g).join(" ")+d}b.textNode+="<"+d,b.state=U.TEXT}continue;case U.SGML_DECL:(b.sgmlDecl+d).toUpperCase()===L?(o(b,"onopencdata"),b.state=U.CDATA,b.sgmlDecl="",b.cdata=""):b.sgmlDecl+d==="--"?(b.state=U.COMMENT,b.comment="",b.sgmlDecl=""):(b.sgmlDecl+d).toUpperCase()===M?(b.state=U.DOCTYPE,(b.doctype||b.sawRoot)&&t(b,"Inappropriately located doctype declaration"),b.doctype="",b.sgmlDecl=""):">"===d?(o(b,"onsgmldeclaration",b.sgmlDecl),b.sgmlDecl="",b.state=U.TEXT):l(J,d)?(b.state=U.SGML_DECL_QUOTED,b.sgmlDecl+=d):b.sgmlDecl+=d;continue;case U.SGML_DECL_QUOTED:d===b.q&&(b.state=U.SGML_DECL,b.q=""),b.sgmlDecl+=d;continue;case U.DOCTYPE:">"===d?(b.state=U.TEXT,o(b,"ondoctype",b.doctype),b.doctype=!0):(b.doctype+=d,"["===d?b.state=U.DOCTYPE_DTD:l(J,d)&&(b.state=U.DOCTYPE_QUOTED,b.q=d));continue;case U.DOCTYPE_QUOTED:b.doctype+=d,d===b.q&&(b.q="",b.state=U.DOCTYPE);continue;case U.DOCTYPE_DTD:b.doctype+=d,"]"===d?b.state=U.DOCTYPE:l(J,d)&&(b.state=U.DOCTYPE_DTD_QUOTED,b.q=d);continue;case U.DOCTYPE_DTD_QUOTED:b.doctype+=d,d===b.q&&(b.state=U.DOCTYPE_DTD,b.q="");continue;case U.COMMENT:"-"===d?b.state=U.COMMENT_ENDING:b.comment+=d;continue;case U.COMMENT_ENDING:"-"===d?(b.state=U.COMMENT_ENDED,b.comment=q(b.opt,b.comment),b.comment&&o(b,"oncomment",b.comment),b.comment=""):(b.comment+="-"+d,b.state=U.COMMENT);continue;case U.COMMENT_ENDED:">"!==d?(t(b,"Malformed comment"),b.comment+="--"+d,b.state=U.COMMENT):b.state=U.TEXT;continue;case U.CDATA:"]"===d?b.state=U.CDATA_ENDING:b.cdata+=d;continue;case U.CDATA_ENDING:"]"===d?b.state=U.CDATA_ENDING_2:(b.cdata+="]"+d,b.state=U.CDATA);continue;case U.CDATA_ENDING_2:">"===d?(b.cdata&&o(b,"oncdata",b.cdata),o(b,"onclosecdata"),b.cdata="",b.state=U.TEXT):"]"===d?b.cdata+="]":(b.cdata+="]]"+d,b.state=U.CDATA);continue;case U.PROC_INST:"?"===d?b.state=U.PROC_INST_ENDING:l(G,d)?b.state=U.PROC_INST_BODY:b.procInstName+=d;continue;case U.PROC_INST_BODY:if(!b.procInstBody&&l(G,d))continue;"?"===d?b.state=U.PROC_INST_ENDING:b.procInstBody+=d;continue;case U.PROC_INST_ENDING:">"===d?(o(b,"onprocessinginstruction",{name:b.procInstName,body:b.procInstBody}),b.procInstName=b.procInstBody="",b.state=U.TEXT):(b.procInstBody+="?"+d,b.state=U.PROC_INST_BODY);continue;case U.OPEN_TAG:l(R,d)?b.tagName+=d:(u(b),">"===d?x(b):"/"===d?b.state=U.OPEN_TAG_SLASH:(m(G,d)&&t(b,"Invalid character in tag name"),b.state=U.ATTRIB));continue;case U.OPEN_TAG_SLASH:">"===d?(x(b,!0),y(b)):(t(b,"Forward-slash in opening tag not followed by >"),b.state=U.ATTRIB);continue;case U.ATTRIB:if(l(G,d))continue;">"===d?x(b):"/"===d?b.state=U.OPEN_TAG_SLASH:l(Q,d)?(b.attribName=d,b.attribValue="",b.state=U.ATTRIB_NAME):t(b,"Invalid attribute name");continue;case U.ATTRIB_NAME:"="===d?b.state=U.ATTRIB_VALUE:">"===d?(t(b,"Attribute without value"),b.attribValue=b.attribName,w(b),x(b)):l(G,d)?b.state=U.ATTRIB_NAME_SAW_WHITE:l(R,d)?b.attribName+=d:t(b,"Invalid attribute name");continue;case U.ATTRIB_NAME_SAW_WHITE:if("="===d)b.state=U.ATTRIB_VALUE;else{if(l(G,d))continue;t(b,"Attribute without value"),b.tag.attributes[b.attribName]="",b.attribValue="",o(b,"onattribute",{name:b.attribName,value:""}),b.attribName="",">"===d?x(b):l(Q,d)?(b.attribName=d,b.state=U.ATTRIB_NAME):(t(b,"Invalid attribute name"),b.state=U.ATTRIB)}continue;case U.ATTRIB_VALUE:if(l(G,d))continue;l(J,d)?(b.q=d,b.state=U.ATTRIB_VALUE_QUOTED):(t(b,"Unquoted attribute value"),b.state=U.ATTRIB_VALUE_UNQUOTED,b.attribValue=d);continue;case U.ATTRIB_VALUE_QUOTED:if(d!==b.q){"&"===d?b.state=U.ATTRIB_VALUE_ENTITY_Q:b.attribValue+=d;continue}w(b),b.q="",b.state=U.ATTRIB_VALUE_CLOSED;continue;case U.ATTRIB_VALUE_CLOSED:l(G,d)?b.state=U.ATTRIB:">"===d?x(b):"/"===d?b.state=U.OPEN_TAG_SLASH:l(Q,d)?(t(b,"No whitespace between attributes"),b.attribName=d,b.attribValue="",b.state=U.ATTRIB_NAME):t(b,"Invalid attribute name");continue;case U.ATTRIB_VALUE_UNQUOTED:if(m(K,d)){"&"===d?b.state=U.ATTRIB_VALUE_ENTITY_U:b.attribValue+=d;continue}w(b),">"===d?x(b):b.state=U.ATTRIB;continue;case U.CLOSE_TAG:if(b.tagName)">"===d?y(b):l(R,d)?b.tagName+=d:b.script?(b.script+="</"+b.tagName,b.tagName="",b.state=U.SCRIPT):(m(G,d)&&t(b,"Invalid tagname in closing tag"),b.state=U.CLOSE_TAG_SAW_WHITE);else{if(l(G,d))continue;m(Q,d)?b.script?(b.script+="</"+d,b.state=U.SCRIPT):t(b,"Invalid tagname in closing tag."):b.tagName=d}continue;case U.CLOSE_TAG_SAW_WHITE:if(l(G,d))continue;">"===d?y(b):t(b,"Invalid characters in closing tag");continue;case U.TEXT_ENTITY:case U.ATTRIB_VALUE_ENTITY_Q:case U.ATTRIB_VALUE_ENTITY_U:var h,i;switch(b.state){case U.TEXT_ENTITY:h=U.TEXT,i="textNode";break;case U.ATTRIB_VALUE_ENTITY_Q:h=U.ATTRIB_VALUE_QUOTED,i="attribValue";break;case U.ATTRIB_VALUE_ENTITY_U:h=U.ATTRIB_VALUE_UNQUOTED,i="attribValue"}";"===d?(b[i]+=z(b),b.entity="",b.state=h):l(b.entity.length?T:S,d)?b.entity+=d:(t(b,"Invalid character in entity name"),b[i]+="&"+b.entity+d,b.entity="",b.state=h);continue;default:throw new Error(b,"Unknown state: "+b.state)}}return b.position>=b.bufferCheckPosition&&e(b),b}c.parser=function(a,b){return new d(a,b)},c.SAXParser=d,c.SAXStream=i,c.createStream=h,c.MAX_BUFFER_LENGTH=65536;var D=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];c.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(a){function b(){}return b.prototype=a,new b}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}),d.prototype={end:function(){s(this)},write:C,resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){g(this)}};var E;try{E=a(46).Stream}catch(W){E=function(){}}var F=c.EVENTS.filter(function(a){return"error"!==a&&"end"!==a});i.prototype=Object.create(E.prototype,{constructor:{value:i}}),i.prototype.write=function(c){if("function"==typeof b&&"function"==typeof b.isBuffer&&b.isBuffer(c)){if(!this._decoder){var d=a(9).StringDecoder;this._decoder=new d("utf8")}c=this._decoder.write(c)}return this._parser.write(c.toString()),this.emit("data",c),!0},i.prototype.end=function(a){return a&&a.length&&this.write(a),this._parser.end(),!0},i.prototype.on=function(a,b){var c=this;return c._parser["on"+a]||-1===F.indexOf(a)||(c._parser["on"+a]=function(){var b=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);b.splice(0,0,a),c.emit.apply(c,b)}),E.prototype.on.call(c,a,b)};var G="\r\n\t ",H="0124356789",I="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",J="'\"",K=G+">",L="[CDATA[",M="DOCTYPE",N="http://www.w3.org/XML/1998/namespace",O="http://www.w3.org/2000/xmlns/",P={xml:N,xmlns:O};G=j(G),H=j(H),I=j(I);var Q=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,R=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/,S=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,T=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/;J=j(J),K=j(K);var U=0;c.STATE={BEGIN:U++,BEGIN_WHITESPACE:U++,TEXT:U++,TEXT_ENTITY:U++,OPEN_WAKA:U++,SGML_DECL:U++,SGML_DECL_QUOTED:U++,DOCTYPE:U++,DOCTYPE_QUOTED:U++,DOCTYPE_DTD:U++,DOCTYPE_DTD_QUOTED:U++,COMMENT_STARTING:U++,COMMENT:U++,COMMENT_ENDING:U++,COMMENT_ENDED:U++,CDATA:U++,CDATA_ENDING:U++,CDATA_ENDING_2:U++,PROC_INST:U++,PROC_INST_BODY:U++,PROC_INST_ENDING:U++,OPEN_TAG:U++,OPEN_TAG_SLASH:U++,ATTRIB:U++,ATTRIB_NAME:U++,ATTRIB_NAME_SAW_WHITE:U++,ATTRIB_VALUE:U++,ATTRIB_VALUE_QUOTED:U++,ATTRIB_VALUE_CLOSED:U++,ATTRIB_VALUE_UNQUOTED:U++,ATTRIB_VALUE_ENTITY_Q:U++,ATTRIB_VALUE_ENTITY_U:U++,CLOSE_TAG:U++,CLOSE_TAG_SAW_WHITE:U++,SCRIPT:U++,SCRIPT_ENDING:U++},c.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},c.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(c.ENTITIES).forEach(function(a){var b=c.ENTITIES[a],d="number"==typeof b?String.fromCharCode(b):b;c.ENTITIES[a]=d});for(var V in c.STATE)c.STATE[c.STATE[V]]=V;U=c.STATE,/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ -String.fromCodePoint||function(){var a=String.fromCharCode,b=Math.floor,c=function(){var c,d,e=16384,f=[],g=-1,h=arguments.length;if(!h)return"";for(var i="";++g<h;){var j=Number(arguments[g]);if(!isFinite(j)||j<0||j>1114111||b(j)!==j)throw RangeError("Invalid code point: "+j);j<=65535?f.push(j):(j-=65536,c=55296+(j>>10),d=j%1024+56320,f.push(c,d)),(g+1===h||f.length>e)&&(i+=a.apply(null,f),f.length=0)}return i};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:c,configurable:!0,writable:!0}):String.fromCodePoint=c}()}(void 0===c?this.sax={}:c)}).call(this,a(10).Buffer)},{10:10,46:46,9:9}],46:[function(a,b,c){function d(){e.call(this)}b.exports=d;var e=a(16).EventEmitter;a(25)(d,e),d.Readable=a(40),d.Writable=a(42),d.Duplex=a(30),d.Transform=a(41),d.PassThrough=a(39),d.Stream=d,d.prototype.pipe=function(a,b){function c(b){a.writable&&!1===a.write(b)&&j.pause&&j.pause()}function d(){j.readable&&j.resume&&j.resume()}function f(){k||(k=!0,a.end())}function g(){k||(k=!0,"function"==typeof a.destroy&&a.destroy())}function h(a){if(i(),0===e.listenerCount(this,"error"))throw a}function i(){j.removeListener("data",c),a.removeListener("drain",d),j.removeListener("end",f),j.removeListener("close",g),j.removeListener("error",h),a.removeListener("error",h),j.removeListener("end",i),j.removeListener("close",i),a.removeListener("close",i)}var j=this;j.on("data",c),a.on("drain",d),a._isStdio||b&&!1===b.end||(j.on("end",f),j.on("close",g));var k=!1;return j.on("error",h),a.on("error",h),j.on("end",i),j.on("close",i),a.on("close",i),a.emit("pipe",j),a}},{16:16,25:25,30:30,39:39,40:40,41:41,42:42}],47:[function(a,b,c){"use strict";function d(a){if(!a)return"utf8";for(var b;;)switch(a){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return a;default:if(b)return;a=(""+a).toLowerCase(),b=!0}}function e(a){var b=d(a);if("string"!=typeof b&&(s.isEncoding===t||!t(a)))throw new Error("Unknown encoding: "+a);return b||a}function f(a){this.encoding=e(a);var b;switch(this.encoding){case"utf16le":this.text=m,this.end=n,b=4;break;case"utf8":this.fillLast=j,b=4;break;case"base64":this.text=o,this.end=p,b=3;break;default:return this.write=q,void(this.end=r)}this.lastNeed=0,this.lastTotal=0,this.lastChar=s.allocUnsafe(b)}function g(a){return a<=127?0:a>>5==6?2:a>>4==14?3:a>>3==30?4:-1}function h(a,b,c){var d=b.length-1;if(d<c)return 0;var e=g(b[d]);return e>=0?(e>0&&(a.lastNeed=e-1),e):--d<c?0:(e=g(b[d]))>=0?(e>0&&(a.lastNeed=e-2),e):--d<c?0:(e=g(b[d]),e>=0?(e>0&&(2===e?e=0:a.lastNeed=e-3),e):0)}function i(a,b,c){if(128!=(192&b[0]))return a.lastNeed=0,"�".repeat(c);if(a.lastNeed>1&&b.length>1){if(128!=(192&b[1]))return a.lastNeed=1,"�".repeat(c+1);if(a.lastNeed>2&&b.length>2&&128!=(192&b[2]))return a.lastNeed=2,"�".repeat(c+2)}}function j(a){var b=this.lastTotal-this.lastNeed,c=i(this,a,b);return void 0!==c?c:this.lastNeed<=a.length?(a.copy(this.lastChar,b,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(a.copy(this.lastChar,b,0,a.length),void(this.lastNeed-=a.length))}function k(a,b){var c=h(this,a,b);if(!this.lastNeed)return a.toString("utf8",b);this.lastTotal=c;var d=a.length-(c-this.lastNeed);return a.copy(this.lastChar,0,d),a.toString("utf8",b,d)}function l(a){var b=a&&a.length?this.write(a):"";return this.lastNeed?b+"�".repeat(this.lastTotal-this.lastNeed):b}function m(a,b){if((a.length-b)%2==0){var c=a.toString("utf16le",b);if(c){var d=c.charCodeAt(c.length-1);if(d>=55296&&d<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=a[a.length-2],this.lastChar[1]=a[a.length-1],c.slice(0,-1)}return c}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=a[a.length-1],a.toString("utf16le",b,a.length-1)}function n(a){var b=a&&a.length?this.write(a):"";if(this.lastNeed){var c=this.lastTotal-this.lastNeed;return b+this.lastChar.toString("utf16le",0,c)}return b}function o(a,b){var c=(a.length-b)%3;return 0===c?a.toString("base64",b):(this.lastNeed=3-c,this.lastTotal=3,1===c?this.lastChar[0]=a[a.length-1]:(this.lastChar[0]=a[a.length-2],this.lastChar[1]=a[a.length-1]),a.toString("base64",b,a.length-c))}function p(a){var b=a&&a.length?this.write(a):"";return this.lastNeed?b+this.lastChar.toString("base64",0,3-this.lastNeed):b}function q(a){return a.toString(this.encoding)}function r(a){return a&&a.length?this.write(a):""}var s=a(44).Buffer,t=s.isEncoding||function(a){switch((a=""+a)&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};c.StringDecoder=f,f.prototype.write=function(a){if(0===a.length)return"";var b,c;if(this.lastNeed){if(void 0===(b=this.fillLast(a)))return"";c=this.lastNeed,this.lastNeed=0}else c=0;return c<a.length?b?b+this.text(a,c):this.text(a,c):b||""},f.prototype.end=l,f.prototype.text=k,f.prototype.fillLast=function(a){if(this.lastNeed<=a.length)return a.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);a.copy(this.lastChar,this.lastTotal-this.lastNeed,0,a.length),this.lastNeed-=a.length}},{44:44}],48:[function(a,b,c){(function(a){function c(a,b){function c(){if(!e){if(d("throwDeprecation"))throw new Error(b);d("traceDeprecation")?console.trace(b):console.warn(b),e=!0}return a.apply(this,arguments)}if(d("noDeprecation"))return a;var e=!1;return c}function d(b){try{if(!a.localStorage)return!1}catch(d){return!1}var c=a.localStorage[b];return null!=c&&"true"===String(c).toLowerCase()}b.exports=c}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],49:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){l=!0,m=!0,n=!1,o=(new Date).getTime()}function b(a){m=a}function c(a){n=a}function d(a){l=a}function e(){return l}function f(){var a="",b=null;m&&(b=(new Date).getTime(),a+="["+(b-o)+"]"),n&&this&&this.getClassName&&(a+="["+this.getClassName()+"]",this.getType&&(a+="["+this.getType()+"]")),a.length>0&&(a+=" "),Array.apply(null,arguments).forEach(function(b){a+=b+" "}),l&&console.log(a),j.trigger(i.default.LOG,{message:a})}var h=this.context,j=(0,g.default)(h).getInstance(),k=void 0,l=void 0,m=void 0,n=void 0,o=void 0;return k={log:f,setLogTimestampVisible:b,setCalleeNameVisible:c,setLogToBrowserConsole:d,getLogToBrowserConsole:e},a(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="Debug",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{50:50,51:51,54:54}],50:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){var e=arguments.length<=3||void 0===arguments[3]?h:arguments[3];if(!a)throw new Error("event type cannot be null or undefined");if(!b||"function"!=typeof b)throw new Error("listener must be a function: "+b);if(!(d(a,b,c)>=0)){f[a]=f[a]||[];var g={callback:b,scope:c,priority:e};f[a].some(function(b,c){if(b&&e>b.priority)return f[a].splice(c,0,g),!0})||f[a].push(g)}}function b(a,b,c){if(a&&b&&f[a]){var e=d(a,b,c);e<0||(f[a][e]=null)}}function c(a,b){if(a&&f[a]){if(b=b||{},b.hasOwnProperty("type"))throw new Error("'type' is a reserved word for event dispatching");b.type=a,f[a]=f[a].filter(function(a){return a}),f[a].forEach(function(a){return a&&a.callback.call(a.scope,b)})}}function d(a,b,c){var d=-1;return f[a]?(f[a].some(function(a,e){if(a&&a.callback===b&&(!c||c===a.scope))return d=e,!0}),d):d}function e(){f={}}var f={};return{on:a,off:b,trigger:c,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=0,i=5e3;e.__dashjs_factory_name="EventBus";var j=g.default.getSingletonFactory(e);j.EVENT_PRIORITY_LOW=h,j.EVENT_PRIORITY_HIGH=i,g.default.updateSingletonFactory(e.__dashjs_factory_name,j),c.default=j,b.exports=c.default},{51:51}],51:[function(a,b,c){"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d=function(){function a(a,b,c,d){var e=n(d);!e[a]&&b&&(e[a]={instance:b,override:c})}function b(a,b){for(var c in q){var d=q[c];if(d.context===a&&d.name===b)return d.instance}return null}function c(a,b,c){for(var d in q){var e=q[d];if(e.context===a&&e.name===b)return void(q[d].instance=c)}q.push({name:b,context:a,instance:c})}function d(a,b,c){for(var d in c){if(c[d].name===a)return void(c[d].factory=b)}c.push({name:a,factory:b})}function e(a,b){for(var c in b){if(b[c].name===a)return b[c].factory}return null}function f(a,b,c){for(var d in c){if(c[d].name===a)return void(c[d].factory=b)}}function g(a,b){f(a,b,s)}function h(a){return e(a,s)}function i(a){var b=e(a.__dashjs_factory_name,s);return b||(b=function(b){return void 0===b&&(b={}),{create:function(){return m(a.__dashjs_factory_name,a.apply({context:b},arguments),b,arguments)}}},d(a.__dashjs_factory_name,b,s)),b}function j(a,b){f(a,b,r)}function k(a){return e(a,r)}function l(a){var c=e(a.__dashjs_factory_name,r);return c||(c=function(c){var d=void 0;return void 0===c&&(c={}),{getInstance:function(){return d||(d=b(c,a.__dashjs_factory_name)),d||(d=m(a.__dashjs_factory_name,a.apply({context:c},arguments),c,arguments),q.push({name:a.__dashjs_factory_name,context:c,instance:d})),d}}},d(a.__dashjs_factory_name,c,r)),c}function m(a,b,c,d){b.getClassName=function(){return a};var e=n(c),f=e[a];if(f){var g=f.instance;if(!f.override)return g.apply({context:c,factory:o},d);g=g.apply({context:c,factory:o,parent:b},d);for(var h in g)b.hasOwnProperty(h)&&(b[h]=g[h])}return b}function n(a){var b=void 0;return p.forEach(function(c){c===a&&(b=c)}),b||(p.push(a),b=a),b}var o=void 0,p=[],q=[],r=[],s=[];return o={extend:a,getSingletonInstance:b,setSingletonInstance:c,getSingletonFactory:l,getSingletonFactoryByName:k,updateSingletonFactory:j,getClassFactory:i,getClassFactoryByName:h,updateClassFactory:g}}();c.default=d,b.exports=c.default},{}],52:[function(a,b,c){"use strict";function d(){return e}Object.defineProperty(c,"__esModule",{value:!0}),c.getVersionString=d;var e="2.6.6"},{}],53:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(55),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.BUFFERING_COMPLETED="bufferingCompleted",this.BUFFER_CLEARED="bufferCleared",this.BUFFER_LEVEL_UPDATED="bufferLevelUpdated",this.BYTES_APPENDED="bytesAppended",this.CHECK_FOR_EXISTENCE_COMPLETED="checkForExistenceCompleted",this.CURRENT_TRACK_CHANGED="currentTrackChanged",this.DATA_UPDATE_COMPLETED="dataUpdateCompleted",this.DATA_UPDATE_STARTED="dataUpdateStarted",this.INITIALIZATION_LOADED="initializationLoaded",this.INIT_FRAGMENT_LOADED="initFragmentLoaded",this.INIT_REQUESTED="initRequested",this.INTERNAL_MANIFEST_LOADED="internalManifestLoaded",this.LIVE_EDGE_SEARCH_COMPLETED="liveEdgeSearchCompleted",this.LOADING_COMPLETED="loadingCompleted",this.LOADING_PROGRESS="loadingProgress",this.LOADING_ABANDONED="loadingAborted",this.MANIFEST_UPDATED="manifestUpdated",this.MEDIA_FRAGMENT_LOADED="mediaFragmentLoaded",this.QUOTA_EXCEEDED="quotaExceeded",this.REPRESENTATION_UPDATED="representationUpdated",this.SEGMENTS_LOADED="segmentsLoaded",this.SERVICE_LOCATION_BLACKLIST_ADD="serviceLocationBlacklistAdd",this.SERVICE_LOCATION_BLACKLIST_CHANGED="serviceLocationBlacklistChanged",this.SOURCEBUFFER_APPEND_COMPLETED="sourceBufferAppendCompleted",this.SOURCEBUFFER_REMOVE_COMPLETED="sourceBufferRemoveCompleted",this.STREAMS_COMPOSED="streamsComposed",this.STREAM_BUFFERING_COMPLETED="streamBufferingCompleted",this.STREAM_COMPLETED="streamCompleted",this.TEXT_TRACKS_QUEUE_INITIALIZED="textTracksQueueInitialized",this.TIMED_TEXT_REQUESTED="timedTextRequested",this.TIME_SYNCHRONIZATION_COMPLETED="timeSynchronizationComplete",this.URL_RESOLUTION_FAILED="urlResolutionFailed",this.VIDEO_CHUNK_RECEIVED="videoChunkReceived",this.WALLCLOCK_TIME_UPDATED="wallclockTimeUpdated",this.XLINK_ELEMENT_LOADED="xlinkElementLoaded",this.XLINK_READY="xlinkReady"}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{55:55}],54:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(53),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).apply(this,arguments)}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{53:53}],55:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a)}return e(a,[{key:"extend",value:function(a,b){if(a){var c=!!b&&b.override,d=!!b&&b.publicOnly;for(var e in a)!a.hasOwnProperty(e)||this[e]&&!c||d&&-1===a[e].indexOf("public_")||(this[e]=a[e])}}}]),a}();c.default=f,b.exports=c.default},{}],56:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){L()}function b(a){a&&a.dashManifestModel&&(N=a.dashManifestModel)}function c(a,b){return b&&a?b.getRepresentationForQuality(a.quality):null}function d(a){return a&&a.streamInfo&&void 0!==a.streamInfo.id&&P[a.streamInfo.id]?P[a.streamInfo.id][a.index]:null}function e(a,b){for(var c=b.length,d=0;d<c;d++){var e=b[d];if(a.id===e.id)return e}return null}function f(a){var b=new i.default,c=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index],d=N.getRepresentationFor(a.index,c);return b.id=a.id,b.quality=a.index,b.bandwidth=N.getBandwidth(d),b.DVRWindow=a.segmentAvailabilityRange,b.fragmentDuration=a.segmentDuration||(a.segments&&a.segments.length>0?a.segments[0].duration:NaN),b.MSETimeOffset=a.MSETimeOffset,b.useCalculatedLiveEdgeTime=a.useCalculatedLiveEdgeTime,b.mediaInfo=h(a.adaptation),b}function h(a){var b=new k.default,c=a.period.mpd.manifest.Period_asArray[a.period.index].AdaptationSet_asArray[a.index],d=void 0;return b.id=a.id,b.index=a.index,b.type=a.type,b.streamInfo=n(a.period),b.representationCount=N.getRepresentationCount(c),b.lang=N.getLanguageForAdaptation(c),d=N.getViewpointForAdaptation(c),b.viewpoint=d?d.value:void 0,b.accessibility=N.getAccessibilityForAdaptation(c).map(function(a){var c=a.value,d=c;return a.schemeIdUri&&a.schemeIdUri.search("cea-608")>=0&&void 0!==u.default&&(d=c?"cea-608:"+c:"cea-608",b.embeddedCaptions=!0),d}),b.audioChannelConfiguration=N.getAudioChannelConfigurationForAdaptation(c).map(function(a){return a.value}),b.roles=N.getRolesForAdaptation(c).map(function(a){return a.value}),b.codec=N.getCodec(c),b.mimeType=N.getMimeType(c),b.contentProtection=N.getContentProtectionData(c),b.bitrateList=N.getBitrateListForAdaptation(c),b.contentProtection&&b.contentProtection.forEach(function(a){a.KID=N.getKID(a)}),b.isText=N.getIsTextTrack(b.mimeType),b}function j(a,b,c){a.id=b,a.index=100+parseInt(b.substring(2,3)),a.type=g.default.EMBEDDED_TEXT,a.codec="cea-608-in-SEI",a.isText=!0,a.isEmbedded=!0,a.lang=b+" "+c,a.roles=["caption"]}function l(a){a.type=g.default.IMAGE}function n(a){var b=new m.default;return b.id=a.id,b.index=a.index,b.start=a.start,b.duration=a.duration,b.manifestInfo=p(a.mpd),b.isLast=1===a.mpd.manifest.Period_asArray.length||Math.abs(b.start+b.duration-b.manifestInfo.duration)<1,b}function p(a){var b=new o.default;return b.DVRWindowSize=a.timeShiftBufferDepth,b.loadedTime=a.manifest.loadedTime,b.availableFrom=a.availabilityStartTime,b.minBufferTime=a.manifest.minBufferTime,b.maxFragmentDuration=a.maxSegmentDuration,b.duration=N.getDuration(a.manifest),b.isDynamic=N.getIsDynamic(a.manifest),b}function r(a,b){if(0===O.length)return null;var c=O[0].mpd.manifest,d=N.getAdaptationForType(c,a.index,b,a);if(!d)return null;var f=e(a,O),g=f.id,i=N.getIndexForAdaptation(d,c,a.index);return P[g]=P[g]||N.getAdaptationsForPeriod(f),h(P[g][i])}function s(a,b,c){var d=O,f=c,i=[],k=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0;if(f){t();var r=N.getMpd(f);d=N.getRegularPeriods(r)}else{if(!(O.length>0))return i;f=O[0].mpd.manifest}var s=e(a,d),u=s.id,v=N.getAdaptationsForType(f,a.index,b!==g.default.EMBEDDED_TEXT?b:g.default.VIDEO);if(!v)return i;for(P[u]=P[u]||N.getAdaptationsForPeriod(s),o=0,q=v.length;o<q;o++)if(k=v[o],n=N.getIndexForAdaptation(k,f,a.index),m=h(P[u][n]),b===g.default.EMBEDDED_TEXT){var w=m.accessibility.length;for(p=0;p<w;p++)if(m){var x=m.accessibility[p];if(0===x.indexOf("cea-608:")){var y=x.substring(8),z=y.split(";");if("CC"===z[0].substring(0,2))for(p=0;p<z.length;p++)m||(m=h.call(this,P[u][n])),j(m,z[p].substring(0,3),z[p].substring(4)),i.push(m),m=null;else for(p=0;p<z.length;p++)m||(m=h.call(this,P[u][n])),j(m,"CC"+(p+1),z[p]),i.push(m),m=null}else 0===x.indexOf("cea-608")&&(j(m,g.default.CC1,"eng"),i.push(m),m=null)}}else b===g.default.IMAGE?(l(m),i.push(m),m=null):m&&i.push(m);return i}function t(){if(!N||!N.hasOwnProperty("getMpd")||!N.hasOwnProperty("getRegularPeriods"))throw new Error("setConfig function has to be called previously")}function v(a){if(!a)return null;t();var b=N.getMpd(a);O=N.getRegularPeriods(b),P={}}function w(a){var b=[],c=O;if(a){t();var d=N.getMpd(a);c=N.getRegularPeriods(d)}for(var e=0;e<c.length;e++)b.push(n(c[e]));return b}function x(a){if(!(a&&a.hasOwnProperty("getRepresentationController")&&a.hasOwnProperty("getIndexHandler")&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getType")&&a.hasOwnProperty("getStreamInfo")))throw new Error("streamProcessor parameter is missing or malformed!")}function y(a){if(!a||!a.hasOwnProperty("getRepresentationForQuality")||!a.hasOwnProperty("getCurrentRepresentation"))throw new Error("representationController parameter is missing or malformed!")}function z(a){if(null===a||isNaN(a)||a%1!=0)throw new Error("quality argument is not an integer")}function A(a,b){var c=void 0,d=void 0,e=void 0;return x(a),z(b),c=a.getRepresentationController(),e=a.getIndexHandler(),d=c?c.getRepresentationForQuality(b):null,e?e.getInitRequest(d):null}function B(a,b){var d=void 0,e=void 0,f=void 0;return x(a),d=a.getRepresentationController(),e=c(b,d),f=a.getIndexHandler(),f?f.getNextSegmentRequest(e):null}function C(a,b,d,e){var f=void 0,g=void 0,h=void 0;return x(a),f=a.getRepresentationController(),g=c(b,f),h=a.getIndexHandler(),h?h.getSegmentRequestForTime(g,d,e):null}function D(a,b,d){var e=void 0,f=void 0,g=void 0;return x(a),e=a.getRepresentationController(),f=c(b,e),g=a.getIndexHandler(),g?g.generateSegmentRequestForTime(f,d):null}function E(a){x(a);var b=a.getIndexHandler();return b?b.getCurrentTime():NaN}function F(a,b){x(a);var c=a.getIndexHandler();c&&c.setCurrentTime(b)}function G(a){x(a);var b=e(a.getStreamInfo(),O),c=a.getMediaInfo(),f=d(c),g=a.getType(),h=void 0,i=void 0;h=c?c.id:null,O.length>0&&(i=h?N.getAdaptationForId(h,O[0].mpd.manifest,b.index):N.getAdaptationForIndex(c.index,O[0].mpd.manifest,b.index),a.getRepresentationController().updateData(i,f,g))}function H(a,b){y(a),z(b);var c=a.getRepresentationForQuality(b);return c?f(c):null}function I(a){y(a);var b=a.getCurrentRepresentation();return b?f(b):null}function J(a,b,c){if(!a||!b)return null;var d=new q.default,e=a.scheme_id_uri,f=a.value,g=a.timescale,h=a.presentation_time_delta,i=a.event_duration,j=a.id,k=a.message_data,l=c*g+h;return b[e]?(d.eventStream=b[e],d.eventStream.value=f,d.eventStream.timescale=g,d.duration=i,d.id=j,d.presentationTime=l,d.messageData=k,d.presentationTimeDelta=h,d):null}function K(a,b){var f=[];if(0===O.length)return f;var g=O[0].mpd.manifest;return a instanceof m.default?f=N.getEventsForPeriod(e(a,O)):a instanceof k.default?f=N.getEventStreamForAdaptationSet(g,d(a)):a instanceof i.default&&(f=N.getEventStreamForRepresentation(g,c(a,b.getRepresentationController()))),f}function L(){O=[],P={}}var M=void 0,N=void 0,O=void 0,P=void 0;return M={convertDataToRepresentationInfo:f,getDataForMedia:d,getStreamsInfo:w,getMediaInfoForType:r,getAllMediaInfoForType:s,getCurrentRepresentationInfo:I,getRepresentationInfoForQuality:H,updateData:G,getInitRequest:A,getNextFragmentRequest:B,getFragmentRequestForTime:C,generateFragmentRequestForTime:D,getIndexHandlerTime:E,setIndexHandlerTime:F,getEventsFor:K,getEvent:J,setConfig:b,updatePeriods:v,reset:L},a(),M}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(219),i=d(h),j=a(217),k=d(j),l=a(220),m=d(l),n=a(216),o=d(n),p=a(83),q=d(p),r=a(51),s=d(r),t=a(2),u=d(t);e.__dashjs_factory_name="DashAdapter",c.default=s.default.getSingletonFactory(e),b.exports=c.default},{100:100,2:2,216:216,217:217,219:219,220:220,51:51,83:83}],57:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){Z=(0,v.default)(O).getInstance().log.bind(Y),l(),R=c(a.mimeType)?(0,G.default)(O).getInstance():(0,E.default)(O).getInstance(),R.setConfig({baseURLController:X,metricsModel:U,mediaPlayerModel:V,errHandler:W}),P.on(p.default.INITIALIZATION_LOADED,M,Y),P.on(p.default.SEGMENTS_LOADED,N,Y)}function c(a){return"webm"===a.split("/")[1].toLowerCase()}function d(b){ca=b;var c=ca?ca.getStreamInfo().manifestInfo.isDynamic:null;R.initialize(),da=(0,C.default)(O).create(a,c)}function e(){return ca}function f(a){aa=a}function h(){return aa}function j(){return ba}function l(){$=-1,aa=0,ba=NaN,_=null,ca=null,da=null}function o(){l(),P.off(p.default.INITIALIZATION_LOADED,M,Y),P.off(p.default.SEGMENTS_LOADED,N,Y)}function q(a,b,c){var d=X.resolve(c.path),e=void 0,f=void 0;return d&&b!==d.url&&Q.isRelative(b)?(e=d.url,f=d.serviceLocation,b&&(e=Q.resolve(b,e))):e=b,!Q.isRelative(e)&&(a.url=e,a.serviceLocation=f,!0)}function s(a,b){var c=new k.default,d=a.adaptation.period,e=d.start,f=ca?ca.getStreamInfo().manifestInfo.isDynamic:null;if(c.mediaType=b,c.type=n.HTTPRequest.INIT_SEGMENT_TYPE,c.range=a.range,c.availabilityStartTime=S.calcAvailabilityStartTimeFromPresentationTime(e,d.mpd,f),c.availabilityEndTime=S.calcAvailabilityEndTimeFromPresentationTime(e+d.duration,d.mpd,f),c.quality=a.index,c.mediaInfo=ca?ca.getMediaInfo():null,c.representationId=a.id,q(c,a.initialization,a))return c}function t(a){var b=ca?ca.getType():null;return a?s(a,b):null}function u(a){var b=!1,c=ca?ca.getStreamInfo().manifestInfo.isDynamic:null;if(c||$!==a.availableSegmentsNumber){var d=(0,A.getSegmentByIndex)($,a);if(d){var e=parseFloat((d.presentationStartTime-a.adaptation.period.start).toFixed(5)),f=a.adaptation.period.duration;Z(a.segmentInfoType+": "+e+" / "+f),b=(a.segmentInfoType!==i.default.SEGMENT_TIMELINE||!c)&&e>=f}else Z("isMediaFinished - no segment found")}else b=!0;return b}function w(a){da.getSegments(a,_,$,y)}function y(a,b){var c=ca?ca.getStreamInfo().manifestInfo.isDynamic:null;if(a.segments=b,b&&b.length>0&&(ba=isNaN(ba)?b[0].presentationStartTime:Math.min(b[0].presentationStartTime,ba),c&&isNaN(S.getExpectedLiveEdge()))){var d=b[b.length-1],e=d.presentationStartTime,f=U.getMetricsFor(g.default.STREAM);S.setExpectedLiveEdge(e),U.updateManifestUpdateInfo(T.getCurrentManifestUpdate(f),{presentationStartTime:e})}}function B(a){if(!a)throw new Error("no representation");a.segments=null,w(a)}function D(a,b){var c=z.default.hasInitialization(a),d=z.default.hasSegments(a),e=ca?ca.getType():null,f=ca?ca.getStreamInfo().manifestInfo.isDynamic:null,g=void 0;if(a.segmentDuration||a.segments||B(a),a.segmentAvailabilityRange=null,a.segmentAvailabilityRange=S.calcSegmentAvailabilityRange(a,f),a.segmentAvailabilityRange.end<a.segmentAvailabilityRange.start&&!a.useCalculatedLiveEdgeTime)return g=new m.default(H,"no segments are available yet",{availabilityDelay:a.segmentAvailabilityRange.start-a.segmentAvailabilityRange.end}),void P.trigger(p.default.REPRESENTATION_UPDATED,{sender:this,representation:a,error:g});b||($=-1),a.segmentDuration&&B(a),c||R.loadInitialization(a),d||R.loadSegments(a,e,a.indexRange),c&&d&&P.trigger(p.default.REPRESENTATION_UPDATED,{sender:this,representation:a})}function F(a,b,c){var d=b.segments,e=d?d.length:null,f=-1,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0;if(d&&e>0)for(c=void 0===c||null===c?V.getSegmentOverlapToleranceTime():c,k=0;k<e;k++)if(h=d[k],i=h.presentationStartTime,j=h.duration,g=void 0===c||null===c?j/2:c,a+g>=i&&a-g<i+j){f=h.availabilityIdx;break}return f}function I(a){if(null===a||void 0===a)return null;var b=new k.default,c=a.representation,d=c.adaptation.period.mpd.manifest.Period_asArray[c.adaptation.period.index].AdaptationSet_asArray[c.adaptation.index].Representation_asArray[c.index].bandwidth,e=a.media,f=ca?ca.getType():null;return e=(0,A.replaceTokenForTemplate)(e,"Number",a.replacementNumber),e=(0,A.replaceTokenForTemplate)(e,"Time",a.replacementTime),e=(0,A.replaceTokenForTemplate)(e,"Bandwidth",d),e=(0,A.replaceIDForTemplate)(e,c.id),e=(0,A.unescapeDollarsInTemplate)(e),b.mediaType=f,b.type=n.HTTPRequest.MEDIA_SEGMENT_TYPE,b.range=a.mediaRange,b.startTime=a.presentationStartTime,b.duration=a.duration,b.timescale=c.timescale,b.availabilityStartTime=a.availabilityStartTime,b.availabilityEndTime=a.availabilityEndTime,b.wallStartTime=a.wallStartTime,b.quality=c.index,b.index=a.availabilityIdx,b.mediaInfo=ca.getMediaInfo(),b.adaptationIndex=c.adaptation.index,q(b,e,c)?b:void 0}function J(a,b,c){var d=void 0,e=void 0,f=void 0,g=ca?ca.getType():null,h=ca?ca.getStreamInfo().manifestInfo.isDynamic:null,j=$,l=!!c&&c.keepIdx,m=c?c.timeThreshold:null,n=!(!c||!c.ignoreIsFinished);return a?(_!==b&&(_=b,Z("Getting the request for "+g+" time : "+b)),w(a),$=F(b,a,m),$<0&&(w(a),$=F(b,a,m)),$>0&&Z("Index for "+g+" time "+b+" is "+$),f=!n&&u(a),f?(d=new k.default,d.action=k.default.ACTION_COMPLETE,d.index=$,d.mediaType=g,d.mediaInfo=ca.getMediaInfo(),Z("Signal complete in getSegmentRequestForTime -",g)):(e=(0,A.getSegmentByIndex)($,a),d=I(e)),l&&j>=0&&($=a.segmentInfoType===i.default.SEGMENT_TIMELINE&&h?$:j),d):null}function K(a,b){var c=(a.segmentAvailabilityRange.end-a.segmentAvailabilityRange.start)/2;return a.segments=null,a.segmentAvailabilityRange={start:b-c,end:b+c},J(a,b,{keepIdx:!1,ignoreIsFinished:!0})}function L(a){var b=void 0,c=void 0,d=void 0,e=ca?ca.getType():null,f=ca?ca.getStreamInfo().manifestInfo.isDynamic:null;return a&&-1!==$?(_=null,$++,Z("Getting the next request at index: "+$+", type: "+e),!(0,A.getSegmentByIndex)($,a)&&f?(Z("No segment found at index: "+$+". Wait for next loop"),w(a),$--,null):(d=u(a),d?(b=new k.default,b.action=k.default.ACTION_COMPLETE,b.index=$,b.mediaType=e,b.mediaInfo=ca.getMediaInfo(),Z("Signal complete -",e)):(w(a),c=(0,A.getSegmentByIndex)($,a),b=I(c),!c&&f&&$--),b)):null}function M(a){var b=a.representation;b.segments&&P.trigger(p.default.REPRESENTATION_UPDATED,{sender:this,representation:b})}function N(a){var b=ca?ca.getType():null,c=ca?ca.getStreamInfo().manifestInfo.isDynamic:null;if(!a.error&&b===a.mediaType){var d=a.segments,e=a.representation,f=[],g=0,h=void 0,i=void 0,j=void 0,k=void 0;for(h=0,i=d.length;h<i;h++)j=d[h],k=(0,A.getTimeBasedSegment)(S,c,e,j.startTime,j.duration,j.timescale,j.media,j.mediaRange,g),f.push(k),k=null,g++;e.segmentAvailabilityRange={start:f[0].presentationStartTime,end:f[i-1].presentationStartTime},e.availableSegmentsNumber=i,y(e,f),z.default.hasInitialization(e)&&P.trigger(p.default.REPRESENTATION_UPDATED,{sender:this,representation:e})}}a=a||{};var O=this.context,P=(0,r.default)(O).getInstance(),Q=(0,x.default)(O).getInstance(),R=void 0,S=a.timelineConverter,T=a.dashMetrics,U=a.metricsModel,V=a.mediaPlayerModel,W=a.errHandler,X=a.baseURLController,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0;return Y={initialize:d,getStreamProcessor:e,getInitRequest:t,getSegmentRequestForTime:J,getNextSegmentRequest:L,generateSegmentRequestForTime:K,updateRepresentation:D,updateSegmentList:B,setCurrentTime:f,getCurrentTime:h,getEarliestTime:j,reset:o},b(),Y}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(61),i=d(h),j=a(213),k=d(j),l=a(211),m=d(l),n=a(230),o=a(54),p=d(o),q=a(50),r=d(q),s=a(51),t=d(s),u=a(49),v=d(u),w=a(206),x=d(w),y=a(87),z=d(y),A=a(77),B=a(76),C=d(B),D=a(59),E=d(D),F=a(60),G=d(F),H=1;e.__dashjs_factory_name="DashHandler";var I=t.default.getClassFactory(e);I.SEGMENTS_UNAVAILABLE_ERROR_CODE=H,t.default.updateClassFactory(e.__dashjs_factory_name,I),c.default=I,b.exports=c.default},{100:100,206:206,211:211,213:213,230:230,49:49,50:50,51:51,54:54,59:59,60:60,61:61,76:76,77:77,87:87}],58:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=void 0;return c=w(A.getValue().Period_asArray[b],a),null===c?null:c.bandwidth}function c(a,b){return v(A.getValue().Period_asArray[b],a)}function d(a,b){return y(A.getValue().Period_asArray[b],a)}function e(a){return n(a,j.default.TRACK_SWITCH)}function g(a){return n(a,j.default.BUFFER_LEVEL)}function h(a){var b=g(a);return b?(0,k.round10)(b.level/1e3,-3):0}function i(a){return a?a.RequestsQueue:null}function l(a){if(!a)return null;var b=a.HttpList,c=null,d=void 0,e=void 0;if(!b||b.length<=0)return null;for(d=b.length,e=d-1;e>=0;){if(b[e].responsecode){c=b[e];break}e--}return c}function m(a){return a&&a.HttpList?a.HttpList:[]}function n(a,b){if(!a)return null;var c=a[b];if(!c)return null;var d=c.length;return d<=0?null:c[d-1]}function o(a){return n(a,j.default.DROPPED_FRAMES)}function p(a){return n(a,j.default.SCHEDULING_INFO)}function q(a){return n(a,j.default.MANIFEST_UPDATE)}function r(a){return n(a,j.default.DVR_INFO)}function s(a,b){var c={},d=void 0,e=void 0,g=void 0;for(d=m(a),g=d.length-1;g>=0;g--)if(e=d[g],e.type===f.HTTPRequest.MPD_TYPE){c=u(e._responseHeaders);break}return void 0===c[b]?null:c[b]}function t(a,b){var c={},d=l(a);return d&&(c=u(d._responseHeaders)),void 0===c[b]?null:c[b]}function u(a){var b={};if(!a)return b;for(var c=a.trim().split("\r\n"),d=0,e=c.length;d<e;d++){var f=c[d],g=f.indexOf(": ");g>0&&(b[f.substring(0,g)]=f.substring(g+2))}return b}function v(a,b){var c=w(a,b,!0);return null!==c?c:-1}function w(a,b,c){var d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,i=void 0;if(a)for(e=a.AdaptationSet_asArray,h=0;h<e.length;h+=1)for(d=e[h],g=d.Representation_asArray,i=0;i<g.length;i+=1)if(f=g[i], -b===f.id)return c?i:f;return null}function x(a,b){return z.getIsTypeOf(a,b)}function y(a,b){var c=void 0,d=void 0,e=void 0,f=void 0;if(!a||!b)return-1;for(d=a.AdaptationSet_asArray,f=0;f<d.length;f+=1)if(c=d[f],e=c.Representation_asArray,x(c,b))return e.length;return-1}a=a||{};var z=a.dashManifestModel,A=a.manifestModel;return{getBandwidthForRepresentation:b,getIndexForRepresentation:c,getMaxIndexForBufferType:d,getCurrentRepresentationSwitch:e,getLatestBufferLevelVO:g,getCurrentBufferLevel:h,getCurrentHttpRequest:l,getHttpRequests:m,getCurrentDroppedFrames:o,getCurrentSchedulingInfo:p,getCurrentDVRInfo:r,getCurrentManifestUpdate:q,getLatestFragmentRequestHeaderValueByID:t,getLatestMPDRequestHeaderValueByID:s,getRequestsQueue:i}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(230),g=a(51),h=d(g),i=a(101),j=d(i),k=a(43);e.__dashjs_factory_name="DashMetrics",c.default=h.default.getSingletonFactory(e),b.exports=c.default},{101:101,230:230,43:43,51:51}],59:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){w=(0,q.default)(p).getInstance(),y=(0,g.default)(p).getInstance(),C=(0,z.default)(p).create({errHandler:t,metricsModel:A,mediaPlayerModel:B,requestModifier:y})}function b(a){a.baseURLController&&(D=a.baseURLController),a.metricsModel&&(A=a.metricsModel),a.mediaPlayerModel&&(B=a.mediaPlayerModel),a.errHandler&&(t=a.errHandler)}function c(){if(!D||!D.hasOwnProperty("resolve"))throw new Error("setConfig function has to be called previously")}function d(a,b){c();var e=null,f=null,g=D.resolve(a.path),h=b||{init:!0,url:g?g.url:void 0,range:{start:0,end:1500},searching:!1,bytesLoaded:0,bytesToLoad:1500};r("Start searching for initialization.");var i=l(h),k=function(b){h.bytesLoaded=h.range.end,f=w.parse(b),e=j(f),e?(a.range=e,s.trigger(m.default.INITIALIZATION_LOADED,{representation:a})):(h.range.end=h.bytesLoaded+h.bytesToLoad,d(a,h))},n=function(){s.trigger(m.default.INITIALIZATION_LOADED,{representation:a})};C.load({request:i,success:k,error:n}),r("Perform init search: "+h.url)}function e(a,b,d,f,g){if(c(),d&&(void 0===d.start||void 0===d.end)){var i=d?d.toString().split("-"):null;d=i?{start:parseFloat(i[0]),end:parseFloat(i[1])}:null}g=g||n;var j=null,k=null,m=!!d,o=D.resolve(a.path),p={init:!1,url:o?o.url:void 0,range:m?d:{start:0,end:1500},searching:!m,bytesLoaded:f?f.bytesLoaded:0,bytesToLoad:1500},q=l(p),s=function(c){var d=p.bytesToLoad,f=c.byteLength;if(p.bytesLoaded=p.range.end-p.range.start,j=w.parse(c),(k=j.getBox("sidx"))&&k.isComplete){var i=k.references,l=void 0,m=void 0;null!==i&&void 0!==i&&i.length>0&&(l=1===i[0].reference_type),l?function(){r("Initiate multiple SIDX load."),p.range.end=p.range.start+k.size;var c=void 0,d=void 0,f=void 0,h=void 0,j=void 0,l=[],m=0,n=(k.offset||p.range.start)+k.size,o=function(c){c?(l=l.concat(c),++m>=d&&g(l,a,b)):g(null,a,b)};for(c=0,d=i.length;c<d;c++)f=n,h=n+i[c].referenced_size-1,n+=i[c].referenced_size,j={start:f,end:h},e(a,null,j,p,o)}():(r("Parsing segments from SIDX."),m=h(k,p),g(m,a,b))}else{if(k)p.range.start=k.offset||p.range.start,p.range.end=p.range.start+(k.size||d);else{if(f<p.bytesLoaded)return void g(null,a,b);var n=j.getLastBox();n&&n.size?(p.range.start=n.offset+n.size,p.range.end=p.range.start+d):p.range.end+=d}e(a,b,p.range,p,g)}},t=function(){g(null,a,b)};C.load({request:q,success:s,error:t}),r("Perform SIDX load: "+p.url)}function f(){C.abort(),C=null,t=null,w=null,y=null}function h(a,b){for(var c=a.references,d=c.length,e=a.timescale,f=a.earliest_presentation_time,g=b.range.start+a.offset+a.first_offset+a.size,h=[],j=void 0,k=void 0,l=void 0,m=void 0,n=0;n<d;n++)l=c[n].subsegment_duration,m=c[n].referenced_size,j=new i.default,j.duration=l,j.startTime=f,j.timescale=e,k=g+m-1,j.mediaRange=g+"-"+k,h.push(j),f+=l,g+=m;return h}function j(a){var b=a.getBox("ftyp"),c=a.getBox("moov"),d=null,e=void 0,f=void 0;return r("Searching for initialization."),c&&c.isComplete&&(e=b?b.offset:c.offset,f=c.offset+c.size-1,d=e+"-"+f,r("Found the initialization. Range: "+d)),d}function l(a){if(a.url){var b=new x.default;return b.type=a.init?v.HTTPRequest.INIT_SEGMENT_TYPE:v.HTTPRequest.MEDIA_SEGMENT_TYPE,b.url=a.url,b.range=a.range.start+"-"+a.range.end,b}}function n(a,b,c){a?s.trigger(m.default.SEGMENTS_LOADED,{segments:a,representation:b,mediaType:c}):s.trigger(m.default.SEGMENTS_LOADED,{segments:null,representation:b,mediaType:c,error:new k.default(null,"error loading segments",null)})}var p=this.context,r=(0,u.default)(p).getInstance().log,s=(0,o.default)(p).getInstance(),t=void 0,w=void 0,y=void 0,A=void 0,B=void 0,C=void 0,D=void 0;return{setConfig:b,initialize:a,loadInitialization:d,loadSegments:e,reset:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(204),g=d(f),h=a(88),i=d(h),j=a(211),k=d(j),l=a(54),m=d(l),n=a(50),o=d(n),p=a(194),q=d(p),r=a(51),s=d(r),t=a(49),u=d(t),v=a(230),w=a(213),x=d(w),y=a(98),z=d(y);e.__dashjs_factory_name="SegmentBaseLoader",c.default=s.default.getSingletonFactory(e),b.exports=c.default},{194:194,204:204,211:211,213:213,230:230,49:49,50:50,51:51,54:54,88:88,98:98}],60:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){z={EBML:{tag:440786851,required:!0},Segment:{tag:408125543,required:!0,SeekHead:{tag:290298740,required:!0},Info:{tag:357149030,required:!0,TimecodeScale:{tag:2807729,required:!0,parse:"getMatroskaUint"},Duration:{tag:17545,required:!0,parse:"getMatroskaFloat"}},Tracks:{tag:374648427,required:!0},Cues:{tag:475249515,required:!0,CuePoint:{tag:187,required:!0,CueTime:{tag:179,required:!0,parse:"getMatroskaUint"},CueTrackPositions:{tag:183,required:!0,CueTrack:{tag:247,required:!0,parse:"getMatroskaUint"},CueClusterPosition:{tag:241,required:!0,parse:"getMatroskaUint"}}}}},Void:{tag:236,required:!0}}}function b(){B=(0,q.default)(r).getInstance(),E=(0,x.default)(r).create({errHandler:A,metricsModel:C,mediaPlayerModel:D,requestModifier:B})}function c(a){if(!(a.baseURLController&&a.metricsModel&&a.mediaPlayerModel&&a.errHandler))throw new Error("Missing config parameter(s)");F=a.baseURLController,C=a.metricsModel,D=a.mediaPlayerModel,A=a.errHandler}function d(a){var b=[],c=void 0,d=void 0,e=(0,k.default)(r).create({data:a});for(e.consumeTagAndSize(z.Segment.Cues);e.moreData()&&e.consumeTagAndSize(z.Segment.Cues.CuePoint,!0);){for(c={},c.CueTime=e.parseTag(z.Segment.Cues.CuePoint.CueTime),c.CueTracks=[];e.moreData()&&e.consumeTag(z.Segment.Cues.CuePoint.CueTrackPositions,!0);){var f=e.getMatroskaCodedNum(),g=e.getPos();if(d={},d.Track=e.parseTag(z.Segment.Cues.CuePoint.CueTrackPositions.CueTrack),0===d.Track)throw new Error("Cue track cannot be 0");d.ClusterPosition=e.parseTag(z.Segment.Cues.CuePoint.CueTrackPositions.CueClusterPosition),c.CueTracks.push(d),e.setPos(g+f)}if(0===c.CueTracks.length)throw new Error("Mandatory cuetrack not found");b.push(c)}if(0===b.length)throw new Error("mandatory cuepoint not found");return b}function e(a,b,c,e){var f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0;for(g=d(a),h=[],j=0,k=g.length;j<k;j+=1)i=new s.default,f=0,f=j<g.length-1?g[j+1].CueTime-g[j].CueTime:e-g[j].CueTime,i.duration=f,i.startTime=g[j].CueTime,i.timescale=1e3,l=g[j].CueTracks[0].ClusterPosition+b,m=j<g.length-1?g[j+1].CueTracks[0].ClusterPosition+b-1:c-1,i.mediaRange=l+"-"+m,h.push(i);return u("Parsed cues: "+h.length+" cues."),h}function f(a,b,c,d){var f=(0,k.default)(r).create({data:a}),g=void 0,h=void 0,i=c.split("-"),j=null,l={url:b,range:{start:parseFloat(i[0]),end:parseFloat(i[1])},request:j},m=void 0,o=void 0;for(u("Parse EBML header: "+l.url),f.skipOverElement(z.EBML),f.consumeTag(z.Segment),m=f.getMatroskaCodedNum(),m+=f.getPos(),o=f.getPos();f.moreData()&&!f.consumeTagAndSize(z.Segment.Info,!0);)if(!(f.skipOverElement(z.Segment.SeekHead,!0)||f.skipOverElement(z.Segment.Tracks,!0)||f.skipOverElement(z.Segment.Cues,!0)||f.skipOverElement(z.Void,!0)))throw new Error("no valid top level element found");for(;void 0===g;){var p=f.getMatroskaCodedNum(!0),q=f.getMatroskaCodedNum();switch(p){case z.Segment.Info.Duration.tag:g=f[z.Segment.Info.Duration.parse](q);break;default:f.setPos(f.getPos()+q)}}j=n(l);var s=function(a){h=e(a,o,m,g),d(h)},t=function(){u("Download Error: Cues "+l.url),d(null)};E.load({request:j,success:s,error:t}),u("Perform cues load: "+l.url+" bytes="+l.range.start+"-"+l.range.end)}function h(){if(!F||!F.hasOwnProperty("resolve"))throw new Error("setConfig function has to be called previously")}function j(a,b){h();var c=null,d=F.resolve(a.path),e=d?d.url:void 0,f=a.range.split("-"),i=b||{range:{start:parseFloat(f[0]),end:parseFloat(f[1])},request:c,url:e,init:!0};u("Start loading initialization."),c=n(i);var j=function(){w.trigger(g.default.INITIALIZATION_LOADED,{representation:a})},k=function(){w.trigger(g.default.INITIALIZATION_LOADED,{representation:a})};E.load({request:c,success:j,error:k}),u("Perform init load: "+i.url)}function l(a,b,c,d){h();var e=null,g=F.resolve(a.path),i=g?g.url:void 0,j=8192,k={bytesLoaded:0,bytesToLoad:j,range:{start:0,end:j},request:e,url:i,init:!1};d=d||m,e=n(k),u("Parsing ebml header");var l=function(e){f(e,i,c,function(c){d(c,a,b)})},o=function(){d(null,a,b)};E.load({request:e,success:l,error:o})}function m(a,b,c){a?w.trigger(g.default.SEGMENTS_LOADED,{segments:a,representation:b,mediaType:c}):w.trigger(g.default.SEGMENTS_LOADED,{segments:null,representation:b,mediaType:c,error:new Error(null,"error loading segments",null)})}function n(a){var b=new v.default;return b.type=a.init?t.HTTPRequest.INIT_SEGMENT_TYPE:t.HTTPRequest.MEDIA_SEGMENT_TYPE,b.url=a.url,b.range=a.range.start+"-"+a.range.end,b}function p(){A=null,B=null,u=null}var r=this.context,u=(0,o.default)(r).getInstance().log,w=(0,i.default)(r).getInstance(),y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=void 0,E=void 0,F=void 0;return y={setConfig:c,initialize:b,loadInitialization:j,loadSegments:l,reset:p},a(),y}Object.defineProperty(c,"__esModule",{value:!0});var f=a(54),g=d(f),h=a(50),i=d(h),j=a(198),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p=a(204),q=d(p),r=a(88),s=d(r),t=a(230),u=a(213),v=d(u),w=a(98),x=d(w);e.__dashjs_factory_name="WebmSegmentBaseLoader",c.default=m.default.getSingletonFactory(e),b.exports=c.default},{198:198,204:204,213:213,230:230,49:49,50:50,51:51,54:54,88:88,98:98}],61:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a),this.init()}return e(a,[{key:"init",value:function(){this.BASE_URL="BaseURL",this.SEGMENT_BASE="SegmentBase",this.SEGMENT_TEMPLATE="SegmentTemplate",this.SEGMENT_LIST="SegmentList",this.SEGMENT_URL="SegmentURL",this.SEGMENT_TIMELINE="SegmentTimeline",this.SEGMENT_PROFILES="segmentProfiles",this.ADAPTATION_SET="AdaptationSet",this.REPRESENTATION="Representation",this.REPRESENTATION_INDEX="RepresentationIndex",this.SUB_REPRESENTATION="SubRepresentation",this.INITIALIZATION="Initialization",this.INITIALIZATION_MINUS="initialization",this.MPD="MPD",this.PERIOD="Period",this.ASSET_IDENTIFIER="AssetIdentifier",this.EVENT_STREAM="EventStream",this.ID="id",this.PROFILES="profiles",this.SERVICE_LOCATION="serviceLocation",this.RANGE="range",this.INDEX="index",this.MEDIA="media",this.BYTE_RANGE="byteRange",this.INDEX_RANGE="indexRange",this.MEDIA_RANGE="mediaRange",this.VALUE="value",this.CONTENT_TYPE="contentType",this.MIME_TYPE="mimeType",this.BITSTREAM_SWITCHING="BitstreamSwitching",this.BITSTREAM_SWITCHING_MINUS="bitstreamSwitching",this.CODECS="codecs",this.DEPENDENCY_ID="dependencyId",this.MEDIA_STREAM_STRUCTURE_ID="mediaStreamStructureId",this.METRICS="Metrics",this.METRICS_MINUS="metrics",this.REPORTING="Reporting",this.WIDTH="width",this.HEIGHT="height",this.SAR="sar",this.FRAMERATE="frameRate",this.AUDIO_SAMPLING_RATE="audioSamplingRate",this.MAXIMUM_SAP_PERIOD="maximumSAPPeriod",this.START_WITH_SAP="startWithSAP",this.MAX_PLAYOUT_RATE="maxPlayoutRate",this.CODING_DEPENDENCY="codingDependency",this.SCAN_TYPE="scanType",this.FRAME_PACKING="FramePacking",this.AUDIO_CHANNEL_CONFIGURATION="AudioChannelConfiguration",this.CONTENT_PROTECTION="ContentProtection",this.ESSENTIAL_PROPERTY="EssentialProperty",this.SUPPLEMENTAL_PROPERTY="SupplementalProperty",this.INBAND_EVENT_STREAM="InbandEventStream",this.ACCESSIBILITY="Accessibility",this.ROLE="Role",this.RATING="Rating",this.CONTENT_COMPONENT="ContentComponent",this.SUBSET="Subset",this.LANG="lang",this.VIEWPOINT="Viewpoint",this.ROLE_ASARRAY="Role_asArray",this.ACCESSIBILITY_ASARRAY="Accessibility_asArray",this.AUDIOCHANNELCONFIGURATION_ASARRAY="AudioChannelConfiguration_asArray",this.CONTENTPROTECTION_ASARRAY="ContentProtection_asArray",this.MAIN="main",this.DYNAMIC="dynamic",this.MEDIA_PRESENTATION_DURATION="mediaPresentationDuration",this.MINIMUM_UPDATE_PERIOD="minimumUpdatePeriod",this.CODEC_PRIVATE_DATA="codecPrivateData",this.BANDWITH="bandwidth",this.SOURCE_URL="sourceURL",this.TIMESCALE="timescale",this.DURATION="duration",this.START_NUMBER="startNumber",this.PRESENTATION_TIME_OFFSET="presentationTimeOffset",this.AVAILABILITY_START_TIME="availabilityStartTime",this.AVAILABILITY_END_TIME="availabilityEndTime",this.TIMESHIFT_BUFFER_DEPTH="timeShiftBufferDepth",this.MAX_SEGMENT_DURATION="maxSegmentDuration",this.PRESENTATION_TIME="presentationTime",this.MIN_BUFFER_TIME="minBufferTime",this.MAX_SUBSEGMENT_DURATION="maxSubsegmentDuration",this.START="start",this.CENC_DEFAULT_KID="cenc:default_KID",this.DVB_PRIORITY="dvb:priority",this.DVB_WEIGHT="dvb:weight"}}]),a}(),g=new f;c.default=g,b.exports=c.default},{}],62:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){l(),H.on(o.default.QUALITY_CHANGE_REQUESTED,D,I),H.on(o.default.REPRESENTATION_UPDATED,A,I),H.on(o.default.WALLCLOCK_TIME_UPDATED,B,I),H.on(o.default.BUFFER_LEVEL_UPDATED,C,I),H.on(o.default.MANIFEST_VALIDITY_CHANGED,E,I)}function b(a){a.abrController&&(O=a.abrController),a.domStorage&&(S=a.domStorage),a.metricsModel&&(R=a.metricsModel),a.dashMetrics&&(V=a.dashMetrics),a.dashManifestModel&&(U=a.dashManifestModel),a.playbackController&&(Q=a.playbackController),a.timelineConverter&&(T=a.timelineConverter),a.manifestModel&&(X=a.manifestModel),a.streamProcessor&&(W=a.streamProcessor)}function c(){P=W.getIndexHandler()}function d(){return W}function e(){return J}function f(){return K}function h(){return L}function j(){return N}function l(){J=null,K=-1,L=!0,M=[],O=null,Q=null,R=null,S=null,T=null,U=null,V=null}function n(){H.off(o.default.QUALITY_CHANGE_REQUESTED,D,I),H.off(o.default.REPRESENTATION_UPDATED,A,I),H.off(o.default.WALLCLOCK_TIME_UPDATED,B,I),H.off(o.default.BUFFER_LEVEL_UPDATED,C,I),H.off(o.default.MANIFEST_VALIDITY_CHANGED,E,I),l()}function p(a,b,c){var d=W.getStreamInfo(),e=O.getTopQualityIndexFor(c,d.id),f=O.getMinAllowedIndexFor(c),h=void 0,i=void 0,j=null;if(L=!0,H.trigger(o.default.DATA_UPDATE_STARTED,{sender:this}),M=w(b),null!==J&&J.id==a.id||c===g.default.FRAGMENTED_TEXT?h=O.getQualityFor(c,d):(i=O.getThroughputHistory().getAverageThroughput(c),j=i||O.getInitialBitrateFor(c,d),h=O.getQualityForBitrate(W.getMediaInfo(),j)),void 0!==f&&h<f&&(h=f),h>e&&(h=e),N=t(h),J=a,c!==g.default.VIDEO&&c!==g.default.AUDIO&&c!==g.default.FRAGMENTED_TEXT)return L=!1,void H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N});for(var k=0;k<M.length;k++)P.updateRepresentation(M[k],!0)}function q(){var a=new Date,b=j(),c=1e3*Q.getTime();R.addRepresentationSwitch(b.adaptation.type,a,c,b.id)}function r(){var a=W.getStreamInfo(),b=a?a.manifestInfo:null,c=b?b.isDynamic:null,d=T.calcSegmentAvailabilityRange(N,c);R.addDVRInfo(W.getType(),Q.getTime(),b,d)}function t(a){return M[a]}function u(a){return M.indexOf(a)}function v(){for(var a=0,b=M.length;a<b;a++){var c=M[a].segmentInfoType;if(null===M[a].segmentAvailabilityRange||!s.default.hasInitialization(M[a])||(c===i.default.SEGMENT_BASE||c===i.default.BASE_URL)&&!M[a].segments)return!1}return!0}function w(a){return K=U.getIndexForAdaptation(J,a.period.mpd.manifest,a.period.index),U.getRepresentationsForAdaptation(a)}function x(a){for(var b=void 0,c=0,d=M.length;c<d;c++)b=M[c],b.segmentAvailabilityRange=T.calcSegmentAvailabilityRange(b,a)}function y(){M.forEach(function(a){a.segmentAvailabilityRange=null})}function z(a){var b=a,c=function(){if(!h()){L=!0,H.trigger(o.default.DATA_UPDATE_STARTED,{sender:I}),y();for(var a=0;a<M.length;a++)P.updateRepresentation(M[a],!0)}};L=!1,H.trigger(o.default.AST_IN_FUTURE,{delay:b}),setTimeout(c,b)}function A(a){if(a.sender.getStreamProcessor()===W&&h()){var b=a.representation,c=R.getMetricsFor(g.default.STREAM),d=R.getMetricsFor(j().adaptation.type),e=V.getCurrentManifestUpdate(c),f=!1,l=0,m=void 0,n=void 0,p=void 0;if(b.adaptation.period.mpd.manifest.type===i.default.DYNAMIC&&!b.adaptation.period.mpd.manifest.ignorePostponeTimePeriod){var s=b.segmentAvailabilityRange.end-b.segmentAvailabilityRange.start;l=1e3*(Q.computeLiveDelay(N.segmentDuration,W.getStreamInfo().manifestInfo.DVRWindowSize)-s)}if(l>0)return r(),z(l),n=new k.default(F,"Segments update failed",null),void H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N,error:n});if(e){for(var t=0;t<e.representationInfo.length;t++)if(m=e.representationInfo[t],m.index===b.index&&m.mediaType===W.getType()){f=!0;break}f||R.addManifestUpdateRepresentationInfo(e,b.id,b.index,b.adaptation.period.index,W.getType(),b.presentationTimeOffset,b.startNumber,b.segmentInfoType)}v()&&(L=!1,O.setPlaybackQuality(W.getType(),W.getStreamInfo(),u(N)),R.updateManifestUpdateInfo(e,{latency:N.segmentAvailabilityRange.end-Q.getTime()}),p=V.getCurrentRepresentationSwitch(d),p||q(),H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N}))}}function B(a){a.isDynamic&&x(a.isDynamic)}function C(a){if(a.sender.getStreamProcessor()===W){X.getValue().doNotUpdateDVRWindowOnBufferUpdated||r()}}function D(a){if(a.mediaType===W.getType()&&W.getStreamInfo().id===a.streamInfo.id&&a.oldQuality!==a.newQuality){N=t(a.newQuality);var b=O.getThroughputHistory().getAverageThroughput(a.mediaType);isNaN(b)||S.setSavedBitrateSettings(a.mediaType,b),q()}}function E(a){if(a.newDuration){var b=j();if(b&&b.adaptation.period){b.adaptation.period.duration=a.newDuration}}}var F=1,G=this.context,H=(0,m.default)(G).getInstance(),I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0;return I={initialize:c,setConfig:b,getData:e,getDataIndex:f,isUpdating:h,updateData:p,getStreamProcessor:d,getCurrentRepresentation:j,getRepresentationForQuality:t,reset:n},a(),I}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(61),i=d(h),j=a(211),k=d(j),l=a(50),m=d(l),n=a(54),o=d(n),p=a(51),q=d(p),r=a(87),s=d(r);e.__dashjs_factory_name="RepresentationController",c.default=q.default.getClassFactory(e),b.exports=c.default},{100:100,211:211,50:50,51:51,54:54,61:61,87:87}],63:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=void 0,d=void 0,e=void 0,f=void 0,h=void 0,j=void 0,k=!1,l=!1;if(!a)throw new Error("adaptation is not defined");if(!b)throw new Error("type is not defined");if(a.hasOwnProperty("ContentComponent_asArray")&&(f=a.ContentComponent_asArray),h=b!==g.default.TEXT?new RegExp(b):new RegExp("(vtt|ttml)"),a.Representation_asArray&&a.Representation_asArray.length&&a.Representation_asArray.length>0&&a.Representation_asArray[0].hasOwnProperty(i.default.CODECS)&&(j=a.Representation_asArray[0].codecs,0===j.search(g.default.STPP)||0===j.search(g.default.WVTT)))return b===g.default.FRAGMENTED_TEXT;if(f){if(f.length>1)return b===g.default.MUXED;f[0]&&f[0].contentType===b&&(k=!0,l=!0)}if(a.hasOwnProperty(i.default.MIME_TYPE)&&(k=h.test(a.mimeType),l=!0),!l)for(c=0,d=a.Representation_asArray&&a.Representation_asArray.length?a.Representation_asArray.length:0;!l&&c<d;)e=a.Representation_asArray[c],e.hasOwnProperty(i.default.MIME_TYPE)&&(k=h.test(e.mimeType),l=!0),c++;return k}function c(a){return b(a,g.default.AUDIO)}function d(a){return b(a,g.default.VIDEO)}function e(a){return b(a,g.default.FRAGMENTED_TEXT)}function f(a){return b(a,g.default.TEXT)}function h(a){return b(a,g.default.MUXED)}function j(a){return b(a,g.default.IMAGE)}function l(a){return"text/vtt"===a||"application/ttml+xml"===a}function n(a){var b="";return a&&a.hasOwnProperty(i.default.LANG)&&(b=a.lang.replace(/[^A-Za-z0-9-]/g,"")),b}function p(a){return a&&a.hasOwnProperty(i.default.VIEWPOINT)?a.Viewpoint:null}function r(a){return a&&a.hasOwnProperty(i.default.ROLE_ASARRAY)?a.Role_asArray:[]}function t(a){return a&&a.hasOwnProperty(i.default.ACCESSIBILITY_ASARRAY)?a.Accessibility_asArray:[]}function v(a){return a&&a.hasOwnProperty(i.default.AUDIOCHANNELCONFIGURATION_ASARRAY)?a.AudioChannelConfiguration_asArray:[]}function x(a){return r(a).filter(function(a){return a.value===i.default.MAIN})[0]}function z(){return function(a,b){return a.bandwidth-b.bandwidth}}function B(a){return a&&void 0!==a.Representation_asArray&&null!==a.Representation_asArray&&a.Representation_asArray.sort(z()),a}function D(a,b,c){var d=b&&b.Period_asArray&&na(c)&&b.Period_asArray[c]?b.Period_asArray[c].AdaptationSet_asArray:[],e=void 0,f=void 0;for(e=0,f=d.length;e<f;e++)if(d[e].hasOwnProperty(i.default.ID)&&d[e].id===a)return d[e];return null}function E(a,b,c){var d=b&&b.Period_asArray&&na(c)&&b.Period_asArray[c]?b.Period_asArray[c].AdaptationSet_asArray:null;return d&&na(a)?d[a]:null}function F(a,b,c){var d=b&&b.Period_asArray&&na(c)&&b.Period_asArray[c]?b.Period_asArray[c].AdaptationSet_asArray:[],e=d.length;if(a)for(var f=0;f<e;f++){var g=(0,A.default)(ha).getInstance();if(g.areEqual(d[f],a))return f}return-1}function G(a,c,d){var e=a&&a.Period_asArray&&na(c)&&a.Period_asArray[c]?a.Period_asArray[c].AdaptationSet_asArray:[],f=void 0,g=void 0,h=[];for(f=0,g=e.length;f<g;f++)b(e[f],d)&&h.push(B(e[f]));return h}function H(a,b,c,d){var e=G(a,b,c);if(!e||0===e.length)return null;if(e.length>1&&d){for(var f=ja.getCurrentTrackFor(c,d),g=la.getAllMediaInfoForType(d,c),h=0,i=e.length;h<i;h++)if(f&&ja.isTracksEqual(f,g[h]))return e[h];for(var h=0,i=e.length;h<i;h++)if(x(e[h]))return e[h]}return e[0]}function I(a,b,c){if(a&&a.Representation_asArray&&a.Representation_asArray.length>0){var d=na(b)&&b>=0&&b<a.Representation_asArray.length?a.Representation_asArray[b]:a.Representation_asArray[0],e=d.mimeType+';codecs="'+d.codecs+'"';return c&&void 0!==d.width&&(e+=';width="'+d.width+'";height="'+d.height+'"'),e}return null}function J(a){return a&&a.Representation_asArray&&a.Representation_asArray.length>0?a.Representation_asArray[0].mimeType:null}function K(a){return a&&a.hasOwnProperty(i.default.CENC_DEFAULT_KID)?a[i.default.CENC_DEFAULT_KID]:null}function L(a){return a&&a.hasOwnProperty(i.default.CONTENTPROTECTION_ASARRAY)&&0!==a.ContentProtection_asArray.length?a.ContentProtection_asArray:null}function M(a){var b=!1;return a&&a.hasOwnProperty("type")&&(b=a.type===i.default.DYNAMIC),b}function N(a,b){var c=!1;return a&&a.profiles&&a.profiles.length>0&&(c=-1!==a.profiles.indexOf(b)),c}function O(a){return N(a,ma)}function P(a){return a&&a.hasOwnProperty(i.default.MEDIA_PRESENTATION_DURATION)?a.mediaPresentationDuration:Number.MAX_SAFE_INTEGER||Number.MAX_VALUE}function Q(a){return a&&a.bandwidth?a.bandwidth:NaN}function R(a){var b=arguments.length<=1||void 0===arguments[1]?0:arguments[1],c=NaN;return a&&a.hasOwnProperty(i.default.MINIMUM_UPDATE_PERIOD)&&(c=a.minimumUpdatePeriod),isNaN(c)?c:Math.max(c-b,1)}function S(a){return a&&a.Representation_asArray&&a.Representation_asArray.length?a.Representation_asArray.length:0}function T(a){return a&&a.Representation_asArray&&a.Representation_asArray.length?B(a).Representation_asArray.map(function(a){return{bandwidth:a.bandwidth,width:a.width||0,height:a.height||0,scanType:a.scanType||null}}):null}function U(a){return a&&a.EssentialProperty_asArray&&a.EssentialProperty_asArray.length?a.EssentialProperty_asArray.map(function(a){return{schemeIdUri:a.schemeIdUri,value:a.value}}):null}function V(a,b){return b&&b.Representation_asArray&&b.Representation_asArray.length>0&&na(a)?b.Representation_asArray[a]:null}function W(a){var b=[],c=void 0,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,j=void 0;if(a&&a.period&&na(a.period.index)){var m=a.period.mpd.manifest.Period_asArray[a.period.index];m&&m.AdaptationSet_asArray&&na(a.index)&&(f=B(m.AdaptationSet_asArray[a.index]))}if(f&&f.Representation_asArray)for(h=0;f&&h<f.Representation_asArray.length;h++)g=f.Representation_asArray[h],c=new k.default,c.index=h,c.adaptation=a,g.hasOwnProperty(i.default.ID)&&(c.id=g.id),g.hasOwnProperty(i.default.CODECS)&&(c.codecs=g.codecs),g.hasOwnProperty(i.default.CODEC_PRIVATE_DATA)&&(c.codecPrivateData=g.codecPrivateData),g.hasOwnProperty(i.default.BANDWITH)&&(c.bandwidth=g.bandwidth),g.hasOwnProperty(i.default.WIDTH)&&(c.width=g.width),g.hasOwnProperty(i.default.HEIGHT)&&(c.height=g.height),g.hasOwnProperty(i.default.SCAN_TYPE)&&(c.scanType=g.scanType),g.hasOwnProperty(i.default.MAX_PLAYOUT_RATE)&&(c.maxPlayoutRate=g.maxPlayoutRate),g.hasOwnProperty(i.default.SEGMENT_BASE)?(e=g.SegmentBase,c.segmentInfoType=i.default.SEGMENT_BASE):g.hasOwnProperty(i.default.SEGMENT_LIST)?(e=g.SegmentList,e.hasOwnProperty(i.default.SEGMENT_TIMELINE)?(c.segmentInfoType=i.default.SEGMENT_TIMELINE,j=e.SegmentTimeline.S_asArray[e.SegmentTimeline.S_asArray.length-1],(!j.hasOwnProperty("r")||j.r>=0)&&(c.useCalculatedLiveEdgeTime=!0)):(c.segmentInfoType=i.default.SEGMENT_LIST,c.useCalculatedLiveEdgeTime=!0)):g.hasOwnProperty(i.default.SEGMENT_TEMPLATE)?(e=g.SegmentTemplate,e.hasOwnProperty(i.default.SEGMENT_TIMELINE)?(c.segmentInfoType=i.default.SEGMENT_TIMELINE,j=e.SegmentTimeline.S_asArray[e.SegmentTimeline.S_asArray.length-1],(!j.hasOwnProperty("r")||j.r>=0)&&(c.useCalculatedLiveEdgeTime=!0)):c.segmentInfoType=i.default.SEGMENT_TEMPLATE,e.hasOwnProperty(i.default.INITIALIZATION_MINUS)&&(c.initialization=e.initialization.split("$Bandwidth$").join(g.bandwidth).split("$RepresentationID$").join(g.id))):c.segmentInfoType=i.default.BASE_URL,c.essentialProperties=U(g),e&&(e.hasOwnProperty(i.default.INITIALIZATION)?(d=e.Initialization,d.hasOwnProperty(i.default.SOURCE_URL)?c.initialization=d.sourceURL:d.hasOwnProperty(i.default.RANGE)&&(c.range=d.range)):g.hasOwnProperty(i.default.MIME_TYPE)&&l(g.mimeType)&&(c.range=0),e.hasOwnProperty(i.default.TIMESCALE)&&(c.timescale=e.timescale),e.hasOwnProperty(i.default.DURATION)&&(c.segmentDuration=e.duration/c.timescale),e.hasOwnProperty(i.default.MEDIA)&&(c.media=e.media),e.hasOwnProperty(i.default.START_NUMBER)&&(c.startNumber=e.startNumber),e.hasOwnProperty(i.default.INDEX_RANGE)&&(c.indexRange=e.indexRange),e.hasOwnProperty(i.default.PRESENTATION_TIME_OFFSET)&&(c.presentationTimeOffset=e.presentationTimeOffset/c.timescale)),c.MSETimeOffset=ka.calcMSETimeOffset(c),c.path=[a.period.index,a.index,h],b.push(c);return b}function X(a){var b=a&&na(a.index)?a.mpd.manifest.Period_asArray[a.index]:null,f=[],k=void 0,l=void 0,n=void 0;if(b&&b.AdaptationSet_asArray)for(n=0;n<b.AdaptationSet_asArray.length;n++)l=b.AdaptationSet_asArray[n],k=new m.default,l.hasOwnProperty(i.default.ID)&&(k.id=l.id),k.index=n,k.period=a,h(l)?k.type=g.default.MUXED:c(l)?k.type=g.default.AUDIO:d(l)?k.type=g.default.VIDEO:e(l)?k.type=g.default.FRAGMENTED_TEXT:j(l)?k.type=g.default.IMAGE:k.type=g.default.TEXT,f.push(k);return f}function Y(a){var b=!!a&&M(a.manifest),c=[],d=null,e=null,f=null,g=null,h=void 0,j=void 0;for(j=0,h=a&&a.manifest&&a.manifest.Period_asArray?a.manifest.Period_asArray.length:0;j<h;j++)e=a.manifest.Period_asArray[j],e.hasOwnProperty(i.default.START)?(g=new o.default,g.start=e.start):null!==d&&e.hasOwnProperty(i.default.DURATION)&&null!==f?(g=new o.default,g.start=parseFloat((f.start+f.duration).toFixed(5)),g.duration=e.duration):0!==j||b||(g=new o.default,g.start=0),null!==f&&isNaN(f.duration)&&(f.duration=parseFloat((g.start-f.start).toFixed(5))),null!==g&&(g.id=Z(e,j)),null!==g&&e.hasOwnProperty(i.default.DURATION)&&(g.duration=e.duration),null!==g&&(g.index=j,g.mpd=a,c.push(g),d=e,f=g),e=null,g=null;return 0===c.length?c:(null!==f&&isNaN(f.duration)&&(f.duration=parseFloat((_(f)-f.start).toFixed(5))),c)}function Z(a,b){if(!a)throw new Error("Period cannot be null or undefined");var c=o.default.DEFAULT_ID+"_"+b;return a.hasOwnProperty(i.default.ID)&&a.id.length>0&&"__proto__"!==a.id&&(c=a.id),c}function $(a){var b=new q.default;return a&&(b.manifest=a,a.hasOwnProperty(i.default.AVAILABILITY_START_TIME)?b.availabilityStartTime=new Date(a.availabilityStartTime.getTime()):b.availabilityStartTime=new Date(a.loadedTime.getTime()),a.hasOwnProperty(i.default.AVAILABILITY_END_TIME)&&(b.availabilityEndTime=new Date(a.availabilityEndTime.getTime())),a.hasOwnProperty(i.default.MINIMUM_UPDATE_PERIOD)&&(b.minimumUpdatePeriod=a.minimumUpdatePeriod),a.hasOwnProperty(i.default.MEDIA_PRESENTATION_DURATION)&&(b.mediaPresentationDuration=a.mediaPresentationDuration),a.hasOwnProperty(g.default.SUGGESTED_PRESENTATION_DELAY)&&(b.suggestedPresentationDelay=a.suggestedPresentationDelay),a.hasOwnProperty(i.default.TIMESHIFT_BUFFER_DEPTH)&&(b.timeShiftBufferDepth=a.timeShiftBufferDepth),a.hasOwnProperty(i.default.MAX_SEGMENT_DURATION)&&(b.maxSegmentDuration=a.maxSegmentDuration)),b}function _(a){var b=M(a.mpd.manifest),c=void 0;if(a.mpd.manifest.mediaPresentationDuration)c=a.mpd.manifest.mediaPresentationDuration;else if(a.duration)c=a.duration;else{if(!b)throw new Error("Must have @mediaPresentationDuratio on MPD or an explicit @duration on the last period.");c=Number.POSITIVE_INFINITY}return c}function aa(a){var b=a&&a.mpd&&a.mpd.manifest?a.mpd.manifest:null,c=b?b.Period_asArray:null,d=c&&a&&na(a.index)?c[a.index].EventStream_asArray:null,e=[],f=void 0,h=void 0;if(d)for(f=0;f<d.length;f++){var j=new y.default;if(j.period=a,j.timescale=1,!d[f].hasOwnProperty(g.default.SCHEME_ID_URI))throw new Error("Invalid EventStream. SchemeIdUri has to be set");for(j.schemeIdUri=d[f].schemeIdUri,d[f].hasOwnProperty(i.default.TIMESCALE)&&(j.timescale=d[f].timescale),d[f].hasOwnProperty(i.default.VALUE)&&(j.value=d[f].value),h=0;h<d[f].Event_asArray.length;h++){var k=new u.default;k.presentationTime=0,k.eventStream=j,d[f].Event_asArray[h].hasOwnProperty(i.default.PRESENTATION_TIME)&&(k.presentationTime=d[f].Event_asArray[h].presentationTime),d[f].Event_asArray[h].hasOwnProperty(i.default.DURATION)&&(k.duration=d[f].Event_asArray[h].duration),d[f].Event_asArray[h].hasOwnProperty(i.default.ID)&&(k.id=d[f].Event_asArray[h].id),e.push(k)}}return e}function ba(a,b){var c=[],d=void 0;if(!a)return c;for(d=0;d<a.length;d++){var e=new y.default;if(e.timescale=1,e.representation=b,!a[d].hasOwnProperty(g.default.SCHEME_ID_URI))throw new Error("Invalid EventStream. SchemeIdUri has to be set");e.schemeIdUri=a[d].schemeIdUri,a[d].hasOwnProperty(i.default.TIMESCALE)&&(e.timescale=a[d].timescale),a[d].hasOwnProperty(i.default.VALUE)&&(e.value=a[d].value),c.push(e)}return c}function ca(a,b){var c=void 0,d=void 0,e=void 0;return a&&a.Period_asArray&&b&&b.period&&na(b.period.index)&&(d=a.Period_asArray[b.period.index])&&d.AdaptationSet_asArray&&na(b.index)&&(e=d.AdaptationSet_asArray[b.index])&&(c=e.InbandEventStream_asArray),ba(c,null)}function da(a,b){var c=void 0,d=void 0,e=void 0,f=void 0 -;return a&&a.Period_asArray&&b&&b.adaptation&&b.adaptation.period&&na(b.adaptation.period.index)&&(d=a.Period_asArray[b.adaptation.period.index])&&d.AdaptationSet_asArray&&na(b.adaptation.index)&&(e=d.AdaptationSet_asArray[b.adaptation.index])&&e.Representation_asArray&&na(b.index)&&(f=e.Representation_asArray[b.index])&&(c=f.InbandEventStream_asArray),ba(c,b)}function ea(a){var b=M(a),c=!!a&&a.hasOwnProperty(i.default.AVAILABILITY_START_TIME),d=a?a.UTCTiming_asArray:null,e=[];return(b||c)&&d&&d.forEach(function(a){var b=new s.default;a.hasOwnProperty(g.default.SCHEME_ID_URI)&&(b.schemeIdUri=a.schemeIdUri,a.hasOwnProperty(i.default.VALUE)&&(b.value=a.value.toString(),e.push(b)))}),e}function fa(a){var b=[],c=a.BaseURL_asArray||[a.baseUri],d=!1;return c.some(function(c){if(c){var e=new w.default,f=c.__text||c;return ia.isRelative(f)&&(d=!0,a.baseUri&&(f=ia.resolve(f,a.baseUri))),e.url=f,c.hasOwnProperty(i.default.SERVICE_LOCATION)&&c.serviceLocation.length?e.serviceLocation=c.serviceLocation:e.serviceLocation=f,c.hasOwnProperty(i.default.DVB_PRIORITY)&&(e.dvb_priority=c[i.default.DVB_PRIORITY]),c.hasOwnProperty(i.default.DVB_WEIGHT)&&(e.dvb_weight=c[i.default.DVB_WEIGHT]),b.push(e),d}}),b}function ga(a){if(a&&a.hasOwnProperty(g.default.LOCATION))return a.Location=a.Location_asArray[0],a.Location}a=a||{};var ha=this.context,ia=(0,C.default)(ha).getInstance(),ja=a.mediaController,ka=a.timelineConverter,la=a.adapter,ma="urn:dvb:dash:profile:dvb-dash:2014",na=Number.isInteger||function(a){return"number"==typeof a&&isFinite(a)&&Math.floor(a)===a};return{getIsTypeOf:b,getIsAudio:c,getIsVideo:d,getIsText:f,getIsMuxed:h,getIsTextTrack:l,getIsFragmentedText:e,getIsImage:j,getIsMain:x,getLanguageForAdaptation:n,getViewpointForAdaptation:p,getRolesForAdaptation:r,getAccessibilityForAdaptation:t,getAudioChannelConfigurationForAdaptation:v,getAdaptationForIndex:E,getIndexForAdaptation:F,getAdaptationForId:D,getAdaptationsForType:G,getAdaptationForType:H,getCodec:I,getMimeType:J,getKID:K,getContentProtectionData:L,getIsDynamic:M,getIsDVB:O,getDuration:P,getBandwidth:Q,getManifestUpdatePeriod:R,getRepresentationCount:S,getBitrateListForAdaptation:T,getRepresentationFor:V,getRepresentationsForAdaptation:W,getAdaptationsForPeriod:X,getRegularPeriods:Y,getMpd:$,getEventsForPeriod:aa,getEventStreamForAdaptationSet:ca,getEventStreamForRepresentation:da,getUTCTimingSources:ea,getBaseURLsFromElement:fa,getRepresentationSortFunction:z,getLocation:ga}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(61),i=d(h),j=a(87),k=d(j),l=a(81),m=d(l),n=a(86),o=d(n),p=a(85),q=d(p),r=a(89),s=d(r),t=a(83),u=d(t),v=a(82),w=d(v),x=a(84),y=d(x),z=a(203),A=d(z),B=a(206),C=d(B),D=a(51),E=d(D);e.__dashjs_factory_name="DashManifestModel",c.default=E.default.getSingletonFactory(e),b.exports=c.default},{100:100,203:203,206:206,51:51,61:61,81:81,82:82,83:83,84:84,85:85,86:86,87:87,89:89}],64:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){n=[new q.default,new s.default,new u.default,new o.default],p=new m.default({escapeMode:!1,attributePrefix:"",arrayAccessForm:"property",emptyNodeForm:"object",stripWhitespaces:!1,enableToStringFunc:!1,ignoreRoot:!0,matchers:n}),r=new k.default([new w.default,new y.default])}function c(){if(!j||!j.hasOwnProperty("manifestError"))throw new Error("Missing config parameter(s)")}function d(){return n}function e(){return r}function f(a){var b=void 0;c();try{var d=window.performance.now();if(!(b=p.xml_str2json(a)))throw new Error("parser error");var e=window.performance.now();r.run(b);var f=window.performance.now();h("Parsing complete: ( xml2json: "+(e-d).toPrecision(3)+"ms, objectiron: "+(f-e).toPrecision(3)+"ms, total: "+((f-d)/1e3).toPrecision(3)+"s)")}catch(g){return j.manifestError("parsing the manifest failed","parse",a,g),null}return b}a=a||{};var g=this.context,h=(0,i.default)(g).getInstance().log,j=a.errorHandler,l=void 0,n=void 0,p=void 0,r=void 0;return l={parse:f,getMatchers:d,getIron:e},b(),l}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(3),k=d(j),l=a(4),m=d(l),n=a(73),o=d(n),p=a(71),q=d(p),r=a(70),s=d(r),t=a(72),u=d(t),v=a(67),w=d(v),x=a(68),y=d(x);e.__dashjs_factory_name="DashParser",c.default=g.default.getClassFactory(e),b.exports=c.default},{3:3,4:4,49:49,51:51,67:67,68:68,70:70,71:71,72:72,73:73}],65:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b,c){d(this,a);var e=function(a){return a&&a.length&&a.charAt(0)===a.charAt(0).toUpperCase()};this._name=b,this._merge=void 0!==c?c:e(b)}return e(a,[{key:"name",get:function(){return this._name}},{key:"merge",get:function(){return this._merge}}]),a}();c.default=f,b.exports=c.default},{}],66:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),g=a(65),h=d(g),i=function(){function a(b,c,d,f,g){var i=this;e(this,a),this._name=b||"",this._properties=[],this._children=d||[],this._isRoot=f||!1,this._isArray=g||!0,Array.isArray(c)&&c.forEach(function(a){i._properties.push(new h.default(a))})}return f(a,[{key:"name",get:function(){return this._name}},{key:"isRoot",get:function(){return this._isRoot}},{key:"isArray",get:function(){return this._isArray}},{key:"children",get:function(){return this._children}},{key:"properties",get:function(){return this._properties}}]),a}();c.default=i,b.exports=c.default},{65:65}],67:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(66),i=d(h),j=a(61),k=d(j),l=function(a){function b(){e(this,b);var a=[k.default.PROFILES,k.default.WIDTH,k.default.HEIGHT,k.default.SAR,k.default.FRAMERATE,k.default.AUDIO_SAMPLING_RATE,k.default.MIME_TYPE,k.default.SEGMENT_PROFILES,k.default.CODECS,k.default.MAXIMUM_SAP_PERIOD,k.default.START_WITH_SAP,k.default.MAX_PLAYOUT_RATE,k.default.CODING_DEPENDENCY,k.default.SCAN_TYPE,k.default.FRAME_PACKING,k.default.AUDIO_CHANNEL_CONFIGURATION,k.default.CONTENT_PROTECTION,k.default.ESSENTIAL_PROPERTY,k.default.SUPPLEMENTAL_PROPERTY,k.default.INBAND_EVENT_STREAM];g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,k.default.ADAPTATION_SET,a,[new i.default(k.default.REPRESENTATION,a,[new i.default(k.default.SUB_REPRESENTATION,a)])])}return f(b,a),b}(i.default);c.default=l,b.exports=c.default},{61:61,66:66}],68:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(66),i=d(h),j=a(61),k=d(j),l=function(a){function b(){e(this,b);var a=[k.default.SEGMENT_BASE,k.default.SEGMENT_TEMPLATE,k.default.SEGMENT_LIST];g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,k.default.PERIOD,a,[new i.default(k.default.ADAPTATION_SET,a,[new i.default(k.default.REPRESENTATION,a)])])}return f(b,a),b}(i.default);c.default=l,b.exports=c.default},{61:61,66:66}],69:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b,c){d(this,a),this._test=b,this._converter=c}return e(a,[{key:"test",get:function(){return this._test}},{key:"converter",get:function(){return this._converter}}]),a}();c.default=f,b.exports=c.default},{}],70:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(69),i=d(h),j=60,k=60,l=1e3,m=/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+-])([0-9]{2})(?::?)([0-9]{2}))?/,n=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a){return m.test(a.value)},function(a){var b=m.exec(a),c=void 0;if(c=Date.UTC(parseInt(b[1],10),parseInt(b[2],10)-1,parseInt(b[3],10),parseInt(b[4],10),parseInt(b[5],10),b[6]&&parseInt(b[6],10)||0,b[7]&&parseFloat(b[7])*l||0),b[9]&&b[10]){var d=parseInt(b[9],10)*k+parseInt(b[10],10);c+=("+"===b[8]?-1:1)*d*j*l}return new Date(c)})}return f(b,a),b}(i.default);c.default=n,b.exports=c.default},{69:69}],71:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(69),i=d(h),j=a(100),k=d(j),l=a(61),m=d(l),n=/^([-])?P(([\d.]*)Y)?(([\d.]*)M)?(([\d.]*)D)?T?(([\d.]*)H)?(([\d.]*)M)?(([\d.]*)S)?/,o=31536e3,p=2592e3,q=86400,r=3600,s=60,t=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a){for(var b=[m.default.MIN_BUFFER_TIME,m.default.MEDIA_PRESENTATION_DURATION,m.default.MINIMUM_UPDATE_PERIOD,m.default.TIMESHIFT_BUFFER_DEPTH,m.default.MAX_SEGMENT_DURATION,m.default.MAX_SUBSEGMENT_DURATION,k.default.SUGGESTED_PRESENTATION_DELAY,m.default.START,k.default.START_TIME,m.default.DURATION],c=b.length,d=0;d<c;d++)if(a.nodeName===b[d])return n.test(a.value);return!1},function(a){var b=n.exec(a),c=parseFloat(b[2]||0)*o+parseFloat(b[4]||0)*p+parseFloat(b[6]||0)*q+parseFloat(b[8]||0)*r+parseFloat(b[10]||0)*s+parseFloat(b[12]||0);return void 0!==b[1]&&(c=-c),c})}return f(b,a),b}(i.default);c.default=t,b.exports=c.default},{100:100,61:61,69:69}],72:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(69),i=d(h),j=/^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$/,k=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a){return j.test(a.value)},function(a){return parseFloat(a)})}return f(b,a),b}(i.default);c.default=k,b.exports=c.default},{69:69}],73:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var h=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},i=a(69),j=d(i),k=a(61),l=d(k),m=function(a){function b(){f(this,b),h(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a,b){var c,d=(c={},e(c,l.default.MPD,[l.default.ID,l.default.PROFILES]),e(c,l.default.PERIOD,[l.default.ID]),e(c,l.default.BASE_URL,[l.default.SERVICE_LOCATION,l.default.BYTE_RANGE]),e(c,l.default.SEGMENT_BASE,[l.default.INDEX_RANGE]),e(c,l.default.INITIALIZATION,[l.default.RANGE]),e(c,l.default.REPRESENTATION_INDEX,[l.default.RANGE]),e(c,l.default.SEGMENT_LIST,[l.default.INDEX_RANGE]),e(c,l.default.BITSTREAM_SWITCHING,[l.default.RANGE]),e(c,l.default.SEGMENT_URL,[l.default.MEDIA_RANGE,l.default.INDEX_RANGE]),e(c,l.default.SEGMENT_TEMPLATE,[l.default.INDEX_RANGE,l.default.MEDIA,l.default.INDEX,l.default.INITIALIZATION_MINUS,l.default.BITSTREAM_SWITCHING_MINUS]),e(c,l.default.ASSET_IDENTIFIER,[l.default.VALUE,l.default.ID]),e(c,l.default.EVENT_STREAM,[l.default.VALUE]),e(c,l.default.ADAPTATION_SET,[l.default.PROFILES,l.default.MIME_TYPE,l.default.SEGMENT_PROFILES,l.default.CODECS,l.default.CONTENT_TYPE]),e(c,l.default.FRAME_PACKING,[l.default.VALUE,l.default.ID]),e(c,l.default.AUDIO_CHANNEL_CONFIGURATION,[l.default.VALUE,l.default.ID]),e(c,l.default.CONTENT_PROTECTION,[l.default.VALUE,l.default.ID]),e(c,l.default.ESSENTIAL_PROPERTY,[l.default.VALUE,l.default.ID]),e(c,l.default.SUPPLEMENTAL_PROPERTY,[l.default.VALUE,l.default.ID]),e(c,l.default.INBAND_EVENT_STREAM,[l.default.VALUE,l.default.ID]),e(c,l.default.ACCESSIBILITY,[l.default.VALUE,l.default.ID]),e(c,l.default.ROLE,[l.default.VALUE,l.default.ID]),e(c,l.default.RATING,[l.default.VALUE,l.default.ID]),e(c,l.default.VIEWPOINT,[l.default.VALUE,l.default.ID]),e(c,l.default.CONTENT_COMPONENT,[l.default.CONTENT_TYPE]),e(c,l.default.REPRESENTATION,[l.default.ID,l.default.DEPENDENCY_ID,l.default.MEDIA_STREAM_STRUCTURE_ID]),e(c,l.default.SUBSET,[l.default.ID]),e(c,l.default.METRICS,[l.default.METRICS_MINUS]),e(c,l.default.REPORTING,[l.default.VALUE,l.default.ID]),c);if(d.hasOwnProperty(b)){var f=d[b];return void 0!==f&&f.indexOf(a.name)>=0}return!1},function(a){return String(a)})}return g(b,a),b}(j.default);c.default=m,b.exports=c.default},{61:61,69:69}],74:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&a.boxParser&&(d=a.boxParser)}function b(a){if(!d)throw new Error("boxParser is undefined");if(!a)return{sampleList:[],lastSequenceNumber:NaN,totalDuration:NaN,numSequences:NaN};var b=d.parse(a),c=b.getBoxes("moof"),e=b.getBoxes("mfhd"),f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0;u=b.getBoxes("moof").length,t=e[e.length-1].sequence_number,h=0,k=[];var w=-1,x=-1;for(p=0;p<c.length;p++){var y=c[p],z=y.getChildBoxes("traf");for(n=0;n<z.length;n++){var A=z[n],B=A.getChildBox("tfhd"),C=A.getChildBox("tfdt");j=C.baseMediaDecodeTime;var D=A.getChildBoxes("trun"),E=A.getChildBoxes("subs");for(o=0;o<D.length;o++){var F=D[o];for(h=F.sample_count,s=(B.base_data_offset||0)+(F.data_offset||0),m=0;m<h;m++){l=F.samples[m],f=void 0!==l.sample_duration?l.sample_duration:B.default_sample_duration,i=void 0!==l.sample_size?l.sample_size:B.default_sample_size,g=void 0!==l.sample_composition_time_offset?l.sample_composition_time_offset:0;var G={dts:j,cts:j+g,duration:f,offset:y.offset+s,size:i,subSizes:[i]};if(E)for(q=0;q<E.length;q++){var H=E[q];if(w<H.entry_count&&m>x&&(w++,x+=H.entries[w].sample_delta),m==x){G.subSizes=[];var I=H.entries[w];for(r=0;r<I.subsample_count;r++)G.subSizes.push(I.subsamples[r].subsample_size)}}k.push(G),s+=i,j+=f}}v=j-C.baseMediaDecodeTime}}return{sampleList:k,lastSequenceNumber:t,totalDuration:v,numSequences:u}}function c(a){if(!d)throw new Error("boxParser is undefined");var b=d.parse(a),c=b?b.getBox("mdhd"):void 0;return c?c.timescale:NaN}var d=void 0;return{getSamplesInfo:b,getMediaTimescaleFromMoov:c,setConfig:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="FragmentedTextBoxParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],75:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e,f){var g=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentList,i=g.SegmentURL_asArray.length,j=[],k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0;for(q=a.startNumber,n=(0,h.decideSegmentListRangeForTemplate)(d,b,a,c,e,f),o=Math.max(n.start,0),p=Math.min(n.end,g.SegmentURL_asArray.length-1),k=o;k<=p;k++)m=g.SegmentURL_asArray[k],l=(0,h.getIndexBasedSegment)(d,b,a,k),l.replacementTime=(q+k-1)*a.segmentDuration,l.media=m.media?m.media:"",l.mediaRange=m.mediaRange,l.index=m.index,l.indexRange=m.indexRange,j.push(l),l=null;return a.availableSegmentsNumber=i,j}a=a||{};var d=a.timelineConverter;return{getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="ListSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],76:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(){i=(0,k.default)(f).create(a,b),j=(0,m.default)(f).create(a,b),l=(0,o.default)(f).create(a,b)}function d(a,b,c,d,f){var h=void 0,k=a.segmentInfoType;k!==g.default.SEGMENT_BASE&&k!==g.default.BASE_URL&&e(a,c)?(k===g.default.SEGMENT_TIMELINE?h=i.getSegments(a,b,c,f):k===g.default.SEGMENT_TEMPLATE?h=j.getSegments(a,b,c,f):k===g.default.SEGMENT_LIST&&(h=l.getSegments(a,b,c,f)),d&&d(a,h)):h=a.segments}function e(a,b){var c=a.segments,d=!1,e=void 0,f=void 0;return c&&0!==c.length?(f=c[0].availabilityIdx,e=c[c.length-1].availabilityIdx,d=b<f||b>e):d=!0,d}var f=this.context,h=void 0,i=void 0,j=void 0,l=void 0;return h={getSegments:d},c(),h}Object.defineProperty(c,"__esModule",{value:!0});var f=a(61),g=d(f),h=a(51),i=d(h),j=a(80),k=d(j),l=a(78),m=d(l),n=a(75),o=d(n);e.__dashjs_factory_name="SegmentsGetter";var p=i.default.getClassFactory(e);c.default=p,b.exports=c.default},{51:51,61:61,75:75,78:78,80:80}],77:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){for(;a.length<b;)a="0"+a;return a}function f(a,b){return a.representation.startNumber+b}function g(a){return a?a.split("$$").join("$"):a}function h(a,b){if(!b||!a||-1===a.indexOf("$RepresentationID$"))return a;var c=b.toString();return a.split("$RepresentationID$").join(c)}function i(a,b,c){var d="%0",f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=b.length,m=d.length;if(!a)return a;for(;;){if((f=a.indexOf("$"+b))<0)return a;if((g=a.indexOf("$",f+l))<0)return a;if((h=a.indexOf(d,f+l))>f&&h<g)switch(i=a.charAt(g-1),j=parseInt(a.substring(h+m,g-1),10),i){case"d":case"i":case"u":k=e(c.toString(),j);break;case"x":k=e(c.toString(16),j);break;case"X":k=e(c.toString(16),j).toUpperCase();break;case"o":k=e(c.toString(8),j);break;default:return a}else k=c;a=a.substring(0,f)+k+a.substring(g+1)}}function j(a,b,c,d){var e=void 0,g=void 0,h=void 0,i=void 0;return g=c.segmentDuration,isNaN(g)&&(g=c.adaptation.period.duration),h=parseFloat((c.adaptation.period.start+d*g).toFixed(5)),i=parseFloat((h+g).toFixed(5)),e=new o.default,e.representation=c,e.duration=g,e.presentationStartTime=h,e.mediaStartTime=a.calcMediaTimeFromPresentationTime(e.presentationStartTime,c),e.availabilityStartTime=a.calcAvailabilityStartTimeFromPresentationTime(e.presentationStartTime,c.adaptation.period.mpd,b),e.availabilityEndTime=a.calcAvailabilityEndTimeFromPresentationTime(i,c.adaptation.period.mpd,b),e.wallStartTime=a.calcWallTimeForSegment(e,b),e.replacementNumber=f(e,d),e.availabilityIdx=d,e}function k(a,b,c,d,e,g,h,j,k,l){var m=d/g,n=Math.min(e/g,c.adaptation.period.mpd.maxSegmentDuration),p=void 0,q=void 0,r=void 0;return p=a.calcPresentationTimeFromMediaTime(m,c),q=p+n,r=new o.default,r.representation=c,r.duration=n,r.mediaStartTime=m,r.presentationStartTime=p,r.availabilityStartTime=c.adaptation.period.mpd.manifest.loadedTime,r.availabilityEndTime=a.calcAvailabilityEndTimeFromPresentationTime(q,c.adaptation.period.mpd,b),r.wallStartTime=a.calcWallTimeForSegment(r,b),r.replacementTime=l||d,r.replacementNumber=f(r,k),h=i(h,"Number",r.replacementNumber),h=i(h,"Time",r.replacementTime),r.media=h,r.mediaRange=j,r.availabilityIdx=k,r}function l(a,b){if(!b||!b.segments)return null;var c=b.segments.length,d=void 0,e=void 0;if(a<c&&(d=b.segments[a])&&d.availabilityIdx===a)return d;for(e=0;e<c;e++)if((d=b.segments[e])&&d.availabilityIdx===a)return d;return null}function m(a,b,c,d,e,f){var g=c.segmentDuration,h=c.adaptation.period.mpd.manifest.minBufferTime,i=c.segmentAvailabilityRange,j={start:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,i.start),end:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,i.end)},k=c.segments,m=2*g,n=f||Math.max(2*h,10*g),o=NaN,p=null,q=void 0,r=void 0;return j.start=Math.max(j.start,0),b&&!a.isTimeSyncCompleted()?(q=Math.floor(j.start/g),r=Math.floor(j.end/g),{start:q,end:r}):(k&&k.length>0?(p=l(e,c),o=p?a.calcPeriodRelativeTimeFromMpdRelativeTime(c,p.presentationStartTime):e>0?e*g:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,d)):o=e>0?e*g:b?j.end:j.start,q=Math.floor(Math.max(o-m,j.start)/g),r=Math.floor(Math.min(q+n/g,j.end/g)),{start:q,end:r})}Object.defineProperty(c,"__esModule",{value:!0}),c.unescapeDollarsInTemplate=g,c.replaceIDForTemplate=h,c.replaceTokenForTemplate=i,c.getIndexBasedSegment=j,c.getTimeBasedSegment=k,c.getSegmentByIndex=l,c.decideSegmentListRangeForTemplate=m;var n=a(88),o=d(n)},{88:88}],78:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e,f){var g=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentTemplate,i=a.segmentDuration,j=a.segmentAvailabilityRange,k=[],l=null,m=null,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0;for(r=a.startNumber,n=isNaN(i)&&!b?{start:r,end:r}:(0,h.decideSegmentListRangeForTemplate)(d,b,a,c,e,f),p=n.start,q=n.end,o=p;o<=q;o++)m=(0,h.getIndexBasedSegment)(d,b,a,o),m.replacementTime=(r+o-1)*a.segmentDuration,l=g.media,l=(0,h.replaceTokenForTemplate)(l,"Number",m.replacementNumber),l=(0,h.replaceTokenForTemplate)(l,"Time",m.replacementTime),m.media=l,k.push(m),m=null;return isNaN(i)?a.availableSegmentsNumber=1:a.availableSegmentsNumber=Math.ceil((j.end-j.start)/i),k}var d=a.timelineConverter;return{getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="TemplateSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],79:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){u(),x.on(i.default.TIME_SYNCHRONIZATION_COMPLETED,s,this)}function b(){return z}function c(a){z=a}function d(){return y}function e(a){y=a}function f(){return A}function h(a){A=a}function j(a,b,c,d){return d?c&&b.timeShiftBufferDepth!=Number.POSITIVE_INFINITY?new Date(b.availabilityStartTime.getTime()+1e3*(a+b.timeShiftBufferDepth)):b.availabilityEndTime:c?new Date(b.availabilityStartTime.getTime()+1e3*(a-y)):b.availabilityStartTime}function k(a,b,c){return j.call(this,a,b,c)}function l(a,b,c){return j.call(this,a,b,c,!0)}function m(a,b){return(a.getTime()-b.mpd.availabilityStartTime.getTime()+1e3*y)/1e3}function n(a,b){return a+(b.adaptation.period.start-b.presentationTimeOffset)}function o(a,b){return a-b.adaptation.period.start+b.presentationTimeOffset}function p(a,b){var c=void 0,d=void 0,e=void 0;return b&&(c=a.representation.adaptation.period.mpd.suggestedPresentationDelay,d=a.presentationStartTime+c,e=new Date(a.availabilityStartTime.getTime()+1e3*d)),e}function q(a,b){var c=a.adaptation.period,d={start:c.start,end:c.start+c.duration};if(!b)return d;if(!z&&a.segmentAvailabilityRange)return a.segmentAvailabilityRange;var e=a.segmentDuration||(a.segments&&a.segments.length?a.segments[a.segments.length-1].duration:0),f=m(new Date,c),g=c.start+c.duration;return d.start=Math.max(f-c.mpd.timeShiftBufferDepth,c.start),d.end=f>=g&&f-e<g?g-e:f-e,d}function r(a,b){return b-a.adaptation.period.start}function s(a){z||void 0!==a.offset&&(e(a.offset/1e3),z=!0)}function t(a){var b=a.presentationTimeOffset;return a.adaptation.period.start-b}function u(){y=0,z=!1,A=NaN}function v(){x.off(i.default.TIME_SYNCHRONIZATION_COMPLETED,s,this),u()}var w=this.context,x=(0,g.default)(w).getInstance(),y=void 0,z=void 0,A=void 0;return{initialize:a,isTimeSyncCompleted:b,setTimeSyncCompleted:c,getClientTimeOffset:d,setClientTimeOffset:e,getExpectedLiveEdge:f,setExpectedLiveEdge:h,calcAvailabilityStartTimeFromPresentationTime:k,calcAvailabilityEndTimeFromPresentationTime:l,calcPresentationTimeFromWallTime:m,calcPresentationTimeFromMediaTime:n,calcPeriodRelativeTimeFromMpdRelativeTime:r,calcMediaTimeFromPresentationTime:o,calcSegmentAvailabilityRange:q,calcWallTimeForSegment:p,calcMSETimeOffset:t,reset:v}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="TimelineConverter",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{50:50,51:51,54:54}],80:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(){if(!(e&&e.hasOwnProperty("calcMediaTimeFromPresentationTime")&&e.hasOwnProperty("calcSegmentAvailabilityRange")&&e.hasOwnProperty("calcMediaTimeFromPresentationTime")))throw new Error("Missing config parameter(s)")}function d(a,d,f,g){if(c(),!a)throw new Error("no representation");void 0===d&&(d=null);var i=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentTemplate||a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentList,j=i.SegmentTimeline,k=i.SegmentURL_asArray,l=a.availableSegmentsNumber>0,m=void 0;m=g||(f>-1||null!==d?10:1/0);var n=0,o=0,p=-1,q=[],r=null,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=function(c,d){var f=i.media,g=c.mediaRange;return k&&(f=k[d].media||"",g=k[d].mediaRange),(0,h.getTimeBasedSegment)(e,b,a,n,c.d,C,f,g,p,c.tManifest)};for(C=a.timescale,s=j.S_asArray,B=f,null!==d&&(r=e.calcMediaTimeFromPresentationTime(d,a)),u=0,v=s.length;u<v;u++){if(t=s[u],x=0,t.hasOwnProperty("r")&&(x=t.r),t.hasOwnProperty("t")&&(n=t.t,o=n/C),x<0){if((z=s[u+1])&&z.hasOwnProperty("t"))y=z.t/C;else{var E=a.segmentAvailabilityRange?a.segmentAvailabilityRange.end:e.calcSegmentAvailabilityRange(a,b).end;y=e.calcMediaTimeFromPresentationTime(E,a),a.segmentDuration=t.d/C}x=Math.ceil((y-o)/(t.d/C))-1}if(A){if(l)break;p+=x+1}else for(w=0;w<=x;w++)if(p++,q.length>m){if(A=!0,l)break}else null!==r?o>=r-t.d/C*1.5&&q.push(D(t,p)):p>=B&&q.push(D(t,p)),n+=t.d,o=n/C}return l||(a.availableSegmentsNumber=p+1),q}a=a||{};var e=a.timelineConverter;return{getSegments:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="TimelineSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],81:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.period=null,this.index=-1,this.type=null};c.default=e,b.exports=c.default},{}],82:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=1,f=1,g=function a(b,c,g,h){d(this,a),this.url=b||"",this.serviceLocation=c||b||"",this.dvb_priority=g||e,this.dvb_weight=h||f};g.DEFAULT_DVB_PRIORITY=e,g.DEFAULT_DVB_WEIGHT=f,c.default=g,b.exports=c.default},{}],83:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.duration=NaN,this.presentationTime=NaN,this.id=NaN,this.messageData="",this.eventStream=null,this.presentationTimeDelta=NaN};c.default=e,b.exports=c.default},{}],84:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.adaptionSet=null,this.representation=null,this.period=null, -this.timescale=1,this.value="",this.schemeIdUri=""};c.default=e,b.exports=c.default},{}],85:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.manifest=null,this.suggestedPresentationDelay=0,this.availabilityStartTime=null,this.availabilityEndTime=Number.POSITIVE_INFINITY,this.timeShiftBufferDepth=Number.POSITIVE_INFINITY,this.maxSegmentDuration=Number.POSITIVE_INFINITY,this.minimumUpdatePeriod=NaN,this.mediaPresentationDuration=NaN};c.default=e,b.exports=c.default},{}],86:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=-1,this.duration=NaN,this.start=NaN,this.mpd=null};e.DEFAULT_ID="defaultId",c.default=e,b.exports=c.default},{}],87:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),g=a(61),h=d(g),i=function(){function a(){e(this,a),this.id=null,this.index=-1,this.adaptation=null,this.segmentInfoType=null,this.initialization=null,this.codecs=null,this.codecPrivateData=null,this.segmentDuration=NaN,this.timescale=1,this.startNumber=1,this.indexRange=null,this.range=null,this.presentationTimeOffset=0,this.MSETimeOffset=NaN,this.segmentAvailabilityRange=null,this.availableSegmentsNumber=0,this.bandwidth=NaN,this.width=NaN,this.height=NaN,this.scanType=null,this.maxPlayoutRate=NaN}return f(a,null,[{key:"hasInitialization",value:function(a){return null!==a.initialization||(a.segmentInfoType===h.default.BASE_URL||a.segmentInfoType===h.default.SEGMENT_BASE)&&null!==a.range}},{key:"hasSegments",value:function(a){return a.segmentInfoType!==h.default.BASE_URL&&a.segmentInfoType!==h.default.SEGMENT_BASE&&!a.indexRange}}]),a}();c.default=i,b.exports=c.default},{61:61}],88:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.indexRange=null,this.index=null,this.mediaRange=null,this.media=null,this.duration=NaN,this.replacementTime=null,this.replacementNumber=NaN,this.mediaStartTime=NaN,this.presentationStartTime=NaN,this.availabilityStartTime=NaN,this.availabilityEndTime=NaN,this.availabilityIdx=NaN,this.wallStartTime=NaN,this.representation=null};c.default=e,b.exports=c.default},{}],89:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.schemeIdUri="",this.value=""};c.default=e,b.exports=c.default},{}],90:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){n=(0,g.default)(h).create({errHandler:a.errHandler,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier})}function c(a){var b=function(b){j.trigger(o.default.CHECK_FOR_EXISTENCE_COMPLETED,{request:a,exists:b})};if(a){var c=new i.default(a.url);n.load({request:c,success:function(){b(!0)},error:function(){b(!1)}})}else b(!1)}function d(a){var b=function(b,c){j.trigger(o.default.LOADING_COMPLETED,{request:a,response:b||null,error:c||null,sender:l})};a?n.load({request:a,progress:function(){j.trigger(o.default.LOADING_PROGRESS,{request:a})},success:function(a){b(a)},error:function(a,c,d){b(void 0,new k.default(r,d,c))},abort:function(a,b){a&&0===b&&j.trigger(o.default.LOADING_ABANDONED,{request:a,mediaType:a.mediaType,sender:l})}}):b(void 0,new k.default(s,t))}function e(){n&&n.abort()}function f(){n&&(n.abort(),n=null)}a=a||{};var h=this.context,j=(0,m.default)(h).getInstance(),l=void 0,n=void 0;return l={checkForExistence:c,load:d,abort:e,reset:f},b(),l}Object.defineProperty(c,"__esModule",{value:!0});var f=a(98),g=d(f),h=a(214),i=d(h),j=a(211),k=d(j),l=a(50),m=d(l),n=a(54),o=d(n),p=a(51),q=d(p),r=1,s=2,t="request is null";e.__dashjs_factory_name="FragmentLoader";var u=q.default.getClassFactory(e);u.FRAGMENT_LOADER_ERROR_LOADING_FAILURE=r,u.FRAGMENT_LOADER_ERROR_NULL_REQUEST=s,q.default.updateClassFactory(e.__dashjs_factory_name,u),c.default=u,b.exports=c.default},{211:211,214:214,50:50,51:51,54:54,98:98}],91:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){j.on(v.default.XLINK_READY,c,s),u=(0,k.default)(h).create({errHandler:A,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier}),w=(0,i.default)(h).create({errHandler:A,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier}),x=null}function c(a){j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:a.manifest})}function d(a){var b=null;return a.indexOf("SmoothStreamingMedia")>-1?(y?(b=y.createMssParser(),y.registerEvents()):A.manifestError("manifest type unsupported","createParser"),b):a.indexOf("MPD")>-1?(0,z.default)(h).create({errorHandler:A}):b}function e(a){var b=new o.default(a,r.HTTPRequest.MPD_TYPE);u.load({request:b,success:function(b,c,e){var f=void 0,h=void 0;if(e.responseURL&&e.responseURL!==a?(h=l.parseBaseUrl(e.responseURL),f=e.responseURL):(l.isRelative(a)&&(a=l.resolve(a,window.location.href)),h=l.parseBaseUrl(a)),null===x&&(x=d(b)),null===x)return void j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(C,"Failed detecting manifest type: "+a)});w.setMatchers(x.getMatchers()),w.setIron(x.getIron());var i=x.parse(b);i?(i.url=f||a,i.originalUrl||(i.originalUrl=i.url),i.hasOwnProperty(g.default.LOCATION)&&(h=l.parseBaseUrl(i.Location_asArray[0]),p("BaseURI set by Location to: "+h)),i.baseUri=h,i.loadedTime=new Date,w.resolveManifestOnLoad(i)):j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(C,E)})},error:function(b,c,d){j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(D,"Failed loading manifest: "+a+", "+d)})}})}function f(){j.off(v.default.XLINK_READY,c,s),w&&(w.reset(),w=null),u&&(u.abort(),u=null),y&&y.reset()}a=a||{};var h=this.context,j=(0,t.default)(h).getInstance(),l=(0,m.default)(h).getInstance(),n=(0,B.default)(h).getInstance(),p=n.log,s=void 0,u=void 0,w=void 0,x=void 0,y=a.mssHandler,A=a.errHandler;return s={load:e,reset:f},b(),s}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(116),i=d(h),j=a(98),k=d(j),l=a(206),m=d(l),n=a(221),o=d(n),p=a(211),q=d(p),r=a(230),s=a(50),t=d(s),u=a(54),v=d(u),w=a(51),x=d(w),y=a(64),z=d(y),A=a(49),B=d(A),C=1,D=2,E="parsing failed";e.__dashjs_factory_name="ManifestLoader";var F=x.default.getClassFactory(e);F.MANIFEST_LOADER_ERROR_PARSING_FAILURE=C,F.MANIFEST_LOADER_ERROR_LOADING_FAILURE=D,x.default.updateClassFactory(e.__dashjs_factory_name,F),c.default=F,b.exports=c.default},{100:100,116:116,206:206,211:211,221:221,230:230,49:49,50:50,51:51,54:54,64:64,98:98}],92:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&(a.manifestModel&&(z=a.manifestModel),a.dashManifestModel&&(A=a.dashManifestModel),a.mediaPlayerModel&&(B=a.mediaPlayerModel),a.manifestLoader&&(y=a.manifestLoader))}function b(){d(),t.on(i.default.STREAMS_COMPOSED,q,this),t.on(i.default.PLAYBACK_STARTED,o,this),t.on(i.default.PLAYBACK_PAUSED,p,this),t.on(i.default.INTERNAL_MANIFEST_LOADED,n,this)}function c(a){k(a)}function d(){u=NaN,x=!1,w=!0,f()}function e(){t.off(i.default.PLAYBACK_STARTED,o,this),t.off(i.default.PLAYBACK_PAUSED,p,this),t.off(i.default.STREAMS_COMPOSED,q,this),t.off(i.default.INTERNAL_MANIFEST_LOADED,n,this),d()}function f(){null!==v&&(clearInterval(v),v=null)}function h(){f(),isNaN(u)||(s("Refresh manifest in "+u+" seconds."),v=setTimeout(l,1e3*u))}function j(){x=!0;var a=z.getValue(),b=a.url,c=A.getLocation(a);c&&(b=c),y.load(b)}function k(a){z.setValue(a);var b=new Date,c=(b.getTime()-a.loadedTime.getTime())/1e3;u=A.getManifestUpdatePeriod(a,c),t.trigger(i.default.MANIFEST_UPDATED,{manifest:a}),s("Manifest has been refreshed at "+b+"["+b.getTime()/1e3+"] "),w||h()}function l(){w&&!B.getScheduleWhilePaused()||x||j()}function n(a){a.error||k(a.manifest)}function o(){w=!1,h()}function p(){w=!0,f()}function q(){x=!1}var r=this.context,s=(0,m.default)(r).getInstance().log,t=(0,g.default)(r).getInstance(),u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0;return{initialize:b,setManifest:c,refreshManifest:j,setConfig:a,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j),l=a(49),m=d(l);e.__dashjs_factory_name="ManifestUpdater",c.default=k.default.getClassFactory(e),b.exports=c.default},{49:49,50:50,51:51,54:54}],93:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){Cc=!1,Dc=!1,Ec=!0,Ic=null,Bc=null,Lc=null,Y.default.extend($.default),Nc=(0,I.default)(vc).getInstance()}function b(a){a&&(a.capabilities&&(Pc=a.capabilities),a.streamController&&(Qc=a.streamController),a.playbackController&&(Rc=a.playbackController),a.mediaPlayerModel&&(Nc=a.mediaPlayerModel),a.abrController&&(Fc=a.abrController),a.mediaController&&(Hc=a.mediaController))}function c(a,b,c){if(Pc||(Pc=(0,w.default)(vc).getInstance()),Oc=(0,u.default)(vc).getInstance(),!Pc.supportsMediaSource())return void Oc.capabilityError("mediasource");Cc||(Cc=!0,Gc=(0,ja.default)(vc).getInstance(),Fc||(Fc=(0,M.default)(vc).getInstance()),Rc||(Rc=(0,m.default)(vc).getInstance()),Hc||(Hc=(0,q.default)(vc).getInstance()),Lc=(0,da.default)(vc).getInstance(),Tc=(0,fa.default)(vc).getInstance({mediaController:Hc,timelineConverter:Gc,adapter:Lc}),Uc=(0,G.default)(vc).getInstance(),Sc=(0,ha.default)(vc).getInstance({manifestModel:Uc,dashManifestModel:Tc}),Mc=(0,K.default)(vc).getInstance(),Wc=(0,C.default)(vc).getInstance(),Xc=(0,S.default)(vc).getInstance({mediaPlayerModel:Nc}),Lc.setConfig({dashManifestModel:Tc}),Mc.setConfig({adapter:Lc}),Za(),Ca(void 0===c||c),a&&Jb(a),b&&cc(b),yc("[dash.js "+j()+"] MediaPlayer has been initialized"))}function d(){cc(null),Jb(null),Bc=null,Ic&&(Ic.reset(),Ic=null),Jc&&(Jc.reset(),Jc=null)}function e(){return!!Vc&&!!Ac}function f(a,b,c){wc.on(a,b,c)}function h(a,b,c){wc.off(a,b,c)}function j(){return(0,ba.getVersionString)()}function l(){return xc}function n(){if(!Dc)throw qc;(!Ec||r()&&Dc)&&Rc.play()}function p(){if(!Dc)throw qc;Rc.pause()}function r(){if(!Dc)throw qc;return Rc.isPaused()}function t(a){if(!Dc)throw qc;if("number"!=typeof a||isNaN(a))throw uc;var b=Rc.getIsDynamic()?P(a):a;Rc.seek(b)}function v(){if(!Dc)throw qc;return Rc.isSeeking()}function x(){if(!Dc)throw qc;return Rc.getIsDynamic()}function z(a){if(!Vc)throw rc;Gb().playbackRate=a}function B(){if(!Vc)throw rc;return Gb().playbackRate}function D(a){if(!Vc)throw rc;Gb().muted=a}function F(){if(!Vc)throw rc;return Gb().muted}function H(a){if(!Vc)throw rc;Gb().volume=a}function J(){if(!Vc)throw rc;return Gb().volume}function L(a){var b=[g.default.VIDEO,g.default.AUDIO,g.default.FRAGMENTED_TEXT];if(a){if(-1!==b.indexOf(a)){var c=vb().getCurrentBufferLevel(wb(a));return c||NaN}return yc("Warning - getBufferLength requested for invalid type"),NaN}var c=b.map(function(a){return Ob(a).length>0?vb().getCurrentBufferLevel(wb(a)):Number.MAX_VALUE}).reduce(function(a,b){return Math.min(a,b)});return c===Number.MAX_VALUE?NaN:c}function N(){var a=mc();return a?a.manifestInfo.DVRWindowSize:0}function P(a){var b=mc(),c=Rc.getLiveDelay();if(!b)return 0;var d=b.range.start+a;return d>b.range.end-c&&(d=b.range.end-c),d}function R(a){if(!Dc)throw qc;var b=Gb().currentTime;if(void 0!==a)b=Qc.getTimeRelativeToStreamId(b,a);else if(Rc.getIsDynamic()){var c=mc();b=null===c?0:T()-(c.range.end-c.time)}return b}function T(){if(!Dc)throw qc;var a=Gb().duration;if(Rc.getIsDynamic()){var b=mc(),c=void 0;if(!b)return 0;c=b.range.end-b.range.start,a=c<b.manifestInfo.DVRWindowSize?c:b.manifestInfo.DVRWindowSize}return a}function V(){if(!Dc)throw qc;return R()<0?NaN:nc(R())}function X(){if(!Dc)throw qc;return nc(T())}function Z(a,b){Fc.setMaxAllowedBitrateFor(a,b)}function _(a,b){Fc.setMinAllowedBitrateFor(a,b)}function ca(a){return Fc.getMaxAllowedBitrateFor(a)}function ea(a){return Fc.getMinAllowedBitrateFor(a)}function ga(a,b){Fc.setMaxAllowedRepresentationRatioFor(a,b)}function ia(a){return Fc.getMaxAllowedRepresentationRatioFor(a)}function la(a){if(!Dc)throw qc;if(a===g.default.IMAGE){var b=oc();if(!b)return-1;var c=b.getThumbnailController();return c?c.getCurrentTrackIndex():-1}return Fc.getQualityFor(a,Qc.getActiveStreamInfo())}function na(a,b){if(!Dc)throw qc;if(a===g.default.IMAGE){var c=oc();if(!c)return;var d=c.getThumbnailController();d&&d.setTrackByIndex(b)}Fc.setPlaybackQuality(a,Qc.getActiveStreamInfo(),b)}function pa(){Fc.setElementSize(),Fc.setWindowResizeEventCalled(!0)}function qa(){return Fc.getLimitBitrateByPortal()}function ra(a){Fc.setLimitBitrateByPortal(a)}function sa(){return Fc.getUsePixelRatioInLimitBitrateByPortal()}function ta(a){Fc.setUsePixelRatioInLimitBitrateByPortal(a)}function ua(a,b){Fc.setInitialBitrateFor(a,b)}function va(a){if(!Dc)throw qc;return Fc.getInitialBitrateFor(a)}function wa(a,b){Fc.setInitialRepresentationRatioFor(a,b)}function xa(a){return Fc.getInitialRepresentationRatioFor(a)}function ya(a){return Fc.getAutoSwitchBitrateFor(a)}function za(a,b){Fc.setAutoSwitchBitrateFor(a,b)}function Aa(){return Fc.getUseDeadTimeLatency()}function Ba(a){Fc.setUseDeadTimeLatency(a)}function Ca(a){Ec=a}function Da(){return Ec}function Ea(a){Nc.setLiveDelayFragmentCount(a)}function Fa(a){Nc.setLiveDelay(a)}function Ga(){return Nc.getLiveDelay()}function Ha(a){Nc.setUseSuggestedPresentationDelay(a)}function Ia(a,b){Nc.setLastBitrateCachingInfo(a,b)}function Ja(a,b){Nc.setLastMediaSettingsCachingInfo(a,b)}function Ka(a){Nc.setScheduleWhilePaused(a)}function La(){return Nc.getScheduleWhilePaused()}function Ma(a){Nc.setFastSwitchEnabled(a)}function Na(){return Nc.getFastSwitchEnabled()}function Oa(a){a===g.default.ABR_STRATEGY_DYNAMIC||a===g.default.ABR_STRATEGY_BOLA||a===g.default.ABR_STRATEGY_THROUGHPUT?Nc.setABRStrategy(a):yc("Warning: Ignoring setABRStrategy("+a+") - unknown value.")}function Pa(){return Nc.getABRStrategy()}function Qa(a){Nc.setUseDefaultABRRules(a)}function Ra(a,b,c){Nc.addABRCustomRule(a,b,c)}function Sa(a){Nc.removeABRCustomRule(a)}function Ta(){Nc.removeAllABRCustomRule()}function Ua(a){a===g.default.MOVING_AVERAGE_SLIDING_WINDOW||a===g.default.MOVING_AVERAGE_EWMA?Nc.setMovingAverageMethod(a):yc("Warning: Ignoring setMovingAverageMethod("+a+") - unknown value.")}function Va(){return Nc.getMovingAverageMethod()}function Wa(a,b){Xa(a,b);var c=new k.default;c.schemeIdUri=a,c.value=b,Nc.getUTCTimingSources().push(c)}function Xa(a,b){var c=Nc.getUTCTimingSources();c.forEach(function(d,e){d.schemeIdUri===a&&d.value===b&&c.splice(e,1)})}function Ya(){Nc.setUTCTimingSources([])}function Za(){Wa(I.default.DEFAULT_UTC_TIMING_SOURCE.scheme,I.default.DEFAULT_UTC_TIMING_SOURCE.value)}function $a(a){Nc.setUseManifestDateHeaderTimeSource(a)}function _a(a){Nc.setBufferToKeep(a)}function ab(a){Nc.setBufferAheadToKeep(a)}function bb(a){Nc.setBufferPruningInterval(a)}function cb(a){Nc.setStableBufferTime(a)}function db(){return Nc.getStableBufferTime()}function eb(a){Nc.setBufferTimeAtTopQuality(a)}function fb(){return Nc.getBufferTimeAtTopQuality()}function gb(a){Nc.setBufferTimeAtTopQualityLongForm(a)}function hb(){return Nc.getBufferTimeAtTopQualityLongForm()}function ib(a){Nc.setLongFormContentDurationThreshold(a)}function jb(a){Nc.setSegmentOverlapToleranceTime(a)}function kb(a,b){Nc.setCacheLoadThresholdForType(a,b)}function lb(a){Nc.setBandwidthSafetyFactor(a)}function mb(){return Nc.getBandwidthSafetyFactor()}function nb(a){var b=Fc.getThroughputHistory();return b?b.getAverageThroughput(a):0}function ob(a){Nc.setAbandonLoadTimeout(a)}function pb(a){Nc.setFragmentRetryAttempts(a)}function qb(a){Nc.setFragmentRetryInterval(a)}function rb(a){Nc.setManifestRetryAttempts(a)}function sb(a){Nc.setManifestRetryInterval(a)}function tb(a,b){Nc.setXHRWithCredentialsForType(a,b)}function ub(a){return Nc.getXHRWithCredentialsForType(a)}function vb(){return Sc}function wb(a){return Mc.getReadOnlyMetricsFor(a)}function xb(a){void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.setTextDefaultLanguage(a)}function yb(){return void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.getTextDefaultLanguage()}function zb(a){void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.setTextDefaultEnabled(a)}function Ab(){return void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.getTextDefaultEnabled()}function Bb(a){void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.enableText(a)}function Cb(){return void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.isTextEnabled()}function Db(a){if(!Dc)throw qc;void 0===Wc&&(Wc=(0,C.default)(vc).getInstance()),Wc.setTextTrack(a)}function Eb(){var a=NaN;return Wc&&(a=Wc.getCurrentTrackIdx()),a}function Fb(a){var b=(0,y.default)(vc).getInstance();b.setConfig({videoModel:Vc}),b.initialize(),b.displayCConTop(a)}function Gb(){if(!Vc)throw rc;return Vc.getElement()}function Hb(){return Vc?Vc.getVideoContainer():null}function Ib(a){if(!Vc)throw rc;Vc.setVideoContainer(a)}function Jb(a){if(!Cc)throw tc;Vc&&Vc.reset(),Vc=null,a&&(Vc=(0,Q.default)(vc).getInstance(),Vc.initialize(),Vc.setElement(a),jc(),kc(),lc()),gc()}function Kb(){return Vc?Vc.getTTMLRenderingDiv():null}function Lb(a){if(!Vc)throw rc;Vc.setTTMLRenderingDiv(a)}function Mb(a){if(!Dc)throw qc;var b=oc();return b?b.getBitrateListFor(a):[]}function Nb(a){if(!Dc)throw qc;return Lc.getStreamsInfo(a)}function Ob(a){if(!Dc)throw qc;var b=Qc.getActiveStreamInfo();return b?Hc.getTracksFor(a,b):[]}function Pb(a,b,c){if(!Dc)throw qc;return c=c||Lc.getStreamsInfo(b)[0],c?Lc.getAllMediaInfoForType(c,a,b):[]}function Qb(a){if(!Dc)throw qc;var b=Qc.getActiveStreamInfo();return b?Hc.getCurrentTrackFor(a,b):null}function Rb(a,b){if(!Cc)throw tc;Hc.setInitialSettings(a,b)}function Sb(a){if(!Cc)throw tc;return Hc.getInitialSettings(a)}function Tb(a){if(!Dc)throw qc;Hc.setTrack(a)}function Ub(a){if(!Cc)throw tc;return Hc.getSwitchMode(a)}function Vb(a,b){if(!Cc)throw tc;Hc.setSwitchMode(a,b)}function Wb(a){if(!Cc)throw tc;Hc.setSelectionModeForInitialTrack(a)}function Xb(){if(!Cc)throw tc;return Hc.getSelectionModeForInitialTrack()}function Yb(){return jc()}function Zb(a){Ic=a}function $b(a){Bc=a}function _b(a){if(a<0)return null;var b=Rc.getIsDynamic()?P(a):a,c=Qc.getStreamForTime(b);if(null===c)return null;var d=c.getThumbnailController(),e=c.getStreamInfo();if(!d||!e)return null;var f=Qc.getTimeRelativeToStreamId(b,c.getId());return d.get(f)}function ac(a,b){var c=ic(),d=this,e=function a(e){e.error?b(null,e.error):b(e.manifest),wc.off(Y.default.INTERNAL_MANIFEST_LOADED,a,d),c.reset()};wc.on(Y.default.INTERNAL_MANIFEST_LOADED,e,d);var f=(0,E.default)(vc).getInstance();f.initialize(),c.load(f.parseURI(a))}function bc(){if(!Ac)throw sc;return Ac}function cc(a){if(!Cc)throw tc;if("string"==typeof a){var b=(0,E.default)(vc).getInstance();b.initialize(),Ac=b.parseURI(a)}else Ac=a;gc()}function dc(a,b,c){var d=!(arguments.length<=3||void 0===arguments[3])&&arguments[3],e=new Date(1e3*a),f=e.toLocaleDateString(b),g=e.toLocaleTimeString(b,{hour12:c});return d?g+" "+f:g}function ec(a){a=Math.max(a,0);var b=Math.floor(a/3600),c=Math.floor(a%3600/60),d=Math.floor(a%3600%60);return(0===b?"":b<10?"0"+b.toString()+":":b.toString()+":")+(c<10?"0"+c.toString():c.toString())+":"+(d<10?"0"+d.toString():d.toString())}function fc(a,b,c){aa.default.extend(a,b,c,vc)}function gc(){Dc?(Dc=!1,Lc.reset(),Qc.reset(),Rc.reset(),Fc.reset(),Hc.reset(),Wc.reset(),Ic&&(Ic.reset(),Ic=null,jc()),e()&&pc()):e()&&pc()}function hc(){var a=ic(),b=(0,O.default)(vc).getInstance({textController:Wc});Qc||(Qc=(0,o.default)(vc).getInstance()),Hc.setConfig({errHandler:Oc,domStorage:Xc}),Qc.setConfig({capabilities:Pc,manifestLoader:a,manifestModel:Uc,dashManifestModel:Tc,mediaPlayerModel:Nc,protectionController:Ic,adapter:Lc,metricsModel:Mc,dashMetrics:Sc,errHandler:Oc,timelineConverter:Gc,videoModel:Vc,playbackController:Rc,domStorage:Xc,abrController:Fc,mediaController:Hc,textController:Wc,sourceBufferController:b}),Rc.setConfig({streamController:Qc,metricsModel:Mc,dashMetrics:Sc,manifestModel:Uc,mediaPlayerModel:Nc,dashManifestModel:Tc,adapter:Lc,videoModel:Vc}),Fc.setConfig({streamController:Qc,domStorage:Xc,mediaPlayerModel:Nc,metricsModel:Mc,dashMetrics:Sc,dashManifestModel:Tc,manifestModel:Uc,videoModel:Vc,adapter:Lc}),Fc.createAbrRulesCollection(),Wc.setConfig({errHandler:Oc,manifestModel:Uc,dashManifestModel:Tc,mediaController:Hc,streamController:Qc,videoModel:Vc}),Qc.initialize(Ec,Bc)}function ic(){return(0,s.default)(vc).create({errHandler:Oc,metricsModel:Mc,mediaPlayerModel:Nc,requestModifier:(0,A.default)(vc).getInstance(),mssHandler:Kc})}function jc(){if(Ic)return Ic;var a=dashjs.Protection;if("function"==typeof a){var b=a(vc).create();return Y.default.extend(a.events),$.default.extend(a.events,{publicOnly:!0}),Ic=b.createProtectionSystem({log:yc,errHandler:Oc,videoModel:Vc,capabilities:Pc,eventBus:wc,adapter:Lc,events:Y.default,BASE64:ma.default,constants:g.default})}return null}function kc(){if(!Jc){var a=dashjs.MetricsReporting;if("function"==typeof a){var b=a(vc).create();Jc=b.createMetricsReporting({log:yc,eventBus:wc,mediaElement:Gb(),dashManifestModel:Tc,metricsModel:Mc,events:Y.default,constants:g.default,metricsConstants:i.default})}}}function lc(){if(!Kc){var a=dashjs.MssHandler;"function"==typeof a&&(Kc=a(vc).create({eventBus:wc,mediaPlayerModel:Nc,metricsModel:Mc,playbackController:Rc,protectionController:Ic,errHandler:Oc,events:Y.default,constants:g.default,log:yc,initSegmentType:ka.HTTPRequest.INIT_SEGMENT_TYPE,BASE64:ma.default,ISOBoxer:oa.default}))}}function mc(){var a=Mc.getReadOnlyMetricsFor(g.default.VIDEO)||Mc.getReadOnlyMetricsFor(g.default.AUDIO);return Sc.getCurrentDVRInfo(a)}function nc(a){var b=mc(),c=void 0;return b?(c=b.manifestInfo.availableFrom.getTime()/1e3,a+(c+b.range.start)):0}function oc(){if(!Dc)throw qc;var a=Qc.getActiveStreamInfo();return a?Qc.getStreamById(a.id):null}function pc(){Dc||(hc(),Dc=!0,yc("Playback Initialized"),"string"==typeof Ac?Qc.load(Ac):Qc.loadWithManifest(Ac))}var qc="You must first call initialize() to init playback before calling this method",rc="You must first call attachView() to set the video element before calling this method",sc="You must first call attachSource() with a valid source before calling this method",tc="MediaPlayer not initialized!",uc="MediaPlayer Invalid Arguments!",vc=this.context,wc=(0,W.default)(vc).getInstance(),xc=(0,U.default)(vc).getInstance(),yc=xc.log,zc=void 0,Ac=void 0,Bc=void 0,Cc=void 0,Dc=void 0,Ec=void 0,Fc=void 0,Gc=void 0,Hc=void 0,Ic=void 0,Jc=void 0,Kc=void 0,Lc=void 0,Mc=void 0,Nc=void 0,Oc=void 0,Pc=void 0,Qc=void 0,Rc=void 0,Sc=void 0,Tc=void 0,Uc=void 0,Vc=void 0,Wc=void 0,Xc=void 0;return zc={initialize:c,setConfig:b,on:f,off:h,extend:fc,attachView:Jb,attachSource:cc,isReady:e,play:n,isPaused:r,pause:p,isSeeking:v,isDynamic:x,seek:t,setPlaybackRate:z,getPlaybackRate:B,setMute:D,isMuted:F,setVolume:H,getVolume:J,time:R,duration:T,timeAsUTC:V,durationAsUTC:X,getActiveStream:oc,getDVRWindowSize:N,getDVRSeekOffset:P,convertToTimeCode:ec,formatUTC:dc,getVersion:j,getDebug:l,getBufferLength:L,getVideoContainer:Hb,getTTMLRenderingDiv:Kb,getVideoElement:Gb,getSource:bc,setLiveDelayFragmentCount:Ea,setLiveDelay:Fa,getLiveDelay:Ga,useSuggestedPresentationDelay:Ha,enableLastBitrateCaching:Ia,enableLastMediaSettingsCaching:Ja,setMaxAllowedBitrateFor:Z,getMaxAllowedBitrateFor:ca,setMinAllowedBitrateFor:_,getMinAllowedBitrateFor:ea,setMaxAllowedRepresentationRatioFor:ga,getMaxAllowedRepresentationRatioFor:ia,setAutoPlay:Ca,getAutoPlay:Da,setScheduleWhilePaused:Ka,getScheduleWhilePaused:La,getDashMetrics:vb,getMetricsFor:wb,getQualityFor:la,setQualityFor:na,updatePortalSize:pa,getLimitBitrateByPortal:qa,setLimitBitrateByPortal:ra,getUsePixelRatioInLimitBitrateByPortal:sa,setUsePixelRatioInLimitBitrateByPortal:ta,setTextDefaultLanguage:xb,getTextDefaultLanguage:yb,setTextDefaultEnabled:zb,getTextDefaultEnabled:Ab,enableText:Bb,isTextEnabled:Cb,setTextTrack:Db,getBitrateInfoListFor:Mb,setInitialBitrateFor:ua,getInitialBitrateFor:va,setInitialRepresentationRatioFor:wa,getInitialRepresentationRatioFor:xa,getStreamsFromManifest:Nb,getTracksFor:Ob,getTracksForTypeFromManifest:Pb,getCurrentTrackFor:Qb,setInitialMediaSettingsFor:Rb,getInitialMediaSettingsFor:Sb,setCurrentTrack:Tb,getTrackSwitchModeFor:Ub,setTrackSwitchModeFor:Vb,setSelectionModeForInitialTrack:Wb,getSelectionModeForInitialTrack:Xb,setFastSwitchEnabled:Ma,getFastSwitchEnabled:Na,setMovingAverageMethod:Ua,getMovingAverageMethod:Va,getAutoSwitchQualityFor:ya,setAutoSwitchQualityFor:za,setABRStrategy:Oa,getABRStrategy:Pa,useDefaultABRRules:Qa,addABRCustomRule:Ra,removeABRCustomRule:Sa,removeAllABRCustomRule:Ta,setBandwidthSafetyFactor:lb,getBandwidthSafetyFactor:mb,getAverageThroughput:nb,setAbandonLoadTimeout:ob,retrieveManifest:ac,addUTCTimingSource:Wa,removeUTCTimingSource:Xa,clearDefaultUTCTimingSources:Ya,restoreDefaultUTCTimingSources:Za,setBufferToKeep:_a,setBufferAheadToKeep:ab,setBufferPruningInterval:bb,setStableBufferTime:cb,getStableBufferTime:db,setBufferTimeAtTopQuality:eb,getBufferTimeAtTopQuality:fb,setBufferTimeAtTopQualityLongForm:gb,getBufferTimeAtTopQualityLongForm:hb,setFragmentLoaderRetryAttempts:pb,setFragmentLoaderRetryInterval:qb,setManifestLoaderRetryAttempts:rb,setManifestLoaderRetryInterval:sb,setXHRWithCredentialsForType:tb,getXHRWithCredentialsForType:ub,setLongFormContentDurationThreshold:ib,setSegmentOverlapToleranceTime:jb,setCacheLoadThresholdForType:kb,getProtectionController:Yb,attachProtectionController:Zb,setProtectionData:$b,enableManifestDateHeaderTimeSource:$a,displayCaptionsOnTop:Fb,attachVideoContainer:Ib,attachTTMLRenderingDiv:Lb,getCurrentTextTrackIndex:Eb,getUseDeadTimeLatencyForAbr:Aa,setUseDeadTimeLatencyForAbr:Ba,getThumbnail:_b,reset:d},a(),zc}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(101),i=d(h),j=a(89),k=d(j),l=a(111),m=d(l),n=a(114),o=d(n),p=a(109),q=d(p),r=a(91),s=d(r),t=a(199),u=d(t),v=a(195),w=d(v),x=a(190),y=d(x),z=a(204),A=d(z),B=a(188),C=d(B),D=a(145),E=d(D),F=a(142),G=d(F),H=a(143),I=d(H),J=a(144),K=d(J),L=a(103),M=d(L),N=a(113),O=d(N),P=a(146),Q=d(P),R=a(197),S=d(R),T=a(49),U=d(T),V=a(50),W=d(V),X=a(54),Y=d(X),Z=a(94),$=d(Z),_=a(51),aa=d(_),ba=a(52),ca=a(56),da=d(ca),ea=a(63),fa=d(ea),ga=a(58),ha=d(ga),ia=a(79),ja=d(ia),ka=a(230),la=a(1),ma=d(la),na=a(11),oa=d(na);e.__dashjs_factory_name="MediaPlayer";var pa=aa.default.getClassFactory(e);pa.events=$.default,aa.default.updateClassFactory(e.__dashjs_factory_name,pa),c.default=pa,b.exports=c.default},{1:1,100:100,101:101,103:103,109:109,11:11,111:111,113:113,114:114,142:142,143:143,144:144,145:145,146:146,188:188,190:190,195:195,197:197,199:199,204:204,230:230,49:49,50:50,51:51,52:52,54:54,56:56,58:58,63:63,79:79,89:89,91:91,94:94}],94:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(55),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.AST_IN_FUTURE="astInFuture",this.BUFFER_EMPTY="bufferStalled",this.BUFFER_LOADED="bufferLoaded",this.BUFFER_LEVEL_STATE_CHANGED="bufferStateChanged",this.ERROR="error",this.FRAGMENT_LOADING_COMPLETED="fragmentLoadingCompleted",this.FRAGMENT_LOADING_STARTED="fragmentLoadingStarted",this.FRAGMENT_LOADING_ABANDONED="fragmentLoadingAbandoned",this.LOG="log",this.MANIFEST_LOADED="manifestLoaded",this.METRICS_CHANGED="metricsChanged",this.METRIC_CHANGED="metricChanged",this.METRIC_ADDED="metricAdded",this.METRIC_UPDATED="metricUpdated",this.PERIOD_SWITCH_COMPLETED="periodSwitchCompleted",this.PERIOD_SWITCH_STARTED="periodSwitchStarted",this.QUALITY_CHANGE_REQUESTED="qualityChangeRequested",this.QUALITY_CHANGE_RENDERED="qualityChangeRendered",this.SOURCE_INITIALIZED="sourceInitialized",this.STREAM_INITIALIZED="streamInitialized",this.STREAM_TEARDOWN_COMPLETE="streamTeardownComplete",this.TEXT_TRACKS_ADDED="allTextTracksAdded",this.TEXT_TRACK_ADDED="textTrackAdded",this.CAN_PLAY="canPlay",this.PLAYBACK_ENDED="playbackEnded",this.PLAYBACK_ERROR="playbackError",this.PLAYBACK_NOT_ALLOWED="playbackNotAllowed",this.PLAYBACK_METADATA_LOADED="playbackMetaDataLoaded",this.PLAYBACK_PAUSED="playbackPaused",this.PLAYBACK_PLAYING="playbackPlaying",this.PLAYBACK_PROGRESS="playbackProgress",this.PLAYBACK_RATE_CHANGED="playbackRateChanged",this.PLAYBACK_SEEKED="playbackSeeked",this.PLAYBACK_SEEKING="playbackSeeking",this.PLAYBACK_SEEK_ASKED="playbackSeekAsked",this.PLAYBACK_STARTED="playbackStarted",this.PLAYBACK_TIME_UPDATED="playbackTimeUpdated",this.MANIFEST_VALIDITY_CHANGED="manifestValidityChanged"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{55:55}],95:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){if(!a||"VIDEO"!==a.nodeName)return null;if(a._dashjs_player)return a._dashjs_player;var e=void 0,f=a.id||a.name||"video element";if(!(b=b||[].slice.call(a.querySelectorAll("source")).filter(function(a){return a.type==d})[0])&&a.src)b=document.createElement("source"),b.src=a.src;else if(!b&&!a.src)return null;return c=c||{},e=(0,i.default)(c).create(),e.initialize(a,b.src,a.autoplay),e.getDebug().log("Converted "+f+" to dash.js player and added content: "+b.src),a._dashjs_player=e,e}function b(b,e){var f=[];b=b||"[data-dashjs-player]",e=e||document;for(var g=e.querySelectorAll(b),h=0;h<g.length;h++){var i=a(g[h],null);f.push(i)}for(var j=e.querySelectorAll('source[type="'+d+'"]'),h=0;h<j.length;h++){var k=c(j[h]),i=a(k,null);f.push(i)}return f}function c(a){for(var b=!0;b;){var c=a;if(b=!1,"video"===c.nodeName.toLowerCase())return c;a=c.parentNode,b=!0}}var d="application/dash+xml";return{create:a,createAll:b}}function f(){window.removeEventListener("load",f),j.createAll()}function g(){window.dashjs&&(window.clearInterval(k),j.createAll())}Object.defineProperty(c,"__esModule",{value:!0});var h=a(93),i=d(h),j=e(),k=void 0;!("undefined"!=typeof window&&window&&window.dashjs&&window.dashjs.skipAutoCreate)&&"undefined"!=typeof window&&window&&window.addEventListener&&("complete"===window.document.readyState?window.dashjs?j.createAll():k=window.setInterval(g,500):window.addEventListener("load",f)),c.default=j,b.exports=c.default},{93:93}],96:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){f(),na=(0, -m.default)(R).create({mediaPlayerModel:W,metricsModel:aa,errHandler:$}),T.on(s.default.BUFFERING_COMPLETED,L,fa),T.on(s.default.DATA_UPDATE_COMPLETED,M,fa)}function c(a,b){ja=a,(ma=b)&&(T.on(s.default.KEY_ERROR,A,fa),T.on(s.default.SERVER_CERTIFICATE_UPDATED,A,fa),T.on(s.default.LICENSE_REQUEST_COMPLETE,A,fa),T.on(s.default.KEY_SYSTEM_SELECTED,A,fa),T.on(s.default.KEY_SESSION_CREATED,A,fa))}function d(a){ha||(T.on(s.default.CURRENT_TRACK_CHANGED,D,fa),G(a),ha=!0)}function e(){for(var a=ga?ga.length:0,b=0;b<a;b++){ga[b].getFragmentModel().removeExecutedRequestsBeforeTime(l()+j()),ga[b].reset()}ga=[],ha=!1,ia=!1,T.off(s.default.CURRENT_TRACK_CHANGED,D,fa)}function f(){e(),ja=null,ka={},la=!1}function h(){ca&&ca.pause(),na&&(na.reset(),na=null),f(),S=null,T.off(s.default.DATA_UPDATE_COMPLETED,M,fa),T.off(s.default.BUFFERING_COMPLETED,L,fa),T.off(s.default.KEY_ERROR,A,fa),T.off(s.default.SERVER_CERTIFICATE_UPDATED,A,fa),T.off(s.default.LICENSE_REQUEST_COMPLETE,A,fa),T.off(s.default.KEY_SYSTEM_SELECTED,A,fa),T.off(s.default.KEY_SESSION_CREATED,A,fa)}function j(){return ja?ja.duration:NaN}function l(){return ja?ja.start:NaN}function n(){return ja?ja.id:NaN}function p(){return ja}function r(){return pa}function t(){return na}function v(){return oa}function w(){if(!(ba&&ba.hasOwnProperty("getBitrateList")&&Y&&Y.hasOwnProperty("getAllMediaInfoForType")&&Y.hasOwnProperty("getEventsFor")))throw new Error("Missing config parameter(s)")}function x(a){if(w(),a===g.default.IMAGE)return oa?oa.getBitrateList():[];var b=J(a);return ba.getBitrateList(b)}function y(){pa&&pa.start()}function z(){pa&&pa.stop()}function A(a){a.error&&($.mediaKeySessionError(a.error),S(a.error),h())}function B(a){return a.type===g.default.TEXT?a.mimeType:a.type}function C(a){var b=a.type,c=void 0,d=void 0;if(b===g.default.MUXED&&a)return d="Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines",S(d),$.manifestError(d,"multiplexedrep",U.getValue()),!1;if(b===g.default.TEXT||b===g.default.FRAGMENTED_TEXT||b===g.default.EMBEDDED_TEXT||b===g.default.IMAGE)return!0;if(c=a.codec,S(b+" codec: "+c),a.contentProtection&&!Z.supportsEncryptedMedia())$.capabilityError("encryptedmedia");else if(!Z.supportsCodec(c))return d=b+"Codec ("+c+") is not supported.",$.manifestError(d,"codec",U.getValue()),S(d),!1;return!0}function D(a){if(a.newMediaInfo.streamInfo.id===ja.id){var b=N(a.oldMediaInfo);if(b){var c=ca.getTime();S("Stream - Process track changed at current time "+c);var d=a.newMediaInfo,e=U.getValue();S("Stream - Update stream controller"),e.refreshManifestOnSwitchTrack?(S("Stream - Refreshing manifest for switch track"),qa=a,X.refreshManifest()):(b.updateMediaInfo(d),d.type!==g.default.FRAGMENTED_TEXT&&(ba.updateTopQualityIndex(d),b.switchTrackAsked()))}}}function E(b,c,d,e){var f=(0,i.default)(R).create({type:B(b),mimeType:b.mimeType,timelineConverter:_,adapter:Y,manifestModel:U,dashManifestModel:V,mediaPlayerModel:W,metricsModel:aa,dashMetrics:a.dashMetrics,baseURLController:a.baseURLController,stream:fa,abrController:ba,domStorage:a.domStorage,playbackController:ca,mediaController:da,streamController:a.streamController,textController:ea,sourceBufferController:a.sourceBufferController,errHandler:$});if(f.initialize(d),ba.updateTopQualityIndex(b),e?(f.setBuffer(e.buffer),f.getIndexHandler().setCurrentTime(e.currentTime),ga[e.replaceIdx]=f):ga.push(f),!e||!e.ignoreMediaInfo)if(b.type===g.default.TEXT||b.type===g.default.FRAGMENTED_TEXT){for(var h=void 0,j=0;j<c.length;j++)c[j].index===b.index&&(h=j),f.updateMediaInfo(c[j]);b.type===g.default.FRAGMENTED_TEXT&&f.updateMediaInfo(c[h])}else f.updateMediaInfo(b)}function F(b,c){var d=Y.getAllMediaInfoForType(ja,b),e=null,f=void 0;if(!d||0===d.length)return void S("No "+b+" data.");for(var h=0,i=d.length;h<i;h++)if(e=d[h],b===g.default.EMBEDDED_TEXT)ea.addEmbeddedTrack(e);else{if(!C(e))continue;da.isMultiTrackSupportedByType(e.type)&&da.addTrack(e,ja)}if(b!==g.default.EMBEDDED_TEXT&&0!==da.getTracksFor(b,ja).length){if(b===g.default.IMAGE)return void(oa=(0,o.default)(R).create({dashManifestModel:V,adapter:Y,baseURLController:a.baseURLController,stream:fa}));da.checkInitialMediaSettingsForType(b,ja),f=da.getCurrentTrackFor(b,ja),E(f,d,c)}}function G(a){w();var b=void 0;if(pa||(pa=(0,k.default)(R).create(),pa.setConfig({manifestModel:U,manifestUpdater:X,playbackController:ca}),b=Y.getEventsFor(ja),pa.addInlineEvents(b)),la=!0,H(g.default.VIDEO),H(g.default.AUDIO),F(g.default.VIDEO,a),F(g.default.AUDIO,a),F(g.default.TEXT,a),F(g.default.FRAGMENTED_TEXT,a),F(g.default.EMBEDDED_TEXT,a),F(g.default.MUXED,a),F(g.default.IMAGE,a),K(),ia=!0,la=!1,0===ga.length){var c="No streams to play.";$.manifestError(c,"nostreams",U.getValue()),S(c)}else I()}function H(a){var b=V.getAdaptationForType(U.getValue(),ja.index,a,ja);if(!b||!Array.isArray(b.Representation_asArray))return null;b.Representation_asArray=b.Representation_asArray.filter(function(a,c){if(0===c)return!0;var d=V.getCodec(b,c,!0);return!!Z.supportsCodec(d)||(S("[Stream] codec not supported: "+d),!1)})}function I(){for(var a=ga.length,b=!!ka.audio||!!ka.video,c=b?new Error(Q,"Data update failed",null):null,d=0;d<a;d++)if(ga[d].isUpdating()||la)return;ia&&(ma&&ma.initialize(U.getValue(),J(g.default.AUDIO),J(g.default.VIDEO)),T.trigger(s.default.STREAM_INITIALIZED,{streamInfo:ja,error:c}))}function J(a){for(var b=ga.length,c=null,d=0;d<b;d++)if(c=ga[d],c.getType()===a)return c.getMediaInfo();return null}function K(){for(var a=0,b=ga.length;a<b;a++)ga[a].createBuffer()}function L(a){if(a.streamInfo===ja){var b=O(),c=b.length;if(0===c)return void S("[Stream] onBufferingCompleted - can't trigger STREAM_BUFFERING_COMPLETED because no streamProcessor is defined");for(var d=0;d<c;d++)if(!b[d].isBufferingCompleted()&&(b[d].getType()===g.default.AUDIO||b[d].getType()===g.default.VIDEO))return void S("[Stream] onBufferingCompleted - can't trigger STREAM_BUFFERING_COMPLETED because streamProcessor "+b[d].getType()+" is not buffering completed");S("[Stream] onBufferingCompleted - trigger STREAM_BUFFERING_COMPLETED"),T.trigger(s.default.STREAM_BUFFERING_COMPLETED,{streamInfo:ja})}}function M(a){var b=a.sender.getStreamProcessor();b.getStreamInfo()===ja&&(ka[b.getType()]=a.error,I())}function N(a){return!!a&&O().filter(function(b){return b.getType()===a.type})[0]}function O(){for(var a=ga.length,b=[],c=void 0,d=void 0,e=0;e<a;e++)d=ga[e],(c=d.getType())!==g.default.AUDIO&&c!==g.default.VIDEO&&c!==g.default.FRAGMENTED_TEXT||b.push(d);return b}function P(a){if(S("Manifest updated... updating data system wide."),ha=!1,la=!0,ja=a,pa){var b=Y.getEventsFor(ja);pa.addInlineEvents(b)}H(g.default.VIDEO),H(g.default.AUDIO);for(var c=0,d=ga.length;c<d;c++){var e=ga[c],f=Y.getMediaInfoForType(ja,e.getType());ba.updateTopQualityIndex(f),e.updateMediaInfo(f)}if(qa){var f=qa.newMediaInfo;if("fragmentedText"!==f.type){var h=N(qa.oldMediaInfo);if(!h)return;h.switchTrackAsked(),qa=void 0}}la=!1,I()}var Q=1;a=a||{};var R=this.context,S=(0,u.default)(R).getInstance().log,T=(0,q.default)(R).getInstance(),U=a.manifestModel,V=a.dashManifestModel,W=a.mediaPlayerModel,X=a.manifestUpdater,Y=a.adapter,Z=a.capabilities,$=a.errHandler,_=a.timelineConverter,aa=a.metricsModel,ba=a.abrController,ca=a.playbackController,da=a.mediaController,ea=a.textController,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0;return fa={initialize:c,activate:d,deactivate:e,getDuration:j,getStartTime:l,getId:n,getStreamInfo:p,getFragmentController:t,getThumbnailController:v,getEventController:r,getBitrateListFor:x,startEventController:y,stopEventController:z,updateData:P,reset:h,getProcessors:O},b(),fa}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(97),i=d(h),j=a(107),k=d(j),l=a(108),m=d(l),n=a(191),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(49),u=d(t),v=a(51),w=d(v);e.__dashjs_factory_name="Stream",c.default=w.default.getClassFactory(e),b.exports=c.default},{100:100,107:107,108:108,191:191,49:49,50:50,51:51,54:54,97:97}],97:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){$&&$.getIsDynamic()&&(ma=(0,i.default)(P).create({timelineConverter:U,streamProcessor:ha})),j()}function c(b){Q=(0,u.default)(P).create({mimeType:T,timelineConverter:U,dashMetrics:fa,metricsModel:ea,mediaPlayerModel:X,baseURLController:a.baseURLController,errHandler:S}),Q.initialize(ha),Z.registerStreamType(R,ha),oa=Y.getFragmentController().getModel(R),oa.setStreamProcessor(ha),ka=O(R),la=(0,o.default)(P).create({type:R,metricsModel:ea,adapter:V,dashMetrics:fa,dashManifestModel:ga,timelineConverter:U,mediaPlayerModel:X,abrController:Z,playbackController:$,streamController:_,textController:ba,sourceBufferController:ca,streamProcessor:ha}),na=(0,q.default)(P).create(),na.setConfig({abrController:Z,domStorage:da,metricsModel:ea,dashMetrics:fa,dashManifestModel:ga,manifestModel:W,playbackController:$,timelineConverter:U,streamProcessor:ha}),ka.initialize(b),la.initialize(),na.initialize()}function d(a){pa.push(a)}function e(a){var b=pa.indexOf(a);-1!==b&&pa.splice(b,1)}function f(){return pa}function h(){pa=[]}function j(){ja=[],ia=null,h()}function l(a){Q.reset(),ka&&(ka.reset(a),ka=null),la&&(la.reset(),la=null),na&&(na.reset(),na=null),Z&&Z.unRegisterStreamType(R),pa.forEach(function(a){a.reset()}),j(),R=null,Y=null,ma&&(ma.reset(),ma=null)}function n(){return!!na&&na.isUpdating()}function p(){return R}function r(){return na}function s(){return Q}function t(){return Y?Y.getFragmentController():null}function v(){return ka.getBuffer()}function w(a){ka.setBuffer(a)}function x(){return ka}function y(){return oa}function z(){return ma}function A(){return Y?Y.getStreamInfo():null}function B(){return Y?Y.getEventController():null}function C(a){a===ia||a&&ia&&a.type!==ia.type||(ia=a),-1===ja.indexOf(a)&&ja.push(a),V.updateData(this)}function D(){return ja}function E(){return ia}function F(){return ka.getMediaSource()}function G(){return la}function H(){return V.getCurrentRepresentationInfo(na)}function I(a){return V.getRepresentationInfoForQuality(na,a)}function J(){return!!ka&&ka.getIsBufferingCompleted()}function K(){return ka.getBufferLevel()}function L(a){ka&&ka.switchInitData(A().id,a)}function M(){return ka.getBuffer()||ka.createBuffer(ia)}function N(){la.switchTrackAsked()}function O(a){return a===g.default.VIDEO||a===g.default.AUDIO?(0,k.default)(P).create({type:a,metricsModel:ea,mediaPlayerModel:X,manifestModel:W,sourceBufferController:ca,errHandler:S,streamController:_,mediaController:aa,adapter:V,textController:ba,abrController:Z,playbackController:$,streamProcessor:ha}):(0,m.default)(P).create({type:a,metricsModel:ea,mediaPlayerModel:X,manifestModel:W,sourceBufferController:ca,errHandler:S,streamController:_,mediaController:aa,adapter:V,textController:ba,abrController:Z,playbackController:$,streamProcessor:ha})}a=a||{};var P=this.context,Q=void 0,R=a.type,S=a.errHandler,T=a.mimeType,U=a.timelineConverter,V=a.adapter,W=a.manifestModel,X=a.mediaPlayerModel,Y=a.stream,Z=a.abrController,$=a.playbackController,_=a.streamController,aa=a.mediaController,ba=a.textController,ca=a.sourceBufferController,da=a.domStorage,ea=a.metricsModel,fa=a.dashMetrics,ga=a.dashManifestModel,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0;return ha={initialize:c,isUpdating:n,getType:p,getBufferController:x,getFragmentModel:y,getScheduleController:G,getLiveEdgeFinder:z,getEventController:B,getFragmentController:t,getRepresentationController:r,getIndexHandler:s,getCurrentRepresentationInfo:H,getRepresentationInfoForQuality:I,getBufferLevel:K,switchInitData:L,isBufferingCompleted:J,createBuffer:M,getStreamInfo:A,updateMediaInfo:C,switchTrackAsked:N,getMediaInfoArr:D,getMediaInfo:E,getMediaSource:F,getBuffer:v,setBuffer:w,registerExternalController:d,unregisterExternalController:e,getExternalControllers:f,unregisterAllExternalController:h,reset:l},b(),ha}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(202),i=d(h),j=a(106),k=d(j),l=a(187),m=d(l),n=a(112),o=d(n),p=a(62),q=d(p),r=a(51),s=d(r),t=a(57),u=d(t);e.__dashjs_factory_name="StreamProcessor",c.default=s.default.getClassFactory(e),b.exports=c.default},{100:100,106:106,112:112,187:187,202:202,51:51,57:57,62:62}],98:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function f(a){function b(){var a;n=[],o=[],p=[],a={},e(a,g.HTTPRequest.MPD_TYPE,k.default.DOWNLOAD_ERROR_ID_MANIFEST),e(a,g.HTTPRequest.XLINK_EXPANSION_TYPE,k.default.DOWNLOAD_ERROR_ID_XLINK),e(a,g.HTTPRequest.INIT_SEGMENT_TYPE,k.default.DOWNLOAD_ERROR_ID_INITIALIZATION),e(a,g.HTTPRequest.MEDIA_SEGMENT_TYPE,k.default.DOWNLOAD_ERROR_ID_CONTENT),e(a,g.HTTPRequest.INDEX_SEGMENT_TYPE,k.default.DOWNLOAD_ERROR_ID_CONTENT),e(a,g.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,k.default.DOWNLOAD_ERROR_ID_CONTENT),e(a,g.HTTPRequest.OTHER_TYPE,k.default.DOWNLOAD_ERROR_ID_CONTENT),q=a}function c(a,b){var d=a.request,e=new XMLHttpRequest,f=[],k=!0,m=!0,r=new Date,s=r,t=0,u=function(a){m=!1,d.requestStartDate=r,d.requestEndDate=new Date,d.firstByteDate=d.firstByteDate||r,d.checkExistenceOnly||i.addHttpRequest(d.mediaType,null,d.type,d.url,e.responseURL||null,d.serviceLocation||null,d.range||null,d.requestStartDate,d.firstByteDate,d.requestEndDate,e.status,d.duration,e.getAllResponseHeaders(),a?f:null)},v=function(){-1!==n.indexOf(e)&&(n.splice(n.indexOf(e),1),m&&(u(!1),b>0?(b--,p.push(setTimeout(function(){c(a,b)},j.getRetryIntervalForType(d.type)))):(h.downloadError(q[d.type],d.url,d),a.error&&a.error(d,"error",e.statusText),a.complete&&a.complete(d,e.statusText))))},w=function(b){var c=new Date;k&&(k=!1,(!b.lengthComputable||b.lengthComputable&&b.total!==b.loaded)&&(d.firstByteDate=c)),b.lengthComputable&&(d.bytesLoaded=b.loaded,d.bytesTotal=b.total),f.push({s:s,d:c.getTime()-s.getTime(),b:[b.loaded?b.loaded-t:0]}),s=c,t=b.loaded,a.progress&&a.progress()},x=function(){e.status>=200&&e.status<=299&&(u(!0),a.success&&a.success(e.response,e.statusText,e),a.complete&&a.complete(d,e.statusText))},y=function(){a.abort&&a.abort(d,e.status)};if(!l||!i||!h)throw new Error("config object is not correct or missing");try{var z=l.modifyRequestURL(d.url),A=d.checkExistenceOnly?g.HTTPRequest.HEAD:g.HTTPRequest.GET;e.open(A,z,!0),d.responseType&&(e.responseType=d.responseType),d.range&&e.setRequestHeader("Range","bytes="+d.range),d.requestStartDate||(d.requestStartDate=r),e=l.modifyRequestHeader(e),e.withCredentials=j.getXHRWithCredentialsForType(d.type),e.onload=x,e.onloadend=v,e.onerror=v,e.onprogress=w,e.onabort=y;var B=(new Date).getTime();isNaN(d.delayLoadingTime)||B>=d.delayLoadingTime?(n.push(e),e.send()):function(){var a={xhr:e};o.push(a),a.delayTimeout=setTimeout(function(){if(-1!==o.indexOf(a)){o.splice(o.indexOf(a),1);try{r=new Date,s=r,n.push(a.xhr),a.xhr.send()}catch(b){a.xhr.onerror()}}},d.delayLoadingTime-B)}()}catch(C){e.onerror()}}function d(a){a.request&&c(a,j.getRetryAttemptsForType(a.request.type))}function f(){p.forEach(function(a){return clearTimeout(a)}),p=[],o.forEach(function(a){return clearTimeout(a.delayTimeout)}),o=[],n.forEach(function(a){a.onloadend=a.onerror=a.onprogress=void 0,a.abort()}),n=[]}a=a||{};var h=a.errHandler,i=a.metricsModel,j=a.mediaPlayerModel,l=a.requestModifier,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0;return m={load:d,abort:f},b(),m}Object.defineProperty(c,"__esModule",{value:!0});var g=a(230),h=a(51),i=d(h),j=a(199),k=d(j);f.__dashjs_factory_name="XHRLoader";var l=i.default.getClassFactory(f);c.default=l,b.exports=c.default},{199:199,230:230,51:51}],99:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var e=function(d,e){b.resolved=!0,b.resolvedContent=d||null,f.trigger(p.default.XLINK_ELEMENT_LOADED,{element:b,resolveObject:c,error:d||e?null:new g.default(s,"Failed loading Xlink element: "+a)})};if(a===d)e(null,!0);else{var i=new l.default(a,j.HTTPRequest.XLINK_TYPE);h.load({request:i,success:function(a){e(a)},error:function(){e(null)}})}}function c(){h&&(h.abort(),h=null)}a=a||{};var d="urn:mpeg:dash:resolve-to-zero:2013",e=this.context,f=(0,n.default)(e).getInstance(),h=(0,i.default)(e).create({errHandler:a.errHandler,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier});return{load:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(211),g=d(f),h=a(98),i=d(h),j=a(230),k=a(221),l=d(k),m=a(50),n=d(m),o=a(54),p=d(o),q=a(51),r=d(q),s=1;e.__dashjs_factory_name="XlinkLoader";var t=r.default.getClassFactory(e);t.XLINK_LOADER_ERROR_LOADING_FAILURE=s,r.default.updateClassFactory(e.__dashjs_factory_name,t),c.default=t,b.exports=c.default},{211:211,221:221,230:230,50:50,51:51,54:54,98:98}],100:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a),this.init()}return e(a,[{key:"init",value:function(){this.STREAM="stream",this.VIDEO="video",this.AUDIO="audio",this.TEXT="text",this.FRAGMENTED_TEXT="fragmentedText",this.EMBEDDED_TEXT="embeddedText",this.MUXED="muxed",this.IMAGE="image",this.LOCATION="Location",this.INITIALIZE="initialize",this.TEXT_SHOWING="showing",this.TEXT_HIDDEN="hidden",this.CC1="CC1",this.CC3="CC3",this.STPP="stpp",this.TTML="ttml",this.VTT="vtt",this.WVTT="wvtt",this.UTF8="utf-8",this.SUGGESTED_PRESENTATION_DELAY="suggestedPresentationDelay",this.SCHEME_ID_URI="schemeIdUri",this.START_TIME="starttime",this.ABR_STRATEGY_DYNAMIC="abrDynamic",this.ABR_STRATEGY_BOLA="abrBola",this.ABR_STRATEGY_THROUGHPUT="abrThroughput",this.MOVING_AVERAGE_SLIDING_WINDOW="slidingWindow",this.MOVING_AVERAGE_EWMA="ewma"}}]),a}(),g=new f;c.default=g,b.exports=c.default},{}],101:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a),this.init()}return e(a,[{key:"init",value:function(){this.TCP_CONNECTION="TcpList",this.HTTP_REQUEST="HttpList",this.TRACK_SWITCH="RepSwitchList",this.BUFFER_LEVEL="BufferLevel",this.BUFFER_STATE="BufferState",this.DVR_INFO="DVRInfo",this.DROPPED_FRAMES="DroppedFrames",this.SCHEDULING_INFO="SchedulingInfo",this.REQUESTS_QUEUE="RequestsQueue",this.MANIFEST_UPDATE="ManifestUpdate",this.MANIFEST_UPDATE_STREAM_INFO="ManifestUpdatePeriodInfo",this.MANIFEST_UPDATE_TRACK_INFO="ManifestUpdateRepresentationInfo",this.PLAY_LIST="PlayList",this.DVB_ERRORS="DVBErrors"}}]),a}(),g=new f;c.default=g,b.exports=c.default},{}],102:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a),this.init()}return e(a,[{key:"init",value:function(){this.CLEARKEY_KEYSTEM_STRING="org.w3.clearkey",this.WIDEVINE_KEYSTEM_STRING="com.widevine.alpha",this.PLAYREADY_KEYSTEM_STRING="com.microsoft.playready"}}]),a}(),g=new f;c.default=g,b.exports=c.default},{}],103:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){ua=ra.log.bind(ta),e()}function b(a,b){Ra[a]=(0,A.default)(qa).create(),Ca[a]=b,Da[a]=Da[a]||{},Da[a].state=J,Ua[a]=!1,sa.on(s.default.LOADING_PROGRESS,pa,this),a==i.default.VIDEO&&(sa.on(s.default.QUALITY_CHANGE_RENDERED,j,this),Sa=(0,C.default)(qa).create(),na()),sa.on(s.default.METRIC_ADDED,l,this),Ta=(0,E.default)(qa).create({mediaPlayerModel:Oa})}function c(a){delete Ca[a]}function d(){va=(0,g.default)(qa).create({metricsModel:Va,dashMetrics:Wa,mediaPlayerModel:Oa,adapter:Ma}),va.initialize()}function e(){xa={video:!0,audio:!0},ya={},za={},Aa={},Ba={},Da={},Ca={},Ra={},Ua={},Fa=!1,Xa=!0,Ga=!1,void 0===Ha&&(Ha=!1),Qa=void 0,Sa=void 0,Ta=void 0,clearTimeout(Ea),Ea=null}function f(){e(),sa.off(s.default.LOADING_PROGRESS,pa,this),sa.off(s.default.QUALITY_CHANGE_RENDERED,j,this),sa.off(s.default.METRIC_ADDED,l,this),va&&va.reset()}function h(a){a&&(a.streamController&&(wa=a.streamController),a.domStorage&&(Pa=a.domStorage),a.mediaPlayerModel&&(Oa=a.mediaPlayerModel),a.metricsModel&&(Va=a.metricsModel),a.dashMetrics&&(Wa=a.dashMetrics),a.dashManifestModel&&(La=a.dashManifestModel),a.adapter&&(Ma=a.adapter),a.manifestModel&&(Ka=a.manifestModel),a.videoModel&&(Na=a.videoModel))}function j(a){a.mediaType===i.default.VIDEO&&(Qa=a.oldQuality,Sa.push(Qa,Na.getPlaybackQuality()))}function l(a){a.metric!==k.default.HTTP_REQUEST||!a.value||a.value.type!==F.HTTPRequest.MEDIA_SEGMENT_TYPE||a.mediaType!==i.default.AUDIO&&a.mediaType!==i.default.VIDEO||Ta.push(a.mediaType,a.value,Xa),a.metric!==k.default.BUFFER_LEVEL||a.mediaType!==i.default.AUDIO&&a.mediaType!==i.default.VIDEO||ca(a.mediaType,.001*a.value.level)}function n(a,b){var c=void 0;return ya[b]=ya[b]||{},ya[b].hasOwnProperty(a)||(ya[b][a]=0),c=ka(ya[b][a],a),c=la(c,a,ya[b][a]),c=oa(c,a)}function p(a){var b=Pa.getSavedBitrateSettings(a);if(!Aa.hasOwnProperty(a))if(Ba.hasOwnProperty(a)){var c=Ka.getValue(),d=La.getAdaptationForType(c,0,a).Representation;if(Array.isArray(d)){var e=Math.max(Math.round(d.length*Ba[a])-1,0);Aa[a]=d[e].bandwidth}else Aa[a]=0}else isNaN(b)?Aa[a]=a===i.default.VIDEO?K:L:Aa[a]=b;return Aa[a]}function r(a,b){Aa[a]=b}function t(a){return Ba.hasOwnProperty(a)?Ba[a]:null}function u(a,b){Ba[a]=b}function v(a){return Aa.hasOwnProperty("max")&&Aa.max.hasOwnProperty(a)?Aa.max[a]:NaN}function x(a){return Aa.hasOwnProperty("min")&&Aa.min.hasOwnProperty(a)?Aa.min[a]:NaN}function z(a,b){Aa.max=Aa.max||{},Aa.max[a]=b}function B(a,b){Aa.min=Aa.min||{},Aa.min[a]=b}function D(a){var b=v(a);return b?aa(Ca[a].getMediaInfo(),b):void 0}function G(a){var b=x(a);if(b){var c=ba(Ca[a].getMediaInfo()),d=aa(Ca[a].getMediaInfo(),b);return c[d]&&d<c.length-1&&c[d].bitrate<1e3*b&&d++,d}}function N(a){return Ba.hasOwnProperty("max")&&Ba.max.hasOwnProperty(a)?Ba.max[a]:1}function O(a,b){Ba.max=Ba.max||{},Ba.max[a]=b}function P(a){return xa[a]}function Q(a,b){xa[a]=b}function R(){return Fa}function S(a){Fa=a}function T(){return Ga}function U(a){Ga=a}function V(){return Xa}function W(a){Xa=a}function X(a){if(a&&Ca&&Ca[a]){var b=Ca[a].getStreamInfo(),c=b?b.id:null,d=ha(a),e=(0,w.default)(qa).create({abrController:ta,streamProcessor:Ca[a],currentValue:d,switchHistory:Ra[a],droppedFramesHistory:Sa,useBufferOccupancyABR:da(a)});if(Sa&&Sa.push(Qa,Na.getPlaybackQuality()),P(a)){var f=G(a),g=n(a,c),h=va.getMaxQuality(e),i=h.quality;if(void 0!==f&&i<f&&(i=f),i>g&&(i=g),Ra[a].push({oldValue:d,newValue:i}),i>y.default.NO_CHANGE&&i!=d)(Da[a].state===J||i>d)&&Z(a,d,i,g,h.reason);else if(ra.getLogToBrowserConsole()){var j=Wa.getCurrentBufferLevel(Va.getReadOnlyMetricsFor(a));ua("AbrController ("+a+") stay on "+d+"/"+g+" (buffer: "+j+")")}}}}function Y(a,b,c,d){var e=b.id,f=ha(a);if(null===c||isNaN(c)||c%1!=0)throw new Error("argument is not an integer");var g=n(a,e);c!==f&&c>=0&&c<=g&&Z(a,f,c,g,d)}function Z(a,b,c,d,e){if(a&&Ca[a]){var f=Ca[a].getStreamInfo(),g=f?f.id:null;if(ra.getLogToBrowserConsole()){var h=Wa.getCurrentBufferLevel(Va.getReadOnlyMetricsFor(a));ua("AbrController ("+a+") switch from "+b+" to "+c+"/"+d+" (buffer: "+h+") "+(e?JSON.stringify(e):"."))}ia(a,g,c),sa.trigger(s.default.QUALITY_CHANGE_REQUESTED,{mediaType:a,streamInfo:f,oldQuality:b,newQuality:c,reason:e})}}function $(a,b){Da[a].state=b}function _(a){return Da[a]?Da[a].state:null}function aa(a,b,c){if(Xa&&c&&Ca[a.type].getCurrentRepresentationInfo()&&Ca[a.type].getCurrentRepresentationInfo().fragmentDuration){c/=1e3;var d=Ca[a.type].getCurrentRepresentationInfo().fragmentDuration;if(c>d)return 0;b*=1-c/d}var e=ba(a);if(!e||0===e.length)return M;for(var f=e.length-1;f>=0;f--){if(1e3*b>=e[f].bitrate)return f}return 0}function ba(a){if(!a||!a.bitrateList)return null;for(var b=a.bitrateList,c=a.type,d=[],e=void 0,f=0,g=b.length;f<g;f++)e=new m.default,e.mediaType=c,e.qualityIndex=f,e.bitrate=b[f].bandwidth,e.width=b[f].width,e.height=b[f].height,e.scanType=b[f].scanType,d.push(e);return d}function ca(a,b){var c=Oa.getABRStrategy();if(c===i.default.ABR_STRATEGY_BOLA)return void(Ua[a]=!0);if(c===i.default.ABR_STRATEGY_THROUGHPUT)return void(Ua[a]=!1);var d=Oa.getStableBufferTime(),e=d,f=.5*d,g=Ua[a],h=b>(g?f:e);Ua[a]=h,h!==g&&ua(h?"AbrController ("+a+") switching from throughput to buffer occupancy ABR rule (buffer: "+b.toFixed(3)+").":"AbrController ("+a+") switching from buffer occupancy to throughput ABR rule (buffer: "+b.toFixed(3)+").")}function da(a){return Ua[a]}function ea(){return Ta}function fa(a){var b=a.type,c=a.streamInfo.id,d=a.representationCount-1;return ja(b,c,d),d}function ga(a){var b=a.id,c=ha(i.default.AUDIO),d=ha(i.default.VIDEO);return c===n(i.default.AUDIO,b)&&d===n(i.default.VIDEO,b)}function ha(a){if(a&&Ca[a]){var b=Ca[a].getStreamInfo(),c=b?b.id:null;if(c)return za[c]=za[c]||{},za[c].hasOwnProperty(a)||(za[c][a]=M),za[c][a]}return M}function ia(a,b,c){za[b]=za[b]||{},za[b][a]=c}function ja(a,b,c){ya[b]=ya[b]||{},ya[b][a]=c}function ka(a,b){var c=a;if(!Ca[b])return c;var d=G(b);void 0!==d&&(c=Math.max(a,d));var e=D(b);return void 0!==e&&(c=Math.min(c,e)),c}function la(a,b,c){var d=N(b);return isNaN(d)||d>=1||d<0?a:Math.min(a,Math.round(c*d))}function ma(a){Ha=a}function na(){var a=Ga&&window.hasOwnProperty("devicePixelRatio"),b=a?window.devicePixelRatio:1;Ia=Na.getClientWidth()*b,Ja=Na.getClientHeight()*b}function oa(a,b){if(b!==i.default.VIDEO||!Fa||!Ca[b])return a;Ha||na();var c=Ka.getValue(),d=La.getAdaptationForType(c,0,b).Representation,e=a;if(Ia>0&&Ja>0){for(;e>0&&d[e]&&Ia<d[e].width&&Ia-d[e-1].width<d[e].width-Ia;)e-=1;d.length-2>=e&&d[e].width===d[e+1].width&&(e=Math.min(a,e+1))}return e}function pa(a){var b=a.request.mediaType;if(P(b)){var c=Ca[b];if(!c)return;var d=(0,w.default)(qa).create({abrController:ta,streamProcessor:c,currentRequest:a.request,useBufferOccupancyABR:da(b)}),e=va.shouldAbandonFragment(d);if(e.quality>y.default.NO_CHANGE){var f=c.getFragmentModel();f.getRequests({state:o.default.FRAGMENT_MODEL_LOADING,index:a.request.index})[0]&&(f.abortRequests(),$(b,I),Ra[b].reset(),Ra[b].push({oldValue:ha(b,wa.getActiveStreamInfo()),newValue:e.quality,confidence:1,reason:e.reason}),Y(b,wa.getActiveStreamInfo(),e.quality,e.reason),clearTimeout(Ea),Ea=setTimeout(function(){$(b,J),Ea=null},Oa.getAbandonLoadTimeout()))}}}var qa=this.context,ra=(0,H.default)(qa).getInstance(),sa=(0,q.default)(qa).getInstance(),ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0,Ra=void 0,Sa=void 0,Ta=void 0,Ua=void 0,Va=void 0,Wa=void 0,Xa=void 0;return ta={isPlayingAtTopQuality:ga,updateTopQualityIndex:fa,getThroughputHistory:ea,getBitrateList:ba,getQualityForBitrate:aa,getMaxAllowedBitrateFor:v,getMinAllowedBitrateFor:x,setMaxAllowedBitrateFor:z,setMinAllowedBitrateFor:B,getMaxAllowedIndexFor:D,getMinAllowedIndexFor:G,getMaxAllowedRepresentationRatioFor:N,setMaxAllowedRepresentationRatioFor:O,getInitialBitrateFor:p,setInitialBitrateFor:r,getInitialRepresentationRatioFor:t,setInitialRepresentationRatioFor:u,setAutoSwitchBitrateFor:Q,getAutoSwitchBitrateFor:P,getUseDeadTimeLatency:V,setUseDeadTimeLatency:W,setLimitBitrateByPortal:S,getLimitBitrateByPortal:R,getUsePixelRatioInLimitBitrateByPortal:T,setUsePixelRatioInLimitBitrateByPortal:U,getQualityFor:ha,getAbandonmentStateFor:_,setPlaybackQuality:Y,checkPlaybackQuality:X,getTopQualityIndexFor:n,setElementSize:na,setWindowResizeEventCalled:ma,createAbrRulesCollection:d,registerStreamType:b,unRegisterStreamType:c,setConfig:h,reset:f},a(),ta}Object.defineProperty(c,"__esModule",{value:!0});var f=a(176),g=d(f),h=a(100),i=d(h),j=a(101),k=d(j),l=a(210),m=d(l),n=a(141),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(51),u=d(t),v=a(172),w=d(v),x=a(173),y=d(x),z=a(174),A=d(z),B=a(171),C=d(B),D=a(175),E=d(D),F=a(230),G=a(49),H=d(G),I="abandonload",J="allowload",K=1e3,L=100,M=0;e.__dashjs_factory_name="AbrController";var N=u.default.getSingletonFactory(e);N.ABANDON_LOAD=I,N.QUALITY_DEFAULT=M,u.default.updateSingletonFactory(e.__dashjs_factory_name,N),c.default=N,b.exports=c.default},{100:100,101:101,141:141,171:171,172:172,173:173,174:174,175:175,176:176,210:210,230:230,49:49,50:50,51:51,54:54}],104:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){r.invalidateSelectedIndexes(a.entry)}function b(){r=(0,g.default)(n).create(),t=(0,i.default)(n).create(),o.on(s.default.SERVICE_LOCATION_BLACKLIST_CHANGED,a,j)}function c(a){a.baseURLTreeModel&&(r=a.baseURLTreeModel),a.baseURLSelector&&(t=a.baseURLSelector),a.dashManifestModel&&(l=a.dashManifestModel)}function d(a){r.update(a),t.chooseSelectorFromManifest(a)}function e(a){var b=r.getForPath(a),c=b.reduce(function(a,b){var c=t.select(b);return c?(p.isRelative(c.url)?a.url=p.resolve(c.url,a.url):(a.url=c.url,a.serviceLocation=c.serviceLocation),a):new m.default},new m.default);if(!p.isRelative(c.url))return c}function f(){r.reset(),t.reset()}function h(a){r.setConfig({dashManifestModel:l}),t.setConfig({dashManifestModel:l}),d(a)}var j=void 0,l=void 0,n=this.context,o=(0,q.default)(n).getInstance(),p=(0,k.default)(n).getInstance(),r=void 0,t=void 0;return j={reset:f,initialize:h,resolve:e,setConfig:c},b(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(140),g=d(f),h=a(193),i=d(h),j=a(206),k=d(j),l=a(82),m=d(l),n=a(51),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r);e.__dashjs_factory_name="BaseURLController",c.default=o.default.getSingletonFactory(e),b.exports=c.default},{140:140,193:193,206:206,50:50,51:51,54:54,82:82}],105:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){return!!(g.length&&a&&a.length)&&-1!==g.indexOf(a)}function c(a){-1===g.indexOf(a)&&(g.push(a),h.trigger(j,{entry:a}))}function d(a){c(a.entry)}function e(){k&&h.on(k,d,this)}function f(){g=[]}a=a||{};var g=[],h=(0,i.default)(this.context).getInstance(),j=a.updateEventName,k=a.addBlacklistEventName;return e(),{add:c,contains:b,reset:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(50),i=d(h);e.__dashjs_factory_name="BlackListController",c.default=g.default.getClassFactory(e),b.exports=c.default},{50:50,51:51}],106:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){za=(0,y.default)(ka).getInstance().log.bind(ya),Oa=(0,A.default)(ka).getInstance(),ia()}function c(){return G}function d(a){ea(a),Aa=ua.getQualityFor(wa,xa.getStreamInfo()),la.on(s.default.DATA_UPDATE_COMPLETED,V,this),la.on(s.default.INIT_FRAGMENT_LOADED,h,this),la.on(s.default.MEDIA_FRAGMENT_LOADED,l,this),la.on(s.default.QUALITY_CHANGE_REQUESTED,t,this),la.on(s.default.STREAM_COMPLETED,W,this),la.on(s.default.PLAYBACK_PROGRESS,H,this), -la.on(s.default.PLAYBACK_TIME_UPDATED,H,this),la.on(s.default.PLAYBACK_RATE_CHANGED,Z,this),la.on(s.default.PLAYBACK_SEEKING,v,this),la.on(s.default.WALLCLOCK_TIME_UPDATED,Y,this),la.on(s.default.CURRENT_TRACK_CHANGED,X,this,q.default.EVENT_PRIORITY_HIGH),la.on(s.default.SOURCEBUFFER_APPEND_COMPLETED,r,this),la.on(s.default.SOURCEBUFFER_REMOVE_COMPLETED,T,this)}function e(a){if(!a||!Ea||!xa)return null;var b=null;try{b=oa.createSourceBuffer(Ea,a),b&&b.hasOwnProperty(g.default.INITIALIZE)&&b.initialize(wa,xa)}catch(c){pa.mediaSourceError("Error creating "+wa+" source buffer.")}return ca(b),U(xa.getRepresentationInfoForQuality(Aa).MSETimeOffset),b}function f(){return!(!xa||!qa)&&xa.getStreamInfo().id===qa.getActiveStreamInfo().id}function h(a){a.fragmentModel===xa.getFragmentModel()&&(za("Init fragment finished loading saving to",wa+"'s init cache"),Oa.save(a.chunk),za("Append Init fragment",wa," with representationId:",a.chunk.representationId," and quality:",a.chunk.quality),n(a.chunk))}function j(a,b){var c=Oa.extract(a,b);c?(za("Append Init fragment",wa," with representationId:",c.representationId," and quality:",c.quality),n(c)):la.trigger(s.default.INIT_REQUESTED,{sender:ya})}function l(a){if(a.fragmentModel===xa.getFragmentModel()){var b=a.chunk,c=b.bytes,d=b.quality,e=xa.getRepresentationInfoForQuality(d),f=sa.getEventsFor(e.mediaInfo,xa),g=sa.getEventsFor(e,xa);if(f&&f.length>0||g&&g.length>0){var h=xa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,quality:d,index:b.index})[0],j=N(c,h,f,g);xa.getEventController().addInbandEvents(j)}n(b)}}function n(a){Ma=!0,Ja=a,oa.append(Ha,a),a.mediaInfo.type===g.default.VIDEO&&la.trigger(s.default.VIDEO_CHUNK_RECEIVED,{chunk:a})}function p(a){if(a&&a.length>0)for(var b=0,c=a.length;b<c;b++)za("Buffered Range for type:",wa,":",a.start(b)," - ",a.end(b))}function r(a){if(Ha===a.buffer){if(a.error){if(a.error.code===k.default.QUOTA_EXCEEDED_ERROR_CODE&&(Da=.8*oa.getTotalBufferedTime(Ha),za("Quota exceeded for type: "+wa+", Critical Buffer: "+Da),Da>0)){var b=Math.max(.2*Da,1),c=Da-b;na.setBufferToKeep(parseFloat(b).toFixed(5)),na.setBufferAheadToKeep(parseFloat(c).toFixed(5))}return void(a.error.code!==k.default.QUOTA_EXCEEDED_ERROR_CODE&&O()||(za("Clearing playback buffer to overcome quota exceed situation for type: "+wa),la.trigger(s.default.QUOTA_EXCEEDED,{sender:ya,criticalBufferLevel:Da}),w()))}Ja&&!isNaN(Ja.index)&&(Fa=Math.max(Ja.index,Fa),K());var d=oa.getAllRanges(Ha);p(d),H(),Ma=!1,Ja&&la.trigger(s.default.BYTES_APPENDED,{sender:ya,quality:Ja.quality,startTime:Ja.start,index:Ja.index,bufferedRanges:d})}}function t(a){Aa!==a.newQuality&&wa===a.mediaType&&xa.getStreamInfo().id===a.streamInfo.id&&(U(xa.getRepresentationInfoForQuality(a.newQuality).MSETimeOffset),Aa=a.newQuality)}function v(){Ba&&(Qa=!0,Ba=!1,Ga=Number.POSITIVE_INFINITY),wa!==g.default.FRAGMENTED_TEXT?w():H(),Pa=void 0}function w(){var a=x();a&&0!==a.length||H(),R(a)}function x(){var a=[];if(!Ha||!Ha.buffered||0===Ha.buffered.length)return a;var b=va.getTime(),c=Ha.buffered.end(Ha.buffered.length-1)+E,d=xa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,time:b,threshold:F})[0];if(d){var e={start:0,end:d.startTime-D},f=xa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,time:d.startTime-d.duration/2,threshold:F})[0];f&&f.startTime!=d.startTime&&(e.end=f.startTime),e.start<e.end&&e.end>Ha.buffered.start(0)&&a.push(e);var g={start:d.startTime+d.duration+D,end:c},h=xa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,time:d.startTime+d.duration+D,threshold:F})[0];h&&h.startTime!==d.startTime&&(g.start=h.startTime+h.duration+D),g.start<g.end&&g.start<c&&a.push(g)}else za("getAllRangesWithSafetyFactor for",wa,"- No request found in current time position, removing full buffer 0 -",c),a.push({start:0,end:c});return a}function z(){var a=va.getTime();if(Pa){var b=oa.getAllRanges(Ha);b&&b.length&&(a=Math.max(b.start(0),Pa))}return a}function H(){I(),J()}function I(){va&&(Ca=oa.getBufferLength(Ha,z()),la.trigger(s.default.BUFFER_LEVEL_UPDATED,{sender:ya,bufferLevel:Ca}),L())}function J(){f()&&(ma.addBufferState(wa,Ia,xa.getScheduleController().getBufferTarget()),ma.addBufferLevel(wa,new Date,1e3*Ca))}function K(){Fa>=Ga-1&&!Ba&&(Ba=!0,za("[BufferController]["+wa+"] checkIfBufferingCompleted trigger BUFFERING_COMPLETED"),la.trigger(s.default.BUFFERING_COMPLETED,{sender:ya,streamInfo:xa.getStreamInfo()}))}function L(){"audio"!==wa&&"video"!==wa||(Qa&&!Ba&&va&&va.getTimeToStreamEnd()-Ca<D&&(Qa=!1,Ba=!0,za("[BufferController]["+wa+"] checkIfSufficientBuffer trigger BUFFERING_COMPLETED"),la.trigger(s.default.BUFFERING_COMPLETED,{sender:ya,streamInfo:xa.getStreamInfo()})),Ca<D&&!Ba?M(C):(Ba||Ca>=na.getStableBufferTime())&&M(B))}function M(a){Ia===a||wa===g.default.FRAGMENTED_TEXT&&ta.getAllTracksAreDisabled()||(Ia=a,J(),la.trigger(s.default.BUFFER_LEVEL_STATE_CHANGED,{sender:ya,state:a,mediaType:wa,streamInfo:xa.getStreamInfo()}),la.trigger(a===B?s.default.BUFFER_LOADED:s.default.BUFFER_EMPTY,{mediaType:wa}),za(a===B?"Got enough buffer to start for "+wa:"Waiting for more buffer before starting playback for "+wa))}function N(a,b,c,d){for(var e=Math.max(isNaN(b.startTime)?0:b.startTime,0),f=[],g=[],h=c.concat(d),i=0,j=h.length;i<j;i++)f[h[i].schemeIdUri]=h[i];for(var k=(0,u.default)(ka).getInstance().parse(a),l=k.getBoxes("emsg"),i=0,j=l.length;i<j;i++){var m=sa.getEvent(l[i],f,e);m&&g.push(m)}return g}function O(){return oa.getTotalBufferedTime(Ha)<Da}function P(){Ha&&wa!==g.default.FRAGMENTED_TEXT&&(Ba||R(Q()))}function Q(){var a=[];if(!Ha||!Ha.buffered||0===Ha.buffered.length)return a;var b=va.getTime(),c=Ha.buffered,d={start:Math.max(0,b-na.getBufferToKeep()),end:b+na.getBufferAheadToKeep()},e=xa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,time:b,threshold:F})[0];if(e&&(d.start=Math.min(e.startTime,d.start),d.end=Math.max(e.startTime+e.duration,d.end)),za("getClearRanges for",wa,"- Remove buffer out of ",d.start," - ",d.end),c.start(0)<=d.start){for(var f={start:0,end:d.start},g=0;g<c.length&&c.end(g)<=d.start;g++)f.end=c.end(g);f.start<f.end&&a.push(f)}if(c.end(c.length-1)>=d.end){var h={start:d.end,end:c.end(c.length-1)+F};h.start<h.end&&a.push(h)}return a}function R(a){a&&Ha&&0!==a.length&&(Ra.push.apply(Ra,a),Na||S())}function S(){if(0!==Ra.length){var a=Ra.shift();za("Removing",wa,"buffer from:",a.start,"to",a.end),Na=!0;var b=va.getTime();b<a.end&&(Ba=!1,Fa=0,xa.getScheduleController().setSeekTarget(b),sa.setIndexHandlerTime(xa,b)),oa.remove(Ha,a.start,a.end,Ea)}}function T(a){if(Ha===a.buffer){za("Removed",wa,"buffer from:",a.from,"to",a.to);p(oa.getAllRanges(Ha)),0===Ra.length&&(Na=!1),Na?S():(I(),la.trigger(s.default.BUFFER_CLEARED,{sender:ya,from:a.from,to:a.to,hasEnoughSpaceToAppend:O()}))}}function U(a){Ha&&Ha.timestampOffset!==a&&!isNaN(a)&&(Ha.timestampOffset=a)}function V(a){a.sender.getStreamProcessor()!==xa||a.error||U(a.currentRepresentation.MSETimeOffset)}function W(a){a.fragmentModel===xa.getFragmentModel()&&(Ga=a.request.index,K())}function X(a){Ha&&a.newMediaInfo.type===wa&&a.newMediaInfo.streamInfo.id===xa.getStreamInfo().id&&ra.getSwitchMode(wa)===o.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE&&Ha.buffered&&Ha.buffered.length>0&&(za("Clearing buffer because track changed - "+(Ha.buffered.end(Ha.buffered.length-1)+E)),R([{start:0,end:Ha.buffered.end(Ha.buffered.length-1)+E}]),Ga=Number.POSITIVE_INFINITY,xa.getFragmentModel().abortRequests())}function Y(){++Ka*(na.getWallclockTimeUpdateInterval()/1e3)>=na.getBufferPruningInterval()&&!Ma&&(Ka=0,P())}function Z(){L()}function $(){return wa}function _(){return xa}function aa(a){Pa=a}function ba(){return Ha}function ca(a){Ha=a}function da(){return Ca}function ea(a){Ea=a}function fa(){return Ea}function ga(){return Ba}function ha(){return Na}function ia(){Da=Number.POSITIVE_INFINITY,Ia=C,Aa=m.default.QUALITY_DEFAULT,Ga=Number.POSITIVE_INFINITY,Fa=0,Ja=null,La=!1,Ba=!1,Ma=!1,Na=!1,Qa=!1,Ca=0,Ka=0,Ra=[]}function ja(a){la.off(s.default.DATA_UPDATE_COMPLETED,V,this),la.off(s.default.QUALITY_CHANGE_REQUESTED,t,this),la.off(s.default.INIT_FRAGMENT_LOADED,h,this),la.off(s.default.MEDIA_FRAGMENT_LOADED,l,this),la.off(s.default.STREAM_COMPLETED,W,this),la.off(s.default.CURRENT_TRACK_CHANGED,X,this),la.off(s.default.PLAYBACK_PROGRESS,H,this),la.off(s.default.PLAYBACK_TIME_UPDATED,H,this),la.off(s.default.PLAYBACK_RATE_CHANGED,Z,this),la.off(s.default.PLAYBACK_SEEKING,v,this),la.off(s.default.WALLCLOCK_TIME_UPDATED,Y,this),la.off(s.default.SOURCEBUFFER_APPEND_COMPLETED,r,this),la.off(s.default.SOURCEBUFFER_REMOVE_COMPLETED,T,this),ia(),a||(oa.abort(Ea,Ha),oa.removeSourceBuffer(Ea,Ha)),Ha=null}a=a||{};var ka=this.context,la=(0,q.default)(ka).getInstance(),ma=a.metricsModel,na=a.mediaPlayerModel,oa=a.sourceBufferController,pa=a.errHandler,qa=a.streamController,ra=a.mediaController,sa=a.adapter,ta=a.textController,ua=a.abrController,va=a.playbackController,wa=a.type,xa=a.streamProcessor,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0,Ra=void 0;return ya={getBufferControllerType:c,initialize:d,createBuffer:e,getType:$,getStreamProcessor:_,setSeekStartTime:aa,getBuffer:ba,setBuffer:ca,getBufferLevel:da,setMediaSource:ea,getMediaSource:fa,getIsBufferingCompleted:ga,switchInitData:j,getIsPruningInProgress:ha,reset:ja},b(),ya}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(141),i=d(h),j=a(113),k=d(j),l=a(103),m=d(l),n=a(109),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(194),u=d(t),v=a(51),w=d(v),x=a(49),y=d(x),z=a(200),A=d(z),B="bufferLoaded",C="bufferStalled",D=.5,E=.5,F=.01,G="BufferController";e.__dashjs_factory_name=G;var H=w.default.getClassFactory(e);H.BUFFER_LOADED=B,H.BUFFER_EMPTY=C,w.default.updateClassFactory(e.__dashjs_factory_name,H),c.default=H,b.exports=c.default},{100:100,103:103,109:109,113:113,141:141,194:194,200:200,49:49,50:50,51:51,54:54}],107:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){b()}function b(){G=!1,x={},y={},z={},A=null,B=100,C=B/1e3}function c(){if(!D||!E||!F)throw new Error("setConfig function has to be called previously")}function d(){null!==A&&G&&(clearInterval(A),A=null,G=!1)}function e(){c(),u("Start Event Controller"),G||isNaN(B)||(G=!0,A=setInterval(l,B))}function f(a){if(c(),x={},a)for(var b=0;b<a.length;b++){var d=a[b];x[d.id]=d,u("Add inline event with id "+d.id)}u("Added "+a.length+" inline events")}function g(a){c();for(var b=0;b<a.length;b++){var d=a[b];d.id in y?u("Repeated event with id "+d.id):(d.eventStream.schemeIdUri===r&&void 0===y[d.id]&&h(d),y[d.id]=d,u("Add inband event with id "+d.id))}}function h(a){if(a.eventStream.value==s){var b=a.eventStream.timescale||1,c=a.presentationTime/b,d=void 0;d=4294967295==a.presentationTime?NaN:(a.presentationTime+a.duration)/b,u("Manifest validity changed: Valid until: "+c+"; remaining duration: "+d),v.trigger(m.default.MANIFEST_VALIDITY_CHANGED,{id:a.id,validUntil:c,newDuration:d,newManifestValidAfter:NaN})}}function j(){if(z)for(var a=F.getTime(),b=Object.keys(z),c=0;c<b.length;c++){var d=b[c],e=z[d];null!==e&&(e.duration+e.presentationTime)/e.eventStream.timescale<a&&(u("Remove Event "+d+" at time "+a),e=null,delete z[d])}}function l(){o(y),o(x),j()}function n(){c(),E.refreshManifest()}function o(a){var b,c=F.getTime();if(a)for(var d=Object.keys(a),e=0;e<d.length;e++){var f=d[e],g=a[f];void 0!==g&&(0===(b=g.presentationTime/g.eventStream.timescale)||b<=c&&b+C>c)&&(u("Start Event "+f+" at "+c),g.duration>0&&(z[f]=g),g.eventStream.schemeIdUri==r&&g.eventStream.value==s?0===g.duration&&0===g.presentationTimeDelta||n():v.trigger(g.eventStream.schemeIdUri,{event:g}),delete a[f])}}function p(a){a&&(a.manifestModel&&(D=a.manifestModel),a.manifestUpdater&&(E=a.manifestUpdater),a.playbackController&&(F=a.playbackController))}function q(){d(),b()}var r="urn:mpeg:dash:event:2012",s=1,t=this.context,u=(0,i.default)(t).getInstance().log,v=(0,k.default)(t).getInstance(),w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0;return w={addInlineEvents:f,addInbandEvents:g,stop:d,start:e,setConfig:p,reset:q},a(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(50),k=d(j),l=a(54),m=d(l);e.__dashjs_factory_name="EventController",c.default=g.default.getClassFactory(e),b.exports=c.default},{49:49,50:50,51:51,54:54}],108:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){e(),q.on(t.default.FRAGMENT_LOADING_COMPLETED,k,w)}function c(a){var b=y[a];return b||(b=(0,l.default)(m).create({metricsModel:v,fragmentLoader:(0,n.default)(m).create({metricsModel:v,mediaPlayerModel:u,errHandler:s,requestModifier:(0,p.default)(m).getInstance()})}),y[a]=b),b}function d(a){return a&&a.type&&a.type===h.HTTPRequest.INIT_SEGMENT_TYPE}function e(){for(var a in y)y[a].reset();y={}}function f(){q.off(t.default.FRAGMENT_LOADING_COMPLETED,k,this),e()}function i(a,b,c){var d=new j.default;return d.streamId=c,d.mediaInfo=b.mediaInfo,d.segmentType=b.type,d.start=b.startTime,d.duration=b.duration,d.end=d.start+d.duration,d.bytes=a,d.index=b.index,d.quality=b.quality,d.representationId=b.representationId,d}function k(a){if(y[a.request.mediaType]===a.sender){var b=a.request,c=a.response,e=d(b),f=b.mediaInfo.streamInfo;if(a.error&&(a.request.mediaType!==g.default.AUDIO&&a.request.mediaType!==g.default.VIDEO||q.trigger(t.default.SERVICE_LOCATION_BLACKLIST_ADD,{entry:a.request.serviceLocation})),!c||!f)return void o("No "+b.mediaType+" bytes to push or stream is inactive.");var h=i(c,b,f.id);q.trigger(e?t.default.INIT_FRAGMENT_LOADED:t.default.MEDIA_FRAGMENT_LOADED,{chunk:h,fragmentModel:a.sender})}}a=a||{};var m=this.context,o=(0,x.default)(m).getInstance().log,q=(0,r.default)(m).getInstance(),s=a.errHandler,u=a.mediaPlayerModel,v=a.metricsModel,w=void 0,y=void 0;return w={getModel:c,isInitializationRequest:d,reset:f},b(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(230),i=a(212),j=d(i),k=a(141),l=d(k),m=a(90),n=d(m),o=a(204),p=d(o),q=a(50),r=d(q),s=a(54),t=d(s),u=a(51),v=d(u),w=a(49),x=d(w);e.__dashjs_factory_name="FragmentController",c.default=v.default.getClassFactory(e),b.exports=c.default},{100:100,141:141,204:204,212:212,230:230,49:49,50:50,51:51,54:54,90:90}],109:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){z()}function b(a,b){var c=l(a),e=d(a,b),f=[];if(a===g.default.FRAGMENTED_TEXT)return void h(e[0]);c||(c=P.getSavedMediaSettings(a),j(a,c)),e&&0!==e.length&&(c&&e.forEach(function(a){B(c,a)&&f.push(a)}),h(0===f.length?E(e):f.length>1?E(f):f[0]))}function c(a){var b=a?a.type:null,c=a?a.streamInfo.id:null,d=l(b);if(a&&w(b)){K[c]=K[c]||F();for(var f=K[c][b].list.length,g=0;g<f;g++)if(x(K[c][b].list[g],a))return;K[c][b].list.push(a),d&&B(d,a)&&!e(b,a.streamInfo)&&h(a)}}function d(a,b){if(!a||!b)return[];var c=b.id;return K[c]&&K[c][a]?K[c][a].list:[]}function e(a,b){return!a||!b||b&&!K[b.id]?null:K[b.id][a].current}function f(a){var b=a.type,c=a.streamInfo.id;return K[c]&&K[c][b]&&x(K[c][b].current,a)}function h(a){if(a){var b=a.type,c=a.streamInfo,d=c.id,f=e(b,c);if(K[d]&&K[d][b]&&(!f||!x(a,f))){K[d][b].current=a,f&&I.trigger(i.default.CURRENT_TRACK_CHANGED,{oldMediaInfo:f,newMediaInfo:a,switchMode:N[b]});var g=A(a);g&&K[d][b].storeLastSettings&&(g.roles&&(g.role=g.roles[0],delete g.roles),g.accessibility&&(g.accessibility=g.accessibility[0]),g.audioChannelConfiguration&&(g.audioChannelConfiguration=g.audioChannelConfiguration[0]),P.setSavedMediaSettings(b,g))}}}function j(a,b){a&&b&&(L[a]=b)}function l(a){return a?L[a]:null}function m(a,b){if(-1===Q.indexOf(b))return void H("track switch mode is not supported: "+b);N[a]=b}function n(a){return N[a]}function u(a){if(-1===R.indexOf(a))return void H("track selection mode is not supported: "+a);M=a}function v(){return M||t}function w(a){return a===g.default.AUDIO||a===g.default.VIDEO||a===g.default.TEXT||a===g.default.FRAGMENTED_TEXT||a===g.default.IMAGE}function x(a,b){var c=a.id===b.id,d=a.viewpoint===b.viewpoint,e=a.lang===b.lang,f=a.roles.toString()===b.roles.toString(),g=a.accessibility.toString()===b.accessibility.toString(),h=a.audioChannelConfiguration.toString()===b.audioChannelConfiguration.toString();return c&&d&&e&&f&&g&&h}function y(a){a&&(a.errHandler&&(O=a.errHandler),a.domStorage&&(P=a.domStorage))}function z(){K={},D(),C()}function A(a){var b={lang:a.lang,viewpoint:a.viewpoint,roles:a.roles,accessibility:a.accessibility,audioChannelConfiguration:a.audioChannelConfiguration};return b.lang||b.viewpoint||b.role&&b.role.length>0||b.accessibility&&b.accessibility.length>0||b.audioChannelConfiguration&&b.audioChannelConfiguration.length>0?b:null}function B(a,b){var c=!a.lang||a.lang===b.lang,d=!a.viewpoint||a.viewpoint===b.viewpoint,e=!a.role||!!b.roles.filter(function(b){return b===a.role})[0],f=!a.accessibility||!!b.accessibility.filter(function(b){return b===a.accessibility})[0],g=!a.audioChannelConfiguration||!!b.audioChannelConfiguration.filter(function(b){return b===a.audioChannelConfiguration})[0];return c&&d&&e&&f&&g}function C(){N={audio:q,video:p}}function D(){L={audio:null,video:null}}function E(a){var b=v(),c=[],d=function(a){var b=0,c=[],d=void 0;return a.forEach(function(a){d=Math.max.apply(Math,a.bitrateList.map(function(a){return a.bandwidth})),d>b?(b=d,c=[a]):d===b&&c.push(a)}),c},e=function(a){var b=0,c=[],d=void 0;return a.forEach(function(a){d=a.representationCount,d>b?(b=d,c=[a]):d===b&&c.push(a)}),c};switch(b){case r:c=d(a),c.length>1&&(c=e(c));break;case s:c=e(a),c.length>1&&(c=d(a));break;default:H("track selection mode is not supported: "+b)}return c[0]}function F(){return{audio:{list:[],storeLastSettings:!0,current:null},video:{list:[],storeLastSettings:!0,current:null},text:{list:[],storeLastSettings:!0,current:null},fragmentedText:{list:[],storeLastSettings:!0,current:null},image:{list:[],storeLastSettings:!0,current:null}}}var G=this.context,H=(0,o.default)(G).getInstance().log,I=(0,k.default)(G).getInstance(),J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=[q,p],R=[r,s];return J={checkInitialMediaSettingsForType:b,addTrack:c,getTracksFor:d,getCurrentTrackFor:e,isCurrentTrack:f,setTrack:h,setInitialSettings:j,getInitialSettings:l,setSwitchMode:m,getSwitchMode:n,setSelectionModeForInitialTrack:u,getSelectionModeForInitialTrack:v,isMultiTrackSupportedByType:w,isTracksEqual:x,setConfig:y,reset:z},a(),J}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(54),i=d(h),j=a(50),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p="neverReplace",q="alwaysReplace",r="highestBitrate",s="widestRange",t=r;e.__dashjs_factory_name="MediaController";var u=m.default.getSingletonFactory(e);u.TRACK_SWITCH_MODE_NEVER_REPLACE=p,u.TRACK_SWITCH_MODE_ALWAYS_REPLACE=q,u.TRACK_SELECTION_MODE_HIGHEST_BITRATE=r,u.TRACK_SELECTION_MODE_WIDEST_RANGE=s,u.DEFAULT_INIT_TRACK_SELECTION_MODE=t,m.default.updateSingletonFactory(e.__dashjs_factory_name,u),c.default=u,b.exports=c.default},{100:100,49:49,50:50,51:51,54:54}],110:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="WebKitMediaSource"in window;return"MediaSource"in window?new MediaSource:a?new WebKitMediaSource:null}function b(a,b){var c=window.URL.createObjectURL(a);return b.setSource(c),c}function c(a){a.setSource(null)}function d(a,b){return a.duration!=b&&(a.duration=b),a.duration}function e(a,b,c){"function"==typeof a.setLiveSeekableRange&&"function"==typeof a.clearLiveSeekableRange&&"open"===a.readyState&&b>=0&&b<c&&(a.clearLiveSeekableRange(),a.setLiveSeekableRange(b,c))}function f(a){var b=a.sourceBuffers,c=b.length;if("open"===a.readyState){for(var d=0;d<c;d++){if(b[d].updating)return;if(0===b[d].buffered.length)return}a.endOfStream()}}return{createMediaSource:a,attachMediaSource:b,detachMediaSource:c,setDuration:d,setSeekable:e,signalEndOfStream:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="MediaSourceController",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],111:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){A()}function b(a){ra=a,$(),sa=ra.manifestInfo.isDynamic,ma=ra.start,ca.on(o.default.DATA_UPDATE_COMPLETED,I,this),ca.on(o.default.BYTES_APPENDED,Y,this),ca.on(o.default.BUFFER_LEVEL_STATE_CHANGED,Z,this),ca.on(o.default.PERIOD_SWITCH_STARTED,c,this),ua&&(ua=!1,e())}function c(a){!sa&&a.fromStreamInfo&&void 0!==oa[a.fromStreamInfo.id]&&(delete qa[a.fromStreamInfo.id],delete oa[a.fromStreamInfo.id])}function d(){var a=D(!0),b=sa?a-ra.start:0;return parseFloat((a+(ra.duration-b)-n()).toFixed(5))}function e(){ka&&ka.getElement()?ka.play():ua=!0}function f(){return ka?ka.isPaused():null}function h(){ka&&ka.pause()}function j(){return ka?ka.isSeeking():null}function l(a){ka&&(ca.trigger(o.default.PLAYBACK_SEEK_ASKED),ba("Requesting seek to time: "+a),ka.setCurrentTime(a))}function n(){return ka?ka.getTime():null}function p(){return ka?ka.getPlaybackRate():null}function q(){return ka?ka.getPlayedRanges():null}function r(){return ka?ka.getEnded():null}function u(){return sa}function v(){return ea}function w(a){ma=a}function x(){return ma}function y(a,b){var c=ia.getMpd(ha.getValue()),d=void 0,e=void 0;if(d=ta.getUseSuggestedPresentationDelay()&&c.hasOwnProperty(g.default.SUGGESTED_PRESENTATION_DELAY)?c.suggestedPresentationDelay:ta.getLiveDelay()?ta.getLiveDelay():isNaN(a)?2*ra.manifestInfo.minBufferTime:a*ta.getLiveDelayFragmentCount(),b>0){var f=Math.max(b-10,b/2);e=Math.min(d,f)}else e=d;return pa=e,e}function z(){return pa}function A(){la=0,ma=NaN,na=null,ua=!1,oa={},pa=0,qa={},ka&&(ca.off(o.default.DATA_UPDATE_COMPLETED,I,this),ca.off(o.default.BUFFER_LEVEL_STATE_CHANGED,Z,this),ca.off(o.default.BYTES_APPENDED,Y,this),G(),_()),ka=null,ra=null,sa=null}function B(a){a&&(a.streamController&&(ea=a.streamController),a.metricsModel&&(fa=a.metricsModel),a.dashMetrics&&(ga=a.dashMetrics),a.manifestModel&&(ha=a.manifestModel),a.dashManifestModel&&(ia=a.dashManifestModel),a.mediaPlayerModel&&(ta=a.mediaPlayerModel),a.adapter&&(ja=a.adapter),a.videoModel&&(ka=a.videoModel))}function C(){var a=(0,k.default)(aa).getInstance().getURIFragmentData(),b=void 0;if(a){b={};var c=parseInt(a.r,10);c>=0&&ra&&c<ra.manifestInfo.DVRWindowSize&&null===a.t&&(a.t=Math.floor(Date.now()/1e3)-ra.manifestInfo.DVRWindowSize+c),b.fragS=parseInt(a.s,10),b.fragT=parseInt(a.t,10)}return b}function D(a,b){var c=void 0,d=NaN,e=C();if(d=e?a?ra.start:isNaN(e.fragS)?e.fragT:e.fragS:0,sa)isNaN(d)||((c=d-ra.manifestInfo.availableFrom.getTime()/1e3)>ma||c<(isNaN(b)?NaN:b-ra.manifestInfo.DVRWindowSize))&&(c=null),c=c||ma;else if(!isNaN(d)&&d<Math.max(ra.manifestInfo.duration,ra.duration)&&d>=0)c=d;else{var f=oa[ra.id];c=void 0!==f?Math.max(void 0!==f.audio?f.audio:0,void 0!==f.video?f.video:0,ra.start):ra.start}return c}function E(a){var b=fa.getReadOnlyMetricsFor(g.default.VIDEO)||fa.getReadOnlyMetricsFor(g.default.AUDIO),c=ga.getCurrentDVRInfo(b),d=c?c.range:null,e=void 0;if(!d)return NaN;if(a>d.end)e=Math.max(d.end-2*ra.manifestInfo.minBufferTime,d.start);else{if(!(a+.25<d.start))return a;e=d.start}return e}function F(){if(null===na){var a=function(){W()};na=setInterval(a,ta.getWallclockTimeUpdateInterval())}}function G(){clearInterval(na),na=null}function H(){if(!f()&&sa&&0!==ka.getReadyState()){var a=n(),b=E(a);!isNaN(b)&&b!==a&&l(b)}}function I(a){if(!a.error){var b=ja.convertDataToRepresentationInfo(a.currentRepresentation),c=b.mediaInfo.streamInfo;ra.id===c.id&&(ra=c,H())}}function J(){ca.trigger(o.default.CAN_PLAY)}function K(){ba("Native video element event: play"),H(),F(),ca.trigger(o.default.PLAYBACK_STARTED,{startTime:n()})}function L(){ba("Native video element event: playing"),ca.trigger(o.default.PLAYBACK_PLAYING,{playingTime:n()})}function M(){ba("Native video element event: pause"),ca.trigger(o.default.PLAYBACK_PAUSED,{ended:r()})}function N(){var a=n();ba("Seeking to: "+a),F(),ca.trigger(o.default.PLAYBACK_SEEKING,{seekTime:a})}function O(){ba("Native video element event: seeked"),ca.trigger(o.default.PLAYBACK_SEEKED)}function P(){var a=n();la=a,ca.trigger(o.default.PLAYBACK_TIME_UPDATED,{timeToEnd:d(),time:a})}function Q(){var a=Date.now();(!va||a>va+t)&&(va=a,P())}function R(){ca.trigger(o.default.PLAYBACK_PROGRESS)}function S(){var a=p();ba("Native video element event: ratechange: ",a),ca.trigger(o.default.PLAYBACK_RATE_CHANGED,{playbackRate:a})}function T(){ba("Native video element event: loadedmetadata"),ca.trigger(o.default.PLAYBACK_METADATA_LOADED),F()}function U(){ba("Native video element event: ended"),h(),G(),ca.trigger(o.default.PLAYBACK_ENDED)}function V(a){var b=a.target||a.srcElement;ca.trigger(o.default.PLAYBACK_ERROR,{error:b.error})}function W(){ca.trigger(o.default.WALLCLOCK_TIME_UPDATED,{isDynamic:sa,time:new Date}),u()&&f()&&Q()}function X(a,b){if(b&&b.length>0)for(var c=0,d=b.length;c<d;c++)if(a>=b.start(c)&&a<b.end(c))return!0;return!1}function Y(a){var b=void 0,c=void 0,d=a.bufferedRanges;if(d&&d.length&&(!oa[ra.id]||!0!==oa[ra.id].started)){var e=a.sender.getType();void 0===qa[ra.id]&&(qa[ra.id]=[]),qa[ra.id][e]=d,void 0===oa[ra.id]&&(oa[ra.id]=[],oa[ra.id].started=!1),void 0===oa[ra.id][e]&&(oa[ra.id][e]=Math.max(d.start(0),ra.start));var f=ea.isVideoTrackPresent(),g=ea.isAudioTrackPresent();c=D(!1),g&&f?isNaN(oa[ra.id].audio)||isNaN(oa[ra.id].video)||(oa[ra.id].audio<oa[ra.id].video?(b=oa[ra.id].video>c?oa[ra.id].video:c,d=qa[ra.id].audio):(b=oa[ra.id].audio>c?oa[ra.id].audio:c,d=qa[ra.id].video),X(b,d)&&(j()||l(b),oa[ra.id].started=!0)):oa[ra.id][e]&&(b=oa[ra.id][e]>c?oa[ra.id][e]:c,j()||l(b),oa[ra.id].started=!0)}}function Z(a){a.streamInfo.id===ra.id&&ka.setStallState(a.mediaType,a.state===i.default.BUFFER_EMPTY)}function $(){ka.addEventListener("canplay",J),ka.addEventListener("play",K),ka.addEventListener("playing",L),ka.addEventListener("pause",M),ka.addEventListener("error",V),ka.addEventListener("seeking",N),ka.addEventListener("seeked",O),ka.addEventListener("timeupdate",P),ka.addEventListener("progress",R),ka.addEventListener("ratechange",S),ka.addEventListener("loadedmetadata",T),ka.addEventListener("ended",U)}function _(){ka.removeEventListener("canplay",J),ka.removeEventListener("play",K),ka.removeEventListener("playing",L),ka.removeEventListener("pause",M),ka.removeEventListener("error",V),ka.removeEventListener("seeking",N),ka.removeEventListener("seeked",O),ka.removeEventListener("timeupdate",P),ka.removeEventListener("progress",R),ka.removeEventListener("ratechange",S),ka.removeEventListener("loadedmetadata",T),ka.removeEventListener("ended",U)}var aa=this.context,ba=(0,s.default)(aa).getInstance().log,ca=(0,m.default)(aa).getInstance(),da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0;return da={initialize:b,setConfig:B,getStartTimeFromUriParameters:C,getStreamStartTime:D,getTimeToStreamEnd:d,getTime:n,getPlaybackRate:p,getPlayedRanges:q,getEnded:r,getIsDynamic:u,getStreamController:v,setLiveStartTime:w,getLiveStartTime:x,computeLiveDelay:y,getLiveDelay:z,play:e,isPaused:f,pause:h,isSeeking:j,seek:l,reset:A},a(),da}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(106),i=d(h),j=a(145),k=d(j),l=a(50),m=d(l),n=a(54),o=d(n),p=a(51),q=d(p),r=a(49),s=d(r),t=500;e.__dashjs_factory_name="PlaybackController",c.default=q.default.getSingletonFactory(e),b.exports=c.default},{100:100,106:106,145:145,49:49,50:50,51:51,54:54}],112:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ra=(0,z.default)(ba).getInstance().log.bind(qa),_()}function c(){sa=pa.getFragmentModel(),Fa=ia.getScheduleWhilePaused(),Da=(0,n.default)(ba).create({abrController:ja,dashMetrics:fa,metricsModel:da,mediaPlayerModel:ia,textController:ma}),Ea=(0,p.default)(ba).create({adapter:ea,sourceBufferController:na,textController:ma}),ga.getIsTextTrack(oa)&&ca.on(v.default.TIMED_TEXT_REQUESTED,N,this),ca.on(v.default.QUALITY_CHANGE_REQUESTED,x,this),ca.on(v.default.DATA_UPDATE_STARTED,I,this),ca.on(v.default.DATA_UPDATE_COMPLETED,A,this),ca.on(v.default.FRAGMENT_LOADING_COMPLETED,E,this),ca.on(v.default.STREAM_COMPLETED,D,this),ca.on(v.default.STREAM_INITIALIZED,B,this),ca.on(v.default.BUFFER_LEVEL_STATE_CHANGED,K,this),ca.on(v.default.BUFFER_CLEARED,J,this),ca.on(v.default.BYTES_APPENDED,G,this),ca.on(v.default.INIT_REQUESTED,q,this),ca.on(v.default.QUOTA_EXCEEDED,L,this),ca.on(v.default.PLAYBACK_SEEKING,P,this),ca.on(v.default.PLAYBACK_STARTED,O,this),ca.on(v.default.PLAYBACK_RATE_CHANGED,Q,this),ca.on(v.default.PLAYBACK_TIME_UPDATED,F,this),ca.on(v.default.URL_RESOLUTION_FAILED,M,this),ca.on(v.default.FRAGMENT_LOADING_ABANDONED,H,this)}function d(){return!1===va}function e(){ta&&!pa.isBufferingCompleted()&&($(),va=!1,ua&&(ua=!1),o(0),ra("Schedule controller starting for "+oa))}function f(){va||(va=!0,clearTimeout(Ba),ra("Schedule controller stopping for "+oa))}function i(a,b){Ha[b]=Ha[b]||{};var c=ja.getTopQualityIndexFor(a,b);return Ha[b][a]!=c&&(ra("Top quality "+a+" index has changed from "+Ha[b][a]+" to "+c),Ha[b][a]=c,!0)}function k(){if(va||za||!pa.getBufferController()||ka.isPaused()&&!Fa)return void ra("ScheduleController "+oa+" - schedule stop!");m();var a=Ja.length>0,b=pa.getStreamInfo();if(Ka||a||i(ta.mediaInfo.type,b.id)||Da.execute(pa,oa,la.isVideoTrackPresent())){var c=function(){ra("ScheduleController - "+oa+" - getNextFragment");var a=pa.getFragmentController();if(Ka)ra("ScheduleController - "+oa+" - switch track has been asked, get init request for "+oa+" with representationid = "+ta.id),pa.switchInitData(ta.id),Ia=ta.quality,Ka=!1;else if(ta.quality!==Ia)ra("ScheduleController - "+oa+" - quality has changed, get init request for representationid = "+ta.id),Ia=ta.quality,pa.switchInitData(ta.id);else{var c=Ja.shift();if(a.isInitializationRequest(c))pa.switchInitData(c.representationId);else{var d=void 0;pa.getBufferController().getIsPruningInProgress()||!(d=Ea.execute(pa,c))&&b.manifestInfo&&b.manifestInfo.isDynamic&&ra("getNextFragment - "+oa+" - Playing at the bleeding live edge and frag is not available yet"),d?(ra("ScheduleController - "+oa+" - getNextFragment - request is "+d.url),sa.executeRequest(d)):(za=!1,o(500))}}};za=!0,a||Ka||ja.checkPlaybackQuality(oa),c()}else o(500)}function m(){var a=1.5*ta.fragmentDuration,b=sa.getRequests({state:r.default.FRAGMENT_MODEL_EXECUTED,time:ka.getTime()+a,threshold:0})[0];if(b&&-1===Ja.indexOf(b)&&!ga.getIsTextTrack(oa)){var c=ia.getFastSwitchEnabled(),d=pa.getBufferLevel(),e=ja.getAbandonmentStateFor(oa);c&&b.quality<ta.quality&&d>=a&&e!==j.default.ABANDON_LOAD?(w(b),ra("Reloading outdated fragment at index: ",b.index)):b.quality>ta.quality&&S(ka.getTime()+pa.getBufferLevel())}}function o(a){clearTimeout(Ba),Ba=setTimeout(k,a)}function q(a){a.sender&&a.sender.getStreamProcessor()===pa&&s(ta.quality)}function s(a){var b=ea.getInitRequest(pa,a);b&&(za=!0,sa.executeRequest(b))}function u(){Ka=!0}function w(a){Ja.push(a)}function x(a){if(oa===a.mediaType&&pa.getStreamInfo().id===a.streamInfo.id){if(null===(ta=pa.getRepresentationInfoForQuality(a.newQuality))||void 0===ta)throw new Error("Unexpected error! - currentRepresentationInfo is null or undefined");Z(new Date,h.PlayListTrace.REPRESENTATION_SWITCH_STOP_REASON),$()}}function y(a){if(ka&&sa){var b=sa.getRequests({state:r.default.FRAGMENT_MODEL_EXECUTED,time:ka.getTime(),threshold:0})[0] -;b&&ka.getTime()>=b.startTime&&(b.quality===Ga.quality&&b.adaptationIndex===Ga.adaptationIndex||!a||ca.trigger(v.default.QUALITY_CHANGE_RENDERED,{mediaType:oa,oldQuality:Ga.quality,newQuality:b.quality}),Ga={quality:b.quality,adaptationIndex:b.adaptationIndex})}}function A(a){a.error||a.sender.getStreamProcessor()!==pa||(ta=ea.convertDataToRepresentationInfo(a.currentRepresentation))}function B(a){a.error||pa.getStreamInfo().id!==a.streamInfo.id||(ta=pa.getCurrentRepresentationInfo(),ua&&(ka.getIsDynamic()?(ha.setTimeSyncCompleted(!0),C()):(Ca=ka.getStreamStartTime(!1),pa.getBufferController().setSeekStartTime(Ca))),va&&e())}function C(){var a=pa.getLiveEdgeFinder();if(a){var b=a.getLiveEdge(),c=ta.mediaInfo.streamInfo.manifestInfo.DVRWindowSize/2,d=b-ka.computeLiveDelay(ta.fragmentDuration,c),e=ea.getFragmentRequestForTime(pa,ta,d,{ignoreIsFinished:!0});ka.setLiveStartTime(e.startTime),Ca=ka.getStreamStartTime(!1,b),Ca>ta.mediaInfo.streamInfo.start+ta.mediaInfo.streamInfo.duration&&ka.seek(Ca);var f=fa.getCurrentManifestUpdate(da.getMetricsFor(g.default.STREAM));da.updateManifestUpdateInfo(f,{currentTime:Ca,presentationStartTime:b,latency:b-Ca,clientTimeOffset:ha.getClientTimeOffset()})}}function D(a){a.fragmentModel===sa&&(f(),za=!1,ra("[ScheduleController] Stream is complete"))}function E(a){a.sender===sa&&(ra("[ScheduleController] onFragmentLoadingCompleted for",oa),ga.getIsTextTrack(oa)&&(za=!1),a.error&&a.request.serviceLocation&&!va&&(w(a.request),za=!1,o(0)))}function F(){y(!0)}function G(a){a.sender.getStreamProcessor()===pa&&(za=!1,o(0))}function H(a){a.streamProcessor===pa&&(ra("[ScheduleController]["+oa+"] Request "+a.request.url+" has been aborted"),w(a.request),za=!1,o(0))}function I(a){a.sender.getStreamProcessor()===pa&&f()}function J(a){a.sender.getStreamProcessor()===pa&&(pa.getFragmentModel().syncExecutedRequestsWithBufferedRange(pa.getBufferController().getBuffer().buffered,pa.getStreamInfo().duration),a.hasEnoughSpaceToAppend&&va&&e())}function K(a){a.sender.getStreamProcessor()!==pa||a.state!==l.default.BUFFER_EMPTY||ka.isSeeking()||(ra("Buffer is empty! Stalling!"),Z(new Date,h.PlayListTrace.REBUFFERING_REASON))}function L(a){a.sender.getStreamProcessor()===pa&&(f(),za=!1)}function M(){sa.abortRequests(),f()}function N(a){a.sender.getStreamProcessor()===pa&&s(a.index)}function O(){!va&&Fa||e()}function P(a){Ca=a.seekTime,T(0),va&&e();var b=fa.getCurrentManifestUpdate(da.getMetricsFor(g.default.STREAM)),c=ta.DVRWindow&&ka?ta.DVRWindow.end-ka.getTime():NaN;da.updateManifestUpdateInfo(b,{latency:c}),za||o(0)}function Q(a){xa&&(xa.playbackspeed=a.playbackRate.toString())}function R(){return Ca}function S(a){Ca=a}function T(a){Aa=a}function U(){return Aa}function V(){return Da.getBufferTarget(pa,oa,la.isVideoTrackPresent())}function W(){return oa}function X(a){wa=a}function Y(a,b){Z(a,b),wa=null}function Z(a,b){if(wa&&!1===ya){var c=xa.start,d=a.getTime()-c.getTime();xa.duration=d,xa.stopreason=b,wa.trace.push(xa),ya=!0}}function $(){wa&&!0===ya&&ta&&(ya=!1,xa=new h.PlayListTrace,xa.representationid=ta.id,xa.start=new Date,xa.mstart=1e3*ka.getTime(),xa.playbackspeed=ka.getPlaybackRate().toString())}function _(){za=!1,Aa=0,Ca=NaN,wa=null,xa=null,ya=!0,ua=!0,Ia=NaN,Ga={quality:NaN,adaptationIndex:NaN},Ha={},Ja=[],va=!0,Ka=!0}function aa(){ca.off(v.default.DATA_UPDATE_STARTED,I,this),ca.off(v.default.DATA_UPDATE_COMPLETED,A,this),ca.off(v.default.BUFFER_LEVEL_STATE_CHANGED,K,this),ca.off(v.default.QUALITY_CHANGE_REQUESTED,x,this),ca.off(v.default.FRAGMENT_LOADING_COMPLETED,E,this),ca.off(v.default.STREAM_COMPLETED,D,this),ca.off(v.default.STREAM_INITIALIZED,B,this),ca.off(v.default.QUOTA_EXCEEDED,L,this),ca.off(v.default.BYTES_APPENDED,G,this),ca.off(v.default.BUFFER_CLEARED,J,this),ca.off(v.default.INIT_REQUESTED,q,this),ca.off(v.default.PLAYBACK_RATE_CHANGED,Q,this),ca.off(v.default.PLAYBACK_SEEKING,P,this),ca.off(v.default.PLAYBACK_STARTED,O,this),ca.off(v.default.PLAYBACK_TIME_UPDATED,F,this),ca.off(v.default.URL_RESOLUTION_FAILED,M,this),ca.off(v.default.FRAGMENT_LOADING_ABANDONED,H,this),ga.getIsTextTrack(oa)&&ca.off(v.default.TIMED_TEXT_REQUESTED,N,this),f(),y(!1),_()}a=a||{};var ba=this.context,ca=(0,t.default)(ba).getInstance(),da=a.metricsModel,ea=a.adapter,fa=a.dashMetrics,ga=a.dashManifestModel,ha=a.timelineConverter,ia=a.mediaPlayerModel,ja=a.abrController,ka=a.playbackController,la=a.streamController,ma=a.textController,na=a.sourceBufferController,oa=a.type,pa=a.streamProcessor,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0;return qa={initialize:c,getType:W,getSeekTarget:R,setSeekTarget:S,setTimeToLoadDelay:T,getTimeToLoadDelay:U,replaceRequest:w,switchTrackAsked:u,isStarted:d,start:e,stop:f,reset:aa,setPlayList:X,getBufferTarget:V,finalisePlayList:Y},b(),qa}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(232),i=a(103),j=d(i),k=a(106),l=d(k),m=a(183),n=d(m),o=a(184),p=d(o),q=a(141),r=d(q),s=a(50),t=d(s),u=a(54),v=d(u),w=a(51),x=d(w),y=a(49),z=d(y);e.__dashjs_factory_name="ScheduleController",c.default=x.default.getClassFactory(e),b.exports=c.default},{100:100,103:103,106:106,141:141,183:183,184:184,232:232,49:49,50:50,51:51,54:54}],113:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=b.codec,d=null;try{if(c.match(/application\/mp4;\s*codecs="(stpp|wvtt).*"/i))throw new Error("not really supported");d=a.addSourceBuffer(c)}catch(e){if(!b.isText&&-1===c.indexOf('codecs="stpp')&&-1===c.indexOf('codecs="wvtt'))throw e;d=v.getTextSourceBuffer()}return d}function c(a,b){try{a.removeSourceBuffer(b)}catch(c){}}function d(a,b,c){var d=null,e=0,f=0,g=null,h=null,i=0,j=void 0,k=void 0,l=c||.15;try{d=a.buffered}catch(m){return null}if(null!==d&&void 0!==d){for(k=0,j=d.length;k<j;k++)if(e=d.start(k),f=d.end(k),null===g)i=Math.abs(e-b),b>=e&&b<f?(g=e,h=f):i<=l&&(g=e,h=f);else{if(!((i=e-h)<=l))break;h=f}if(null!==g)return{start:g,end:h}}return null}function e(a){try{return a.buffered}catch(b){return null}}function f(a){var b=e(a),c=0,d=void 0,f=void 0;if(!b)return c;for(f=0,d=b.length;f<d;f++)c+=b.end(f)-b.start(f);return c}function h(a,b,c){var e=void 0;return e=d(a,b,c),null===e?0:e.end-b}function j(a,b){if(!b)return null;var c=e(b),d=void 0,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0;if(!c)return null;for(var n=0,o=c.length;n<o;n++){if(l=a.length>n,i=l?{start:a.start(n),end:a.end(n)}:null,d=c.start(n),f=c.end(n),!i)return m={start:d,end:f};if(g=i.start===d,h=i.end===f,!g||!h){if(g)m={start:i.end,end:f};else{if(!h)return m={start:d,end:f};m={start:d,end:i.start}}return j=a.length>n+1?{start:a.start(n+1),end:a.end(n+1)}:null,k=n+1<o?{start:c.start(n+1),end:c.end(n+1)}:null,!j||k&&k.start===j.start&&k.end===j.end||(m.end=j.start),m}}return null}function l(a,b){if(!a||!b)return void u.trigger(k.default.SOURCEBUFFER_APPEND_COMPLETED,{buffer:null,bytes:null,error:new g.default(o,q,null)});var c=b.bytes,d="append"in a?"append":"appendBuffer"in a?"appendBuffer":null,e="Object"===Object.prototype.toString.call(a).slice(8,-1);d&&s(a,function(){try{e?a[d](c,b):a[d](c),s(a,function(){u.trigger(k.default.SOURCEBUFFER_APPEND_COMPLETED,{buffer:a,bytes:c})})}catch(f){u.trigger(k.default.SOURCEBUFFER_APPEND_COMPLETED,{buffer:a,bytes:c,error:new g.default(f.code,f.message,null)})}})}function m(a,b,c,d){if(!a)return void u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c,error:new g.default(p,r,null)});s(a,function(){try{b>=0&&c>b&&"ended"!==d.readyState&&a.remove(b,c),s(a,function(){u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c})})}catch(e){u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c,error:new g.default(e.code,e.message,null)})}})}function n(a,b){try{"open"===a.readyState?b.abort():b.resetEmbedded&&"ended"===a.readyState&&b.abort()}catch(c){}}function s(a,b){var c=void 0,d=50,e=function(){a.updating||(clearInterval(c),b())},f=function c(){a.updating||(a.removeEventListener("updateend",c,!1),b())};if(!a.updating)return void b();if("function"==typeof a.addEventListener)try{a.addEventListener("updateend",f,!1)}catch(g){c=setInterval(e,d)}else c=setInterval(e,d)}var t=this.context,u=(0,i.default)(t).getInstance(),v=a.textController;return{append:l,remove:m,abort:n,createSourceBuffer:b,removeSourceBuffer:c,getBufferRange:d,getAllRanges:e,getTotalBufferedTime:f,getBufferLength:h,getRangeDifference:j}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(211),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=22,o=1,p=2,q="buffer or chunk is not defined",r="buffer is not defined";e.__dashjs_factory_name="SourceBufferController";var s=m.default.getSingletonFactory(e);s.QUOTA_EXCEEDED_ERROR_CODE=n,m.default.updateSingletonFactory(e.__dashjs_factory_name,s),c.default=s,b.exports=c.default},{211:211,50:50,51:51,54:54}],114:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){na=(0,F.default)(aa).getInstance(),oa=(0,H.default)(aa).getInstance(),ma=(0,J.default)(aa).getInstance(),ua=(0,z.default)(aa).getInstance(),va=(0,B.default)(aa).getInstance(),Z()}function b(a,b){T(),Ca=a,Ba=b,xa.initialize(),fa=(0,m.default)(aa).create(),fa.setConfig({manifestModel:ha,dashManifestModel:ia,mediaPlayerModel:Ja,manifestLoader:ga}),fa.initialize(),oa.setConfig({dashManifestModel:ia}),ca.on(q.default.TIME_SYNCHRONIZATION_COMPLETED,I,this),ca.on(q.default.PLAYBACK_SEEKING,d,this),ca.on(q.default.PLAYBACK_TIME_UPDATED,c,this),ca.on(q.default.PLAYBACK_ENDED,t,this),ca.on(q.default.PLAYBACK_ERROR,Q,this),ca.on(q.default.PLAYBACK_STARTED,e,this),ca.on(q.default.PLAYBACK_PAUSED,f,this),ca.on(q.default.MANIFEST_UPDATED,K,this),ca.on(q.default.STREAM_BUFFERING_COMPLETED,l,this),ca.on(q.default.MANIFEST_VALIDITY_CHANGED,X,this),ca.on(D.default.METRIC_ADDED,_,this)}function c(){if(M()){var a=Ha.getPlaybackQuality();a&&ka.addDroppedFrames(g.default.VIDEO,a)}}function d(a){var b=n(a.seekTime);Qa&&(h(),Pa=!1),b&&b!==za?(O(v.PlayListTrace.END_OF_PERIOD_STOP_REASON),w(za,b,a.seekTime)):O(v.PlayListTrace.USER_REQUEST_STOP_REASON),P(v.PlayList.SEEK_START_REASON)}function e(){ba("[StreamController][onPlaybackStarted]"),La?(La=!1,P(v.PlayList.INITIAL_PLAYOUT_START_REASON)):Ka&&(Ka=!1,P(v.PlayList.RESUME_FROM_PAUSE_START_REASON),j())}function f(a){ba("[StreamController][onPlaybackPaused]"),a.ended||(Ka=!0,O(v.PlayListTrace.USER_REQUEST_STOP_REASON),j())}function h(){ba("[StreamController][toggleEndPeriodTimer] stop end period timer."),clearTimeout(Qa),Qa=void 0}function j(){if(Pa)if(Qa)h();else{var a=Ia.getTimeToStreamEnd(),b=a>0?1e3*a:0;ba("[StreamController][toggleEndPeriodTimer] start-up of timer to notify PLAYBACK_ENDED event. It will be triggered in "+b+" milliseconds"),Qa=setTimeout(function(){ca.trigger(q.default.PLAYBACK_ENDED)},b)}}function l(){var a=R().isLast;Ga&&a?(ba("[StreamController][onStreamBufferingCompleted] calls signalEndOfStream of mediaSourceController."),ma.signalEndOfStream(Ga)):Ga&&void 0===Qa&&(ba("[StreamController][onStreamBufferingCompleted] end of period detected"),Pa=!0,!1===Ka&&j())}function n(a){var b=0,c=null,d=ya.length;d>0&&(b+=ya[0].getStartTime());for(var e=0;e<d;e++)if(c=ya[e],b=parseFloat((b+c.getDuration()).toFixed(5)),a<b)return c;return null}function p(a,b){for(var c=null,d=0,e=0,f=null,g=ya.length,h=0;h<g;h++){if(c=ya[h],e=c.getStartTime(),f=c.getDuration(),Number.isFinite(e)&&(d=e),c.getId()===b)return a-d;Number.isFinite(f)&&(d+=f)}return null}function r(){return za?za.getProcessors():[]}function t(){var a=u();a?(Oa=void 0,Na=void 0,w(za,a,NaN)):ba("StreamController no next stream found"),O(a?v.PlayListTrace.END_OF_PERIOD_STOP_REASON:v.PlayListTrace.END_OF_CONTENT_STOP_REASON),Qa=void 0,Pa=!1}function u(){if(za){var a=function(){var a=za.getStreamInfo().start,b=za.getStreamInfo().duration;return{v:ya.filter(function(c){return c.getStreamInfo().start===parseFloat((a+b).toFixed(5))})[0]}}();if("object"==typeof a)return a.v}}function w(a,b,c){!Da&&b&&a!==b&&(Da=!0,ca.trigger(q.default.PERIOD_SWITCH_STARTED,{fromStreamInfo:a?a.getStreamInfo():null,toStreamInfo:b.getStreamInfo()}),a&&(a.stopEventController(),a.deactivate()),za=b,Ia.initialize(za.getStreamInfo()),y(c,a))}function y(a,b){function c(){ba("MediaSource is open!"),window.URL.revokeObjectURL(d),Ga.removeEventListener("sourceopen",c),Ga.removeEventListener("webkitsourceopen",c),C(),A(a),b||ca.trigger(q.default.SOURCE_INITIALIZED)}var d=void 0;Ga?ma.detachMediaSource(Ha):Ga=ma.createMediaSource(),Ga.addEventListener("sourceopen",c,!1),Ga.addEventListener("webkitsourceopen",c,!1),d=ma.attachMediaSource(Ga,Ha),ba("MediaSource attached to element. Waiting on open...")}function A(a){za.activate(Ga),Oa=N(g.default.AUDIO),Na=N(g.default.VIDEO),La||(isNaN(a)?function(){var a=Ia.getStreamStartTime(!0);za.getProcessors().forEach(function(b){ja.setIndexHandlerTime(b,a)})}():Ia.seek(a)),za.startEventController(),!Ca&&La||Ia.play(),Da=!1,ca.trigger(q.default.PERIOD_SWITCH_COMPLETED,{toStreamInfo:za.getStreamInfo()})}function C(){var a=za.getStreamInfo().manifestInfo.duration,b=ma.setDuration(Ga,a);ba("Duration successfully set to: "+b)}function E(a){for(var b=0,c=ya.length;b<c;b++)if(ya[b].getId()===a.id)return ya[b];return null}function G(){try{var a=ja.getStreamsInfo();if(0===a.length)throw new Error("There are no streams");var b=la.getCurrentManifestUpdate(ka.getMetricsFor(g.default.STREAM));ka.updateManifestUpdateInfo(b,{currentTime:Ia.getTime(),buffered:Ha.getBufferRange(),presentationStartTime:a[0].start,clientTimeOffset:xa.getClientTimeOffset()});for(var c=0,d=a.length;c<d;c++){var e=a[c],f=E(e);f?f.updateData(e):(f=(0,k.default)(aa).create({manifestModel:ha,dashManifestModel:ia,mediaPlayerModel:Ja,metricsModel:ka,dashMetrics:la,manifestUpdater:fa,adapter:ja,timelineConverter:xa,capabilities:ea,errHandler:wa,baseURLController:oa,domStorage:pa,abrController:qa,playbackController:Ia,mediaController:ra,textController:sa,sourceBufferController:ta,videoModel:Ha,streamController:da}),ya.push(f),f.initialize(e,Aa)),ka.addManifestUpdateStreamInfo(b,e.id,e.index,e.start,e.duration)}if(!za){var h=Ia.getStartTimeFromUriParameters(),i=null;if(h){i=n(isNaN(h.fragS)?h.fragT:h.fragS)}w(null,null!==i?i:ya[0],NaN)}ca.trigger(q.default.STREAMS_COMPOSED)}catch(j){wa.manifestError(j.message,"nostreamscomposed",ha.getValue()),Fa=!0,$()}}function I(){var a=ha.getValue();Aa&&(ca.trigger(q.default.PROTECTION_CREATED,{controller:Aa,manifest:a}),Aa.setMediaElement(Ha.getElement()),Ba&&Aa.setProtectionData(Ba)),G()}function K(a){a.error?(Fa=!0,$()):function(){var b=a.manifest;ja.updatePeriods(b);var c=ja.getStreamsInfo(b)[0],d=ja.getMediaInfoForType(c,g.default.VIDEO)||ja.getMediaInfoForType(c,g.default.AUDIO),e=void 0,f=void 0;d&&(e=ja.getDataForMedia(d),(f=ia.getRepresentationsForAdaptation(e)[0].useCalculatedLiveEdgeTime)&&(ba("SegmentTimeline detected using calculated Live Edge Time"),Ja.setUseManifestDateHeaderTimeSource(!1)));var h=ia.getUTCTimingSources(a.manifest),i=!ia.getIsDynamic(b)||f?h:h.concat(Ja.getUTCTimingSources()),j=va.isHTTPS(a.manifest.url);i.forEach(function(a){a.value.replace(/.*?:\/\//g,"")===s.default.DEFAULT_UTC_TIMING_SOURCE.value.replace(/.*?:\/\//g,"")&&(a.value=a.value.replace(j?new RegExp(/^(http:)?\/\//i):new RegExp(/^(https:)?\/\//i),j?"https://":"http://"),ba("Matching default timing source protocol to manifest protocol: ",a.value))}),oa.initialize(b),na.setConfig({metricsModel:ka,dashMetrics:la,baseURLController:oa}),na.initialize(i,Ja.getUseManifestDateHeaderTimeSource())}()}function L(){return Oa}function M(){return Na}function N(a){var b=!1;return za&&za.getProcessors().forEach(function(c){c.getMediaInfo().type===a&&(b=!0)}),b}function O(a,b){b=b||new Date,Ma&&(za&&za.getProcessors().forEach(function(c){var d=c.getScheduleController();d&&d.finalisePlayList(b,a)}),ka.addPlayList(Ma),Ma=null)}function P(a){Ma=new v.PlayList,Ma.start=new Date,Ma.mstart=1e3*Ia.getTime(),Ma.starttype=a,za&&za.getProcessors().forEach(function(a){var b=a.getScheduleController();b&&b.setPlayList(Ma)})}function Q(a){if(a.error){var b="";switch(a.error.code){case 1:b="MEDIA_ERR_ABORTED";break;case 2:b="MEDIA_ERR_NETWORK";break;case 3:b="MEDIA_ERR_DECODE";break;case 4:b="MEDIA_ERR_SRC_NOT_SUPPORTED";break;case 5:b="MEDIA_ERR_ENCRYPTED";break;default:b="UNKNOWN"}Ea=!0,a.error.message&&(b+=" ("+a.error.message+")"),a.error.msExtendedCode&&(b+=" (0x"+(a.error.msExtendedCode>>>0).toString(16).toUpperCase()+")"),ba("Video Element Error: "+b),a.error&&ba(a.error),wa.mediaSourceError(b),$()}}function R(){return za?za.getStreamInfo():null}function S(a){return ya.filter(function(b){return b.getId()===a})[0]}function T(){if(!(ga&&ga.hasOwnProperty("load")&&xa&&xa.hasOwnProperty("initialize")&&xa.hasOwnProperty("reset")&&xa.hasOwnProperty("getClientTimeOffset")))throw new Error("setConfig function has to be called previously")}function U(){if(!fa||!fa.hasOwnProperty("setManifest"))throw new Error("initialize function has to be called previously")}function V(a){T(),ga.load(a)}function W(a){U(),fa.setManifest(a)}function X(a){isNaN(a.newDuration)||C(a.newDuration)}function Y(a){a&&(a.capabilities&&(ea=a.capabilities),a.manifestLoader&&(ga=a.manifestLoader),a.manifestModel&&(ha=a.manifestModel),a.dashManifestModel&&(ia=a.dashManifestModel),a.mediaPlayerModel&&(Ja=a.mediaPlayerModel),a.protectionController&&(Aa=a.protectionController),a.adapter&&(ja=a.adapter),a.metricsModel&&(ka=a.metricsModel),a.dashMetrics&&(la=a.dashMetrics),a.errHandler&&(wa=a.errHandler),a.timelineConverter&&(xa=a.timelineConverter),a.videoModel&&(Ha=a.videoModel),a.playbackController&&(Ia=a.playbackController),a.domStorage&&(pa=a.domStorage),a.abrController&&(qa=a.abrController),a.mediaController&&(ra=a.mediaController),a.textController&&(sa=a.textController),a.sourceBufferController&&(ta=a.sourceBufferController))}function Z(){ya=[],Aa=null,Da=!1,za=null,Ea=!1,Fa=!1,Na=void 0,Oa=void 0,La=!0,Ka=!1,Ca=!0,Ma=null,Qa=void 0,Pa=!1}function $(){T(),na.reset(),O(Ea||Fa?v.PlayListTrace.FAILURE_STOP_REASON:v.PlayListTrace.USER_REQUEST_STOP_REASON);for(var a=0,b=ya?ya.length:0;a<b;a++){ya[a].reset(Ea)}ca.off(q.default.PLAYBACK_TIME_UPDATED,c,this),ca.off(q.default.PLAYBACK_SEEKING,d,this),ca.off(q.default.PLAYBACK_ERROR,Q,this),ca.off(q.default.PLAYBACK_STARTED,e,this),ca.off(q.default.PLAYBACK_PAUSED,f,this),ca.off(q.default.PLAYBACK_ENDED,t,this),ca.off(q.default.MANIFEST_UPDATED,K,this),ca.off(q.default.STREAM_BUFFERING_COMPLETED,l,this),ca.off(D.default.METRIC_ADDED,_,this),ca.off(q.default.MANIFEST_VALIDITY_CHANGED,X,this),oa.reset(),fa.reset(),ka.clearAllCurrentMetrics(),ha.setValue(null),ga.reset(),xa.reset(),ua.reset(),Ga&&(ma.detachMediaSource(Ha),Ga=null),Ha=null,Aa&&(Aa.setMediaElement(null),Aa=null,Ba=null,ha.getValue()&&ca.trigger(q.default.PROTECTION_DESTROYED,{data:ha.getValue().url})),ca.trigger(q.default.STREAM_TEARDOWN_COMPLETE),Z()}function _(a){a.metric===i.default.DVR_INFO&&a.mediaType===g.default.AUDIO&&ma.setSeekable(Ga,a.value.range.start,a.value.range.end)}var aa=this.context,ba=(0,x.default)(aa).getInstance().log,ca=(0,o.default)(aa).getInstance(),da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0;return da={initialize:b,getActiveStreamInfo:R,isVideoTrackPresent:M,isAudioTrackPresent:L,getStreamById:S,getStreamForTime:n,getTimeRelativeToStreamId:p,load:V,loadWithManifest:W,getActiveStreamProcessors:r,setConfig:Y,reset:$},a(),da}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(101),i=d(h),j=a(96),k=d(j),l=a(92),m=d(l),n=a(50),o=d(n),p=a(54),q=d(p),r=a(143),s=d(r),t=a(51),u=d(t),v=a(232),w=a(49),x=d(w),y=a(200),z=d(y),A=a(206),B=d(A),C=a(94),D=d(C),E=a(115),F=d(E),G=a(104),H=d(G),I=a(110),J=d(I);e.__dashjs_factory_name="StreamController",c.default=u.default.getSingletonFactory(e),b.exports=c.default},{100:100,101:101,104:104,110:110,115:115,143:143,200:200,206:206,232:232,49:49,50:50,51:51,54:54,92:92,94:94,96:96}],115:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){K=b,H=0,I=!1,J=!1,L={"urn:mpeg:dash:utc:http-head:2014":y,"urn:mpeg:dash:utc:http-xsdate:2014":x.bind(null,o),"urn:mpeg:dash:utc:http-iso:2014":x.bind(null,p),"urn:mpeg:dash:utc:direct:2014":w,"urn:mpeg:dash:utc:http-head:2012":y,"urn:mpeg:dash:utc:http-xsdate:2012":x.bind(null,o),"urn:mpeg:dash:utc:http-iso:2012":x.bind(null,p),"urn:mpeg:dash:utc:direct:2012":w,"urn:mpeg:dash:utc:http-ntp:2014":s,"urn:mpeg:dash:utc:ntp:2014":s,"urn:mpeg:dash:utc:sntp:2014":s},e()||(B(a),f(!0))}function b(a){a&&(a.metricsModel&&(M=a.metricsModel),a.dashMetrics&&(N=a.dashMetrics),a.baseURLController&&(O=a.baseURLController))}function c(){return k()}function d(a){I=a}function e(){return I}function f(a){J=a}function h(a){H=a}function k(){return H}function m(a){var b=1e3,c=/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+\-])([0-9]{2})([0-9]{2}))?/,d=void 0,e=void 0,f=c.exec(a);return d=Date.UTC(parseInt(f[1],10),parseInt(f[2],10)-1,parseInt(f[3],10),parseInt(f[4],10),parseInt(f[5],10),f[6]&&(parseInt(f[6],10)||0),f[7]&&parseFloat(f[7])*b||0),f[9]&&f[10]&&(e=60*parseInt(f[9],10)+parseInt(f[10],10),d+=("+"===f[8]?-1:1)*e*60*b),new Date(d).getTime()}function o(a){var b=Date.parse(a);return isNaN(b)&&(b=m(a)),b}function p(a){return Date.parse(a)}function q(a){return Date.parse(a)}function s(a,b,c){c()}function w(a,b,c){var d=o(a);if(!isNaN(d))return void b(d);c()}function x(a,b,c,d,e){var f=void 0,g=void 0,h=!1,i=new XMLHttpRequest,k=e?j.HTTPRequest.HEAD:j.HTTPRequest.GET,l=b.match(/\S+/g);if(b=l.shift(),f=function(){h||(h=!0,l.length?x(a,l.join(" "),c,d,e):d())},g=function(){var b=void 0,d=void 0;200===i.status&&(b=e?i.getResponseHeader("Date"):i.response,d=a(b),isNaN(d)||(c(d),h=!0))},G.isRelative(b)){var m=O.resolve();m&&(b=G.resolve(b,m.url))}i.open(k,b),i.timeout=v||0,i.onload=g,i.onloadend=f,i.send()}function y(a,b,c){x(q,a,b,c,!0)}function z(){var a=M.getReadOnlyMetricsFor(g.default.STREAM),b=N.getLatestMPDRequestHeaderValueByID(a,"Date"),c=null!==b?new Date(b).getTime():Number.NaN;isNaN(c)?A(!0):(h(c-(new Date).getTime()),A(!1,c/1e3,H))}function A(a,b,c){d(!1),F.trigger(n.default.TIME_SYNCHRONIZATION_COMPLETED,{time:b,offset:c,error:a?new i.default(u):null})}function B(a,b){var c=b||0,e=a[c],f=function(a,b){var c=!a||!b;c&&K?z():A(c,a,b)};d(!0),e?L.hasOwnProperty(e.schemeIdUri)?L[e.schemeIdUri](e.value,function(a){var b=(new Date).getTime(),c=a-b;h(c),E("Local time: "+new Date(b)),E("Server time: "+new Date(a)),E("Difference (ms): "+c),f(a,c)},function(){B(a,c+1)}):B(a,c+1):(h(0),f())}function C(){f(!1),d(!1)}var D=this.context,E=(0,r.default)(D).getInstance().log,F=(0,l.default)(D).getInstance(),G=(0,t.default)(D).getInstance(),H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0;return{initialize:a,getOffsetToDeviceTimeMs:c,setConfig:b,reset:C}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(211),i=d(h),j=a(230),k=a(50),l=d(k),m=a(54),n=d(m),o=a(51),p=d(o),q=a(49),r=d(q),s=a(206),t=d(s),u=1,v=5e3;e.__dashjs_factory_name="TimeSyncController";var w=p.default.getSingletonFactory(e);w.TIME_SYNC_FAILED_ERROR_CODE=u,w.HTTP_TIMEOUT_MS=v,p.default.updateSingletonFactory(e.__dashjs_factory_name,w),c.default=w,b.exports=c.default},{100:100,206:206,211:211,230:230,49:49,50:50,51:51,54:54}],116:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){A.on(k.default.XLINK_ELEMENT_LOADED,j,C),H=(0,g.default)(z).create({errHandler:a.errHandler,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier})}function c(a){a&&(D=a)}function d(a){a&&(E=a)}function e(a){var b=void 0;G=new o.default({escapeMode:!1,attributePrefix:"",arrayAccessForm:"property",emptyNodeForm:"object",stripWhitespaces:!1,enableToStringFunc:!1,ignoreRoot:!0,matchers:D}),F=a,b=m(F.Period_asArray,F,t,r),h(b,t,r)}function f(){A.off(k.default.XLINK_ELEMENT_LOADED,j,C),H&&(H.reset(),H=null)}function h(a,b,c){var d={},e=void 0,f=void 0;d.elements=a,d.type=b,d.resolveType=c,0===d.elements.length&&l(d);for(var g=0;g<d.elements.length;g++)e=d.elements[g],f=B.isHTTPURL(e.url)?e.url:e.originalContent.BaseURL+e.url,H.load(f,e,d)}function j(a){var b=void 0,c=void 0,d="";if(b=a.element,c=a.resolveObject,b.resolvedContent){var e=0;0===b.resolvedContent.indexOf("<?xml")&&(e=b.resolvedContent.indexOf("?>")+2),d=b.resolvedContent.substr(0,e)+"<response>"+b.resolvedContent.substr(e)+"</response>",b.resolvedContent=G.xml_str2json(d)}x(c)&&l(c)}function l(a){var b=[],c=void 0,d=void 0;if(n(a),a.resolveType===s&&A.trigger(k.default.XLINK_READY,{manifest:F}),a.resolveType===r)switch(a.type){case t:for(c=0;c<F[t+"_asArray"].length;c++)d=F[t+"_asArray"][c],d.hasOwnProperty(u+"_asArray")&&(b=b.concat(m(d[u+"_asArray"],d,u,r))),d.hasOwnProperty(v+"_asArray")&&(b=b.concat(m(d[v+"_asArray"],d,v,r)));h(b,u,r);break;case u:A.trigger(k.default.XLINK_READY,{manifest:F})}}function m(a,b,c,d){var e=[],f=void 0,g=void 0,h=void 0;for(g=a.length-1;g>=0;g--)f=a[g],f.hasOwnProperty("xlink:href")&&f["xlink:href"]===w&&a.splice(g,1);for(g=0;g<a.length;g++)f=a[g],f.hasOwnProperty("xlink:href")&&f.hasOwnProperty("xlink:actuate")&&f["xlink:actuate"]===d&&(h=p(f["xlink:href"],b,c,g,d,f),e.push(h));return e}function n(a){var b=[],c=void 0,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0;for(f=a.elements.length-1;f>=0;f--){if(c=a.elements[f],d=c.type+"_asArray",!c.resolvedContent||y())delete c.originalContent["xlink:actuate"],delete c.originalContent["xlink:href"],b.push(c.originalContent);else if(c.resolvedContent)for(g=0;g<c.resolvedContent[d].length;g++)e=c.resolvedContent[d][g],b.push(e);for(c.parentElement[d].splice(c.index,1),h=0;h<b.length;h++)c.parentElement[d].splice(c.index+h,0,b[h]);b=[]}a.elements.length>0&&E.run(F)}function p(a,b,c,d,e,f){return{url:a,parentElement:b,type:c,index:d,resolveType:e,originalContent:f,resolvedContent:null,resolved:!1}}function x(a){var b=void 0,c=void 0;for(b=0;b<a.elements.length;b++)if(c=a.elements[b],!1===c.resolved)return!1;return!0}function y(){return!1}a=a||{};var z=this.context,A=(0,i.default)(z).getInstance(),B=(0,q.default)(z).getInstance(),C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0;return C={resolveManifestOnLoad:e,setMatchers:c,setIron:d,reset:f},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(99),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=a(4),o=d(n),p=a(206),q=d(p),r="onLoad",s="onActuate",t="Period",u="AdaptationSet",v="EventStream",w="urn:mpeg:dash:resolve-to-zero:2013";e.__dashjs_factory_name="XlinkController",c.default=m.default.getClassFactory(e),b.exports=c.default},{206:206,4:4,50:50,51:51,54:54,99:99}],117:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return e=(0,g.default)(d).getInstance({eventBus:a.eventBus,metricsModel:a.metricsModel,metricsConstants:a.metricsConstants,events:a.events}),(0,k.default)(d).create(a)}function b(){return(0,o.default)(d).getInstance()}function c(){return(0,m.default)(d).getInstance()}var d=this.context,e=void 0;return{createMetricsReporting:a,getReportingFactory:b,getMetricsHandlerFactory:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(131),g=d(f),h=a(118),i=d(h),j=a(119),k=d(j),l=a(124),m=d(l),n=a(129),o=d(n);e.__dashjs_factory_name="MetricsReporting";var p=dashjs.FactoryMaker.getClassFactory(e);p.events=i.default,dashjs.FactoryMaker.updateClassFactory(e.__dashjs_factory_name,p),c.default=p,b.exports=c.default},{118:118,119:119,124:124,129:129,131:131}],118:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(55),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.METRICS_INITIALISATION_COMPLETE="internal_metricsReportingInitialized",this.BECAME_REPORTING_PLAYER="internal_becameReportingPlayer"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{55:55}],119:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(b){if(!b.error){var c=Object.keys(f);(0,i.default)(h).getInstance({dashManifestModel:a.dashManifestModel,constants:a.constants}).getMetrics(b.manifest).forEach(function(b){var d=JSON.stringify(b);if(f.hasOwnProperty(d))c.splice(d,1);else try{var e=(0,g.default)(h).create(a);e.initialize(b),f[d]=e}catch(b){}}),c.forEach(function(a){f[a].reset(),delete f[a]}),j.trigger(k.default.METRICS_INITIALISATION_COMPLETE)}}function c(){Object.keys(f).forEach(function(a){f[a].reset()}),f={}}function d(){j.on(l.MANIFEST_UPDATED,b),j.on(l.STREAM_TEARDOWN_COMPLETE,c)}function e(){j.off(l.MANIFEST_UPDATED,b),j.off(l.STREAM_TEARDOWN_COMPLETE,c)}a=a||{};var f={},h=this.context,j=a.eventBus,l=a.events;return d(),{reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(120),g=d(f),h=a(133),i=d(h),j=a(118),k=d(j);e.__dashjs_factory_name="MetricsCollectionController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{118:118,120:120,133:133}],120:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(b){try{f=(0,g.default)(h).create({mediaElement:a.mediaElement}),f.initialize(b.Range),e=(0,i.default)(h).create({log:a.log,metricsConstants:a.metricsConstants}),e.initialize(b.Reporting,f),d=(0,k.default)(h).create({log:a.log,eventBus:a.eventBus,metricsConstants:a.metricsConstants,events:a.events}),d.initialize(b.metrics,e)}catch(j){throw c(),j}}function c(){d&&d.reset(),e&&e.reset(),f&&f.reset()}a=a||{};var d=void 0,e=void 0,f=void 0,h=this.context;return{initialize:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(122),g=d(f),h=a(123),i=d(h),j=a(121),k=d(j);e.__dashjs_factory_name="MetricsController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{121:121,122:122,123:123}],121:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){e.forEach(function(b){b.handleNewMetric(a.metric,a.value,a.mediaType)})}function c(a,c){a.split(",").forEach(function(a,b,d){var f=void 0;if(-1!==a.indexOf("(")&&-1===a.indexOf(")")){var g=d[b+1];g&&-1===g.indexOf("(")&&-1!==g.indexOf(")")&&(a+=","+g,delete d[b+1])}(f=k.create(a,c))&&e.push(f)}),i.on(j.METRIC_ADDED,b,f),i.on(j.METRIC_UPDATED,b,f)}function d(){i.off(j.METRIC_ADDED,b,f),i.off(j.METRIC_UPDATED,b,f),e.forEach(function(a){return a.reset()}),e=[]}a=a||{};var e=[],f=void 0,h=this.context,i=a.eventBus,j=a.events,k=(0,g.default)(h).getInstance({log:a.log,eventBus:a.eventBus, -metricsConstants:a.metricsConstants});return f={initialize:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(124),g=d(f);e.__dashjs_factory_name="MetricsHandlersController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{124:124}],122:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){a&&a.length&&(a.forEach(function(a){var b=a.starttime,c=b+a.duration;j.add(b,c)}),f=!!a[0]._useWallClockTime)}function c(){j.clear()}function d(){j=(0,g.default)(h).create()}function e(){var a=j.length,b=void 0;if(!a)return!0;b=f?(new Date).getTime()/1e3:k.currentTime;for(var c=0;c<a;c+=1){var d=j.start(c),e=j.end(c);if(d<=b&&b<e)return!0}return!1}a=a||{};var f=!1,h=this.context,i=void 0,j=void 0,k=a.mediaElement;return i={initialize:b,reset:c,isEnabled:e},d(),i}Object.defineProperty(c,"__esModule",{value:!0});var f=a(196),g=d(f);e.__dashjs_factory_name="RangeController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{196:196}],123:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){a.some(function(a){var c=f.create(a,b);if(c)return e.push(c),!0})}function c(){e.forEach(function(a){return a.reset()}),e=[]}function d(a,b){e.forEach(function(c){return c.report(a,b)})}var e=[],f=(0,g.default)(this.context).getInstance(a);return{initialize:b,reset:c,report:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(129),g=d(f);e.__dashjs_factory_name="ReportingController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{129:129}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(b,c){var d,g=b.match(f);if(g){try{d=j[g[1]](h).create({eventBus:a.eventBus,metricsConstants:a.metricsConstants}),d.initialize(g[1],c,g[3],g[5])}catch(i){d=null,e("MetricsHandlerFactory: Could not create handler for type "+g[1]+" with args "+g[3]+", "+g[5]+" ("+i.message+")")}return d}}function c(a,b){j[a]=b}function d(a){delete j[a]}a=a||{};var e=a.log,f=/([a-zA-Z]*)(\(([0-9]*)(\,\s*([a-zA-Z]*))?\))?/,h=this.context,j={BufferLevel:g.default,DVBErrors:i.default,HttpList:k.default,PlayList:m.default,RepSwitchList:m.default,TcpList:m.default};return{create:b,register:c,unregister:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(125),g=d(f),h=a(126),i=d(h),j=a(128),k=d(j),l=a(127),m=d(l);e.__dashjs_factory_name="MetricsHandlerFactory",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{125:125,126:126,127:127,128:128}],125:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){try{return Object.keys(o).map(function(a){return o[a]}).reduce(function(a,b){return a.level<b.level?a:b})}catch(a){return}}function c(){var a=b();a&&l!==a.t&&(l=a.t,h.report(j,a))}function d(a,b,d){b&&(i=n.validateN(d),h=b,j=n.reconstructFullMetricName(a,d),k=setInterval(c,i))}function e(){clearInterval(k),k=null,i=0,h=null,l=null}function f(a,b,c){a===p.BUFFER_LEVEL&&(o[c]=b)}a=a||{};var h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=this.context,n=(0,g.default)(m).getInstance(),o=[],p=a.metricsConstants;return{initialize:d,reset:e,handleNewMetric:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(132),g=d(f);e.__dashjs_factory_name="BufferLevelHandler",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{132:132}],126:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h.off(g.default.METRICS_INITIALISATION_COMPLETE,b,this),h.trigger(g.default.BECAME_REPORTING_PLAYER)}function c(a,c){c&&(f=c,h.on(g.default.METRICS_INITIALISATION_COMPLETE,b,this))}function d(){f=null}function e(a,b){a===i.DVB_ERRORS&&f&&f.report(a,b)}a=a||{};var f=void 0,h=a.eventBus,i=a.metricsConstants;return{initialize:c,reset:d,handleNewMetric:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(118),g=d(f);c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{118:118}],127:[function(a,b,c){"use strict";function d(){function a(a,b){d=a,e=b}function b(){e=null,d=void 0}function c(a,b){a===d&&e&&e.report(d,b)}var d=void 0,e=void 0;return{initialize:a,reset:b,handleNewMetric:c}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="GenericMetricHandler",c.default=dashjs.FactoryMaker.getClassFactory(d),b.exports=c.default},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){var a=l;a.length&&f&&f.report(j,a),l=[]}function c(a,c,d,e){c&&(h=m.validateN(d),f=c,e&&e.length&&(i=e),j=m.reconstructFullMetricName(a,d,e),k=setInterval(b,h))}function d(){clearInterval(k),k=null,h=null,i=null,l=[],f=null}function e(a,b){a===n.HTTP_REQUEST&&(i&&i!==b.type||l.push(b))}a=a||{};var f=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=[],m=(0,g.default)(this.context).getInstance(),n=a.metricsConstants;return{initialize:c,reset:d,handleNewMetric:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(132),g=d(f);e.__dashjs_factory_name="HttpListHandler",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{132:132}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=void 0;try{c=e[a.schemeIdUri](f).create({metricsConstants:i}),c.initialize(a,b)}catch(d){c=null,h("ReportingFactory: could not create Reporting with schemeIdUri "+a.schemeIdUri+" ("+d.message+")")}return c}function c(a,b){e[a]=b}function d(a){delete e[a]}a=a||{};var e={"urn:dvb:dash:reporting:2014":g.default},f=this.context,h=a.log,i=a.metricsConstants;return{create:b,register:c,unregister:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f);e.__dashjs_factory_name="ReportingFactory",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{130:130}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var d=new XMLHttpRequest,e=function(){var a=q.indexOf(d);-1!==a&&(q.splice(a,1),d.status>=200&&d.status<300?b&&b():c&&c())};q.push(d);try{d.open("GET",a),d.onloadend=e,d.onerror=e,d.send()}catch(f){d.onerror()}}function c(a,c){Array.isArray(c)||(c=[c]),l&&o.isEnabled()&&c.forEach(function(c){var d=h.serialise(c);k&&a!==r.DVB_ERRORS&&(d="metricname="+a+"&"+d),d=n+"?"+d,b(d,null,function(){l=!1})})}function d(a,b){var c=void 0;if(o=b,!(n=a["dvb:reportingUrl"]))throw new Error("required parameter missing (dvb:reportingUrl)");m||(c=a["dvb:probability"]||a["dvb:priority"]||0,c&&(1e3===c||c/1e3>=j.random())&&(l=!0),m=!0)}function e(){p||(q.forEach(function(a){return a.abort()}),q=[]),m=!1,l=!1,n=null,o=null}a=a||{};var f=this.context,h=(0,g.default)(f).getInstance(),j=(0,i.default)(f).getInstance(),k=!0,l=!1,m=!1,n=null,o=null,p=!0,q=[],r=a.metricsConstants;return{report:c,initialize:d,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(134),g=d(f),h=a(135),i=d(h);e.__dashjs_factory_name="DVBReporting",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{134:134,135:135}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=new g.default;if(p){for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);b.mpdurl||(b.mpdurl=p.originalUrl||p.url),b.terror||(b.terror=new Date),o.addDVBErrors(b)}}function c(a){a.error||(p=a.manifest)}function d(a){b({errorcode:g.default.BASE_URL_CHANGED,servicelocation:a.entry})}function e(){b({errorcode:g.default.BECAME_REPORTER})}function f(a){(0===a.responsecode||a.responsecode>=400||a.responsecode<100||a.responsecode>=600)&&b({errorcode:a.responsecode||g.default.CONNECTION_ERROR,url:a.url,terror:a.tresponse,servicelocation:a._serviceLocation})}function h(a){switch(a.metric){case q.HTTP_REQUEST:f(a.value)}}function j(a){var c=a.error?a.error.code:0,d=void 0;switch(c){case MediaError.MEDIA_ERR_NETWORK:d=g.default.CONNECTION_ERROR;break;case MediaError.MEDIA_ERR_DECODE:d=g.default.CORRUPT_MEDIA_OTHER;break;default:return}b({errorcode:d})}function k(){n.on(r.MANIFEST_UPDATED,c,m),n.on(r.SERVICE_LOCATION_BLACKLIST_CHANGED,d,m),n.on(r.METRIC_ADDED,h,m),n.on(r.METRIC_UPDATED,h,m),n.on(r.PLAYBACK_ERROR,j,m),n.on(i.default.BECAME_REPORTING_PLAYER,e,m)}function l(){n.off(r.MANIFEST_UPDATED,c,m),n.off(r.SERVICE_LOCATION_BLACKLIST_CHANGED,d,m),n.off(r.METRIC_ADDED,h,m),n.off(r.METRIC_UPDATED,h,m),n.off(r.PLAYBACK_ERROR,j,m),n.off(i.default.BECAME_REPORTING_PLAYER,e,m)}a=a||{};var m=void 0,n=a.eventBus,o=a.metricsModel,p=void 0,q=a.metricsConstants,r=a.events;return m={initialise:k,reset:l},k(),m}Object.defineProperty(c,"__esModule",{value:!0});var f=a(136),g=d(f),h=a(118),i=d(h);e.__dashjs_factory_name="DVBErrorsTranslator",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{118:118,136:136}],132:[function(a,b,c){"use strict";function d(){return{reconstructFullMetricName:function(a,b,c){var d=a;return b&&(d+="("+b,c&&c.length&&(d+=","+c),d+=")"),d},validateN:function(a){if(!a)throw new Error("missing n");if(isNaN(a))throw new Error("n is NaN");if(a<0)throw new Error("n must be positive");return a}}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="HandlerHelpers",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var f,g,h=d.getMpd(a),i=0;return b?i=h.availabilityStartTime.getTime()/1e3:(f=this.getRegularPeriods(h),f.length&&(i=f[0].start)),g=i,c&&c.hasOwnProperty(e.START_TIME)&&(g+=c.starttime),g}function c(a){var c=[];return a.Metrics_asArray&&a.Metrics_asArray.forEach(function(f){var h=new g.default,j=d.getIsDynamic(a);f.hasOwnProperty("metrics")&&(h.metrics=f.metrics,f.Range_asArray&&f.Range_asArray.forEach(function(c){var e=new i.default;e.starttime=b(a,j,c),c.hasOwnProperty("duration")?e.duration=c.duration:e.duration=d.getDuration(a),e._useWallClockTime=j,h.Range.push(e)}),f.Reporting_asArray&&(f.Reporting_asArray.forEach(function(a){var b=new k.default;if(a.hasOwnProperty(e.SCHEME_ID_URI)){b.schemeIdUri=a.schemeIdUri;for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);h.Reporting.push(b)}}),c.push(h)))}),c}a=a||{};var d=a.dashManifestModel,e=a.constants;return{getMetrics:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(137),g=d(f),h=a(138),i=d(h),j=a(139),k=d(j);e.__dashjs_factory_name="ManifestParsing",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{137:137,138:138,139:139}],134:[function(a,b,c){"use strict";function d(){function a(b){var c=[],d=[],e=void 0,f=void 0;for(e in b)if(b.hasOwnProperty(e)&&0!==e.indexOf("_")){if(f=b[e],void 0!==f&&null!==f||(f=""),Array.isArray(f)){if(!f.length)continue;d=[],f.forEach(function(b){var c="Object"!==Object.prototype.toString.call(b).slice(8,-1);d.push(c?b:a(b))}),f=d.map(encodeURIComponent).join(",")}else"string"==typeof f?f=encodeURIComponent(f):f instanceof Date?f=f.toISOString():"number"==typeof f&&(f=Math.round(f));c.push(e+"="+f)}return c.join("&")}return{serialise:a}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="MetricSerialiser",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],135:[function(a,b,c){"use strict";function d(){function a(){c&&(g||(g=new d(f)),c.getRandomValues(g),h=0)}function b(b,d){var f=void 0;return b||(b=0),d||(d=1),c?(h===g.length&&a(),f=g[h]/e,h+=1):f=Math.random(),f*(d-b)+b}var c=window.crypto||window.msCrypto,d=Uint32Array,e=Math.pow(2,8*d.BYTES_PER_ELEMENT)-1,f=10,g=void 0,h=void 0,i=void 0;return i={random:b},a(),i}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="RNG",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],136:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mpdurl=null,this.errorcode=null,this.terror=null,this.url=null,this.ipaddress=null,this.servicelocation=null};e.SSL_CONNECTION_FAILED_PREFIX="SSL",e.DNS_RESOLUTION_FAILED="C00",e.HOST_UNREACHABLE="C01",e.CONNECTION_REFUSED="C02",e.CONNECTION_ERROR="C03",e.CORRUPT_MEDIA_ISOBMFF="M00",e.CORRUPT_MEDIA_OTHER="M01",e.BASE_URL_CHANGED="F00",e.BECAME_REPORTER="S00",c.default=e,b.exports=c.default},{}],137:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.metrics="",this.Range=[],this.Reporting=[]};c.default=e,b.exports=c.default},{}],138:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.starttime=0,this.duration=1/0,this._useWallClockTime=!1};c.default=e,b.exports=c.default},{}],139:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.schemeIdUri="",this.value=""};c.default=e,b.exports=c.default},{}],140:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(){function a(){i()}function b(a){a.dashManifestModel&&(o=a.dashManifestModel)}function c(a,b,c){var d=o.getBaseURLsFromElement(c);a[b]?q.areEqual(d,a[b].data.baseUrls)||(a[b].data.baseUrls=d,a[b].data.selectedIdx=k):a[b]=new l(d)}function d(a){var b=o.getBaseURLsFromElement(a);q.areEqual(b,n.data.baseUrls)||(n.data.baseUrls=b,n.data.selectedIdx=k),a.Period_asArray&&a.Period_asArray.forEach(function(a,b){c(n.children,b,a),a.AdaptationSet_asArray&&a.AdaptationSet_asArray.forEach(function(a,d){c(n.children[b].children,d,a),a.Representation_asArray&&a.Representation_asArray.sort(o.getRepresentationSortFunction()).forEach(function(a,e){c(n.children[b].children[d].children,e,a)})})})}function e(a,b){var c=b||n;a(c.data),c.children&&c.children.forEach(function(b){return e(a,b)})}function f(a){e(function(b){isNaN(b.selectedIdx)||a===b.baseUrls[b.selectedIdx].serviceLocation&&(b.selectedIdx=k)})}function g(a){d(a)}function i(){n=new l}function j(a){var b=n,c=[b.data];return a&&a.forEach(function(a){(b=b.children[a])&&c.push(b.data)}),c.filter(function(a){return a.baseUrls.length})}var m=void 0,n=void 0,o=void 0,p=this.context,q=(0,h.default)(p).getInstance();return m={reset:i,update:g,getForPath:j,invalidateSelectedIndexes:f,setConfig:b},a(),m}Object.defineProperty(c,"__esModule",{value:!0});var g=a(203),h=d(g),i=a(51),j=d(i),k=NaN,l=function a(b,c){e(this,a),this.data={baseUrls:b||null,selectedIdx:c||k},this.children=[]};f.__dashjs_factory_name="BaseURLTreeModel",c.default=j.default.getClassFactory(f),b.exports=c.default},{203:203,51:51}],141:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){B(),F.on(i.default.LOADING_COMPLETED,z,I),F.on(i.default.LOADING_ABANDONED,A,I)}function c(a){J=a}function d(){return J}function e(a){var b=function(a,b){return a.url===b.url},c=function(a,b){return a.action===m.default.ACTION_COMPLETE&&a.action===b.action},d=function(a,b){return!isNaN(a.index)&&a.startTime===b.startTime&&a.adaptationIndex===b.adaptationIndex},e=function(a,b){return isNaN(a.index)&&isNaN(b.index)&&a.quality===b.quality},f=function(f){var g=!1;return f.some(function(f){if(b(a,f)&&(d(a,f)||e(a,f)||c(a,f)))return g=!0}),g};return!!a&&f(K)}function f(a){var b=!1,c=0,d=void 0;if(!(b=e(a)))for(c=0;c<L.length;c++)d=L[c],a.url===d.url&&a.startTime===d.startTime&&(b=!0);return b}function h(a){var b=a?a.state instanceof Array?a.state:[a.state]:[],c=[];return b.forEach(function(b){var d=x(b);c=c.concat(w(d,a))}),c}function j(a){return isNaN(a.duration)?.25:a.duration/8}function k(a){K=K.filter(function(b){var c=j(b);return!(!isNaN(b.startTime)&&void 0===a)&&b.startTime>=a-c})}function l(a,b){b<=a+.5||(K=K.filter(function(c){var d=j(c);return isNaN(c.startTime)||c.startTime>=b-d||isNaN(c.duration)||c.startTime+c.duration<=a+d}))}function n(a,b){if(!a||0===a.length)return void(K=[]);for(var c=0,d=0,e=a.length;d<e;d++)l(c,a.start(d)),c=a.end(d);b>0&&l(c,b)}function r(){H.abort(),L=[]}function t(a){switch(a.action){case m.default.ACTION_COMPLETE:K.push(a),y(a,q),E("[FragmentModel] executeRequest trigger STREAM_COMPLETED"),F.trigger(i.default.STREAM_COMPLETED,{request:a,fragmentModel:this});break;case m.default.ACTION_DOWNLOAD:y(a,p),L.push(a),u(a);break;default:E("Unknown request action.")}}function u(a){F.trigger(i.default.FRAGMENT_LOADING_STARTED,{sender:I,request:a}),H.load(a)}function v(a,b,c){for(var d=a.length-1,e=d;e>=0;e--){var f=a[e],g=f.startTime,h=g+f.duration;if(c=isNaN(c)?j(f):c,!isNaN(g)&&!isNaN(h)&&b+c>=g&&b-c<h||isNaN(g)&&isNaN(b))return f}return null}function w(a,b){return b.hasOwnProperty("time")?[v(a,b.time,b.threshold)]:a.filter(function(a){for(var c in b)if("state"!==c&&b.hasOwnProperty(c)&&a[c]!=b[c])return!1;return!0})}function x(a){var b=void 0;switch(a){case p:b=L;break;case q:b=K;break;default:b=[]}return b}function y(a,b){G.addSchedulingInfo(a.mediaType,new Date,a.type,a.startTime,a.availabilityStartTime,a.duration,a.quality,a.range,b),G.addRequestsQueue(a.mediaType,L,K)}function z(a){a.sender===H&&(L.splice(L.indexOf(a.request),1),a.response&&!a.error&&K.push(a.request),y(a.request,a.error?s:q),F.trigger(i.default.FRAGMENT_LOADING_COMPLETED,{request:a.request,response:a.response,error:a.error,sender:this}))}function A(a){a.sender===H&&F.trigger(i.default.FRAGMENT_LOADING_ABANDONED,{streamProcessor:this.getStreamProcessor(),request:a.request,mediaType:a.mediaType})}function B(){K=[],L=[]}function C(){F.off(i.default.LOADING_COMPLETED,z,this),F.off(i.default.LOADING_ABANDONED,A,this),H&&H.reset(),B()}a=a||{};var D=this.context,E=(0,o.default)(D).getInstance().log,F=(0,g.default)(D).getInstance(),G=a.metricsModel,H=a.fragmentLoader,I=void 0,J=void 0,K=void 0,L=void 0;return I={setStreamProcessor:c,getStreamProcessor:d,getRequests:h,isFragmentLoaded:e,isFragmentLoadedOrPending:f,removeExecutedRequestsBeforeTime:k,syncExecutedRequestsWithBufferedRange:n,abortRequests:r,executeRequest:t,reset:C},b(),I}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j),l=a(213),m=d(l),n=a(49),o=d(n),p="loading",q="executed",r="canceled",s="failed";e.__dashjs_factory_name="FragmentModel";var t=k.default.getClassFactory(e);t.FRAGMENT_MODEL_LOADING=p,t.FRAGMENT_MODEL_EXECUTED=q,t.FRAGMENT_MODEL_CANCELED=r,t.FRAGMENT_MODEL_FAILED=s,k.default.updateClassFactory(e.__dashjs_factory_name,t),c.default=t,b.exports=c.default},{213:213,49:49,50:50,51:51,54:54}],142:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){return e}function b(a){e=a,a&&d.trigger(i.default.MANIFEST_LOADED,{data:a})}var c=this.context,d=(0,g.default)(c).getInstance(),e=void 0;return{getValue:a,setValue:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="ManifestModel",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{50:50,51:51,54:54}],143:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function f(){function a(){var a,b;Ta=[],Sa=!1,Ra=!0,Wa=!0,kb=k.default.ABR_STRATEGY_DYNAMIC,lb=!0,nb=!1,$a={enabled:!0,ttl:n},_a={enabled:!0,ttl:o},Ua=m,Va=void 0,Xa=r,Ya=s,Za=t,ab=NaN,bb=w,cb=x,db=y,eb=z,fb=p,gb=q,jb=I,mb={default:J},ob=[],pb=k.default.MOVING_AVERAGE_SLIDING_WINDOW,a={},e(a,i.HTTPRequest.MPD_TYPE,E),e(a,i.HTTPRequest.XLINK_EXPANSION_TYPE,G),e(a,i.HTTPRequest.MEDIA_SEGMENT_TYPE,C),e(a,i.HTTPRequest.INIT_SEGMENT_TYPE,C),e(a,i.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,C),e(a,i.HTTPRequest.INDEX_SEGMENT_TYPE,C),e(a,i.HTTPRequest.OTHER_TYPE,C),hb=a,b={},e(b,i.HTTPRequest.MPD_TYPE,F),e(b,i.HTTPRequest.XLINK_EXPANSION_TYPE,H),e(b,i.HTTPRequest.MEDIA_SEGMENT_TYPE,D),e(b,i.HTTPRequest.INIT_SEGMENT_TYPE,D),e(b,i.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,D),e(b,i.HTTPRequest.INDEX_SEGMENT_TYPE,D),e(b,i.HTTPRequest.OTHER_TYPE,D),ib=b,qb={},qb[k.default.VIDEO]=A,qb[k.default.AUDIO]=B}function b(a){kb=a}function c(){return kb}function d(a){lb=a}function f(){return lb}function g(a){var b=void 0;for(b=0;b<ob.length;b++)if(ob[b].rulename===a)return b;return-1}function h(){return ob}function j(a,b,c){var d=g(b);-1===d?ob.push({type:a,rulename:b,rule:c}):(ob[d].type=a,ob[d].rule=c)}function l(a){var b=g(a);-1!==b&&ob.splice(b,1)}function K(){ob=[]}function L(a){fb=a}function M(){return fb}function N(a){gb=a}function O(){return gb}function P(a){ab=a}function Q(){return isNaN(ab)?nb?v:u:ab}function R(a){bb=a}function S(){return bb}function T(a){cb=a}function U(){return cb}function V(a){db=a}function W(){return db}function X(a){eb=a}function Y(){return eb}function Z(a,b){qb[a]=b}function $(a){return qb[a]}function _(a){Xa=a}function aa(){return Xa}function ba(a){Ya=a}function ca(){return Ya}function da(a,b){$a.enabled=a,void 0===b||isNaN(b)||"number"!=typeof b||($a.ttl=b)}function ea(){return $a}function fa(a,b){_a.enabled=a,void 0===b||isNaN(b)||"number"!=typeof b||(_a.ttl=b)}function ga(){return _a}function ha(a){Za=a}function ia(){return Za}function ja(a){hb[i.HTTPRequest.MEDIA_SEGMENT_TYPE]=a}function ka(a){hb[i.HTTPRequest.MPD_TYPE]=a}function la(a,b){hb[a]=b}function ma(){return hb[i.HTTPRequest.MEDIA_SEGMENT_TYPE]}function na(){return hb[i.HTTPRequest.MPD_TYPE]}function oa(a){return hb[a]}function pa(a){ib[i.HTTPRequest.MEDIA_SEGMENT_TYPE]=a}function qa(a){ib[i.HTTPRequest.MPD_TYPE]=a}function ra(a,b){ib[a]=b}function sa(){return ib[i.HTTPRequest.MEDIA_SEGMENT_TYPE]}function ta(){return ib[i.HTTPRequest.MPD_TYPE]}function ua(a){return ib[a]}function va(a){jb=a}function wa(){return jb}function xa(a){Wa=a}function ya(){return Wa}function za(a){Ua=a}function Aa(a){Va=a}function Ba(){return Ua}function Ca(){return Va}function Da(a){Ra=a}function Ea(){return Ra}function Fa(a){Sa=a}function Ga(){return Sa}function Ha(a){Ta=a}function Ia(){return Ta}function Ja(a,b){a?mb[a]=!!b:Object.keys(mb).forEach(function(a){Ja(a,b)})}function Ka(a){var b=mb[a];return void 0===b?mb.default:b}function La(){return nb}function Ma(a){nb=a}function Na(a){pb=a}function Oa(){return pb}function Pa(){}var Qa=void 0,Ra=void 0,Sa=void 0,Ta=void 0,Ua=void 0,Va=void 0,Wa=void 0,Xa=void 0,Ya=void 0,Za=void 0,$a=void 0,_a=void 0,ab=void 0,bb=void 0,cb=void 0,db=void 0,eb=void 0,fb=void 0,gb=void 0,hb=void 0,ib=void 0,jb=void 0,kb=void 0,lb=void 0,mb=void 0,nb=void 0,ob=void 0,pb=void 0,qb=void 0;return Qa={setABRStrategy:b,getABRStrategy:c,setUseDefaultABRRules:d,getUseDefaultABRRules:f,getABRCustomRules:h,addABRCustomRule:j,removeABRCustomRule:l,removeAllABRCustomRule:K,setBandwidthSafetyFactor:L,getBandwidthSafetyFactor:M,setAbandonLoadTimeout:N,getAbandonLoadTimeout:O,setLastBitrateCachingInfo:da,getLastBitrateCachingInfo:ea,setLastMediaSettingsCachingInfo:fa,getLastMediaSettingsCachingInfo:ga,setStableBufferTime:P,getStableBufferTime:Q,setBufferTimeAtTopQuality:R,getBufferTimeAtTopQuality:S,setBufferTimeAtTopQualityLongForm:T,getBufferTimeAtTopQualityLongForm:U,setLongFormContentDurationThreshold:V,getLongFormContentDurationThreshold:W,setSegmentOverlapToleranceTime:X,getSegmentOverlapToleranceTime:Y,getCacheLoadThresholdForType:$,setCacheLoadThresholdForType:Z,setBufferToKeep:_,getBufferToKeep:aa,setBufferAheadToKeep:ba,getBufferAheadToKeep:ca,setBufferPruningInterval:ha,getBufferPruningInterval:ia,setFragmentRetryAttempts:ja,getFragmentRetryAttempts:ma,setManifestRetryAttempts:ka,getManifestRetryAttempts:na,setRetryAttemptsForType:la,getRetryAttemptsForType:oa,setFragmentRetryInterval:pa,getFragmentRetryInterval:sa,setManifestRetryInterval:qa,getManifestRetryInterval:ta,setRetryIntervalForType:ra,getRetryIntervalForType:ua,setWallclockTimeUpdateInterval:va,getWallclockTimeUpdateInterval:wa,setScheduleWhilePaused:xa,getScheduleWhilePaused:ya,getUseSuggestedPresentationDelay:Ga,setUseSuggestedPresentationDelay:Fa,setLiveDelayFragmentCount:za,getLiveDelayFragmentCount:Ba,getLiveDelay:Ca,setLiveDelay:Aa,setUseManifestDateHeaderTimeSource:Da,getUseManifestDateHeaderTimeSource:Ea,setUTCTimingSources:Ha,getUTCTimingSources:Ia,setXHRWithCredentialsForType:Ja,getXHRWithCredentialsForType:Ka,setFastSwitchEnabled:Ma,getFastSwitchEnabled:La,setMovingAverageMethod:Na,getMovingAverageMethod:Oa,reset:Pa},a(),Qa}Object.defineProperty(c,"__esModule",{value:!0});var g=a(51),h=d(g),i=a(230),j=a(100),k=d(j),l={scheme:"urn:mpeg:dash:utc:http-xsdate:2014",value:"http://time.akamai.com/?iso"},m=4,n=36e4,o=36e4,p=.9,q=1e4,r=20,s=80,t=10,u=12,v=20,w=30,x=60,y=600,z=.05,A=50,B=5,C=3,D=1e3,E=3,F=500,G=1,H=500,I=50,J=!1;f.__dashjs_factory_name="MediaPlayerModel";var K=h.default.getSingletonFactory(f);K.DEFAULT_UTC_TIMING_SOURCE=l,h.default.updateSingletonFactory(f.__dashjs_factory_name,K),c.default=K,b.exports=c.default},{100:100,230:230,51:51}],144:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){W={}}function b(a){a&&a.adapter&&(V=a.adapter)}function c(){T.trigger(G.default.METRICS_CHANGED)}function d(a){T.trigger(G.default.METRIC_CHANGED,{mediaType:a}),c()}function e(a,b,c){T.trigger(G.default.METRIC_UPDATED,{mediaType:a,metric:b,value:c}),d(a)}function f(a,b,c){T.trigger(G.default.METRIC_ADDED,{mediaType:a,metric:b,value:c}),d(a)}function h(a){delete W[a],d(a)}function j(){W={},c()}function l(a){return W.hasOwnProperty(a)?W[a]:null}function o(a){var b=void 0;return W.hasOwnProperty(a)?b=W[a]:(b=new k.default,W[a]=b),b}function q(a,b,c){var d=o(a);d[b].push(c),d[b].length>R&&d[b].shift()}function s(a,b,c,d,e,f){var g=new m.default;return g.tcpid=b,g.dest=c,g.topen=d,g.tclose=e,g.tconnect=f,B(a,i.default.TCP_CONNECTION,g),g}function u(a,b,c,d){var e=new n.HTTPRequestTrace;return e.s=b,e.d=c,e.b=d,a.trace.push(e),a.interval||(a.interval=0),a.interval+=c,e}function w(a,b,c,d,e,f,g,h,j,k,l,m,o,p){var q=new n.HTTPRequest;return e&&e!==d&&(w(a,null,c,d,null,null,g,h,null,null,null,m,null,null),q.actualurl=e),q.tcpid=b,q.type=c,q.url=d,q.range=g,q.trequest=h,q.tresponse=j,q.responsecode=l,q._tfinish=k,q._stream=a,q._mediaduration=m,q._responseHeaders=o,q._serviceLocation=f,p?p.forEach(function(a){u(q,a.s,a.d,a.b)}):(delete q.interval,delete q.trace),B(a,i.default.HTTP_REQUEST,q),q}function z(a,b,c,d,e){var f=new p.default;return f.t=b,f.mt=c,f.to=d,e?f.lto=e:delete f.lto,B(a,i.default.TRACK_SWITCH,f),f}function B(a,b,c){q(a,b,c),f(a,b,c)}function D(a,b,c){var d=new r.default;return d.t=b,d.level=c,B(a,i.default.BUFFER_LEVEL,d),d}function F(a,b,c){var d=new t.default;return d.target=c,d.state=b,B(a,i.default.BUFFER_STATE,d),d}function H(a,b,c,d){var e=new v.default;return e.time=b,e.range=d,e.manifestInfo=c,B(a,i.default.DVR_INFO,e),e}function I(a,b){var c=new x.default,d=o(a).DroppedFrames;return c.time=b.creationTime,c.droppedFrames=b.droppedVideoFrames,d.length>0&&d[d.length-1]==c?d[d.length-1]:(B(a,i.default.DROPPED_FRAMES,c),c)}function J(a,b,c,d,e,f,g,h,j){var k=new A.default;return k.mediaType=a,k.t=b,k.type=c,k.startTime=d,k.availabilityStartTime=e,k.duration=f,k.quality=g,k.range=h,k.state=j,B(a,i.default.SCHEDULING_INFO,k),k}function K(a,b,c){var d=new E.default;d.loadingRequests=b,d.executedRequests=c,o(a).RequestsQueue=d,f(a,i.default.REQUESTS_QUEUE,d)}function L(a,b,c,d,e,h,j,k,l,m){var n=new y.ManifestUpdate;return n.mediaType=a,n.type=b,n.requestTime=c,n.fetchTime=d,n.availabilityStartTime=e,n.presentationStartTime=h,n.clientTimeOffset=j,n.currentTime=k,n.buffered=l,n.latency=m,q(g.default.STREAM,i.default.MANIFEST_UPDATE,n),f(a,i.default.MANIFEST_UPDATE,n),n}function M(a,b){if(a){for(var c in b)a[c]=b[c];e(a.mediaType,i.default.MANIFEST_UPDATE,a)}}function N(a,b,c,d,f){if(a){var g=new y.ManifestUpdateStreamInfo;return g.id=b,g.index=c,g.start=d,g.duration=f,a.streamInfo.push(g),e(a.mediaType,i.default.MANIFEST_UPDATE_STREAM_INFO,a),g}return null}function O(a,b,c,d,f,g,h,j){if(a){var k=new y.ManifestUpdateRepresentationInfo;return k.id=b,k.index=c,k.streamIndex=d,k.mediaType=f,k.startNumber=h,k.fragmentInfoType=j,k.presentationTimeOffset=g,a.representationInfo.push(k),e(a.mediaType,i.default.MANIFEST_UPDATE_TRACK_INFO,a),k}return null}function P(a){var b=g.default.STREAM;return a.trace&&Array.isArray(a.trace)?a.trace.forEach(function(a){a.hasOwnProperty("subreplevel")&&!a.subreplevel&&delete a.subreplevel}):delete a.trace,B(b,i.default.PLAY_LIST,a),a}function Q(a){return B(g.default.STREAM,i.default.DVB_ERRORS,a),a}var R=1e3,S=this.context,T=(0,C.default)(S).getInstance(),U=void 0,V=void 0,W=void 0;return U={clearCurrentMetricsForType:h,clearAllCurrentMetrics:j,getReadOnlyMetricsFor:l,getMetricsFor:o,addTcpConnection:s,addHttpRequest:w,addRepresentationSwitch:z,addBufferLevel:D,addBufferState:F,addDVRInfo:H,addDroppedFrames:I,addSchedulingInfo:J,addRequestsQueue:K,addManifestUpdate:L,updateManifestUpdateInfo:M,addManifestUpdateStreamInfo:N,addManifestUpdateRepresentationInfo:O,addPlayList:P,addDVBErrors:Q,setConfig:b},a(),U}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(101),i=d(h),j=a(218),k=d(j),l=a(236),m=d(l),n=a(230),o=a(233),p=d(o),q=a(226),r=d(q),s=a(227),t=d(s),u=a(228),v=d(u),w=a(229),x=d(w),y=a(231),z=a(235),A=d(z),B=a(50),C=d(B),D=a(234),E=d(D),F=a(54),G=d(F),H=a(51),I=d(H);e.__dashjs_factory_name="MetricsModel",c.default=I.default.getSingletonFactory(e),b.exports=c.default},{100:100,101:101,218:218,226:226,227:227,228:228,229:229,230:230,231:231,233:233,234:234,235:235,236:236,50:50,51:51,54:54}],145:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){f=new g.default,h=[],i=!1}function b(){return f}function c(){return h}function d(){return i}function e(a){function b(a,b,c,d){var e=d[0].split(/[=]/);return d.push({key:e[0],value:e[1]}),d.shift(),d}function c(a,b,c){return b>0&&(k&&0===h.length?h=c[b].split(/[&]/):l&&(d=c[b].split(/[&]/))),c}if(!a)return null;var d=[],e=new RegExp(/[?]/),g=new RegExp(/[#]/),j=new RegExp(/^(https:)?\/\//i),k=e.test(a),l=g.test(a);return i=j.test(a),a.split(/[?#]/).map(c),h.length>0&&(h=h.reduce(b,null)),d.length>0&&(d=d.reduce(b,null),d.forEach(function(a){f[a.key]=a.value})),a}var f=void 0,h=void 0,i=void 0;return{initialize:a,parseURI:e,getURIFragmentData:b,getURIQueryData:c,isManifestHTTPS:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(225),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="URIQueryAndFragmentModel",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{225:225,51:51}],146:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){X=[],_.on(k.default.PLAYBACK_PLAYING,v,this)}function b(){_.off(k.default.PLAYBACK_PLAYING,v,this)}function c(){U.playbackRate=Y||1,U.removeEventListener("canplay",c)}function d(a){U&&(U.readyState<=2&&a>0?U.addEventListener("canplay",c):U.playbackRate=a)}function e(a){if(U.currentTime!=a)try{U.currentTime=a}catch(b){0===U.readyState&&b.code===b.INVALID_STATE_ERR&&setTimeout(function(){U.currentTime=a},400)}}function f(){return U}function g(a){U=a,U.preload="auto"}function h(a){a?U.src=a:(U.removeAttribute("src"),U.load())}function j(){return U.src}function l(){return W}function n(a){W=a}function o(){return V}function p(a){V=a,V.style.position="absolute",V.style.display="flex",V.style.overflow="hidden",V.style.pointerEvents="none",V.style.top=0,V.style.left=0}function q(a,b){u(a,b)}function r(){ -return X.length>0}function s(a){var b=void 0;null===a||U.seeking||-1!==X.indexOf(a)||(X.push(a),1===X.length&&(b=document.createEvent("Event"),b.initEvent("waiting",!0,!1),Y=U.playbackRate,d(0),U.dispatchEvent(b)))}function t(a){var b=X.indexOf(a),c=void 0;null!==a&&(-1!==b&&X.splice(b,1),!1===r()&&0===U.playbackRate&&(d(Y||1),U.paused||(c=document.createEvent("Event"),c.initEvent("playing",!0,!1),U.dispatchEvent(c))))}function u(a,b){b?s(a):t(a)}function v(){if(U&&r()&&0===U.playbackRate){var a=document.createEvent("Event");a.initEvent("waiting",!0,!1),U.dispatchEvent(a)}}function w(){var a="webkitDroppedFrameCount"in U&&"webkitDecodedFrameCount"in U,b="getVideoPlaybackQuality"in U,c=null;return b?c=U.getVideoPlaybackQuality():a&&(c={droppedVideoFrames:U.webkitDroppedFrameCount,totalVideoFrames:U.webkitDroppedFrameCount+U.webkitDecodedFrameCount,creationTime:new Date}),c}function x(){if(U){U.autoplay=!0;var a=U.play();a&&"undefined"!=typeof Promise&&a instanceof Promise&&a.catch(function(a){"NotAllowedError"===a.name&&_.trigger(k.default.PLAYBACK_NOT_ALLOWED),$("Caught pending play exception - continuing ("+a+")")})}}function y(){return U?U.paused:null}function z(){U&&(U.pause(),U.autoplay=!1)}function A(){return U?U.seeking:null}function B(){return U?U.currentTime:null}function C(){return U?U.playbackRate:null}function D(){return U?U.played:null}function E(){return U?U.ended:null}function F(a,b){U&&U.addEventListener(a,b)}function G(a,b){U&&U.removeEventListener(a,b)}function H(){return U?U.readyState:NaN}function I(){return U?U.buffered:null}function J(){return U?U.clientWidth:NaN}function K(){return U?U.clientHeight:NaN}function L(){return U?U.videoWidth:NaN}function M(){return U?U.videoHeight:NaN}function N(){return U&&U.parentNode?U.getBoundingClientRect().top-U.parentNode.getBoundingClientRect().top:NaN}function O(){return U&&U.parentNode?U.getBoundingClientRect().left-U.parentNode.getBoundingClientRect().left:NaN}function P(){return U?U.textTracks:[]}function Q(a,b,c,d,e){if(U)for(var f=0;f<U.textTracks.length;f++)if(U.textTracks[f].kind===a&&(!b||U.textTracks[f].label==b)&&U.textTracks[f].language===c&&U.textTracks[f].isTTML===d&&U.textTracks[f].isEmbedded===e)return U.textTracks[f];return null}function R(a,b,c){return U?U.addTextTrack(a,b,c):null}function S(a){U&&(U.appendChild(a),void 0!==a.isTTML&&(U.textTracks[U.textTracks.length-1].isTTML=a.isTTML,U.textTracks[U.textTracks.length-1].isEmbedded=a.isEmbedded))}function T(a){U&&U.removeChild(a)}var U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=this.context,$=(0,m.default)(Z).getInstance().log,_=(0,i.default)(Z).getInstance();return{initialize:a,setCurrentTime:e,play:x,isPaused:y,pause:z,isSeeking:A,getTime:B,getPlaybackRate:C,getPlayedRanges:D,getEnded:E,setStallState:q,getElement:f,setElement:g,setSource:h,getSource:j,getVideoContainer:l,setVideoContainer:n,getTTMLRenderingDiv:o,setTTMLRenderingDiv:p,getPlaybackQuality:w,addEventListener:F,removeEventListener:G,getReadyState:H,getBufferRange:I,getClientWidth:J,getClientHeight:K,getTextTracks:P,getTextTrack:Q,addTextTrack:R,appendChild:S,removeChild:T,getVideoWidth:L,getVideoHeight:M,getVideoRelativeOffsetTop:N,getVideoRelativeOffsetLeft:O,reset:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(49),m=d(l);e.__dashjs_factory_name="VideoModel",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{49:49,50:50,51:51,54:54}],147:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a)}return e(a,null,[{key:"findCencContentProtection",value:function(a){for(var b=null,c=0;c<a.length;++c){var d=a[c];"urn:mpeg:dash:mp4protection:2011"===d.schemeIdUri.toLowerCase()&&"cenc"===d.value.toLowerCase()&&(b=d)}return b}},{key:"getPSSHData",value:function(a){var b=8,c=new DataView(a),d=c.getUint8(b);return b+=20,d>0&&(b+=4+16*c.getUint32(b)),b+=4,a.slice(b)}},{key:"getPSSHForKeySystem",value:function(b,c){var d=a.parsePSSHList(c);return d.hasOwnProperty(b.uuid.toLowerCase())?d[b.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(a,b){return"pssh"in a?b.decodeArray(a.pssh.__text).buffer:null}},{key:"parsePSSHList",value:function(a){if(null===a)return[];for(var b=new DataView(a.buffer||a),c=!1,d={},e=0;!c;){var f=void 0,g=void 0,h=void 0,i=void 0,j=e;if(e>=b.buffer.byteLength)break;if(f=b.getUint32(e),g=e+f,e+=4,1886614376===b.getUint32(e))if(e+=4,0===(h=b.getUint8(e))||1===h){e++,e+=3,i="";var k=void 0,l=void 0;for(k=0;k<4;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=4,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<6;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;e+=6,i=i.toLowerCase(),b.getUint32(e),e+=4,d[i]=b.buffer.slice(j,g),e=g}else e=g;else e=g}return d}}]),a}();c.default=f,b.exports=c.default},{}],148:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var c=null,e=(0,i.default)(d).getInstance();e.setConfig({log:a.log,BASE64:a.BASE64}),e.initialize();var f=b(a);return!c&&f&&(c=(0,g.default)(d).create({protectionModel:f,protectionKeyController:e,adapter:a.adapter,eventBus:a.eventBus,log:a.log,events:a.events,BASE64:a.BASE64,Constants:a.Constants}),a.capabilities.setEncryptedMediaSupported(!0)),c}function b(a){var b=a.log,e=a.eventBus,f=a.errHandler,g=a.videoModel.getElement();return void 0!==g.onencrypted&&void 0!==g.mediaKeys&&void 0!==navigator.requestMediaKeySystemAccess&&"function"==typeof navigator.requestMediaKeySystemAccess?(b("EME detected on this user agent! (ProtectionModel_21Jan2015)"),(0,m.default)(d).create({log:b,eventBus:e,events:a.events})):c(g,s)?(b("EME detected on this user agent! (ProtectionModel_3Feb2014)"),(0,o.default)(d).create({log:b,eventBus:e,events:a.events,api:c(g,s)})):c(g,r)?(b("EME detected on this user agent! (ProtectionModel_01b)"),(0,q.default)(d).create({log:b,eventBus:e,errHandler:f,events:a.events,api:c(g,r)})):(b("No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!"),null)}function c(a,b){for(var c=0;c<b.length;c++){var d=b[c];if("function"==typeof a[d[Object.keys(d)[0]]])return d}return null}var d=this.context;return{createProtectionSystem:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(150),g=d(f),h=a(151),i=d(h),j=a(149),k=d(j),l=a(157),m=d(l),n=a(158),o=d(n),p=a(156),q=d(p),r=[{generateKeyRequest:"generateKeyRequest",addKey:"addKey",cancelKeyRequest:"cancelKeyRequest",needkey:"needkey",keyerror:"keyerror",keyadded:"keyadded",keymessage:"keymessage"},{generateKeyRequest:"webkitGenerateKeyRequest",addKey:"webkitAddKey",cancelKeyRequest:"webkitCancelKeyRequest",needkey:"webkitneedkey",keyerror:"webkitkeyerror",keyadded:"webkitkeyadded",keymessage:"webkitkeymessage"}],s=[{setMediaKeys:"setMediaKeys",MediaKeys:"MediaKeys",release:"close",needkey:"needkey",error:"keyerror",message:"keymessage",ready:"keyadded",close:"keyclose"},{setMediaKeys:"msSetMediaKeys",MediaKeys:"MSMediaKeys",release:"close",needkey:"msneedkey",error:"mskeyerror",message:"mskeymessage",ready:"mskeyadded",close:"mskeyclose"}];e.__dashjs_factory_name="Protection";var t=dashjs.FactoryMaker.getClassFactory(e);t.events=k.default,dashjs.FactoryMaker.updateClassFactory(e.__dashjs_factory_name,t),c.default=t,b.exports=c.default},{149:149,150:150,151:151,156:156,157:157,158:158}],149:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(55),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.INTERNAL_KEY_MESSAGE="internalKeyMessage",this.INTERNAL_KEY_SYSTEM_SELECTED="internalKeySystemSelected",this.KEY_ADDED="public_keyAdded",this.KEY_ERROR="public_keyError",this.KEY_MESSAGE="public_keyMessage",this.KEY_SESSION_CLOSED="public_keySessionClosed",this.KEY_SESSION_CREATED="public_keySessionCreated",this.KEY_SESSION_REMOVED="public_keySessionRemoved",this.KEY_STATUSES_CHANGED="public_keyStatusesChanged",this.KEY_SYSTEM_ACCESS_COMPLETE="keySystemAccessComplete",this.KEY_SYSTEM_SELECTED="public_keySystemSelected",this.LICENSE_REQUEST_COMPLETE="public_licenseRequestComplete",this.NEED_KEY="needkey",this.PROTECTION_CREATED="public_protectioncreated",this.PROTECTION_DESTROYED="public_protectiondestroyed",this.SERVER_CERTIFICATE_UPDATED="serverCertificateUpdated",this.TEARDOWN_COMPLETE="protectionTeardownComplete",this.VIDEO_ELEMENT_SELECTED="videoElementSelected"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{55:55}],150:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H=[],L=!1,M="temporary",N=""}function c(a,b,c){if(!L){var d=void 0;b||c||(d=A.getStreamsInfo()[0]),I=b||(d?A.getMediaInfoForType(d,F.AUDIO):null),J=c||(d?A.getMediaInfoForType(d,F.VIDEO):null);var e=J||I,f=y.getSupportedKeySystemsFromContentProtection(e.contentProtection);f&&f.length>0&&t(f,!0),L=!0}}function d(a){return y.getSupportedKeySystemsFromContentProtection(a)}function e(a,b){var c=g.default.getPSSHForKeySystem(O,a),d=r(O);if(c){for(var e=z.getAllInitData(),f=0;f<e.length;f++)if(y.initDataEquals(c,e[f]))return void D("DRM: Ignoring initData because we have already seen it!");try{z.createKeySession(c,d,M,b)}catch(h){B.trigger(C.KEY_SESSION_CREATED,{data:null,error:"Error creating key session! "+h.message})}}else a?z.createKeySession(a,d,M,b):B.trigger(C.KEY_SESSION_CREATED,{data:null,error:"Selected key system is "+O.systemString+". needkey/encrypted event contains no initData corresponding to that key system!"})}function f(a){z.loadKeySession(a)}function h(a){z.removeKeySession(a)}function j(a){z.closeKeySession(a)}function l(a){z.setServerCertificate(a)}function m(a){a?(z.setMediaElement(a),B.on(C.NEED_KEY,w,this),B.on(C.INTERNAL_KEY_MESSAGE,v,this)):null===a&&(z.setMediaElement(a),B.off(C.NEED_KEY,w,this),B.off(C.INTERNAL_KEY_MESSAGE,v,this))}function n(a){M=a}function o(a){N=a}function p(a){K=a,y.setProtectionData(a)}function q(){m(null),O=void 0,z&&(z.reset(),z=null)}function r(a){var b=null,c=a.systemString;return K&&(b=c in K?K[c]:null),b}function s(a){var b=r(a),c=[],d=[],e=b&&b.audioRobustness&&b.audioRobustness.length>0?b.audioRobustness:N,f=b&&b.videoRobustness&&b.videoRobustness.length>0?b.videoRobustness:N;return I&&c.push(new i.default(I.codec,e)),J&&d.push(new i.default(J.codec,f)),new k.default(c,d,"optional","temporary"===M?"optional":"required",[M])}function t(a,b){var c=this,d=[],f=void 0;if(O){for(f=0;f<a.length;f++)if(O===a[f].ks){var g=function(){d.push({ks:a[f].ks,configs:[s(O)]});var g=function d(g){B.off(C.KEY_SYSTEM_ACCESS_COMPLETE,d,c),g.error?b||B.trigger(C.KEY_SYSTEM_SELECTED,{error:"DRM: KeySystem Access Denied! -- "+g.error}):(D("DRM: KeySystem Access Granted"),B.trigger(C.KEY_SYSTEM_SELECTED,{data:g.data}),e(a[f].initData,a[f].cdmData))};return B.on(C.KEY_SYSTEM_ACCESS_COMPLETE,g,c),z.requestKeySystemAccess(d),"break"}();if("break"===g)break}}else if(void 0===O){var h;!function(){O=null,H.push(a);for(var g=0;g<a.length;g++)d.push({ks:a[g].ks,configs:[s(a[g].ks)]});var i=void 0,j=function a(d){B.off(C.KEY_SYSTEM_ACCESS_COMPLETE,a,c),d.error?(O=void 0,B.off(C.INTERNAL_KEY_SYSTEM_SELECTED,h,c),b||B.trigger(C.KEY_SYSTEM_SELECTED,{data:null,error:"DRM: KeySystem Access Denied! -- "+d.error})):(i=d.data,D("DRM: KeySystem Access Granted ("+i.keySystem.systemString+")! Selecting key system..."),z.selectKeySystem(i))};h=function a(d){if(B.off(C.INTERNAL_KEY_SYSTEM_SELECTED,a,c),B.off(C.KEY_SYSTEM_ACCESS_COMPLETE,j,c),d.error)O=void 0,b||B.trigger(C.KEY_SYSTEM_SELECTED,{data:null,error:"DRM: Error selecting key system! -- "+d.error});else{O=z.getKeySystem(),B.trigger(C.KEY_SYSTEM_SELECTED,{data:i});var g=r(O);g&&g.serverCertificate&&g.serverCertificate.length>0&&z.setServerCertificate(E.decodeArray(g.serverCertificate).buffer);for(var h=0;h<H.length;h++)for(f=0;f<H[h].length;f++)if(O===H[h][f].ks){if(null===H[h][f].initData&&g&&g.hasOwnProperty("clearkeys")){var k={kids:Object.keys(g.clearkeys)};H[h][f].initData=(new TextEncoder).encode(JSON.stringify(k))}e(H[h][f].initData,H[h][f].cdmData);break}}},B.on(C.INTERNAL_KEY_SYSTEM_SELECTED,h,c),B.on(C.KEY_SYSTEM_ACCESS_COMPLETE,j,c),z.requestKeySystemAccess(d)}()}else H.push(a)}function u(a,b){B.trigger(C.LICENSE_REQUEST_COMPLETE,{data:a,error:b})}function v(a){if(D("DRM: onKeyMessage"),a.error)return void D(a.error);var b=a.data;B.trigger(C.KEY_MESSAGE,{data:b});var c=b.messageType?b.messageType:"license-request",d=b.message,e=b.sessionToken,f=r(O),h=O.systemString,i=y.getLicenseServer(O,f,c),j={sessionToken:e,messageType:c};if(!i)return D("DRM: License server request not required for this message (type = "+a.data.messageType+"). Session ID = "+e.getSessionID()),void u(j);if(y.isClearKey(O)){var k=y.processClearKeyLicenseRequest(O,f,d);if(k)return D("DRM: ClearKey license request handled by application!"),u(j),void z.updateKeySession(e,k)}var l=new XMLHttpRequest,m=null;if(f&&f.serverURL){var n=f.serverURL;"string"==typeof n&&""!==n?m=n:"object"==typeof n&&n.hasOwnProperty(c)&&(m=n[c])}else f&&f.laURL&&""!==f.laURL?m=f.laURL:(m=O.getLicenseServerURLFromInitData(g.default.getPSSHData(e.initData)))||(m=a.data.laURL);if(!(m=i.getServerURLFromMessage(m,d,c)))return void u(j,"DRM: No license server URL specified!");var o=function(a,b,c,d){var e=a.response?i.getErrorResponse(a.response,c,d):"NONE";u(b,"DRM: "+c+' update, XHR complete. status is "'+a.statusText+'" ('+a.status+"), readyState is "+a.readyState+". Response is "+e)};l.open(i.getHTTPMethod(c),m,!0),l.responseType=i.getResponseType(h,c),l.onload=function(){if(200==this.status){var a=i.getLicenseMessage(this.response,h,c);null!==a?(u(j),z.updateKeySession(e,a)):o(this,j,h,c)}else o(this,j,h,c)},l.onabort=function(){u(j,"DRM: "+h+' update, XHR aborted. status is "'+this.statusText+'" ('+this.status+"), readyState is "+this.readyState)},l.onerror=function(){u(j,"DRM: "+h+' update, XHR error. status is "'+this.statusText+'" ('+this.status+"), readyState is "+this.readyState)};var p=function(a){if(a)for(var b in a)"authorization"===b.toLowerCase()&&(l.withCredentials=!0),l.setRequestHeader(b,a[b])};f&&p(f.httpRequestHeaders),p(O.getRequestHeadersFromMessage(d)),f&&"boolean"==typeof f.withCredentials&&(l.withCredentials=f.withCredentials),l.send(O.getLicenseRequestFromMessage(d))}function w(a){if(D("DRM: onNeedKey"),"cenc"!==a.key.initDataType)return void D("DRM: Only 'cenc' initData is supported! Ignoring initData of type: "+a.key.initDataType);var b=a.key.initData;if(ArrayBuffer.isView(b)&&(b=b.buffer),O){var c=g.default.getPSSHForKeySystem(O,b);if(c)for(var d=z.getAllInitData(),e=0;e<d.length;e++)if(y.initDataEquals(c,d[e]))return void D("DRM: Ignoring initData because we have already seen it!")}D("DRM: initData:",String.fromCharCode.apply(null,new Uint8Array(b)));var f=y.getSupportedKeySystems(b,K);if(0===f.length)return void D("DRM: Received needkey event with initData, but we don't support any of the key systems!");t(f,!1)}function x(){return y?y.getKeySystems():[]}a=a||{};var y=a.protectionKeyController,z=a.protectionModel,A=a.adapter,B=a.eventBus,C=a.events,D=a.log,E=a.BASE64,F=a.Constants,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0;return G={initialize:c,createKeySession:e,loadKeySession:f,removeKeySession:h,closeKeySession:j,setServerCertificate:l,setMediaElement:m,setSessionType:n,setRobustnessLevel:o,setProtectionData:p,getSupportedKeySystemsFromContentProtection:d,getKeySystems:x,reset:q},b(),G}Object.defineProperty(c,"__esModule",{value:!0});var f=a(147),g=d(f),h=a(169),i=d(h),j=a(168),k=d(j);e.__dashjs_factory_name="ProtectionController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{147:147,168:168,169:169}],151:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&(a.log&&(t=a.log),a.BASE64&&(x=a.BASE64))}function b(){v=[];var a=void 0;a=(0,o.default)(r).getInstance({BASE64:x}),v.push(a),a=(0,m.default)(r).getInstance({BASE64:x}),v.push(a),a=(0,i.default)(r).getInstance({BASE64:x}),v.push(a),z=a,a=(0,k.default)(r).getInstance({BASE64:x,log:t}),v.push(a),A=a}function c(){return v}function d(a){for(var b=0;b<v.length;b++)if(v[b].systemString===a)return v[b];return null}function e(a){return a===z||a===A}function f(a,b){if(a.byteLength===b.byteLength){for(var c=new Uint8Array(a),d=new Uint8Array(b),e=0;e<c.length;e++)if(c[e]!==d[e])return!1;return!0}return!1}function h(a){var b=void 0,c=void 0,d=void 0,e=void 0,f=[];if(a)for(d=0;d<v.length;++d)for(c=v[d],e=0;e<a.length;++e)if(b=a[e],b.schemeIdUri.toLowerCase()===c.schemeIdURI){var g=c.getInitData(b);g?f.push({ks:v[d],initData:g,cdmData:c.getCDMData()}):this.isClearKey(c)&&f.push({ks:c,initData:null})}return f}function j(a,b){for(var c=[],d=g.default.parsePSSHList(a),e=0;e<v.length;++e){var f=v[e].systemString,h=!b||f in b;v[e].uuid in d&&h&&c.push({ks:v[e],initData:d[v[e].uuid]})}return c}function l(a,b,c){if("license-release"===c||"individualization-request"===c)return null;var d=null;return b&&b.hasOwnProperty("drmtoday")?d=(0,q.default)(r).getInstance({BASE64:x}):a.systemString===y.default.WIDEVINE_KEYSTEM_STRING?d=(0,u.default)(r).getInstance():a.systemString===y.default.PLAYREADY_KEYSTEM_STRING?d=(0,s.default)(r).getInstance():a.systemString===y.default.CLEARKEY_KEYSTEM_STRING&&(d=(0,w.default)(r).getInstance()),d}function n(a,b,c){try{return a.getClearKeysFromProtectionData(b,c)}catch(d){return t("Failed to retrieve clearkeys from ProtectionData"),null}}function p(a){for(var b=(function(b){var c=null;return a&&(c=b in a?a[b]:null),c}),c=0;c<v.length;c++){var d=v[c];d.hasOwnProperty("init")&&d.init(b(d.systemString))}}var r=this.context,t=void 0,v=void 0,x=void 0,z=void 0,A=void 0;return{initialize:b,setProtectionData:p,isClearKey:e,initDataEquals:f,getKeySystems:c,getKeySystemBySystemString:d,getSupportedKeySystemsFromContentProtection:h,getSupportedKeySystems:j,getLicenseServer:l,processClearKeyLicenseRequest:n,setConfig:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(147),g=d(f),h=a(152),i=d(h),j=a(154),k=d(j),l=a(155),m=d(l),n=a(153),o=d(n),p=a(160),q=d(p),r=a(161),s=d(r),t=a(162),u=d(t),v=a(159),w=d(v),x=a(102),y=d(x);e.__dashjs_factory_name="ProtectionKeyController",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102,147:147,152:152,153:153,154:154,155:155,159:159,160:160,161:161,162:162}],152:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=null;if(a){for(var d=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b))),e=[],f=0;f<d.kids.length;f++){var h=d.kids[f],j=a.clearkeys&&a.clearkeys.hasOwnProperty(h)?a.clearkeys[h]:null;if(!j)throw new Error("DRM: ClearKey keyID ("+h+") is not known!");e.push(new g.default(h,j))}c=new i.default(e)}return c}function c(a){return k.default.parseInitDataFromContentProtection(a,j)}function d(){return null}function e(a){return new Uint8Array(a)}function f(){return null}function h(){return null}a=a||{};var j=a.BASE64;return{uuid:n,schemeIdURI:p,systemString:o,getInitData:c,getRequestHeadersFromMessage:d,getLicenseRequestFromMessage:e,getLicenseServerURLFromInitData:f,getCDMData:h,getClearKeysFromProtectionData:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(166),g=d(f),h=a(163),i=d(h),j=a(147),k=d(j),l=a(102),m=d(l),n="e2719d58-a985-b3c9-781a-b030af78d30e",o=m.default.CLEARKEY_KEYSTEM_STRING,p="urn:uuid:"+n;e.__dashjs_factory_name="KeySystemClearKey",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102,147:147,163:163,166:166}],153:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!q||!q.hasOwnProperty("decodeArray")||!q.hasOwnProperty("decodeArray"))throw new Error("Missing config parameter(s)")}function c(a){var b=void 0,c=void 0,d={},e=new DOMParser,f="utf16"===p?new Uint16Array(a):new Uint8Array(a);b=String.fromCharCode.apply(null,f),c=e.parseFromString(b,"application/xml");for(var g=c.getElementsByTagName("name"),h=c.getElementsByTagName("value"),i=0;i<g.length;i++)d[g[i].childNodes[0].nodeValue]=h[i].childNodes[0].nodeValue;return d.hasOwnProperty("Content")&&(d["Content-Type"]=d.Content,delete d.Content),d}function d(a){var c=void 0,d=void 0,e=null,f=new DOMParser,g="utf16"===p?new Uint16Array(a):new Uint8Array(a);if(b(),c=String.fromCharCode.apply(null,g),d=f.parseFromString(c,"application/xml"),d.getElementsByTagName("Challenge")[0]){var h=d.getElementsByTagName("Challenge")[0].childNodes[0].nodeValue;h&&(e=q.decode(h))}return e}function e(a){if(a)for(var b=new DataView(a),c=b.getUint16(4,!0),d=6,e=new DOMParser,f=0;f<c;f++){var g=b.getUint16(d,!0);d+=2;var h=b.getUint16(d,!0);if(d+=2,1===g){var i=a.slice(d,d+h),j=String.fromCharCode.apply(null,new Uint16Array(i)),k=e.parseFromString(j,"application/xml");if(k.getElementsByTagName("LA_URL")[0]){var l=k.getElementsByTagName("LA_URL")[0].childNodes[0].nodeValue;if(l)return l}if(k.getElementsByTagName("LUI_URL")[0]){var m=k.getElementsByTagName("LUI_URL")[0].childNodes[0].nodeValue;if(m)return m}}else d+=h}return null}function f(a){var c=new Uint8Array([112,115,115,104,0,0,0,0]),d=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),e=0,f=null,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0;if(b(),"pssh"in a)return g.default.parseInitDataFromContentProtection(a,q);if("pro"in a)f=q.decodeArray(a.pro.__text);else{if(!("prheader"in a))return null;f=q.decodeArray(a.prheader.__text)}return h=f.length,i=4+c.length+d.length+4+h,j=new ArrayBuffer(i),k=new Uint8Array(j),l=new DataView(j),l.setUint32(e,i),e+=4,k.set(c,e),e+=c.length,k.set(d,e),e+=d.length,l.setUint32(e,h),e+=4,k.set(f,e),e+=h,k.buffer}function h(a){if("utf8"!==a&&"utf16"!==a)throw new Error("Illegal PlayReady message format! -- "+a);p=a}function i(a){a&&(n=a)}function o(){var a=void 0,c=void 0,d=void 0,e=void 0;if(b(),n&&n.cdmData){for(a=[],e=0;e<n.cdmData.length;++e)a.push(n.cdmData.charCodeAt(e)),a.push(0);for(a=String.fromCharCode.apply(null,a),a=q.encode(a),c=m.replace("%CUSTOMDATA%",a),d=[],e=0;e<c.length;++e)d.push(c.charCodeAt(e)),d.push(0);return new Uint8Array(d).buffer}return null}a=a||{};var p="utf16",q=a.BASE64;return{uuid:j,schemeIdURI:l,systemString:k,getInitData:f,getRequestHeadersFromMessage:c,getLicenseRequestFromMessage:d,getLicenseServerURLFromInitData:e,getCDMData:o,setPlayReadyMessageFormat:h,init:i}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(147),g=d(f),h=a(102),i=d(h),j="9a04f079-9840-4286-ab92-e65be0885f95",k=i.default.PLAYREADY_KEYSTEM_STRING,l="urn:uuid:"+j,m='<PlayReadyCDMData type="LicenseAcquisition"><LicenseAcquisition version="1.0" Proactive="false"><CustomData encoding="base64encoded">%CUSTOMDATA%</CustomData></LicenseAcquisition></PlayReadyCDMData>',n=void 0;e.__dashjs_factory_name="KeySystemPlayReady",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102,147:147}],154:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=null;if(a){for(var d=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b))),e=[],f=0;f<d.kids.length;f++){var h=d.kids[f],j=a.clearkeys&&a.clearkeys.hasOwnProperty(h)?a.clearkeys[h]:null;if(!j)throw new Error("DRM: ClearKey keyID ("+h+") is not known!");e.push(new g.default(h,j))}c=new i.default(e),l("Warning: ClearKey schemeIdURI is using W3C Common PSSH systemID (1077efec-c0b2-4d02-ace3-3c1e52e2fb4b) in Content Protection. See DASH-IF IOP v4.1 section 7.6.2.4")}return c}function c(a){return k.default.parseInitDataFromContentProtection(a,j)}function d(){return null}function e(a){return new Uint8Array(a)}function f(){return null}function h(){return null}var j=a.BASE64,l=a.log;return{uuid:n,schemeIdURI:p,systemString:o,getInitData:c,getRequestHeadersFromMessage:d,getLicenseRequestFromMessage:e,getLicenseServerURLFromInitData:f,getCDMData:h,getClearKeysFromProtectionData:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(166),g=d(f),h=a(163),i=d(h),j=a(147),k=d(j),l=a(102),m=d(l),n="1077efec-c0b2-4d02-ace3-3c1e52e2fb4b",o=m.default.CLEARKEY_KEYSTEM_STRING,p="urn:uuid:"+n;e.__dashjs_factory_name="KeySystemW3CClearKey",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102,147:147,163:163,166:166}],155:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){a&&(m=a)}function c(a,b){var c=void 0,d=!0,e=16,f=void 0,g=void 0,h=void 0;for(c=new Uint8Array(a),g=0;g<=c.length-(e+2);g++)if(18===c[g]&&16===c[g+1]){for(f=g+2,h=f;h<f+e;h++)if(255!==c[h]){d=!1;break}break}return d&&c.set(b,f),c.buffer}function d(a){var b=null;return b=m&&m.pssh?n.decodeArray(m.pssh).buffer:g.default.parseInitDataFromContentProtection(a,n),b&&(b=c(b,a["cenc:default_KID"])),b}function e(){return null}function f(a){return new Uint8Array(a)}function h(){return null}function i(){return null}a=a||{};var m=null,n=a.BASE64;return{uuid:j,schemeIdURI:l,systemString:k,init:b,getInitData:d,getRequestHeadersFromMessage:e,getLicenseRequestFromMessage:f,getLicenseServerURLFromInitData:h,getCDMData:i}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(147),g=d(f),h=a(102),i=d(h),j="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",k=i.default.WIDEVINE_KEYSTEM_STRING,l="urn:uuid:"+j;e.__dashjs_factory_name="KeySystemWidevine",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102,147:147}],156:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){E=null,F=null,H=[],I=[],G=(0,g.default)(x).getInstance(),K=u()}function c(){E&&w();for(var a=0;a<I.length;a++)p(I[a]);y.trigger(z.TEARDOWN_COMPLETE)}function d(){return F}function e(){for(var a=[],b=0;b<H.length;b++)a.push(H[b].initData);for(var b=0;b<I.length;b++)a.push(I[b].initData);return a}function f(a){var b=E;b||(b=document.createElement("video"));for(var c=!1,d=0;d<a.length;d++)for(var e=a[d].ks.systemString,f=a[d].configs,g=null,h=null,i=0;i<f.length;i++){var j=f[i].videoCapabilities;if(j&&0!==j.length){h=[];for(var k=0;k<j.length;k++)""!==b.canPlayType(j[k].contentType,e)&&h.push(j[k])}if(!(!g&&!h||g&&0===g.length||h&&0===h.length)){c=!0;var l=new o.default(g,h),m=G.getKeySystemBySystemString(e);y.trigger(z.KEY_SYSTEM_ACCESS_COMPLETE,{data:new q.default(m,l)});break}}c||y.trigger(z.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})}function h(a){F=a.keySystem,y.trigger(z.INTERNAL_KEY_SYSTEM_SELECTED)}function j(a){E!==a&&(E&&w(),(E=a)&&(E.addEventListener(B.keyerror,K),E.addEventListener(B.needkey,K),E.addEventListener(B.keymessage,K),E.addEventListener(B.keyadded,K),y.trigger(z.VIDEO_ELEMENT_SELECTED)))}function l(a){if(!F)throw new Error("Can not create sessions until you have selected a key system");if(J||0===I.length){var b={sessionID:null,initData:a,getSessionID:function(){return this.sessionID},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"}};return H.push(b),E[B.generateKeyRequest](F.systemString,new Uint8Array(a)),b}throw new Error("Multiple sessions not allowed!")}function n(a,b){var c=a.sessionID;if(G.isClearKey(F))for(var d=0;d<b.keyPairs.length;d++)E[B.addKey](F.systemString,b.keyPairs[d].key,b.keyPairs[d].keyID,c);else E[B.addKey](F.systemString,new Uint8Array(b),new Uint8Array(a.initData),c)}function p(a){E[B.cancelKeyRequest](F.systemString,a.sessionID)}function r(){}function s(){}function t(){}function u(){return{handleEvent:function(a){var b=null;switch(a.type){case B.needkey:var c=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;y.trigger(z.NEED_KEY,{key:new i.default(c,"cenc")});break;case B.keyerror:if(b=v(I,a.sessionId),b||(b=v(H,a.sessionId)),b){var d="";switch(a.errorCode.code){case 1:d+="MEDIA_KEYERR_UNKNOWN - An unspecified error occurred. This value is used for errors that don't match any of the other codes.";break;case 2:d+="MEDIA_KEYERR_CLIENT - The Key System could not be installed or updated.";break;case 3:d+="MEDIA_KEYERR_SERVICE - The message passed into update indicated an error from the license service.";break;case 4:d+="MEDIA_KEYERR_OUTPUT - There is no available output device with the required characteristics for the content protection system.";break;case 5:d+="MEDIA_KEYERR_HARDWARECHANGE - A hardware configuration change caused a content protection error.";break;case 6:d+="MEDIA_KEYERR_DOMAIN - An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain."}d+=" System Code = "+a.systemCode,y.trigger(z.KEY_ERROR,{data:new k.default(b,d)})}else A("No session token found for key error");break;case B.keyadded:b=v(I,a.sessionId),b||(b=v(H,a.sessionId)),b?(A("DRM: Key added."),y.trigger(z.KEY_ADDED,{data:b})):A("No session token found for key added");break;case B.keymessage:if(J=null!==a.sessionId&&void 0!==a.sessionId,J?!(b=v(I,a.sessionId))&&H.length>0&&(b=H.shift(),I.push(b),b.sessionID=a.sessionId):H.length>0&&(b=H.shift(),I.push(b),0!==H.length&&C.mediaKeyMessageError("Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!")),b){var e=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;b.keyMessage=e,y.trigger(z.INTERNAL_KEY_MESSAGE,{data:new m.default(b,e,a.defaultURL)})}else A("No session token found for key message")}}}}function v(a,b){if(b&&a){for(var c=a.length,d=0;d<c;d++)if(a[d].sessionID==b)return a[d];return null}return null}function w(){E.removeEventListener(B.keyerror,K),E.removeEventListener(B.needkey,K),E.removeEventListener(B.keymessage,K),E.removeEventListener(B.keyadded,K)}a=a||{};var x=this.context,y=a.eventBus,z=a.events,A=a.log,B=a.api,C=a.errHandler,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0;return D={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:s,removeKeySession:t,reset:c},b(),D}Object.defineProperty(c,"__esModule",{value:!0});var f=a(151),g=d(f),h=a(170),i=d(h),j=a(164),k=d(j),l=a(165),m=d(l),n=a(168),o=d(n),p=a(167),q=d(p);e.__dashjs_factory_name="ProtectionModel_01b",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{151:151,164:164,165:165,167:167,168:168,170:170}],157:[function(a,b,c){"use strict";function d(a){ -return a&&a.__esModule?a:{default:a}}function e(a){function b(){E=null,F=null,G=null,H=[],J=(0,g.default)(z).getInstance(),I=w()}function c(){var a=H.length,b=void 0;0!==a?function(){for(var c=function(a){x(a),0===H.length&&(F?(F.removeEventListener("encrypted",I),F.setMediaKeys(null).then(function(){A.trigger(B.TEARDOWN_COMPLETE)})):A.trigger(B.TEARDOWN_COMPLETE))},d=0;d<a;d++)b=H[d],function(a){b.session.closed.then(function(){c(a)}),v(b).catch(function(){c(a)})}(b)}():A.trigger(B.TEARDOWN_COMPLETE)}function d(){return E}function e(){for(var a=[],b=0;b<H.length;b++)a.push(H[b].initData);return a}function f(a){u(a,0)}function h(a){a.mksa.createMediaKeys().then(function(b){E=a.keySystem,G=b,F&&F.setMediaKeys(G).then(function(){A.trigger(B.INTERNAL_KEY_SYSTEM_SELECTED)})}).catch(function(){A.trigger(B.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+a.keySystem.systemString+")! Could not create MediaKeys -- TODO"})})}function j(a){F!==a&&(F&&(F.removeEventListener("encrypted",I),F.setMediaKeys(null)),(F=a)&&(F.addEventListener("encrypted",I),G&&F.setMediaKeys(G)))}function l(a){if(!E||!G)throw new Error("Can not set server certificate until you have selected a key system");G.setServerCertificate(a).then(function(){C("DRM: License server certificate successfully updated."),A.trigger(B.SERVER_CERTIFICATE_UPDATED)}).catch(function(a){A.trigger(B.SERVER_CERTIFICATE_UPDATED,{error:"Error updating server certificate -- "+a.name})})}function n(a,b,c){if(!E||!G)throw new Error("Can not create sessions until you have selected a key system");var d=G.createSession(c),e=y(d,a,c),f=this.getKeySystem(),g=f.systemString===q.default.CLEARKEY_KEYSTEM_STRING&&b&&b.clearkeys?"keyids":"cenc";d.generateRequest(g,a).then(function(){C("DRM: Session created. SessionID = "+e.getSessionID()),A.trigger(B.KEY_SESSION_CREATED,{data:e})}).catch(function(a){x(e),A.trigger(B.KEY_SESSION_CREATED,{data:null,error:"Error generating key request -- "+a.name})})}function p(a,b){var c=a.session;J.isClearKey(E)&&(b=b.toJWK()),c.update(b).catch(function(b){A.trigger(B.KEY_ERROR,{data:new k.default(a,"Error sending update() message! "+b.name)})})}function r(a){if(!E||!G)throw new Error("Can not load sessions until you have selected a key system");var b=G.createSession();b.load(a).then(function(c){if(c){var d=y(b);C("DRM: Session created. SessionID = "+d.getSessionID()),A.trigger(B.KEY_SESSION_CREATED,{data:d})}else A.trigger(B.KEY_SESSION_CREATED,{data:null,error:"Could not load session! Invalid Session ID ("+a+")"})}).catch(function(b){A.trigger(B.KEY_SESSION_CREATED,{data:null,error:"Could not load session ("+a+")! "+b.name})})}function s(a){a.session.remove().then(function(){C("DRM: Session removed. SessionID = "+a.getSessionID()),A.trigger(B.KEY_SESSION_REMOVED,{data:a.getSessionID()})},function(b){A.trigger(B.KEY_SESSION_REMOVED,{data:null,error:"Error removing session ("+a.getSessionID()+"). "+b.name})})}function t(a){v(a).catch(function(b){x(a),A.trigger(B.KEY_SESSION_CLOSED,{data:null,error:"Error closing session ("+a.getSessionID()+") "+b.name})})}function u(a,b){!function(b){var c=a[b].ks,d=a[b].configs;navigator.requestMediaKeySystemAccess(c.systemString,d).then(function(a){var b="function"==typeof a.getConfiguration?a.getConfiguration():null,d=new o.default(c,b);d.mksa=a,A.trigger(B.KEY_SYSTEM_ACCESS_COMPLETE,{data:d})}).catch(function(){++b<a.length?u(a,b):A.trigger(B.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied!"})})}(b)}function v(a){var b=a.session;return b.removeEventListener("keystatuseschange",a),b.removeEventListener("message",a),b.close()}function w(){return{handleEvent:function(a){switch(a.type){case"encrypted":if(a.initData){var b=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;A.trigger(B.NEED_KEY,{key:new i.default(b,a.initDataType)})}}}}}function x(a){for(var b=0;b<H.length;b++)if(H[b]===a){H.splice(b,1);break}}function y(a,b,c){var d={session:a,initData:b,handleEvent:function(a){switch(a.type){case"keystatuseschange":A.trigger(B.KEY_STATUSES_CHANGED,{data:this});break;case"message":var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;A.trigger(B.INTERNAL_KEY_MESSAGE,{data:new m.default(this,b,void 0,a.messageType)})}},getSessionID:function(){return a.sessionId},getExpirationTime:function(){return a.expiration},getKeyStatuses:function(){return a.keyStatuses},getSessionType:function(){return c}};return a.addEventListener("keystatuseschange",d),a.addEventListener("message",d),a.closed.then(function(){x(d),C("DRM: Session closed. SessionID = "+d.getSessionID()),A.trigger(B.KEY_SESSION_CLOSED,{data:d.getSessionID()})}),H.push(d),d}a=a||{};var z=this.context,A=a.eventBus,B=a.events,C=a.log,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0;return D={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,setServerCertificate:l,createKeySession:n,updateKeySession:p,loadKeySession:r,removeKeySession:s,closeKeySession:t,reset:c},b(),D}Object.defineProperty(c,"__esModule",{value:!0});var f=a(151),g=d(f),h=a(170),i=d(h),j=a(164),k=d(j),l=a(165),m=d(l),n=a(167),o=d(n),p=a(102),q=d(p);e.__dashjs_factory_name="ProtectionModel_21Jan2015",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{102:102,151:151,164:164,165:165,167:167,170:170}],158:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){D=null,E=null,F=null,G=null,H=[],J=(0,g.default)(x).getInstance(),I=u()}function c(){try{for(var a=0;a<H.length;a++)p(H[a]);D&&D.removeEventListener(B.needkey,I),y.trigger(z.TEARDOWN_COMPLETE)}catch(b){y.trigger(z.TEARDOWN_COMPLETE,{error:"Error tearing down key sessions and MediaKeys! -- "+b.message})}}function d(){return E}function e(){for(var a=[],b=0;b<H.length;b++)a.push(H[b].initData);return a}function f(a){for(var b=!1,c=0;c<a.length;c++)for(var d=a[c].ks.systemString,e=a[c].configs,f=null,g=null,h=0;h<e.length;h++){var i=e[h].audioCapabilities,j=e[h].videoCapabilities;if(i&&0!==i.length){f=[];for(var k=0;k<i.length;k++)window[B.MediaKeys].isTypeSupported(d,i[k].contentType)&&f.push(i[k])}if(j&&0!==j.length){g=[];for(var l=0;l<j.length;l++)window[B.MediaKeys].isTypeSupported(d,j[l].contentType)&&g.push(j[l])}if(!(!f&&!g||f&&0===f.length||g&&0===g.length)){b=!0;var m=new o.default(f,g),n=J.getKeySystemBySystemString(d);y.trigger(z.KEY_SYSTEM_ACCESS_COMPLETE,{data:new q.default(n,m)});break}}b||y.trigger(z.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})}function h(a){try{F=a.mediaKeys=new window[B.MediaKeys](a.keySystem.systemString),E=a.keySystem,G=a,D&&v(),y.trigger(z.INTERNAL_KEY_SYSTEM_SELECTED)}catch(b){y.trigger(z.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+E.systemString+")! Could not create MediaKeys -- TODO"})}}function j(a){D!==a&&(D&&D.removeEventListener(B.needkey,I),(D=a)&&(D.addEventListener(B.needkey,I),F&&v()))}function l(a,b,c,d){if(!E||!F||!G)throw new Error("Can not create sessions until you have selected a key system");var e=null;if(null!==G.ksConfiguration.videoCapabilities&&G.ksConfiguration.videoCapabilities.length>0&&(e=G.ksConfiguration.videoCapabilities[0]),null===e&&null!==G.ksConfiguration.audioCapabilities&&G.ksConfiguration.audioCapabilities.length>0&&(e=G.ksConfiguration.audioCapabilities[0]),null===e)throw new Error("Can not create sessions for unknown content types.");var f=e.contentType,g=F.createSession(f,new Uint8Array(a),d?new Uint8Array(d):null),h=w(g,a);g.addEventListener(B.error,h),g.addEventListener(B.message,h),g.addEventListener(B.ready,h),g.addEventListener(B.close,h),H.push(h),A("DRM: Session created. SessionID = "+h.getSessionID()),y.trigger(z.KEY_SESSION_CREATED,{data:h})}function n(a,b){var c=a.session;J.isClearKey(E)?c.update(new Uint8Array(b.toJWK())):c.update(new Uint8Array(b))}function p(a){var b=a.session;b.removeEventListener(B.error,a),b.removeEventListener(B.message,a),b.removeEventListener(B.ready,a),b.removeEventListener(B.close,a);for(var c=0;c<H.length;c++)if(H[c]===a){H.splice(c,1);break}b[B.release]()}function r(){}function s(){}function t(){}function u(){return{handleEvent:function(a){switch(a.type){case B.needkey:if(a.initData){var b=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;y.trigger(z.NEED_KEY,{key:new i.default(b,"cenc")})}}}}}function v(){var a=null,b=function(){D.removeEventListener("loadedmetadata",a),D[B.setMediaKeys](F),y.trigger(z.VIDEO_ELEMENT_SELECTED)};D.readyState>=1?b():(a=b.bind(this),D.addEventListener("loadedmetadata",a))}function w(a,b){return{session:a,initData:b,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(a){switch(a.type){case B.error:y.trigger(z.KEY_ERROR,{data:new k.default(this,"KeyError")});break;case B.message:var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;y.trigger(z.INTERNAL_KEY_MESSAGE,{data:new m.default(this,b,a.destinationURL)});break;case B.ready:A("DRM: Key added."),y.trigger(z.KEY_ADDED);break;case B.close:A("DRM: Session closed. SessionID = "+this.getSessionID()),y.trigger(z.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}a=a||{};var x=this.context,y=a.eventBus,z=a.events,A=a.log,B=a.api,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0;return C={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:s,removeKeySession:t,reset:c},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(151),g=d(f),h=a(170),i=d(h),j=a(164),k=d(j),l=a(165),m=d(l),n=a(168),o=d(n),p=a(167),q=d(p);e.__dashjs_factory_name="ProtectionModel_3Feb2014",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{151:151,164:164,165:165,167:167,168:168,170:170}],159:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b)));a+="/?";for(var d=0;d<c.kids.length;d++)a+=c.kids[d]+"&";return a=a.substring(0,a.length-1)}function b(){return"GET"}function c(){return"json"}function d(a){if(!a.hasOwnProperty("keys"))return null;for(var b=[],c=0;c<a.keys.length;c++){var d=a.keys[c],e=d.kid.replace(/=/g,""),f=d.k.replace(/=/g,"");b.push(new g.default(e,f))}return new i.default(b)}function e(a){return String.fromCharCode.apply(null,new Uint8Array(a))}return{getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(166),g=d(f),h=a(163),i=d(h);e.__dashjs_factory_name="ClearKey",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{163:163,166:166}],160:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!i||!i.hasOwnProperty("decodeArray"))throw new Error("Missing config parameter(s)")}function c(a){return a}function d(){return"POST"}function e(a){return j[a].responseType}function f(a,c){return b(),j[c].getLicenseMessage(a)}function h(a,b){return j[b].getErrorResponse(a)}a=a||{};var i=a.BASE64,j={};j[g.default.WIDEVINE_KEYSTEM_STRING]={responseType:"json",getLicenseMessage:function(a){return i.decodeArray(a.license)},getErrorResponse:function(a){return a}},j[g.default.PLAYREADY_KEYSTEM_STRING]={responseType:"arraybuffer",getLicenseMessage:function(a){return a},getErrorResponse:function(a){return String.fromCharCode.apply(null,new Uint8Array(a))}};return{getServerURLFromMessage:c,getHTTPMethod:d,getResponseType:e,getLicenseMessage:f,getErrorResponse:h}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(102),g=d(f);e.__dashjs_factory_name="DRMToday",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102}],161:[function(a,b,c){"use strict";function d(){function a(a){var b=String.fromCharCode.apply(null,new Uint8Array(a));return decodeURIComponent(escape(b))}function b(b){if(window.DOMParser){var c=a(b),d=new window.DOMParser,e=d.parseFromString(c,"text/xml"),f=e?e.getElementsByTagNameNS(i,"Envelope")[0]:null,g=f?f.getElementsByTagNameNS(i,"Body")[0]:null;if(g?g.getElementsByTagNameNS(i,"Fault")[0]:null)return null}return b}function c(b){var c="",d="",e="",f=-1,g=-1;if(window.DOMParser){var h=a(b),j=new window.DOMParser,k=j.parseFromString(h,"text/xml"),l=k?k.getElementsByTagNameNS(i,"Envelope")[0]:null,m=l?l.getElementsByTagNameNS(i,"Body")[0]:null,n=m?m.getElementsByTagNameNS(i,"Fault")[0]:null,o=n?n.getElementsByTagName("detail")[0]:null,p=o?o.getElementsByTagName("Exception")[0]:null,q=null;if(null===n)return h;q=n.getElementsByTagName("faultstring")[0].firstChild,c=q?q.nodeValue:null,null!==p&&(q=p.getElementsByTagName("StatusCode")[0],d=q?q.firstChild.nodeValue:null,q=p.getElementsByTagName("Message")[0],e=q?q.firstChild.nodeValue:null,f=e?e.lastIndexOf("[")+1:-1,g=e?e.indexOf("]"):-1,e=e?e.substring(f,g):"")}var r="code: "+d+", name: "+c;return e&&(r+=", message: "+e),r}function d(a){return a}function e(){return"POST"}function f(){return"arraybuffer"}function g(a){return b.call(this,a)}function h(a){return c.call(this,a)}var i="http://schemas.xmlsoap.org/soap/envelope/";return{getServerURLFromMessage:d,getHTTPMethod:e,getResponseType:f,getLicenseMessage:g,getErrorResponse:h}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="PlayReady",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],162:[function(a,b,c){"use strict";function d(){function a(a){return a}function b(){return"POST"}function c(){return"arraybuffer"}function d(a){return a}function e(a){return String.fromCharCode.apply(null,new Uint8Array(a))}return{getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="Widevine",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],163:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b,c){if(d(this,a),c&&"persistent"!==c&&"temporary"!==c)throw new Error("Invalid ClearKey key set type! Must be one of 'persistent' or 'temporary'");this.keyPairs=b,this.type=c}return e(a,[{key:"toJWK",value:function(){var a=void 0,b=this.keyPairs.length,c={keys:[]};for(a=0;a<b;a++){var d={kty:"oct",alg:"A128KW",kid:this.keyPairs[a].keyID,k:this.keyPairs[a].key};c.keys.push(d)}this.type&&(c.type=this.type);var e=JSON.stringify(c),f=e.length,g=new ArrayBuffer(f),h=new Uint8Array(g);for(a=0;a<f;a++)h[a]=e.charCodeAt(a);return g}}]),a}();c.default=f,b.exports=c.default},{}],164:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.sessionToken=b,this.error=c};c.default=e,b.exports=c.default},{}],165:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c,e,f){d(this,a),this.sessionToken=b,this.message=c,this.defaultURL=e,this.messageType=f||"license-request"};c.default=e,b.exports=c.default},{}],166:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.keyID=b,this.key=c};c.default=e,b.exports=c.default},{}],167:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.keySystem=b,this.ksConfiguration=c};c.default=e,b.exports=c.default},{}],168:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c,e,f,g){d(this,a),this.initDataTypes=["cenc"],b&&b.length&&(this.audioCapabilities=b),c&&c.length&&(this.videoCapabilities=c),this.distinctiveIdentifier=e,this.persistentState=f,this.sessionTypes=g};c.default=e,b.exports=c.default},{}],169:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.contentType=b,this.robustness=c};c.default=e,b.exports=c.default},{}],170:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.initData=b,this.initDataType=c};c.default=e,b.exports=c.default},{}],171:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=b.droppedVideoFrames-e;e=b.droppedVideoFrames;var g=b.totalVideoFrames-f;f=b.totalVideoFrames,isNaN(a)||(d[a]?(d[a].droppedVideoFrames+=c,d[a].totalVideoFrames+=g):d[a]={droppedVideoFrames:c,totalVideoFrames:g})}function b(){return d}function c(a){d=[],e=a.droppedVideoFrames,f=a.totalVideoFrames}var d=[],e=0,f=0;return{push:a,getFrameHistory:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="DroppedFramesHistory";var h=g.default.getClassFactory(e);c.default=h,b.exports=c.default},{51:51}],172:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){return n.mediaInfo.type}function c(){return n.mediaInfo.streamInfo}function d(){return n.mediaInfo}function e(){return n}function f(){return m}function g(){return l}function h(){return o}function i(){return p}function j(){return q}function k(){return r}a=a||{};var l=a.abrController,m=a.streamProcessor,n=a.streamProcessor.getCurrentRepresentationInfo(),o=a.switchHistory,p=a.droppedFramesHistory,q=a.currentRequest,r=a.useBufferOccupancyABR;return{getMediaType:b,getMediaInfo:d,getDroppedFramesHistory:i,getCurrentRequest:j,getSwitchHistory:h,getStreamInfo:c,getStreamProcessor:f,getAbrController:g,getRepresentationInfo:e,useBufferOccupancyABR:k}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="RulesContext",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],173:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){function d(a){var b=i.DEFAULT;return a!==i.DEFAULT&&a!==i.STRONG&&a!==i.WEAK||(b=a),b}var e=void 0,f=void 0,g=void 0;return e=void 0===a?h:a,f=d(c),g=void 0===b?null:b,{quality:e,reason:g,priority:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=-1,i={DEFAULT:.5,STRONG:1,WEAK:0};e.__dashjs_factory_name="SwitchRequest";var j=g.default.getClassFactory(e);j.NO_CHANGE=h,j.PRIORITY=i,g.default.updateClassFactory(e.__dashjs_factory_name,j),c.default=j,b.exports=c.default},{51:51}],174:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a.newValue===i.default.NO_CHANGE&&(a.newValue=a.oldValue),d[a.oldValue]||(d[a.oldValue]={noDrops:0,drops:0,dropSize:0});var b=a.newValue-a.oldValue,c=b<0?1:0,f=c?-b:0,g=c?0:1;if(d[a.oldValue].drops+=c,d[a.oldValue].dropSize+=f,d[a.oldValue].noDrops+=g,e.push({idx:a.oldValue,noDrop:g,drop:c,dropSize:f}),e.length>j){var h=e.shift();d[h.idx].drops-=h.drop,d[h.idx].dropSize-=h.dropSize,d[h.idx].noDrops-=h.noDrop}}function b(){return d}function c(){d=[],e=[]}var d=[],e=[];return{push:a,getSwitchRequests:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(173),i=d(h),j=8;e.__dashjs_factory_name="SwitchRequestHistory";var k=g.default.getClassFactory(e);c.default=k,b.exports=c.default},{173:173,51:51}],175:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){F={throughputHalfLife:{fast:x,slow:w},latencyHalfLife:{fast:z,slow:y}},p()}function c(a,b,c){return a===g.default.VIDEO?c<A.getCacheLoadThresholdForType(g.default.VIDEO):a===g.default.AUDIO?c<A.getCacheLoadThresholdForType(g.default.AUDIO):void 0}function d(a,b,d){if(b.trace&&b.trace.length){var f=b.tresponse.getTime()-b.trequest.getTime()||1,g=b._tfinish.getTime()-b.tresponse.getTime()||1,h=b.trace.reduce(function(a,b){return a+b.b[0]},0),i=d?g:f+g,j=Math.round(8*h/i);if(n(a),c(a,f,g)){if(B[a].length>0&&!B[a].hasCachedEntries)return;B[a].hasCachedEntries=!0}else B[a]&&B[a].hasCachedEntries&&o(a);B[a].push(j),B[a].length>q&&B[a].shift(),C[a].push(f),C[a].length>q&&C[a].shift(),e(D[a],j,.001*g,F.throughputHalfLife),e(E[a],f,1,F.latencyHalfLife)}}function e(a,b,c,d){var e=Math.pow(.5,c/d.fast);a.fastEstimate=(1-e)*b+e*a.fastEstimate;var f=Math.pow(.5,c/d.slow);a.slowEstimate=(1-f)*b+f*a.slowEstimate,a.totalWeight+=c}function f(a,b,c){var d=void 0,e=void 0;if(a?(d=B[b],e=c?r:s):(d=C[b],e=t),d){if(e>=d.length)e=d.length;else if(a)for(var f=1;f<e;++f){var g=d[-f]/d[-f-1];if((g>=v||g<=1/u)&&(e+=1)===d.length)break}}else e=0;return e}function h(a,b,c){return A.getMovingAverageMethod()!==g.default.MOVING_AVERAGE_SLIDING_WINDOW?j(a,b):i(a,b,c)}function i(a,b,c){var d=f(a,b,c),e=a?B:C,g=e[b];return 0!==d&&g&&0!==g.length?(g=g.slice(-d),g.reduce(function(a,b){return a+b})/g.length):NaN}function j(a,b){var c=a?F.throughputHalfLife:F.latencyHalfLife,d=a?D[b]:E[b];if(!d||d.totalWeight<=0)return NaN;var e=d.fastEstimate/(1-Math.pow(.5,d.totalWeight/c.fast)),f=d.slowEstimate/(1-Math.pow(.5,d.totalWeight/c.slow));return a?Math.min(e,f):Math.max(e,f)}function k(a,b){return h(!0,a,b)}function l(a,b){var c=k(a,b);return isNaN(c)||(c*=A.getBandwidthSafetyFactor()),c}function m(a){return h(!1,a)}function n(a){B[a]=B[a]||[],C[a]=C[a]||[],D[a]=D[a]||{fastEstimate:0,slowEstimate:0,totalWeight:0},E[a]=E[a]||{fastEstimate:0,slowEstimate:0,totalWeight:0}}function o(a){delete B[a],delete C[a],delete D[a],delete E[a],n(a)}function p(){B={},C={},D={},E={}}a=a||{};var q=20,r=3,s=4,t=4,u=1.3,v=1.3,w=8,x=3,y=2,z=1,A=a.mediaPlayerModel,B=void 0,C=void 0,D=void 0,E=void 0,F=void 0,G={push:d,getAverageThroughput:k,getSafeAverageThroughput:l,getAverageLatency:m,reset:p};return b(),G}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="ThroughputHistory",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,51:51}],176:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){r=[],s=[],l.getUseDefaultABRRules()&&(r.push((0,q.default)(j).create({metricsModel:n,dashMetrics:p,mediaPlayerModel:l})),r.push((0,g.default)(j).create({metricsModel:n,dashMetrics:p})),r.push((0,i.default)(j).create({metricsModel:n,dashMetrics:p})),r.push((0,o.default)(j).create()),r.push((0,m.default)(j).create()),s.push((0,k.default)(j).create({metricsModel:n,dashMetrics:p,mediaPlayerModel:l}))),l.getABRCustomRules().forEach(function(a){a.type===v&&r.push(a.rule(j).create()),a.type===w&&s.push(a.rule(j).create())})}function c(a){return a.filter(function(a){return a.quality>u.default.NO_CHANGE})}function d(a){var b={},c=void 0,d=void 0,e=void 0,f=void 0,g=void 0;if(0!==a.length){for(b[u.default.PRIORITY.STRONG]=u.default.NO_CHANGE,b[u.default.PRIORITY.WEAK]=u.default.NO_CHANGE,b[u.default.PRIORITY.DEFAULT]=u.default.NO_CHANGE,c=0,d=a.length;c<d;c+=1)e=a[c],e.quality!==u.default.NO_CHANGE&&(b[e.priority]=b[e.priority]>u.default.NO_CHANGE?Math.min(b[e.priority],e.quality):e.quality);return b[u.default.PRIORITY.WEAK]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.WEAK]),b[u.default.PRIORITY.DEFAULT]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.DEFAULT]),b[u.default.PRIORITY.STRONG]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.STRONG]),f!==u.default.NO_CHANGE&&(g=f),(0,u.default)(j).create(g)}}function e(a){return d(c(r.map(function(b){return b.getMaxIndex(a)})))||(0,u.default)(j).create()}function f(a){return d(c(s.map(function(b){return b.shouldAbandon(a)})))||(0,u.default)(j).create()}function h(){[r,s].forEach(function(a){a&&a.length&&a.forEach(function(a){return a.reset&&a.reset()})}),r=[],s=[]}a=a||{};var j=this.context,l=a.mediaPlayerModel,n=a.metricsModel,p=a.dashMetrics,r=void 0,s=void 0;return{initialize:b,reset:h,getMaxQuality:e,shouldAbandonFragment:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(182),g=d(f),h=a(180),i=d(h),j=a(177),k=d(j),l=a(179),m=d(l),n=a(181),o=d(n),p=a(178),q=d(p),r=a(51),s=d(r),t=a(173),u=d(t),v="qualitySwitchRules",w="abandonFragmentRules";e.__dashjs_factory_name="ABRRulesCollection";var x=s.default.getClassFactory(e);x.QUALITY_SWITCH_RULES=v,x.ABANDON_FRAGMENT_RULES=w,s.default.updateSingletonFactory(e.__dashjs_factory_name,x),c.default=x,b.exports=c.default},{173:173,177:177,178:178,179:179,180:180,181:181,182:182,51:51}],177:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h()}function c(a,b){r[a]=r[a]||{},r[a][b]=r[a][b]||{}}function d(a,b){t[a]=t[a]||[],t[a].push(b)}function f(a){var b=(0,g.default)(m).create(g.default.NO_CHANGE,{name:e.__dashjs_factory_name});if(!(a&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getMediaType")&&a.hasOwnProperty("getCurrentRequest")&&a.hasOwnProperty("getRepresentationInfo")&&a.hasOwnProperty("getAbrController")))return b;var f=a.getMediaInfo(),h=a.getMediaType(),k=a.getCurrentRequest();if(!isNaN(k.index)){c(h,k.index);var u=o.getStableBufferTime();if(q.getCurrentBufferLevel(p.getReadOnlyMetricsFor(h))>u)return b;var v=r[h][k.index];if(null===v||null===k.firstByteDate||s.hasOwnProperty(v.id))return b;if(void 0===v.firstByteTime&&(t[h]=[],v.firstByteTime=k.firstByteDate.getTime(),v.segmentDuration=k.duration,v.bytesTotal=k.bytesTotal,v.id=k.index),v.bytesLoaded=k.bytesLoaded,v.elapsedTime=(new Date).getTime()-v.firstByteTime,v.bytesLoaded>0&&v.elapsedTime>0&&d(h,Math.round(8*v.bytesLoaded/v.elapsedTime)),t[h].length>=l&&v.elapsedTime>j&&v.bytesLoaded<v.bytesTotal){var w=t[h].reduce(function(a,b){return a+b},0);if(v.measuredBandwidthInKbps=Math.round(w/t[h].length),v.estimatedTimeOfDownload=+(8*v.bytesTotal/v.measuredBandwidthInKbps/1e3).toFixed(2),v.estimatedTimeOfDownload<v.segmentDuration*i||0===a.getRepresentationInfo().quality)return b;if(!s.hasOwnProperty(v.id)){var x=a.getAbrController(),y=v.bytesTotal-v.bytesLoaded,z=x.getBitrateList(f),A=x.getQualityForBitrate(f,v.measuredBandwidthInKbps*o.getBandwidthSafetyFactor());y>v.bytesTotal*z[A].bitrate/z[x.getQualityFor(h,f.streamInfo)].bitrate&&(b.quality=A,b.reason.throughput=v.measuredBandwidthInKbps,b.reason.fragmentID=v.id,s[v.id]=v,n("AbandonRequestsRule ( ",h,"frag id",v.id,") is asking to abandon and switch to quality to ",A," measured bandwidth was",v.measuredBandwidthInKbps),delete r[h][v.id])}}else v.bytesLoaded===v.bytesTotal&&delete r[h][v.id]}return b}function h(){r={},s={},t=[]}a=a||{};var i=1.8,j=500,l=5,m=this.context,n=(0,k.default)(m).getInstance().log,o=a.mediaPlayerModel,p=a.metricsModel,q=a.dashMetrics,r=void 0,s=void 0,t=void 0,u={shouldAbandon:f,reset:h};return b(),u}Object.defineProperty(c,"__esModule",{value:!0});var f=a(173),g=d(f),h=a(51),i=d(h),j=a(49),k=d(j);e.__dashjs_factory_name="AbandonRequestsRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{173:173,49:49,51:51}],178:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H(),O.on(p.default.BUFFER_EMPTY,y,P),O.on(p.default.PLAYBACK_SEEKING,z,P),O.on(p.default.PERIOD_SWITCH_STARTED,A,P),O.on(p.default.MEDIA_FRAGMENT_LOADED,B,P),O.on(p.default.METRIC_ADDED,C,P),O.on(p.default.QUALITY_CHANGE_REQUESTED,E,P),O.on(p.default.FRAGMENT_LOADING_ABANDONED,F,P)}function c(a){return a.map(function(a){return Math.log(a)})}function d(a,b,c){var d=c.reduce(function(a,b,d){return b>c[a]?d:a},0);if(0===d)return null;var e=Math.max(a,v+w*b.length),f=(c[d]-1)/(e/v-1);return{gp:f,Vp:v/f}}function e(a){var b={},e=a.getMediaInfo(),g=e.bitrateList.map(function(a){return a.bandwidth}),h=c(g);h=h.map(function(a){return a-h[0]+1});var i=N.getStableBufferTime(),j=d(i,g,h);return j?(b.state=t,b.bitrates=g,b.utilities=h,b.stableBufferTime=i,b.Vp=j.Vp,b.gp=j.gp,b.lastQuality=0,f(b)):b.state=s,b}function f(a){a.placeholderBuffer=0,a.mostAdvancedSegmentStart=NaN,a.lastSegmentWasReplacement=!1,a.lastSegmentStart=NaN,a.lastSegmentDurationS=NaN,a.lastSegmentRequestTimeMs=NaN,a.lastSegmentFinishTimeMs=NaN}function h(a,b){var c=N.getStableBufferTime();if(a.stableBufferTime!==c){var e=d(c,a.bitrates,a.utilities);if(e.Vp!==a.Vp||e.gp!==a.gp){var f=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(b)),g=f+a.placeholderBuffer;g-=v,g*=e.Vp/a.Vp,g+=v,a.stableBufferTime=c,a.Vp=e.Vp,a.gp=e.gp,a.placeholderBuffer=Math.max(0,g-f)}}}function j(a){var b=a.getMediaType(),c=Q[b];return c?c.state!==s&&h(c,b):(c=e(a),Q[b]=c),c}function k(a,b){for(var c=a.bitrates.length,d=NaN,e=NaN,f=0;f<c;++f){var g=(a.Vp*(a.utilities[f]+a.gp)-b)/a.bitrates[f];(isNaN(e)||g>=e)&&(e=g,d=f)}return d}function m(a,b){return a.Vp*(a.utilities[b]+a.gp)}function o(a,b){for(var c=a.bitrates[b],d=a.utilities[b],e=0,f=b-1;f>=0;--f)if(a.utilities[f]<a.utilities[b]){var g=a.bitrates[f],h=a.utilities[f],i=a.Vp*(a.gp+(c*h-g*d)/(c-g));e=Math.max(e,i)}return e}function q(a,b){var c=Date.now();if(isNaN(a.lastSegmentFinishTimeMs)){if(!isNaN(a.lastCallTimeMs)){var d=.001*(c-a.lastCallTimeMs);a.placeholderBuffer+=Math.max(0,d)}}else{var d=.001*(c-a.lastSegmentFinishTimeMs);a.placeholderBuffer+=Math.max(0,d)}a.lastCallTimeMs=c,a.lastSegmentStart=NaN,a.lastSegmentRequestTimeMs=NaN,a.lastSegmentFinishTimeMs=NaN,h(a,b)}function y(){for(var a in Q)Q.hasOwnProperty(a)&&Q[a].state===u&&(Q[a].placeholderBuffer=0)}function z(){for(var a in Q)if(Q.hasOwnProperty(a)){var b=Q[a];b.state!==s&&(b.state=t,f(b))}}function A(){}function B(a){if(a&&a.chunk&&a.chunk.mediaInfo){var b=Q[a.chunk.mediaInfo.type];if(b&&b.state!==s){var c=a.chunk.start;isNaN(b.mostAdvancedSegmentStart)||c>b.mostAdvancedSegmentStart?(b.mostAdvancedSegmentStart=c,b.lastSegmentWasReplacement=!1):b.lastSegmentWasReplacement=!0,b.lastSegmentStart=c,b.lastSegmentDurationS=a.chunk.duration,b.lastQuality=a.chunk.quality,D(b,a.chunk.mediaInfo.type)}}}function C(a){if(a&&a.metric===g.default.HTTP_REQUEST&&a.value&&a.value.type===l.HTTPRequest.MEDIA_SEGMENT_TYPE&&a.value.trace&&a.value.trace.length){var b=Q[a.mediaType];b&&b.state!==s&&(b.lastSegmentRequestTimeMs=a.value.trequest.getTime(),b.lastSegmentFinishTimeMs=a.value._tfinish.getTime(),D(b,a.mediaType))}}function D(a,b){if(!isNaN(a.lastSegmentStart)&&!isNaN(a.lastSegmentRequestTimeMs)&&!isNaN(a.placeholderBuffer)){if(a.placeholderBuffer*=x,!isNaN(a.lastSegmentFinishTimeMs)){var c=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(b)),d=c+.001*(a.lastSegmentFinishTimeMs-a.lastSegmentRequestTimeMs),e=m(a,a.lastQuality),f=Math.max(0,e-d);a.placeholderBuffer=Math.min(f,a.placeholderBuffer)}a.lastSegmentWasReplacement&&!isNaN(a.lastSegmentDurationS)&&(a.placeholderBuffer+=a.lastSegmentDurationS),a.lastSegmentStart=NaN,a.lastSegmentRequestTimeMs=NaN}}function E(a){if(a){var b=Q[a.mediaType];b&&b.state!==s&&(b.abrQuality=a.newQuality)}}function F(a){if(a){var b=Q[a.mediaType];if(b&&b.state!==s){var c=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(a.mediaType)),d=void 0;d=b.abrQuality>0?o(b,b.abrQuality):v;var e=Math.max(0,d-c) -;b.placeholderBuffer=Math.min(b.placeholderBuffer,e)}}}function G(a){var b=a.getMediaInfo(),c=a.getMediaType(),d=M.getReadOnlyMetricsFor(c),e=a.getStreamProcessor(),g=a.getStreamInfo(),h=a.getAbrController(),l=h.getThroughputHistory(),n=g?g.id:null,p=g&&g.manifestInfo&&g.manifestInfo.isDynamic,r=a.useBufferOccupancyABR(),v=(0,i.default)(J).create();if(v.reason=v.reason||{},!r)return v;e.getScheduleController().setTimeToLoadDelay(0);var w=j(a);if(w.state===s)return K("BOLA ABR rule invoked for media type '"+c+"' with only one bitrate."),v;var x=L.getCurrentBufferLevel(d),y=l.getAverageThroughput(c,p),z=l.getSafeAverageThroughput(c,p),A=l.getAverageLatency(c),B=void 0;if(v.reason.state=w.state,v.reason.throughput=y,v.reason.latency=A,isNaN(y))return v;switch(w.state){case t:B=h.getQualityForBitrate(b,z,A),v.quality=B,v.reason.throughput=z,w.placeholderBuffer=Math.max(0,o(w,B)-x),w.lastQuality=B,!isNaN(w.lastSegmentDurationS)&&x>=w.lastSegmentDurationS&&(w.state=u);break;case u:q(w,c),B=k(w,x+w.placeholderBuffer);var C=h.getQualityForBitrate(b,z,A);B>w.lastQuality&&B>C&&(B=Math.max(C,w.lastQuality));var D=Math.max(0,x+w.placeholderBuffer-m(w,B));D<=w.placeholderBuffer?(w.placeholderBuffer-=D,D=0):(D-=w.placeholderBuffer,w.placeholderBuffer=0,B<h.getTopQualityIndexFor(c,n)?e.getScheduleController().setTimeToLoadDelay(1e3*D):D=0),v.quality=B,v.reason.throughput=y,v.reason.latency=A,v.reason.bufferLevel=x,v.reason.placeholderBuffer=w.placeholderBuffer,v.reason.delay=D,w.lastQuality=B;break;default:K("BOLA ABR rule invoked in bad state."),v.quality=h.getQualityForBitrate(b,z,A),v.reason.state=w.state,v.reason.throughput=z,v.reason.latency=A,w.state=t,f(w)}return v}function H(){Q={}}function I(){H(),O.off(p.default.BUFFER_EMPTY,y,P),O.off(p.default.PLAYBACK_SEEKING,z,P),O.off(p.default.PERIOD_SWITCH_STARTED,A,P),O.off(p.default.MEDIA_FRAGMENT_LOADED,B,P),O.off(p.default.METRIC_ADDED,C,P),O.off(p.default.QUALITY_CHANGE_REQUESTED,E,P),O.off(p.default.FRAGMENT_LOADING_ABANDONED,F,P)}a=a||{};var J=this.context,K=(0,r.default)(J).getInstance().log,L=a.dashMetrics,M=a.metricsModel,N=a.mediaPlayerModel,O=(0,n.default)(J).getInstance(),P=void 0,Q=void 0;return P={getMaxIndex:G,reset:I},b(),P}Object.defineProperty(c,"__esModule",{value:!0});var f=a(101),g=d(f),h=a(173),i=d(h),j=a(51),k=d(j),l=a(230),m=a(50),n=d(m),o=a(54),p=d(o),q=a(49),r=d(q),s=0,t=1,u=2,v=10,w=2,x=.99;e.__dashjs_factory_name="BolaRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{101:101,173:173,230:230,49:49,50:50,51:51,54:54}],179:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var f=a.getDroppedFramesHistory();if(f){for(var g=f.getFrameHistory(),h=0,j=0,k=i.default.NO_CHANGE,l=1;l<g.length;l++)if(g[l]&&(h=g[l].droppedVideoFrames,(j=g[l].totalVideoFrames)>e&&h/j>d)){k=l-1,c("DroppedFramesRule, index: "+k+" Dropped Frames: "+h+" Total Frames: "+j);break}return(0,i.default)(b).create(k,{droppedFrames:h})}return(0,i.default)(b).create()}var b=this.context,c=(0,k.default)(b).getInstance().log,d=.15,e=375;return{getMaxIndex:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(173),i=d(h),j=a(49),k=d(j);e.__dashjs_factory_name="DroppedFramesRule",c.default=g.default.getClassFactory(e),b.exports=c.default},{173:173,49:49,51:51}],180:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){f(),p.on(k.default.PLAYBACK_SEEKING,h,t)}function c(){if(!(r&&r.hasOwnProperty("getReadOnlyMetricsFor")&&s&&s.hasOwnProperty("getCurrentBufferLevel")))throw new Error("Missing config parameter(s)")}function d(a){var b=(0,q.default)(m).create();if(!a||!a.hasOwnProperty("getMediaType"))return b;c();var d=a.getMediaType(),f=r.getReadOnlyMetricsFor(d),h=f.BufferState.length>0?f.BufferState[f.BufferState.length-1]:null,i=a.getRepresentationInfo(),j=i.fragmentDuration;if(!h||!e(d,h)||!j)return b;if(h.state===g.default.BUFFER_EMPTY)n("Switch to index 0; buffer is empty."),b.quality=0,b.reason="InsufficientBufferRule: Buffer is empty";else{var k=a.getMediaInfo(),o=a.getAbrController(),p=o.getThroughputHistory(),t=s.getCurrentBufferLevel(f),u=p.getAverageThroughput(d),v=p.getAverageLatency(d),w=u*(t/j)*l;b.quality=o.getQualityForBitrate(k,w,v),b.reason="InsufficientBufferRule: being conservative to avoid immediate rebuffering"}return b}function e(a,b){u[a]=u[a]||{};var c=!1;return u[a].firstBufferLoadedEvent?c=!0:b&&b.state===g.default.BUFFER_LOADED&&(u[a].firstBufferLoadedEvent=!0,c=!0),c}function f(){u={}}function h(){f()}function j(){f(),p.off(k.default.PLAYBACK_SEEKING,h,t)}a=a||{};var l=.5,m=this.context,n=(0,o.default)(m).getInstance().log,p=(0,i.default)(m).getInstance(),r=a.metricsModel,s=a.dashMetrics,t=void 0,u=void 0;return t={getMaxIndex:d,reset:j},b(),t}Object.defineProperty(c,"__esModule",{value:!0});var f=a(106),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p=a(173),q=d(p);e.__dashjs_factory_name="InsufficientBufferRule",c.default=m.default.getClassFactory(e),b.exports=c.default},{106:106,173:173,49:49,50:50,51:51,54:54}],181:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){for(var f=a?a.getSwitchHistory():null,g=f?f.getSwitchRequests():[],h=0,i=0,j=0,l=(0,k.default)(b).create(),m=0;m<g.length;m++)if(void 0!==g[m]&&(h+=g[m].drops,i+=g[m].noDrops,j+=g[m].dropSize,h+i>=e&&h/i>d)){l.quality=m>0&&g[m].drops>0?m-1:m,l.reason={index:l.quality,drops:h,noDrops:i,dropSize:j},c("Switch history rule index: "+l.quality+" samples: "+(h+i)+" drops: "+h);break}return l}var b=this.context,c=(0,i.default)(b).getInstance().log,d=.075,e=6;return{getMaxIndex:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(173),k=d(j);e.__dashjs_factory_name="SwitchHistoryRule",c.default=g.default.getClassFactory(e),b.exports=c.default},{173:173,49:49,51:51}],182:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!h||!h.hasOwnProperty("getReadOnlyMetricsFor"))throw new Error("Missing config parameter(s)")}function c(a){var c=(0,o.default)(e).create();if(!(a&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getMediaType")&&a.hasOwnProperty("useBufferOccupancyABR")&&a.hasOwnProperty("getAbrController")&&a.hasOwnProperty("getStreamProcessor")))return c;b();var d=a.getMediaInfo(),j=a.getMediaType(),k=h.getReadOnlyMetricsFor(j),l=a.getStreamProcessor(),m=a.getAbrController(),n=a.getStreamInfo(),p=n&&n.manifestInfo?n.manifestInfo.isDynamic:null,q=m.getThroughputHistory(),r=q.getSafeAverageThroughput(j,p),s=q.getAverageLatency(j),t=k.BufferState.length>0?k.BufferState[k.BufferState.length-1]:null,u=a.useBufferOccupancyABR();return!k||isNaN(r)||!t||u?c:(m.getAbandonmentStateFor(j)!==i.default.ABANDON_LOAD&&(t.state===g.default.BUFFER_LOADED||p)&&(c.quality=m.getQualityForBitrate(d,r,s),l.getScheduleController().setTimeToLoadDelay(0),f("ThroughputRule requesting switch to index: ",c.quality,"type: ",j,"Average throughput",Math.round(r),"kbps"),c.reason={throughput:r,latency:s}),c)}function d(){}a=a||{};var e=this.context,f=(0,m.default)(e).getInstance().log,h=a.metricsModel;return{getMaxIndex:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(106),g=d(f),h=a(103),i=d(h),j=a(51),k=d(j),l=a(49),m=d(l),n=a(173),o=d(n);e.__dashjs_factory_name="ThroughputRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{103:103,106:106,173:173,49:49,51:51}],183:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){}function c(a,b,c){return e.getCurrentBufferLevel(f.getReadOnlyMetricsFor(b))<d(a,b,c)}function d(a,b,c){var d=NaN,k=a.getCurrentRepresentationInfo();if(b===g.default.FRAGMENTED_TEXT)d=i.getAllTracksAreDisabled()?0:k.fragmentDuration;else if(b===g.default.AUDIO&&c){var l=e.getCurrentBufferLevel(f.getReadOnlyMetricsFor(g.default.VIDEO));d=isNaN(k.fragmentDuration)?l:Math.max(l,k.fragmentDuration)}else{var m=k.mediaInfo.streamInfo;if(j.isPlayingAtTopQuality(m)){var n=m.manifestInfo.duration>=h.getLongFormContentDurationThreshold();d=n?h.getBufferTimeAtTopQualityLongForm():h.getBufferTimeAtTopQuality()}else d=h.getStableBufferTime()}return d}a=a||{};var e=a.dashMetrics,f=a.metricsModel,h=a.mediaPlayerModel,i=a.textController,j=a.abrController,k={execute:c,getBufferTarget:d};return b(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="BufferLevelRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,51:51}],184:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=a.getCurrentRepresentationInfo(),i=c.mediaInfo,j=i.type,k=a.getScheduleController(),l=k.getSeekTarget(),n=!isNaN(l),o=a.getBuffer(),p=n?l:e.getIndexHandlerTime(a);if(isNaN(p)||j===g.default.FRAGMENTED_TEXT&&h.getAllTracksAreDisabled())return null;if(n&&k.setSeekTarget(NaN),o){var q=f.getBufferRange(o,p);null!==q&&(d("Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for",j,".",p,"was changed to",q.end),p=q.end)}var r=void 0;if(b)p=b.startTime+b.duration/2,r=e.getFragmentRequestForTime(a,c,p,{timeThreshold:0,ignoreIsFinished:!0});else{for(r=e.getFragmentRequestForTime(a,c,p,{keepIdx:!n});r&&r.action!==m.default.ACTION_COMPLETE&&a.getFragmentModel().isFragmentLoaded(r);)r=e.getNextFragmentRequest(a,c);r&&(isNaN(r.startTime+r.duration)||e.setIndexHandlerTime(a,r.startTime+r.duration),r.delayLoadingTime=(new Date).getTime()+k.getTimeToLoadDelay(),k.setTimeToLoadDelay(0))}return r}a=a||{};var c=this.context,d=(0,i.default)(c).getInstance().log,e=a.adapter,f=a.sourceBufferController,h=a.textController;return{execute:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(49),i=d(h),j=a(51),k=d(j),l=a(213),m=d(l);e.__dashjs_factory_name="NextFragmentRequestRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{100:100,213:213,49:49,51:51}],185:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){for(var b="",c=0;c<a.length;++c){b+=a[c].uchar}return b.length-b.replace(/^\s+/,"").length}function b(a){return"left: "+3.125*a.x+"%; top: "+6.66*a.y1+"%; width: "+(100-3.125*a.x)+"%; height: "+6.66*Math.max(a.y2-1-a.y1,1)+"%; align-items: flex-start; overflow: visible; -webkit-writing-mode: horizontal-tb;"}function c(a){return"red"===a?"rgb(255, 0, 0)":"green"===a?"rgb(0, 255, 0)":"blue"===a?"rgb(0, 0, 255)":"cyan"===a?"rgb(0, 255, 255)":"magenta"===a?"rgb(255, 0, 255)":"yellow"===a?"rgb(255, 255, 0)":"white"===a?"rgb(255, 255, 255)":"black"===a?"rgb(0, 0, 0)":a}function d(a,b){var d=a.videoHeight/15;return b?"font-size: "+d+"px; font-family: Menlo, Consolas, 'Cutive Mono', monospace; color: "+(b.foreground?c(b.foreground):"rgb(255, 255, 255)")+"; font-style: "+(b.italics?"italic":"normal")+"; text-decoration: "+(b.underline?"underline":"none")+"; white-space: pre; background-color: "+(b.background?c(b.background):"transparent")+";":"font-size: "+d+"px; font-family: Menlo, Consolas, 'Cutive Mono', monospace; justify-content: flex-start; text-align: left; color: rgb(255, 255, 255); font-style: normal; white-space: pre; line-height: normal; font-weight: normal; text-decoration: none; width: 100%; display: flex;"}function e(a){return a.replace(/^\s+/g,"")}function f(a){return a.replace(/\s+$/g,"")}function g(c,g,i,j){var k=null,l=null,m=!1,n=-1,o={start:g,end:i,spans:[]},p="style_cea608_white_black",q={},r={},s=[],t=void 0,u=void 0;for(t=0;t<15;++t){var v=j.rows[t],w="",x=null;if(!1===v.isEmpty()){var y=a(v.chars);null===k&&(k={x:y,y1:t,y2:t+1,p:[]}),y!==n&&m&&(k.p.push(o),o={start:g,end:i,spans:[]},k.y2=t,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name],l.p.contat(k.p)),k={x:y,y1:t,y2:t+1,p:[]});for(var z=0;z<v.chars.length;++z){var A=v.chars[z],B=A.penState;if(null===x||!B.equals(x)){w.trim().length>0&&(o.spans.push({name:p,line:w,row:t}),w="");var C="style_cea608_"+B.foreground+"_"+B.background;B.underline&&(C+="_underline"),B.italics&&(C+="_italics"),r.hasOwnProperty(C)||(r[C]=JSON.parse(JSON.stringify(B))),x=B,p=C}w+=A.uchar}w.trim().length>0&&o.spans.push({name:p,line:w,row:t}),m=!0,n=y}else m=!1,n=-1,k&&(k.p.push(o),o={start:g,end:i,spans:[]},k.y2=t,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name],l.p.contat(k.p)),k=null)}k&&(k.p.push(o),k.y2=t+1,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name],l.p.contat(k.p)),k=null);var D=[];for(t=0;t<s.length;++t){var E=s[t],F="sub_cea608_"+h++,G=document.createElement("div");G.id=F;var H=b(E);G.style.cssText="position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;"+H;var I=document.createElement("div");I.className="paragraph bodyStyle",I.style.cssText=d(c);var J=document.createElement("div");J.className="cueUniWrapper",J.style.cssText="unicode-bidi: normal; direction: ltr;";for(var K=0;K<E.p.length;++K){var L=E.p[K],M=0;for(u=0;u<L.spans.length;++u){var N=L.spans[u];if(N.line.length>0){if(0!==u&&M!=N.row){var O=document.createElement("br");O.className="lineBreak",J.appendChild(O)}var P=!1;M===N.row&&(P=!0),M=N.row;var Q=r[N.name],R=document.createElement("span");R.className="spanPadding "+N.name+" customSpanColor",R.style.cssText=d(c,Q),0!==u&&P?u===L.spans.length-1?R.textContent=f(N.line):R.textContent=N.line:L.spans.length>1&&u<L.spans.length-1&&N.row===L.spans[u+1].row?R.textContent=e(N.line):R.textContent=N.line.trim(),J.appendChild(R)}}}I.appendChild(J),G.appendChild(I);var S={bodyStyle:["%",90]};for(u in r)r.hasOwnProperty(u)&&(S[u]=["%",90]);D.push({type:"html",start:g,end:i,cueHTMLElement:G,cueID:F,cellResolution:[32,15],isFromCEA608:!0,regions:s,regionID:E.name,videoHeight:c.videoHeight,videoWidth:c.videoWidth,fontSize:S,lineHeight:{},linePadding:{}})}return D}var h=0;return{createHTMLCaptionsFromScreen:g}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="EmbeddedTextHtmlRender",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],186:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){G=!1,H=null,I=null,K=null,F=!1,z.on(k.default.DATA_UPDATE_COMPLETED,v,this),z.on(k.default.INIT_FRAGMENT_LOADED,w,this)}function c(){return p}function d(a){l(a),K=D.getRepresentationController(),L=(0,o.default)(y).getInstance()}function e(a){try{I=A.createSourceBuffer(H,a),G||(I.hasOwnProperty(g.default.INITIALIZE)&&I.initialize(C,D),G=!0)}catch(b){B.mediaSourceError("Error creating "+C+" source buffer.")}return I}function f(){return C}function h(){return I}function j(a){I=a}function l(a){H=a}function m(){return H}function n(){return D}function q(a){J=a}function r(){return J}function s(){return 0}function t(){return F}function u(a){z.off(k.default.DATA_UPDATE_COMPLETED,v,this),z.off(k.default.INIT_FRAGMENT_LOADED,w,this),a||(A.abort(H,I),A.removeSourceBuffer(H,I))}function v(a){a.sender.getStreamProcessor()===D&&z.trigger(k.default.TIMED_TEXT_REQUESTED,{index:0,sender:a.sender})}function w(a){a.fragmentModel===D.getFragmentModel()&&a.chunk.bytes&&(L.save(a.chunk),A.append(I,a.chunk))}function x(a,b){var c=L.extract(a,b);c?A.append(I,c):z.trigger(k.default.INIT_REQUESTED,{sender:E})}a=a||{};var y=this.context,z=(0,i.default)(y).getInstance(),A=a.sourceBufferController,B=a.errHandler,C=a.type,D=a.streamProcessor,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0;return E={getBufferControllerType:c,initialize:d,createBuffer:e,getType:f,getStreamProcessor:n,setSeekStartTime:q,getSeekStartTime:r,getBuffer:h,setBuffer:j,getBufferLevel:s,setMediaSource:l,getMediaSource:m,getIsBufferingCompleted:t,switchInitData:x,reset:u},b(),E}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=a(200),o=d(n),p="NotFragmentedTextBufferController";e.__dashjs_factory_name=p,c.default=m.default.getClassFactory(e),b.exports=c.default},{100:100,200:200,50:50,51:51,54:54}],187:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){v=a.type===g.default.FRAGMENTED_TEXT?(0,k.default)(u).create({type:a.type,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,manifestModel:a.manifestModel,sourceBufferController:a.sourceBufferController,errHandler:a.errHandler,streamController:a.streamController,mediaController:a.mediaController,adapter:a.adapter,textController:a.textController,abrController:a.abrController,playbackController:a.playbackController,streamProcessor:a.streamProcessor}):(0,m.default)(u).create({type:a.type,errHandler:a.errHandler,sourceBufferController:a.sourceBufferController,streamProcessor:a.streamProcessor})}function c(){return v.getBufferControllerType()}function d(a,b){return v.initialize(a,b)}function e(a){return v.createBuffer(a)}function f(){return v.getType()}function h(){return v.getBuffer()}function i(a){v.setBuffer(a)}function j(){return v.getMediaSource()}function l(a){v.setMediaSource(a)}function n(){v.getStreamProcessor()}function o(a){v.setSeekStartTime(a)}function p(){return v.getBufferLevel()}function q(a){v.reset(a)}function r(){return v.getIsBufferingCompleted()}function s(a,b){v.switchInitData(a,b)}function t(){return v.getIsPruningInProgress()}a=a||{};var u=this.context,v=void 0,w=void 0;return w={getBufferControllerType:c,initialize:d,createBuffer:e,getType:f,getStreamProcessor:n,setSeekStartTime:o,getBuffer:h,setBuffer:i,getBufferLevel:p,setMediaSource:l,getMediaSource:j,getIsBufferingCompleted:r,getIsPruningInProgress:t,switchInitData:s,reset:q},b(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h),j=a(106),k=d(j),l=a(186),m=d(l);e.__dashjs_factory_name="TextBufferController",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,106:106,186:186,51:51}],188:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){K="",L=-1,M=!0,G=(0,m.default)(x).getInstance(),H=(0,o.default)(x).getInstance(),I=(0,q.default)(x).getInstance(),z=(0,k.default)(x).getInstance(),J=(0,s.default)(x).getInstance(),G.initialize(),J.on(u.default.TEXT_TRACKS_QUEUE_INITIALIZED,i,y),v()}function b(a){a&&(a.errHandler&&(A=a.errHandler),a.dashManifestModel&&(B=a.dashManifestModel),a.manifestModel&&(C=a.manifestModel),a.mediaController&&(D=a.mediaController),a.videoModel&&(E=a.videoModel),a.streamController&&(F=a.streamController),a.textTracks&&(G=a.textTracks),a.vttParser&&(H=a.vttParser),a.ttmlParser&&(I=a.ttmlParser),z.setConfig({errHandler:A,dashManifestModel:B,manifestModel:C,mediaController:D,videoModel:E,streamController:F,textTracks:G,vttParser:H,ttmlParser:I}))}function c(){return z}function d(){return N}function e(a){z.addEmbeddedTrack(a)}function f(a){"string"==typeof a&&(K=a)}function h(){return K}function i(a){var b=a.tracks,c=a.index,d=b.findIndex(function(a){return a.lang===K});-1!==d&&(this.setTextTrack(d),c=d),M||this.setTextTrack(-1),L=c,J.trigger(u.default.TEXT_TRACKS_ADDED,{enabled:!N,index:c,tracks:b})}function j(a){"boolean"==typeof a&&(M=a)}function l(){return M}function n(a){if("boolean"==typeof a){!N!==a&&(a&&this.setTextTrack(L),a||(L=this.getCurrentTrackIdx(),this.setTextTrack(-1)))}}function p(){return!N}function r(a){var b=z.getConfig(),c=b.fragmentModel,d=b.fragmentedTracks,e=G.getCurrentTrackIdx();if(e!==a){G.setModeForTrackIdx(e,g.default.TEXT_HIDDEN),G.setCurrentTrackIdx(a),G.setModeForTrackIdx(a,g.default.TEXT_SHOWING);var f=G.getCurrentTrackInfo();if(f&&f.isFragmented&&!f.isEmbedded)for(var h=0;h<d.length;h++){var i=d[h];if(f.lang===i.lang&&f.index===i.index&&(!f.label||f.label===i.id)){var j=D.getCurrentTrackFor(g.default.FRAGMENTED_TEXT,F.getActiveStreamInfo());i!==j&&(c.abortRequests(),c.removeExecutedRequestsBeforeTime(),z.remove(),G.deleteCuesFromTrackIdx(e),D.setTrack(i),z.setCurrentFragmentedTrackIdx(h))}}}N=-1===a}function t(){return G.getCurrentTrackIdx()}function v(){N=!1}function w(){v(),z.resetEmbedded()}var x=this.context,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0;return y={setConfig:b,getTextSourceBuffer:c,getAllTracksAreDisabled:d,addEmbeddedTrack:e,getTextDefaultLanguage:h,setTextDefaultLanguage:f,setTextDefaultEnabled:j,getTextDefaultEnabled:l,enableText:n,isTextEnabled:p,setTextTrack:r,getCurrentTrackIdx:t,reset:w},a(),y}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h),j=a(189),k=d(j),l=a(190),m=d(l),n=a(207),o=d(n),p=a(205),q=d(p),r=a(50),s=d(r),t=a(54),u=d(t);e.__dashjs_factory_name="TextController",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{100:100,189:189,190:190,205:205,207:207,50:50,51:51,54:54}],189:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){if(K=null,R=null,S=!1,T=NaN,U=[],X=null,C||d(),O=b.getMediaInfoArr(),P.setConfig({videoModel:V}),P.initialize(),Q=!H.getIsTextTrack(a),E=(0,n.default)(w).getInstance(),N=(0,l.default)(w).getInstance(),N.setConfig({boxParser:E}),Q){R=b.getFragmentModel(),this.buffered=(0,p.default)(w).create(),U=J.getTracksFor(g.default.FRAGMENTED_TEXT,W.getActiveStreamInfo());for(var c=J.getCurrentTrackFor(g.default.FRAGMENTED_TEXT,W.getActiveStreamInfo()),e=0;e<U.length;e++)if(U[e]===c){Y=e;break}}}function b(){P.deleteAllTextTracks(),K=null,N=null,O=null,P=null,Q=!1,R=null,S=!1,T=NaN,U=[],V=null,W=null,C=!1,Z=null}function c(a){var b=a.chunk;b.mediaInfo.embeddedCaptions&&o(b.bytes,b)}function d(){Z=[],O=[],P=(0,v.default)(w).getInstance(),P.setConfig({videoModel:V}),P.initialize(),E=(0,n.default)(w).getInstance(),N=(0,l.default)(w).getInstance(),N.setConfig({boxParser:E}),Q=!1,Y=null,$=!1,_=0,ca=[],ba=[],aa=null,C=!0,da=(0,x.default)(w).getInstance(),A.on(F.default.VIDEO_CHUNK_RECEIVED,c,this)}function e(){A.off(F.default.VIDEO_CHUNK_RECEIVED,c,this),P&&P.deleteAllTextTracks(),C=!1,Z=[],ca=[null,null],ba=[],aa=null}function f(a){C||d(),a.id===g.default.CC1||a.id===g.default.CC3?Z.push(a):y("Warning: Embedded track "+a.id+" not supported!")}function i(a){a&&(a.errHandler&&(G=a.errHandler),a.dashManifestModel&&(H=a.dashManifestModel),a.manifestModel&&(I=a.manifestModel),a.mediaController&&(J=a.mediaController),a.videoModel&&(V=a.videoModel),a.streamController&&(W=a.streamController),a.textTracks&&(P=a.textTracks),a.vttParser&&(L=a.vttParser),a.ttmlParser&&(M=a.ttmlParser))}function k(){return{errHandler:G,dashManifestModel:H,mediaController:J,videoModel:V,fragmentModel:R,streamController:W,textTracks:P,isFragmented:Q,embeddedTracks:Z,fragmentedTracks:U}}function m(a){Y=a}function o(a,b){function c(a,b){var c=new j.default,d={subtitle:"subtitles",caption:"captions"},e=function(){var a=b.roles.length>0?d[b.roles[0]]:d.caption;return a=a===d.caption||a===d.subtitle?a:d.caption},f=function(){var a=!1;return b.codec&&b.codec.search(g.default.STPP)>=0&&(a=!0),b.mimeType&&b.mimeType.search(g.default.TTML)>=0&&(a=!0),a};c.captionData=a,c.lang=b.lang,c.label=b.id,c.index=b.index,c.isTTML=f(),c.defaultTrack=r(b),c.isFragmented=Q,c.isEmbedded=!!b.isEmbedded,c.kind=e(),c.roles=b.roles;var h=(O?O.length:0)+Z.length;P.addTextTrack(c,h)}var d=void 0,e=void 0,f=void 0,i=void 0,k=void 0,l=void 0,m=void 0,n=b.mediaInfo,o=n.type,p=n.mimeType,t=n.codec||p;if(!t)return void y("No text type defined");if(o===g.default.FRAGMENTED_TEXT)if(S)if(l=N.getSamplesInfo(a),e=l.sampleList,!X&&e.length>0&&(X=e[0].cts-b.start*T),t.search(g.default.STPP)>=0)for(K=null!==K?K:s(t),f=0;f<e.length;f++){var u=e[f],v=u.cts,w=v-X;this.buffered.add(w/T,(w+u.duration)/T);var x=new DataView(a,u.offset,u.subSizes[0]);m=z.default.Utils.dataViewToString(x,g.default.UTF8);var A=[],C=u.offset+u.subSizes[0];for(i=1;i<u.subSizes.length;i++){var D=new Uint8Array(a,C,u.subSizes[i]),E=String.fromCharCode.apply(null,D);A.push(E),C+=u.subSizes[i]}try{var F=I.getValue(),H=F.ttmlTimeIsRelative?v/T:0;d=K.parse(m,H,v/T,(v+u.duration)/T,A),P.addCaptions(Y,X/T,d)}catch(na){y("TTML parser error: "+na.message)}}else{var J=[];for(f=0;f<e.length;f++){var u=e[f];u.cts-=X,this.buffered.add(u.cts/T,(u.cts+u.duration)/T);var L=a.slice(u.offset,u.offset+u.size),M=z.default.parseBuffer(L);for(i=0;i<M.boxes.length;i++){var R=M.boxes[i];if(y("VTT box1: "+R.type),"vtte"!==R.type&&"vttc"===R.type)for(y("VTT vttc boxes.length = "+R.boxes.length),k=0;k<R.boxes.length;k++){var U=R.boxes[k];if(y("VTT box2: "+U.type),"payl"===U.type){var W=U.cue_text;y("VTT cue_text = "+W);var $=u.cts/T,ea=(u.cts+u.duration)/T;J.push({start:$,end:ea,data:W,styles:{}}),y("VTT "+$+"-"+ea+" : "+W)}}}}J.length>0&&P.addCaptions(Y,0,J)}else{for(S=!0,f=0;f<O.length;f++)c(null,O[f]);T=N.getMediaTimescaleFromMoov(a)}else if(o===g.default.TEXT){var x=new DataView(a,0,a.byteLength);m=z.default.Utils.dataViewToString(x,g.default.UTF8);try{d=s(t).parse(m,0),c(d,n)}catch(na){G.timedTextError(na,"parse",m)}}else if(o===g.default.VIDEO)if(b.segmentType===h.HTTPRequest.INIT_SEGMENT_TYPE){if(0===_)for(_=N.getMediaTimescaleFromMoov(a),f=0;f<Z.length;f++)c(null,Z[f])}else{if(0===_)return void y("CEA-608: No timescale for embeddedTextTrack yet");var fa=function(a,b){function c(a,c,d){var e=null;if(V.getTTMLRenderingDiv())e=da.createHTMLCaptionsFromScreen(V.getElement(),a,c,d);else{e=[{start:a,end:c,data:d.getDisplayText(),styles:{}}]}e&&P.addCaptions(b,0,e)}return c};l=N.getSamplesInfo(a);var ga=l.lastSequenceNumber;if(!ca[0]&&!ca[1]){var ha=void 0,ia=void 0;for(f=0;f<Z.length;f++){if(Z[f].id===g.default.CC1?(0,ia=P.getTrackIdxForId(g.default.CC1)):Z[f].id===g.default.CC3&&(1,ia=P.getTrackIdxForId(g.default.CC3)),-1===ia)return void y("CEA-608: data before track is ready.");ha=fa(this,ia),ca[f]=new B.default.Cea608Parser(f,{newCue:ha},null)}}if(_&&-1==ba.indexOf(ga)){if(null!==aa&&ga!==aa+l.numSequences)for(f=0;f<ca.length;f++)ca[f]&&ca[f].reset();for(var ja=q(a,l.sampleList),ka=0;ka<ca.length;ka++){var la=ja.fields[ka],ma=ca[ka];if(ma)for(f=0;f<la.length;f++)ma.addData(la[f][0]/_,la[f][1])}aa=ga,ba.push(ga)}}}function q(a,b){if(0===b.length)return null;for(var c={splits:[],fields:[[],[]]},d=new DataView(a),e=0;e<b.length;e++)for(var f=b[e],g=B.default.findCea608Nalus(d,f.offset,f.size),h=null,i=0,j=0;j<g.length;j++)for(var k=B.default.extractCea608DataFromRange(d,g[j]),l=0;l<2;l++)k[l].length>0&&(f.cts!==h?i=0:i+=1,c.fields[l].push([f.cts,k[l],i]),h=f.cts);return c.fields.forEach(function(a){a.sort(function(a,b){return a[0]===b[0]?a[2]-b[2]:a[0]-b[0]})}),c}function r(a){var b=!1;return Z.length>1&&a.isEmbedded?b=a.id&&a.id===g.default.CC1:1===Z.length?a.id&&"CC"===a.id.substring(0,2)&&(b=!0):0===Z.length&&(b=a.index===O[0].index),b}function s(a){var b=void 0;return a.search(g.default.VTT)>=0?b=L:(a.search(g.default.TTML)>=0||a.search(g.default.STPP)>=0)&&(b=M),b}function u(a,b){void 0===a&&a===b&&(a=this.buffered.start(0),b=this.buffered.end(this.buffered.length-1)),this.buffered.remove(a,b)}var w=this.context,y=(0,t.default)(w).getInstance().log,A=(0,D.default)(w).getInstance(),C=!1,E=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0;return{initialize:a,append:o,abort:b,addEmbeddedTrack:f,resetEmbedded:e,setConfig:i,getConfig:k,setCurrentFragmentedTrackIdx:m,remove:u}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(230),i=a(222),j=d(i),k=a(74),l=d(k),m=a(194),n=d(m),o=a(196),p=d(o),q=a(51),r=d(q),s=a(49),t=d(s),u=a(190),v=d(u),w=a(185),x=d(w),y=a(11),z=d(y),A=a(2),B=d(A),C=a(50),D=d(C),E=a(54),F=d(E);e.__dashjs_factory_name="TextSourceBuffer",c.default=r.default.getSingletonFactory(e),b.exports=c.default},{100:100,11:11,185:185,190:190,194:194,196:196,2:2,222:222,230:230,49:49,50:50,51:51,54:54,74:74}],190:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){"undefined"!=typeof window&&"undefined"!=typeof navigator&&(G=window.VTTCue||window.TextTrackCue,I=[],J=[],K=-1,L=0,M=0,N=0,O=0,P=null,Q=null,T=!1,V=2147483647,U=null,R=!!navigator.userAgent.match(/Chrome/)&&!navigator.userAgent.match(/Edge/),void 0!==document.fullscreenElement?S="fullscreenElement":void 0!==document.webkitIsFullScreen?S="webkitIsFullScreen":document.msFullscreenElement?S="msFullscreenElement":document.mozFullScreen&&(S="mozFullScreen"))}function b(a){var b=I[a].kind,c=void 0!==I[a].label?I[a].label:I[a].lang,d=I[a].lang,e=I[a].isTTML,f=I[a].isEmbedded,g=R?document.createElement("track"):H.addTextTrack(b,c,d);return R&&(g.kind=b,g.label=c,g.srclang=d),g.isEmbedded=f,g.isTTML=e,g}function c(a){T=a,P&&!document[S]&&(P.style.zIndex=a?V:null)}function d(a,c){if(I.length===c)return void F("Trying to add too many tracks.");if(I.push(a),I.length===c){I.sort(function(a,b){return a.index-b.index}),P=H.getTTMLRenderingDiv();for(var d=-1,e=0;e<I.length;e++){var f=b.call(this,e);J.push(f),I[e].defaultTrack&&(f.default=!0,d=e),R&&H.appendChild(f);var h=m(e);h&&(h.mode=g.default.TEXT_SHOWING,P&&(I[e].isTTML||I[e].isEmbedded)?h.renderingType="html":h.renderingType="default"),this.addCaptions(e,0,I[e].captionData),E.trigger(k.default.TEXT_TRACK_ADDED)}if(r.call(this,d),d>=0)for(var i=0;i<I.length;i++){var j=m(i);j&&(j.mode=i===d?g.default.TEXT_SHOWING:g.default.TEXT_HIDDEN)}E.trigger(k.default.TEXT_TRACKS_QUEUE_INITIALIZED,{index:K,tracks:I})}}function e(a,b,c,d,e,f){var g=a/b,h=c/d,i=0,j=0;g>h?(j=b,i=j/d*c):(i=a,j=i/c*d);var k=0,l=0,m=0,n=0;return i/j>e?(n=j,m=j*e):(m=i,n=i/e),k=(a-m)/2,l=(b-n)/2,f?{x:k+.1*m,y:l+.1*n,w:.8*m,h:.8*n}:{x:k,y:l,w:m,h:n}}function f(a,b){var c=H.getClientWidth(),d=H.getClientHeight(),f=H.getVideoWidth(),g=H.getVideoHeight(),h=H.getVideoRelativeOffsetTop(),i=H.getVideoRelativeOffsetLeft(),j=f/g,k=!1;a.isFromCEA608&&(j=3.5/3,k=!0);var l=e.call(this,c,d,f,g,j,k),m=l.w,n=l.h,o=l.x,p=l.y;if(m!=N||n!=O||o!=L||p!=M||b){L=o+i,M=p+h,N=m,O=n,P.style.left=L+"px",P.style.top=M+"px",P.style.width=N+"px",P.style.height=O+"px";for(var q=0;a.activeCues&&q<a.activeCues.length;++q){var r=a.activeCues[q];r.scaleCue(r)}S&&document[S]||T?P.style.zIndex=V:P.style.zIndex=null}}function h(a){var b=N,c=O,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0;if(a.cellResolution){var i=[b/a.cellResolution[0],c/a.cellResolution[1]];if(a.linePadding)for(d in a.linePadding)if(a.linePadding.hasOwnProperty(d)){var k=a.linePadding[d];e=(k*i[0]).toString();for(var l=document.getElementsByClassName("spanPadding"),m=0;m<l.length;m++)l[m].style.cssText=l[m].style.cssText.replace(/(padding-left\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+e),l[m].style.cssText=l[m].style.cssText.replace(/(padding-right\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+e)}if(a.fontSize){for(d in a.fontSize)if(a.fontSize.hasOwnProperty(d)){"%"===a.fontSize[d][0]?f=a.fontSize[d][1]/100:"c"===a.fontSize[d][0]&&(f=a.fontSize[d][1]),e=(f*i[1]).toString(),h="defaultFontSize"!==d?document.getElementsByClassName(d):document.getElementsByClassName("paragraph");for(var n=0;n<h.length;n++)h[n].style.cssText=h[n].style.cssText.replace(/(font-size\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+e)}if(a.lineHeight)for(d in a.lineHeight)if(a.lineHeight.hasOwnProperty(d)){"%"===a.lineHeight[d][0]?g=a.lineHeight[d][1]/100:"c"===a.fontSize[d][0]&&(g=a.lineHeight[d][1]),e=(g*i[1]).toString(),h=document.getElementsByClassName(d);for(var o=0;o<h.length;o++)h[o].style.cssText=h[o].style.cssText.replace(/(line-height\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+e)}}}if(a.isd){var p=document.getElementById(a.cueID);p&&P.removeChild(p),j(a)}}function j(a){var b=document.createElement("div") -;P.appendChild(b),U=(0,p.renderHTML)(a.isd,b,function(b){var c=/^(urn:)(mpeg:[a-z0-9][a-z0-9-]{0,31}:)(subs:)([0-9]+)$/,d=/^#(.*)$/;if(c.test(b)){var e=c.exec(b),f=parseInt(e[4],10)-1,g=btoa(a.images[f]),h="data:image/png;base64,"+g;return h}if(d.test(b)){var e=d.exec(b),f=e[1],h="data:image/png;base64,"+a.embeddedImages[f];return h}return null},P.clientHeight,P.clientWidth,!1,function(a){F("[TextTracks][renderCaption]",a)},U,!0),b.id=a.cueID}function l(a,b,c){var d=m(a),e=this;if(d&&c&&0!==c.length)for(var f in c){var i=void 0,k=c[f];d.cellResolution=k.cellResolution,d.isFromCEA608=k.isFromCEA608,"html"===k.type?(i=new G(k.start-b,k.end-b,""),i.cueHTMLElement=k.cueHTMLElement,i.isd=k.isd,i.images=k.images,i.embeddedImages=k.embeddedImages,i.cueID=k.cueID,i.scaleCue=h.bind(e),i.cellResolution=k.cellResolution,i.lineHeight=k.lineHeight,i.linePadding=k.linePadding,i.fontSize=k.fontSize,P.style.left=L+"px",P.style.top=M+"px",P.style.width=N+"px",P.style.height=O+"px",i.onenter=function(){d.mode===g.default.TEXT_SHOWING&&(this.isd?(j(this),F("Cue enter id:"+this.cueID)):(P.appendChild(this.cueHTMLElement),h.call(e,this)))},i.onexit=function(){for(var a=P.childNodes,b=0;b<a.length;++b)a[b].id===this.cueID&&(F("Cue exit id:"+a[b].id),P.removeChild(a[b]))}):(i=new G(k.start-b,k.end-b,k.data),k.styles&&(void 0!==k.styles.align&&"align"in i&&(i.align=k.styles.align),void 0!==k.styles.line&&"line"in i&&(i.line=k.styles.line),void 0!==k.styles.position&&"position"in i&&(i.position=k.styles.position),void 0!==k.styles.size&&"size"in i&&(i.size=k.styles.size))),d.addCue(i)}}function m(a){return a>=0&&I[a]?H.getTextTrack(I[a].kind,I[a].label,I[a].lang,I[a].isTTML,I[a].isEmbedded):null}function n(){return K}function q(a){for(var b=-1,c=0;c<I.length;c++)if(I[c].label===a){b=c;break}return b}function r(a){if(a!==K){K=a;var b=m(K);s.call(this,b),Q&&(clearInterval(Q),Q=null),b&&"html"===b.renderingType&&(f.call(this,b,!0),Q=setInterval(f.bind(this,b),500))}}function s(a){z.call(this),a&&"html"===a.renderingType?x.call(this):y.call(this)}function t(a){if(a.cues)for(var b=a.cues,c=b.length-1,d=c;d>=0;d--)a.removeCue(b[d])}function u(a){var b=m(a);b&&t(b)}function v(){for(var a=J?J.length:0,b=0;b<a;b++)if(R)H.removeChild(J[b]);else{var c=m(b);c&&(t.call(this,c),c.mode="disabled")}J=[],I=[],Q&&(clearInterval(Q),Q=null),K=-1,z.call(this)}function w(a){H.removeChild(J[a]),J.splice(a,1)}function x(){if(R){var a=document.getElementById("native-cue-style");if(!a){a=document.createElement("style"),a.id="native-cue-style",document.head.appendChild(a);var b=a.sheet,c=H.getElement();c&&(c.id?b.insertRule("#"+c.id+"::cue {background: transparent}",0):0!==c.classList.length?b.insertRule("."+c.className+"::cue {background: transparent}",0):b.insertRule("video::cue {background: transparent}",0))}}}function y(){if(R){var a=document.getElementById("native-cue-style");a&&document.head.removeChild(a)}}function z(){if(P)for(;P.firstChild;)P.removeChild(P.firstChild)}function A(a){a&&a.videoModel&&(H=a.videoModel)}function B(a,b){var c=m(a);c&&c.mode!==b&&(c.mode=b)}function C(){return I[K]}var D=this.context,E=(0,i.default)(D).getInstance(),F=(0,o.default)(D).getInstance().log,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0;return{initialize:a,displayCConTop:c,addTextTrack:d,addCaptions:l,getCurrentTrackIdx:n,setCurrentTrackIdx:r,getTrackIdxForId:q,getCurrentTrackInfo:C,setModeForTrackIdx:B,deleteCuesFromTrackIdx:u,deleteAllTextTracks:v,deleteTextTrack:w,setConfig:A}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p=a(21);e.__dashjs_factory_name="TextTracks",c.default=m.default.getSingletonFactory(e),b.exports=c.default},{100:100,21:21,49:49,50:50,51:51,54:54}],191:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h(),n=(0,m.default)(j).create({dashManifestModel:a.dashManifestModel,adapter:a.adapter,baseURLController:a.baseURLController,stream:a.stream})}function c(a){var b=n.getCurrentTrack();if(!b||b.segmentDuration<=0)return null;var c=Math.floor(a/b.segmentDuration),e=a%b.segmentDuration,f=Math.floor(e*b.tilesHor*b.tilesVert/b.segmentDuration),g=new k.default;return g.url=d(b,c),g.width=Math.floor(b.widthPerTile),g.height=Math.floor(b.heightPerTile),g.x=Math.floor(f%b.tilesHor)*b.widthPerTile,g.y=Math.floor(f/b.tilesHor)*b.heightPerTile,g}function d(a,b){var c=b+a.startNumber,d=(0,p.replaceTokenForTemplate)(a.templateUrl,"Number",c);return d=(0,p.replaceTokenForTemplate)(d,"Time",(c-1)*a.segmentDuration),d=(0,p.replaceTokenForTemplate)(d,"Bandwidth",a.bandwidth),(0,p.unescapeDollarsInTemplate)(d)}function e(a){n.setTrackByIndex(a)}function f(){return n.getCurrentTrackIndex()}function g(){var a=n.getTracks();if(!a||0===a.length)return[];var b=0;return a.map(function(a){var c=new o.default;return c.mediaType=i.default.IMAGE,c.qualityIndex=b++,c.bitrate=a.bitrate,c.width=a.width,c.height=a.height,c})}function h(){n&&n.reset()}var j=this.context,l=void 0,n=void 0;return l={get:c,setTrackByIndex:e,getCurrentTrackIndex:f,getBitrateList:g,reset:h},b(),l}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(100),i=d(h),j=a(223),k=d(j),l=a(192),m=d(l),n=a(210),o=d(n),p=a(77);e.__dashjs_factory_name="ThumbnailController",c.default=g.default.getClassFactory(e),b.exports=c.default},{100:100,192:192,210:210,223:223,51:51,77:77}],192:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){l(),c()}function c(){if(u&&r&&s){var a=u?u.getStreamInfo():null;if(a){var b=s.getMediaInfoForType(a,g.default.IMAGE);if(b){var c=s.getDataForMedia(b);if(c){var e=r.getRepresentationsForAdaptation(c);e&&e.length>0&&e.forEach(function(a){a.segmentInfoType===i.default.SEGMENT_TEMPLATE&&a.segmentDuration>0&&a.media&&d(a)}),x.length>0&&(x.sort(function(a,b){return a.bitrate-b.bitrate}),y=x.length-1)}}}}}function d(a){var b=new m.default;b.id=a.id,b.bitrate=a.bandwidth,b.width=a.width,b.height=a.height,b.tilesHor=1,b.tilesVert=1,b.startNumber=a.startNumber,b.segmentDuration=a.segmentDuration,b.timescale=a.timescale,b.templateUrl=e(a),a.essentialProperties&&a.essentialProperties.forEach(function(a){if(a.schemeIdUri===q&&a.value){var c=a.value.split("x");2!==c.length||isNaN(c[0])||isNaN(c[1])||(b.tilesHor=parseInt(c[0],10),b.tilesVert=parseInt(c[1],10))}}),b.tilesHor>0&&b.tilesVert>0&&(b.widthPerTile=b.width/b.tilesHor,b.heightPerTile=b.height/b.tilesVert,x.push(b))}function e(a){var b=v.isRelative(a.media)?v.resolve(a.media,t.resolve(a.path).url):a.media;return b?(0,p.replaceIDForTemplate)(b,a.id):""}function f(){return x}function h(){return y}function j(){return y<0?null:x[y]}function k(a){x&&0!==x.length&&(a>=x.length&&(a=x.length-1),y=a)}function l(){x=[],y=-1}var n=this.context,r=a.dashManifestModel,s=a.adapter,t=a.baseURLController,u=a.stream,v=(0,o.default)(n).getInstance(),w=void 0,x=void 0,y=void 0;return w={initialize:b,getTracks:f,reset:l,setTrackByIndex:k,getCurrentTrack:j,getCurrentTrackIndex:h},b(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(61),i=d(h),j=a(51),k=d(j),l=a(224),m=d(l),n=a(206),o=d(n),p=a(77),q="http://dashif.org/thumbnail_tile";e.__dashjs_factory_name="ThumbnailTracks",c.default=k.default.getClassFactory(e),b.exports=c.default},{100:100,206:206,224:224,51:51,61:61,77:77}],193:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){p=(0,k.default)(h).create({updateEventName:i.default.SERVICE_LOCATION_BLACKLIST_CHANGED,addBlacklistEventName:i.default.SERVICE_LOCATION_BLACKLIST_ADD}),q=(0,o.default)(h).create({blacklistController:p}),t=(0,m.default)(h).create({blacklistController:p}),u=q}function b(a){a.selector&&(u=a.selector),a.dashManifestModel&&(l=a.dashManifestModel)}function c(){if(!l||!l.hasOwnProperty("getIsDVB"))throw new Error("Missing config parameter(s)")}function d(a){c(),u=l.getIsDVB(a)?t:q}function e(a){var b=a.baseUrls,c=a.selectedIdx;if(!isNaN(c))return b[c];var d=u.select(b);return d?(a.selectedIdx=b.indexOf(d),d):void j.trigger(i.default.URL_RESOLUTION_FAILED,{error:new Error(r,s)})}function f(){p.reset()}var h=this.context,j=(0,g.default)(h).getInstance(),l=void 0,n=void 0,p=void 0,q=void 0,t=void 0,u=void 0;return n={chooseSelectorFromManifest:d,select:e,reset:f,setConfig:b},a(),n}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(105),k=d(j),l=a(209),m=d(l),n=a(208),o=d(n),p=a(51),q=d(p),r=1,s="Failed to resolve a valid URL";e.__dashjs_factory_name="BaseURLSelector";var t=q.default.getClassFactory(e);t.URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE=r,t.URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE=s,q.default.updateClassFactory(e.__dashjs_factory_name,t),c.default=t,b.exports=c.default},{105:105,208:208,209:209,50:50,51:51,54:54}],194:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){if(!a)return null;void 0===a.fileStart&&(a.fileStart=0);var c=k.default.parseBuffer(a),d=(0,g.default)(b).create();return d.setData(c),d}var b=this.context;return{parse:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(201),g=d(f),h=a(51),i=d(h),j=a(11),k=d(j);e.__dashjs_factory_name="BoxParser",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{11:11,201:201,51:51}],195:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){g=!1}function b(){var a="WebKitMediaSource"in window,b="MediaSource"in window;return a||b}function c(){return g}function d(a){g=a}function e(a){return!!("MediaSource"in window&&MediaSource.isTypeSupported(a))||!!("WebKitMediaSource"in window&&WebKitMediaSource.isTypeSupported(a))}var f=void 0,g=void 0;return f={supportsMediaSource:b,supportsEncryptedMedia:c,supportsCodec:e,setEncryptedMediaSupported:d},a(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="Capabilities",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],196:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=0;for(c=0;c<this.customTimeRangeArray.length&&a>this.customTimeRangeArray[c].start;c++);for(this.customTimeRangeArray.splice(c,0,{start:a,end:b}),c=0;c<this.customTimeRangeArray.length-1;c++)this.mergeRanges(c,c+1)&&c--;this.length=this.customTimeRangeArray.length}function b(){this.customTimeRangeArray=[],this.length=0}function c(a,b){for(var c=0;c<this.customTimeRangeArray.length;c++)if(a<=this.customTimeRangeArray[c].start&&b>=this.customTimeRangeArray[c].end)this.customTimeRangeArray.splice(c,1),c--;else{if(a>this.customTimeRangeArray[c].start&&b<this.customTimeRangeArray[c].end){this.customTimeRangeArray.splice(c+1,0,{start:b,end:this.customTimeRangeArray[c].end}),this.customTimeRangeArray[c].end=a;break}a>this.customTimeRangeArray[c].start&&a<this.customTimeRangeArray[c].end?this.customTimeRangeArray[c].end=a:b>this.customTimeRangeArray[c].start&&b<this.customTimeRangeArray[c].end&&(this.customTimeRangeArray[c].start=b)}this.length=this.customTimeRangeArray.length}function d(a,b){var c=this.customTimeRangeArray[a],d=this.customTimeRangeArray[b];return c.start<=d.start&&d.start<=c.end&&c.end<=d.end?(c.end=d.end,this.customTimeRangeArray.splice(b,1),!0):d.start<=c.start&&c.start<=d.end&&d.end<=c.end?(c.start=d.start,this.customTimeRangeArray.splice(b,1),!0):d.start<=c.start&&c.start<=d.end&&c.end<=d.end?(this.customTimeRangeArray.splice(a,1),!0):c.start<=d.start&&d.start<=c.end&&d.end<=c.end&&(this.customTimeRangeArray.splice(b,1),!0)}function e(a){if(null===a||isNaN(a)||a%1!=0)throw new Error("index argument is not an integer")}function f(a){return e(a),a>=this.customTimeRangeArray.length||a<0?NaN:this.customTimeRangeArray[a].start}function g(a){return e(a),a>=this.customTimeRangeArray.length||a<0?NaN:this.customTimeRangeArray[a].end}return{customTimeRangeArray:[],length:0,add:a,clear:b,remove:c,mergeRanges:d,start:f,end:g}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="CustomTimeRanges",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],197:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){if(void 0!==x)return x;x=!1;var b="1",c="1",d=void 0;try{"undefined"!=typeof window&&(d=window[a])}catch(e){return u("Warning: DOMStorage access denied: "+e.message),x}if(!d||a!==m&&a!==n)return x;try{d.setItem(b,c),d.removeItem(b),x=!0}catch(e){u("Warning: DOMStorage is supported, but cannot be used: "+e.message)}return x}function c(){b(m)&&j.forEach(function(a){var b=localStorage.getItem(a.oldKey);if(b){localStorage.removeItem(a.oldKey);try{localStorage.setItem(a.newKey,b)}catch(c){u(c.message)}}})}function d(){c()}function e(){var a=6e5;return Math.round((new Date).getTime()/a)*a}function f(a,c){return b(a)&&v["get"+c+"CachingInfo"]().enabled}function g(){if(!v||!v.hasOwnProperty("getLastMediaSettingsCachingInfo"))throw new Error("Missing config parameter(s)")}function h(a){if(g(),!f(m,p))return null;var b=null,c=l.replace(/\?/,a);try{var d=JSON.parse(localStorage.getItem(c))||{},e=(new Date).getTime()-parseInt(d.timestamp,10)>=v.getLastMediaSettingsCachingInfo().ttl||!1;b=d.settings,e&&(localStorage.removeItem(c),b=null)}catch(h){return null}return b}function q(a){var b=NaN;if(g(),f(m,o)){var c=k.replace(/\?/,a);try{var d=JSON.parse(localStorage.getItem(c))||{},e=(new Date).getTime()-parseInt(d.timestamp,10)>=v.getLastMediaSettingsCachingInfo().ttl||!1,h=parseFloat(d.bitrate);isNaN(h)||e?e&&localStorage.removeItem(c):(b=h,u("Last saved bitrate for "+a+" was "+h))}catch(i){return null}}return b}function r(a,b){if(f(m,p)){var c=l.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({settings:b,timestamp:e()}))}catch(d){u(d.message)}}}function s(a,b){if(f(m,o)&&b){var c=k.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({bitrate:b.toFixed(3),timestamp:e()}))}catch(d){u(d.message)}}}a=a||{};var t=this.context,u=(0,i.default)(t).getInstance().log,v=a.mediaPlayerModel,w=void 0,x=void 0;return w={getSavedBitrateSettings:q,setSavedBitrateSettings:s,getSavedMediaSettings:h,setSavedMediaSettings:r},d(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=[{oldKey:"dashjs_vbitrate",newKey:"dashjs_video_bitrate"},{oldKey:"dashjs_abitrate",newKey:"dashjs_audio_bitrate"},{oldKey:"dashjs_vsettings",newKey:"dashjs_video_settings"},{oldKey:"dashjs_asettings",newKey:"dashjs_audio_settings"}],k="dashjs_?_bitrate",l="dashjs_?_settings",m="localStorage",n="sessionStorage",o="LastBitrate",p="LastMediaSettings";e.__dashjs_factory_name="DOMStorage";var q=g.default.getSingletonFactory(e);c.default=q,b.exports=c.default},{49:49,51:51}],198:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){return n}function c(a){n=a}function d(a,b){var c=!0,d=0,e=void 0,f=void 0;if(void 0===b&&(b=!1),a.tag>16777215?(m.getUint32(n)!==a.tag&&(c=!1),d=4):a.tag>65535?(e=m.getUint16(n),f=m.getUint8(n+2),256*e+f!==a.tag&&(c=!1),d=3):a.tag>255?(m.getUint16(n)!==a.tag&&(c=!1),d=2):(m.getUint8(n)!==a.tag&&(c=!1),d=1),!c&&a.required&&!b)throw new Error("required tag not found");return c&&(n+=d),c}function e(a,b){var c=d(a,b);return c&&h(),c}function f(a){var b=void 0;return d(a),b=h(),l[a.parse](b)}function g(a,b){var c=d(a,b),e=void 0;return c&&(e=h(),n+=e),c}function h(a){var b=1,c=128,d=8,e=-1,f=0,g=m.getUint8(n),h=0;for(h=0;h<d;h+=1){if((g&c)===c){f=void 0===a?g&~c:g,e=h;break}c>>=1}for(h=0;h<e;h+=1,b+=1)f=f<<8|255&m.getUint8(n+b);return n+=b,f}function i(a){var b=void 0;switch(a){case 4:b=m.getFloat32(n),n+=4;break;case 8:b=m.getFloat64(n),n+=8}return b}function j(a){for(var b=0,c=0;c<a;c+=1)b<<=8,b|=255&m.getUint8(n+c);return n+=a,b}function k(){return n<m.byteLength}a=a||{};var l=void 0,m=new DataView(a.data),n=0;return l={getPos:b,setPos:c,consumeTag:d,consumeTagAndSize:e,parseTag:f,skipOverElement:g,getMatroskaCodedNum:h,getMatroskaFloat:i,getMatroskaUint:j,moreData:k}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="EBMLParser",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],199:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){k.trigger(i.default.ERROR,{error:"capability",event:a})}function b(a,b,c){k.trigger(i.default.ERROR,{error:"download",event:{id:a,url:b,request:c}})}function c(a,b,c,d){k.trigger(i.default.ERROR,{error:"manifestError",event:{message:a,id:b,manifest:c,event:d}})}function d(a,b,c){k.trigger(i.default.ERROR,{error:"cc",event:{message:a,id:b,cc:c}})}function e(a){k.trigger(i.default.ERROR,{error:"mediasource",event:a})}function f(a){k.trigger(i.default.ERROR,{error:"key_session",event:a})}function h(a){k.trigger(i.default.ERROR,{error:"key_message",event:a})}var j=this.context,k=(0,g.default)(j).getInstance();return{capabilityError:a,downloadError:b,manifestError:c,timedTextError:d,mediaSourceError:e,mediaKeySessionError:f,mediaKeyMessageError:h}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j),l="mediasource",m="mediakeys",n="manifest",o="SIDX",p="content",q="initialization",r="xlink",s="codec",t="parse",u="nostreams",v="parse";e.__dashjs_factory_name="ErrorHandler";var w=k.default.getSingletonFactory(e);w.CAPABILITY_ERROR_MEDIASOURCE=l,w.CAPABILITY_ERROR_MEDIAKEYS=m,w.DOWNLOAD_ERROR_ID_MANIFEST=n,w.DOWNLOAD_ERROR_ID_SIDX=o,w.DOWNLOAD_ERROR_ID_CONTENT=p,w.DOWNLOAD_ERROR_ID_INITIALIZATION=q,w.DOWNLOAD_ERROR_ID_XLINK=r,w.MANIFEST_ERROR_ID_CODEC=s,w.MANIFEST_ERROR_ID_PARSE=t,w.MANIFEST_ERROR_ID_NOSTREAMS=u,w.TIMED_TEXT_ERROR_ID_PARSE=v,k.default.updateSingletonFactory(e.__dashjs_factory_name,w),c.default=w,b.exports=c.default},{50:50,51:51,54:54}],200:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var b=a.streamId,c=a.representationId;d[b]=d[b]||{},d[b][c]=a}function b(a,b){return d&&d[a]&&d[a][b]?d[a][b]:null}function c(){d={}}var d={};return{save:a,extract:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="InitCache",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],201:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a&&f&&f.boxes&&0!==f.boxes.length&&"function"==typeof f.fetch?e(f.fetch(a)):null}function b(a){var b=[];if(!a||!f||"function"!=typeof f.fetchAll)return b;for(var c=f.fetchAll(a),d=void 0,g=0,h=c.length;g<h;g++)(d=e(c[g]))&&b.push(d);return b}function c(a){f=a}function d(){if(!f||!f.boxes||!f.boxes.length)return null;var a=f.boxes[f.boxes.length-1].type,c=b(a);return c.length>0?c[c.length-1]:null}function e(a){if(!a)return null;var b=new g.default(a);return a.hasOwnProperty("_incomplete")&&(b.isComplete=!a._incomplete),b}var f=void 0;return{getBox:a,getBoxes:b,setData:c,getLastBox:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(215),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="IsoFile",c.default=i.default.getClassFactory(e),b.exports=c.default},{215:215,51:51}],202:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!(e&&e.hasOwnProperty("getExpectedLiveEdge")&&f&&f.hasOwnProperty("getCurrentRepresentationInfo")))throw new Error("Missing config parameter(s)")}function c(){b();var a=f.getCurrentRepresentationInfo(),c=a.DVRWindow.end;return a.useCalculatedLiveEdgeTime&&(c=e.getExpectedLiveEdge(),e.setClientTimeOffset(c-a.DVRWindow.end)),c}function d(){e=null,f=null}a=a||{};var e=a.timelineConverter,f=a.streamProcessor;return{getLiveEdge:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="LiveEdgeFinder",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],203:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){return(0,i.default)(a,b)}return{areEqual:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(13),i=d(h);e.__dashjs_factory_name="ObjectUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{13:13,51:51}],204:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(a){return a}return{modifyRequestURL:a,modifyRequestHeader:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="RequestModifier",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],205:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="cue_TTML_"+g;return g++,a}function b(b,c,d,f,g){var h=void 0,i=void 0,k="",l=[],m=void 0,n=void 0,o={},p="",q="",r={onOpenTag:function(a,b,c){if("image"===b&&"http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt"===a){if(!c[" imagetype"]||"PNG"!==c[" imagetype"].value)return void e("Warning: smpte-tt imagetype != PNG. Discarded");p=c["http://www.w3.org/XML/1998/namespace id"].value}},onCloseTag:function(){p&&(o[p]=q.trim()),q="",p=""},onText:function(a){p&&(q+=a)}};if(!b)throw k="no ttml data to parse",new Error(k);var s=(0,j.fromXML)(b,function(a){k=a},r),t=s.getMediaTimeEvents();for(h=0;h<t.length;h++){var u=(0,j.generateISD)(s,t[h],function(a){k=a});for(i=0;i<u.contents.length;i++)u.contents[i].contents.length>=1&&(m=t[h]+c<d?d:t[h]+c,n=t[h+1]+c>f?f:t[h+1]+c,m<n&&l.push({start:m,end:n,type:"html",cueID:a(),isd:u,images:g,embeddedImages:o}))}if(""!==k&&e(k),l.length>0)return l;throw new Error(k)}function c(){}var d=this.context,e=(0,i.default)(d).getInstance().log,f=void 0,g=0;return f={parse:b},c(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(21);e.__dashjs_factory_name="TTMLParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{21:21,49:49,51:51}],206:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){try{new window.URL("x","http://y");k=p}catch(a){}finally{k=k||q}}function b(a){var b=a.indexOf("/"),c=a.lastIndexOf("/");return-1!==b?c===b+1?a:(-1!==a.indexOf("?")&&(a=a.substring(0,a.indexOf("?"))),a.substring(0,c+1)):""}function c(a){var b=a.match(o);return b?b[1]:""}function d(a){var b=a.match(l);return b?b[0]:""}function e(a){return!l.test(a)}function f(a){return e(a)&&"/"===a.charAt(0)}function g(a){return 0===a.indexOf("//")}function h(a){return m.test(a)}function i(a){return n.test(a)}function j(a,b){return k(a,b)}var k=void 0,l=/^[a-z][a-z0-9+\-.]*:/i,m=/^https?:\/\//i,n=/^https:\/\//i,o=/^([a-z][a-z0-9+\-.]*:\/\/[^\/]+)\/?/i,p=function(a,b){try{return new window.URL(a,b).toString()}catch(c){return a}},q=function(a,h){var i=b;if(!h)return a;if(!e(a))return a;f(a)&&(i=c),g(a)&&(i=d);var j=i(h);return[j,a].join("/"!==j.charAt(j.length-1)&&"/"!==a.charAt(0)?"/":"")};return a(),{parseBaseUrl:b,parseOrigin:c,parseScheme:d,isRelative:e,isPathAbsolute:f,isSchemeRelative:g,isHTTPURL:h,isHTTPS:i,resolve:j}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="URLUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],207:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){l=/(?:\r\n|\r|\n)/gm,m=/-->/,n=/(^[\s]+|[\s]+$)/g,o=/\s\b/g}function b(a){var b=[],e=void 0,g=void 0;if(!a)return b;a=a.split(l),e=a.length,g=-1;for(var i=0;i<e;i++){var k=a[i];if(k.length>0&&k!==j&&k.match(m)){var o=d(k),p=o.cuePoints,q=o.styles,r=f(a,i+1),s=c(p[0].replace(n,"")),t=c(p[1].replace(n,""));!isNaN(s)&&!isNaN(t)&&s>=g&&t>s?""!==r?(g=s,b.push({start:s,end:t,data:r,styles:q})):h("Skipping cue due to empty/malformed cue text"):h("Skipping cue due to incorrect cue timing")}}return b}function c(a){var b=a.split(":"),c=b.length-1;return a=60*parseInt(b[c-1],10)+parseFloat(b[c]),2===c&&(a+=3600*parseInt(b[0],10)),a}function d(a){var b=a.split(m),c=b[1].split(o);return c.shift(),b[1]=c[0],c.shift(),{cuePoints:b,styles:e(c)}}function e(a){var b={};return a.forEach(function(a){if(a.split(/:/).length>1){var c=a.split(/:/)[1];c&&-1!=c.search(/%/)&&(c=parseInt(c.replace(/%/,""),10)),(a.match(/align/)||a.match(/A/))&&(b.align=c),(a.match(/line/)||a.match(/L/))&&(b.line=c),(a.match(/position/)||a.match(/P/))&&(b.position=c),(a.match(/size/)||a.match(/S/))&&(b.size=c)}}),b}function f(a,b){for(var c=b,d="",e="",f=void 0;""!==a[c]&&c<a.length;)c++;if((f=c-b)>1)for(var g=0;g<f;g++){if(e=a[b+g],e.match(m)){d="";break}d+=e,g!==f-1&&(d+="\n")}else e=a[b],e.match(m)||(d=e);return d}var g=this.context,h=(0,i.default)(g).getInstance().log,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0;return k={parse:b},a(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j="WEBVTT";e.__dashjs_factory_name="VTTParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{49:49,51:51}],208:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=0,d=void 0;return a&&a.some(function(a,d){return b=d,!c.contains(a.serviceLocation)})&&(d=a[b]),d}a=a||{};var c=a.blacklistController;return{select:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="BasicSelector",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],209:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=[],c=function(a){return!b.length||!a.dvb_priority||-1===b.indexOf(a.dvb_priority)},d=function(a){return!e.contains(a.serviceLocation)||(a.dvb_priority&&b.push(a.dvb_priority),!1)};return a.filter(d).filter(c)}function c(a){var b=function(a,b){var c=a.dvb_priority-b.dvb_priority;return isNaN(c)?0:c},c=function(a,b,c){return!b||c[0].dvb_priority&&a.dvb_priority&&c[0].dvb_priority===a.dvb_priority},d=0,e=[],f=0,g=void 0,h=void 0;if(h=a.sort(b).filter(c),h.length)return h.length>1&&(h.forEach(function(a){d+=a.dvb_weight,e.push(d)}),g=Math.floor(Math.random()*(d-1)),e.every(function(a,b){return f=b,!(g<a)})),h[f]}function d(a){return a&&c(b(a))}a=a||{};var e=a.blacklistController;return{select:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="DVBSelector",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],210:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mediaType=null,this.bitrate=null,this.width=null,this.height=null,this.scanType=null,this.qualityIndex=NaN};c.default=e,b.exports=c.default},{}],211:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c,e){d(this,a),this.code=b||null,this.message=c||null,this.data=e||null};c.default=e,b.exports=c.default},{}],212:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.streamId=null,this.mediaInfo=null,this.segmentType=null,this.quality=NaN,this.index=NaN,this.bytes=null,this.start=NaN,this.end=NaN,this.duration=NaN,this.representationId=null};c.default=e,b.exports=c.default},{}],213:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.action=a.ACTION_DOWNLOAD,this.startTime=NaN,this.mediaType=null,this.mediaInfo=null,this.type=null,this.duration=NaN,this.timescale=NaN,this.range=null,this.url=null,this.serviceLocation=null,this.requestStartDate=null,this.firstByteDate=null,this.requestEndDate=null,this.quality=NaN,this.index=NaN,this.availabilityStartTime=null,this.availabilityEndTime=null,this.wallStartTime=null,this.bytesLoaded=NaN,this.bytesTotal=NaN,this.delayLoadingTime=NaN,this.responseType="arraybuffer",this.representationId=null};e.ACTION_DOWNLOAD="download",e.ACTION_COMPLETE="complete",c.default=e,b.exports=c.default},{}],214:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(213),i=d(h),j=function(a){function b(a){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.url=a||null,this.checkForExistenceOnly=!0}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{213:213}],215:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b){if(d(this,a),this.offset=b._offset,this.type=b.type,this.size=b.size,this.boxes=[],b.boxes)for(var c=0;c<b.boxes.length;c++)this.boxes.push(new a(b.boxes[c]));switch(this.isComplete=!0,b.type){case"sidx":if(this.timescale=b.timescale,this.earliest_presentation_time=b.earliest_presentation_time,this.first_offset=b.first_offset,this.references=b.references,b.references){this.references=[];for(var c=0;c<b.references.length;c++){var e={reference_type:b.references[c].reference_type,referenced_size:b.references[c].referenced_size,subsegment_duration:b.references[c].subsegment_duration};this.references.push(e)}}break;case"emsg":this.id=b.id,this.value=b.value,this.timescale=b.timescale,this.scheme_id_uri=b.scheme_id_uri,this.presentation_time_delta=b.presentation_time_delta,this.event_duration=b.event_duration,this.message_data=b.message_data;break;case"mdhd":this.timescale=b.timescale;break;case"mfhd":this.sequence_number=b.sequence_number;break;case"subs":this.entry_count=b.entry_count,this.entries=b.entries;break;case"tfhd":this.base_data_offset=b.base_data_offset,this.sample_description_index=b.sample_description_index,this.default_sample_duration=b.default_sample_duration,this.default_sample_size=b.default_sample_size,this.default_sample_flags=b.default_sample_flags,this.flags=b.flags;break;case"tfdt":this.version=b.version,this.baseMediaDecodeTime=b.baseMediaDecodeTime,this.flags=b.flags;break;case"trun":if(this.sample_count=b.sample_count,this.first_sample_flags=b.first_sample_flags,this.data_offset=b.data_offset,this.flags=b.flags,this.samples=b.samples,b.samples){this.samples=[];for(var c=0,f=b.samples.length;c<f;c++){var g={sample_size:b.samples[c].sample_size,sample_duration:b.samples[c].sample_duration, -sample_composition_time_offset:b.samples[c].sample_composition_time_offset};this.samples.push(g)}}}}return e(a,[{key:"getChildBox",value:function(a){for(var b=0;b<this.boxes.length;b++)if(this.boxes[b].type===a)return this.boxes[b]}},{key:"getChildBoxes",value:function(a){for(var b=[],c=0;c<this.boxes.length;c++)this.boxes[c].type===a&&b.push(this.boxes[c]);return b}}]),a}();c.default=f,b.exports=c.default},{}],216:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.DVRWindowSize=NaN,this.loadedTime=null,this.availableFrom=null,this.minBufferTime=NaN,this.duration=NaN,this.isDynamic=!1,this.maxFragmentDuration=null};c.default=e,b.exports=c.default},{}],217:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=null,this.type=null,this.streamInfo=null,this.representationCount=0,this.lang=null,this.viewpoint=null,this.accessibility=null,this.audioChannelConfiguration=null,this.roles=null,this.codec=null,this.mimeType=null,this.contentProtection=null,this.isText=!1,this.KID=null,this.bitrateList=null};c.default=e,b.exports=c.default},{}],218:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.TcpList=[],this.HttpList=[],this.RepSwitchList=[],this.BufferLevel=[],this.BufferState=[],this.PlayList=[],this.DroppedFrames=[],this.SchedulingInfo=[],this.DVRInfo=[],this.ManifestUpdate=[],this.RequestsQueue=null,this.DVBErrors=[]};c.default=e,b.exports=c.default},{}],219:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.quality=null,this.DVRWindow=null,this.fragmentDuration=null,this.mediaInfo=null,this.MSETimeOffset=null};c.default=e,b.exports=c.default},{}],220:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=null,this.start=NaN,this.duration=NaN,this.manifestInfo=null,this.isLast=!0};c.default=e,b.exports=c.default},{}],221:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(100),i=d(h),j=a(213),k=d(j),l=function(a){function b(a,c){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.url=a||null,this.type=c||null,this.mediaType=i.default.STREAM,this.responseType=""}return f(b,a),b}(k.default);c.default=l,b.exports=c.default},{100:100,213:213}],222:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.captionData=null,this.label=null,this.lang=null,this.defaultTrack=!1,this.kind=null,this.isFragmented=!1,this.isEmbedded=!1};c.default=e,b.exports=c.default},{}],223:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.url=null,this.width=null,this.height=null,this.x=null,this.y=null};c.default=e,b.exports=c.default},{}],224:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.bitrate=0,this.width=0,this.height=0,this.tilesHor=0,this.tilesVert=0,this.widthPerTile=0,this.heightPerTile=0,this.startNumber=0,this.segmentDuration=0,this.timescale=0,this.templateUrl="",this.id=""};c.default=e,b.exports=c.default},{}],225:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.t=null,this.xywh=null,this.track=null,this.id=null,this.s=null,this.r=null};c.default=e,b.exports=c.default},{}],226:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.t=null,this.level=null};c.default=e,b.exports=c.default},{}],227:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(106),g=d(f),h=function a(){e(this,a),this.target=null,this.state=g.default.BUFFER_EMPTY};c.default=h,b.exports=c.default},{106:106}],228:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.time=null,this.range=null,this.manifestInfo=null};c.default=e,b.exports=c.default},{}],229:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.time=null,this.droppedFrames=null};c.default=e,b.exports=c.default},{}],230:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.tcpid=null,this.type=null,this.url=null,this.actualurl=null,this.range=null,this.trequest=null,this.tresponse=null,this.responsecode=null,this.interval=null,this.trace=[],this._stream=null,this._tfinish=null,this._mediaduration=null,this._responseHeaders=null,this._serviceLocation=null},f=function a(){d(this,a),this.s=null,this.d=null,this.b=[]};e.GET="GET",e.HEAD="HEAD",e.MPD_TYPE="MPD",e.XLINK_EXPANSION_TYPE="XLinkExpansion",e.INIT_SEGMENT_TYPE="InitializationSegment",e.INDEX_SEGMENT_TYPE="IndexSegment",e.MEDIA_SEGMENT_TYPE="MediaSegment",e.BITSTREAM_SWITCHING_SEGMENT_TYPE="BitstreamSwitchingSegment",e.OTHER_TYPE="other",c.HTTPRequest=e,c.HTTPRequestTrace=f},{}],231:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mediaType=null,this.type=null,this.requestTime=null,this.fetchTime=null,this.availabilityStartTime=null,this.presentationStartTime=0,this.clientTimeOffset=0,this.currentTime=null,this.buffered=null,this.latency=0,this.streamInfo=[],this.representationInfo=[]},f=function a(){d(this,a),this.id=null,this.index=null,this.start=null,this.duration=null},g=function a(){d(this,a),this.id=null,this.index=null,this.mediaType=null,this.streamIndex=null,this.presentationTimeOffset=null,this.startNumber=null,this.fragmentInfoType=null};c.ManifestUpdate=e,c.ManifestUpdateStreamInfo=f,c.ManifestUpdateRepresentationInfo=g},{}],232:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.start=null,this.mstart=null,this.starttype=null,this.trace=[]};e.INITIAL_PLAYOUT_START_REASON="initial_playout",e.SEEK_START_REASON="seek",e.RESUME_FROM_PAUSE_START_REASON="resume",e.METRICS_COLLECTION_START_REASON="metrics_collection_start";var f=function a(){d(this,a),this.representationid=null,this.subreplevel=null,this.start=null,this.mstart=null,this.duration=null,this.playbackspeed=null,this.stopreason=null};f.REPRESENTATION_SWITCH_STOP_REASON="representation_switch",f.REBUFFERING_REASON="rebuffering",f.USER_REQUEST_STOP_REASON="user_request",f.END_OF_PERIOD_STOP_REASON="end_of_period",f.END_OF_CONTENT_STOP_REASON="end_of_content",f.METRICS_COLLECTION_STOP_REASON="metrics_collection_end",f.FAILURE_STOP_REASON="failure",c.PlayList=e,c.PlayListTrace=f},{}],233:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.t=null,this.mt=null,this.to=null,this.lto=null};c.default=e,b.exports=c.default},{}],234:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.loadingRequests=[],this.executedRequests=[]};c.default=e,b.exports=c.default},{}],235:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mediaType=null,this.t=null,this.type=null,this.startTime=null,this.availabilityStartTime=null,this.duration=null,this.quality=null,this.range=null,this.state=null};c.default=e,b.exports=c.default},{}],236:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.tcpid=null,this.dest=null,this.topen=null,this.tclose=null,this.tconnect=null};c.default=e,b.exports=c.default},{}]},{},[5]); -//# sourceMappingURL=dash.all.min.js.map \ No newline at end of file diff --git a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/flv.min.js b/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/flv.min.js deleted file mode 100644 index 4a3efed93..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/flv.min.js +++ /dev/null @@ -1,7 +0,0 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.flvjs=e()}}(function(){var e;return function e(t,n,i){function r(a,o){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[a]={exports:{}};t[a][0].call(d.exports,function(e){var n=t[a][1][e];return r(n||e)},d,d.exports,e,t,n,i)}return n[a].exports}for(var s="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,n,i){(function(r,s){!function(t,r){"object"==typeof i&&void 0!==n?n.exports=r():"function"==typeof e&&e.amd?e(r):t.ES6Promise=r()}(this,function(){"use strict";function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function n(e){return"function"==typeof e}function i(e){K=e}function a(e){q=e}function o(){return void 0!==H?function(){H(l)}:u()}function u(){var e=setTimeout;return function(){return e(l,1)}}function l(){for(var e=0;e<z;e+=2){(0,J[e])(J[e+1]),J[e]=void 0,J[e+1]=void 0}z=0}function d(e,t){var n=arguments,i=this,r=new this.constructor(f);void 0===r[ee]&&I(r);var s=i._state;return s?function(){var e=n[s-1];q(function(){return O(s,r,e,i._result)})}():L(i,r,e,t),r}function h(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(f);return E(n,e),n}function f(){}function c(){return new TypeError("You cannot resolve a promise with itself")}function _(){return new TypeError("A promises callback cannot return that same promise.")}function m(e){try{return e.then}catch(e){return re.error=e,re}}function p(e,t,n,i){try{e.call(t,n,i)}catch(e){return e}}function v(e,t,n){q(function(e){var i=!1,r=p(n,t,function(n){i||(i=!0,t!==n?E(e,n):S(e,n))},function(t){i||(i=!0,k(e,t))},"Settle: "+(e._label||" unknown promise"));!i&&r&&(i=!0,k(e,r))},e)}function g(e,t){t._state===ne?S(e,t._result):t._state===ie?k(e,t._result):L(t,void 0,function(t){return E(e,t)},function(t){return k(e,t)})}function y(e,t,i){t.constructor===e.constructor&&i===d&&t.constructor.resolve===h?g(e,t):i===re?(k(e,re.error),re.error=null):void 0===i?S(e,t):n(i)?v(e,t,i):S(e,t)}function E(t,n){t===n?k(t,c()):e(n)?y(t,n,m(n)):S(t,n)}function b(e){e._onerror&&e._onerror(e._result),w(e)}function S(e,t){e._state===te&&(e._result=t,e._state=ne,0!==e._subscribers.length&&q(w,e))}function k(e,t){e._state===te&&(e._state=ie,e._result=t,q(b,e))}function L(e,t,n,i){var r=e._subscribers,s=r.length;e._onerror=null,r[s]=t,r[s+ne]=n,r[s+ie]=i,0===s&&e._state&&q(w,e)}function w(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var i=void 0,r=void 0,s=e._result,a=0;a<t.length;a+=3)i=t[a],r=t[a+n],i?O(n,i,r,s):r(s);e._subscribers.length=0}}function R(){this.error=null}function A(e,t){try{return e(t)}catch(e){return se.error=e,se}}function O(e,t,i,r){var s=n(i),a=void 0,o=void 0,u=void 0,l=void 0;if(s){if(a=A(i,r),a===se?(l=!0,o=a.error,a.error=null):u=!0,t===a)return void k(t,_())}else a=r,u=!0;t._state!==te||(s&&u?E(t,a):l?k(t,o):e===ne?S(t,a):e===ie&&k(t,a))}function T(e,t){try{t(function(t){E(e,t)},function(t){k(e,t)})}catch(t){k(e,t)}}function C(){return ae++}function I(e){e[ee]=ae++,e._state=void 0,e._result=void 0,e._subscribers=[]}function x(e,t){this._instanceConstructor=e,this.promise=new e(f),this.promise[ee]||I(this.promise),V(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&S(this.promise,this._result))):k(this.promise,M())}function M(){return new Error("Array Methods must be provided an Array")}function D(e){return new x(this,e).promise}function B(e){var t=this;return new t(V(e)?function(n,i){for(var r=e.length,s=0;s<r;s++)t.resolve(e[s]).then(n,i)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function j(e){var t=this,n=new t(f);return k(n,e),n}function P(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function U(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function N(e){this[ee]=C(),this._result=this._state=void 0,this._subscribers=[],f!==e&&("function"!=typeof e&&P(),this instanceof N?T(this,e):U())}function F(){var e=void 0;if(void 0!==s)e=s;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=N}var G=void 0;G=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var V=G,z=0,H=void 0,K=void 0,q=function(e,t){J[z]=e,J[z+1]=t,2===(z+=2)&&(K?K(l):$())},W="undefined"!=typeof window?window:void 0,X=W||{},Y=X.MutationObserver||X.WebKitMutationObserver,Z="undefined"==typeof self&&void 0!==r&&"[object process]"==={}.toString.call(r),Q="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,J=new Array(1e3),$=void 0;$=Z?function(){return function(){return r.nextTick(l)}}():Y?function(){var e=0,t=new Y(l),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}():Q?function(){var e=new MessageChannel;return e.port1.onmessage=l,function(){return e.port2.postMessage(0)}}():void 0===W&&"function"==typeof t?function(){try{var e=t,n=e("vertx");return H=n.runOnLoop||n.runOnContext,o()}catch(e){return u()}}():u();var ee=Math.random().toString(36).substring(16),te=void 0,ne=1,ie=2,re=new R,se=new R,ae=0;return x.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===te&&n<e;n++)this._eachEntry(t[n],n)},x.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,i=n.resolve;if(i===h){var r=m(e);if(r===d&&e._state!==te)this._settledAt(e._state,t,e._result);else if("function"!=typeof r)this._remaining--,this._result[t]=e;else if(n===N){var s=new n(f);y(s,e,r),this._willSettleAt(s,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(i(e),t)},x.prototype._settledAt=function(e,t,n){var i=this.promise;i._state===te&&(this._remaining--,e===ie?k(i,n):this._result[t]=n),0===this._remaining&&S(i,this._result)},x.prototype._willSettleAt=function(e,t){var n=this;L(e,void 0,function(e){return n._settledAt(ne,t,e)},function(e){return n._settledAt(ie,t,e)})},N.all=D,N.race=B,N.resolve=h,N.reject=j,N._setScheduler=i,N._setAsap=a,N._asap=q,N.prototype={constructor:N,then:d,catch:function(e){return this.then(null,e)}},N.polyfill=F,N.Promise=N,N})}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:3}],2:[function(e,t,n){function i(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function s(e){return"number"==typeof e}function a(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0,i.defaultMaxListeners=10,i.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},i.prototype.emit=function(e){var t,n,i,s,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}if(n=this._events[e],o(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(a(n))for(s=Array.prototype.slice.call(arguments,1),l=n.slice(),i=l.length,u=0;u<i;u++)l[u].apply(this,s);return!0},i.prototype.addListener=function(e,t){var n;if(!r(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,r(t.listener)?t.listener:t),this._events[e]?a(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,a(this._events[e])&&!this._events[e].warned&&(n=o(this._maxListeners)?i.defaultMaxListeners:this._maxListeners)&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(e,t){function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}if(!r(t))throw TypeError("listener must be a function");var i=!1;return n.listener=t,this.on(e,n),this},i.prototype.removeListener=function(e,t){var n,i,s,o;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],s=n.length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(n)){for(o=s;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){i=o;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},i.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],r(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},i.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},i.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},i.listenerCount=function(e,t){return e.listenerCount(t)}},{}],3:[function(e,t,n){function i(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function s(e){if(h===setTimeout)return setTimeout(e,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(e,0);try{return h(e,0)}catch(t){try{return h.call(null,e,0)}catch(t){return h.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function o(){p&&_&&(p=!1,_.length?m=_.concat(m):v=-1,m.length&&u())}function u(){if(!p){var e=s(o);p=!0;for(var t=m.length;t;){for(_=m,m=[];++v<t;)_&&_[v].run();v=-1,t=m.length}_=null,p=!1,a(e)}}function l(e,t){this.fun=e,this.array=t}function d(){}var h,f,c=t.exports={};!function(){try{h="function"==typeof setTimeout?setTimeout:i}catch(e){h=i}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(e){f=r}}();var _,m=[],p=!1,v=-1;c.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];m.push(new l(e,t)),1!==m.length||p||s(u)},l.prototype.run=function(){this.fun.apply(null,this.array)},c.title="browser",c.browser=!0,c.env={},c.argv=[],c.version="",c.versions={},c.on=d,c.addListener=d,c.once=d,c.off=d,c.removeListener=d,c.removeAllListeners=d,c.emit=d,c.prependListener=d,c.prependOnceListener=d,c.listeners=function(e){return[]},c.binding=function(e){throw new Error("process.binding is not supported")},c.cwd=function(){return"/"},c.chdir=function(e){throw new Error("process.chdir is not supported")},c.umask=function(){return 0}},{}],4:[function(e,t,n){var i=arguments[3],r=arguments[4],s=arguments[5],a=JSON.stringify;t.exports=function(e,t){function n(e){p[e]=!0;for(var t in r[e][1]){var i=r[e][1][t];p[i]||n(i)}}for(var o,u=Object.keys(s),l=0,d=u.length;l<d;l++){var h=u[l],f=s[h].exports;if(f===e||f&&f.default===e){o=h;break}}if(!o){o=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var c={},l=0,d=u.length;l<d;l++){var h=u[l];c[h]=h}r[o]=[Function(["require","module","exports"],"("+e+")(self)"),c]}var _=Math.floor(Math.pow(16,8)*Math.random()).toString(16),m={};m[o]=o,r[_]=[Function(["require"],"var f = require("+a(o)+");(f.default ? f.default : f)(self);"),m];var p={};n(_);var v="("+i+")({"+Object.keys(p).map(function(e){return a(e)+":["+r[e][0]+","+a(r[e][1])+"]"}).join(",")+"},{},["+a(_)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL,y=new Blob([v],{type:"text/javascript"});if(t&&t.bare)return y;var E=g.createObjectURL(y),b=new Worker(E);return b.objectURL=E,b}},{}],5:[function(e,t,n){"use strict";function i(){return Object.assign({},r)}Object.defineProperty(n,"__esModule",{value:!0}),n.createDefaultConfig=i;var r=n.defaultConfig={enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1}},{}],6:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("../io/io-controller.js"),a=function(e){return e&&e.__esModule?e:{default:e}}(s),o=e("../config.js"),u=function(){function e(){i(this,e)}return r(e,null,[{key:"supportMSEH264Playback",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"supportNetworkStreamIO",value:function(){var e=new a.default({},(0,o.createDefaultConfig)()),t=e.loaderType;return e.destroy(),"fetch-stream-loader"==t||"xhr-moz-chunked-loader"==t}},{key:"getNetworkLoaderTypeName",value:function(){var e=new a.default({},(0,o.createDefaultConfig)()),t=e.loaderType;return e.destroy(),t}},{key:"supportNativeMediaPlayback",value:function(t){void 0==e.videoElement&&(e.videoElement=window.document.createElement("video"));var n=e.videoElement.canPlayType(t);return"probably"===n||"maybe"==n}},{key:"getFeatureList",value:function(){var t={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return t.mseFlvPlayback=e.supportMSEH264Playback(),t.networkStreamIO=e.supportNetworkStreamIO(),t.networkLoaderName=e.getNetworkLoaderTypeName(),t.mseLiveFlvPlayback=t.mseFlvPlayback&&t.networkStreamIO,t.nativeMP4H264Playback=e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),t.nativeWebmVP8Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),t.nativeWebmVP9Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),t}}]),e}();n.default=u},{"../config.js":5,"../io/io-controller.js":23}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e),this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}return r(e,[{key:"isComplete",value:function(){var e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&e&&t}},{key:"isSeekable",value:function(){return!0===this.hasKeyframesIndex}},{key:"getNearestKeyframe",value:function(e){if(null==this.keyframesIndex)return null;var t=this.keyframesIndex,n=this._search(t.times,e);return{index:n,milliseconds:t.times[n],fileposition:t.filepositions[n]}}},{key:"_search",value:function(e,t){var n=0,i=e.length-1,r=0,s=0,a=i;for(t<e[0]&&(n=0,s=a+1);s<=a;){if((r=s+Math.floor((a-s)/2))===i||t>=e[r]&&t<e[r+1]){n=r;break}e[r]<t?s=r+1:a=r-1}return n}}]),e}();n.default=s},{}],8:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();n.SampleInfo=function e(t,n,r,s,a){i(this,e),this.dts=t,this.pts=n,this.duration=r,this.originalDts=s,this.isSyncPoint=a,this.fileposition=null},n.MediaSegmentInfo=function(){function e(){i(this,e),this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}return r(e,[{key:"appendSyncPoint",value:function(e){e.isSyncPoint=!0,this.syncPoints.push(e)}}]),e}(),n.IDRSampleList=function(){function e(){i(this,e),this._list=[]}return r(e,[{key:"clear",value:function(){this._list=[]}},{key:"appendArray",value:function(e){var t=this._list;0!==e.length&&(t.length>0&&e[0].originalDts<t[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))}},{key:"getLastSyncPointBeforeDts",value:function(e){if(0==this._list.length)return null;var t=this._list,n=0,i=t.length-1,r=0,s=0,a=i;for(e<t[0].dts&&(n=0,s=a+1);s<=a;){if((r=s+Math.floor((a-s)/2))===i||e>=t[r].dts&&e<t[r+1].dts){n=r;break}t[r].dts<e?s=r+1:a=r-1}return this._list[n]}}]),e}(),n.MediaSegmentInfoList=function(){function e(t){i(this,e),this._type=t,this._list=[],this._lastAppendLocation=-1}return r(e,[{key:"isEmpty",value:function(){return 0===this._list.length}},{key:"clear",value:function(){this._list=[],this._lastAppendLocation=-1}},{key:"_searchNearestSegmentBefore",value:function(e){var t=this._list;if(0===t.length)return-2;var n=t.length-1,i=0,r=0,s=n,a=0;if(e<t[0].originalBeginDts)return a=-1;for(;r<=s;){if((i=r+Math.floor((s-r)/2))===n||e>t[i].lastSample.originalDts&&e<t[i+1].originalBeginDts){a=i;break}t[i].originalBeginDts<e?r=i+1:s=i-1}return a}},{key:"_searchNearestSegmentAfter",value:function(e){return this._searchNearestSegmentBefore(e)+1}},{key:"append",value:function(e){var t=this._list,n=e,i=this._lastAppendLocation,r=0;-1!==i&&i<t.length&&n.originalBeginDts>=t[i].lastSample.originalDts&&(i===t.length-1||i<t.length-1&&n.originalBeginDts<t[i+1].originalBeginDts)?r=i+1:t.length>0&&(r=this._searchNearestSegmentBefore(n.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,n)}},{key:"getLastSegmentBefore",value:function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}},{key:"getLastSampleBefore",value:function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null}},{key:"getLastSyncPointBefore",value:function(e){for(var t=this._searchNearestSegmentBefore(e),n=this._list[t].syncPoints;0===n.length&&t>0;)t--,n=this._list[t].syncPoints;return n.length>0?n[n.length-1]:null}},{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}]),e}()},{}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("../utils/logger.js"),l=i(u),d=e("../utils/browser.js"),h=i(d),f=e("./mse-events.js"),c=i(f),_=e("./media-segment-info.js"),m=e("../utils/exception.js"),p=function(){function e(t){r(this,e),this.TAG="MSEController",this._config=t,this._emitter=new o.default,this._config.isLive&&void 0==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new _.IDRSampleList}return s(e,[{key:"destroy",value:function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"attachMediaElement",value:function(e){if(this._mediaSource)throw new m.IllegalStateException("MediaSource has been attached to an HTMLMediaElement!");var t=this._mediaSource=new window.MediaSource;t.addEventListener("sourceopen",this.e.onSourceOpen),t.addEventListener("sourceended",this.e.onSourceEnded),t.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),e.src=this._mediaSourceObjectURL}},{key:"detachMediaElement",value:function(){if(this._mediaSource){var e=this._mediaSource;for(var t in this._sourceBuffers){var n=this._pendingSegments[t];n.splice(0,n.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;var i=this._sourceBuffers[t];i&&("closed"!==e.readyState&&(e.removeSourceBuffer(i),i.removeEventListener("error",this.e.onSourceBufferError),i.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)),this._mimeTypes[t]=null,this._sourceBuffers[t]=null)}if("open"===e.readyState)try{e.endOfStream()}catch(e){l.default.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}},{key:"appendInitSegment",value:function(e,t){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);var n=e,i=""+n.container;n.codec&&n.codec.length>0&&(i+=";codecs="+n.codec);var r=!1;if(l.default.v(this.TAG,"Received Initialization Segment, mimeType: "+i),this._lastInitSegments[n.type]=n,i!==this._mimeTypes[n.type]){if(this._mimeTypes[n.type])l.default.v(this.TAG,"Notice: "+n.type+" mimeType changed, origin: "+this._mimeTypes[n.type]+", target: "+i);else{r=!0;try{var s=this._sourceBuffers[n.type]=this._mediaSource.addSourceBuffer(i);s.addEventListener("error",this.e.onSourceBufferError),s.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return l.default.e(this.TAG,e.message),void this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[n.type]=i}t||this._pendingSegments[n.type].push(n),r||this._sourceBuffers[n.type]&&!this._sourceBuffers[n.type].updating&&this._doAppendSegments(),h.default.safari&&"audio/mpeg"===n.container&&n.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=n.mediaDuration/1e3,this._updateMediaSourceDuration())}},{key:"appendMediaSegment",value:function(e){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var n=this._sourceBuffers[t.type];!n||n.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}},{key:"seek",value:function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var n=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{n.abort()}catch(e){l.default.e(this.TAG,e.message)}this._idrList.clear();var i=this._pendingSegments[t];if(i.splice(0,i.length),"closed"!==this._mediaSource.readyState){for(var r=0;r<n.buffered.length;r++){var s=n.buffered.start(r),a=n.buffered.end(r);this._pendingRemoveRanges[t].push({start:s,end:a})}if(n.updating||this._doRemoveRanges(),h.default.safari){var o=this._lastInitSegments[t];o&&(this._pendingSegments[t].push(o),n.updating||this._doAppendSegments())}}}}},{key:"endOfStream",value:function(){var e=this._mediaSource,t=this._sourceBuffers;if(!e||"open"!==e.readyState)return void(e&&"closed"===e.readyState&&this._hasPendingSegments()&&(this._hasPendingEos=!0));t.video&&t.video.updating||t.audio&&t.audio.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,e.endOfStream())}},{key:"getNearestKeyframe",value:function(e){return this._idrList.getLastSyncPointBeforeDts(e)}},{key:"_needCleanupSourceBuffer",value:function(){if(!this._config.autoCleanupSourceBuffer)return!1;var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var n=this._sourceBuffers[t];if(n){var i=n.buffered;if(i.length>=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1}},{key:"_doCleanupSourceBuffer",value:function(){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var n=this._sourceBuffers[t];if(n){for(var i=n.buffered,r=!1,s=0;s<i.length;s++){var a=i.start(s),o=i.end(s);if(a<=e&&e<o+3){if(e-a>=this._config.autoCleanupMaxBackwardDuration){r=!0;var u=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:a,end:u})}}else o<e&&(r=!0,this._pendingRemoveRanges[t].push({start:a,end:o}))}r&&!n.updating&&this._doRemoveRanges()}}}},{key:"_updateMediaSourceDuration",value:function(){var e=this._sourceBuffers;if(0!==this._mediaElement.readyState&&"open"===this._mediaSource.readyState&&!(e.video&&e.video.updating||e.audio&&e.audio.updating)){var t=this._mediaSource.duration,n=this._pendingMediaDuration;n>0&&(isNaN(t)||n>t)&&(l.default.v(this.TAG,"Update MediaSource duration from "+t+" to "+n),this._mediaSource.duration=n),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}}},{key:"_doRemoveRanges",value:function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],n=this._pendingRemoveRanges[e];n.length&&!t.updating;){var i=n.shift();t.remove(i.start,i.end)}}},{key:"_doAppendSegments",value:function(){var e=this._pendingSegments;for(var t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var n=e[t].shift();if(n.timestampOffset){var i=this._sourceBuffers[t].timestampOffset,r=n.timestampOffset/1e3,s=Math.abs(i-r);s>.1&&(l.default.v(this.TAG,"Update MPEG audio timestampOffset from "+i+" to "+r),this._sourceBuffers[t].timestampOffset=r),delete n.timestampOffset}if(!n.data||0===n.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(n.data),this._isBufferFull=!1,"video"===t&&n.hasOwnProperty("info")&&this._idrList.appendArray(n.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(n),22===e.code?(this._isBufferFull||this._emitter.emit(c.default.BUFFER_FULL),this._isBufferFull=!0):(l.default.e(this.TAG,e.message),this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message}))}}}},{key:"_onSourceOpen",value:function(){if(l.default.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(c.default.SOURCE_OPEN)}},{key:"_onSourceEnded",value:function(){l.default.v(this.TAG,"MediaSource onSourceEnded")}},{key:"_onSourceClose",value:function(){l.default.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))}},{key:"_hasPendingSegments",value:function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0}},{key:"_hasPendingRemoveRanges",value:function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}},{key:"_onSourceBufferUpdateEnd",value:function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(c.default.UPDATE_END)}},{key:"_onSourceBufferError",value:function(e){l.default.e(this.TAG,"SourceBuffer Error: "+e)}}]),e}();n.default=p},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./media-segment-info.js":8,"./mse-events.js":10,events:2}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"};n.default=i},{}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t} -}(),a=e("events"),o=i(a),u=e("../utils/logger.js"),l=i(u),d=e("../utils/logging-control.js"),h=i(d),f=e("./transmuxing-controller.js"),c=i(f),_=e("./transmuxing-events.js"),m=i(_),p=e("./transmuxing-worker.js"),v=i(p),g=e("./media-info.js"),y=i(g),E=function(){function t(n,i){if(r(this,t),this.TAG="Transmuxer",this._emitter=new o.default,i.enableWorker&&"undefined"!=typeof Worker)try{var s=e("webworkify");this._worker=s(v.default),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[n,i]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},h.default.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:h.default.getConfig()})}catch(e){l.default.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new c.default(n,i)}else this._controller=new c.default(n,i);if(this._controller){var a=this._controller;a.on(m.default.IO_ERROR,this._onIOError.bind(this)),a.on(m.default.DEMUX_ERROR,this._onDemuxError.bind(this)),a.on(m.default.INIT_SEGMENT,this._onInitSegment.bind(this)),a.on(m.default.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),a.on(m.default.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),a.on(m.default.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),a.on(m.default.MEDIA_INFO,this._onMediaInfo.bind(this)),a.on(m.default.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),a.on(m.default.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}return s(t,[{key:"destroy",value:function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),h.default.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"hasWorker",value:function(){return null!=this._worker}},{key:"open",value:function(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}},{key:"close",value:function(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}},{key:"seek",value:function(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)}},{key:"pause",value:function(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}},{key:"resume",value:function(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}},{key:"_onInitSegment",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.INIT_SEGMENT,e,t)})}},{key:"_onMediaSegment",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.MEDIA_SEGMENT,e,t)})}},{key:"_onLoadingComplete",value:function(){var e=this;Promise.resolve().then(function(){e._emitter.emit(m.default.LOADING_COMPLETE)})}},{key:"_onRecoveredEarlyEof",value:function(){var e=this;Promise.resolve().then(function(){e._emitter.emit(m.default.RECOVERED_EARLY_EOF)})}},{key:"_onMediaInfo",value:function(e){var t=this;Promise.resolve().then(function(){t._emitter.emit(m.default.MEDIA_INFO,e)})}},{key:"_onStatisticsInfo",value:function(e){var t=this;Promise.resolve().then(function(){t._emitter.emit(m.default.STATISTICS_INFO,e)})}},{key:"_onIOError",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.IO_ERROR,e,t)})}},{key:"_onDemuxError",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.DEMUX_ERROR,e,t)})}},{key:"_onRecommendSeekpoint",value:function(e){var t=this;Promise.resolve().then(function(){t._emitter.emit(m.default.RECOMMEND_SEEKPOINT,e)})}},{key:"_onLoggingConfigChanged",value:function(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}},{key:"_onWorkerMessage",value:function(e){var t=e.data,n=t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case m.default.INIT_SEGMENT:case m.default.MEDIA_SEGMENT:this._emitter.emit(t.msg,n.type,n.data);break;case m.default.LOADING_COMPLETE:case m.default.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case m.default.MEDIA_INFO:Object.setPrototypeOf(n,y.default.prototype),this._emitter.emit(t.msg,n);break;case m.default.STATISTICS_INFO:this._emitter.emit(t.msg,n);break;case m.default.IO_ERROR:case m.default.DEMUX_ERROR:this._emitter.emit(t.msg,n.type,n.info);break;case m.default.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,n);break;case"logcat_callback":l.default.emitter.emit("log",n.type,n.logcat)}}}]),t}();n.default=E},{"../utils/logger.js":41,"../utils/logging-control.js":42,"./media-info.js":7,"./transmuxing-controller.js":12,"./transmuxing-events.js":13,"./transmuxing-worker.js":14,events:2,webworkify:4}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("../utils/logger.js"),l=i(u),d=e("../utils/browser.js"),h=i(d),f=e("./media-info.js"),c=i(f),_=e("../demux/flv-demuxer.js"),m=i(_),p=e("../remux/mp4-remuxer.js"),v=i(p),g=e("../demux/demux-errors.js"),y=i(g),E=e("../io/io-controller.js"),b=i(E),S=e("./transmuxing-events.js"),k=i(S),L=(e("../io/loader.js"),function(){function e(t,n){r(this,e),this.TAG="TransmuxingController",this._emitter=new o.default,this._config=n,t.segments||(t.segments=[{duration:t.duration,filesize:t.filesize,url:t.url}]),"boolean"!=typeof t.cors&&(t.cors=!0),"boolean"!=typeof t.withCredentials&&(t.withCredentials=!1),this._mediaDataSource=t,this._currentSegmentIndex=0;var i=0;this._mediaDataSource.segments.forEach(function(e){e.timestampBase=i,i+=e.duration,e.cors=t.cors,e.withCredentials=t.withCredentials,n.referrerPolicy&&(e.referrerPolicy=n.referrerPolicy)}),isNaN(i)||this._mediaDataSource.duration===i||(this._mediaDataSource.duration=i),this._mediaInfo=null,this._demuxer=null,this._remuxer=null,this._ioctl=null,this._pendingSeekTime=null,this._pendingResolveSeekPoint=null,this._statisticsReporter=null}return s(e,[{key:"destroy",value:function(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"start",value:function(){this._loadSegment(0),this._enableStatisticsReporter()}},{key:"_loadSegment",value:function(e,t){this._currentSegmentIndex=e;var n=this._mediaDataSource.segments[e],i=this._ioctl=new b.default(n,this._config,e);i.onError=this._onIOException.bind(this),i.onSeeked=this._onIOSeeked.bind(this),i.onComplete=this._onIOComplete.bind(this),i.onRedirect=this._onIORedirect.bind(this),i.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):i.onDataArrival=this._onInitChunkArrival.bind(this),i.open(t)}},{key:"stop",value:function(){this._internalAbort(),this._disableStatisticsReporter()}},{key:"_internalAbort",value:function(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}},{key:"pause",value:function(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}},{key:"resume",value:function(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}},{key:"seek",value:function(e){if(null!=this._mediaInfo&&this._mediaInfo.isSeekable()){var t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){var n=this._mediaInfo.segments[t];if(void 0==n)this._pendingSeekTime=e;else{var i=n.getNearestKeyframe(e);this._remuxer.seek(i.milliseconds),this._ioctl.seek(i.fileposition),this._pendingResolveSeekPoint=i.milliseconds}}else{var r=this._mediaInfo.segments[t];if(void 0==r)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.seek(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{var s=r.getNearestKeyframe(e);this._internalAbort(),this._remuxer.seek(e),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,s.fileposition),this._pendingResolveSeekPoint=s.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}}},{key:"_searchSegmentIndexContains",value:function(e){for(var t=this._mediaDataSource.segments,n=t.length-1,i=0;i<t.length;i++)if(e<t[i].timestampBase){n=i-1;break}return n}},{key:"_onInitChunkArrival",value:function(e,t){var n=this,i=null,r=0;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,r=this._demuxer.parseChunks(e,t);else if((i=m.default.probe(e)).match){this._demuxer=new m.default(i,this._config),this._remuxer||(this._remuxer=new v.default(this._config));var s=this._mediaDataSource;void 0==s.duration||isNaN(s.duration)||(this._demuxer.overridedDuration=s.duration),"boolean"==typeof s.hasAudio&&(this._demuxer.overridedHasAudio=s.hasAudio),"boolean"==typeof s.hasVideo&&(this._demuxer.overridedHasVideo=s.hasVideo),this._demuxer.timestampBase=s.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),r=this._demuxer.parseChunks(e,t)}else i=null,l.default.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then(function(){n._internalAbort()}),this._emitter.emit(k.default.DEMUX_ERROR,y.default.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),r=0;return r}},{key:"_onMediaInfo",value:function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,c.default.prototype));var n=Object.assign({},e);Object.setPrototypeOf(n,c.default.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=n,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then(function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)})}},{key:"_onIOSeeked",value:function(){this._remuxer.insertDiscontinuity()}},{key:"_onIOComplete",value:function(e){var t=e,n=t+1;n<this._mediaDataSource.segments.length?(this._internalAbort(),this._remuxer.flushStashedSamples(),this._loadSegment(n)):(this._remuxer.flushStashedSamples(),this._emitter.emit(k.default.LOADING_COMPLETE),this._disableStatisticsReporter())}},{key:"_onIORedirect",value:function(e){var t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e}},{key:"_onIORecoveredEarlyEof",value:function(){this._emitter.emit(k.default.RECOVERED_EARLY_EOF)}},{key:"_onIOException",value:function(e,t){l.default.e(this.TAG,"IOException: type = "+e+", code = "+t.code+", msg = "+t.msg),this._emitter.emit(k.default.IO_ERROR,e,t),this._disableStatisticsReporter()}},{key:"_onDemuxException",value:function(e,t){l.default.e(this.TAG,"DemuxException: type = "+e+", info = "+t),this._emitter.emit(k.default.DEMUX_ERROR,e,t)}},{key:"_onRemuxerInitSegmentArrival",value:function(e,t){this._emitter.emit(k.default.INIT_SEGMENT,e,t)}},{key:"_onRemuxerMediaSegmentArrival",value:function(e,t){if(null==this._pendingSeekTime&&(this._emitter.emit(k.default.MEDIA_SEGMENT,e,t),null!=this._pendingResolveSeekPoint&&"video"===e)){var n=t.info.syncPoints,i=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,h.default.safari&&n.length>0&&n[0].originalDts===i&&(i=n[0].pts),this._emitter.emit(k.default.RECOMMEND_SEEKPOINT,i)}}},{key:"_enableStatisticsReporter",value:function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}},{key:"_disableStatisticsReporter",value:function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"_reportSegmentMediaInfo",value:function(e){var t=this._mediaInfo.segments[e],n=Object.assign({},t);n.duration=this._mediaInfo.duration,n.segmentCount=this._mediaInfo.segmentCount,delete n.segments,delete n.keyframesIndex,this._emitter.emit(k.default.MEDIA_INFO,n)}},{key:"_reportStatisticsInfo",value:function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(k.default.STATISTICS_INFO,e)}}]),e}());n.default=L},{"../demux/demux-errors.js":16,"../demux/flv-demuxer.js":18,"../io/io-controller.js":23,"../io/loader.js":24,"../remux/mp4-remuxer.js":38,"../utils/browser.js":39,"../utils/logger.js":41,"./media-info.js":7,"./transmuxing-events.js":13,events:2}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"};n.default=i},{}],14:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=e("../utils/logger.js"),s=(i(r),e("../utils/logging-control.js")),a=i(s),o=e("../utils/polyfill.js"),u=i(o),l=e("./transmuxing-controller.js"),d=i(l),h=e("./transmuxing-events.js"),f=i(h),c=function(e){function t(t,n){var i={msg:f.default.INIT_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function n(t,n){var i={msg:f.default.MEDIA_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function i(){var t={msg:f.default.LOADING_COMPLETE};e.postMessage(t)}function r(){var t={msg:f.default.RECOVERED_EARLY_EOF};e.postMessage(t)}function s(t){var n={msg:f.default.MEDIA_INFO,data:t};e.postMessage(n)}function o(t){var n={msg:f.default.STATISTICS_INFO,data:t};e.postMessage(n)}function l(t,n){e.postMessage({msg:f.default.IO_ERROR,data:{type:t,info:n}})}function h(t,n){e.postMessage({msg:f.default.DEMUX_ERROR,data:{type:t,info:n}})}function c(t){e.postMessage({msg:f.default.RECOMMEND_SEEKPOINT,data:t})}function _(t,n){e.postMessage({msg:"logcat_callback",data:{type:t,logcat:n}})}var m=null,p=_.bind(this);u.default.install(),e.addEventListener("message",function(u){switch(u.data.cmd){case"init":m=new d.default(u.data.param[0],u.data.param[1]),m.on(f.default.IO_ERROR,l.bind(this)),m.on(f.default.DEMUX_ERROR,h.bind(this)),m.on(f.default.INIT_SEGMENT,t.bind(this)),m.on(f.default.MEDIA_SEGMENT,n.bind(this)),m.on(f.default.LOADING_COMPLETE,i.bind(this)),m.on(f.default.RECOVERED_EARLY_EOF,r.bind(this)),m.on(f.default.MEDIA_INFO,s.bind(this)),m.on(f.default.STATISTICS_INFO,o.bind(this)),m.on(f.default.RECOMMEND_SEEKPOINT,c.bind(this));break;case"destroy":m&&(m.destroy(),m=null),e.postMessage({msg:"destroyed"});break;case"start":m.start();break;case"stop":m.stop();break;case"seek":m.seek(u.data.param);break;case"pause":m.pause();break;case"resume":m.resume();break;case"logging_config":var _=u.data.param;a.default.applyConfig(_),!0===_.enableCallback?a.default.addLogListener(p):a.default.removeLogListener(p)}})};n.default=c},{"../utils/logger.js":41,"../utils/logging-control.js":42,"../utils/polyfill.js":43,"./transmuxing-controller.js":12,"./transmuxing-events.js":13}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("../utils/logger.js"),o=i(a),u=e("../utils/utf8-conv.js"),l=i(u),d=e("../utils/exception.js"),h=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}(),f=function(){function e(){r(this,e)}return s(e,null,[{key:"parseScriptData",value:function(t,n,i){var r={};try{var s=e.parseValue(t,n,i),a=e.parseValue(t,n+s.size,i-s.size);r[s.data]=a.data}catch(e){o.default.e("AMF",e.toString())}return r}},{key:"parseObject",value:function(t,n,i){if(i<3)throw new d.IllegalStateException("Data not enough when parse ScriptDataObject");var r=e.parseString(t,n,i),s=e.parseValue(t,n+r.size,i-r.size),a=s.objectEnd;return{data:{name:r.data,value:s.data},size:r.size+s.size,objectEnd:a}}},{key:"parseVariable",value:function(t,n,i){return e.parseObject(t,n,i)}},{key:"parseString",value:function(e,t,n){if(n<2)throw new d.IllegalStateException("Data not enough when parse String");var i=new DataView(e,t,n),r=i.getUint16(0,!h),s=void 0;return s=r>0?(0,l.default)(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}},{key:"parseLongString",value:function(e,t,n){if(n<4)throw new d.IllegalStateException("Data not enough when parse LongString");var i=new DataView(e,t,n),r=i.getUint32(0,!h),s=void 0;return s=r>0?(0,l.default)(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}},{key:"parseDate",value:function(e,t,n){if(n<10)throw new d.IllegalStateException("Data size invalid when parse Date");var i=new DataView(e,t,n),r=i.getFloat64(0,!h);return r+=60*i.getInt16(8,!h)*1e3,{data:new Date(r),size:10}}},{key:"parseValue",value:function(t,n,i){if(i<1)throw new d.IllegalStateException("Data not enough when parse Value");var r=new DataView(t,n,i),s=1,a=r.getUint8(0),u=void 0,l=!1;try{switch(a){case 0:u=r.getFloat64(1,!h),s+=8;break;case 1:u=!!r.getUint8(1),s+=1;break;case 2:var f=e.parseString(t,n+1,i-1);u=f.data,s+=f.size;break;case 3:u={};var c=0;for(9==(16777215&r.getUint32(i-4,!h))&&(c=3);s<i-4;){var _=e.parseObject(t,n+s,i-s-c);if(_.objectEnd)break;u[_.data.name]=_.data.value,s+=_.size}if(s<=i-3){9===(16777215&r.getUint32(s-1,!h))&&(s+=3)}break;case 8:u={},s+=4;var m=0;for(9==(16777215&r.getUint32(i-4,!h))&&(m=3);s<i-8;){var p=e.parseVariable(t,n+s,i-s-m);if(p.objectEnd)break;u[p.data.name]=p.data.value,s+=p.size}if(s<=i-3){9===(16777215&r.getUint32(s-1,!h))&&(s+=3)}break;case 9:u=void 0,s=1,l=!0;break;case 10:u=[];var v=r.getUint32(1,!h);s+=4;for(var g=0;g<v;g++){var y=e.parseValue(t,n+s,i-s);u.push(y.data),s+=y.size}break;case 11:var E=e.parseDate(t,n+1,i-1);u=E.data,s+=E.size;break;case 12:var b=e.parseString(t,n+1,i-1);u=b.data,s+=b.size;break;default:s=i,o.default.w("AMF","Unsupported AMF value type "+a)}}catch(e){o.default.e("AMF",e.toString())}return{data:u,size:s,objectEnd:l}}}]),e}();n.default=f},{"../utils/exception.js":40,"../utils/logger.js":41,"../utils/utf8-conv.js":44}],16:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"};n.default=i},{}],17:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("../utils/exception.js"),a=function(){function e(t){i(this,e),this.TAG="ExpGolomb",this._buffer=t,this._buffer_index=0,this._total_bytes=t.byteLength,this._total_bits=8*t.byteLength,this._current_word=0,this._current_word_bits_left=0}return r(e,[{key:"destroy",value:function(){this._buffer=null}},{key:"_fillCurrentWord",value:function(){var e=this._total_bytes-this._buffer_index;if(e<=0)throw new s.IllegalStateException("ExpGolomb: _fillCurrentWord() but no bytes available");var t=Math.min(4,e),n=new Uint8Array(4);n.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(n.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}},{key:"readBits",value:function(e){if(e>32)throw new s.InvalidArgumentException("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var n=this._current_word_bits_left?this._current_word:0;n>>>=32-this._current_word_bits_left;var i=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(i,this._current_word_bits_left),a=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,n=n<<r|a}},{key:"readBool",value:function(){return 1===this.readBits(1)}},{key:"readByte",value:function(){return this.readBits(8)}},{key:"_skipLeadingZero",value:function(){var e=void 0;for(e=0;e<this._current_word_bits_left;e++)if(0!=(this._current_word&2147483648>>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}]),e}();n.default=a},{"../utils/exception.js":40}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=e("../utils/logger.js"),l=i(u),d=e("./amf-parser.js"),h=i(d),f=e("./sps-parser.js"),c=i(f),_=e("./demux-errors.js"),m=i(_),p=e("../core/media-info.js"),v=i(p),g=e("../utils/exception.js"),y=function(){function e(t,n){r(this,e),this.TAG="FLVDemuxer",this._config=n,this._onError=null,this._onMediaInfo=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=t.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=t.hasAudioTrack,this._hasVideo=t.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new v.default,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}()}return o(e,[{key:"destroy",value:function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onTrackMetadata=null,this._onDataAvailable=null}},{key:"bindDataSource",value:function(e){return e.onDataArrival=this.parseChunks.bind(this),this}},{key:"resetMediaInfo",value:function(){this._mediaInfo=new v.default}},{key:"_isInitialMetadataDispatched",value:function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched}},{key:"parseChunks",value:function(t,n){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new g.IllegalStateException("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var i=0,r=this._littleEndian;if(0===n){if(!(t.byteLength>13))return 0;i=e.probe(t).dataOffset}if(this._firstParse){this._firstParse=!1,n+i!==this._dataOffset&&l.default.w(this.TAG,"First time parsing but chunk byteStart invalid!");0!==new DataView(t,i).getUint32(0,!r)&&l.default.w(this.TAG,"PrevTagSize0 !== 0 !!!"),i+=4}for(;i<t.byteLength;){this._dispatch=!0;var s=new DataView(t,i);if(i+11+4>t.byteLength)break;var a=s.getUint8(0),o=16777215&s.getUint32(0,!r);if(i+11+o+4>t.byteLength)break;if(8===a||9===a||18===a){var u=s.getUint8(4),d=s.getUint8(5),h=s.getUint8(6),f=s.getUint8(7),c=h|d<<8|u<<16|f<<24;0!==(16777215&s.getUint32(7,!r))&&l.default.w(this.TAG,"Meet tag which has StreamID != 0!");var _=i+11;switch(a){case 8:this._parseAudioData(t,_,o,c);break;case 9:this._parseVideoData(t,_,o,c,n+i);break;case 18:this._parseScriptData(t,_,o)}var m=s.getUint32(11+o,!r);m!==11+o&&l.default.w(this.TAG,"Invalid PrevTagSize "+m),i+=11+o+4}else l.default.w(this.TAG,"Unsupported tag type "+a+", skipped"),i+=11+o+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),i}},{key:"_parseScriptData",value:function(e,t,n){var i=h.default.parseScriptData(e,t,n);if(i.hasOwnProperty("onMetaData")){if(null==i.onMetaData||"object"!==a(i.onMetaData))return void l.default.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&l.default.w(this.TAG,"Found another onMetaData tag!"),this._metadata=i;var r=this._metadata.onMetaData;if("boolean"==typeof r.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof r.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof r.audiodatarate&&(this._mediaInfo.audioDataRate=r.audiodatarate),"number"==typeof r.videodatarate&&(this._mediaInfo.videoDataRate=r.videodatarate),"number"==typeof r.width&&(this._mediaInfo.width=r.width),"number"==typeof r.height&&(this._mediaInfo.height=r.height),"number"==typeof r.duration){if(!this._durationOverrided){var s=Math.floor(r.duration*this._timescale);this._duration=s,this._mediaInfo.duration=s}}else this._mediaInfo.duration=0;if("number"==typeof r.framerate){var o=Math.floor(1e3*r.framerate);if(o>0){var u=o/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=u,this._referenceFrameRate.fps_num=o,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=u}}if("object"===a(r.keyframes)){this._mediaInfo.hasKeyframesIndex=!0;var d=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(d),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=r,l.default.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}}},{key:"_parseKeyframesIndex",value:function(e){for(var t=[],n=[],i=1;i<e.times.length;i++){var r=this._timestampBase+Math.floor(1e3*e.times[i]);t.push(r),n.push(e.filepositions[i])}return{times:t,filepositions:n}}},{key:"_parseAudioData",value:function(e,t,n,i){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid audio packet, missing SoundData payload!");if(!0!==this._hasAudioFlagOverrided||!1!==this._hasAudio){var r=(this._littleEndian,new DataView(e,t,n)),s=r.getUint8(0),a=s>>>4;if(2!==a&&10!==a)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+a);var o=0,u=(12&s)>>>2;if(!(u>=0&&u<=4))return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+u);o=this._flvSoundRateTable[u];var d=1&s,h=this._audioMetadata,f=this._audioTrack;if(h||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),h=this._audioMetadata={},h.type="audio",h.id=f.id,h.timescale=this._timescale,h.duration=this._duration,h.audioSampleRate=o,h.channelCount=0===d?1:2),10===a){var c=this._parseAACAudioData(e,t+1,n-1);if(void 0==c)return;if(0===c.packetType){h.config&&l.default.w(this.TAG,"Found another AudioSpecificConfig!");var _=c.data;h.audioSampleRate=_.samplingRate,h.channelCount=_.channelCount,h.codec=_.codec,h.originalCodec=_.originalCodec,h.config=_.config,h.refSampleDuration=1024/h.audioSampleRate*h.timescale,l.default.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",h);var p=this._mediaInfo;p.audioCodec=h.originalCodec,p.audioSampleRate=h.audioSampleRate,p.audioChannelCount=h.channelCount,p.hasVideo?null!=p.videoCodec&&(p.mimeType='video/x-flv; codecs="'+p.videoCodec+","+p.audioCodec+'"'):p.mimeType='video/x-flv; codecs="'+p.audioCodec+'"',p.isComplete()&&this._onMediaInfo(p)}else if(1===c.packetType){var v=this._timestampBase+i,g={unit:c.data,length:c.data.byteLength,dts:v,pts:v};f.samples.push(g),f.length+=c.data.length}else l.default.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===a){if(!h.codec){var y=this._parseMP3AudioData(e,t+1,n-1,!0);if(void 0==y)return;h.audioSampleRate=y.samplingRate,h.channelCount=y.channelCount,h.codec=y.codec,h.originalCodec=y.originalCodec,h.refSampleDuration=1152/h.audioSampleRate*h.timescale,l.default.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",h);var E=this._mediaInfo;E.audioCodec=h.codec,E.audioSampleRate=h.audioSampleRate,E.audioChannelCount=h.channelCount,E.audioDataRate=y.bitRate,E.hasVideo?null!=E.videoCodec&&(E.mimeType='video/x-flv; codecs="'+E.videoCodec+","+E.audioCodec+'"'):E.mimeType='video/x-flv; codecs="'+E.audioCodec+'"',E.isComplete()&&this._onMediaInfo(E)}var b=this._parseMP3AudioData(e,t+1,n-1,!1);if(void 0==b)return -;var S=this._timestampBase+i,k={unit:b,length:b.byteLength,dts:S,pts:S};f.samples.push(k),f.length+=b.length}}}},{key:"_parseAACAudioData",value:function(e,t,n){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");var i={},r=new Uint8Array(e,t,n);return i.packetType=r[0],0===r[0]?i.data=this._parseAACAudioSpecificConfig(e,t+1,n-1):i.data=r.subarray(1),i}},{key:"_parseAACAudioSpecificConfig",value:function(e,t,n){var i=new Uint8Array(e,t,n),r=null,s=0,a=0,o=0,u=null;if(s=a=i[0]>>>3,(o=(7&i[0])<<1|i[1]>>>7)<0||o>=this._mpegSamplingRates.length)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");var l=this._mpegSamplingRates[o],d=(120&i[1])>>>3;if(d<0||d>=8)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid channel configuration");5===s&&(u=(7&i[1])<<1|i[2]>>>7,i[2]);var h=self.navigator.userAgent.toLowerCase();return-1!==h.indexOf("firefox")?o>=6?(s=5,r=new Array(4),u=o-3):(s=2,r=new Array(2),u=o):-1!==h.indexOf("android")?(s=2,r=new Array(2),u=o):(s=5,u=o,r=new Array(4),o>=6?u=o-3:1===d&&(s=2,r=new Array(2),u=o)),r[0]=s<<3,r[0]|=(15&o)>>>1,r[1]=(15&o)<<7,r[1]|=(15&d)<<3,5===s&&(r[1]|=(15&u)>>>1,r[2]=(1&u)<<7,r[2]|=8,r[3]=0),{config:r,samplingRate:l,channelCount:d,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+a}}},{key:"_parseMP3AudioData",value:function(e,t,n,i){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid MP3 packet, header missing!");var r=(this._littleEndian,new Uint8Array(e,t,n)),s=null;if(i){if(255!==r[0])return;var a=r[1]>>>3&3,o=(6&r[1])>>1,u=(240&r[2])>>>4,d=(12&r[2])>>>2,h=r[3]>>>6&3,f=3!==h?2:1,c=0,_=0;switch(a){case 0:c=this._mpegAudioV25SampleRateTable[d];break;case 2:c=this._mpegAudioV20SampleRateTable[d];break;case 3:c=this._mpegAudioV10SampleRateTable[d]}switch(o){case 1:34,u<this._mpegAudioL3BitRateTable.length&&(_=this._mpegAudioL3BitRateTable[u]);break;case 2:33,u<this._mpegAudioL2BitRateTable.length&&(_=this._mpegAudioL2BitRateTable[u]);break;case 3:32,u<this._mpegAudioL1BitRateTable.length&&(_=this._mpegAudioL1BitRateTable[u])}s={bitRate:_,samplingRate:c,channelCount:f,codec:"mp3",originalCodec:"mp3"}}else s=r;return s}},{key:"_parseVideoData",value:function(e,t,n,i,r){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid video packet, missing VideoData payload!");if(!0!==this._hasVideoFlagOverrided||!1!==this._hasVideo){var s=new Uint8Array(e,t,n)[0],a=(240&s)>>>4,o=15&s;if(7!==o)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+o);this._parseAVCVideoPacket(e,t+1,n-1,i,r,a)}}},{key:"_parseAVCVideoPacket",value:function(e,t,n,i,r,s){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");var a=this._littleEndian,o=new DataView(e,t,n),u=o.getUint8(0),d=16777215&o.getUint32(0,!a),h=d<<8>>8;if(0===u)this._parseAVCDecoderConfigurationRecord(e,t+4,n-4);else if(1===u)this._parseAVCVideoData(e,t+4,n-4,i,r,s,h);else if(2!==u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid video packet type "+u)}},{key:"_parseAVCDecoderConfigurationRecord",value:function(e,t,n){if(n<7)return void l.default.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");var i=this._videoMetadata,r=this._videoTrack,s=this._littleEndian,a=new DataView(e,t,n);i?void 0!==i.avcc&&l.default.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),i=this._videoMetadata={},i.type="video",i.id=r.id,i.timescale=this._timescale,i.duration=this._duration);var o=a.getUint8(0),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1!==o||0===u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");if(this._naluLengthSize=1+(3&a.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)return void this._onError(m.default.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));var d=31&a.getUint8(5);if(0===d)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");d>1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+d);for(var h=6,f=0;f<d;f++){var _=a.getUint16(h,!s);if(h+=2,0!==_){var p=new Uint8Array(e,t+h,_);h+=_;var v=c.default.parseSPS(p);if(0===f){i.codecWidth=v.codec_size.width,i.codecHeight=v.codec_size.height,i.presentWidth=v.present_size.width,i.presentHeight=v.present_size.height,i.profile=v.profile_string,i.level=v.level_string,i.bitDepth=v.bit_depth,i.chromaFormat=v.chroma_format,i.sarRatio=v.sar_ratio,i.frameRate=v.frame_rate,!1!==v.frame_rate.fixed&&0!==v.frame_rate.fps_num&&0!==v.frame_rate.fps_den||(i.frameRate=this._referenceFrameRate);var g=i.frameRate.fps_den,y=i.frameRate.fps_num;i.refSampleDuration=i.timescale*(g/y);for(var E=p.subarray(1,4),b="avc1.",S=0;S<3;S++){var k=E[S].toString(16);k.length<2&&(k="0"+k),b+=k}i.codec=b;var L=this._mediaInfo;L.width=i.codecWidth,L.height=i.codecHeight,L.fps=i.frameRate.fps,L.profile=i.profile,L.level=i.level,L.refFrames=v.ref_frames,L.chromaFormat=v.chroma_format_string,L.sarNum=i.sarRatio.width,L.sarDen=i.sarRatio.height,L.videoCodec=b,L.hasAudio?null!=L.audioCodec&&(L.mimeType='video/x-flv; codecs="'+L.videoCodec+","+L.audioCodec+'"'):L.mimeType='video/x-flv; codecs="'+L.videoCodec+'"',L.isComplete()&&this._onMediaInfo(L)}}}var w=a.getUint8(h);if(0===w)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");w>1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+w),h++;for(var R=0;R<w;R++){var A=a.getUint16(h,!s);h+=2,0!==A&&(h+=A)}i.avcc=new Uint8Array(n),i.avcc.set(new Uint8Array(e,t,n),0),l.default.v(this.TAG,"Parsed AVCDecoderConfigurationRecord"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._videoInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("video",i)}},{key:"_parseAVCVideoData",value:function(e,t,n,i,r,s,a){for(var o=this._littleEndian,u=new DataView(e,t,n),d=[],h=0,f=0,c=this._naluLengthSize,_=this._timestampBase+i,m=1===s;f<n;){if(f+4>=n){l.default.w(this.TAG,"Malformed Nalu near timestamp "+_+", offset = "+f+", dataSize = "+n);break}var p=u.getUint32(f,!o);if(3===c&&(p>>>=8),p>n-c)return void l.default.w(this.TAG,"Malformed Nalus near timestamp "+_+", NaluSize > DataSize!");var v=31&u.getUint8(f+c);5===v&&(m=!0);var g=new Uint8Array(e,t+f,c+p),y={type:v,data:g};d.push(y),h+=g.byteLength,f+=c+p}if(d.length){var E=this._videoTrack,b={units:d,length:h,isKeyframe:m,dts:_,cts:a,pts:_+a};m&&(b.fileposition=r),E.samples.push(b),E.length+=h}}},{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}},{key:"overridedHasAudio",set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}},{key:"overridedHasVideo",set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}}],[{key:"probe",value:function(e){var t=new Uint8Array(e),n={match:!1};if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return n;var i=(4&t[4])>>>2!=0,r=0!=(1&t[4]),a=s(t,5);return a<9?n:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:i,hasVideoTrack:r}}}]),e}();n.default=y},{"../core/media-info.js":7,"../utils/exception.js":40,"../utils/logger.js":41,"./amf-parser.js":15,"./demux-errors.js":16,"./sps-parser.js":19}],19:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("./exp-golomb.js"),a=function(e){return e&&e.__esModule?e:{default:e}}(s),o=function(){function e(){i(this,e)}return r(e,null,[{key:"_ebsp2rbsp",value:function(e){for(var t=e,n=t.byteLength,i=new Uint8Array(n),r=0,s=0;s<n;s++)s>=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(i[r]=t[s],r++);return new Uint8Array(i.buffer,0,r)}},{key:"parseSPS",value:function(t){var n=e._ebsp2rbsp(t),i=new a.default(n);i.readByte();var r=i.readByte();i.readByte();var s=i.readByte();i.readUEG();var o=e.getProfileString(r),u=e.getLevelString(s),l=1,d=420,h=[0,420,422,444],f=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(l=i.readUEG(),3===l&&i.readBits(1),l<=3&&(d=h[l]),f=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool()))for(var c=3!==l?8:12,_=0;_<c;_++)i.readBool()&&(_<6?e._skipScalingList(i,16):e._skipScalingList(i,64));i.readUEG();var m=i.readUEG();if(0===m)i.readUEG();else if(1===m){i.readBits(1),i.readSEG(),i.readSEG();for(var p=i.readUEG(),v=0;v<p;v++)i.readSEG()}var g=i.readUEG();i.readBits(1);var y=i.readUEG(),E=i.readUEG(),b=i.readBits(1);0===b&&i.readBits(1),i.readBits(1);var S=0,k=0,L=0,w=0;i.readBool()&&(S=i.readUEG(),k=i.readUEG(),L=i.readUEG(),w=i.readUEG());var R=1,A=1,O=0,T=!0,C=0,I=0;if(i.readBool()){if(i.readBool()){var x=i.readByte(),M=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],D=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];x>0&&x<16?(R=M[x-1],A=D[x-1]):255===x&&(R=i.readByte()<<8|i.readByte(),A=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){var B=i.readBits(32),j=i.readBits(32);T=i.readBool(),C=j,I=2*B,O=C/I}}var P=1;1===R&&1===A||(P=R/A);var U=0,N=0;if(0===l)U=1,N=2-b;else{var F=3===l?1:2,G=1===l?2:1;U=F,N=G*(2-b)}var V=16*(y+1),z=16*(E+1)*(2-b);V-=(S+k)*U,z-=(L+w)*N;var H=Math.ceil(V*P);return i.destroy(),i=null,{profile_string:o,level_string:u,bit_depth:f,ref_frames:g,chroma_format:d,chroma_format_string:e.getChromaFormatString(d),frame_rate:{fixed:T,fps:O,fps_den:I,fps_num:C},sar_ratio:{width:R,height:A},codec_size:{width:V,height:z},present_size:{width:H,height:z}}}},{key:"_skipScalingList",value:function(e,t){for(var n=8,i=8,r=0,s=0;s<t;s++)0!==i&&(r=e.readSEG(),i=(n+r+256)%256),n=0===i?n:i}},{key:"getProfileString",value:function(e){switch(e){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}}},{key:"getLevelString",value:function(e){return(e/10).toFixed(1)}},{key:"getChromaFormatString",value:function(e){switch(e){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}}}]),e}();n.default=o},{"./exp-golomb.js":17}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=e;if(null==n||"object"!==(void 0===n?"undefined":o(n)))throw new b.InvalidArgumentException("MediaDataSource must be an javascript object!");if(!n.hasOwnProperty("type"))throw new b.InvalidArgumentException("MediaDataSource must has type field to indicate video file type!");switch(n.type){case"flv":return new c.default(n,t);default:return new m.default(n,t)}}function s(){return h.default.supportMSEH264Playback()}function a(){return h.default.getFeatureList()}Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u=e("./utils/polyfill.js"),l=i(u),d=e("./core/features.js"),h=i(d),f=e("./player/flv-player.js"),c=i(f),_=e("./player/native-player.js"),m=i(_),p=e("./player/player-events.js"),v=i(p),g=e("./player/player-errors.js"),y=e("./utils/logging-control.js"),E=i(y),b=e("./utils/exception.js");l.default.install();var S={};S.createPlayer=r,S.isSupported=s,S.getFeatureList=a,S.Events=v.default,S.ErrorTypes=g.ErrorTypes,S.ErrorDetails=g.ErrorDetails,S.FlvPlayer=c.default,S.NativePlayer=m.default,S.LoggingControl=E.default,Object.defineProperty(S,"version",{enumerable:!0,get:function(){return"1.4.2"}}),n.default=S},{"./core/features.js":6,"./player/flv-player.js":32,"./player/native-player.js":33,"./player/player-errors.js":34,"./player/player-events.js":35,"./utils/exception.js":40,"./utils/logging-control.js":42,"./utils/polyfill.js":43}],21:[function(e,t,n){"use strict";t.exports=e("./flv.js").default},{"./flv.js":20}],22:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=e("../utils/logger.js"),h=(i(d),e("../utils/browser.js")),f=i(h),c=e("./loader.js"),_=e("../utils/exception.js"),m=function(e){function t(e,n){r(this,t);var i=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"fetch-stream-loader"));return i.TAG="FetchStreamLoader",i._seekHandler=e,i._config=n,i._needStash=!0,i._requestAbort=!1,i._contentLength=null,i._receivedLength=0,i}return a(t,e),l(t,null,[{key:"isSupported",value:function(){try{var e=f.default.msedge&&f.default.version.minor>=15048,t=!f.default.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}}]),l(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){var n=this;this._dataSource=e,this._range=t;var i=e.url;this._config.reuseRedirectedURL&&void 0!=e.redirectedURL&&(i=e.redirectedURL);var r=this._seekHandler.getConfig(i,t),s=new self.Headers;if("object"===o(r.headers)){var a=r.headers;for(var u in a)a.hasOwnProperty(u)&&s.append(u,a[u])}var l={method:"GET",headers:s,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};!1===e.cors&&(l.mode="same-origin"),e.withCredentials&&(l.credentials="include"),e.referrerPolicy&&(l.referrerPolicy=e.referrerPolicy),this._status=c.LoaderStatus.kConnecting,self.fetch(r.url,l).then(function(e){if(n._requestAbort)return n._requestAbort=!1,void(n._status=c.LoaderStatus.kIdle);if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&n._onURLRedirect){var t=n._seekHandler.removeURLParameters(e.url);n._onURLRedirect(t)}var i=e.headers.get("Content-Length");return null!=i&&(n._contentLength=parseInt(i),0!==n._contentLength&&n._onContentLengthKnown&&n._onContentLengthKnown(n._contentLength)),n._pump.call(n,e.body.getReader())}if(n._status=c.LoaderStatus.kError,!n._onError)throw new _.RuntimeException("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);n._onError(c.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}).catch(function(e){if(n._status=c.LoaderStatus.kError,!n._onError)throw e;n._onError(c.LoaderErrors.EXCEPTION,{code:-1,msg:e.message})})}},{key:"abort",value:function(){this._requestAbort=!0}},{key:"_pump",value:function(e){var t=this;return e.read().then(function(n){if(n.done)if(null!==t._contentLength&&t._receivedLength<t._contentLength){t._status=c.LoaderStatus.kError;var i=c.LoaderErrors.EARLY_EOF,r={code:-1,msg:"Fetch stream meet Early-EOF"};if(!t._onError)throw new _.RuntimeException(r.msg);t._onError(i,r)}else t._status=c.LoaderStatus.kComplete,t._onComplete&&t._onComplete(t._range.from,t._range.from+t._receivedLength-1);else{if(!0===t._requestAbort)return t._requestAbort=!1,t._status=c.LoaderStatus.kComplete,e.cancel();t._status=c.LoaderStatus.kBuffering;var s=n.value.buffer,a=t._range.from+t._receivedLength;t._receivedLength+=s.byteLength,t._onDataArrival&&t._onDataArrival(s,a,t._receivedLength),t._pump(e)}}).catch(function(e){if(11!==e.code||!f.default.msedge){t._status=c.LoaderStatus.kError;var n=0,i=null;if(19!==e.code&&"network error"!==e.message||!(null===t._contentLength||null!==t._contentLength&&t._receivedLength<t._contentLength)?(n=c.LoaderErrors.EXCEPTION,i={code:e.code,msg:e.message}):(n=c.LoaderErrors.EARLY_EOF,i={code:e.code,msg:"Fetch stream meet Early-EOF"}),!t._onError)throw new _.RuntimeException(i.msg);t._onError(n,i)}})}}]),t}(c.BaseLoader);n.default=m},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],23:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("../utils/logger.js"),o=i(a),u=e("./speed-sampler.js"),l=i(u),d=e("./loader.js"),h=e("./fetch-stream-loader.js"),f=i(h),c=e("./xhr-moz-chunked-loader.js"),_=i(c),m=e("./xhr-msstream-loader.js"),p=(i(m),e("./xhr-range-loader.js")),v=i(p),g=e("./websocket-loader.js"),y=i(g),E=e("./range-seek-handler.js"),b=i(E),S=e("./param-seek-handler.js"),k=i(S),L=e("../utils/exception.js"),w=function(){function e(t,n,i){r(this,e),this.TAG="IOController",this._config=n,this._extraData=i,this._stashInitialSize=393216,void 0!=n.stashInitialSize&&n.stashInitialSize>0&&(this._stashInitialSize=n.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===n.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=t,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(t.url),this._refTotalLength=t.filesize?t.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new l.default,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return s(e,[{key:"destroy",value:function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}},{key:"isWorking",value:function(){return this._loader&&this._loader.isWorking()&&!this._paused}},{key:"isPaused",value:function(){return this._paused}},{key:"_selectSeekHandler",value:function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new b.default(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",n=e.seekParamEnd||"bend";this._seekHandler=new k.default(t,n)}else{if("custom"!==e.seekType)throw new L.InvalidArgumentException("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new L.InvalidArgumentException("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}}},{key:"_selectLoader",value:function(){if(this._isWebSocketURL)this._loaderClass=y.default;else if(f.default.isSupported())this._loaderClass=f.default;else if(_.default.isSupported())this._loaderClass=_.default;else{if(!v.default.isSupported())throw new L.RuntimeException("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=v.default}}},{key:"_createLoader",value:function(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}},{key:"open",value:function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}},{key:"abort",value:function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}},{key:"pause",value:function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}},{key:"resume",value:function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}},{key:"seek",value:function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}},{key:"_internalSeek",value:function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var n={from:e,to:-1};this._currentRange={from:n.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,n),this._onSeeked&&this._onSeeked()}},{key:"updateUrl",value:function(e){if(!e||"string"!=typeof e||0===e.length)throw new L.InvalidArgumentException("Url must be a non-empty string!");this._dataSource.url=e}},{key:"_expandBuffer",value:function(e){for(var t=this._stashSize;t+1048576<e;)t*=2;if((t+=1048576)!==this._bufferSize){var n=new ArrayBuffer(t);if(this._stashUsed>0){var i=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(n,0,t).set(i,0)}this._stashBuffer=n,this._bufferSize=t}}},{key:"_normalizeSpeed",value:function(e){var t=this._speedNormalizeList,n=t.length-1,i=0,r=0,s=n;if(e<t[0])return t[0];for(;r<=s;){if((i=r+Math.floor((s-r)/2))===n||e>=t[i]&&e<t[i+1])return t[i];t[i]<e?r=i+1:s=i-1}}},{key:"_adjustStashSize",value:function(e){var t=0;(t=this._config.isLive?e:e<512?e:e>=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var n=1024*t+1048576;this._bufferSize<n&&this._expandBuffer(n),this._stashSize=1024*t}},{key:"_dispatchChunks",value:function(e,t){return this._currentRange.to=t+e.byteLength-1,this._onDataArrival(e,t)}},{key:"_onURLRedirect",value:function(e){this._redirectedURL=e,this._onRedirect&&this._onRedirect(e)}},{key:"_onContentLengthKnown",value:function(e){e&&this._fullRequestFlag&&(this._totalLength=e,this._fullRequestFlag=!1)}},{key:"_onLoaderChunkArrival",value:function(e,t,n){if(!this._onDataArrival)throw new L.IllegalStateException("IOController: No existing consumer (onDataArrival) callback!");if(!this._paused){this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),this._speedSampler.addBytes(e.byteLength);var i=this._speedSampler.lastSecondKBps;if(0!==i){var r=this._normalizeSpeed(i);this._speedNormalized!==r&&(this._speedNormalized=r,this._adjustStashSize(r))}if(this._enableStash)if(0===this._stashUsed&&0===this._stashByteStart&&(this._stashByteStart=t),this._stashUsed+e.byteLength<=this._stashSize){var s=new Uint8Array(this._stashBuffer,0,this._stashSize);s.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var a=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){var o=this._stashBuffer.slice(0,this._stashUsed),u=this._dispatchChunks(o,this._stashByteStart);if(u<o.byteLength){if(u>0){var l=new Uint8Array(o,u);a.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=u}}else this._stashUsed=0,this._stashByteStart+=u;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var d=this._dispatchChunks(e,t);if(d<e.byteLength){var h=e.byteLength-d;h>this._bufferSize&&(this._expandBuffer(h),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,d),0),this._stashUsed+=h,this._stashByteStart=t+d}}}else if(0===this._stashUsed){var f=this._dispatchChunks(e,t);if(f<e.byteLength){var c=e.byteLength-f;c>this._bufferSize&&this._expandBuffer(c);var _=new Uint8Array(this._stashBuffer,0,this._bufferSize);_.set(new Uint8Array(e,f),0),this._stashUsed+=c,this._stashByteStart=t+f}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);var m=new Uint8Array(this._stashBuffer,0,this._bufferSize);m.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;var p=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(p<this._stashUsed&&p>0){var v=new Uint8Array(this._stashBuffer,p);m.set(v,0)}this._stashUsed-=p,this._stashByteStart+=p}}}},{key:"_flushStashBuffer",value:function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),n=this._dispatchChunks(t,this._stashByteStart),i=t.byteLength-n;if(n<t.byteLength){if(!e){if(n>0){var r=new Uint8Array(this._stashBuffer,0,this._bufferSize),s=new Uint8Array(t,n);r.set(s,0),this._stashUsed=s.byteLength,this._stashByteStart+=n}return 0}o.default.w(this.TAG,i+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,i}return 0}},{key:"_onLoaderComplete",value:function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}},{key:"_onLoaderError",value:function(e,t){switch(o.default.e(this.TAG,"Loader error, code = "+t.code+", msg = "+t.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=d.LoaderErrors.UNRECOVERABLE_EARLY_EOF),e){case d.LoaderErrors.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var n=this._currentRange.to+1;return void(n<this._totalLength&&(o.default.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(n,!1)))}e=d.LoaderErrors.UNRECOVERABLE_EARLY_EOF;break;case d.LoaderErrors.UNRECOVERABLE_EARLY_EOF:case d.LoaderErrors.CONNECTING_TIMEOUT:case d.LoaderErrors.HTTP_STATUS_CODE_INVALID:case d.LoaderErrors.EXCEPTION:}if(!this._onError)throw new L.RuntimeException("IOException: "+t.msg);this._onError(e,t)}},{key:"status",get:function(){return this._loader.status}},{key:"extraData",get:function(){return this._extraData},set:function(e){this._extraData=e}},{key:"onDataArrival",get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e}},{key:"onSeeked",get:function(){return this._onSeeked},set:function(e){this._onSeeked=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onComplete",get:function(){return this._onComplete},set:function(e){this._onComplete=e}},{key:"onRedirect",get:function(){return this._onRedirect},set:function(e){this._onRedirect=e}},{key:"onRecoveredEarlyEof",get:function(){return this._onRecoveredEarlyEof},set:function(e){this._onRecoveredEarlyEof=e}},{key:"currentURL",get:function(){return this._dataSource.url}},{key:"hasRedirect",get:function(){return null!=this._redirectedURL||void 0!=this._dataSource.redirectedURL}},{key:"currentRedirectedURL",get:function(){return this._redirectedURL||this._dataSource.redirectedURL}},{key:"currentSpeed",get:function(){return this._loaderClass===v.default?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}},{key:"loaderType",get:function(){return this._loader.type}}]),e}();n.default=w},{"../utils/exception.js":40,"../utils/logger.js":41,"./fetch-stream-loader.js":22,"./loader.js":24,"./param-seek-handler.js":25,"./range-seek-handler.js":26,"./speed-sampler.js":27,"./websocket-loader.js":28,"./xhr-moz-chunked-loader.js":29,"./xhr-msstream-loader.js":30,"./xhr-range-loader.js":31}],24:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.BaseLoader=n.LoaderErrors=n.LoaderStatus=void 0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("../utils/exception.js"),a=n.LoaderStatus={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4};n.LoaderErrors={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},n.BaseLoader=function(){function e(t){i(this,e),this._type=t||"undefined",this._status=a.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}return r(e,[{key:"destroy",value:function(){this._status=a.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}},{key:"isWorking",value:function(){return this._status===a.kConnecting||this._status===a.kBuffering}},{key:"open",value:function(e,t){throw new s.NotImplementedException("Unimplemented abstract function!")}},{key:"abort",value:function(){throw new s.NotImplementedException("Unimplemented abstract function!")}},{key:"type",get:function(){return this._type}},{key:"status",get:function(){return this._status}},{key:"needStashBuffer",get:function(){return this._needStash}},{key:"onContentLengthKnown",get:function(){return this._onContentLengthKnown},set:function(e){this._onContentLengthKnown=e}},{key:"onURLRedirect",get:function(){return this._onURLRedirect},set:function(e){this._onURLRedirect=e}},{key:"onDataArrival",get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e}},{key:"onError", -get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onComplete",get:function(){return this._onComplete},set:function(e){this._onComplete=e}}]),e}()},{"../utils/exception.js":40}],25:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t,n){i(this,e),this._startName=t,this._endName=n}return r(e,[{key:"getConfig",value:function(e,t){var n=e;if(0!==t.from||-1!==t.to){var i=!0;-1===n.indexOf("?")&&(n+="?",i=!1),i&&(n+="&"),n+=this._startName+"="+t.from.toString(),-1!==t.to&&(n+="&"+this._endName+"="+t.to.toString())}return{url:n,headers:{}}}},{key:"removeURLParameters",value:function(e){var t=e.split("?")[0],n=void 0,i=e.indexOf("?");-1!==i&&(n=e.substring(i+1));var r="";if(void 0!=n&&n.length>0)for(var s=n.split("&"),a=0;a<s.length;a++){var o=s[a].split("="),u=a>0;o[0]!==this._startName&&o[0]!==this._endName&&(u&&(r+="&"),r+=s[a])}return 0===r.length?t:t+"?"+r}}]),e}();n.default=s},{}],26:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t){i(this,e),this._zeroStart=t||!1}return r(e,[{key:"getConfig",value:function(e,t){var n={};if(0!==t.from||-1!==t.to){var i=void 0;i=-1!==t.to?"bytes="+t.from.toString()+"-"+t.to.toString():"bytes="+t.from.toString()+"-",n.Range=i}else this._zeroStart&&(n.Range="bytes=0-");return{url:e,headers:n}}},{key:"removeURLParameters",value:function(e){return e}}]),e}();n.default=s},{}],27:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e),this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}return r(e,[{key:"reset",value:function(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0}},{key:"addBytes",value:function(e){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())}},{key:"currentKBps",get:function(){this.addBytes(0);var e=(this._now()-this._lastCheckpoint)/1e3;return 0==e&&(e=1),this._intervalBytes/e/1024}},{key:"lastSecondKBps",get:function(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}}]),e}();n.default=s},{}],28:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=e("../utils/logger.js"),l=(function(e){e&&e.__esModule}(u),e("./loader.js")),d=e("../utils/exception.js"),h=function(e){function t(){i(this,t);var e=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"websocket-loader"));return e.TAG="WebSocketLoader",e._needStash=!0,e._ws=null,e._requestAbort=!1,e._receivedLength=0,e}return s(t,e),o(t,null,[{key:"isSupported",value:function(){try{return void 0!==self.WebSocket}catch(e){return!1}}}]),o(t,[{key:"destroy",value:function(){this._ws&&this.abort(),a(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e){try{var t=this._ws=new self.WebSocket(e.url);t.binaryType="arraybuffer",t.onopen=this._onWebSocketOpen.bind(this),t.onclose=this._onWebSocketClose.bind(this),t.onmessage=this._onWebSocketMessage.bind(this),t.onerror=this._onWebSocketError.bind(this),this._status=l.LoaderStatus.kConnecting}catch(e){this._status=l.LoaderStatus.kError;var n={code:e.code,msg:e.message};if(!this._onError)throw new d.RuntimeException(n.msg);this._onError(l.LoaderErrors.EXCEPTION,n)}}},{key:"abort",value:function(){var e=this._ws;!e||0!==e.readyState&&1!==e.readyState||(this._requestAbort=!0,e.close()),this._ws=null,this._status=l.LoaderStatus.kComplete}},{key:"_onWebSocketOpen",value:function(e){this._status=l.LoaderStatus.kBuffering}},{key:"_onWebSocketClose",value:function(e){if(!0===this._requestAbort)return void(this._requestAbort=!1);this._status=l.LoaderStatus.kComplete,this._onComplete&&this._onComplete(0,this._receivedLength-1)}},{key:"_onWebSocketMessage",value:function(e){var t=this;if(e.data instanceof ArrayBuffer)this._dispatchArrayBuffer(e.data);else if(e.data instanceof Blob){var n=new FileReader;n.onload=function(){t._dispatchArrayBuffer(n.result)},n.readAsArrayBuffer(e.data)}else{this._status=l.LoaderStatus.kError;var i={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(!this._onError)throw new d.RuntimeException(i.msg);this._onError(l.LoaderErrors.EXCEPTION,i)}}},{key:"_dispatchArrayBuffer",value:function(e){var t=e,n=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,n,this._receivedLength)}},{key:"_onWebSocketError",value:function(e){this._status=l.LoaderStatus.kError;var t={code:e.code,msg:e.message};if(!this._onError)throw new d.RuntimeException(t.msg);this._onError(l.LoaderErrors.EXCEPTION,t)}}]),t}(l.BaseLoader);n.default=h},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],29:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=e("../utils/logger.js"),d=function(e){return e&&e.__esModule?e:{default:e}}(l),h=e("./loader.js"),f=e("../utils/exception.js"),c=function(e){function t(e,n){i(this,t);var s=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"xhr-moz-chunked-loader"));return s.TAG="MozChunkedLoader",s._seekHandler=e,s._config=n,s._needStash=!0,s._xhr=null,s._requestAbort=!1,s._contentLength=null,s._receivedLength=0,s}return s(t,e),u(t,null,[{key:"isSupported",value:function(){try{var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="moz-chunked-arraybuffer","moz-chunked-arraybuffer"===e.responseType}catch(e){return d.default.w("MozChunkedLoader",e.message),!1}}}]),u(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){this._dataSource=e,this._range=t;var n=e.url;this._config.reuseRedirectedURL&&void 0!=e.redirectedURL&&(n=e.redirectedURL);var i=this._seekHandler.getConfig(n,t);this._requestURL=i.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",i.url,!0),r.responseType="moz-chunked-arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onloadend=this._onLoadEnd.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"===a(i.headers)){var s=i.headers;for(var o in s)s.hasOwnProperty(o)&&r.setRequestHeader(o,s[o])}this._status=h.LoaderStatus.kConnecting,r.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=h.LoaderStatus.kComplete}},{key:"_onReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState){if(void 0!=t.responseURL&&t.responseURL!==this._requestURL&&this._onURLRedirect){var n=this._seekHandler.removeURLParameters(t.responseURL);this._onURLRedirect(n)}if(0!==t.status&&(t.status<200||t.status>299)){if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=h.LoaderStatus.kBuffering}}},{key:"_onProgress",value:function(e){if(this._status!==h.LoaderStatus.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,n,this._receivedLength)}}},{key:"_onLoadEnd",value:function(e){if(!0===this._requestAbort)return void(this._requestAbort=!1);this._status!==h.LoaderStatus.kError&&(this._status=h.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},{key:"_onXhrError",value:function(e){this._status=h.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&e.loaded<this._contentLength?(t=h.LoaderErrors.EARLY_EOF,n={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=h.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}}]),t}(h.BaseLoader);n.default=c},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],30:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=e("../utils/logger.js"),d=function(e){return e&&e.__esModule?e:{default:e}}(l),h=e("./loader.js"),f=e("../utils/exception.js"),c=function(e){function t(e,n){i(this,t);var s=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"xhr-msstream-loader"));return s.TAG="MSStreamLoader",s._seekHandler=e,s._config=n,s._needStash=!0,s._xhr=null,s._reader=null,s._totalRange=null,s._currentRange=null,s._currentRequestURL=null,s._currentRedirectedURL=null,s._contentLength=null,s._receivedLength=0,s._bufferLimit=16777216,s._lastTimeBufferSize=0,s._isReconnecting=!1,s}return s(t,e),u(t,null,[{key:"isSupported",value:function(){try{if(void 0===self.MSStream||void 0===self.MSStreamReader)return!1;var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="ms-stream","ms-stream"===e.responseType}catch(e){return d.default.w("MSStreamLoader",e.message),!1}}}]),u(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),this._reader&&(this._reader.onprogress=null,this._reader.onload=null,this._reader.onerror=null,this._reader=null),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr=null),o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){this._internalOpen(e,t,!1)}},{key:"_internalOpen",value:function(e,t,n){this._dataSource=e,n?this._currentRange=t:this._totalRange=t;var i=e.url;this._config.reuseRedirectedURL&&(void 0!=this._currentRedirectedURL?i=this._currentRedirectedURL:void 0!=e.redirectedURL&&(i=e.redirectedURL));var r=this._seekHandler.getConfig(i,t);this._currentRequestURL=r.url;var s=this._reader=new self.MSStreamReader;s.onprogress=this._msrOnProgress.bind(this),s.onload=this._msrOnLoad.bind(this),s.onerror=this._msrOnError.bind(this);var o=this._xhr=new XMLHttpRequest;if(o.open("GET",r.url,!0),o.responseType="ms-stream",o.onreadystatechange=this._xhrOnReadyStateChange.bind(this),o.onerror=this._xhrOnError.bind(this),e.withCredentials&&(o.withCredentials=!0),"object"===a(r.headers)){var u=r.headers;for(var l in u)u.hasOwnProperty(l)&&o.setRequestHeader(l,u[l])}this._isReconnecting?this._isReconnecting=!1:this._status=h.LoaderStatus.kConnecting,o.send()}},{key:"abort",value:function(){this._internalAbort(),this._status=h.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._reader&&(1===this._reader.readyState&&this._reader.abort(),this._reader.onprogress=null,this._reader.onload=null,this._reader.onerror=null,this._reader=null),this._xhr&&(this._xhr.abort(),this._xhr.onreadystatechange=null,this._xhr=null)}},{key:"_xhrOnReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState)if(t.status>=200&&t.status<=299){if(this._status=h.LoaderStatus.kBuffering,void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}var i=t.getResponseHeader("Content-Length");if(null!=i&&null==this._contentLength){var r=parseInt(i);r>0&&(this._contentLength=r,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength))}}else{if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MSStreamLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else if(3===t.readyState&&t.status>=200&&t.status<=299){this._status=h.LoaderStatus.kBuffering;var s=t.response;this._reader.readAsArrayBuffer(s)}}},{key:"_xhrOnError",value:function(e){this._status=h.LoaderStatus.kError;var t=h.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type};if(!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}},{key:"_msrOnProgress",value:function(e){var t=e.target,n=t.result;if(null==n)return void this._doReconnectIfNeeded();var i=n.slice(this._lastTimeBufferSize);this._lastTimeBufferSize=n.byteLength;var r=this._totalRange.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),n.byteLength>=this._bufferLimit&&(d.default.v(this.TAG,"MSStream buffer exceeded max size near "+(r+i.byteLength)+", reconnecting..."),this._doReconnectIfNeeded())}},{key:"_doReconnectIfNeeded",value:function(){if(null==this._contentLength||this._receivedLength<this._contentLength){this._isReconnecting=!0,this._lastTimeBufferSize=0,this._internalAbort();var e={from:this._totalRange.from+this._receivedLength,to:-1};this._internalOpen(this._dataSource,e,!0)}}},{key:"_msrOnLoad",value:function(e){this._status=h.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._totalRange.from,this._totalRange.from+this._receivedLength-1)}},{key:"_msrOnError",value:function(e){this._status=h.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&this._receivedLength<this._contentLength?(t=h.LoaderErrors.EARLY_EOF,n={code:-1,msg:"MSStream meet Early-Eof"}):(t=h.LoaderErrors.EARLY_EOF,n={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}}]),t}(h.BaseLoader);n.default=c},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],31:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=e("../utils/logger.js"),h=i(d),f=e("./speed-sampler.js"),c=i(f),_=e("./loader.js"),m=e("../utils/exception.js"),p=function(e){function t(e,n){r(this,t);var i=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"xhr-range-loader"));return i.TAG="RangeLoader",i._seekHandler=e,i._config=n,i._needStash=!1,i._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],i._currentChunkSizeKB=384,i._currentSpeedNormalized=0,i._zeroSpeedChunkCount=0,i._xhr=null,i._speedSampler=new c.default,i._requestAbort=!1,i._waitForTotalLength=!1,i._totalLengthReceived=!1,i._currentRequestURL=null,i._currentRedirectedURL=null,i._currentRequestRange=null,i._totalLength=null,i._contentLength=null,i._receivedLength=0,i._lastTimeLoaded=0,i}return a(t,e),l(t,null,[{key:"isSupported",value:function(){try{var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer","arraybuffer"===e.responseType}catch(e){return h.default.w("RangeLoader",e.message),!1}}}]),l(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){this._dataSource=e,this._range=t,this._status=_.LoaderStatus.kConnecting;var n=!1;void 0!=this._dataSource.filesize&&0!==this._dataSource.filesize&&(n=!0,this._totalLength=this._dataSource.filesize),this._totalLengthReceived||n?this._openSubRange():(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1}))}},{key:"_openSubRange",value:function(){var e=1024*this._currentChunkSizeKB,t=this._range.from+this._receivedLength,n=t+e;null!=this._contentLength&&n-this._range.from>=this._contentLength&&(n=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:n},this._internalOpen(this._dataSource,this._currentRequestRange)}},{key:"_internalOpen",value:function(e,t){this._lastTimeLoaded=0;var n=e.url;this._config.reuseRedirectedURL&&(void 0!=this._currentRedirectedURL?n=this._currentRedirectedURL:void 0!=e.redirectedURL&&(n=e.redirectedURL));var i=this._seekHandler.getConfig(n,t);this._currentRequestURL=i.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",i.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"===o(i.headers)){var s=i.headers;for(var a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}r.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._internalAbort(),this._status=_.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}},{key:"_onReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState){if(void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=_.LoaderStatus.kBuffering}else{if(this._status=_.LoaderStatus.kError,!this._onError)throw new m.RuntimeException("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(_.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}}},{key:"_onProgress",value:function(e){if(this._status!==_.LoaderStatus.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var n=e.total;this._internalAbort(),null!=n&0!==n&&(this._totalLength=n)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var i=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(i)}}},{key:"_normalizeSpeed",value:function(e){var t=this._chunkSizeKBList,n=t.length-1,i=0,r=0,s=n;if(e<t[0])return t[0];for(;r<=s;){if((i=r+Math.floor((s-r)/2))===n||e>=t[i]&&e<t[i+1])return t[i];t[i]<e?r=i+1:s=i-1}}},{key:"_onLoad",value:function(e){if(this._status!==_.LoaderStatus.kError){if(this._waitForTotalLength)return void(this._waitForTotalLength=!1);this._lastTimeLoaded=0;var t=this._speedSampler.lastSecondKBps;if(0===t&&++this._zeroSpeedChunkCount>=3&&(t=this._speedSampler.currentKBps),0!==t){var n=this._normalizeSpeed(t);this._currentSpeedNormalized!==n&&(this._currentSpeedNormalized=n,this._currentChunkSizeKB=n)}var i=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;var s=!1;null!=this._contentLength&&this._receivedLength<this._contentLength?this._openSubRange():s=!0,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),s&&(this._status=_.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}}},{key:"_onXhrError",value:function(e){this._status=_.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=_.LoaderErrors.EARLY_EOF,n={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=_.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new m.RuntimeException(n.msg);this._onError(t,n)}},{key:"currentSpeed",get:function(){return this._speedSampler.lastSecondKBps}}]),t}(_.BaseLoader);n.default=p},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24,"./speed-sampler.js":27}],32:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=e("events"),u=i(o),l=e("../utils/logger.js"),d=i(l),h=e("../utils/browser.js"),f=i(h),c=e("./player-events.js"),_=i(c),m=e("../core/transmuxer.js"),p=i(m),v=e("../core/transmuxing-events.js"),g=i(v),y=e("../core/mse-controller.js"),E=i(y),b=e("../core/mse-events.js"),S=i(b),k=e("./player-errors.js"),L=e("../config.js"),w=e("../utils/exception.js"),R=function(){function e(t,n){if(r(this,e),this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new u.default,this._config=(0,L.createDefaultConfig)(),"object"===(void 0===n?"undefined":s(n))&&Object.assign(this._config,n),"flv"!==t.type.toLowerCase())throw new w.InvalidArgumentException("FlvPlayer requires an flv MediaDataSource input!");!0===t.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=t,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;var i=f.default.chrome&&(f.default.version.major<50||50===f.default.version.major&&f.default.version.build<2661);this._alwaysSeekKeyframe=!!(i||f.default.msedge||f.default.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}return a(e,[{key:"destroy",value:function(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){var n=this;e===_.default.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then(function(){n._emitter.emit(_.default.MEDIA_INFO,n.mediaInfo)}):e===_.default.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then(function(){n._emitter.emit(_.default.STATISTICS_INFO,n.statisticsInfo)}),this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"attachMediaElement",value:function(e){var t=this;if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),e.addEventListener("seeking",this.e.onvSeeking),e.addEventListener("canplay",this.e.onvCanPlay),e.addEventListener("stalled",this.e.onvStalled),e.addEventListener("progress",this.e.onvProgress),this._msectl=new E.default(this._config),this._msectl.on(S.default.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(S.default.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(S.default.SOURCE_OPEN,function(){t._mseSourceOpened=!0,t._hasPendingLoad&&(t._hasPendingLoad=!1,t.load())}),this._msectl.on(S.default.ERROR,function(e){t._emitter.emit(_.default.ERROR,k.ErrorTypes.MEDIA_ERROR,k.ErrorDetails.MEDIA_MSE_ERROR,e)}),this._msectl.attachMediaElement(e),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}}},{key:"detachMediaElement",value:function(){this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)}},{key:"load",value:function(){var e=this;if(!this._mediaElement)throw new w.IllegalStateException("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new w.IllegalStateException("FlvPlayer.load() has been called, please call unload() first!");if(!this._hasPendingLoad){if(this._config.deferLoadAfterSourceOpen&&!1===this._mseSourceOpened)return void(this._hasPendingLoad=!0);this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new p.default(this._mediaDataSource,this._config),this._transmuxer.on(g.default.INIT_SEGMENT,function(t,n){e._msectl.appendInitSegment(n)}),this._transmuxer.on(g.default.MEDIA_SEGMENT,function(t,n){if(e._msectl.appendMediaSegment(n),e._config.lazyLoad&&!e._config.isLive){var i=e._mediaElement.currentTime;n.info.endDts>=1e3*(i+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(d.default.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}}),this._transmuxer.on(g.default.LOADING_COMPLETE,function(){e._msectl.endOfStream(),e._emitter.emit(_.default.LOADING_COMPLETE)}), -this._transmuxer.on(g.default.RECOVERED_EARLY_EOF,function(){e._emitter.emit(_.default.RECOVERED_EARLY_EOF)}),this._transmuxer.on(g.default.IO_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.NETWORK_ERROR,t,n)}),this._transmuxer.on(g.default.DEMUX_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.MEDIA_ERROR,t,{code:-1,msg:n})}),this._transmuxer.on(g.default.MEDIA_INFO,function(t){e._mediaInfo=t,e._emitter.emit(_.default.MEDIA_INFO,Object.assign({},t))}),this._transmuxer.on(g.default.STATISTICS_INFO,function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(_.default.STATISTICS_INFO,Object.assign({},e._statisticsInfo))}),this._transmuxer.on(g.default.RECOMMEND_SEEKPOINT,function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)}),this._transmuxer.open()}}},{key:"unload",value:function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_fillStatisticsInfo",value:function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}},{key:"_onmseUpdateEnd",value:function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,n=0,i=0;i<e.length;i++){var r=e.start(i),s=e.end(i);if(r<=t&&t<s){r,n=s;break}}n>=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(d.default.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}}},{key:"_onmseBufferFull",value:function(){d.default.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()}},{key:"_suspendTransmuxer",value:function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}},{key:"_checkProgressAndResume",value:function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,n=!1,i=0;i<t.length;i++){var r=t.start(i),s=t.end(i);if(e>=r&&e<s){e>=s-this._config.lazyLoadRecoverDuration&&(n=!0);break}}n&&(window.clearInterval(this._progressChecker),this._progressChecker=null,n&&(d.default.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},{key:"_isTimepointBuffered",value:function(e){for(var t=this._mediaElement.buffered,n=0;n<t.length;n++){var i=t.start(n),r=t.end(n);if(e>=i&&e<r)return!0}return!1}},{key:"_internalSeek",value:function(e){var t=this._isTimepointBuffered(e),n=!1,i=0;if(e<1&&this._mediaElement.buffered.length>0){var r=this._mediaElement.buffered.start(0);(r<1&&e<r||f.default.safari)&&(n=!0,i=f.default.safari?.1:r)}if(n)this._requestSetTime=!0,this._mediaElement.currentTime=i;else if(t){if(this._alwaysSeekKeyframe){var s=this._msectl.getNearestKeyframe(Math.floor(1e3*e));this._requestSetTime=!0,this._mediaElement.currentTime=null!=s?s.dts/1e3:e}else this._requestSetTime=!0,this._mediaElement.currentTime=e;null!=this._progressChecker&&this._checkProgressAndResume()}else null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._msectl.seek(e),this._transmuxer.seek(Math.floor(1e3*e)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e)}},{key:"_checkAndApplyUnbufferedSeekpoint",value:function(){if(this._seekpointRecord)if(this._seekpointRecord.recordTime<=this._now()-100){var e=this._mediaElement.currentTime;this._seekpointRecord=null,this._isTimepointBuffered(e)||(null!=this._progressChecker&&(window.clearTimeout(this._progressChecker),this._progressChecker=null),this._msectl.seek(e),this._transmuxer.seek(Math.floor(1e3*e)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e))}else window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)}},{key:"_checkAndResumeStuckPlayback",value:function(e){var t=this._mediaElement;if(e||!this._receivedCanPlay||t.readyState<2){var n=t.buffered;n.length>0&&t.currentTime<n.start(0)&&(d.default.w(this.TAG,"Playback seems stuck at "+t.currentTime+", seek to "+n.start(0)),this._requestSetTime=!0,this._mediaElement.currentTime=n.start(0),this._mediaElement.removeEventListener("progress",this.e.onvProgress))}else this._mediaElement.removeEventListener("progress",this.e.onvProgress)}},{key:"_onvLoadedMetadata",value:function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null)}},{key:"_onvSeeking",value:function(e){var t=this._mediaElement.currentTime,n=this._mediaElement.buffered;if(this._requestSetTime)return void(this._requestSetTime=!1);if(t<1&&n.length>0){var i=n.start(0);if(i<1&&t<i||f.default.safari)return this._requestSetTime=!0,void(this._mediaElement.currentTime=f.default.safari?.1:i)}if(this._isTimepointBuffered(t)){if(this._alwaysSeekKeyframe){var r=this._msectl.getNearestKeyframe(Math.floor(1e3*t));null!=r&&(this._requestSetTime=!0,this._mediaElement.currentTime=r.dts/1e3)}return void(null!=this._progressChecker&&this._checkProgressAndResume())}this._seekpointRecord={seekPoint:t,recordTime:this._now()},window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)}},{key:"_onvCanPlay",value:function(e){this._receivedCanPlay=!0,this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay)}},{key:"_onvStalled",value:function(e){this._checkAndResumeStuckPlayback(!0)}},{key:"_onvProgress",value:function(e){this._checkAndResumeStuckPlayback()}},{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._internalSeek(e):this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){return Object.assign({},this._mediaInfo)}},{key:"statisticsInfo",get:function(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)}}]),e}();n.default=R},{"../config.js":5,"../core/mse-controller.js":9,"../core/mse-events.js":10,"../core/transmuxer.js":11,"../core/transmuxing-events.js":13,"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./player-errors.js":34,"./player-events.js":35,events:2}],33:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=e("events"),u=i(o),l=e("./player-events.js"),d=i(l),h=e("../config.js"),f=e("../utils/exception.js"),c=function(){function e(t,n){if(r(this,e),this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new u.default,this._config=(0,h.createDefaultConfig)(),"object"===(void 0===n?"undefined":s(n))&&Object.assign(this._config,n),"flv"===t.type.toLowerCase())throw new f.InvalidArgumentException("NativePlayer does't support flv MediaDataSource input!");if(t.hasOwnProperty("segments"))throw new f.InvalidArgumentException("NativePlayer("+t.type+") doesn't support multipart playback!");this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=t,this._mediaElement=null}return a(e,[{key:"destroy",value:function(){this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){var n=this;e===d.default.MEDIA_INFO?null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then(function(){n._emitter.emit(d.default.MEDIA_INFO,n.mediaInfo)}):e===d.default.STATISTICS_INFO&&null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then(function(){n._emitter.emit(d.default.STATISTICS_INFO,n.statisticsInfo)}),this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"attachMediaElement",value:function(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}}},{key:"detachMediaElement",value:function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"load",value:function(){if(!this._mediaElement)throw new f.IllegalStateException("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}},{key:"unload",value:function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_onvLoadedMetadata",value:function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(d.default.MEDIA_INFO,this.mediaInfo)}},{key:"_reportStatisticsInfo",value:function(){this._emitter.emit(d.default.STATISTICS_INFO,this.statisticsInfo)}},{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){var e=this._mediaElement instanceof HTMLAudioElement?"audio/":"video/",t={mimeType:e+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}},{key:"statisticsInfo",get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}}]),e}();n.default=c},{"../config.js":5,"../utils/exception.js":40,"./player-events.js":35,events:2}],34:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ErrorDetails=n.ErrorTypes=void 0;var i=e("../io/loader.js"),r=e("../demux/demux-errors.js"),s=function(e){return e&&e.__esModule?e:{default:e}}(r);n.ErrorTypes={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},n.ErrorDetails={NETWORK_EXCEPTION:i.LoaderErrors.EXCEPTION,NETWORK_STATUS_CODE_INVALID:i.LoaderErrors.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:i.LoaderErrors.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:i.LoaderErrors.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:s.default.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:s.default.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:s.default.CODEC_UNSUPPORTED}},{"../demux/demux-errors.js":16,"../io/loader.js":24}],35:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info"};n.default=i},{}],36:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e)}return r(e,null,[{key:"getSilentFrame",value:function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null}}]),e}();n.default=s},{}],37:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e)}return r(e,null,[{key:"init",value:function(){e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]};for(var t in e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var n=e.constants={};n.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),n.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),n.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),n.STSC=n.STCO=n.STTS,n.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),n.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),n.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),n.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),n.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),n.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}},{key:"box",value:function(e){for(var t=8,n=null,i=Array.prototype.slice.call(arguments,1),r=i.length,s=0;s<r;s++)t+=i[s].byteLength;n=new Uint8Array(t),n[0]=t>>>24&255,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n.set(e,4);for(var a=8,o=0;o<r;o++)n.set(i[o],a),a+=i[o].byteLength;return n}},{key:"generateInitSegment",value:function(t){var n=e.box(e.types.ftyp,e.constants.FTYP),i=e.moov(t),r=new Uint8Array(n.byteLength+i.byteLength);return r.set(n,0),r.set(i,n.byteLength),r}},{key:"moov",value:function(t){var n=e.mvhd(t.timescale,t.duration),i=e.trak(t),r=e.mvex(t);return e.box(e.types.moov,n,i,r)}},{key:"mvhd",value:function(t,n){return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"tkhd",value:function(t){var n=t.id,i=t.duration,r=t.presentWidth,s=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))}},{key:"mdhd",value:function(t){var n=t.timescale,i=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}},{key:"hdlr",value:function(t){var n=null;return n="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,n)}},{key:"minf",value:function(t){var n=null;return n="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,n,e.dinf(),e.stbl(t))}},{key:"dinf",value:function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))}},{key:"stbl",value:function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))}},{key:"stsd",value:function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))}},{key:"mp3",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types[".mp3"],r)}},{key:"mp4a",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types.mp4a,r,e.esds(t))}},{key:"esds",value:function(t){var n=t.config||[],i=n.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(n).concat([6,1,2]));return e.box(e.types.esds,r)}},{key:"avc1",value:function(t){var n=t.avcc,i=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,s,e.box(e.types.avcC,n))}},{key:"mvex",value:function(t){return e.box(e.types.mvex,e.trex(t))}},{key:"trex",value:function(t){var n=t.id,i=new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,i)}},{key:"moof",value:function(t,n){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,n))}},{key:"mfhd",value:function(t){var n=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,n)}},{key:"traf",value:function(t,n){var i=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),a=e.sdtp(t),o=e.trun(t,a.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,s,o,a)}},{key:"sdtp",value:function(t){for(var n=t.samples||[],i=n.length,r=new Uint8Array(4+i),s=0;s<i;s++){var a=n[s].flags;r[s+4]=a.isLeading<<6|a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy}return e.box(e.types.sdtp,r)}},{key:"trun",value:function(t,n){var i=t.samples||[],r=i.length,s=12+16*r,a=new Uint8Array(s);n+=8+s,a.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var o=0;o<r;o++){var u=i[o].duration,l=i[o].size,d=i[o].flags,h=i[o].cts;a.set([u>>>24&255,u>>>16&255,u>>>8&255,255&u,l>>>24&255,l>>>16&255,l>>>8&255,255&l,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.isNonSync,0,0,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*o)}return e.box(e.types.trun,a)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();s.init(),n.default=s},{}],38:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("../utils/logger.js"),o=i(a),u=e("./mp4-generator.js"),l=i(u),d=e("./aac-silent.js"),h=i(d),f=e("../utils/browser.js"),c=i(f),_=e("../core/media-segment-info.js"),m=e("../utils/exception.js"),p=function(){function e(t){r(this,e),this.TAG="MP4Remuxer",this._config=t,this._isLive=!0===t.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new _.MediaSegmentInfoList("audio"),this._videoSegmentInfoList=new _.MediaSegmentInfoList("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!c.default.chrome||!(c.default.version.major<50||50===c.default.version.major&&c.default.version.build<2661)),this._fillSilentAfterSeek=c.default.msedge||c.default.msie,this._mp3UseMpegAudio=!c.default.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}return s(e,[{key:"destroy",value:function(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null}},{key:"bindDataSource",value:function(e){return e.onDataAvailable=this.remux.bind(this),e.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this}},{key:"insertDiscontinuity",value:function(){this._audioNextDts=this._videoNextDts=void 0}},{key:"seek",value:function(e){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()}},{key:"remux",value:function(e,t){if(!this._onMediaSegment)throw new m.IllegalStateException("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(e,t),this._remuxVideo(t),this._remuxAudio(e)}},{key:"_onTrackMetadataReceived",value:function(e,t){var n=null,i="mp4",r=t.codec;if("audio"===e)this._audioMeta=t,"mp3"===t.codec&&this._mp3UseMpegAudio?(i="mpeg",r="",n=new Uint8Array):n=l.default.generateInitSegment(t);else{if("video"!==e)return;this._videoMeta=t,n=l.default.generateInitSegment(t)}if(!this._onInitSegment)throw new m.IllegalStateException("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(e,{type:e,data:n.buffer,codec:r,container:e+"/"+i,mediaDuration:t.duration})}},{key:"_calculateDtsBase",value:function(e,t){this._dtsBaseInited||(e.samples&&e.samples.length&&(this._audioDtsBase=e.samples[0].dts),t.samples&&t.samples.length&&(this._videoDtsBase=t.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)}},{key:"flushStashedSamples",value:function(){var e=this._videoStashedLastSample,t=this._audioStashedLastSample,n={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=e&&(n.samples.push(e),n.length=e.length);var i={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=t&&(i.samples.push(t),i.length=t.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(n,!0),this._remuxAudio(i,!0)}},{key:"_remuxAudio",value:function(e,t){if(null!=this._audioMeta){var n=e,i=n.samples,r=void 0,s=-1,a=-1,u=this._audioMeta.refSampleDuration,d="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,f=this._dtsBaseInited&&void 0===this._audioNextDts,m=!1;if(i&&0!==i.length&&(1!==i.length||t)){var p=0,v=null,g=0;d?(p=0,g=n.length):(p=8,g=8+n.length);var y=null;if(i.length>1&&(y=i.pop(),g-=y.length),null!=this._audioStashedLastSample){var E=this._audioStashedLastSample;this._audioStashedLastSample=null,i.unshift(E),g+=E.length}null!=y&&(this._audioStashedLastSample=y);var b=i[0].dts-this._dtsBase;if(this._audioNextDts)r=b-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())r=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(m=!0);else{var S=this._audioSegmentInfoList.getLastSampleBefore(b);if(null!=S){var k=b-(S.originalDts+S.duration);k<=3&&(k=0);var L=S.dts+S.duration+k;r=b-L}else r=0}if(m){var w=b-r,R=this._videoSegmentInfoList.getLastSegmentBefore(b);if(null!=R&&R.beginDts<w){var A=h.default.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(A){var O=R.beginDts,T=w-R.beginDts;o.default.v(this.TAG,"InsertPrefixSilentAudio: dts: "+O+", duration: "+T),i.unshift({unit:A,dts:O,pts:O}),g+=A.byteLength}}else m=!1}for(var C=[],I=0;I<i.length;I++){var x=i[I],M=x.unit,D=x.dts-this._dtsBase,B=D-r;-1===s&&(s=B);var j=0;if(I!==i.length-1){j=i[I+1].dts-this._dtsBase-r-B}else if(null!=y){var P=y.dts-this._dtsBase-r;j=P-B}else j=C.length>=1?C[C.length-1].duration:Math.floor(u);var U=!1,N=null;if(j>1.5*u&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!c.default.safari){U=!0;var F=Math.abs(j-u),G=Math.ceil(F/u),V=B+u;o.default.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: "+(B+j)+" ms, expected: "+(B+Math.round(u))+" ms, delta: "+Math.round(F)+" ms, generate: "+G+" frames");var z=h.default.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==z&&(o.default.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),z=M),N=[];for(var H=0;H<G;H++){var K=Math.round(V);if(N.length>0){var q=N[N.length-1];q.duration=K-q.dts}var W={dts:K,pts:K,cts:0,unit:z,size:z.byteLength,duration:0,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};N.push(W),g+=M.byteLength,V+=u}var X=N[N.length-1];X.duration=B+j-X.dts,j=Math.round(u)}C.push({dts:B,pts:B,cts:0,unit:x.unit,size:x.unit.byteLength,duration:j,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),U&&C.push.apply(C,N)}d?v=new Uint8Array(g):(v=new Uint8Array(g),v[0]=g>>>24&255,v[1]=g>>>16&255,v[2]=g>>>8&255,v[3]=255&g,v.set(l.default.types.mdat,4));for(var Y=0;Y<C.length;Y++){var Z=C[Y].unit;v.set(Z,p),p+=Z.byteLength}var Q=C[C.length-1];a=Q.dts+Q.duration,this._audioNextDts=a;var J=new _.MediaSegmentInfo;J.beginDts=s,J.endDts=a,J.beginPts=s,J.endPts=a,J.originalBeginDts=C[0].originalDts,J.originalEndDts=Q.originalDts+Q.duration,J.firstSample=new _.SampleInfo(C[0].dts,C[0].pts,C[0].duration,C[0].originalDts,!1),J.lastSample=new _.SampleInfo(Q.dts,Q.pts,Q.duration,Q.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(J),n.samples=C,n.sequenceNumber++;var $=null;$=d?new Uint8Array:l.default.moof(n,s),n.samples=[],n.length=0;var ee={type:"audio",data:this._mergeBoxes($,v).buffer,sampleCount:C.length,info:J};d&&f&&(ee.timestampOffset=s),this._onMediaSegment("audio",ee)}}}},{key:"_remuxVideo",value:function(e,t){if(null!=this._videoMeta){var n=e,i=n.samples,r=void 0,s=-1,a=-1,o=-1,u=-1;if(i&&0!==i.length&&(1!==i.length||t)){var d=8,h=null,f=8+e.length,c=null;if(i.length>1&&(c=i.pop(),f-=c.length),null!=this._videoStashedLastSample){var m=this._videoStashedLastSample;this._videoStashedLastSample=null,i.unshift(m),f+=m.length}null!=c&&(this._videoStashedLastSample=c);var p=i[0].dts-this._dtsBase;if(this._videoNextDts)r=p-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())r=0;else{var v=this._videoSegmentInfoList.getLastSampleBefore(p);if(null!=v){var g=p-(v.originalDts+v.duration);g<=3&&(g=0);var y=v.dts+v.duration+g;r=p-y}else r=0}for(var E=new _.MediaSegmentInfo,b=[],S=0;S<i.length;S++){var k=i[S],L=k.dts-this._dtsBase,w=k.isKeyframe,R=L-r,A=k.cts,O=R+A;-1===s&&(s=R,o=O);var T=0;if(S!==i.length-1){T=i[S+1].dts-this._dtsBase-r-R}else if(null!=c){var C=c.dts-this._dtsBase-r;T=C-R}else T=b.length>=1?b[b.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(w){var I=new _.SampleInfo(R,O,T,k.dts,!0);I.fileposition=k.fileposition,E.appendSyncPoint(I)}b.push({dts:R,pts:O,cts:A,units:k.units,size:k.length,isKeyframe:w,duration:T,originalDts:L,flags:{isLeading:0,dependsOn:w?2:1,isDependedOn:w?1:0,hasRedundancy:0,isNonSync:w?0:1}})}h=new Uint8Array(f),h[0]=f>>>24&255,h[1]=f>>>16&255,h[2]=f>>>8&255,h[3]=255&f,h.set(l.default.types.mdat,4);for(var x=0;x<b.length;x++)for(var M=b[x].units;M.length;){var D=M.shift(),B=D.data;h.set(B,d),d+=B.byteLength}var j=b[b.length-1];if(a=j.dts+j.duration,u=j.pts+j.duration,this._videoNextDts=a,E.beginDts=s,E.endDts=a,E.beginPts=o,E.endPts=u,E.originalBeginDts=b[0].originalDts,E.originalEndDts=j.originalDts+j.duration,E.firstSample=new _.SampleInfo(b[0].dts,b[0].pts,b[0].duration,b[0].originalDts,b[0].isKeyframe),E.lastSample=new _.SampleInfo(j.dts,j.pts,j.duration,j.originalDts,j.isKeyframe),this._isLive||this._videoSegmentInfoList.append(E),n.samples=b,n.sequenceNumber++,this._forceFirstIDR){var P=b[0].flags;P.dependsOn=2,P.isNonSync=0}var U=l.default.moof(n,s);n.samples=[],n.length=0,this._onMediaSegment("video",{type:"video",data:this._mergeBoxes(U,h).buffer,sampleCount:b.length,info:E})}}}},{key:"_mergeBoxes",value:function(e,t){var n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n}},{key:"onInitSegment",get:function(){return this._onInitSegment},set:function(e){ -this._onInitSegment=e}},{key:"onMediaSegment",get:function(){return this._onMediaSegment},set:function(e){this._onMediaSegment=e}}]),e}();n.default=p},{"../core/media-segment-info.js":8,"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./aac-silent.js":36,"./mp4-generator.js":37}],39:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={};!function(){var e=self.navigator.userAgent.toLowerCase(),t=/(edge)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(chrome)[ \/]([\w.]+)/.exec(e)||/(iemobile)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],n=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:n[0]||""},s={};if(r.browser){s[r.browser]=!0;var a=r.majorVersion.split(".");s.version={major:parseInt(r.majorVersion,10),string:r.version},a.length>1&&(s.version.minor=parseInt(a[1],10)),a.length>2&&(s.version.build=parseInt(a[2],10))}r.platform&&(s[r.platform]=!0),(s.chrome||s.opr||s.safari)&&(s.webkit=!0),(s.rv||s.iemobile)&&(s.rv&&delete s.rv,r.browser="msie",s.msie=!0),s.edge&&(delete s.edge,r.browser="msedge",s.msedge=!0),s.opr&&(r.browser="opera",s.opera=!0),s.safari&&s.android&&(r.browser="android",s.android=!0),s.name=r.browser,s.platform=r.platform;for(var o in i)i.hasOwnProperty(o)&&delete i[o];Object.assign(i,s)}(),n.default=i},{}],40:[function(e,t,n){"use strict";function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n.RuntimeException=function(){function e(t){s(this,e),this._message=t}return a(e,[{key:"toString",value:function(){return this.name+": "+this.message}},{key:"name",get:function(){return"RuntimeException"}},{key:"message",get:function(){return this._message}}]),e}();n.IllegalStateException=function(e){function t(e){return s(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return r(t,e),a(t,[{key:"name",get:function(){return"IllegalStateException"}}]),t}(o),n.InvalidArgumentException=function(e){function t(e){return s(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return r(t,e),a(t,[{key:"name",get:function(){return"InvalidArgumentException"}}]),t}(o),n.NotImplementedException=function(e){function t(e){return s(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return r(t,e),a(t,[{key:"name",get:function(){return"NotImplementedException"}}]),t}(o)},{}],41:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("events"),a=function(e){return e&&e.__esModule?e:{default:e}}(s),o=function(){function e(){i(this,e)}return r(e,null,[{key:"e",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","error",i),e.ENABLE_ERROR&&(console.error?console.error(i):console.warn?console.warn(i):console.log(i))}},{key:"i",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","info",i),e.ENABLE_INFO&&(console.info?console.info(i):console.log(i))}},{key:"w",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",i),e.ENABLE_WARN&&(console.warn?console.warn(i):console.log(i))}},{key:"d",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","debug",i),e.ENABLE_DEBUG&&(console.debug?console.debug(i):console.log(i))}},{key:"v",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","verbose",i),e.ENABLE_VERBOSE&&console.log(i)}}]),e}();o.GLOBAL_TAG="flv.js",o.FORCE_GLOBAL_TAG=!1,o.ENABLE_ERROR=!0,o.ENABLE_INFO=!0,o.ENABLE_WARN=!0,o.ENABLE_DEBUG=!0,o.ENABLE_VERBOSE=!0,o.ENABLE_CALLBACK=!1,o.emitter=new a.default,n.default=o},{events:2}],42:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("./logger.js"),l=i(u),d=function(){function e(){r(this,e)}return s(e,null,[{key:"getConfig",value:function(){return{globalTag:l.default.GLOBAL_TAG,forceGlobalTag:l.default.FORCE_GLOBAL_TAG,enableVerbose:l.default.ENABLE_VERBOSE,enableDebug:l.default.ENABLE_DEBUG,enableInfo:l.default.ENABLE_INFO,enableWarn:l.default.ENABLE_WARN,enableError:l.default.ENABLE_ERROR,enableCallback:l.default.ENABLE_CALLBACK}}},{key:"applyConfig",value:function(e){l.default.GLOBAL_TAG=e.globalTag,l.default.FORCE_GLOBAL_TAG=e.forceGlobalTag,l.default.ENABLE_VERBOSE=e.enableVerbose,l.default.ENABLE_DEBUG=e.enableDebug,l.default.ENABLE_INFO=e.enableInfo,l.default.ENABLE_WARN=e.enableWarn,l.default.ENABLE_ERROR=e.enableError,l.default.ENABLE_CALLBACK=e.enableCallback}},{key:"_notifyChange",value:function(){var t=e.emitter;if(t.listenerCount("change")>0){var n=e.getConfig();t.emit("change",n)}}},{key:"registerListener",value:function(t){e.emitter.addListener("change",t)}},{key:"removeListener",value:function(t){e.emitter.removeListener("change",t)}},{key:"addLogListener",value:function(t){l.default.emitter.addListener("log",t),l.default.emitter.listenerCount("log")>0&&(l.default.ENABLE_CALLBACK=!0,e._notifyChange())}},{key:"removeLogListener",value:function(t){l.default.emitter.removeListener("log",t),0===l.default.emitter.listenerCount("log")&&(l.default.ENABLE_CALLBACK=!1,e._notifyChange())}},{key:"forceGlobalTag",get:function(){return l.default.FORCE_GLOBAL_TAG},set:function(t){l.default.FORCE_GLOBAL_TAG=t,e._notifyChange()}},{key:"globalTag",get:function(){return l.default.GLOBAL_TAG},set:function(t){l.default.GLOBAL_TAG=t,e._notifyChange()}},{key:"enableAll",get:function(){return l.default.ENABLE_VERBOSE&&l.default.ENABLE_DEBUG&&l.default.ENABLE_INFO&&l.default.ENABLE_WARN&&l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_VERBOSE=t,l.default.ENABLE_DEBUG=t,l.default.ENABLE_INFO=t,l.default.ENABLE_WARN=t,l.default.ENABLE_ERROR=t,e._notifyChange()}},{key:"enableDebug",get:function(){return l.default.ENABLE_DEBUG},set:function(t){l.default.ENABLE_DEBUG=t,e._notifyChange()}},{key:"enableVerbose",get:function(){return l.default.ENABLE_VERBOSE},set:function(t){l.default.ENABLE_VERBOSE=t,e._notifyChange()}},{key:"enableInfo",get:function(){return l.default.ENABLE_INFO},set:function(t){l.default.ENABLE_INFO=t,e._notifyChange()}},{key:"enableWarn",get:function(){return l.default.ENABLE_WARN},set:function(t){l.default.ENABLE_WARN=t,e._notifyChange()}},{key:"enableError",get:function(){return l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_ERROR=t,e._notifyChange()}}]),e}();d.emitter=new o.default,n.default=d},{"./logger.js":41,events:2}],43:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function t(){i(this,t)}return r(t,null,[{key:"install",value:function(){Object.setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Object.assign=Object.assign||function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n<arguments.length;n++){var i=arguments[n];if(void 0!==i&&null!==i)for(var r in i)i.hasOwnProperty(r)&&(t[r]=i[r])}return t},"function"!=typeof self.Promise&&e("es6-promise").polyfill()}}]),t}();s.install(),n.default=s},{"es6-promise":1}],44:[function(e,t,n){"use strict";function i(e,t,n){var i=e;if(t+n<i.length){for(;n--;)if(128!=(192&i[++t]))return!1;return!0}return!1}function r(e){for(var t=[],n=e,r=0,s=e.length;r<s;)if(n[r]<128)t.push(String.fromCharCode(n[r])),++r;else{if(n[r]<192);else if(n[r]<224){if(i(n,r,1)){var a=(31&n[r])<<6|63&n[r+1];if(a>=128){t.push(String.fromCharCode(65535&a)),r+=2;continue}}}else if(n[r]<240){if(i(n,r,2)){var o=(15&n[r])<<12|(63&n[r+1])<<6|63&n[r+2];if(o>=2048&&55296!=(63488&o)){t.push(String.fromCharCode(65535&o)),r+=3;continue}}}else if(n[r]<248&&i(n,r,3)){var u=(7&n[r])<<18|(63&n[r+1])<<12|(63&n[r+2])<<6|63&n[r+3];if(u>65536&&u<1114112){u-=65536,t.push(String.fromCharCode(u>>>10|55296)),t.push(String.fromCharCode(1023&u|56320)),r+=4;continue}}t.push(String.fromCharCode(65533)),++r}return t.join("")}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r},{}]},{},[21])(21)}); -//# sourceMappingURL=flv.min.js.map diff --git a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/hls.min.js b/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/hls.min.js deleted file mode 100644 index d5dbe238d..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/hls.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Hls=e():t.Hls=e()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var a=r[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/dist/",e(e.s=8)}([function(t,e,r){"use strict";function i(){}function a(t,e){return e="["+t+"] > "+e}function n(t){var e=self.console[t];return e?function(){for(var r=arguments.length,i=Array(r),n=0;n<r;n++)i[n]=arguments[n];i[0]&&(i[0]=a(t,i[0])),e.apply(self.console,i)}:i}function o(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];r.forEach(function(e){u[e]=t[e]?t[e].bind(t):n(e)})}r.d(e,"a",function(){return d}),r.d(e,"b",function(){return h});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l={trace:i,debug:i,log:i,warn:i,info:i,error:i},u=l,d=function(t){if(!0===t||"object"===(void 0===t?"undefined":s(t))){o(t,"debug","log","info","warn","error");try{u.log()}catch(t){u=l}}else u=l},h=u},function(t,e,r){"use strict";e.a={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",BUFFER_RESET:"hlsBufferReset",BUFFER_CODECS:"hlsBufferCodecs",BUFFER_CREATED:"hlsBufferCreated",BUFFER_APPENDING:"hlsBufferAppending",BUFFER_APPENDED:"hlsBufferAppended",BUFFER_EOS:"hlsBufferEos",BUFFER_FLUSHING:"hlsBufferFlushing",BUFFER_FLUSHED:"hlsBufferFlushed",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_SWITCH:"hlsLevelSwitch",LEVEL_SWITCHING:"hlsLevelSwitching",LEVEL_SWITCHED:"hlsLevelSwitched",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsLevelPtsUpdated",AUDIO_TRACKS_UPDATED:"hlsAudioTracksUpdated",AUDIO_TRACK_SWITCH:"hlsAudioTrackSwitch",AUDIO_TRACK_SWITCHING:"hlsAudioTrackSwitching",AUDIO_TRACK_SWITCHED:"hlsAudioTrackSwitched",AUDIO_TRACK_LOADING:"hlsAudioTrackLoading",AUDIO_TRACK_LOADED:"hlsAudioTrackLoaded",SUBTITLE_TRACKS_UPDATED:"hlsSubtitleTracksUpdated",SUBTITLE_TRACK_SWITCH:"hlsSubtitleTrackSwitch",SUBTITLE_TRACK_LOADING:"hlsSubtitleTrackLoading",SUBTITLE_TRACK_LOADED:"hlsSubtitleTrackLoaded",SUBTITLE_FRAG_PROCESSED:"hlsSubtitleFragProcessed",INIT_PTS_FOUND:"hlsInitPtsFound",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_DECRYPTED:"hlsFragDecrypted",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFpsDrop",FPS_DROP_LEVEL_CAPPING:"hlsFpsDropLevelCapping",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded",STREAM_STATE_TRANSITION:"hlsStreamStateTransition"}},function(t,e,r){"use strict";r.d(e,"b",function(){return i}),r.d(e,"a",function(){return a});var i={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",MUX_ERROR:"muxError",OTHER_ERROR:"otherError"},a={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",AUDIO_TRACK_LOAD_ERROR:"audioTrackLoadError",AUDIO_TRACK_LOAD_TIMEOUT:"audioTrackLoadTimeOut",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",REMUX_ALLOC_ERROR:"remuxAllocError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_ADD_CODEC_ERROR:"bufferAddCodecError",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",BUFFER_NUDGE_ON_STALL:"bufferNudgeOnStall",INTERNAL_EXCEPTION:"internalException"}},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}r.d(e,"b",function(){return n});var a=function(){function t(){i(this,t)}return t.isHeader=function(t,e){return e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128},t.isFooter=function(t,e){return e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128},t.getID3Data=function(e,r){for(var i=r,a=0;t.isHeader(e,r);){a+=10;a+=t._readSize(e,r+6),t.isFooter(e,r+10)&&(a+=10),r+=a}if(a>0)return e.subarray(i,i+a)},t._readSize=function(t,e){var r=0;return r=(127&t[e])<<21,r|=(127&t[e+1])<<14,r|=(127&t[e+2])<<7,r|=127&t[e+3]},t.getTimeStamp=function(e){for(var r=t.getID3Frames(e),i=0;i<r.length;i++){var a=r[i];if(t.isTimeStampFrame(a))return t._readTimeStamp(a)}},t.isTimeStampFrame=function(t){return t&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info},t._getFrameData=function(e){var r=String.fromCharCode(e[0],e[1],e[2],e[3]),i=t._readSize(e,4);return{type:r,size:i,data:e.subarray(10,10+i)}},t.getID3Frames=function(e){for(var r=0,i=[];t.isHeader(e,r);){var a=t._readSize(e,r+6);r+=10;for(var n=r+a;r+8<n;){var o=t._getFrameData(e.subarray(r)),s=t._decodeFrame(o);s&&i.push(s),r+=o.size+10}t.isFooter(e,r)&&(r+=10)}return i},t._decodeFrame=function(e){return"PRIV"===e.type?t._decodePrivFrame(e):"T"===e.type[0]?t._decodeTextFrame(e):"W"===e.type[0]?t._decodeURLFrame(e):void 0},t._readTimeStamp=function(t){if(8===t.data.byteLength){var e=new Uint8Array(t.data),r=1&e[3],i=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return i/=45,r&&(i+=47721858.84),Math.round(i)}},t._decodePrivFrame=function(e){if(!(e.size<2)){var r=t._utf8ArrayToStr(e.data,!0),i=new Uint8Array(e.data.subarray(r.length+1));return{key:e.type,info:r,data:i.buffer}}},t._decodeTextFrame=function(e){if(!(e.size<2)){if("TXXX"===e.type){var r=1,i=t._utf8ArrayToStr(e.data.subarray(r));r+=i.length+1;var a=t._utf8ArrayToStr(e.data.subarray(r));return{key:e.type,info:i,data:a}}var n=t._utf8ArrayToStr(e.data.subarray(1));return{key:e.type,data:n}}},t._decodeURLFrame=function(e){if("WXXX"===e.type){if(e.size<2)return;var r=1,i=t._utf8ArrayToStr(e.data.subarray(r));r+=i.length+1;var a=t._utf8ArrayToStr(e.data.subarray(r));return{key:e.type,info:i,data:a}}var n=t._utf8ArrayToStr(e.data);return{key:e.type,data:n}},t._utf8ArrayToStr=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.length,i=void 0,a=void 0,n=void 0,o="",s=0;s<r;){if(0===(i=t[s++])&&e)return o;if(0!==i&&3!==i)switch(i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(i);break;case 12:case 13:a=t[s++],o+=String.fromCharCode((31&i)<<6|63&a);break;case 14:a=t[s++],n=t[s++],o+=String.fromCharCode((15&i)<<12|(63&a)<<6|(63&n)<<0)}}return o},t}(),n=a._utf8ArrayToStr;e.a=a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var s=function(){function t(e,r){i(this,t),this.subtle=e,this.aesIV=r}return t.prototype.decrypt=function(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)},t}(),l=s,u=function(){function t(e,r){a(this,t),this.subtle=e,this.key=r}return t.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},t}(),d=u,h=function(){function t(){n(this,t),this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.initTable()}return t.prototype.uint8ArrayToUint32Array_=function(t){for(var e=new DataView(t),r=new Uint32Array(4),i=0;i<4;i++)r[i]=e.getUint32(4*i);return r},t.prototype.initTable=function(){var t=this.sBox,e=this.invSBox,r=this.subMix,i=r[0],a=r[1],n=r[2],o=r[3],s=this.invSubMix,l=s[0],u=s[1],d=s[2],h=s[3],c=new Uint32Array(256),f=0,p=0,g=0;for(g=0;g<256;g++)c[g]=g<128?g<<1:g<<1^283;for(g=0;g<256;g++){var v=p^p<<1^p<<2^p<<3^p<<4;v=v>>>8^255&v^99,t[f]=v,e[v]=f;var y=c[f],m=c[y],b=c[m],E=257*c[v]^16843008*v;i[f]=E<<24|E>>>8,a[f]=E<<16|E>>>16,n[f]=E<<8|E>>>24,o[f]=E,E=16843009*b^65537*m^257*y^16843008*f,l[v]=E<<24|E>>>8,u[v]=E<<16|E>>>16,d[v]=E<<8|E>>>24,h[v]=E,f?(f=y^c[c[c[b^y]]],p^=c[c[p]]):f=p=1}},t.prototype.expandKey=function(t){for(var e=this.uint8ArrayToUint32Array_(t),r=!0,i=0;i<e.length&&r;)r=e[i]===this.key[i],i++;if(!r){this.key=e;var a=this.keySize=e.length;if(4!==a&&6!==a&&8!==a)throw new Error("Invalid aes key size="+a);var n=this.ksRows=4*(a+6+1),o=void 0,s=void 0,l=this.keySchedule=new Uint32Array(n),u=this.invKeySchedule=new Uint32Array(n),d=this.sBox,h=this.rcon,c=this.invSubMix,f=c[0],p=c[1],g=c[2],v=c[3],y=void 0,m=void 0;for(o=0;o<n;o++)o<a?y=l[o]=e[o]:(m=y,o%a==0?(m=m<<8|m>>>24,m=d[m>>>24]<<24|d[m>>>16&255]<<16|d[m>>>8&255]<<8|d[255&m],m^=h[o/a|0]<<24):a>6&&o%a==4&&(m=d[m>>>24]<<24|d[m>>>16&255]<<16|d[m>>>8&255]<<8|d[255&m]),l[o]=y=(l[o-a]^m)>>>0);for(s=0;s<n;s++)o=n-s,m=3&s?l[o]:l[o-4],u[s]=s<4||o<=4?m:f[d[m>>>24]]^p[d[m>>>16&255]]^g[d[m>>>8&255]]^v[d[255&m]],u[s]=u[s]>>>0}},t.prototype.networkToHostOrderSwap=function(t){return t<<24|(65280&t)<<8|(16711680&t)>>8|t>>>24},t.prototype.decrypt=function(t,e,r){for(var i,a,n=this.keySize+6,o=this.invKeySchedule,s=this.invSBox,l=this.invSubMix,u=l[0],d=l[1],h=l[2],c=l[3],f=this.uint8ArrayToUint32Array_(r),p=f[0],g=f[1],v=f[2],y=f[3],m=new Int32Array(t),b=new Int32Array(m.length),E=void 0,T=void 0,R=void 0,A=void 0,S=void 0,L=void 0,_=void 0,w=void 0,D=void 0,I=void 0,k=void 0,O=void 0,C=this.networkToHostOrderSwap;e<m.length;){for(D=C(m[e]),I=C(m[e+1]),k=C(m[e+2]),O=C(m[e+3]),S=D^o[0],L=O^o[1],_=k^o[2],w=I^o[3],i=4,a=1;a<n;a++)E=u[S>>>24]^d[L>>16&255]^h[_>>8&255]^c[255&w]^o[i],T=u[L>>>24]^d[_>>16&255]^h[w>>8&255]^c[255&S]^o[i+1],R=u[_>>>24]^d[w>>16&255]^h[S>>8&255]^c[255&L]^o[i+2],A=u[w>>>24]^d[S>>16&255]^h[L>>8&255]^c[255&_]^o[i+3],S=E,L=T,_=R,w=A,i+=4;E=s[S>>>24]<<24^s[L>>16&255]<<16^s[_>>8&255]<<8^s[255&w]^o[i],T=s[L>>>24]<<24^s[_>>16&255]<<16^s[w>>8&255]<<8^s[255&S]^o[i+1],R=s[_>>>24]<<24^s[w>>16&255]<<16^s[S>>8&255]<<8^s[255&L]^o[i+2],A=s[w>>>24]<<24^s[S>>16&255]<<16^s[L>>8&255]<<8^s[255&_]^o[i+3],i+=3,b[e]=C(E^p),b[e+1]=C(A^g),b[e+2]=C(R^v),b[e+3]=C(T^y),p=D,g=I,v=k,y=O,e+=4}return b.buffer},t.prototype.destroy=function(){this.key=void 0,this.keySize=void 0,this.ksRows=void 0,this.sBox=void 0,this.invSBox=void 0,this.subMix=void 0,this.invSubMix=void 0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.rcon=void 0},t}(),c=h,f=r(2),p=r(0),g=function(){function t(e,r){o(this,t),this.observer=e,this.config=r,this.logEnabled=!0;try{var i=crypto||self.crypto;this.subtle=i.subtle||i.webkitSubtle}catch(t){}this.disableWebCrypto=!this.subtle}return t.prototype.isSync=function(){return this.disableWebCrypto&&this.config.enableSoftwareAES},t.prototype.decrypt=function(t,e,r,i){var a=this;if(this.disableWebCrypto&&this.config.enableSoftwareAES){this.logEnabled&&(p.b.log("JS AES decrypt"),this.logEnabled=!1);var n=this.decryptor;n||(this.decryptor=n=new c),n.expandKey(e),i(n.decrypt(t,0,r))}else{this.logEnabled&&(p.b.log("WebCrypto AES decrypt"),this.logEnabled=!1);var o=this.subtle;this.key!==e&&(this.key=e,this.fastAesKey=new d(o,e)),this.fastAesKey.expandKey().then(function(n){new l(o,r).decrypt(t,n).catch(function(n){a.onWebCryptoError(n,t,e,r,i)}).then(function(t){i(t)})}).catch(function(n){a.onWebCryptoError(n,t,e,r,i)})}},t.prototype.onWebCryptoError=function(t,e,r,i,a){this.config.enableSoftwareAES?(p.b.log("WebCrypto Error, disable WebCrypto API"),this.disableWebCrypto=!0,this.logEnabled=!0,this.decrypt(e,r,i,a)):(p.b.error("decrypting error : "+t.message),this.observer.trigger(Event.ERROR,{type:f.b.MEDIA_ERROR,details:f.a.FRAG_DECRYPT_ERROR,fatal:!0,reason:t.message}))},t.prototype.destroy=function(){var t=this.decryptor;t&&(t.destroy(),this.decryptor=void 0)},t}();e.a=g},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(t){return"function"==typeof t}function a(t){return"number"==typeof t}function n(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!a(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,a,s,l,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var d=new Error('Uncaught, unspecified "error" event. ('+e+")");throw d.context=e,d}if(r=this._events[t],o(r))return!1;if(i(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(n(r))for(s=Array.prototype.slice.call(arguments,1),u=r.slice(),a=u.length,l=0;l<a;l++)u[l].apply(this,s);return!0},r.prototype.addListener=function(t,e){var a;if(!i(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,i(e.listener)?e.listener:e),this._events[t]?n(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,n(this._events[t])&&!this._events[t].warned&&(a=o(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[t].length>a&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),a||(a=!0,e.apply(this,arguments))}if(!i(e))throw TypeError("listener must be a function");var a=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,a,o,s;if(!i(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],o=r.length,a=-1,r===e||i(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(n(r)){for(s=o;s-- >0;)if(r[s]===e||r[s].listener&&r[s].listener===e){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(a,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],i(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?i(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(i(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){!function(e){var r=/^((?:[^\/;?#]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,i=/^([^\/;?#]*)(.*)$/,a=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,o={buildAbsoluteURL:function(t,e,r){if(r=r||{},t=t.trim(),!(e=e.trim())){if(!r.alwaysNormalize)return t;var a=this.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");return a.path=o.normalizePath(a.path),o.buildURLFromParts(a)}var n=this.parseURL(e);if(!n)throw new Error("Error trying to parse relative URL.");if(n.scheme)return r.alwaysNormalize?(n.path=o.normalizePath(n.path),o.buildURLFromParts(n)):e;var s=this.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");if(!s.netLoc&&s.path&&"/"!==s.path[0]){var l=i.exec(s.path);s.netLoc=l[1],s.path=l[2]}s.netLoc&&!s.path&&(s.path="/");var u={scheme:s.scheme,netLoc:n.netLoc,path:null,params:n.params,query:n.query,fragment:n.fragment};if(!n.netLoc&&(u.netLoc=s.netLoc,"/"!==n.path[0]))if(n.path){var d=s.path,h=d.substring(0,d.lastIndexOf("/")+1)+n.path;u.path=o.normalizePath(h)}else u.path=s.path,n.params||(u.params=s.params,n.query||(u.query=s.query));return null===u.path&&(u.path=r.alwaysNormalize?o.normalizePath(n.path):n.path),o.buildURLFromParts(u)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(n,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};t.exports=o}()},function(t,e,r){"use strict";function i(t,e,r,i){var a,n,o,s,l,u=navigator.userAgent.toLowerCase(),d=i,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return a=1+((192&e[r+2])>>>6),(n=(60&e[r+2])>>>2)>h.length-1?void t.trigger(Event.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+n}):(s=(1&e[r+2])<<2,s|=(192&e[r+3])>>>6,w.b.log("manifest codec:"+i+",ADTS data:type:"+a+",sampleingIndex:"+n+"["+h[n]+"Hz],channelConfig:"+s),/firefox/i.test(u)?n>=6?(a=5,l=new Array(4),o=n-3):(a=2,l=new Array(2),o=n):-1!==u.indexOf("android")?(a=2,l=new Array(2),o=n):(a=5,l=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&n>=6?o=n-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(n>=6&&1===s||/vivaldi/i.test(u))||!i&&1===s)&&(a=2,l=new Array(2)),o=n)),l[0]=a<<3,l[0]|=(14&n)>>1,l[1]|=(1&n)<<7,l[1]|=s<<3,5===a&&(l[1]|=(14&o)>>1,l[2]=(1&o)<<7,l[2]|=8,l[3]=0),{config:l,samplerate:h[n],channelCount:s,codec:"mp4a.40."+a,manifestCodec:d})}function a(t,e){return 255===t[e]&&240==(246&t[e+1])}function n(t,e){return 1&t[e+1]?7:9}function o(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function s(t,e){return!!(e+1<t.length&&a(t,e))}function l(t,e){if(e+1<t.length&&a(t,e)){var r=n(t,e),i=r;e+5<t.length&&(i=o(t,e));var s=e+i;if(s===t.length||s+1<t.length&&a(t,s))return!0}return!1}function u(t,e,r,a,n){if(!t.samplerate){var o=i(e,r,a,n);t.config=o.config,t.samplerate=o.samplerate,t.channelCount=o.channelCount,t.codec=o.codec,t.manifestCodec=o.manifestCodec,w.b.log("parsed codec:"+t.codec+",rate:"+o.samplerate+",nb channel:"+o.channelCount)}}function d(t){return 9216e4/t}function h(t,e,r,i,a){var s,l,u,d=t.length;if(s=n(t,e),l=o(t,e),(l-=s)>0&&e+s+l<=d)return u=r+i*a,{headerLength:s,frameLength:l,stamp:u}}function c(t,e,r,i,a){var n=d(t.samplerate),o=h(e,r,i,a,n);if(o){var s=o.stamp,l=o.headerLength,u=o.frameLength,c={unit:e.subarray(r+l,r+l+u),pts:s,dts:s};return t.samples.push(c),t.len+=u,{sample:c,length:u+l}}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function y(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function b(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function E(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function T(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function R(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var S=r(1),L=r(2),_=r(4),w=r(0),D=r(3),I=function(){function t(e,r,i){f(this,t),this.observer=e,this.config=i,this.remuxer=r}return t.prototype.resetInitSegment=function(t,e,r,i){this._audioTrack={container:"audio/adts",type:"audio",id:0,sequenceNumber:0,isAAC:!0,samples:[],len:0,manifestCodec:e,duration:i,inputTimeScale:9e4}},t.prototype.resetTimeStamp=function(){},t.probe=function(t){if(!t)return!1;for(var e=D.a.getID3Data(t,0)||[],r=e.length,i=t.length;r<i;r++)if(l(t,r))return w.b.log("ADTS sync word found !"),!0;return!1},t.prototype.append=function(t,e,r,i){for(var a=this._audioTrack,n=D.a.getID3Data(t,0)||[],o=D.a.getTimeStamp(n),l=o?90*o:9e4*e,d=0,h=l,f=t.length,p=n.length,g=[{pts:h,dts:h,data:n}];p<f-1;)if(s(t,p)&&p+5<f){u(a,this.observer,t,p,a.manifestCodec);var v=c(a,t,p,l,d);if(!v){w.b.log("Unable to parse AAC frame");break}p+=v.length,h=v.sample.pts,d++}else D.a.isHeader(t,p)?(n=D.a.getID3Data(t,p),g.push({pts:h,dts:h,data:n}),p+=n.length):p++;this.remuxer.remux(a,{samples:[]},{samples:g,inputTimeScale:9e4},{samples:[]},e,r,i)},t.prototype.destroy=function(){},t}(),k=I,O=Math.pow(2,32)-1,C=function(){function t(e,r){p(this,t),this.observer=e,this.remuxer=r}return t.prototype.resetTimeStamp=function(t){this.initPTS=t},t.prototype.resetInitSegment=function(e,r,i,a){if(e&&e.byteLength){var n=this.initData=t.parseInitSegment(e);null==r&&(r="mp4a.40.5"),null==i&&(i="avc1.42e01e");var o={};n.audio&&n.video?o.audiovideo={container:"video/mp4",codec:r+","+i,initSegment:a?e:null}:(n.audio&&(o.audio={container:"audio/mp4",codec:r,initSegment:a?e:null}),n.video&&(o.video={container:"video/mp4",codec:i,initSegment:a?e:null})),this.observer.trigger(S.a.FRAG_PARSING_INIT_SEGMENT,{tracks:o})}else r&&(this.audioCodec=r),i&&(this.videoCodec=i)},t.probe=function(e){return t.findBox({data:e,start:0,end:Math.min(e.length,16384)},["moof"]).length>0},t.bin2str=function(t){return String.fromCharCode.apply(null,t)},t.readUint32=function(t,e){t.data&&(e+=t.start,t=t.data);var r=t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3];return r<0?4294967296+r:r},t.writeUint32=function(t,e,r){t.data&&(e+=t.start,t=t.data),t[e]=r>>24,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r},t.findBox=function(e,r){var i,a,n,o,s,l,u,d=[];if(e.data?(l=e.start,o=e.end,e=e.data):(l=0,o=e.byteLength),!r.length)return null;for(i=l;i<o;)a=t.readUint32(e,i),n=t.bin2str(e.subarray(i+4,i+8)),u=a>1?i+a:o,n===r[0]&&(1===r.length?d.push({data:e,start:i+8,end:u}):(s=t.findBox({data:e,start:i+8,end:u},r.slice(1)),s.length&&(d=d.concat(s)))),i=u;return d},t.parseInitSegment=function(e){var r=[];return t.findBox(e,["moov","trak"]).forEach(function(e){var i=t.findBox(e,["tkhd"])[0];if(i){var a=i.data[i.start],n=0===a?12:20,o=t.readUint32(i,n),s=t.findBox(e,["mdia","mdhd"])[0];if(s){a=s.data[s.start],n=0===a?12:20;var l=t.readUint32(s,n),u=t.findBox(e,["mdia","hdlr"])[0];if(u){var d=t.bin2str(u.data.subarray(u.start+8,u.start+12)),h={soun:"audio",vide:"video"}[d];if(h){var c=t.findBox(e,["mdia","minf","stbl","stsd"]);if(c.length){c=c[0];var f=t.bin2str(c.data.subarray(c.start+12,c.start+16));w.b.log("MP4Demuxer:"+h+":"+f+" found")}r[o]={timescale:l,type:h},r[h]={timescale:l,id:o}}}}}}),r},t.getStartDTS=function(e,r){var i,a,n;return i=t.findBox(r,["moof","traf"]),a=[].concat.apply([],i.map(function(r){return t.findBox(r,["tfhd"]).map(function(i){var a,n;return a=t.readUint32(i,4),n=e[a].timescale||9e4,t.findBox(r,["tfdt"]).map(function(e){var r,i;return r=e.data[e.start],i=t.readUint32(e,4),1===r&&(i*=Math.pow(2,32),i+=t.readUint32(e,8)),i})[0]/n})})),n=Math.min.apply(null,a),isFinite(n)?n:0},t.offsetStartDTS=function(e,r,i){t.findBox(r,["moof","traf"]).map(function(r){return t.findBox(r,["tfhd"]).map(function(a){var n=t.readUint32(a,4),o=e[n].timescale||9e4;t.findBox(r,["tfdt"]).map(function(e){var r=e.data[e.start],a=t.readUint32(e,4);if(0===r)t.writeUint32(e,4,a-i*o);else{a*=Math.pow(2,32),a+=t.readUint32(e,8),a-=i*o,a=Math.max(a,0);var n=Math.floor(a/(O+1)),s=Math.floor(a%(O+1));t.writeUint32(e,4,n),t.writeUint32(e,8,s)}})})})},t.prototype.append=function(e,r,i,a){var n=this.initData;n||(this.resetInitSegment(e,this.audioCodec,this.videoCodec),n=this.initData);var o=void 0,s=this.initPTS;if(void 0===s){var l=t.getStartDTS(n,e);this.initPTS=s=l-r,this.observer.trigger(S.a.INIT_PTS_FOUND,{initPTS:s})}t.offsetStartDTS(n,e,s),o=t.getStartDTS(n,e),this.remuxer.remux(n.audio,n.video,null,null,o,i,a,e)},t.prototype.destroy=function(){},t}(),P=C,x={BitratesMap:[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],SamplingRateMap:[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],SamplesCoefficients:[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],BytesInSlot:[0,1,1,4],appendFrame:function(t,e,r,i,a){if(!(r+24>e.length)){var n=this.parseHeader(e,r);if(n&&r+n.frameLength<=e.length){var o=9e4*n.samplesPerFrame/n.sampleRate,s=i+a*o,l={unit:e.subarray(r,r+n.frameLength),pts:s,dts:s};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(l),t.len+=n.frameLength,{sample:l,length:n.frameLength}}}},parseHeader:function(t,e){var r=t[e+1]>>3&3,i=t[e+1]>>1&3,a=t[e+2]>>4&15,n=t[e+2]>>2&3,o=t[e+2]>>1&1;if(1!==r&&0!==a&&15!==a&&3!==n){var s=3===r?3-i:3===i?3:4,l=1e3*x.BitratesMap[14*s+a-1],u=3===r?0:2===r?1:2,d=x.SamplingRateMap[3*u+n],h=t[e+3]>>6==3?1:2,c=x.SamplesCoefficients[r][i],f=x.BytesInSlot[i],p=8*c*f;return{sampleRate:d,channelCount:h,frameLength:parseInt(c*l/d+o,10)*f,samplesPerFrame:p}}},isHeaderPattern:function(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])},isHeader:function(t,e){return!!(e+1<t.length&&this.isHeaderPattern(t,e))},probe:function(t,e){if(e+1<t.length&&this.isHeaderPattern(t,e)){var r=this.parseHeader(t,e),i=4;r&&r.frameLength&&(i=r.frameLength);var a=e+i;if(a===t.length||a+1<t.length&&this.isHeaderPattern(t,a))return!0}return!1}},F=x,N=function(){function t(e){g(this,t),this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}return t.prototype.loadWord=function(){var t=this.data,e=this.bytesAvailable,r=t.byteLength-e,i=new Uint8Array(4),a=Math.min(4,e);if(0===a)throw new Error("no bytes available");i.set(t.subarray(r,r+a)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*a,this.bytesAvailable-=a},t.prototype.skipBits=function(t){var e;this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(t-=this.bitsAvailable,e=t>>3,t-=e>>3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)},t.prototype.readBits=function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&w.b.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0&&this.bitsAvailable?r<<e|this.readBits(e):r},t.prototype.skipLZ=function(){var t;for(t=0;t<this.bitsAvailable;++t)if(0!=(this.word&2147483648>>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()},t.prototype.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.skipEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.readUEG=function(){var t=this.skipLZ();return this.readBits(t+1)-1},t.prototype.readEG=function(){var t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)},t.prototype.readBoolean=function(){return 1===this.readBits(1)},t.prototype.readUByte=function(){return this.readBits(8)},t.prototype.readUShort=function(){return this.readBits(16)},t.prototype.readUInt=function(){return this.readBits(32)},t.prototype.skipScalingList=function(t){var e,r,i=8,a=8;for(e=0;e<t;e++)0!==a&&(r=this.readEG(),a=(i+r+256)%256),i=0===a?i:a},t.prototype.readSPS=function(){var t,e,r,i,a,n,o,s=0,l=0,u=0,d=0,h=this.readUByte.bind(this),c=this.readBits.bind(this),f=this.readUEG.bind(this),p=this.readBoolean.bind(this),g=this.skipBits.bind(this),v=this.skipEG.bind(this),y=this.skipUEG.bind(this),m=this.skipScalingList.bind(this);if(h(),t=h(),c(5),g(3),h(),y(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var b=f();if(3===b&&g(1),y(),y(),g(1),p())for(n=3!==b?8:12,o=0;o<n;o++)p()&&m(o<6?16:64)}y();var E=f();if(0===E)f();else if(1===E)for(g(1),v(),v(),e=f(),o=0;o<e;o++)v();y(),g(1),r=f(),i=f(),a=c(1),0===a&&g(1),g(1),p()&&(s=f(),l=f(),u=f(),d=f());var T=[1,1];if(p()&&p()){switch(h()){case 1:T=[1,1];break;case 2:T=[12,11];break;case 3:T=[10,11];break;case 4:T=[16,11];break;case 5:T=[40,33];break;case 6:T=[24,11];break;case 7:T=[20,11];break;case 8:T=[32,11];break;case 9:T=[80,33];break;case 10:T=[18,11];break;case 11:T=[15,11];break;case 12:T=[64,33];break;case 13:T=[160,99];break;case 14:T=[4,3];break;case 15:T=[3,2];break;case 16:T=[2,1];break;case 255:T=[h()<<8|h(),h()<<8|h()]}}return{width:Math.ceil(16*(r+1)-2*s-2*l),height:(2-a)*(i+1)*16-(a?2:4)*(u+d),pixelRatio:T}},t.prototype.readSliceType=function(){return this.readUByte(),this.readUEG(),this.readUEG()},t}(),M=N,U=function(){function t(e,r,i,a){v(this,t),this.decryptdata=i,this.discardEPB=a,this.decrypter=new _.a(e,r)}return t.prototype.decryptBuffer=function(t,e){this.decrypter.decrypt(t,this.decryptdata.key.buffer,this.decryptdata.iv.buffer,e)},t.prototype.decryptAacSample=function(t,e,r,i){var a=t[e].unit,n=a.subarray(16,a.length-a.length%16),o=n.buffer.slice(n.byteOffset,n.byteOffset+n.length),s=this;this.decryptBuffer(o,function(n){n=new Uint8Array(n),a.set(n,16),i||s.decryptAacSamples(t,e+1,r)})},t.prototype.decryptAacSamples=function(t,e,r){for(;;e++){if(e>=t.length)return void r();if(!(t[e].unit.length<32)){var i=this.decrypter.isSync();if(this.decryptAacSample(t,e,r,i),!i)return}}},t.prototype.getAvcEncryptedData=function(t){for(var e=16*Math.floor((t.length-48)/160)+16,r=new Int8Array(e),i=0,a=32;a<=t.length-16;a+=160,i+=16)r.set(t.subarray(a,a+16),i);return r},t.prototype.getAvcDecryptedUnit=function(t,e){e=new Uint8Array(e);for(var r=0,i=32;i<=t.length-16;i+=160,r+=16)t.set(e.subarray(r,r+16),i);return t},t.prototype.decryptAvcSample=function(t,e,r,i,a,n){var o=this.discardEPB(a.data),s=this.getAvcEncryptedData(o),l=this;this.decryptBuffer(s.buffer,function(s){a.data=l.getAvcDecryptedUnit(o,s),n||l.decryptAvcSamples(t,e,r+1,i)})},t.prototype.decryptAvcSamples=function(t,e,r,i){for(;;e++,r=0){if(e>=t.length)return void i();for(var a=t[e].units;!(r>=a.length);r++){var n=a[r];if(!(n.length<=48||1!==n.type&&5!==n.type)){var o=this.decrypter.isSync();if(this.decryptAvcSample(t,e,r,i,n,o),!o)return}}}},t}(),B=U,G={video:0,audio:1,id3:2,text:3},j=function(){function t(e,r,i,a){y(this,t),this.observer=e,this.config=i,this.typeSupported=a,this.remuxer=r,this.sampleAes=null}return t.prototype.setDecryptData=function(t){null!=t&&null!=t.key&&"SAMPLE-AES"===t.method?this.sampleAes=new B(this.observer,this.config,t,this.discardEPB):this.sampleAes=null},t.probe=function(e){var r=t._syncOffset(e);return!(r<0)&&(r&&w.b.warn("MPEG2-TS detected but first sync word found @ offset "+r+", junk ahead ?"),!0)},t._syncOffset=function(t){for(var e=Math.min(1e3,t.length-564),r=0;r<e;){if(71===t[r]&&71===t[r+188]&&71===t[r+376])return r;r++}return-1},t.createTrack=function(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:G[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0,dropped:"video"===t?0:void 0,isAAC:"audio"===t||void 0,duration:"audio"===t?e:void 0}},t.prototype.resetInitSegment=function(e,r,i,a){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=t.createTrack("video",a),this._audioTrack=t.createTrack("audio",a),this._id3Track=t.createTrack("id3",a),this._txtTrack=t.createTrack("text",a),this.aacOverFlow=null,this.aacLastPTS=null,this.avcSample=null,this.audioCodec=r,this.videoCodec=i,this._duration=a},t.prototype.resetTimeStamp=function(){},t.prototype.append=function(e,r,i,a){var n,o,s,l,u,d=e.length,h=!1;this.contiguous=i;var c=this.pmtParsed,f=this._avcTrack,p=this._audioTrack,g=this._id3Track,v=f.pid,y=p.pid,m=g.pid,b=this._pmtId,E=f.pesData,T=p.pesData,R=g.pesData,A=this._parsePAT,_=this._parsePMT,D=this._parsePES,I=this._parseAVCPES.bind(this),k=this._parseAACPES.bind(this),O=this._parseMPEGPES.bind(this),C=this._parseID3PES.bind(this),P=t._syncOffset(e);for(d-=(d+P)%188,n=P;n<d;n+=188)if(71===e[n]){if(o=!!(64&e[n+1]),s=((31&e[n+1])<<8)+e[n+2],(48&e[n+3])>>4>1){if((l=n+5+e[n+4])===n+188)continue}else l=n+4;switch(s){case v:o&&(E&&(u=D(E))&&I(u,!1),E={data:[],size:0}),E&&(E.data.push(e.subarray(l,n+188)),E.size+=n+188-l);break;case y:o&&(T&&(u=D(T))&&(p.isAAC?k(u):O(u)),T={data:[],size:0}),T&&(T.data.push(e.subarray(l,n+188)),T.size+=n+188-l);break;case m:o&&(R&&(u=D(R))&&C(u),R={data:[],size:0}),R&&(R.data.push(e.subarray(l,n+188)),R.size+=n+188-l);break;case 0:o&&(l+=e[l]+1),b=this._pmtId=A(e,l);break;case b:o&&(l+=e[l]+1);var x=_(e,l,!0===this.typeSupported.mpeg||!0===this.typeSupported.mp3,null!=this.sampleAes);v=x.avc,v>0&&(f.pid=v),y=x.audio,y>0&&(p.pid=y,p.isAAC=x.isAAC),m=x.id3,m>0&&(g.pid=m),h&&!c&&(w.b.log("reparse from beginning"),h=!1,n=P-188),c=this.pmtParsed=!0;break;case 17:case 8191:break;default:h=!0}}else this.observer.trigger(S.a.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});E&&(u=D(E))?(I(u,!0),f.pesData=null):f.pesData=E,T&&(u=D(T))?(p.isAAC?k(u):O(u),p.pesData=null):(T&&T.size&&w.b.log("last AAC PES packet truncated,might overlap between fragments"),p.pesData=T),R&&(u=D(R))?(C(u),g.pesData=null):g.pesData=R,null==this.sampleAes?this.remuxer.remux(p,f,g,this._txtTrack,r,i,a):this.decryptAndRemux(p,f,g,this._txtTrack,r,i,a)},t.prototype.decryptAndRemux=function(t,e,r,i,a,n,o){if(t.samples&&t.isAAC){var s=this;this.sampleAes.decryptAacSamples(t.samples,0,function(){s.decryptAndRemuxAvc(t,e,r,i,a,n,o)})}else this.decryptAndRemuxAvc(t,e,r,i,a,n,o)},t.prototype.decryptAndRemuxAvc=function(t,e,r,i,a,n,o){if(e.samples){var s=this;this.sampleAes.decryptAvcSamples(e.samples,0,0,function(){s.remuxer.remux(t,e,r,i,a,n,o)})}else this.remuxer.remux(t,e,r,i,a,n,o)},t.prototype.destroy=function(){this._initPTS=this._initDTS=void 0,this._duration=0},t.prototype._parsePAT=function(t,e){return(31&t[e+10])<<8|t[e+11]},t.prototype._parsePMT=function(t,e,r,i){var a,n,o,s,l={audio:-1,avc:-1,id3:-1,isAAC:!0};for(a=(15&t[e+1])<<8|t[e+2],n=e+3+a-4,o=(15&t[e+10])<<8|t[e+11],e+=12+o;e<n;){switch(s=(31&t[e+1])<<8|t[e+2],t[e]){case 207:if(!i){w.b.log("unkown stream type:"+t[e]);break}case 15:-1===l.audio&&(l.audio=s);break;case 21:-1===l.id3&&(l.id3=s);break;case 219:if(!i){w.b.log("unkown stream type:"+t[e]);break}case 27:-1===l.avc&&(l.avc=s);break;case 3:case 4:r?-1===l.audio&&(l.audio=s,l.isAAC=!1):w.b.log("MPEG audio found, not supported in this browser for now");break;case 36:w.b.warn("HEVC stream type found, not supported for now");break;default:w.b.log("unkown stream type:"+t[e])}e+=5+((15&t[e+3])<<8|t[e+4])}return l},t.prototype._parsePES=function(t){var e,r,i,a,n,o,s,l,u=0,d=t.data;if(!t||0===t.size)return null;for(;d[0].length<19&&d.length>1;){var h=new Uint8Array(d[0].length+d[1].length);h.set(d[0]),h.set(d[1],d[0].length),d[0]=h,d.splice(1,1)}if(e=d[0],1===(e[0]<<16)+(e[1]<<8)+e[2]){if((i=(e[4]<<8)+e[5])&&i>t.size-6)return null;r=e[7],192&r&&(o=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,o>4294967295&&(o-=8589934592),64&r?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,s>4294967295&&(s-=8589934592),o-s>54e5&&(w.b.warn(Math.round((o-s)/9e4)+"s delta between PTS and DTS, align them"),o=s)):s=o),a=e[8],l=a+9,t.size-=l,n=new Uint8Array(t.size);for(var c=0,f=d.length;c<f;c++){e=d[c];var p=e.byteLength;if(l){if(l>p){l-=p;continue}e=e.subarray(l),p-=l,l=0}n.set(e,u),u+=p}return i&&(i-=a+3),{data:n,pts:o,dts:s,len:i}}return null},t.prototype.pushAccesUnit=function(t,e){if(t.units.length&&t.frame){var r=e.samples,i=r.length;!this.config.forceKeyFrameOnDiscontinuity||!0===t.key||e.sps&&(i||this.contiguous)?(t.id=i,r.push(t)):e.dropped++}t.debug.length&&w.b.log(t.pts+"/"+t.dts+":"+t.debug)},t.prototype._parseAVCPES=function(t,e){var r,i,a,n=this,o=this._avcTrack,s=this._parseAVCNALu(t.data),l=this.avcSample,u=!1,d=this.pushAccesUnit.bind(this),h=function(t,e,r,i){return{key:t,pts:e,dts:r,units:[],debug:i}};t.data=null,l&&s.length&&!o.audFound&&(d(l,o),l=this.avcSample=h(!1,t.pts,t.dts,"")),s.forEach(function(e){switch(e.type){case 1:i=!0,l||(l=n.avcSample=h(!0,t.pts,t.dts,"")),l.frame=!0;var s=e.data;if(u&&s.length>4){var c=new M(s).readSliceType();2!==c&&4!==c&&7!==c&&9!==c||(l.key=!0)}break;case 5:i=!0,l||(l=n.avcSample=h(!0,t.pts,t.dts,"")),l.key=!0,l.frame=!0;break;case 6:i=!0,r=new M(n.discardEPB(e.data)),r.readUByte();for(var f=0,p=0,g=!1,v=0;!g&&r.bytesAvailable>1;){f=0;do{v=r.readUByte(),f+=v}while(255===v);p=0;do{v=r.readUByte(),p+=v}while(255===v);if(4===f&&0!==r.bytesAvailable){g=!0;if(181===r.readUByte()){if(49===r.readUShort()){if(1195456820===r.readUInt()){if(3===r.readUByte()){var y=r.readUByte(),m=r.readUByte(),b=31&y,E=[y,m];for(a=0;a<b;a++)E.push(r.readUByte()),E.push(r.readUByte()),E.push(r.readUByte());n._insertSampleInOrder(n._txtTrack.samples,{type:3,pts:t.pts,bytes:E})}}}}}else if(p<r.bytesAvailable)for(a=0;a<p;a++)r.readUByte()}break;case 7:if(i=!0,u=!0,!o.sps){r=new M(e.data);var T=r.readSPS();o.width=T.width,o.height=T.height,o.pixelRatio=T.pixelRatio,o.sps=[e.data],o.duration=n._duration;var R=e.data.subarray(1,4),A="avc1.";for(a=0;a<3;a++){var S=R[a].toString(16);S.length<2&&(S="0"+S),A+=S}o.codec=A}break;case 8:i=!0,o.pps||(o.pps=[e.data]);break;case 9:i=!1,o.audFound=!0,l&&d(l,o),l=n.avcSample=h(!1,t.pts,t.dts,"");break;case 12:i=!1;break;default:i=!1,l&&(l.debug+="unknown NAL "+e.type+" ")}if(l&&i){l.units.push(e)}}),e&&l&&(d(l,o),this.avcSample=null)},t.prototype._insertSampleInOrder=function(t,e){var r=t.length;if(r>0){if(e.pts>=t[r-1].pts)t.push(e);else for(var i=r-1;i>=0;i--)if(e.pts<t[i].pts){t.splice(i,0,e);break}}else t.push(e)},t.prototype._getLastNalUnit=function(){var t=this.avcSample,e=void 0;if(!t||0===t.units.length){var r=this._avcTrack,i=r.samples;t=i[i.length-1]}if(t){var a=t.units;e=a[a.length-1]}return e},t.prototype._parseAVCNALu=function(t){var e,r,i,a,n,o=0,s=t.byteLength,l=this._avcTrack,u=l.naluState||0,d=u,h=[],c=-1;for(-1===u&&(c=0,n=31&t[0],u=0,o=1);o<s;)if(e=t[o++],u)if(1!==u)if(e)if(1===e){if(c>=0)i={data:t.subarray(c,o-u-1),type:n},h.push(i);else{var f=this._getLastNalUnit();if(f&&(d&&o<=4-d&&f.state&&(f.data=f.data.subarray(0,f.data.byteLength-d)),(r=o-u-1)>0)){var p=new Uint8Array(f.data.byteLength+r);p.set(f.data,0),p.set(t.subarray(0,r),f.data.byteLength),f.data=p}}o<s?(a=31&t[o],c=o,n=a,u=0):u=-1}else u=0;else u=3;else u=e?0:2;else u=e?0:1;if(c>=0&&u>=0&&(i={data:t.subarray(c,s),type:n,state:u},h.push(i)),0===h.length){var g=this._getLastNalUnit();if(g){var v=new Uint8Array(g.data.byteLength+t.byteLength);v.set(g.data,0),v.set(t,g.data.byteLength),g.data=v}}return l.naluState=u,h},t.prototype.discardEPB=function(t){for(var e,r,i=t.byteLength,a=[],n=1;n<i-2;)0===t[n]&&0===t[n+1]&&3===t[n+2]?(a.push(n+2),n+=2):n++;if(0===a.length)return t;e=i-a.length,r=new Uint8Array(e);var o=0;for(n=0;n<e;o++,n++)o===a[0]&&(o++,a.shift()),r[n]=t[o];return r},t.prototype._parseAACPES=function(t){var e,r,i,a,n,o=this._audioTrack,l=t.data,h=t.pts,f=this.aacOverFlow,p=this.aacLastPTS;if(f){var g=new Uint8Array(f.byteLength+l.byteLength);g.set(f,0),g.set(l,f.byteLength),l=g}for(i=0,n=l.length;i<n-1&&!s(l,i);i++);if(i){var v,y;if(i<n-1?(v="AAC PES did not start with ADTS header,offset:"+i,y=!1):(v="no ADTS header found in AAC PES",y=!0),w.b.warn("parsing error:"+v),this.observer.trigger(S.a.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:y,reason:v}),y)return}if(u(o,this.observer,l,i,this.audioCodec),r=0,e=d(o.samplerate),f&&p){var m=p+e;Math.abs(m-h)>1&&(w.b.log("AAC: align PTS for overlapping frames by "+Math.round((m-h)/90)),h=m)}for(;i<n;)if(s(l,i)&&i+5<n){var b=c(o,l,i,h,r);if(!b)break;i+=b.length,a=b.sample.pts,r++}else i++;f=i<n?l.subarray(i,n):null,this.aacOverFlow=f,this.aacLastPTS=a},t.prototype._parseMPEGPES=function(t){for(var e=t.data,r=e.length,i=0,a=0,n=t.pts;a<r;)if(F.isHeader(e,a)){var o=F.appendFrame(this._audioTrack,e,a,n,i);if(!o)break;a+=o.length,i++}else a++},t.prototype._parseID3PES=function(t){this._id3Track.samples.push(t)},t}(),H=j,K=function(){function t(e,r,i){m(this,t),this.observer=e,this.config=i,this.remuxer=r}return t.prototype.resetInitSegment=function(t,e,r,i){this._audioTrack={container:"audio/mpeg",type:"audio",id:-1,sequenceNumber:0,isAAC:!1,samples:[],len:0,manifestCodec:e,duration:i,inputTimeScale:9e4}},t.prototype.resetTimeStamp=function(){},t.probe=function(t){var e,r,i=D.a.getID3Data(t,0);if(i&&void 0!==D.a.getTimeStamp(i))for(e=i.length,r=Math.min(t.length-1,e+100);e<r;e++)if(F.probe(t,e))return w.b.log("MPEG Audio sync word found !"),!0;return!1},t.prototype.append=function(t,e,r,i){for(var a=D.a.getID3Data(t,0),n=D.a.getTimeStamp(a),o=n?90*n:9e4*e,s=a.length,l=t.length,u=0,d=0,h=this._audioTrack,c=[{pts:o,dts:o,data:a}];s<l;)if(F.isHeader(t,s)){var f=F.appendFrame(h,t,s,o,u);if(!f)break;s+=f.length,d=f.sample.pts,u++}else D.a.isHeader(t,s)?(a=D.a.getID3Data(t,s),c.push({pts:d,dts:d,data:a}),s+=a.length):s++;this.remuxer.remux(h,{samples:[]},{samples:c,inputTimeScale:9e4},{samples:[]},e,r,i)},t.prototype.destroy=function(){},t}(),W=K,V=function(){function t(){b(this,t)}return t.getSilentFrame=function(t,e){switch(t){case"mp4a.40.2":if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null},t}(),Y=V,z=Math.pow(2,32)-1,X=function(){function t(){E(this,t)}return t.init=function(){t.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};var e;for(e in t.types)t.types.hasOwnProperty(e)&&(t.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);var r=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);t.HDLR_TYPES={video:r,audio:i};var a=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),n=new Uint8Array([0,0,0,0,0,0,0,0]);t.STTS=t.STSC=t.STCO=n,t.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),t.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),t.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),t.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var o=new Uint8Array([105,115,111,109]),s=new Uint8Array([97,118,99,49]),l=new Uint8Array([0,0,0,1]);t.FTYP=t.box(t.types.ftyp,o,l,o,s),t.DINF=t.box(t.types.dinf,t.box(t.types.dref,a))},t.box=function(t){for(var e,r=Array.prototype.slice.call(arguments,1),i=8,a=r.length,n=a;a--;)i+=r[a].byteLength;for(e=new Uint8Array(i),e[0]=i>>24&255,e[1]=i>>16&255,e[2]=i>>8&255,e[3]=255&i,e.set(t,4),a=0,i=8;a<n;a++)e.set(r[a],i),i+=r[a].byteLength;return e},t.hdlr=function(e){return t.box(t.types.hdlr,t.HDLR_TYPES[e])},t.mdat=function(e){return t.box(t.types.mdat,e)},t.mdhd=function(e,r){r*=e;var i=Math.floor(r/(z+1)),a=Math.floor(r%(z+1));return t.box(t.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,a>>24,a>>16&255,a>>8&255,255&a,85,196,0,0]))},t.mdia=function(e){return t.box(t.types.mdia,t.mdhd(e.timescale,e.duration),t.hdlr(e.type),t.minf(e))},t.mfhd=function(e){return t.box(t.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))},t.minf=function(e){return"audio"===e.type?t.box(t.types.minf,t.box(t.types.smhd,t.SMHD),t.DINF,t.stbl(e)):t.box(t.types.minf,t.box(t.types.vmhd,t.VMHD),t.DINF,t.stbl(e))},t.moof=function(e,r,i){return t.box(t.types.moof,t.mfhd(e),t.traf(i,r))},t.moov=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trak(e[r]);return t.box.apply(null,[t.types.moov,t.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(t.mvex(e)))},t.mvex=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trex(e[r]);return t.box.apply(null,[t.types.mvex].concat(i))},t.mvhd=function(e,r){r*=e;var i=Math.floor(r/(z+1)),a=Math.floor(r%(z+1)),n=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,a>>24,a>>16&255,a>>8&255,255&a,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return t.box(t.types.mvhd,n)},t.sdtp=function(e){var r,i,a=e.samples||[],n=new Uint8Array(4+a.length);for(i=0;i<a.length;i++)r=a[i].flags,n[i+4]=r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy;return t.box(t.types.sdtp,n)},t.stbl=function(e){return t.box(t.types.stbl,t.stsd(e),t.box(t.types.stts,t.STTS),t.box(t.types.stsc,t.STSC),t.box(t.types.stsz,t.STSZ),t.box(t.types.stco,t.STCO))},t.avc1=function(e){var r,i,a,n=[],o=[];for(r=0;r<e.sps.length;r++)i=e.sps[r],a=i.byteLength,n.push(a>>>8&255),n.push(255&a),n=n.concat(Array.prototype.slice.call(i));for(r=0;r<e.pps.length;r++)i=e.pps[r],a=i.byteLength,o.push(a>>>8&255),o.push(255&a),o=o.concat(Array.prototype.slice.call(i));var s=t.box(t.types.avcC,new Uint8Array([1,n[3],n[4],n[5],255,224|e.sps.length].concat(n).concat([e.pps.length]).concat(o))),l=e.width,u=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return t.box(t.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,t.box(t.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),t.box(t.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))},t.esds=function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))},t.mp4a=function(e){var r=e.samplerate;return t.box(t.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),t.box(t.types.esds,t.esds(e)))},t.mp3=function(e){var r=e.samplerate;return t.box(t.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))},t.stsd=function(e){return"audio"===e.type?e.isAAC||"mp3"!==e.codec?t.box(t.types.stsd,t.STSD,t.mp4a(e)):t.box(t.types.stsd,t.STSD,t.mp3(e)):t.box(t.types.stsd,t.STSD,t.avc1(e))},t.tkhd=function(e){var r=e.id,i=e.duration*e.timescale,a=e.width,n=e.height,o=Math.floor(i/(z+1)),s=Math.floor(i%(z+1));return t.box(t.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,s>>24,s>>16&255,s>>8&255,255&s,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,a>>8&255,255&a,0,0,n>>8&255,255&n,0,0]))},t.traf=function(e,r){var i=t.sdtp(e),a=e.id,n=Math.floor(r/(z+1)),o=Math.floor(r%(z+1));return t.box(t.types.traf,t.box(t.types.tfhd,new Uint8Array([0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a])),t.box(t.types.tfdt,new Uint8Array([1,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,o>>24,o>>16&255,o>>8&255,255&o])),t.trun(e,i.length+16+20+8+16+8+8),i)},t.trak=function(e){return e.duration=e.duration||4294967295,t.box(t.types.trak,t.tkhd(e),t.mdia(e))},t.trex=function(e){var r=e.id;return t.box(t.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},t.trun=function(e,r){var i,a,n,o,s,l,u=e.samples||[],d=u.length,h=12+16*d,c=new Uint8Array(h);for(r+=8+h,c.set([0,0,15,1,d>>>24&255,d>>>16&255,d>>>8&255,255&d,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),i=0;i<d;i++)a=u[i],n=a.duration,o=a.size,s=a.flags,l=a.cts,c.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|s.isNonSync,61440&s.degradPrio,15&s.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return t.box(t.types.trun,c)},t.initSegment=function(e){t.types||t.init();var r,i=t.moov(e);return r=new Uint8Array(t.FTYP.byteLength+i.byteLength),r.set(t.FTYP),r.set(i,t.FTYP.byteLength),r},t}(),q=X,Q=function(){function t(e,r,i,a){T(this,t),this.observer=e,this.config=r,this.typeSupported=i;var n=navigator.userAgent;this.isSafari=a&&a.indexOf("Apple")>-1&&n&&!n.match("CriOS"),this.ISGenerated=!1}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(t){this._initPTS=this._initDTS=t},t.prototype.resetInitSegment=function(){this.ISGenerated=!1},t.prototype.remux=function(t,e,r,i,a,n,o){if(this.ISGenerated||this.generateIS(t,e,a),this.ISGenerated){var s=t.samples.length,l=e.samples.length,u=a,d=a;if(s&&l){var h=(t.samples[0].dts-e.samples[0].dts)/e.inputTimeScale;u+=Math.max(0,h),d+=Math.max(0,-h)}if(s){t.timescale||(w.b.warn("regenerate InitSegment as audio detected"),this.generateIS(t,e,a));var c=this.remuxAudio(t,u,n,o);if(l){var f=void 0;c&&(f=c.endPTS-c.startPTS),e.timescale||(w.b.warn("regenerate InitSegment as video detected"),this.generateIS(t,e,a)),this.remuxVideo(e,d,n,f,o)}}else{var p=void 0;l&&(p=this.remuxVideo(e,d,n,o)),p&&t.codec&&this.remuxEmptyAudio(t,u,n,p)}}r.samples.length&&this.remuxID3(r,a),i.samples.length&&this.remuxText(i,a),this.observer.trigger(S.a.FRAG_PARSED)},t.prototype.generateIS=function(t,e,r){var i,a,n=this.observer,o=t.samples,s=e.samples,l=this.typeSupported,u="audio/mp4",d={},h={tracks:d},c=void 0===this._initPTS;if(c&&(i=a=1/0),t.config&&o.length&&(t.timescale=t.samplerate,w.b.log("audio sampling rate : "+t.samplerate),t.isAAC||(l.mpeg?(u="audio/mpeg",t.codec=""):l.mp3&&(t.codec="mp3")),d.audio={container:u,codec:t.codec,initSegment:!t.isAAC&&l.mpeg?new Uint8Array:q.initSegment([t]),metadata:{channelCount:t.channelCount}},c&&(i=a=o[0].pts-t.inputTimeScale*r)),e.sps&&e.pps&&s.length){var f=e.inputTimeScale;e.timescale=f,d.video={container:"video/mp4",codec:e.codec,initSegment:q.initSegment([e]),metadata:{width:e.width,height:e.height}},c&&(i=Math.min(i,s[0].pts-f*r),a=Math.min(a,s[0].dts-f*r),this.observer.trigger(S.a.INIT_PTS_FOUND,{initPTS:i}))}Object.keys(d).length?(n.trigger(S.a.FRAG_PARSING_INIT_SEGMENT,h),this.ISGenerated=!0,c&&(this._initPTS=i,this._initDTS=a)):n.trigger(S.a.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})},t.prototype.remuxVideo=function(t,e,r,i,a){var n,o,s,l,u,d,h,c=8,f=t.timescale,p=t.samples,g=[],v=p.length,y=this._PTSNormalize,m=this._initDTS,b=this.nextAvcDts,E=this.isSafari;E&&(r|=p.length&&b&&(a&&Math.abs(e-b/f)<.1||Math.abs(p[0].pts-b-m)<f/5)),r||(b=e*f),p.forEach(function(t){t.pts=y(t.pts-m,b),t.dts=y(t.dts-m,b)}),p.sort(function(t,e){var r=t.dts-e.dts,i=t.pts-e.pts;return r||(i||t.id-e.id)});var T=p.reduce(function(t,e){return Math.max(Math.min(t,e.pts-e.dts),-18e3)},0);if(T<0){w.b.warn("PTS < DTS detected in video samples, shifting DTS by "+Math.round(T/90)+" ms to overcome this issue");for(var R=0;R<p.length;R++)p[R].dts+=T}var A=p[0];u=Math.max(A.dts,0),l=Math.max(A.pts,0);var _=Math.round((u-b)/90);r&&_&&(_>1?w.b.log("AVC:"+_+" ms hole between fragments detected,filling it"):_<-1&&w.b.log("AVC:"+-_+" ms overlapping between fragments detected"),u=b,p[0].dts=u,l=Math.max(l-_,b),p[0].pts=l,w.b.log("Video/PTS/DTS adjusted: "+Math.round(l/90)+"/"+Math.round(u/90)+",delta:"+_+" ms")),A=p[p.length-1],h=Math.max(A.dts,0),d=Math.max(A.pts,0,h),E&&(n=Math.round((h-u)/(p.length-1)));for(var D=0,I=0,k=0;k<v;k++){for(var O=p[k],C=O.units,P=C.length,x=0,F=0;F<P;F++)x+=C[F].data.length;I+=x,D+=P,O.length=x,O.dts=E?u+k*n:Math.max(O.dts,u),O.pts=Math.max(O.pts,O.dts)}var N=I+4*D+8;try{o=new Uint8Array(N)}catch(t){return void this.observer.trigger(S.a.ERROR,{type:L.b.MUX_ERROR,details:L.a.REMUX_ALLOC_ERROR,fatal:!1,bytes:N,reason:"fail allocating video mdat "+N})}var M=new DataView(o.buffer);M.setUint32(0,N),o.set(q.types.mdat,4);for(var U=0;U<v;U++){for(var B=p[U],G=B.units,j=0,H=void 0,K=0,W=G.length;K<W;K++){var V=G[K],Y=V.data,z=V.data.byteLength;M.setUint32(c,z),c+=4,o.set(Y,c),c+=z,j+=4+z}if(E)H=Math.max(0,n*Math.round((B.pts-B.dts)/n));else{if(U<v-1)n=p[U+1].dts-B.dts;else{var X=this.config,Q=B.dts-p[U>0?U-1:U].dts;if(X.stretchShortVideoTrack){var J=X.maxBufferHole,$=X.maxSeekHole,Z=Math.floor(Math.min(J,$)*f),tt=(i?l+i*f:this.nextAudioPts)-B.pts;tt>Z?(n=tt-Q,n<0&&(n=Q),w.b.log("It is approximately "+tt/90+" ms to the next segment; using duration "+n/90+" ms for the last video frame.")):n=Q}else n=Q}H=Math.round(B.pts-B.dts)}g.push({size:j,duration:n,cts:H,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:B.key?2:1,isNonSync:B.key?0:1}})}this.nextAvcDts=h+n;var et=t.dropped;if(t.len=0,t.nbNalu=0,t.dropped=0,g.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var rt=g[0].flags;rt.dependsOn=2,rt.isNonSync=0}t.samples=g,s=q.moof(t.sequenceNumber++,u,t),t.samples=[];var it={data1:s,data2:o,startPTS:l/f,endPTS:(d+n)/f,startDTS:u/f,endDTS:this.nextAvcDts/f,type:"video",nb:g.length,dropped:et};return this.observer.trigger(S.a.FRAG_PARSING_DATA,it),it},t.prototype.remuxAudio=function(t,e,r,i){var a,n,o,s,l,u,d,h=t.inputTimeScale,c=t.timescale,f=h/c,p=t.isAAC?1024:1152,g=p*f,v=this._PTSNormalize,y=this._initDTS,m=!t.isAAC&&this.typeSupported.mpeg,b=t.samples,E=[],T=this.nextAudioPts;if(r|=b.length&&T&&(i&&Math.abs(e-T/h)<.1||Math.abs(b[0].pts-T-y)<20*g),b.forEach(function(t){t.pts=t.dts=v(t.pts-y,e*h)}),b=b.filter(function(t){return t.pts>=0}),0!==b.length){if(r||(T=i?e*h:b[0].pts),t.isAAC)for(var R=this.config.maxAudioFramesDrift,A=0,_=T;A<b.length;){var D,I=b[A],k=I.pts;D=k-_;var O=Math.abs(1e3*D/h);if(D<=-R*g)w.b.warn("Dropping 1 audio frame @ "+(_/h).toFixed(3)+"s due to "+Math.round(O)+" ms overlap."),b.splice(A,1),t.len-=I.unit.length;else if(D>=R*g&&O<1e4&&_){var C=Math.round(D/g);w.b.warn("Injecting "+C+" audio frame @ "+(_/h).toFixed(3)+"s due to "+Math.round(1e3*D/h)+" ms gap.");for(var P=0;P<C;P++){var x=Math.max(_,0);o=Y.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),o||(w.b.log("Unable to get silent frame for given audio codec; duplicating last frame instead."),o=I.unit.subarray()),b.splice(A,0,{unit:o,pts:x,dts:x}),t.len+=o.length,_+=g,A++}I.pts=I.dts=_,_+=g,A++}else Math.abs(D),I.pts=I.dts=_,_+=g,A++}for(var F=0,N=b.length;F<N;F++){var M=b[F],U=M.unit,B=M.pts;if(void 0!==d)n.duration=Math.round((B-d)/f);else{var G=Math.round(1e3*(B-T)/h),j=0;if(r&&t.isAAC&&G){if(G>0&&G<1e4)j=Math.round((B-T)/g),w.b.log(G+" ms hole between AAC samples detected,filling it"),j>0&&(o=Y.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),o||(o=U.subarray()),t.len+=j*o.length);else if(G<-12){w.b.log("drop overlapping AAC sample, expected/parsed/delta:"+(T/h).toFixed(3)+"s/"+(B/h).toFixed(3)+"s/"+-G+"ms"),t.len-=U.byteLength;continue}B=T}if(u=B,!(t.len>0))return;var H=m?t.len:t.len+8;a=m?0:8;try{s=new Uint8Array(H)}catch(t){return void this.observer.trigger(S.a.ERROR,{type:L.b.MUX_ERROR,details:L.a.REMUX_ALLOC_ERROR,fatal:!1,bytes:H,reason:"fail allocating audio mdat "+H})}if(!m){new DataView(s.buffer).setUint32(0,H),s.set(q.types.mdat,4)}for(var K=0;K<j;K++)o=Y.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),o||(w.b.log("Unable to get silent frame for given audio codec; duplicating this frame instead."),o=U.subarray()),s.set(o,a),a+=o.byteLength,n={size:o.byteLength,cts:0,duration:1024,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},E.push(n)}s.set(U,a);var W=U.byteLength;a+=W,n={size:W,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},E.push(n),d=B}var V=0,z=E.length;if(z>=2&&(V=E[z-2].duration,n.duration=V),z){this.nextAudioPts=T=d+f*V,t.len=0,t.samples=E,l=m?new Uint8Array:q.moof(t.sequenceNumber++,u/f,t),t.samples=[];var X=u/h,Q=T/h,J={data1:l,data2:s,startPTS:X,endPTS:Q,startDTS:X,endDTS:Q,type:"audio",nb:z};return this.observer.trigger(S.a.FRAG_PARSING_DATA,J),J}return null}},t.prototype.remuxEmptyAudio=function(t,e,r,i){var a=t.inputTimeScale,n=t.samplerate?t.samplerate:a,o=a/n,s=this.nextAudioPts,l=(void 0!==s?s:i.startDTS*a)+this._initDTS,u=i.endDTS*a+this._initDTS,d=1024*o,h=Math.ceil((u-l)/d),c=Y.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(w.b.warn("remux empty Audio"),!c)return void w.b.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!");for(var f=[],p=0;p<h;p++){var g=l+p*d;f.push({unit:c,pts:g,dts:g}),t.len+=c.length}t.samples=f,this.remuxAudio(t,e,r)},t.prototype.remuxID3=function(t,e){var r,i=t.samples.length,a=t.inputTimeScale,n=this._initPTS,o=this._initDTS;if(i){for(var s=0;s<i;s++)r=t.samples[s],r.pts=(r.pts-n)/a,r.dts=(r.dts-o)/a;this.observer.trigger(S.a.FRAG_PARSING_METADATA,{samples:t.samples})}t.samples=[],e=e},t.prototype.remuxText=function(t,e){t.samples.sort(function(t,e){return t.pts-e.pts});var r,i=t.samples.length,a=t.inputTimeScale,n=this._initPTS;if(i){for(var o=0;o<i;o++)r=t.samples[o],r.pts=(r.pts-n)/a;this.observer.trigger(S.a.FRAG_PARSING_USERDATA,{samples:t.samples})}t.samples=[],e=e},t.prototype._PTSNormalize=function(t,e){var r;if(void 0===e)return t;for(r=e<t?-8589934592:8589934592;Math.abs(t-e)>4294967296;)t+=r;return t},t}(),J=Q,$=function(){function t(e){R(this,t),this.observer=e}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(){},t.prototype.resetInitSegment=function(){},t.prototype.remux=function(t,e,r,i,a,n,o,s){var l=this.observer,u="";t&&(u+="audio"),e&&(u+="video"),l.trigger(S.a.FRAG_PARSING_DATA,{data1:s,startPTS:a,startDTS:a,type:u,nb:1,dropped:0}),l.trigger(S.a.FRAG_PARSED)},t}(),Z=$,tt=function(){function t(e,r,i,a){A(this,t),this.observer=e,this.typeSupported=r,this.config=i,this.vendor=a}return t.prototype.destroy=function(){var t=this.demuxer;t&&t.destroy()},t.prototype.push=function(t,e,r,i,a,n,o,s,l,u,d,h){if(t.byteLength>0&&null!=e&&null!=e.key&&"AES-128"===e.method){var c=this.decrypter;null==c&&(c=this.decrypter=new _.a(this.observer,this.config));var f,p=this;try{f=performance.now()}catch(t){f=Date.now()}c.decrypt(t,e.key.buffer,e.iv.buffer,function(t){var c;try{c=performance.now()}catch(t){c=Date.now()}p.observer.trigger(S.a.FRAG_DECRYPTED,{stats:{tstart:f,tdecrypt:c}}),p.pushDecrypted(new Uint8Array(t),e,new Uint8Array(r),i,a,n,o,s,l,u,d,h)})}else this.pushDecrypted(new Uint8Array(t),e,new Uint8Array(r),i,a,n,o,s,l,u,d,h)},t.prototype.pushDecrypted=function(t,e,r,i,a,n,o,s,l,u,d,h){var c=this.demuxer;if(!c||o&&!this.probe(t)){for(var f=this.observer,p=this.typeSupported,g=this.config,v=[{demux:H,remux:J},{demux:P,remux:Z},{demux:k,remux:J},{demux:W,remux:J}],y=0,m=v.length;y<m;y++){var b=v[y],E=b.demux.probe;if(E(t)){var T=this.remuxer=new b.remux(f,g,p,this.vendor);c=new b.demux(f,T,g,p),this.probe=E;break}}if(!c)return void f.trigger(S.a.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"});this.demuxer=c}var R=this.remuxer;(o||s)&&(c.resetInitSegment(r,i,a,u),R.resetInitSegment()),o&&(c.resetTimeStamp(h),R.resetTimeStamp(h)),"function"==typeof c.setDecryptData&&c.setDecryptData(e),c.append(t,n,l,d)},t}();e.a=tt},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){var r=jt[e];return!!r&&!0===r[t.slice(0,4)]}function o(t,e){return MediaSource.isTypeSupported((e||"video")+'/mp4;codecs="'+t+'"')}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){if(!t)return null;for(var r=null,i=0;i<t.length;i++){var a=t[i];a.id===e&&(r=a)}return r}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(){if("undefined"!=typeof window)return window.MediaSource||window.WebKitMediaSource}function m(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function b(t,e,r){var i=t[e],a=t[r],n=a.startPTS;isNaN(n)?a.start=r>e?i.start+i.duration:Math.max(i.start-a.duration,0):r>e?(i.duration=n-i.start,i.duration<0&&Pt.b.warn("negative duration computed for frag "+i.sn+",level "+i.level+", there should be some duration drift between playlist and fragment!")):(a.duration=i.start-n,a.duration<0&&Pt.b.warn("negative duration computed for frag "+a.sn+",level "+a.level+", there should be some duration drift between playlist and fragment!"))}function E(t,e,r,i,a,n){var o=r;if(!isNaN(e.startPTS)){var s=Math.abs(e.startPTS-r);isNaN(e.deltaPTS)?e.deltaPTS=s:e.deltaPTS=Math.max(s,e.deltaPTS),o=Math.max(r,e.startPTS),r=Math.min(r,e.startPTS),i=Math.max(i,e.endPTS),a=Math.min(a,e.startDTS),n=Math.max(n,e.endDTS)}var l=r-e.start;e.start=e.startPTS=r,e.maxStartPTS=o,e.endPTS=i,e.startDTS=a,e.endDTS=n,e.duration=i-r;var u=e.sn;if(!t||u<t.startSN||u>t.endSN)return 0;var d,h,c;for(d=u-t.startSN,h=t.fragments,h[d]=e,c=d;c>0;c--)b(h,c,c-1);for(c=d;c<h.length-1;c++)b(h,c,c+1);return t.PTSKnown=!0,l}function T(t,e){var r,i=Math.max(t.startSN,e.startSN)-e.startSN,a=Math.min(t.endSN,e.endSN)-e.startSN,n=e.startSN-t.startSN,o=t.fragments,s=e.fragments,l=0;if(a<i)return void(e.PTSKnown=!1);for(var u=i;u<=a;u++){var d=o[n+u],h=s[u];h&&d&&(l=d.cc-h.cc,isNaN(d.startPTS)||(h.start=h.startPTS=d.startPTS,h.endPTS=d.endPTS,h.duration=d.duration,h.backtracked=d.backtracked,h.dropped=d.dropped,r=h))}if(l)for(Pt.b.log("discontinuity sliding from playlist, take drift into account"),u=0;u<s.length;u++)s[u].cc+=l;if(r)E(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS);else if(n>=0&&n<o.length){var c=o[n].start;for(u=0;u<s.length;u++)s[u].start+=c}e.PTSKnown=t.PTSKnown}function R(t,e){for(var r=null,i=0;i<t.length;i+=1){var a=t[i];if(a&&a.cc===e){r=a;break}}return r}function A(t,e){return re.search(t,function(t){return t.cc<e?1:t.cc>e?-1:0})}function S(t,e,r){var i=!1;return e&&e.details&&r&&(r.endCC>r.startCC||t&&t.cc<r.startCC)&&(i=!0),i}function L(t,e){var r=t.fragments,i=e.fragments;if(!i.length||!r.length)return void Pt.b.log("No fragments to align");var a=R(r,i[0].cc);return!a||a&&!a.startPTS?void Pt.b.log("No frag in previous level to align on"):a}function _(t,e){e.fragments.forEach(function(e){if(e){var r=e.start+t;e.start=e.startPTS=r,e.endPTS=r+e.duration}}),e.PTSKnown=!0}function w(t,e,r){if(S(t,e,r)){var i=L(e.details,r);i&&(Pt.b.log("Adjusting PTS using last level due to CC increase within current level"),_(i.start,r))}if(!1===r.PTSKnown&&e&&e.details){var a=e.details.programDateTime,n=r.programDateTime,o=(n-a)/1e3+e.details.fragments[0].start;isNaN(o)||(Pt.b.log("adjusting PTS using programDateTime delta, sliding:"+o.toFixed(3)),_(o,r))}}function D(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function I(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function k(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function O(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function C(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function P(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function x(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function F(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function N(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function M(){var t=y(),e=window.SourceBuffer||window.WebKitSourceBuffer,r=t&&"function"==typeof t.isTypeSupported&&t.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove;return!!r&&!!i}function U(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function B(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function G(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function j(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function H(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function K(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function W(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function V(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function Y(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function z(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function X(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function q(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Q(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function J(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function $(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Z(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function tt(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function et(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function rt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function it(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function at(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function nt(){this.window=window,this.state="INITIAL",this.buffer="",this.decoder=new Qe,this.regionList=[]}function ot(t){function e(t,e,r,i){return 3600*(0|t)+60*(0|e)+(0|r)+(0|i)/1e3}var r=t.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return r?r[3]?e(r[1],r[2],r[3].replace(":",""),r[4]):r[1]>59?e(r[1],r[2],0,r[4]):e(0,r[1],r[2],r[4]):null}function st(){this.values=Object.create(null)}function lt(t,e,r,i){var a=i?t.split(i):[t];for(var n in a)if("string"==typeof a[n]){var o=a[n].split(r);if(2===o.length){var s=o[0],l=o[1];e(s,l)}}}function ut(t,e,r){function i(){var e=ot(t);if(null===e)throw new Error("Malformed timestamp: "+n);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function a(){t=t.replace(/^\s+/,"")}var n=t;if(a(),e.startTime=i(),a(),"--\x3e"!==t.substr(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+n);t=t.substr(3),a(),e.endTime=i(),a(),function(t,e){var i=new st;lt(t,function(t,e){switch(t){case"region":for(var a=r.length-1;a>=0;a--)if(r[a].id===e){i.set(t,r[a].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":var n=e.split(","),o=n[0];i.integer(t,o),i.percent(t,o)&&i.set("snapToLines",!1),i.alt(t,o,["auto"]),2===n.length&&i.alt("lineAlign",n[1],["start",$e,"end"]);break;case"position":n=e.split(","),i.percent(t,n[0]),2===n.length&&i.alt("positionAlign",n[1],["start",$e,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",$e,"end","left","right"])}},/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");var a=i.get("line","auto");"auto"===a&&-1===Je.line&&(a=-1),e.line=a,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",$e);var n=i.get("position","auto");"auto"===n&&50===Je.position&&(n="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=n}(t,e)}function dt(t){return t.replace(/<br(?: \/)?>/gi,"\n")}function ht(t,e,r,i){for(var a,n,o,s,l,u=window.VTTCue||window.TextTrackCue,d=0;d<i.rows.length;d++)if(a=i.rows[d],o=!0,s=0,l="",!a.isEmpty()){for(var h=0;h<a.chars.length;h++)a.chars[h].uchar.match(/\s/)&&o?s++:(l+=a.chars[h].uchar,o=!1);a.cueStartTime=e,e===r&&(r+=1e-4),n=new u(e,r,dt(l.trim())),s>=16?s--:s++,navigator.userAgent.match(/Firefox\//)?n.line=d+1:n.line=d>7?d-2:d+1,n.align="left",n.position=Math.max(0,Math.min(100,s/32*100+(navigator.userAgent.match(/Firefox\//)?50:0))),t.addCue(n)}}function ct(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ft(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function pt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function gt(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function vt(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function yt(t){if(t&&t.cues)for(;t.cues.length>0;)t.removeCue(t.cues[0])}function mt(t,e){return t&&t.label===e.name&&!(t.textTrack1||t.textTrack2)}function bt(t,e,r,i){return Math.min(e,i)-Math.max(t,r)}function Et(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Tt(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function Rt(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function At(t){for(var e=[],r=0;r<t.length;r++)"subtitles"===t[r].kind&&e.push(t[r]);return e}function St(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Lt(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _t(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function wt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var Dt={};r.d(Dt,"newCue",function(){return ht});var It=r(6),kt=r.n(It),Ot=r(1),Ct=r(2),Pt=r(0),xt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ft=function(){function t(e){i(this,t),this.hls=e,this.onEvent=this.onEvent.bind(this);for(var r=arguments.length,a=Array(r>1?r-1:0),n=1;n<r;n++)a[n-1]=arguments[n];this.handledEvents=a,this.useGenericHandler=!0,this.registerListeners()}return t.prototype.destroy=function(){this.unregisterListeners()},t.prototype.isEventHandler=function(){return"object"===xt(this.handledEvents)&&this.handledEvents.length&&"function"==typeof this.onEvent},t.prototype.registerListeners=function(){this.isEventHandler()&&this.handledEvents.forEach(function(t){if("hlsEventGeneric"===t)throw new Error("Forbidden event name: "+t);this.hls.on(t,this.onEvent)},this)},t.prototype.unregisterListeners=function(){this.isEventHandler()&&this.handledEvents.forEach(function(t){this.hls.off(t,this.onEvent)},this)},t.prototype.onEvent=function(t,e){this.onEventGeneric(t,e)},t.prototype.onEventGeneric=function(t,e){var r=function(t,e){var r="on"+t.replace("hls","");if("function"!=typeof this[r])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+r+")");return this[r].bind(this,e)};try{r.call(this,t,e).call()}catch(e){Pt.b.error("internal error happened while processing "+t+":"+e.message),this.hls.trigger(Ot.a.ERROR,{type:Ct.b.OTHER_ERROR,details:Ct.a.INTERNAL_EXCEPTION,fatal:!1,event:t,err:e})}},t}(),Nt=Ft,Mt=/^(\d+)x(\d+)$/,Ut=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,Bt=function(){function t(e){a(this,t),"string"==typeof e&&(e=t.parseAttrList(e));for(var r in e)e.hasOwnProperty(r)&&(this[r]=e[r])}return t.prototype.decimalInteger=function(t){var e=parseInt(this[t],10);return e>Number.MAX_SAFE_INTEGER?1/0:e},t.prototype.hexadecimalInteger=function(t){if(this[t]){var e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var r=new Uint8Array(e.length/2),i=0;i<e.length/2;i++)r[i]=parseInt(e.slice(2*i,2*i+2),16);return r}return null},t.prototype.hexadecimalIntegerAsNumber=function(t){var e=parseInt(this[t],16);return e>Number.MAX_SAFE_INTEGER?1/0:e},t.prototype.decimalFloatingPoint=function(t){return parseFloat(this[t])},t.prototype.enumeratedString=function(t){return this[t]},t.prototype.decimalResolution=function(t){var e=Mt.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}},t.parseAttrList=function(t){var e,r={};for(Ut.lastIndex=0;null!==(e=Ut.exec(t));){var i=e[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[e[1]]=i}return r},t}(),Gt=Bt,jt={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0}},Ht=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Kt=/#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,Wt=/#EXT-X-MEDIA:(.*)/g,Vt=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/|(?!#)(\S+)/.source,/|#EXT-X-BYTERANGE:*(.+)/.source,/|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/|#.*/.source].join(""),"g"),Yt=/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)(.*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,zt=function(){function t(){u(this,t),this.method=null,this.key=null,this.iv=null,this._uri=null}return Ht(t,[{key:"uri",get:function(){return!this._uri&&this.reluri&&(this._uri=kt.a.buildAbsoluteURL(this.baseuri,this.reluri,{alwaysNormalize:!0})),this._uri}}]),t}(),Xt=function(){function t(){u(this,t),this._url=null,this._byteRange=null,this._decryptdata=null,this.tagList=[]}return t.prototype.createInitializationVector=function(t){for(var e=new Uint8Array(16),r=12;r<16;r++)e[r]=t>>8*(15-r)&255;return e},t.prototype.fragmentDecryptdataFromLevelkey=function(t,e){var r=t;return t&&t.method&&t.uri&&!t.iv&&(r=new zt,r.method=t.method,r.baseuri=t.baseuri,r.reluri=t.reluri,r.iv=this.createInitializationVector(e)),r},t.prototype.cloneObj=function(t){return JSON.parse(JSON.stringify(t))},Ht(t,[{key:"url",get:function(){return!this._url&&this.relurl&&(this._url=kt.a.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url},set:function(t){this._url=t}},{key:"programDateTime",get:function(){return!this._programDateTime&&this.rawProgramDateTime&&(this._programDateTime=new Date(Date.parse(this.rawProgramDateTime))),this._programDateTime}},{key:"byteRange",get:function(){if(!this._byteRange){var t=this._byteRange=[];if(this.rawByteRange){var e=this.rawByteRange.split("@",2);if(1===e.length){var r=this.lastByteRangeEndOffset;t[0]=r||0}else t[0]=parseInt(e[1]);t[1]=parseInt(e[0])+t[0]}}return this._byteRange}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"decryptdata",get:function(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}}]),t}(),qt=function(t){function e(r){u(this,e);var i=s(this,t.call(this,r,Ot.a.MANIFEST_LOADING,Ot.a.LEVEL_LOADING,Ot.a.AUDIO_TRACK_LOADING,Ot.a.SUBTITLE_TRACK_LOADING));return i.loaders={},i}return l(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},Nt.prototype.destroy.call(this)},e.prototype.onManifestLoading=function(t){this.load(t.url,{type:"manifest"})},e.prototype.onLevelLoading=function(t){this.load(t.url,{type:"level",level:t.level,id:t.id})},e.prototype.onAudioTrackLoading=function(t){this.load(t.url,{type:"audioTrack",id:t.id})},e.prototype.onSubtitleTrackLoading=function(t){this.load(t.url,{type:"subtitleTrack",id:t.id})},e.prototype.load=function(t,e){var r=this.loaders[e.type];if(void 0!==r){var i=r.context;if(i&&i.url===t)return void Pt.b.trace("playlist request ongoing");Pt.b.warn("abort previous loader for type:"+e.type),r.abort()}var a=this.hls.config,n=void 0,o=void 0,s=void 0,l=void 0;"manifest"===e.type?(n=a.manifestLoadingMaxRetry,o=a.manifestLoadingTimeOut,s=a.manifestLoadingRetryDelay,l=a.manifestLoadingMaxRetryTimeout):"level"===e.type?(n=0,o=a.levelLoadingTimeOut):(n=a.levelLoadingMaxRetry,o=a.levelLoadingTimeOut,s=a.levelLoadingRetryDelay,l=a.levelLoadingMaxRetryTimeout,Pt.b.log("loading playlist for "+e.type+" "+(e.level||e.id))),r=this.loaders[e.type]=e.loader=void 0!==a.pLoader?new a.pLoader(a):new a.loader(a),e.url=t,e.responseType="";var u=void 0,d=void 0;u={timeout:o,maxRetry:n,retryDelay:s,maxRetryDelay:l},d={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},r.load(e,u,d)},e.prototype.resolve=function(t,e){return kt.a.buildAbsoluteURL(e,t,{alwaysNormalize:!0})},e.prototype.parseMasterPlaylist=function(t,e){var r=[],i=void 0;for(Kt.lastIndex=0;null!=(i=Kt.exec(t));){var a={},o=a.attrs=new Gt(i[1]);a.url=this.resolve(i[2],e);var s=o.decimalResolution("RESOLUTION");s&&(a.width=s.width,a.height=s.height),a.bitrate=o.decimalInteger("AVERAGE-BANDWIDTH")||o.decimalInteger("BANDWIDTH"),a.name=o.NAME,function(t,e){["video","audio"].forEach(function(r){var i=t.filter(function(t){return n(t,r)});if(i.length){var a=i.filter(function(t){return 0===t.lastIndexOf("avc1",0)||0===t.lastIndexOf("mp4a",0)});e[r+"Codec"]=a.length>0?a[0]:i[0],t=t.filter(function(t){return-1===i.indexOf(t)})}}),e.unknownCodecs=t}([].concat((o.CODECS||"").split(/[ ,]+/)),a),a.videoCodec&&-1!==a.videoCodec.indexOf("avc1")&&(a.videoCodec=this.avc1toavcoti(a.videoCodec)),r.push(a)}return r},e.prototype.parseMasterPlaylistMedia=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=void 0,n=[],o=0;for(Wt.lastIndex=0;null!==(a=Wt.exec(t));){var s={},l=new Gt(a[1]);if(l.TYPE===r){if(s.groupId=l["GROUP-ID"],s.name=l.NAME,s.type=r,s.default="YES"===l.DEFAULT,s.autoselect="YES"===l.AUTOSELECT,s.forced="YES"===l.FORCED,l.URI&&(s.url=this.resolve(l.URI,e)),s.lang=l.LANGUAGE,s.name||(s.name=s.lang),i.length){var u=d(i,s.groupId);s.audioCodec=u?u.codec:i[0].codec}s.id=o++,n.push(s)}}return n},e.prototype.avc1toavcoti=function(t){var e,r=t.split(".");return r.length>2?(e=r.shift()+".",e+=parseInt(r.shift()).toString(16),e+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):e=t,e},e.prototype.parseLevelPlaylist=function(t,e,r,i){var a,n,o=0,s=0,l={type:null,version:null,url:e,fragments:[],live:!0,startSN:0},u=new zt,d=0,h=null,c=new Xt;for(Vt.lastIndex=0;null!==(a=Vt.exec(t));){var f=a[1];if(f){c.duration=parseFloat(f);var p=(" "+a[2]).slice(1);c.title=p||null,c.tagList.push(p?["INF",f,p]:["INF",f])}else if(a[3]){if(!isNaN(c.duration)){var g=o++;c.type=i,c.start=s,c.levelkey=u,c.sn=g,c.level=r,c.cc=d,c.baseurl=e,c.relurl=(" "+a[3]).slice(1),l.fragments.push(c),h=c,s+=c.duration,c=new Xt}}else if(a[4]){if(c.rawByteRange=(" "+a[4]).slice(1),h){var v=h.byteRangeEndOffset;v&&(c.lastByteRangeEndOffset=v)}}else if(a[5])c.rawProgramDateTime=(" "+a[5]).slice(1),c.tagList.push(["PROGRAM-DATE-TIME",c.rawProgramDateTime]),void 0===l.programDateTime&&(l.programDateTime=new Date(new Date(Date.parse(a[5]))-1e3*s));else{for(a=a[0].match(Yt),n=1;n<a.length&&void 0===a[n];n++);var y=(" "+a[n+1]).slice(1),m=(" "+a[n+2]).slice(1);switch(a[n]){case"#":c.tagList.push(m?[y,m]:[y]);break;case"PLAYLIST-TYPE":l.type=y.toUpperCase();break;case"MEDIA-SEQUENCE":o=l.startSN=parseInt(y);break;case"TARGETDURATION":l.targetduration=parseFloat(y);break;case"VERSION":l.version=parseInt(y);break;case"EXTM3U":break;case"ENDLIST":l.live=!1;break;case"DIS":d++,c.tagList.push(["DIS"]);break;case"DISCONTINUITY-SEQ":d=parseInt(y);break;case"KEY":var b=y,E=new Gt(b),T=E.enumeratedString("METHOD"),R=E.URI,A=E.hexadecimalInteger("IV");T&&(u=new zt,R&&["AES-128","SAMPLE-AES"].indexOf(T)>=0&&(u.method=T,u.baseuri=e,u.reluri=R,u.key=null,u.iv=A));break;case"START":var S=y,L=new Gt(S),_=L.decimalFloatingPoint("TIME-OFFSET");isNaN(_)||(l.startTimeOffset=_);break;case"MAP":var w=new Gt(y);c.relurl=w.URI,c.rawByteRange=w.BYTERANGE,c.baseurl=e,c.level=r,c.type=i,c.sn="initSegment",l.initSegment=c,c=new Xt;break;default:Pt.b.warn("line parsed but not handled: "+a)}}}return c=h,c&&!c.relurl&&(l.fragments.pop(),s-=c.duration),l.totalduration=s,l.averagetargetduration=s/l.fragments.length,l.endSN=o-1,l.startCC=l.fragments[0]?l.fragments[0].cc:0,l.endCC=d,l},e.prototype.loadsuccess=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=t.data,n=t.url,o=r.type,s=r.id,l=r.level,u=this.hls;if(this.loaders[o]=void 0,void 0!==n&&0!==n.indexOf("data:")||(n=r.url),e.tload=performance.now(),0===a.indexOf("#EXTM3U"))if(a.indexOf("#EXTINF:")>0){var d="audioTrack"!==o&&"subtitleTrack"!==o,h=isNaN(l)?isNaN(s)?0:s:l,c=this.parseLevelPlaylist(a,n,h,"audioTrack"===o?"audio":"subtitleTrack"===o?"subtitle":"main");c.tload=e.tload,"manifest"===o&&u.trigger(Ot.a.MANIFEST_LOADED,{levels:[{url:n,details:c}],audioTracks:[],url:n,stats:e,networkDetails:i}),e.tparsed=performance.now(),c.targetduration?d?u.trigger(Ot.a.LEVEL_LOADED,{details:c,level:l||0,id:s||0,stats:e,networkDetails:i}):"audioTrack"===o?u.trigger(Ot.a.AUDIO_TRACK_LOADED,{details:c,id:s,stats:e,networkDetails:i}):"subtitleTrack"===o&&u.trigger(Ot.a.SUBTITLE_TRACK_LOADED,{details:c,id:s,stats:e,networkDetails:i}):u.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"invalid targetduration",networkDetails:i})}else{var f=this.parseMasterPlaylist(a,n);if(f.length){var p=f.map(function(t){return{id:t.attrs.AUDIO,codec:t.audioCodec}}),g=this.parseMasterPlaylistMedia(a,n,"AUDIO",p),v=this.parseMasterPlaylistMedia(a,n,"SUBTITLES");if(g.length){var y=!1;g.forEach(function(t){t.url||(y=!0)}),!1===y&&f[0].audioCodec&&!f[0].attrs.AUDIO&&(Pt.b.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main"}))}u.trigger(Ot.a.MANIFEST_LOADED,{levels:f,audioTracks:g,subtitles:v,url:n,stats:e,networkDetails:i})}else u.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"no level found in manifest",networkDetails:i})}else u.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"no EXTM3U delimiter",networkDetails:i})},e.prototype.loaderror=function(t,e){var r,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e.loader;switch(e.type){case"manifest":r=Ct.a.MANIFEST_LOAD_ERROR,i=!0;break;case"level":r=Ct.a.LEVEL_LOAD_ERROR,i=!1;break;case"audioTrack":r=Ct.a.AUDIO_TRACK_LOAD_ERROR,i=!1}n&&(n.abort(),this.loaders[e.type]=void 0),this.hls.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:r,fatal:i,url:n.url,loader:n,response:t,context:e,networkDetails:a})},e.prototype.loadtimeout=function(t,e){var r,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e.loader;switch(e.type){case"manifest":r=Ct.a.MANIFEST_LOAD_TIMEOUT,i=!0;break;case"level":r=Ct.a.LEVEL_LOAD_TIMEOUT,i=!1;break;case"audioTrack":r=Ct.a.AUDIO_TRACK_LOAD_TIMEOUT,i=!1}n&&(n.abort(),this.loaders[e.type]=void 0),this.hls.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:r,fatal:i,url:n.url,loader:n,context:e,networkDetails:a})},e}(Nt),Qt=qt,Jt=function(t){function e(r){h(this,e);var i=c(this,t.call(this,r,Ot.a.FRAG_LOADING));return i.loaders={},i}return f(e,t),e.prototype.destroy=function(){var t=this.loaders;for(var e in t){var r=t[e];r&&r.destroy()}this.loaders={},Nt.prototype.destroy.call(this)},e.prototype.onFragLoading=function(t){var e=t.frag,r=e.type,i=this.loaders[r],a=this.hls.config;e.loaded=0,i&&(Pt.b.warn("abort previous fragment loader for type:"+r),i.abort()),i=this.loaders[r]=e.loader=void 0!==a.fLoader?new a.fLoader(a):new a.loader(a);var n=void 0,o=void 0,s=void 0;n={url:e.url,frag:e,responseType:"arraybuffer",progressData:!1};var l=e.byteRangeStartOffset,u=e.byteRangeEndOffset;isNaN(l)||isNaN(u)||(n.rangeStart=l,n.rangeEnd=u),o={timeout:a.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:a.fragLoadingMaxRetryTimeout},s={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this),onProgress:this.loadprogress.bind(this)},i.load(n,o,s)},e.prototype.loadsuccess=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=t.data,n=r.frag;n.loader=void 0,this.loaders[n.type]=void 0,this.hls.trigger(Ot.a.FRAG_LOADED,{payload:a,frag:n,stats:e,networkDetails:i})},e.prototype.loaderror=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.FRAG_LOAD_ERROR,fatal:!1,frag:e.frag,response:t,networkDetails:r})},e.prototype.loadtimeout=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e.frag,networkDetails:r})},e.prototype.loadprogress=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=e.frag;a.loaded=t.loaded,this.hls.trigger(Ot.a.FRAG_LOAD_PROGRESS,{frag:a,stats:t,networkDetails:i})},e}(Nt),$t=Jt,Zt=function(t){function e(r){p(this,e);var i=g(this,t.call(this,r,Ot.a.KEY_LOADING));return i.loaders={},i.decryptkey=null,i.decrypturl=null,i}return v(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},Nt.prototype.destroy.call(this)},e.prototype.onKeyLoading=function(t){var e=t.frag,r=e.type,i=this.loaders[r],a=e.decryptdata,n=a.uri;if(n!==this.decrypturl||null===this.decryptkey){var o=this.hls.config;i&&(Pt.b.warn("abort previous key loader for type:"+r),i.abort()),e.loader=this.loaders[r]=new o.loader(o),this.decrypturl=n,this.decryptkey=null;var s=void 0,l=void 0,u=void 0;s={url:n,frag:e,responseType:"arraybuffer"},l={timeout:o.fragLoadingTimeOut,maxRetry:o.fragLoadingMaxRetry,retryDelay:o.fragLoadingRetryDelay,maxRetryDelay:o.fragLoadingMaxRetryTimeout},u={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},e.loader.load(s,l,u)}else this.decryptkey&&(a.key=this.decryptkey,this.hls.trigger(Ot.a.KEY_LOADED,{frag:e}))},e.prototype.loadsuccess=function(t,e,r){var i=r.frag;this.decryptkey=i.decryptdata.key=new Uint8Array(t.data),i.loader=void 0,this.loaders[i.type]=void 0,this.hls.trigger(Ot.a.KEY_LOADED,{frag:i})},e.prototype.loaderror=function(t,e){var r=e.frag,i=r.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.KEY_LOAD_ERROR,fatal:!1,frag:r,response:t})},e.prototype.loadtimeout=function(t,e){var r=e.frag,i=r.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Ot.a.ERROR,{type:Ct.b.NETWORK_ERROR,details:Ct.a.KEY_LOAD_TIMEOUT,fatal:!1,frag:r})},e}(Nt),te=Zt,ee={search:function(t,e){for(var r=0,i=t.length-1,a=null,n=null;r<=i;){a=(r+i)/2|0,n=t[a];var o=e(n);if(o>0)r=a+1;else{if(!(o<0))return n;i=a-1}}return null}},re=ee,ie={isBuffered:function(t,e){try{if(t)for(var r=t.buffered,i=0;i<r.length;i++)if(e>=r.start(i)&&e<=r.end(i))return!0}catch(t){}return!1},bufferInfo:function(t,e,r){try{if(t){var i,a=t.buffered,n=[];for(i=0;i<a.length;i++)n.push({start:a.start(i),end:a.end(i)});return this.bufferedInfo(n,e,r)}}catch(t){}return{len:0,start:e,end:e,nextStart:void 0}},bufferedInfo:function(t,e,r){var i,a,n,o,s,l=[];for(t.sort(function(t,e){var r=t.start-e.start;return r||e.end-t.end}),s=0;s<t.length;s++){var u=l.length;if(u){var d=l[u-1].end;t[s].start-d<r?t[s].end>d&&(l[u-1].end=t[s].end):l.push(t[s])}else l.push(t[s])}for(s=0,i=0,a=n=e;s<l.length;s++){var h=l[s].start,c=l[s].end;if(e+r>=h&&e<c)a=h,n=c,i=n-e;else if(e+r<h){o=h;break}}return{len:i,start:a,end:n,nextStart:o}}},ae=ie,ne=r(7),oe=r(5),se=r.n(oe),le=r(9),ue=r.n(le),de=y(),he=function(){function t(e,r){m(this,t),this.hls=e,this.id=r;var i=this.observer=new se.a,a=e.config;i.trigger=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),a=1;a<e;a++)r[a-1]=arguments[a];i.emit.apply(i,[t,t].concat(r))},i.off=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),a=1;a<e;a++)r[a-1]=arguments[a];i.removeListener.apply(i,[t].concat(r))};var n=function(t,r){r=r||{},r.frag=this.frag,r.id=this.id,e.trigger(t,r)}.bind(this);i.on(Ot.a.FRAG_DECRYPTED,n),i.on(Ot.a.FRAG_PARSING_INIT_SEGMENT,n),i.on(Ot.a.FRAG_PARSING_DATA,n),i.on(Ot.a.FRAG_PARSED,n),i.on(Ot.a.ERROR,n),i.on(Ot.a.FRAG_PARSING_METADATA,n),i.on(Ot.a.FRAG_PARSING_USERDATA,n),i.on(Ot.a.INIT_PTS_FOUND,n);var o={mp4:de.isTypeSupported("video/mp4"),mpeg:de.isTypeSupported("audio/mpeg"),mp3:de.isTypeSupported('audio/mp4; codecs="mp3"')},s=navigator.vendor;if(a.enableWorker&&"undefined"!=typeof Worker){Pt.b.log("demuxing in webworker");var l=void 0;try{l=this.w=ue()(10),this.onwmsg=this.onWorkerMessage.bind(this),l.addEventListener("message",this.onwmsg),l.onerror=function(t){e.trigger(Ot.a.ERROR,{type:Ct.b.OTHER_ERROR,details:Ct.a.INTERNAL_EXCEPTION,fatal:!0,event:"demuxerWorker",err:{message:t.message+" ("+t.filename+":"+t.lineno+")"}})},l.postMessage({cmd:"init",typeSupported:o,vendor:s,id:r,config:JSON.stringify(a)})}catch(t){Pt.b.error("error while initializing DemuxerWorker, fallback on DemuxerInline"),l&&URL.revokeObjectURL(l.objectURL),this.demuxer=new ne.a(i,o,a,s),this.w=void 0}}else this.demuxer=new ne.a(i,o,a,s)}return t.prototype.destroy=function(){var t=this.w;if(t)t.removeEventListener("message",this.onwmsg),t.terminate(),this.w=null;else{var e=this.demuxer;e&&(e.destroy(),this.demuxer=null)}var r=this.observer;r&&(r.removeAllListeners(),this.observer=null)},t.prototype.push=function(t,e,r,i,a,n,o,s){var l=this.w,u=isNaN(a.startDTS)?a.start:a.startDTS,d=a.decryptdata,h=this.frag,c=!(h&&a.cc===h.cc),f=!(h&&a.level===h.level),p=h&&a.sn===h.sn+1,g=!f&&p;if(c&&Pt.b.log(this.id+":discontinuity detected"),f&&Pt.b.log(this.id+":switch detected"),this.frag=a,l)l.postMessage({cmd:"demux",data:t,decryptdata:d,initSegment:e,audioCodec:r,videoCodec:i,timeOffset:u,discontinuity:c,trackSwitch:f,contiguous:g,duration:n,accurateTimeOffset:o,defaultInitPTS:s},t instanceof ArrayBuffer?[t]:[]);else{var v=this.demuxer;v&&v.push(t,d,e,r,i,u,c,f,g,n,o,s)}},t.prototype.onWorkerMessage=function(t){var e=t.data,r=this.hls;switch(e.event){case"init":URL.revokeObjectURL(this.w.objectURL);break;case Ot.a.FRAG_PARSING_DATA:e.data.data1=new Uint8Array(e.data1),e.data2&&(e.data.data2=new Uint8Array(e.data2));default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,r.trigger(e.event,e.data)}},t}(),ce=he,fe={toString:function(t){for(var e="",r=t.length,i=0;i<r;i++)e+="["+t.start(i).toFixed(3)+","+t.end(i).toFixed(3)+"]";return e}},pe=fe,ge=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),ve={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_LEVEL:"WAITING_LEVEL",PARSING:"PARSING",PARSED:"PARSED",BUFFER_FLUSHING:"BUFFER_FLUSHING",ENDED:"ENDED",ERROR:"ERROR"},ye=function(t){function e(r){D(this,e);var i=I(this,t.call(this,r,Ot.a.MEDIA_ATTACHED,Ot.a.MEDIA_DETACHING,Ot.a.MANIFEST_LOADING,Ot.a.MANIFEST_PARSED,Ot.a.LEVEL_LOADED,Ot.a.KEY_LOADED,Ot.a.FRAG_LOADED,Ot.a.FRAG_LOAD_EMERGENCY_ABORTED,Ot.a.FRAG_PARSING_INIT_SEGMENT,Ot.a.FRAG_PARSING_DATA,Ot.a.FRAG_PARSED,Ot.a.ERROR,Ot.a.AUDIO_TRACK_SWITCHING,Ot.a.AUDIO_TRACK_SWITCHED,Ot.a.BUFFER_CREATED,Ot.a.BUFFER_APPENDED,Ot.a.BUFFER_FLUSHED));return i.config=r.config,i.audioCodecSwap=!1,i.ticks=0,i._state=ve.STOPPED,i.ontick=i.tick.bind(i),i}return k(e,t),e.prototype.destroy=function(){this.stopLoad(),this.timer&&(clearInterval(this.timer),this.timer=null),Nt.prototype.destroy.call(this),this.state=ve.STOPPED},e.prototype.startLoad=function(t){if(this.levels){var e=this.lastCurrentTime,r=this.hls;if(this.stopLoad(),this.timer||(this.timer=setInterval(this.ontick,100)),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var i=r.startLevel;-1===i&&(i=0,this.bitrateTest=!0),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}e>0&&-1===t&&(Pt.b.log("override startPosition with lastCurrentTime @"+e.toFixed(3)),t=e),this.state=ve.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this.forceStartLoad=!0,this.state=ve.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=ve.STOPPED,this.forceStartLoad=!1},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){switch(this.state){case ve.ERROR:break;case ve.BUFFER_FLUSHING:this.fragLoadError=0;break;case ve.IDLE:this._doTickIdle();break;case ve.WAITING_LEVEL:var t=this.levels[this.level];t&&t.details&&(this.state=ve.IDLE);break;case ve.FRAG_LOADING_WAITING_RETRY:var e=performance.now(),r=this.retryDate;(!r||e>=r||this.media&&this.media.seeking)&&(Pt.b.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=ve.IDLE);break;case ve.ERROR:case ve.STOPPED:case ve.FRAG_LOADING:case ve.PARSING:case ve.PARSED:case ve.ENDED:}this._checkBuffer(),this._checkFragmentChanged()},e.prototype._doTickIdle=function(){var t=this.hls,e=t.config,r=this.media;if(void 0!==this.levelLastLoaded&&(r||!this.startFragRequested&&e.startFragPrefetch)){var i=void 0;i=this.loadedmetadata?r.currentTime:this.nextLoadPosition;var a=t.nextLoadLevel,n=this.levels[a];if(n){var o=n.bitrate,s=void 0;s=o?Math.max(8*e.maxBufferSize/o,e.maxBufferLength):e.maxBufferLength,s=Math.min(s,e.maxMaxBufferLength);var l=ae.bufferInfo(this.mediaBuffer?this.mediaBuffer:r,i,e.maxBufferHole),u=l.len;if(!(u>=s)){Pt.b.trace("buffer length of "+u.toFixed(3)+" is below max of "+s.toFixed(3)+". checking for more payload ..."),this.level=t.nextLoadLevel=a;var d=n.details;if(void 0===d||!0===d.live&&this.levelLastLoaded!==a)return void(this.state=ve.WAITING_LEVEL);var h=this.fragPrevious;if(!d.live&&h&&!h.backtracked&&h.sn===d.endSN&&!l.nextStart){if(Math.min(r.duration,h.start+h.duration)-Math.max(l.end,h.start)<=Math.max(.2,h.duration)){var c={};return this.altAudio&&(c.type="video"),this.hls.trigger(Ot.a.BUFFER_EOS,c),void(this.state=ve.ENDED)}}this._fetchPayloadOrEos(i,l,d)}}}},e.prototype._fetchPayloadOrEos=function(t,e,r){var i=this.fragPrevious,a=this.level,n=r.fragments,o=n.length;if(0!==o){var s=n[0].start,l=n[o-1].start+n[o-1].duration,u=e.end,d=void 0;if(r.initSegment&&!r.initSegment.data)d=r.initSegment;else if(r.live){var h=this.config.initialLiveManifestSize;if(o<h)return void Pt.b.warn("Can not start playback of a level, reason: not enough fragments "+o+" < "+h);if(null===(d=this._ensureFragmentAtLivePoint(r,u,s,l,i,n,o)))return}else u<s&&(d=n[0]);d||(d=this._findFragment(s,i,o,n,u,l,r)),d&&this._loadFragmentOrKey(d,a,r,t,u)}},e.prototype._ensureFragmentAtLivePoint=function(t,e,r,i,a,n,o){var s=this.hls.config,l=this.media,u=void 0,d=void 0!==s.liveMaxLatencyDuration?s.liveMaxLatencyDuration:s.liveMaxLatencyDurationCount*t.targetduration;if(e<Math.max(r-s.maxFragLookUpTolerance,i-d)){var h=this.liveSyncPosition=this.computeLivePosition(r,t);Pt.b.log("buffer end: "+e.toFixed(3)+" is located too far from the end of live sliding playlist, reset currentTime to : "+h.toFixed(3)),e=h,l&&l.readyState&&l.duration>h&&(l.currentTime=h),this.nextLoadPosition=h}if(t.PTSKnown&&e>i&&l&&l.readyState)return null;if(this.startFragRequested&&!t.PTSKnown){if(a){var c=a.sn+1;if(c>=t.startSN&&c<=t.endSN){var f=n[c-t.startSN];a.cc===f.cc&&(u=f,Pt.b.log("live playlist, switching playlist, load frag with next SN: "+u.sn))}u||(u=re.search(n,function(t){return a.cc-t.cc}))&&Pt.b.log("live playlist, switching playlist, load frag with same CC: "+u.sn)}u||(u=n[Math.min(o-1,Math.round(o/2))],Pt.b.log("live playlist, switching playlist, unknown, load middle frag : "+u.sn))}return u},e.prototype._findFragment=function(t,e,r,i,a,n,o){var s=this.hls.config,l=void 0,u=void 0,d=s.maxFragLookUpTolerance,h=e?i[e.sn-i[0].sn+1]:void 0,c=function(t){var e=Math.min(d,t.duration+(t.deltaPTS?t.deltaPTS:0));return t.start+t.duration-e<=a?1:t.start-e>a&&t.start?-1:0};if(a<n?(a>n-d&&(d=0),u=h&&!c(h)?h:re.search(i,c)):u=i[r-1],u){l=u;var f=l.sn-o.startSN,p=e&&l.level===e.level,g=i[f-1],v=i[f+1];if(e&&l.sn===e.sn)if(p&&!l.backtracked)if(l.sn<o.endSN){var y=e.deltaPTS;y&&y>s.maxBufferHole&&e.dropped&&f?(l=g,Pt.b.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this"),e.loadCounter--):(l=v,Pt.b.log("SN just loaded, load next one: "+l.sn))}else l=null;else l.backtracked&&(v&&v.backtracked?(Pt.b.warn("Already backtracked from fragment "+v.sn+", will not backtrack to fragment "+l.sn+". Loading fragment "+v.sn),l=v):(Pt.b.warn("Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"),l.dropped=0,g?(g.loadCounter&&g.loadCounter--,l=g,l.backtracked=!0):f&&(l=null)))}return l},e.prototype._loadFragmentOrKey=function(t,e,r,i,a){var n=this.hls,o=n.config;if(!t.decryptdata||null==t.decryptdata.uri||null!=t.decryptdata.key){if(Pt.b.log("Loading "+t.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+e+", currentTime:"+i.toFixed(3)+",bufferEnd:"+a.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,t.loadCounter){t.loadCounter++;var s=o.fragLoadingLoopThreshold;if(t.loadCounter>s&&Math.abs(this.fragLoadIdx-t.loadIdx)<s)return void n.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.FRAG_LOOP_LOADING_ERROR,fatal:!1,frag:t})}else t.loadCounter=1;return t.loadIdx=this.fragLoadIdx,t.autoLevel=n.autoLevelEnabled,t.bitrateTest=this.bitrateTest,this.fragCurrent=t,this.startFragRequested=!0,isNaN(t.sn)||t.bitrateTest||(this.nextLoadPosition=t.start+t.duration),n.trigger(Ot.a.FRAG_LOADING,{frag:t}),this.demuxer||(this.demuxer=new ce(n,"main")),void(this.state=ve.FRAG_LOADING)}Pt.b.log("Loading key for "+t.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+e),this.state=ve.KEY_LOADING,n.trigger(Ot.a.KEY_LOADING,{frag:t})},e.prototype.getBufferedFrag=function(t){return re.search(this._bufferedFrags,function(e){return t<e.startPTS?-1:t>e.endPTS?1:0})},e.prototype.followingBufferedFrag=function(t){return t?this.getBufferedFrag(t.endPTS+.5):null},e.prototype._checkFragmentChanged=function(){var t,e,r=this.media;if(r&&r.readyState&&!1===r.seeking&&(e=r.currentTime,e>r.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),ae.isBuffered(r,e)?t=this.getBufferedFrag(e):ae.isBuffered(r,e+.1)&&(t=this.getBufferedFrag(e+.1)),t)){var i=t;if(i!==this.fragPlaying){this.hls.trigger(Ot.a.FRAG_CHANGED,{frag:i});var a=i.level;this.fragPlaying&&this.fragPlaying.level===a||this.hls.trigger(Ot.a.LEVEL_SWITCHED,{level:a}),this.fragPlaying=i}}},e.prototype.immediateLevelSwitch=function(){if(Pt.b.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var t=this.media,e=void 0;t?(e=t.paused,t.pause()):e=!0,this.previouslyPaused=e}var r=this.fragCurrent;r&&r.loader&&r.loader.abort(),this.fragCurrent=null,void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},e.prototype.immediateLevelSwitchEnd=function(){var t=this.media;t&&t.buffered.length&&(this.immediateSwitch=!1,ae.isBuffered(t,t.currentTime)&&(t.currentTime-=1e-4),this.previouslyPaused||t.play())},e.prototype.nextLevelSwitch=function(){var t=this.media;if(t&&t.readyState){var e=void 0,r=void 0,i=void 0;if(void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),r=this.getBufferedFrag(t.currentTime),r&&r.startPTS>1&&this.flushMainBuffer(0,r.startPTS-1),t.paused)e=0;else{var a=this.hls.nextLoadLevel,n=this.levels[a],o=this.fragLastKbps;e=o&&this.fragCurrent?this.fragCurrent.duration*n.bitrate/(1e3*o)+1:0}if((i=this.getBufferedFrag(t.currentTime+e))&&(i=this.followingBufferedFrag(i))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.flushMainBuffer(i.maxStartPTS,Number.POSITIVE_INFINITY)}}},e.prototype.flushMainBuffer=function(t,e){this.state=ve.BUFFER_FLUSHING;var r={startOffset:t,endOffset:e};this.altAudio&&(r.type="video"),this.hls.trigger(Ot.a.BUFFER_FLUSHING,r)},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended);var r=this.config;this.levels&&r.autoStartLoad&&this.hls.startLoad(r.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(Pt.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.levels;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.loadCounter=void 0,t.backtracked=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("seeked",this.onvseeked),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){var t=this.media,e=t?t.currentTime:void 0,r=this.config;isNaN(e)||Pt.b.log("media seeking to "+e.toFixed(3));var i=this.mediaBuffer?this.mediaBuffer:t,a=ae.bufferInfo(i,e,this.config.maxBufferHole);if(this.state===ve.FRAG_LOADING){var n=this.fragCurrent;if(0===a.len&&n){var o=r.maxFragLookUpTolerance,s=n.start-o,l=n.start+n.duration+o;e<s||e>l?(n.loader&&(Pt.b.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),n.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.state=ve.IDLE):Pt.b.log("seeking outside of buffer but within currently loaded fragment range")}}else this.state===ve.ENDED&&(0===a.len&&(this.fragPrevious=0),this.state=ve.IDLE);t&&(this.lastCurrentTime=e),this.state!==ve.FRAG_LOADING&&void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*r.fragLoadingLoopThreshold),this.loadedmetadata||(this.nextLoadPosition=this.startPosition=e),this.tick()},e.prototype.onMediaSeeked=function(){var t=this.media,e=t?t.currentTime:void 0;isNaN(e)||Pt.b.log("media seeked to "+e.toFixed(3)),this.tick()},e.prototype.onMediaEnded=function(){Pt.b.log("media ended"),this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestLoading=function(){Pt.b.log("trigger BUFFER_RESET"),this.hls.trigger(Ot.a.BUFFER_RESET),this._bufferedFrags=[],this.stalled=!1,this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestParsed=function(t){var e,r=!1,i=!1;t.levels.forEach(function(t){(e=t.audioCodec)&&(-1!==e.indexOf("mp4a.40.2")&&(r=!0),-1!==e.indexOf("mp4a.40.5")&&(i=!0))}),this.audioCodecSwitch=r&&i,this.audioCodecSwitch&&Pt.b.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1;var a=this.config;(a.autoStartLoad||this.forceStartLoad)&&this.hls.startLoad(a.startPosition)},e.prototype.onLevelLoaded=function(t){var e=t.details,r=t.level,i=this.levels[this.levelLastLoaded],a=this.levels[r],n=e.totalduration,o=0;if(Pt.b.log("level "+r+" loaded ["+e.startSN+","+e.endSN+"],duration:"+n),e.live){var s=a.details;s&&e.fragments.length>0?(T(s,e),o=e.fragments[0].start,this.liveSyncPosition=this.computeLivePosition(o,s),e.PTSKnown&&!isNaN(o)?Pt.b.log("live playlist sliding:"+o.toFixed(3)):(Pt.b.log("live playlist - outdated PTS, unknown sliding"),w(this.fragPrevious,i,e))):(Pt.b.log("live playlist - first load, unknown sliding"),e.PTSKnown=!1,w(this.fragPrevious,i,e))}else e.PTSKnown=!1;if(a.details=e,this.levelLastLoaded=r,this.hls.trigger(Ot.a.LEVEL_UPDATED,{details:e,level:r}),!1===this.startFragRequested){if(-1===this.startPosition||-1===this.lastCurrentTime){var l=e.startTimeOffset;isNaN(l)?e.live?(this.startPosition=this.computeLivePosition(o,e),Pt.b.log("configure startPosition to "+this.startPosition)):this.startPosition=0:(l<0&&(Pt.b.log("negative start time offset "+l+", count from end of last fragment"),l=o+n+l),Pt.b.log("start time offset found in playlist, adjust startPosition to "+l),this.startPosition=l),this.lastCurrentTime=this.startPosition}this.nextLoadPosition=this.startPosition}this.state===ve.WAITING_LEVEL&&(this.state=ve.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===ve.KEY_LOADING&&(this.state=ve.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag;if(this.state===ve.FRAG_LOADING&&e&&"main"===r.type&&r.level===e.level&&r.sn===e.sn){var i=t.stats,a=this.levels[e.level],n=a.details;if(Pt.b.log("Loaded "+e.sn+" of ["+n.startSN+" ,"+n.endSN+"],level "+e.level),this.bitrateTest=!1,this.stats=i,!0===r.bitrateTest&&this.hls.nextLoadLevel)this.state=ve.IDLE,this.startFragRequested=!1,i.tparsed=i.tbuffered=performance.now(),this.hls.trigger(Ot.a.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.tick();else if("initSegment"===r.sn)this.state=ve.IDLE,i.tparsed=i.tbuffered=performance.now(),n.initSegment.data=t.payload,this.hls.trigger(Ot.a.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.tick();else{this.state=ve.PARSING;var o=n.totalduration,s=e.level,l=e.sn,u=this.config.defaultAudioCodec||a.audioCodec;this.audioCodecSwap&&(Pt.b.log("swapping playlist audio codec"),void 0===u&&(u=this.lastAudioCodec),u&&(u=-1!==u.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingBuffering=!0,this.appended=!1,Pt.b.log("Parsing "+l+" of ["+n.startSN+" ,"+n.endSN+"],level "+s+", cc "+e.cc);var d=this.demuxer;d||(d=this.demuxer=new ce(this.hls,"main"));var h=this.media,c=h&&h.seeking,f=!c&&(n.PTSKnown||!n.live),p=n.initSegment?n.initSegment.data:[];d.push(t.payload,p,u,a.videoCodec,e,o,f,void 0)}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,r=t.frag;if(e&&"main"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===ve.PARSING){var i,a,n=t.tracks;if(n.audio&&this.altAudio&&delete n.audio,a=n.audio){var o=this.levels[this.level].audioCodec,s=navigator.userAgent.toLowerCase();o&&this.audioCodecSwap&&(Pt.b.log("swapping playlist audio codec"),o=-1!==o.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==a.metadata.channelCount&&-1===s.indexOf("firefox")&&(o="mp4a.40.5"),-1!==s.indexOf("android")&&"audio/mpeg"!==a.container&&(o="mp4a.40.2",Pt.b.log("Android: force audio codec to "+o)),a.levelCodec=o,a.id=t.id}a=n.video,a&&(a.levelCodec=this.levels[this.level].videoCodec,a.id=t.id),this.hls.trigger(Ot.a.BUFFER_CODECS,n);for(i in n){a=n[i],Pt.b.log("main track:"+i+",container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var l=a.initSegment;l&&(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(Ot.a.BUFFER_APPENDING,{type:i,data:l,parent:"main",content:"initSegment"}))}this.tick()}},e.prototype.onFragParsingData=function(t){var e=this,r=this.fragCurrent,i=t.frag;if(r&&"main"===t.id&&i.sn===r.sn&&i.level===r.level&&("audio"!==t.type||!this.altAudio)&&this.state===ve.PARSING){var a=this.levels[this.level],n=r;if(isNaN(t.endPTS)&&(t.endPTS=t.startPTS+r.duration,t.endDTS=t.startDTS+r.duration),Pt.b.log("Parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb+",dropped:"+(t.dropped||0)),"video"===t.type)if(n.dropped=t.dropped,n.dropped)if(n.backtracked)Pt.b.warn("Already backtracked on this fragment, appending with the gap");else{var o=a.details;if(!o||n.sn!==o.startSN)return Pt.b.warn("missing video frame(s), backtracking fragment"),n.backtracked=!0,this.nextLoadPosition=t.startPTS,this.state=ve.IDLE,this.fragPrevious=n,void this.tick();Pt.b.warn("missing video frame(s) on first frag, appending with gap")}else n.backtracked=!1;var s=E(a.details,n,t.startPTS,t.endPTS,t.startDTS,t.endDTS),l=this.hls;l.trigger(Ot.a.LEVEL_PTS_UPDATED,{details:a.details,level:this.level,drift:s,type:t.type,start:t.startPTS,end:t.endPTS}),[t.data1,t.data2].forEach(function(r){r&&r.length&&e.state===ve.PARSING&&(e.appended=!0,e.pendingBuffering=!0,l.trigger(Ot.a.BUFFER_APPENDING,{type:t.type,data:r,parent:"main",content:"data"}))}),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,r=t.frag;e&&"main"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===ve.PARSING&&(this.stats.tparsed=performance.now(),this.state=ve.PARSED,this._checkAppendedParsed())},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url,r=t.id;if(!e){if(this.mediaBuffer!==this.media){Pt.b.log("switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;i.loader&&(Pt.b.log("switching to main audio track, cancel main fragment load"),i.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=ve.IDLE}var a=this.hls;a.trigger(Ot.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),a.trigger(Ot.a.AUDIO_TRACK_SWITCHED,{id:r}),this.altAudio=!1}},e.prototype.onAudioTrackSwitched=function(t){var e=t.id,r=!!this.hls.audioTracks[e].url;if(r){var i=this.videoBuffer;i&&this.mediaBuffer!==i&&(Pt.b.log("switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=r,this.tick()},e.prototype.onBufferCreated=function(t){var e=t.tracks,r=void 0,i=void 0,a=!1;for(var n in e){var o=e[n];"main"===o.id?(i=n,r=o,"video"===n&&(this.videoBuffer=e[n].buffer)):a=!0}a&&r?(Pt.b.log("alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},e.prototype.onBufferAppended=function(t){if("main"===t.parent){var e=this.state;e!==ve.PARSING&&e!==ve.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==ve.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent;if(t){var e=this.mediaBuffer?this.mediaBuffer:this.media;Pt.b.log("main buffered : "+pe.toString(e.buffered));var r=this._bufferedFrags.filter(function(t){return ae.isBuffered(e,(t.startPTS+t.endPTS)/2)});r.push(t),this._bufferedFrags=r.sort(function(t,e){return t.startPTS-e.startPTS}),this.fragPrevious=t;var i=this.stats;i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.total/(i.tbuffered-i.tfirst)),this.hls.trigger(Ot.a.FRAG_BUFFERED,{stats:i,frag:t,id:"main"}),this.state=ve.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag||this.fragCurrent;if(!e||"main"===e.type){var r=!!this.media&&ae.isBuffered(this.media,this.media.currentTime)&&ae.isBuffered(this.media,this.media.currentTime+.5);switch(t.details){case Ct.a.FRAG_LOAD_ERROR:case Ct.a.FRAG_LOAD_TIMEOUT:case Ct.a.KEY_LOAD_ERROR:case Ct.a.KEY_LOAD_TIMEOUT:if(!t.fatal)if(this.fragLoadError+1<=this.config.fragLoadingMaxRetry){var i=Math.min(Math.pow(2,this.fragLoadError)*this.config.fragLoadingRetryDelay,this.config.fragLoadingMaxRetryTimeout);e.loadCounter=0,Pt.b.warn("mediaController: frag loading failed, retry in "+i+" ms"),this.retryDate=performance.now()+i,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.fragLoadError++,this.state=ve.FRAG_LOADING_WAITING_RETRY}else Pt.b.error("mediaController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=ve.ERROR;break;case Ct.a.FRAG_LOOP_LOADING_ERROR:t.fatal||(r?(this._reduceMaxBufferLength(e.duration),this.state=ve.IDLE):e.autoLevel&&0!==e.level||(t.fatal=!0,this.state=ve.ERROR));break;case Ct.a.LEVEL_LOAD_ERROR:case Ct.a.LEVEL_LOAD_TIMEOUT:this.state!==ve.ERROR&&(t.fatal?(this.state=ve.ERROR,Pt.b.warn("streamController: "+t.details+",switch to "+this.state+" state ...")):t.levelRetry||this.state!==ve.WAITING_LEVEL||(this.state=ve.IDLE));break;case Ct.a.BUFFER_FULL_ERROR:"main"!==t.parent||this.state!==ve.PARSING&&this.state!==ve.PARSED||(r?(this._reduceMaxBufferLength(this.config.maxBufferLength),this.state=ve.IDLE):(Pt.b.warn("buffer full error also media.currentTime is not buffered, flush everything"),this.fragCurrent=null,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)))}}},e.prototype._reduceMaxBufferLength=function(t){var e=this.config;e.maxMaxBufferLength>=t&&(e.maxMaxBufferLength/=2,Pt.b.warn("main:reduce max buffer length to "+e.maxMaxBufferLength+"s"),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*e.fragLoadingLoopThreshold))},e.prototype._checkBuffer=function(){var t=this.media,e=this.config;if(t&&t.readyState){var r=t.currentTime,i=this.mediaBuffer?this.mediaBuffer:t,a=i.buffered;if(!this.loadedmetadata&&a.length){this.loadedmetadata=!0;var n=t.seeking?r:this.startPosition,o=ae.isBuffered(i,n),s=a.start(0),l=!o&&Math.abs(n-s)<e.maxSeekHole;(r!==n||l)&&(Pt.b.log("target start position:"+n),l&&(n=s,Pt.b.log("target start position not buffered, seek to buffered.start(0) "+n)),Pt.b.log("adjust currentTime from "+r+" to "+n),t.currentTime=n)}else if(this.immediateSwitch)this.immediateLevelSwitchEnd();else{var u=ae.bufferInfo(t,r,0),d=!(t.paused||t.ended||0===t.buffered.length),h=r!==this.lastCurrentTime;if(h)this.stallReported&&(Pt.b.warn("playback not stuck anymore @"+r+", after "+Math.round(performance.now()-this.stalled)+"ms"),this.stallReported=!1),this.stalled=void 0,this.nudgeRetry=0;else if(d){var c=performance.now(),f=this.hls;if(this.stalled){var p=c-this.stalled,g=u.len,v=this.nudgeRetry||0;if(g<=.5&&p>1e3*e.lowBufferWatchdogPeriod){this.stallReported||(this.stallReported=!0,Pt.b.warn("playback stalling in low buffer @"+r),f.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:g}));var y=u.nextStart,m=y-r;if(y&&m<e.maxSeekHole&&m>0){this.nudgeRetry=++v;var b=v*e.nudgeOffset;Pt.b.log("adjust currentTime from "+t.currentTime+" to next buffered @ "+y+" + nudge "+b),t.currentTime=y+b,this.stalled=void 0,f.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:y+b-r})}}else if(g>.5&&p>1e3*e.highBufferWatchdogPeriod)if(this.stallReported||(this.stallReported=!0,Pt.b.warn("playback stalling in high buffer @"+r),f.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:g})),this.stalled=void 0,this.nudgeRetry=++v,v<e.nudgeMaxRetry){var E=t.currentTime,T=E+v*e.nudgeOffset;Pt.b.log("adjust currentTime from "+E+" to "+T),t.currentTime=T,f.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_NUDGE_ON_STALL,fatal:!1})}else Pt.b.error("still stuck in high buffer @"+r+" after "+e.nudgeMaxRetry+", raise fatal error"),f.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_STALLED_ERROR,fatal:!0})}else this.stalled=c,this.stallReported=!1}}}},e.prototype.onFragLoadEmergencyAborted=function(){this.state=ve.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tick()},e.prototype.onBufferFlushed=function(){var t=this.mediaBuffer?this.mediaBuffer:this.media;this._bufferedFrags=this._bufferedFrags.filter(function(e){return ae.isBuffered(t,(e.startPTS+e.endPTS)/2)}),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.state=ve.IDLE,this.fragPrevious=null},e.prototype.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},e.prototype.computeLivePosition=function(t,e){var r=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*e.targetduration;return t+Math.max(0,e.totalduration-r)},ge(e,[{key:"state",set:function(t){if(this.state!==t){var e=this.state;this._state=t,Pt.b.log("main stream:"+e+"->"+t),this.hls.trigger(Ot.a.STREAM_STATE_TRANSITION,{previousState:e,nextState:t})}},get:function(){return this._state}},{key:"currentLevel",get:function(){var t=this.media;if(t){var e=this.getBufferedFrag(t.currentTime);if(e)return e.level}return-1}},{key:"nextBufferedFrag",get:function(){var t=this.media;return t?this.followingBufferedFrag(this.getBufferedFrag(t.currentTime)):null}},{key:"nextLevel",get:function(){var t=this.nextBufferedFrag;return t?t.level:-1}},{key:"liveSyncPosition",get:function(){return this._liveSyncPosition},set:function(t){this._liveSyncPosition=t}}]),e}(Nt),me=ye,be=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Ee=function(t){function e(r){O(this,e);var i=C(this,t.call(this,r,Ot.a.MANIFEST_LOADED,Ot.a.LEVEL_LOADED,Ot.a.FRAG_LOADED,Ot.a.ERROR));return i.canload=!1,i.currentLevelIndex=null,i.manualLevelIndex=-1,i.timer=null,i}return P(e,t),e.prototype.destroy=function(){this.cleanTimer(),this.manualLevelIndex=-1},e.prototype.cleanTimer=function(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)},e.prototype.startLoad=function(){var t=this._levels;this.canload=!0,this.levelRetryCount=0,t&&t.forEach(function(t){t.loadError=0;var e=t.details;e&&e.live&&(t.details=void 0)}),null!==this.timer&&this.loadLevel()},e.prototype.stopLoad=function(){this.canload=!1},e.prototype.onManifestLoaded=function(t){var e=[],r=void 0,i={},a=null,n=!1,s=!1,l=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),u=[];if(t.levels.forEach(function(t){t.loadError=0,t.fragmentError=!1,n=n||!!t.videoCodec,s=s||!!t.audioCodec||!(!t.attrs||!t.attrs.AUDIO),!0===l&&t.audioCodec&&-1!==t.audioCodec.indexOf("mp4a.40.34")&&(t.audioCodec=void 0),a=i[t.bitrate],void 0===a?(t.url=[t.url],t.urlId=0,i[t.bitrate]=t,e.push(t)):a.url.push(t.url)}),!0===n&&!0===s&&(e=e.filter(function(t){return!!t.videoCodec})),e=e.filter(function(t){var e=t.audioCodec,r=t.videoCodec;return(!e||o(e))&&(!r||o(r))}),t.audioTracks&&(u=t.audioTracks.filter(function(t){return!t.audioCodec||o(t.audioCodec,"audio")})),e.length>0){r=e[0].bitrate,e.sort(function(t,e){return t.bitrate-e.bitrate}),this._levels=e;for(var d=0;d<e.length;d++)if(e[d].bitrate===r){this._firstLevel=d,Pt.b.log("manifest loaded,"+e.length+" level(s) found, first bitrate:"+r);break}this.hls.trigger(Ot.a.MANIFEST_PARSED,{levels:e,audioTracks:u,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:n,altAudio:u.length>0})}else this.hls.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:this.hls.url,reason:"no level with compatible codecs found in manifest"})},e.prototype.setLevelInternal=function(t){var e=this._levels,r=this.hls;if(t>=0&&t<e.length){if(this.cleanTimer(),this.currentLevelIndex!==t){Pt.b.log("switching to level "+t),this.currentLevelIndex=t;var i=e[t];i.level=t,r.trigger(Ot.a.LEVEL_SWITCH,i),r.trigger(Ot.a.LEVEL_SWITCHING,i)}var a=e[t],n=a.details;if(!n||!0===n.live){var o=a.urlId;r.trigger(Ot.a.LEVEL_LOADING,{url:a.url[o],level:t,id:o})}}else r.trigger(Ot.a.ERROR,{type:Ct.b.OTHER_ERROR,details:Ct.a.LEVEL_SWITCH_ERROR,level:t,fatal:!1,reason:"invalid level idx"})},e.prototype.onError=function(t){if(!0===t.fatal)return void(t.type===Ct.b.NETWORK_ERROR&&this.cleanTimer());var e=!1,r=!1,i=void 0;switch(t.details){case Ct.a.FRAG_LOAD_ERROR:case Ct.a.FRAG_LOAD_TIMEOUT:case Ct.a.FRAG_LOOP_LOADING_ERROR:case Ct.a.KEY_LOAD_ERROR:case Ct.a.KEY_LOAD_TIMEOUT:i=t.frag.level,r=!0;break;case Ct.a.LEVEL_LOAD_ERROR:case Ct.a.LEVEL_LOAD_TIMEOUT:i=t.context.level,e=!0;break;case Ct.a.REMUX_ALLOC_ERROR:i=t.level,e=!0}void 0!==i&&this.recoverLevel(t,i,e,r)},e.prototype.recoverLevel=function(t,e,r,i){var a=this,n=this.hls.config,o=t.details,s=this._levels[e],l=void 0,u=void 0,d=void 0;if(s.loadError++,s.fragmentError=i,!0===r){if(!(this.levelRetryCount+1<=n.levelLoadingMaxRetry))return Pt.b.error("level controller, cannot recover from "+o+" error"),this.currentLevelIndex=null,this.cleanTimer(),void(t.fatal=!0);u=Math.min(Math.pow(2,this.levelRetryCount)*n.levelLoadingRetryDelay,n.levelLoadingMaxRetryTimeout),this.timer=setTimeout(function(){return a.loadLevel()},u),t.levelRetry=!0,this.levelRetryCount++,Pt.b.warn("level controller, "+o+", retry in "+u+" ms, current retry count is "+this.levelRetryCount)}!0!==r&&!0!==i||(l=s.url.length,l>1&&s.loadError<l?(Pt.b.warn("level controller, "+o+" for level "+e+": switching to redundant stream id "+s.urlId),s.urlId=(s.urlId+1)%l,s.details=void 0):-1===this.manualLevelIndex?(d=0===e?this._levels.length-1:e-1,Pt.b.warn("level controller, "+o+": switch to "+d),this.hls.nextAutoLevel=this.currentLevelIndex=d):!0===i&&(Pt.b.warn("level controller, "+o+": reload a fragment"),this.currentLevelIndex=null))},e.prototype.onFragLoaded=function(t){var e=t.frag;if(void 0!==e&&"main"===e.type){var r=this._levels[e.level];void 0!==r&&(r.fragmentError=!1,r.loadError=0,this.levelRetryCount=0)}},e.prototype.onLevelLoaded=function(t){var e=this,r=t.level;if(r===this.currentLevelIndex){var i=this._levels[r];!1===i.fragmentError&&(i.loadError=0,this.levelRetryCount=0);var a=t.details;if(a.live){var n=1e3*(a.averagetargetduration?a.averagetargetduration:a.targetduration),o=i.details;o&&a.endSN===o.endSN&&(n/=2,Pt.b.log("same live playlist, reload twice faster")),n-=performance.now()-t.stats.trequest,n=Math.max(1e3,Math.round(n)),Pt.b.log("live playlist, reload in "+n+" ms"),this.timer=setTimeout(function(){return e.loadLevel()},n)}else this.cleanTimer()}},e.prototype.loadLevel=function(){var t=void 0,e=void 0;null!==this.currentLevelIndex&&!0===this.canload&&void 0!==(t=this._levels[this.currentLevelIndex])&&t.url.length>0&&(e=t.urlId,this.hls.trigger(Ot.a.LEVEL_LOADING,{url:t.url[e],level:this.currentLevelIndex,id:e}))},be(e,[{key:"levels",get:function(){return this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(t){var e=this._levels;e&&(t=Math.min(t,e.length-1),this.currentLevelIndex===t&&void 0!==e[t].details||this.setLevelInternal(t))}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(t){this._firstLevel=t}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var t=this.hls.config.startLevel;return void 0!==t?t:this._firstLevel}return this._startLevel},set:function(t){this._startLevel=t}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}}]),e}(Nt),Te=Ee,Re=r(3),Ae=function(t){function e(r){x(this,e);var i=F(this,t.call(this,r,Ot.a.MEDIA_ATTACHED,Ot.a.MEDIA_DETACHING,Ot.a.FRAG_PARSING_METADATA));return i.id3Track=void 0,i.media=void 0,i}return N(e,t),e.prototype.destroy=function(){Nt.prototype.destroy.call(this)},e.prototype.onMediaAttached=function(t){this.media=t.media,this.media},e.prototype.onMediaDetaching=function(){this.media=void 0},e.prototype.onFragParsingMetadata=function(t){var e=t.frag,r=t.samples;this.id3Track||(this.id3Track=this.media.addTextTrack("metadata","id3"),this.id3Track.mode="hidden");for(var i=window.WebKitDataCue||window.VTTCue||window.TextTrackCue,a=0;a<r.length;a++){var n=Re.a.getID3Frames(r[a].data);if(n){var o=r[a].pts,s=a<r.length-1?r[a+1].pts:e.endPTS;o===s&&(s+=1e-4);for(var l=0;l<n.length;l++){var u=n[l];if(!Re.a.isTimeStampFrame(u)){var d=new i(o,s,"");d.value=u,this.id3Track.addCue(d)}}}}},e}(Nt),Se=Ae,Le=function(){function t(e){U(this,t),this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=0,this.totalWeight_=0}return t.prototype.sample=function(t,e){var r=Math.pow(this.alpha_,t);this.estimate_=e*(1-r)+r*this.estimate_,this.totalWeight_+=t},t.prototype.getTotalWeight=function(){return this.totalWeight_},t.prototype.getEstimate=function(){if(this.alpha_){var t=1-Math.pow(this.alpha_,this.totalWeight_);return this.estimate_/t}return this.estimate_},t}(),_e=Le,we=function(){function t(e,r,i,a){B(this,t),this.hls=e,this.defaultEstimate_=a,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new _e(r),this.fast_=new _e(i)}return t.prototype.sample=function(t,e){t=Math.max(t,this.minDelayMs_);var r=8e3*e/t,i=t/1e3;this.fast_.sample(i,r),this.slow_.sample(i,r)},t.prototype.canEstimate=function(){var t=this.fast_;return t&&t.getTotalWeight()>=this.minWeight_},t.prototype.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.prototype.destroy=function(){},t}(),De=we,Ie=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),ke=function(t){function e(r){G(this,e);var i=j(this,t.call(this,r,Ot.a.FRAG_LOADING,Ot.a.FRAG_LOADED,Ot.a.FRAG_BUFFERED,Ot.a.ERROR));return i.lastLoadedFragLevel=0,i._nextAutoLevel=-1,i.hls=r,i.timer=null,i._bwEstimator=null,i.onCheck=i._abandonRulesCheck.bind(i),i}return H(e,t),e.prototype.destroy=function(){this.clearTimer(),Nt.prototype.destroy.call(this)},e.prototype.onFragLoading=function(t){var e=t.frag;if("main"===e.type){if(this.timer||(this.timer=setInterval(this.onCheck,100)),!this._bwEstimator){var r=this.hls,i=t.frag.level,a=r.levels[i].details.live,n=r.config,o=void 0,s=void 0;a?(o=n.abrEwmaFastLive,s=n.abrEwmaSlowLive):(o=n.abrEwmaFastVoD,s=n.abrEwmaSlowVoD),this._bwEstimator=new De(r,s,o,n.abrEwmaDefaultEstimate)}this.fragCurrent=e}},e.prototype._abandonRulesCheck=function(){var t=this.hls,e=t.media,r=this.fragCurrent,i=r.loader,a=t.minAutoLevel;if(!i||i.stats&&i.stats.aborted)return Pt.b.warn("frag loader destroy or aborted, disarm abandonRules"),this.clearTimer(),void(this._nextAutoLevel=-1);var n=i.stats;if(e&&n&&(!e.paused&&0!==e.playbackRate||!e.readyState)&&r.autoLevel&&r.level){var o=performance.now()-n.trequest,s=Math.abs(e.playbackRate);if(o>500*r.duration/s){var l=t.levels,u=Math.max(1,n.bw?n.bw/8:1e3*n.loaded/o),d=l[r.level],h=d.realBitrate?Math.max(d.realBitrate,d.bitrate):d.bitrate,c=n.total?n.total:Math.max(n.loaded,Math.round(r.duration*h/8)),f=e.currentTime,p=(c-n.loaded)/u,g=(ae.bufferInfo(e,f,t.config.maxBufferHole).end-f)/s;if(g<2*r.duration/s&&p>g){var v=void 0,y=void 0;for(y=r.level-1;y>a;y--){var m=l[y].realBitrate?Math.max(l[y].realBitrate,l[y].bitrate):l[y].bitrate;if((v=r.duration*m/(6.4*u))<g)break}v<p&&(Pt.b.warn("loading too slow, abort fragment loading and switch to level "+y+":fragLoadedDelay["+y+"]<fragLoadedDelay["+(r.level-1)+"];bufferStarvationDelay:"+v.toFixed(1)+"<"+p.toFixed(1)+":"+g.toFixed(1)),t.nextLoadLevel=y,this._bwEstimator.sample(o,n.loaded),i.abort(),this.clearTimer(),t.trigger(Ot.a.FRAG_LOAD_EMERGENCY_ABORTED,{frag:r,stats:n}))}}}},e.prototype.onFragLoaded=function(t){var e=t.frag;if("main"===e.type&&!isNaN(e.sn)){if(this.clearTimer(),this.lastLoadedFragLevel=e.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var r=this.hls.levels[e.level],i=(r.loaded?r.loaded.bytes:0)+t.stats.loaded,a=(r.loaded?r.loaded.duration:0)+t.frag.duration;r.loaded={bytes:i,duration:a},r.realBitrate=Math.round(8*i/a)}if(t.frag.bitrateTest){var n=t.stats;n.tparsed=n.tbuffered=n.tload,this.onFragBuffered(t)}}},e.prototype.onFragBuffered=function(t){var e=t.stats,r=t.frag;if(!(!0===e.aborted||1!==r.loadCounter||"main"!==r.type||isNaN(r.sn)||r.bitrateTest&&e.tload!==e.tbuffered)){var i=e.tparsed-e.trequest;Pt.b.log("latency/loading/parsing/append/kbps:"+Math.round(e.tfirst-e.trequest)+"/"+Math.round(e.tload-e.tfirst)+"/"+Math.round(e.tparsed-e.tload)+"/"+Math.round(e.tbuffered-e.tparsed)+"/"+Math.round(8*e.loaded/(e.tbuffered-e.trequest))),this._bwEstimator.sample(i,e.loaded),e.bwEstimate=this._bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=i/1e3:this.bitrateTestDelay=0}},e.prototype.onError=function(t){switch(t.details){case Ct.a.FRAG_LOAD_ERROR:case Ct.a.FRAG_LOAD_TIMEOUT:this.clearTimer()}},e.prototype.clearTimer=function(){clearInterval(this.timer),this.timer=null},e.prototype._findBestLevel=function(t,e,r,i,a,n,o,s,l){for(var u=a;u>=i;u--){var d=l[u],h=d.details,c=h?h.totalduration/h.fragments.length:e,f=!!h&&h.live,p=void 0;p=u<=t?o*r:s*r;var g=l[u].realBitrate?Math.max(l[u].realBitrate,l[u].bitrate):l[u].bitrate,v=g*c/p;if(Pt.b.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+u+"/"+Math.round(p)+"/"+g+"/"+c+"/"+n+"/"+v),p>g&&(!v||f&&!this.bitrateTestDelay||v<n))return u}return-1},Ie(e,[{key:"nextAutoLevel",get:function(){var t=this._nextAutoLevel,e=this._bwEstimator;if(!(-1===t||e&&e.canEstimate()))return t;var r=this._nextABRAutoLevel;return-1!==t&&(r=Math.min(t,r)),r},set:function(t){this._nextAutoLevel=t}},{key:"_nextABRAutoLevel",get:function(){var t=this.hls,e=t.maxAutoLevel,r=t.levels,i=t.config,a=t.minAutoLevel,n=t.media,o=this.lastLoadedFragLevel,s=this.fragCurrent?this.fragCurrent.duration:0,l=n?n.currentTime:0,u=n&&0!==n.playbackRate?Math.abs(n.playbackRate):1,d=this._bwEstimator?this._bwEstimator.getEstimate():i.abrEwmaDefaultEstimate,h=(ae.bufferInfo(n,l,i.maxBufferHole).end-l)/u,c=this._findBestLevel(o,s,d,a,e,h,i.abrBandWidthFactor,i.abrBandWidthUpFactor,r);if(c>=0)return c;Pt.b.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");var f=s?Math.min(s,i.maxStarvationDelay):i.maxStarvationDelay,p=i.abrBandWidthFactor,g=i.abrBandWidthUpFactor;if(0===h){var v=this.bitrateTestDelay;if(v){f=(s?Math.min(s,i.maxLoadingDelay):i.maxLoadingDelay)-v,Pt.b.trace("bitrate test took "+Math.round(1e3*v)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*f)+" ms"),p=g=1}}return c=this._findBestLevel(o,s,d,a,e,h+f,p,g,r),Math.max(c,0)}}]),e}(Nt),Oe=ke,Ce=y(),Pe=function(t){function e(r){K(this,e);var i=W(this,t.call(this,r,Ot.a.MEDIA_ATTACHING,Ot.a.MEDIA_DETACHING,Ot.a.MANIFEST_PARSED,Ot.a.BUFFER_RESET,Ot.a.BUFFER_APPENDING,Ot.a.BUFFER_CODECS,Ot.a.BUFFER_EOS,Ot.a.BUFFER_FLUSHING,Ot.a.LEVEL_PTS_UPDATED,Ot.a.LEVEL_UPDATED));return i._msDuration=null,i._levelDuration=null,i._live=null,i._objectUrl=null,i.onsbue=i.onSBUpdateEnd.bind(i),i.onsbe=i.onSBUpdateError.bind(i),i.pendingTracks={},i.tracks={},i}return V(e,t),e.prototype.destroy=function(){Nt.prototype.destroy.call(this)},e.prototype.onLevelPtsUpdated=function(t){var e=t.type,r=this.tracks.audio;if("audio"===e&&r&&"audio/mpeg"===r.container){var i=this.sourceBuffer.audio;if(Math.abs(i.timestampOffset-t.start)>.1){var a=i.updating;try{i.abort()}catch(t){a=!0,Pt.b.warn("can not abort audio buffer: "+t)}a?this.audioTimestampOffset=t.start:(Pt.b.warn("change mpeg audio timestamp offset from "+i.timestampOffset+" to "+t.start),i.timestampOffset=t.start)}}},e.prototype.onManifestParsed=function(t){var e=t.audio,r=t.video||t.levels.length&&t.audio,i=0;t.altAudio&&(e||r)&&(i=(e?1:0)+(r?1:0),Pt.b.log(i+" sourceBuffer(s) expected")),this.sourceBufferNb=i},e.prototype.onMediaAttaching=function(t){var e=this.media=t.media;if(e){var r=this.mediaSource=new Ce;this.onmso=this.onMediaSourceOpen.bind(this),this.onmse=this.onMediaSourceEnded.bind(this),this.onmsc=this.onMediaSourceClose.bind(this),r.addEventListener("sourceopen",this.onmso),r.addEventListener("sourceended",this.onmse),r.addEventListener("sourceclose",this.onmsc),e.src=URL.createObjectURL(r),this._objectUrl=e.src}},e.prototype.onMediaDetaching=function(){Pt.b.log("media source detaching");var t=this.mediaSource;if(t){if("open"===t.readyState)try{t.endOfStream()}catch(t){Pt.b.warn("onMediaDetaching:"+t.message+" while calling endOfStream")}t.removeEventListener("sourceopen",this.onmso),t.removeEventListener("sourceended",this.onmse),t.removeEventListener("sourceclose",this.onmsc),this.media&&(URL.revokeObjectURL(this._objectUrl),this.media.src===this._objectUrl?(this.media.removeAttribute("src"),this.media.load()):Pt.b.warn("media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.pendingTracks={},this.tracks={},this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0}this.onmso=this.onmse=this.onmsc=null,this.hls.trigger(Ot.a.MEDIA_DETACHED)},e.prototype.onMediaSourceOpen=function(){Pt.b.log("media source opened"),this.hls.trigger(Ot.a.MEDIA_ATTACHED,{media:this.media});var t=this.mediaSource;t&&t.removeEventListener("sourceopen",this.onmso),this.checkPendingTracks()},e.prototype.checkPendingTracks=function(){var t=this.pendingTracks,e=Object.keys(t).length;e&&(this.sourceBufferNb<=e||0===this.sourceBufferNb)&&(this.createSourceBuffers(t),this.pendingTracks={},this.doAppending())},e.prototype.onMediaSourceClose=function(){Pt.b.log("media source closed")},e.prototype.onMediaSourceEnded=function(){Pt.b.log("media source ended")},e.prototype.onSBUpdateEnd=function(){if(this.audioTimestampOffset){var t=this.sourceBuffer.audio;Pt.b.warn("change mpeg audio timestamp offset from "+t.timestampOffset+" to "+this.audioTimestampOffset),t.timestampOffset=this.audioTimestampOffset,delete this.audioTimestampOffset}this._needsFlush&&this.doFlush(),this._needsEos&&this.checkEos(),this.appending=!1;var e=this.parent,r=this.segments.reduce(function(t,r){return r.parent===e?t+1:t},0);this.hls.trigger(Ot.a.BUFFER_APPENDED,{parent:e,pending:r}),this._needsFlush||this.doAppending(),this.updateMediaElementDuration()},e.prototype.onSBUpdateError=function(t){Pt.b.error("sourceBuffer error:",t),this.hls.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferReset=function(){var t=this.sourceBuffer;for(var e in t){var r=t[e];try{this.mediaSource.removeSourceBuffer(r),r.removeEventListener("updateend",this.onsbue),r.removeEventListener("error",this.onsbe)}catch(t){}}this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0},e.prototype.onBufferCodecs=function(t){if(0===Object.keys(this.sourceBuffer).length){for(var e in t)this.pendingTracks[e]=t[e];var r=this.mediaSource;r&&"open"===r.readyState&&this.checkPendingTracks()}},e.prototype.createSourceBuffers=function(t){var e=this.sourceBuffer,r=this.mediaSource;for(var i in t)if(!e[i]){var a=t[i],n=a.levelCodec||a.codec,o=a.container+";codecs="+n;Pt.b.log("creating sourceBuffer("+o+")");try{var s=e[i]=r.addSourceBuffer(o);s.addEventListener("updateend",this.onsbue),s.addEventListener("error",this.onsbe),this.tracks[i]={codec:n,container:a.container},a.buffer=s}catch(t){Pt.b.error("error while trying to add sourceBuffer:"+t.message),this.hls.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_ADD_CODEC_ERROR,fatal:!1,err:t,mimeType:o})}}this.hls.trigger(Ot.a.BUFFER_CREATED,{tracks:t})},e.prototype.onBufferAppending=function(t){this._needsFlush||(this.segments?this.segments.push(t):this.segments=[t],this.doAppending())},e.prototype.onBufferAppendFail=function(t){Pt.b.error("sourceBuffer error:",t.event),this.hls.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferEos=function(t){var e=this.sourceBuffer,r=t.type;for(var i in e)r&&i!==r||e[i].ended||(e[i].ended=!0,Pt.b.log(i+" sourceBuffer now EOS"));this.checkEos()},e.prototype.checkEos=function(){var t=this.sourceBuffer,e=this.mediaSource;if(!e||"open"!==e.readyState)return void(this._needsEos=!1);for(var r in t){var i=t[r];if(!i.ended)return;if(i.updating)return void(this._needsEos=!0)}Pt.b.log("all media data available, signal endOfStream() to MediaSource and stop loading fragment");try{e.endOfStream()}catch(t){Pt.b.warn("exception while calling mediaSource.endOfStream()")}this._needsEos=!1},e.prototype.onBufferFlushing=function(t){this.flushRange.push({start:t.startOffset,end:t.endOffset,type:t.type}),this.flushBufferCounter=0,this.doFlush()},e.prototype.onLevelUpdated=function(t){var e=t.details;e.fragments.length>0&&(this._levelDuration=e.totalduration+e.fragments[0].start,this._live=e.live,this.updateMediaElementDuration())},e.prototype.updateMediaElementDuration=function(){var t=this.hls.config,e=void 0;if(null!==this._levelDuration&&this.media&&this.mediaSource&&this.sourceBuffer&&0!==this.media.readyState&&"open"===this.mediaSource.readyState){for(var r in this.sourceBuffer)if(!0===this.sourceBuffer[r].updating)return;e=this.media.duration,null===this._msDuration&&(this._msDuration=this.mediaSource.duration),!0===this._live&&!0===t.liveDurationInfinity?(Pt.b.log("Media Source duration is set to Infinity"),this._msDuration=this.mediaSource.duration=1/0):(this._levelDuration>this._msDuration&&this._levelDuration>e||e===1/0||isNaN(e))&&(Pt.b.log("Updating Media Source duration to "+this._levelDuration.toFixed(3)),this._msDuration=this.mediaSource.duration=this._levelDuration)}},e.prototype.doFlush=function(){for(;this.flushRange.length;){var t=this.flushRange[0];if(!this.flushBuffer(t.start,t.end,t.type))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var e=0,r=this.sourceBuffer;try{for(var i in r)e+=r[i].buffered.length}catch(t){Pt.b.error("error while accessing sourceBuffer.buffered")}this.appended=e,this.hls.trigger(Ot.a.BUFFER_FLUSHED)}},e.prototype.doAppending=function(){var t=this.hls,e=this.sourceBuffer,r=this.segments;if(Object.keys(e).length){if(this.media.error)return this.segments=[],void Pt.b.error("trying to append although a media error occured, flush segment and abort");if(this.appending)return;if(r&&r.length){var i=r.shift();try{var a=i.type,n=e[a];n?n.updating?r.unshift(i):(n.ended=!1,this.parent=i.parent,n.appendBuffer(i.data),this.appendError=0,this.appended++,this.appending=!0):this.onSBUpdateEnd()}catch(e){Pt.b.error("error while trying to append buffer:"+e.message),r.unshift(i);var o={type:Ct.b.MEDIA_ERROR,parent:i.parent};if(22===e.code)return this.segments=[],o.details=Ct.a.BUFFER_FULL_ERROR,o.fatal=!1,void t.trigger(Ot.a.ERROR,o);if(this.appendError?this.appendError++:this.appendError=1,o.details=Ct.a.BUFFER_APPEND_ERROR,this.appendError>t.config.appendErrorMaxRetry)return Pt.b.log("fail "+t.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),r=[],o.fatal=!0,void t.trigger(Ot.a.ERROR,o);o.fatal=!1,t.trigger(Ot.a.ERROR,o)}}}},e.prototype.flushBuffer=function(t,e,r){var i,a,n,o,s,l,u=this.sourceBuffer;if(Object.keys(u).length){if(Pt.b.log("flushBuffer,pos/start/end: "+this.media.currentTime.toFixed(3)+"/"+t+"/"+e),this.flushBufferCounter<this.appended){for(var d in u)if(!r||d===r){if(i=u[d],i.ended=!1,i.updating)return Pt.b.warn("cannot flush, sb updating in progress"),!1;try{for(a=0;a<i.buffered.length;a++)if(n=i.buffered.start(a),o=i.buffered.end(a),-1!==navigator.userAgent.toLowerCase().indexOf("firefox")&&e===Number.POSITIVE_INFINITY?(s=t,l=e):(s=Math.max(n,t),l=Math.min(o,e)),Math.min(l,o)-s>.5)return this.flushBufferCounter++,Pt.b.log("flush "+d+" ["+s+","+l+"], of ["+n+","+o+"], pos:"+this.media.currentTime),i.remove(s,l),!1}catch(t){Pt.b.warn("exception while accessing sourcebuffer, it might have been removed from MediaSource")}}}else Pt.b.warn("abort flushing too many retries");Pt.b.log("buffer flushed")}return!0},e}(Nt),xe=Pe,Fe=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Ne=function(t){function e(r){return Y(this,e),z(this,t.call(this,r,Ot.a.FPS_DROP_LEVEL_CAPPING,Ot.a.MEDIA_ATTACHING,Ot.a.MANIFEST_PARSED))}return X(e,t),e.prototype.destroy=function(){this.hls.config.capLevelToPlayerSize&&(this.media=this.restrictedLevels=null,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(this.timer=clearInterval(this.timer)))},e.prototype.onFpsDropLevelCapping=function(t){e.isLevelAllowed(t.droppedLevel,this.restrictedLevels)&&this.restrictedLevels.push(t.droppedLevel)},e.prototype.onMediaAttaching=function(t){this.media=t.media instanceof HTMLVideoElement?t.media:null},e.prototype.onManifestParsed=function(t){var e=this.hls;this.restrictedLevels=[],e.config.capLevelToPlayerSize&&(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.levels=t.levels,e.firstLevel=this.getMaxLevel(t.firstLevel),clearInterval(this.timer),this.timer=setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},e.prototype.detectPlayerSize=function(){if(this.media){var t=this.levels?this.levels.length:0;if(t){var e=this.hls;e.autoLevelCapping=this.getMaxLevel(t-1),e.autoLevelCapping>this.autoLevelCapping&&e.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}},e.prototype.getMaxLevel=function(t){var r=this;if(!this.levels)return-1;var i=this.levels.filter(function(i,a){return e.isLevelAllowed(a,r.restrictedLevels)&&a<=t});return e.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)},e.isLevelAllowed=function(t){return-1===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).indexOf(t)},e.getMaxLevelByMediaSize=function(t,e,r){if(!t||t&&!t.length)return-1;for(var i=t.length-1,a=0;a<t.length;a+=1){var n=t[a];if((n.width>=e||n.height>=r)&&function(t,e){return!e||(t.width!==e.width||t.height!==e.height)}(n,t[a+1])){i=a;break}}return i},Fe(e,[{key:"mediaWidth",get:function(){var t=void 0,r=this.media;return r&&(t=r.width||r.clientWidth||r.offsetWidth,t*=e.contentScaleFactor),t}},{key:"mediaHeight",get:function(){var t=void 0,r=this.media;return r&&(t=r.height||r.clientHeight||r.offsetHeight,t*=e.contentScaleFactor),t}}],[{key:"contentScaleFactor",get:function(){var t=1;try{t=window.devicePixelRatio}catch(t){}return t}}]),e}(Nt),Me=Ne,Ue=function(t){function e(r){return q(this,e),Q(this,t.call(this,r,Ot.a.MEDIA_ATTACHING))}return J(e,t),e.prototype.destroy=function(){this.timer&&clearInterval(this.timer),this.isVideoPlaybackQualityAvailable=!1},e.prototype.onMediaAttaching=function(t){var e=this.hls.config;if(e.capLevelOnFPSDrop){"function"==typeof(this.video=t.media instanceof HTMLVideoElement?t.media:null).getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),clearInterval(this.timer),this.timer=setInterval(this.checkFPSInterval.bind(this),e.fpsDroppedMonitoringPeriod)}},e.prototype.checkFPS=function(t,e,r){var i=performance.now();if(e){if(this.lastTime){var a=i-this.lastTime,n=r-this.lastDroppedFrames,o=e-this.lastDecodedFrames,s=1e3*n/a,l=this.hls;if(l.trigger(Ot.a.FPS_DROP,{currentDropped:n,currentDecoded:o,totalDroppedFrames:r}),s>0&&n>l.config.fpsDroppedMonitoringThreshold*o){var u=l.currentLevel;Pt.b.warn("drop FPS ratio greater than max allowed value for currentLevel: "+u),u>0&&(-1===l.autoLevelCapping||l.autoLevelCapping>=u)&&(u-=1,l.trigger(Ot.a.FPS_DROP_LEVEL_CAPPING,{level:u,droppedLevel:l.currentLevel}),l.autoLevelCapping=u,l.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=r,this.lastDecodedFrames=e}},e.prototype.checkFPSInterval=function(){var t=this.video;if(t)if(this.isVideoPlaybackQualityAvailable){var e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)},e}(Nt),Be=Ue,Ge=function(){function t(e){$(this,t),e&&e.xhrSetup&&(this.xhrSetup=e.xhrSetup)}return t.prototype.destroy=function(){this.abort(),this.loader=null},t.prototype.abort=function(){var t=this.loader;t&&4!==t.readyState&&(this.stats.aborted=!0,t.abort()),window.clearTimeout(this.requestTimeout),this.requestTimeout=null,window.clearTimeout(this.retryTimeout),this.retryTimeout=null},t.prototype.load=function(t,e,r){this.context=t,this.config=e,this.callbacks=r,this.stats={trequest:performance.now(),retry:0},this.retryDelay=e.retryDelay,this.loadInternal()},t.prototype.loadInternal=function(){var t,e=this.context;t=this.loader=new XMLHttpRequest;var r=this.stats;r.tfirst=0,r.loaded=0;var i=this.xhrSetup;try{if(i)try{i(t,e.url)}catch(r){t.open("GET",e.url,!0),i(t,e.url)}t.readyState||t.open("GET",e.url,!0)}catch(r){return void this.callbacks.onError({code:t.status,text:r.message},e,t)}e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),this.config.timeout),t.send()},t.prototype.readystatechange=function(t){var e=t.currentTarget,r=e.readyState,i=this.stats,a=this.context,n=this.config;if(!i.aborted&&r>=2)if(window.clearTimeout(this.requestTimeout),0===i.tfirst&&(i.tfirst=Math.max(performance.now(),i.trequest)),4===r){var o=e.status;if(o>=200&&o<300){i.tload=Math.max(i.tfirst,performance.now());var s=void 0,l=void 0;"arraybuffer"===a.responseType?(s=e.response,l=s.byteLength):(s=e.responseText,l=s.length),i.loaded=i.total=l;var u={url:e.responseURL,data:s};this.callbacks.onSuccess(u,i,a,e)}else i.retry>=n.maxRetry||o>=400&&o<499?(Pt.b.error(o+" while loading "+a.url),this.callbacks.onError({code:o,text:e.statusText},a,e)):(Pt.b.warn(o+" while loading "+a.url+", retrying in "+this.retryDelay+"..."),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,n.maxRetryDelay),i.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),n.timeout)},t.prototype.loadtimeout=function(){Pt.b.warn("timeout while loading "+this.context.url),this.callbacks.onTimeout(this.stats,this.context,null)},t.prototype.loadprogress=function(t){var e=t.currentTarget,r=this.stats;r.loaded=t.loaded,t.lengthComputable&&(r.total=t.total);var i=this.callbacks.onProgress;i&&i(r,this.context,null,e)},t}(),je=Ge,He=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Ke=function(t){function e(r){Z(this,e);var i=tt(this,t.call(this,r,Ot.a.MANIFEST_LOADING,Ot.a.MANIFEST_PARSED,Ot.a.AUDIO_TRACK_LOADED,Ot.a.ERROR));return i.ticks=0,i.ontick=i.tick.bind(i),i}return et(e,t),e.prototype.destroy=function(){this.cleanTimer(),Nt.prototype.destroy.call(this)},e.prototype.cleanTimer=function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){this.updateTrack(this.trackId)},e.prototype.onError=function(t){t.fatal&&t.type===Ct.b.NETWORK_ERROR&&this.cleanTimer()},e.prototype.onManifestLoading=function(){this.tracks=[],this.trackId=-1},e.prototype.onManifestParsed=function(t){var e=this,r=t.audioTracks||[],i=!1;this.tracks=r,this.hls.trigger(Ot.a.AUDIO_TRACKS_UPDATED,{audioTracks:r});var a=0;r.forEach(function(t){if(t.default&&!i)return e.audioTrack=a,void(i=!0);a++}),!1===i&&r.length&&(Pt.b.log("no default audio track defined, use first audio track as default"),this.audioTrack=0)},e.prototype.onAudioTrackLoaded=function(t){t.id<this.tracks.length&&(Pt.b.log("audioTrack "+t.id+" loaded"),this.tracks[t.id].details=t.details,t.details.live&&!this.timer&&(this.timer=setInterval(this.ontick,1e3*t.details.targetduration)),!t.details.live&&this.timer&&this.cleanTimer())},e.prototype.setAudioTrackInternal=function(t){if(t>=0&&t<this.tracks.length){this.cleanTimer(),this.trackId=t,Pt.b.log("switching to audioTrack "+t);var e=this.tracks[t],r=this.hls,i=e.type,a=e.url,n={id:t,type:i,url:a};r.trigger(Ot.a.AUDIO_TRACK_SWITCH,n),r.trigger(Ot.a.AUDIO_TRACK_SWITCHING,n);var o=e.details;!a||void 0!==o&&!0!==o.live||(Pt.b.log("(re)loading playlist for audioTrack "+t),r.trigger(Ot.a.AUDIO_TRACK_LOADING,{url:a,id:t}))}},e.prototype.updateTrack=function(t){if(t>=0&&t<this.tracks.length){this.cleanTimer(),this.trackId=t,Pt.b.log("updating audioTrack "+t);var e=this.tracks[t],r=e.url,i=e.details;!r||void 0!==i&&!0!==i.live||(Pt.b.log("(re)loading playlist for audioTrack "+t),this.hls.trigger(Ot.a.AUDIO_TRACK_LOADING,{url:r,id:t}))}},He(e,[{key:"audioTracks",get:function(){return this.tracks}},{key:"audioTrack",get:function(){return this.trackId},set:function(t){this.trackId===t&&void 0!==this.tracks[t].details||this.setAudioTrackInternal(t)}}]),e}(Nt),We=Ke,Ve=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Ye={STOPPED:"STOPPED",STARTING:"STARTING",IDLE:"IDLE",PAUSED:"PAUSED",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",BUFFER_FLUSHING:"BUFFER_FLUSHING",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS"},ze=function(t){function e(r){rt(this,e);var i=it(this,t.call(this,r,Ot.a.MEDIA_ATTACHED,Ot.a.MEDIA_DETACHING,Ot.a.AUDIO_TRACKS_UPDATED,Ot.a.AUDIO_TRACK_SWITCHING,Ot.a.AUDIO_TRACK_LOADED,Ot.a.KEY_LOADED,Ot.a.FRAG_LOADED,Ot.a.FRAG_PARSING_INIT_SEGMENT,Ot.a.FRAG_PARSING_DATA,Ot.a.FRAG_PARSED,Ot.a.ERROR,Ot.a.BUFFER_RESET,Ot.a.BUFFER_CREATED,Ot.a.BUFFER_APPENDED,Ot.a.BUFFER_FLUSHED,Ot.a.INIT_PTS_FOUND));return i.config=r.config,i.audioCodecSwap=!1,i.ticks=0,i._state=Ye.STOPPED,i.ontick=i.tick.bind(i),i.initPTS=[],i.waitingFragment=null,i.videoTrackCC=null,i}return at(e,t),e.prototype.destroy=function(){this.stopLoad(),this.timer&&(clearInterval(this.timer),this.timer=null),Nt.prototype.destroy.call(this),this.state=Ye.STOPPED},e.prototype.onInitPtsFound=function(t){var e=t.id,r=t.frag.cc,i=t.initPTS;"main"===e&&(this.initPTS[r]=i,this.videoTrackCC=r,Pt.b.log("InitPTS for cc:"+r+" found from video track:"+i),this.state===Ye.WAITING_INIT_PTS&&this.tick())},e.prototype.startLoad=function(t){if(this.tracks){var e=this.lastCurrentTime;this.stopLoad(),this.timer||(this.timer=setInterval(this.ontick,100)),this.fragLoadError=0,e>0&&-1===t?(Pt.b.log("audio:override startPosition with lastCurrentTime @"+e.toFixed(3)),this.state=Ye.IDLE):(this.lastCurrentTime=this.startPosition?this.startPosition:t,this.state=Ye.STARTING),this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else this.startPosition=t,this.state=Ye.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=Ye.STOPPED},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){var t,e,r,i=this.hls,a=i.config;switch(this.state){case Ye.ERROR:case Ye.PAUSED:case Ye.BUFFER_FLUSHING:break;case Ye.STARTING:this.state=Ye.WAITING_TRACK,this.loadedmetadata=!1;break;case Ye.IDLE:var n=this.tracks;if(!n)break;if(!this.media&&(this.startFragRequested||!a.startFragPrefetch))break;if(this.loadedmetadata)t=this.media.currentTime;else if(void 0===(t=this.nextLoadPosition))break;var o=this.mediaBuffer?this.mediaBuffer:this.media,s=this.videoBuffer?this.videoBuffer:this.media,l=ae.bufferInfo(o,t,a.maxBufferHole),u=ae.bufferInfo(s,t,a.maxBufferHole),d=l.len,h=l.end,c=this.fragPrevious,f=Math.max(a.maxBufferLength,u.len),p=this.audioSwitch,g=this.trackId;if((d<f||p)&&g<n.length){if(void 0===(r=n[g].details)){this.state=Ye.WAITING_TRACK;break}if(!p&&!r.live&&c&&c.sn===r.endSN&&!l.nextStart&&(!this.media.seeking||this.media.duration-h<c.duration/2)){this.hls.trigger(Ot.a.BUFFER_EOS,{type:"audio"}),this.state=Ye.ENDED;break}var v=r.fragments,y=v.length,m=v[0].start,b=v[y-1].start+v[y-1].duration,E=void 0;if(p)if(r.live&&!r.PTSKnown)Pt.b.log("switching audiotrack, live stream, unknown PTS,load first fragment"),h=0;else if(h=t,r.PTSKnown&&t<m){if(!(l.end>m||l.nextStart))return;Pt.b.log("alt audio track ahead of main track, seek to start of alt audio track"),this.media.currentTime=m+.05}if(r.initSegment&&!r.initSegment.data)E=r.initSegment;else if(h<=m){if(E=v[0],null!==this.videoTrackCC&&E.cc!==this.videoTrackCC&&(E=A(v,this.videoTrackCC)),r.live&&E.loadIdx&&E.loadIdx===this.fragLoadIdx){var T=l.nextStart?l.nextStart:m;return Pt.b.log("no alt audio available @currentTime:"+this.media.currentTime+", seeking @"+(T+.05)),void(this.media.currentTime=T+.05)}}else{var R=void 0,S=a.maxFragLookUpTolerance,L=c?v[c.sn-v[0].sn+1]:void 0,_=function(t){var e=Math.min(S,t.duration);return t.start+t.duration-e<=h?1:t.start-e>h&&t.start?-1:0};h<b?(h>b-S&&(S=0),R=L&&!_(L)?L:re.search(v,_)):R=v[y-1],R&&(E=R,m=R.start,c&&E.level===c.level&&E.sn===c.sn&&(E.sn<r.endSN?(E=v[E.sn+1-r.startSN],Pt.b.log("SN just loaded, load next one: "+E.sn)):E=null))}if(E)if(E.decryptdata&&null!=E.decryptdata.uri&&null==E.decryptdata.key)Pt.b.log("Loading key for "+E.sn+" of ["+r.startSN+" ,"+r.endSN+"],track "+g),this.state=Ye.KEY_LOADING,i.trigger(Ot.a.KEY_LOADING,{frag:E});else{if(Pt.b.log("Loading "+E.sn+", cc: "+E.cc+" of ["+r.startSN+" ,"+r.endSN+"],track "+g+", currentTime:"+t+",bufferEnd:"+h.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,E.loadCounter){E.loadCounter++;var w=a.fragLoadingLoopThreshold;if(E.loadCounter>w&&Math.abs(this.fragLoadIdx-E.loadIdx)<w)return void i.trigger(Ot.a.ERROR,{type:Ct.b.MEDIA_ERROR,details:Ct.a.FRAG_LOOP_LOADING_ERROR,fatal:!1,frag:E})}else E.loadCounter=1;E.loadIdx=this.fragLoadIdx,this.fragCurrent=E,this.startFragRequested=!0,isNaN(E.sn)||(this.nextLoadPosition=E.start+E.duration),i.trigger(Ot.a.FRAG_LOADING,{frag:E}),this.state=Ye.FRAG_LOADING}}break;case Ye.WAITING_TRACK:e=this.tracks[this.trackId],e&&e.details&&(this.state=Ye.IDLE);break;case Ye.FRAG_LOADING_WAITING_RETRY:var D=performance.now(),I=this.retryDate;o=this.media;var k=o&&o.seeking;(!I||D>=I||k)&&(Pt.b.log("audioStreamController: retryDate reached, switch back to IDLE state"),this.state=Ye.IDLE);break;case Ye.WAITING_INIT_PTS:var O=this.videoTrackCC;if(void 0===this.initPTS[O])break;var C=this.waitingFragment;if(C){var P=C.frag.cc;O!==P?(e=this.tracks[this.trackId],e.details&&e.details.live&&(Pt.b.warn("Waiting fragment CC ("+P+") does not match video track CC ("+O+")"),this.waitingFragment=null,this.state=Ye.IDLE)):(this.state=Ye.FRAG_LOADING,this.onFragLoaded(this.waitingFragment),this.waitingFragment=null)}else this.state=Ye.IDLE;break;case Ye.STOPPED:case Ye.FRAG_LOADING:case Ye.PARSING:case Ye.PARSED:case Ye.ENDED:}},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("ended",this.onvended);var r=this.config;this.tracks&&r.autoStartLoad&&this.startLoad(r.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(Pt.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.tracks;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.loadCounter=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){this.state===Ye.ENDED&&(this.state=Ye.IDLE),this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()},e.prototype.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},e.prototype.onAudioTracksUpdated=function(t){Pt.b.log("audio tracks updated"),this.tracks=t.audioTracks},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url;this.trackId=t.id,this.fragCurrent=null,this.state=Ye.PAUSED,this.waitingFragment=null,e?this.timer||(this.timer=setInterval(this.ontick,100)):this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),e&&(this.audioSwitch=!0,this.state=Ye.IDLE,void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold)),this.tick()},e.prototype.onAudioTrackLoaded=function(t){var e=t.details,r=t.id,i=this.tracks[r],a=e.totalduration,n=0;if(Pt.b.log("track "+r+" loaded ["+e.startSN+","+e.endSN+"],duration:"+a),e.live){var o=i.details;o&&e.fragments.length>0?(T(o,e),n=e.fragments[0].start,e.PTSKnown?Pt.b.log("live audio playlist sliding:"+n.toFixed(3)):Pt.b.log("live audio playlist - outdated PTS, unknown sliding")):(e.PTSKnown=!1,Pt.b.log("live audio playlist - first load, unknown sliding"))}else e.PTSKnown=!1;if(i.details=e,!this.startFragRequested){if(-1===this.startPosition){var s=e.startTimeOffset;isNaN(s)?this.startPosition=0:(Pt.b.log("start time offset found in playlist, adjust startPosition to "+s),this.startPosition=s)}this.nextLoadPosition=this.startPosition}this.state===Ye.WAITING_TRACK&&(this.state=Ye.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===Ye.KEY_LOADING&&(this.state=Ye.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag;if(this.state===Ye.FRAG_LOADING&&e&&"audio"===r.type&&r.level===e.level&&r.sn===e.sn){var i=this.tracks[this.trackId],a=i.details,n=a.totalduration,o=e.level,s=e.sn,l=e.cc,u=this.config.defaultAudioCodec||i.audioCodec||"mp4a.40.2",d=this.stats=t.stats;if("initSegment"===s)this.state=Ye.IDLE,d.tparsed=d.tbuffered=performance.now(),a.initSegment.data=t.payload,this.hls.trigger(Ot.a.FRAG_BUFFERED,{stats:d,frag:e,id:"audio"}),this.tick();else{this.state=Ye.PARSING,this.appended=!1,this.demuxer||(this.demuxer=new ce(this.hls,"audio"));var h=this.initPTS[l],c=a.initSegment?a.initSegment.data:[];if(a.initSegment||void 0!==h){this.pendingBuffering=!0,Pt.b.log("Demuxing "+s+" of ["+a.startSN+" ,"+a.endSN+"],track "+o);this.demuxer.push(t.payload,c,u,null,e,n,!1,h)}else Pt.b.log("unknown video PTS for continuity counter "+l+", waiting for video PTS before demuxing audio frag "+s+" of ["+a.startSN+" ,"+a.endSN+"],track "+o),this.waitingFragment=t,this.state=Ye.WAITING_INIT_PTS}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,r=t.frag;if(e&&"audio"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===Ye.PARSING){var i=t.tracks,a=void 0;if(i.video&&delete i.video,a=i.audio){a.levelCodec=a.codec,a.id=t.id,this.hls.trigger(Ot.a.BUFFER_CODECS,i),Pt.b.log("audio track:audio,container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var n=a.initSegment;if(n){var o={type:"audio",data:n,parent:"audio",content:"initSegment"};this.audioSwitch?this.pendingData=[o]:(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(Ot.a.BUFFER_APPENDING,o))}this.tick()}}},e.prototype.onFragParsingData=function(t){var e=this,r=this.fragCurrent,i=t.frag;if(r&&"audio"===t.id&&"audio"===t.type&&i.sn===r.sn&&i.level===r.level&&this.state===Ye.PARSING){var a=this.trackId,n=this.tracks[a],o=this.hls;isNaN(t.endPTS)&&(t.endPTS=t.startPTS+r.duration,t.endDTS=t.startDTS+r.duration),Pt.b.log("parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb),E(n.details,r,t.startPTS,t.endPTS);var s=this.audioSwitch,l=this.media,u=!1;if(s&&l)if(l.readyState){var d=l.currentTime;Pt.b.log("switching audio track : currentTime:"+d),d>=t.startPTS&&(Pt.b.log("switching audio track : flushing all audio"),this.state=Ye.BUFFER_FLUSHING,o.trigger(Ot.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),u=!0,this.audioSwitch=!1,o.trigger(Ot.a.AUDIO_TRACK_SWITCHED,{id:a}))}else this.audioSwitch=!1,o.trigger(Ot.a.AUDIO_TRACK_SWITCHED,{id:a});var h=this.pendingData;this.audioSwitch||([t.data1,t.data2].forEach(function(e){e&&e.length&&h.push({type:t.type,data:e,parent:"audio",content:"data"})}),!u&&h.length&&(h.forEach(function(t){e.state===Ye.PARSING&&(e.pendingBuffering=!0,e.hls.trigger(Ot.a.BUFFER_APPENDING,t))}),this.pendingData=[],this.appended=!0)),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,r=t.frag;e&&"audio"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===Ye.PARSING&&(this.stats.tparsed=performance.now(),this.state=Ye.PARSED,this._checkAppendedParsed())},e.prototype.onBufferReset=function(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1},e.prototype.onBufferCreated=function(t){var e=t.tracks.audio;e&&(this.mediaBuffer=e.buffer,this.loadedmetadata=!0),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer)},e.prototype.onBufferAppended=function(t){if("audio"===t.parent){var e=this.state;e!==Ye.PARSING&&e!==Ye.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==Ye.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent,e=this.stats,r=this.hls;if(t){this.fragPrevious=t,e.tbuffered=performance.now(),r.trigger(Ot.a.FRAG_BUFFERED,{stats:e,frag:t,id:"audio"});var i=this.mediaBuffer?this.mediaBuffer:this.media;Pt.b.log("audio buffered : "+pe.toString(i.buffered)),this.audioSwitch&&this.appended&&(this.audioSwitch=!1,r.trigger(Ot.a.AUDIO_TRACK_SWITCHED,{id:this.trackId})),this.state=Ye.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag;if(!e||"audio"===e.type)switch(t.details){case Ct.a.FRAG_LOAD_ERROR:case Ct.a.FRAG_LOAD_TIMEOUT:if(!t.fatal){var r=this.fragLoadError;r?r++:r=1;var i=this.config;if(r<=i.fragLoadingMaxRetry){this.fragLoadError=r,e.loadCounter=0;var a=Math.min(Math.pow(2,r-1)*i.fragLoadingRetryDelay,i.fragLoadingMaxRetryTimeout);Pt.b.warn("audioStreamController: frag loading failed, retry in "+a+" ms"),this.retryDate=performance.now()+a,this.state=Ye.FRAG_LOADING_WAITING_RETRY}else Pt.b.error("audioStreamController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=Ye.ERROR}break;case Ct.a.FRAG_LOOP_LOADING_ERROR:case Ct.a.AUDIO_TRACK_LOAD_ERROR:case Ct.a.AUDIO_TRACK_LOAD_TIMEOUT:case Ct.a.KEY_LOAD_ERROR:case Ct.a.KEY_LOAD_TIMEOUT:this.state!==Ye.ERROR&&(this.state=t.fatal?Ye.ERROR:Ye.IDLE,Pt.b.warn("audioStreamController: "+t.details+" while loading frag,switch to "+this.state+" state ..."));break;case Ct.a.BUFFER_FULL_ERROR:if("audio"===t.parent&&(this.state===Ye.PARSING||this.state===Ye.PARSED)){var n=this.mediaBuffer,o=this.media.currentTime;if(n&&ae.isBuffered(n,o)&&ae.isBuffered(n,o+.5)){var s=this.config;s.maxMaxBufferLength>=s.maxBufferLength&&(s.maxMaxBufferLength/=2,Pt.b.warn("audio:reduce max buffer length to "+s.maxMaxBufferLength+"s"),this.fragLoadIdx+=2*s.fragLoadingLoopThreshold),this.state=Ye.IDLE}else Pt.b.warn("buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,this.state=Ye.BUFFER_FLUSHING,this.hls.trigger(Ot.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"})}}},e.prototype.onBufferFlushed=function(){var t=this,e=this.pendingData;e&&e.length?(Pt.b.log("appending pending audio data on Buffer Flushed"),e.forEach(function(e){t.hls.trigger(Ot.a.BUFFER_APPENDING,e)}),this.appended=!0,this.pendingData=[],this.state=Ye.PARSED):(this.state=Ye.IDLE,this.fragPrevious=null,this.tick())},Ve(e,[{key:"state",set:function(t){if(this.state!==t){var e=this.state;this._state=t,Pt.b.log("audio stream:"+e+"->"+t)}},get:function(){return this._state}}]),e}(Nt),Xe=ze,qe=function(){function t(t){return"string"==typeof t&&(!!n[t.toLowerCase()]&&t.toLowerCase())}function e(t){return"string"==typeof t&&(!!o[t.toLowerCase()]&&t.toLowerCase())}function r(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var i in r)t[i]=r[i]}return t}function i(i,n,o){var s=this,l=function(){if("undefined"!=typeof navigator)return/MSIE\s8\.0/.test(navigator.userAgent)}(),u={};l?s=document.createElement("custom"):u.enumerable=!0,s.hasBeenReset=!1;var d="",h=!1,c=i,f=n,p=o,g=null,v="",y=!0,m="auto",b="start",E=50,T="middle",R=50,A="middle";if(Object.defineProperty(s,"id",r({},u,{get:function(){return d},set:function(t){d=""+t}})),Object.defineProperty(s,"pauseOnExit",r({},u,{get:function(){return h},set:function(t){h=!!t}})),Object.defineProperty(s,"startTime",r({},u,{get:function(){return c},set:function(t){if("number"!=typeof t)throw new TypeError("Start time must be set to a number.");c=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"endTime",r({},u,{get:function(){return f},set:function(t){if("number"!=typeof t)throw new TypeError("End time must be set to a number.");f=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"text",r({},u,{get:function(){return p},set:function(t){p=""+t,this.hasBeenReset=!0}})),Object.defineProperty(s,"region",r({},u,{get:function(){return g},set:function(t){g=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"vertical",r({},u,{get:function(){return v},set:function(e){var r=t(e);if(!1===r)throw new SyntaxError("An invalid or illegal string was specified.");v=r,this.hasBeenReset=!0}})),Object.defineProperty(s,"snapToLines",r({},u,{get:function(){return y},set:function(t){y=!!t,this.hasBeenReset=!0}})),Object.defineProperty(s,"line",r({},u,{get:function(){return m},set:function(t){if("number"!=typeof t&&t!==a)throw new SyntaxError("An invalid number or illegal string was specified.");m=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"lineAlign",r({},u,{get:function(){return b},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");b=r,this.hasBeenReset=!0}})),Object.defineProperty(s,"position",r({},u,{get:function(){return E},set:function(t){if(t<0||t>100)throw new Error("Position must be between 0 and 100.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"positionAlign",r({},u,{get:function(){return T},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");T=r,this.hasBeenReset=!0}})),Object.defineProperty(s,"size",r({},u,{get:function(){return R},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");R=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"align",r({},u,{get:function(){return A},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");A=r,this.hasBeenReset=!0}})),s.displayState=void 0,l)return s}if("undefined"!=typeof window&&window.VTTCue)return window.VTTCue;var a="auto",n={"":!0,lr:!0,rl:!0},o={start:!0,middle:!0,end:!0,left:!0,right:!0};return i.prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)},i}(),Qe=function(){return{decode:function(t){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}};st.prototype={set:function(t,e){this.get(t)||""===e||(this.values[t]=e)},get:function(t,e,r){return r?this.has(t)?this.values[t]:e[r]:this.has(t)?this.values[t]:e},has:function(t){return t in this.values},alt:function(t,e,r){for(var i=0;i<r.length;++i)if(e===r[i]){this.set(t,e);break}},integer:function(t,e){/^-?\d+$/.test(e)&&this.set(t,parseInt(e,10))},percent:function(t,e){return!!(e.match(/^([\d]{1,3})(\.[\d]*)?%$/)&&(e=parseFloat(e))>=0&&e<=100)&&(this.set(t,e),!0)}};var Je=new qe(0,0,0),$e="middle"===Je.align?"middle":"center";nt.prototype={parse:function(t){function e(){var t=r.buffer,e=0;for(t=dt(t);e<t.length&&"\r"!==t[e]&&"\n"!==t[e];)++e;var i=t.substr(0,e);return"\r"===t[e]&&++e,"\n"===t[e]&&++e,r.buffer=t.substr(e),i}var r=this;t&&(r.buffer+=r.decoder.decode(t,{stream:!0}));try{var i;if("INITIAL"===r.state){if(!/\r\n|\n/.test(r.buffer))return this;i=e();var a=i.match(/^()?WEBVTT([ \t].*)?$/);if(!a||!a[0])throw new Error("Malformed WebVTT signature.");r.state="HEADER"}for(var n=!1;r.buffer;){if(!/\r\n|\n/.test(r.buffer))return this;switch(n?n=!1:i=e(),r.state){case"HEADER":/:/.test(i)?function(t){lt(t,function(t,e){switch(t){case"Region":console.log("parse region",e)}},/:/)}(i):i||(r.state="ID");continue;case"NOTE":i||(r.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(i)){r.state="NOTE";break}if(!i)continue;if(r.cue=new qe(0,0,""),r.state="CUE",-1===i.indexOf("--\x3e")){r.cue.id=i;continue}case"CUE":try{ut(i,r.cue,r.regionList)}catch(t){r.cue=null,r.state="BADCUE";continue}r.state="CUETEXT";continue;case"CUETEXT":var o=-1!==i.indexOf("--\x3e");if(!i||o&&(n=!0)){r.oncue&&r.oncue(r.cue),r.cue=null,r.state="ID";continue}r.cue.text&&(r.cue.text+="\n"),r.cue.text+=i;continue;case"BADCUE":i||(r.state="ID");continue}}}catch(t){"CUETEXT"===r.state&&r.cue&&r.oncue&&r.oncue(r.cue),r.cue=null,r.state="INITIAL"===r.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var t=this;try{if(t.buffer+=t.decoder.decode(),(t.cue||"HEADER"===t.state)&&(t.buffer+="\n\n",t.parse()),"INITIAL"===t.state)throw new Error("Malformed WebVTT signature.")}catch(t){throw t}return t.onflush&&t.onflush(),this}};var Ze=nt,tr={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},er=function(t){var e=t;return tr.hasOwnProperty(t)&&(e=tr[t]),String.fromCharCode(e)},rr=15,ir=100,ar={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},nr={17:2,18:4,21:6,22:8,23:10,19:13,20:15},or={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},sr={25:2,26:4,29:6,30:8,31:10,27:13,28:15},lr=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],ur={verboseFilter:{DATA:3,DEBUG:3,INFO:2,WARNING:2,TEXT:1,ERROR:0},time:null,verboseLevel:0,setTime:function(t){this.time=t},log:function(t,e){var r=this.verboseFilter[t];this.verboseLevel>=r&&console.log(this.time+" ["+t+"] "+e)}},dr=function(t){for(var e=[],r=0;r<t.length;r++)e.push(t[r].toString(16));return e},hr=function(){function t(e,r,i,a,n){ct(this,t),this.foreground=e||"white",this.underline=r||!1,this.italics=i||!1,this.background=a||"black",this.flash=n||!1}return t.prototype.reset=function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},t.prototype.setStyles=function(t){for(var e=["foreground","underline","italics","background","flash"],r=0;r<e.length;r++){var i=e[r];t.hasOwnProperty(i)&&(this[i]=t[i])}},t.prototype.isDefault=function(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash},t.prototype.equals=function(t){return this.foreground===t.foreground&&this.underline===t.underline&&this.italics===t.italics&&this.background===t.background&&this.flash===t.flash},t.prototype.copy=function(t){this.foreground=t.foreground,this.underline=t.underline,this.italics=t.italics,this.background=t.background,this.flash=t.flash},t.prototype.toString=function(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash},t}(),cr=function(){function t(e,r,i,a,n,o){ct(this,t),this.uchar=e||" ",this.penState=new hr(r,i,a,n,o)}return t.prototype.reset=function(){this.uchar=" ",this.penState.reset()},t.prototype.setChar=function(t,e){this.uchar=t,this.penState.copy(e)},t.prototype.setPenState=function(t){this.penState.copy(t)},t.prototype.equals=function(t){return this.uchar===t.uchar&&this.penState.equals(t.penState)},t.prototype.copy=function(t){this.uchar=t.uchar,this.penState.copy(t.penState)},t.prototype.isEmpty=function(){return" "===this.uchar&&this.penState.isDefault()},t}(),fr=function(){function t(){ct(this,t),this.chars=[];for(var e=0;e<ir;e++)this.chars.push(new cr);this.pos=0,this.currPenState=new hr}return t.prototype.equals=function(t){for(var e=!0,r=0;r<ir;r++)if(!this.chars[r].equals(t.chars[r])){e=!1;break}return e},t.prototype.copy=function(t){for(var e=0;e<ir;e++)this.chars[e].copy(t.chars[e])},t.prototype.isEmpty=function(){for(var t=!0,e=0;e<ir;e++)if(!this.chars[e].isEmpty()){t=!1;break}return t},t.prototype.setCursor=function(t){this.pos!==t&&(this.pos=t),this.pos<0?(ur.log("ERROR","Negative cursor position "+this.pos),this.pos=0):this.pos>ir&&(ur.log("ERROR","Too large cursor position "+this.pos),this.pos=ir)},t.prototype.moveCursor=function(t){var e=this.pos+t;if(t>1)for(var r=this.pos+1;r<e+1;r++)this.chars[r].setPenState(this.currPenState);this.setCursor(e)},t.prototype.backSpace=function(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)},t.prototype.insertChar=function(t){t>=144&&this.backSpace();var e=er(t);if(this.pos>=ir)return void ur.log("ERROR","Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1)},t.prototype.clearFromPos=function(t){var e;for(e=t;e<ir;e++)this.chars[e].reset()},t.prototype.clear=function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},t.prototype.clearToEndOfRow=function(){this.clearFromPos(this.pos)},t.prototype.getTextString=function(){for(var t=[],e=!0,r=0;r<ir;r++){var i=this.chars[r].uchar;" "!==i&&(e=!1),t.push(i)}return e?"":t.join("")},t.prototype.setPenStyles=function(t){this.currPenState.setStyles(t),this.chars[this.pos].setPenState(this.currPenState)},t}(),pr=function(){function t(){ct(this,t),this.rows=[];for(var e=0;e<rr;e++)this.rows.push(new fr);this.currRow=rr-1,this.nrRollUpRows=null,this.reset()}return t.prototype.reset=function(){for(var t=0;t<rr;t++)this.rows[t].clear();this.currRow=rr-1},t.prototype.equals=function(t){for(var e=!0,r=0;r<rr;r++)if(!this.rows[r].equals(t.rows[r])){e=!1;break}return e},t.prototype.copy=function(t){for(var e=0;e<rr;e++)this.rows[e].copy(t.rows[e])},t.prototype.isEmpty=function(){for(var t=!0,e=0;e<rr;e++)if(!this.rows[e].isEmpty()){t=!1;break}return t},t.prototype.backSpace=function(){this.rows[this.currRow].backSpace()},t.prototype.clearToEndOfRow=function(){this.rows[this.currRow].clearToEndOfRow()},t.prototype.insertChar=function(t){this.rows[this.currRow].insertChar(t)},t.prototype.setPen=function(t){this.rows[this.currRow].setPenStyles(t)},t.prototype.moveCursor=function(t){this.rows[this.currRow].moveCursor(t)},t.prototype.setCursor=function(t){ur.log("INFO","setCursor: "+t),this.rows[this.currRow].setCursor(t)},t.prototype.setPAC=function(t){ur.log("INFO","pacData = "+JSON.stringify(t));var e=t.row-1;if(this.nrRollUpRows&&e<this.nrRollUpRows-1&&(e=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==e){for(var r=0;r<rr;r++)this.rows[r].clear();var i=this.currRow+1-this.nrRollUpRows,a=this.lastOutputScreen;if(a){var n=a.rows[i].cueStartTime;if(n&&n<ur.time)for(var o=0;o<this.nrRollUpRows;o++)this.rows[e-this.nrRollUpRows+o+1].copy(a.rows[i+o])}}this.currRow=e;var s=this.rows[this.currRow];if(null!==t.indent){var l=t.indent,u=Math.max(l-1,0);s.setCursor(t.indent),t.color=s.chars[u].penState.foreground}var d={foreground:t.color,underline:t.underline,italics:t.italics,background:"black",flash:!1};this.setPen(d)},t.prototype.setBkgData=function(t){ur.log("INFO","bkgData = "+JSON.stringify(t)),this.backSpace(),this.setPen(t),this.insertChar(32)},t.prototype.setRollUpRows=function(t){this.nrRollUpRows=t},t.prototype.rollUp=function(){if(null===this.nrRollUpRows)return void ur.log("DEBUG","roll_up but nrRollUpRows not set yet");ur.log("TEXT",this.getDisplayText());var t=this.currRow+1-this.nrRollUpRows,e=this.rows.splice(t,1)[0];e.clear(),this.rows.splice(this.currRow,0,e),ur.log("INFO","Rolling up")},t.prototype.getDisplayText=function(t){t=t||!1;for(var e=[],r="",i=-1,a=0;a<rr;a++){var n=this.rows[a].getTextString();n&&(i=a+1,t?e.push("Row "+i+": '"+n+"'"):e.push(n.trim()))}return e.length>0&&(r=t?"["+e.join(" | ")+"]":e.join("\n")),r},t.prototype.getTextAndFormat=function(){return this.rows},t}(),gr=function(){function t(e,r){ct(this,t),this.chNr=e,this.outputFilter=r,this.mode=null,this.verbose=0,this.displayedMemory=new pr,this.nonDisplayedMemory=new pr,this.lastOutputScreen=new pr,this.currRollUpRow=this.displayedMemory.rows[rr-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}return t.prototype.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[rr-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},t.prototype.getHandler=function(){return this.outputFilter},t.prototype.setHandler=function(t){this.outputFilter=t},t.prototype.setPAC=function(t){this.writeScreen.setPAC(t)},t.prototype.setBkgData=function(t){this.writeScreen.setBkgData(t)},t.prototype.setMode=function(t){t!==this.mode&&(this.mode=t,ur.log("INFO","MODE="+t),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)},t.prototype.insertChars=function(t){for(var e=0;e<t.length;e++)this.writeScreen.insertChar(t[e]);var r=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";ur.log("INFO",r+": "+this.writeScreen.getDisplayText(!0)),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(ur.log("TEXT","DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())},t.prototype.ccRCL=function(){ur.log("INFO","RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")},t.prototype.ccBS=function(){ur.log("INFO","BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())},t.prototype.ccAOF=function(){},t.prototype.ccAON=function(){},t.prototype.ccDER=function(){ur.log("INFO","DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()},t.prototype.ccRU=function(t){ur.log("INFO","RU("+t+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(t)},t.prototype.ccFON=function(){ur.log("INFO","FON - Flash On"),this.writeScreen.setPen({flash:!0})},t.prototype.ccRDC=function(){ur.log("INFO","RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")},t.prototype.ccTR=function(){ur.log("INFO","TR"),this.setMode("MODE_TEXT")},t.prototype.ccRTD=function(){ur.log("INFO","RTD"),this.setMode("MODE_TEXT")},t.prototype.ccEDM=function(){ur.log("INFO","EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)},t.prototype.ccCR=function(){ur.log("CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)},t.prototype.ccENM=function(){ur.log("INFO","ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()},t.prototype.ccEOC=function(){if(ur.log("INFO","EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,ur.log("TEXT","DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)},t.prototype.ccTO=function(t){ur.log("INFO","TO("+t+") - Tab Offset"),this.writeScreen.moveCursor(t)},t.prototype.ccMIDROW=function(t){var e={flash:!1};if(e.underline=t%2==1,e.italics=t>=46,e.italics)e.foreground="white";else{var r=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[r]}ur.log("INFO","MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)},t.prototype.outputDataUpdate=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=ur.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),!0===t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue()),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))},t.prototype.cueSplitAtTime=function(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))},t}(),vr=function(){function t(e,r,i){ct(this,t),this.field=e||1,this.outputs=[r,i],this.channels=[new gr(1,r),new gr(2,i)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}}return t.prototype.getHandler=function(t){return this.channels[t].getHandler()},t.prototype.setHandler=function(t,e){this.channels[t].setHandler(e)},t.prototype.addData=function(t,e){var r,i,a,n=!1;this.lastTime=t,ur.setTime(t);for(var o=0;o<e.length;o+=2)if(i=127&e[o],a=127&e[o+1],0!==i||0!==a){if(ur.log("DATA","["+dr([e[o],e[o+1]])+"] -> ("+dr([i,a])+")"),r=this.parseCmd(i,a),r||(r=this.parseMidrow(i,a)),r||(r=this.parsePAC(i,a)),r||(r=this.parseBackgroundAttributes(i,a)),!r&&(n=this.parseChars(i,a)))if(this.currChNr&&this.currChNr>=0){var s=this.channels[this.currChNr-1];s.insertChars(n)}else ur.log("WARNING","No channel found yet. TEXT-MODE?");r?this.dataCounters.cmd+=2:n?this.dataCounters.char+=2:(this.dataCounters.other+=2,ur.log("WARNING","Couldn't parse cleaned data "+dr([i,a])+" orig: "+dr([e[o],e[o+1]])))}else this.dataCounters.padding+=2},t.prototype.parseCmd=function(t,e){var r=null,i=(20===t||28===t)&&32<=e&&e<=47,a=(23===t||31===t)&&33<=e&&e<=35;if(!i&&!a)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,ur.log("DEBUG","Repeated command ("+dr([t,e])+") is dropped"),!0;r=20===t||23===t?1:2;var n=this.channels[r-1];return 20===t||28===t?32===e?n.ccRCL():33===e?n.ccBS():34===e?n.ccAOF():35===e?n.ccAON():36===e?n.ccDER():37===e?n.ccRU(2):38===e?n.ccRU(3):39===e?n.ccRU(4):40===e?n.ccFON():41===e?n.ccRDC():42===e?n.ccTR():43===e?n.ccRTD():44===e?n.ccEDM():45===e?n.ccCR():46===e?n.ccENM():47===e&&n.ccEOC():n.ccTO(e-32),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=r,!0},t.prototype.parseMidrow=function(t,e){var r=null;if((17===t||25===t)&&32<=e&&e<=47){if((r=17===t?1:2)!==this.currChNr)return ur.log("ERROR","Mismatch channel in midrow parsing"),!1;return this.channels[r-1].ccMIDROW(e),ur.log("DEBUG","MIDROW ("+dr([t,e])+")"),!0}return!1},t.prototype.parsePAC=function(t,e){var r=null,i=null,a=(17<=t&&t<=23||25<=t&&t<=31)&&64<=e&&e<=127,n=(16===t||24===t)&&64<=e&&e<=95;if(!a&&!n)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,!0;r=t<=23?1:2,i=64<=e&&e<=95?1===r?ar[t]:or[t]:1===r?nr[t]:sr[t];var o=this.interpretPAC(i,e);return this.channels[r-1].setPAC(o),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=r,!0},t.prototype.interpretPAC=function(t,e){var r=e,i={color:null,italics:!1,indent:null,underline:!1,row:t};return r=e>95?e-96:e-64,i.underline=1==(1&r),r<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((r-16)/2),i},t.prototype.parseChars=function(t,e){var r=null,i=null,a=null;if(t>=25?(r=2,a=t-8):(r=1,a=t),17<=a&&a<=19){var n=e;n=17===a?e+80:18===a?e+112:e+144,ur.log("INFO","Special char '"+er(n)+"' in channel "+r),i=[n]}else 32<=t&&t<=127&&(i=0===e?[t]:[t,e]);if(i){var o=dr(i);ur.log("DEBUG","Char codes = "+o.join(",")),this.lastCmdA=null,this.lastCmdB=null}return i},t.prototype.parseBackgroundAttributes=function(t,e){var r,i,a,n,o=(16===t||24===t)&&32<=e&&e<=47,s=(23===t||31===t)&&45<=e&&e<=47;return!(!o&&!s)&&(r={},16===t||24===t?(i=Math.floor((e-32)/2),r.background=lr[i],e%2==1&&(r.background=r.background+"_semi")):45===e?r.background="transparent":(r.foreground="black",47===e&&(r.underline=!0)),a=t<24?1:2,n=this.channels[a-1],n.setBkgData(r),this.lastCmdA=null,this.lastCmdB=null,!0)},t.prototype.reset=function(){for(var t=0;t<this.channels.length;t++)this.channels[t]&&this.channels[t].reset();this.lastCmdA=null,this.lastCmdB=null},t.prototype.cueSplitAtTime=function(t){for(var e=0;e<this.channels.length;e++)this.channels[e]&&this.channels[e].cueSplitAtTime(t)},t}(),yr=vr,mr=function(){function t(e,r){ft(this,t),this.timelineController=e,this.track=r,this.startTime=null,this.endTime=null,this.screen=null}return t.prototype.dispatchCue=function(){null!==this.startTime&&(this.timelineController.addCues("textTrack"+this.track,this.startTime,this.endTime,this.screen),this.startTime=null)},t.prototype.newCue=function(t,e,r){(null===this.startTime||this.startTime>t)&&(this.startTime=t),this.endTime=e,this.screen=r,this.timelineController.createCaptionsTrack(this.track)},t}(),br=mr,Er=function(t,e,r){return t.substr(r||0,e.length)===e},Tr=function(t){var e=parseInt(t.substr(-3)),r=parseInt(t.substr(-6,2)),i=parseInt(t.substr(-9,2)),a=t.length>9?parseInt(t.substr(0,t.indexOf(":"))):0;return isNaN(e)||isNaN(r)||isNaN(i)||isNaN(a)?-1:(e+=1e3*r,e+=6e4*i,e+=36e5*a)},Rr=function(t){for(var e=5381,r=t.length;r;)e=33*e^t.charCodeAt(--r);return(e>>>0).toString()},Ar=function(t,e,r){var i=t[e],a=t[i.prevCC];if(!a||!a.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;a&&a.new;)t.ccOffset+=i.start-a.start,i.new=!1,i=a,a=t[i.prevCC];t.presentationOffset=r},Sr={parse:function(t,e,r,i,a,n){var o=/\r\n|\n\r|\n|\r/g,s=Object(Re.b)(new Uint8Array(t)).trim().replace(o,"\n").split("\n"),l="00:00.000",u=0,d=0,h=0,c=[],f=void 0,p=!0,g=new Ze;g.oncue=function(t){var e=r[i],a=r.ccOffset;e&&e.new&&(void 0!==d?a=r.ccOffset=e.start:Ar(r,i,h)),h&&(a=h+r.ccOffset-r.presentationOffset),t.startTime+=a-d,t.endTime+=a-d,t.id=Rr(t.startTime.toString())+Rr(t.endTime.toString())+Rr(t.text),t.text=decodeURIComponent(encodeURIComponent(t.text)),t.endTime>0&&c.push(t)},g.onparsingerror=function(t){f=t},g.onflush=function(){if(f&&n)return void n(f);a(c)},s.forEach(function(t){if(p){if(Er(t,"X-TIMESTAMP-MAP=")){p=!1,t.substr(16).split(",").forEach(function(t){Er(t,"LOCAL:")?l=t.substr(6):Er(t,"MPEGTS:")&&(u=parseInt(t.substr(7)))});try{e=e<0?e+8589934592:e,u-=e,d=Tr(l)/1e3,h=u/9e4,-1===d&&(f=new Error("Malformed X-TIMESTAMP-MAP: "+t))}catch(e){f=new Error("Malformed X-TIMESTAMP-MAP: "+t)}return}""===t&&(p=!1)}g.parse(t+"\n")}),g.flush()}},Lr=Sr,_r=function(t){function e(r){pt(this,e);var i=gt(this,t.call(this,r,Ot.a.MEDIA_ATTACHING,Ot.a.MEDIA_DETACHING,Ot.a.FRAG_PARSING_USERDATA,Ot.a.FRAG_DECRYPTED,Ot.a.MANIFEST_LOADING,Ot.a.MANIFEST_LOADED,Ot.a.FRAG_LOADED,Ot.a.LEVEL_SWITCHING,Ot.a.INIT_PTS_FOUND));if(i.hls=r,i.config=r.config,i.enabled=!0,i.Cues=r.config.cueHandler,i.textTracks=[],i.tracks=[],i.unparsedVttFrags=[],i.initPTS=void 0,i.cueRanges=[],i.config.enableCEA708Captions){var a=new br(i,1),n=new br(i,2);i.cea608Parser=new yr(0,a,n)}return i}return vt(e,t),e.prototype.addCues=function(t,e,r,i){for(var a=this.cueRanges,n=!1,o=a.length;o--;){var s=a[o],l=bt(s[0],s[1],e,r);if(l>=0&&(s[0]=Math.min(s[0],e),s[1]=Math.max(s[1],r),n=!0,l/(r-e)>.5))return}n||a.push([e,r]),this.Cues.newCue(this[t],e,r,i)},e.prototype.onInitPtsFound=function(t){var e=this;void 0===this.initPTS&&(this.initPTS=t.initPTS),this.unparsedVttFrags.length&&(this.unparsedVttFrags.forEach(function(t){e.onFragLoaded(t)}),this.unparsedVttFrags=[])},e.prototype.getExistingTrack=function(t){var e=this.media;if(e)for(var r=0;r<e.textTracks.length;r++){var i=e.textTracks[r],a="textTrack"+t;if(!0===i[a])return i}return null},e.prototype.sendAddTrackEvent=function(t,e){var r=null;try{r=new window.Event("addtrack")}catch(t){r=document.createEvent("Event"),r.initEvent("addtrack",!1,!1)}r.track=t,e.dispatchEvent(r)},e.prototype.createCaptionsTrack=function(t){var e="textTrack"+t;if(!this[e]){var r=this.getExistingTrack(t);if(r)this[e]=r,yt(this[e]),this.sendAddTrackEvent(this[e],this.media);else{var i=this.createTextTrack("captions",this.config["captionsTextTrack"+t+"Label"],this.config.captionsTextTrack1LanguageCode);i&&(i[e]=!0,this[e]=i)}}},e.prototype.createTextTrack=function(t,e,r){var i=this.media;if(i)return i.addTextTrack(t,e,r)},e.prototype.destroy=function(){Nt.prototype.destroy.call(this)},e.prototype.onMediaAttaching=function(t){this.media=t.media,this._cleanTracks()},e.prototype.onMediaDetaching=function(){yt(this.textTrack1),yt(this.textTrack2)},e.prototype.onManifestLoading=function(){this.lastSn=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0},this._cleanTracks()},e.prototype._cleanTracks=function(){var t=this.media;if(t){var e=t.textTracks;if(e)for(var r=0;r<e.length;r++)yt(e[r])}},e.prototype.onManifestLoaded=function(t){var e=this;if(this.textTracks=[],this.unparsedVttFrags=this.unparsedVttFrags||[],this.initPTS=void 0,this.cueRanges=[],this.config.enableWebVTT){this.tracks=t.subtitles||[];var r=this.media?this.media.textTracks:[];this.tracks.forEach(function(t,i){var a=void 0;if(i<r.length){var n=r[i];mt(n,t)&&(a=n)}a||(a=e.createTextTrack("subtitles",t.name,t.lang)),a.mode=t.default?"showing":"hidden",e.textTracks.push(a)})}},e.prototype.onLevelSwitching=function(){this.enabled="NONE"!==this.hls.currentLevel.closedCaptions},e.prototype.onFragLoaded=function(t){var e=t.frag,r=t.payload;if("main"===e.type){var i=e.sn;if(i!==this.lastSn+1){var a=this.cea608Parser;a&&a.reset()}this.lastSn=i}else if("subtitle"===e.type)if(r.byteLength){if(void 0===this.initPTS)return void this.unparsedVttFrags.push(t);var n=e.decryptdata;null!=n&&null!=n.key&&"AES-128"===n.method||this._parseVTTs(e,r)}else this.hls.trigger(Ot.a.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e})},e.prototype._parseVTTs=function(t,e){var r=this.vttCCs;r[t.cc]||(r[t.cc]={start:t.start,prevCC:this.prevCC,new:!0},this.prevCC=t.cc);var i=this.textTracks,a=this.hls;Lr.parse(e,this.initPTS,r,t.cc,function(e){var r=i[t.trackId];e.forEach(function(t){if(!r.cues.getCueById(t.id))try{r.addCue(t)}catch(i){var e=new window.TextTrackCue(t.startTime,t.endTime,t.text);e.id=t.id,r.addCue(e)}}),a.trigger(Ot.a.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})},function(e){Pt.b.log("Failed to parse VTT cue: "+e),a.trigger(Ot.a.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t})})},e.prototype.onFragDecrypted=function(t){var e=t.payload,r=t.frag;if("subtitle"===r.type){if(void 0===this.initPTS)return void this.unparsedVttFrags.push(t);this._parseVTTs(r,e)}},e.prototype.onFragParsingUserdata=function(t){if(this.enabled&&this.config.enableCEA708Captions)for(var e=0;e<t.samples.length;e++){var r=this.extractCea608Data(t.samples[e].bytes);this.cea608Parser.addData(t.samples[e].pts,r)}},e.prototype.extractCea608Data=function(t){for(var e,r,i,a,n,o=31&t[0],s=2,l=[],u=0;u<o;u++)e=t[s++],r=127&t[s++],i=127&t[s++],a=0!=(4&e),n=3&e,0===r&&0===i||a&&0===n&&(l.push(r),l.push(i));return l},e}(Nt),wr=_r,Dr=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Ir=function(t){function e(r){Et(this,e);var i=Tt(this,t.call(this,r,Ot.a.MEDIA_ATTACHED,Ot.a.MEDIA_DETACHING,Ot.a.MANIFEST_LOADING,Ot.a.MANIFEST_LOADED,Ot.a.SUBTITLE_TRACK_LOADED));return i.tracks=[],i.trackId=-1,i.media=void 0,i.subtitleDisplay=!1,i}return Rt(e,t),e.prototype._onTextTracksChanged=function(){if(this.media){for(var t=-1,e=At(this.media.textTracks),r=0;r<e.length;r++)"showing"===e[r].mode&&(t=r);this.subtitleTrack=t}},e.prototype.destroy=function(){Nt.prototype.destroy.call(this)},e.prototype.onMediaAttached=function(t){var e=this;this.media=t.media,this.media&&(void 0!==this.queuedDefaultTrack&&(this.subtitleTrack=this.queuedDefaultTrack,delete this.queuedDefaultTrack),this.trackChangeListener=this._onTextTracksChanged.bind(this),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.subtitlePollingInterval=setInterval(function(){e.trackChangeListener()},500):this.media.textTracks.addEventListener("change",this.trackChangeListener))},e.prototype.onMediaDetaching=function(){this.media&&(this.useTextTrackPolling?clearInterval(this.subtitlePollingInterval):this.media.textTracks.removeEventListener("change",this.trackChangeListener),this.media=void 0)},e.prototype.onManifestLoading=function(){this.tracks=[],this.trackId=-1},e.prototype.onManifestLoaded=function(t){var e=this,r=t.subtitles||[];this.tracks=r,this.trackId=-1,this.hls.trigger(Ot.a.SUBTITLE_TRACKS_UPDATED,{subtitleTracks:r}),r.forEach(function(t){t.default&&(e.media?e.subtitleTrack=t.id:e.queuedDefaultTrack=t.id)})},e.prototype.onTick=function(){var t=this.trackId,e=this.tracks[t];if(e){var r=e.details;void 0!==r&&!0!==r.live||(Pt.b.log("(re)loading playlist for subtitle track "+t),this.hls.trigger(Ot.a.SUBTITLE_TRACK_LOADING,{url:e.url,id:t}))}},e.prototype.onSubtitleTrackLoaded=function(t){var e=this;t.id<this.tracks.length&&(Pt.b.log("subtitle track "+t.id+" loaded"),this.tracks[t.id].details=t.details,t.details.live&&!this.timer&&(this.timer=setInterval(function(){e.onTick()},1e3*t.details.targetduration,this)),!t.details.live&&this.timer&&(clearInterval(this.timer),this.timer=null))},e.prototype.setSubtitleTrackInternal=function(t){if(!(t<-1||t>=this.tracks.length)){this.timer&&(clearInterval(this.timer),this.timer=null);var e=At(this.media.textTracks);if(-1!==this.trackId&&this.subtitleDisplay&&(e[this.trackId].mode="hidden"),this.trackId=t,Pt.b.log("switching to subtitle track "+t),this.hls.trigger(Ot.a.SUBTITLE_TRACK_SWITCH,{id:t}),-1!==t){var r=this.tracks[t];this.subtitleDisplay&&(e[t].mode="showing");var i=r.details;void 0!==i&&!0!==i.live||(Pt.b.log("(re)loading playlist for subtitle track "+t),this.hls.trigger(Ot.a.SUBTITLE_TRACK_LOADING,{url:r.url,id:t}))}}},Dr(e,[{key:"subtitleTracks",get:function(){return this.tracks}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(t){this.trackId!==t&&this.setSubtitleTrackInternal(t)}}]),e}(Nt),kr=Ir,Or=r(4),Cr={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING"},Pr=function(t){function e(r){St(this,e);var i=Lt(this,t.call(this,r,Ot.a.MEDIA_ATTACHED,Ot.a.ERROR,Ot.a.KEY_LOADED,Ot.a.FRAG_LOADED,Ot.a.SUBTITLE_TRACKS_UPDATED,Ot.a.SUBTITLE_TRACK_SWITCH,Ot.a.SUBTITLE_TRACK_LOADED,Ot.a.SUBTITLE_FRAG_PROCESSED));return i.config=r.config,i.vttFragSNsProcessed={},i.vttFragQueues=void 0,i.currentlyProcessing=null,i.state=Cr.STOPPED,i.currentTrackId=-1,i.ticks=0,i.decrypter=new Or.a(r.observer,r.config),i}return _t(e,t),e.prototype.destroy=function(){Nt.prototype.destroy.call(this),this.state=Cr.STOPPED},e.prototype.clearVttFragQueues=function(){var t=this;this.vttFragQueues={},this.tracks.forEach(function(e){t.vttFragQueues[e.id]=[]})},e.prototype.nextFrag=function(){if(null===this.currentlyProcessing&&this.currentTrackId>-1&&this.vttFragQueues[this.currentTrackId].length){var t=this.currentlyProcessing=this.vttFragQueues[this.currentTrackId].shift();this.fragCurrent=t,this.hls.trigger(Ot.a.FRAG_LOADING,{frag:t}),this.state=Cr.FRAG_LOADING}},e.prototype.onSubtitleFragProcessed=function(t){t.success&&this.vttFragSNsProcessed[t.frag.trackId].push(t.frag.sn),this.currentlyProcessing=null,this.state=Cr.IDLE,this.nextFrag()},e.prototype.onMediaAttached=function(){this.state=Cr.IDLE},e.prototype.onError=function(t){var e=t.frag;e&&"subtitle"!==e.type||this.currentlyProcessing&&(this.currentlyProcessing=null,this.nextFrag())},e.prototype.tick=function(){var t=this;1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(function(){t.tick()},1),this.ticks=0)},e.prototype.doTick=function(){var t=this;switch(this.state){case Cr.IDLE:var e=this.tracks,r=this.currentTrackId,i=this.vttFragSNsProcessed[r],a=this.vttFragQueues[r],n=this.currentlyProcessing?this.currentlyProcessing.sn:-1,o=function(t){return i.indexOf(t.sn)>-1},s=function(t){return a.some(function(e){return e.sn===t.sn})};if(!e)break;var l;if(r<e.length&&(l=e[r].details),void 0===l)break;l.fragments.forEach(function(e){o(e)||e.sn===n||s(e)||(e.decryptdata&&null!=e.decryptdata.uri&&null==e.decryptdata.key?(Pt.b.log("Loading key for "+e.sn),t.state=Cr.KEY_LOADING,t.hls.trigger(Ot.a.KEY_LOADING,{frag:e})):(e.trackId=r,a.push(e),t.nextFrag()))})}},e.prototype.onSubtitleTracksUpdated=function(t){var e=this;Pt.b.log("subtitle tracks updated"),this.tracks=t.subtitleTracks,this.clearVttFragQueues(),this.vttFragSNsProcessed={},this.tracks.forEach(function(t){e.vttFragSNsProcessed[t.id]=[]})},e.prototype.onSubtitleTrackSwitch=function(t){this.currentTrackId=t.id,this.clearVttFragQueues()},e.prototype.onSubtitleTrackLoaded=function(){this.tick()},e.prototype.onKeyLoaded=function(){this.state===Cr.KEY_LOADING&&(this.state=Cr.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag.decryptdata,i=t.frag,a=this.hls;if(this.state===Cr.FRAG_LOADING&&e&&"subtitle"===t.frag.type&&e.sn===t.frag.sn&&t.payload.byteLength>0&&null!=r&&null!=r.key&&"AES-128"===r.method){var n;try{n=performance.now()}catch(t){n=Date.now()}this.decrypter.decrypt(t.payload,r.key.buffer,r.iv.buffer,function(t){var e;try{e=performance.now()}catch(t){e=Date.now()}a.trigger(Ot.a.FRAG_DECRYPTED,{frag:i,payload:t,stats:{tstart:n,tdecrypt:e}})})}},e}(Nt),xr=Pr,Fr={autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,initialLiveManifestSize:1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,lowBufferWatchdogPeriod:.5,highBufferWatchdogPeriod:3,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,liveDurationInfinity:!1,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:je,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,fetchSetup:void 0,abrController:Oe,bufferController:xe,capLevelController:Me,fpsController:Be,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0};Fr.subtitleStreamController=xr,Fr.subtitleTrackController=kr,Fr.timelineController=wr,Fr.cueHandler=Dt,Fr.enableCEA708Captions=!0,Fr.enableWebVTT=!0,Fr.captionsTextTrack1Label="English",Fr.captionsTextTrack1LanguageCode="en",Fr.captionsTextTrack2Label="Spanish",Fr.captionsTextTrack2LanguageCode="es",Fr.audioStreamController=Xe,Fr.audioTrackController=We;var Nr=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),Mr=function(){function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};wt(this,t);var i=t.DefaultConfig;if((r.liveSyncDurationCount||r.liveMaxLatencyDurationCount)&&(r.liveSyncDuration||r.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");for(var a in i)a in r||(r[a]=i[a]);if(void 0!==r.liveMaxLatencyDurationCount&&r.liveMaxLatencyDurationCount<=r.liveSyncDurationCount)throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');if(void 0!==r.liveMaxLatencyDuration&&(r.liveMaxLatencyDuration<=r.liveSyncDuration||void 0===r.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');Object(Pt.a)(r.debug),this.config=r,this._autoLevelCapping=-1;var n=this.observer=new se.a;n.trigger=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];n.emit.apply(n,[t,t].concat(r))},n.off=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];n.removeListener.apply(n,[t].concat(r))},this.on=n.on.bind(n),this.off=n.off.bind(n),this.trigger=n.trigger.bind(n);var o=this.abrController=new r.abrController(this),s=new r.bufferController(this),l=new r.capLevelController(this),u=new r.fpsController(this),d=new Qt(this),h=new $t(this),c=new te(this),f=new Se(this),p=this.levelController=new Te(this),g=this.streamController=new me(this),v=[p,g],y=r.audioStreamController;y&&v.push(new y(this)),this.networkControllers=v;var m=[d,h,c,o,s,l,u,f];if(y=r.audioTrackController){var b=new y(this);this.audioTrackController=b,m.push(b)}if(y=r.subtitleTrackController){var E=new y(this);this.subtitleTrackController=E,m.push(E)}[r.subtitleStreamController,r.timelineController].forEach(function(t){t&&m.push(new t(e))}),this.coreComponents=m}return t.isSupported=function(){return M()},Nr(t,null,[{key:"version",get:function(){return"0.8.9"}},{key:"Events",get:function(){return Ot.a}},{key:"ErrorTypes",get:function(){return Ct.b}},{key:"ErrorDetails",get:function(){return Ct.a}},{key:"DefaultConfig",get:function(){return t.defaultConfig?t.defaultConfig:Fr},set:function(e){t.defaultConfig=e}}]),t.prototype.destroy=function(){Pt.b.log("destroy"),this.trigger(Ot.a.DESTROYING),this.detachMedia(),this.coreComponents.concat(this.networkControllers).forEach(function(t){t.destroy()}),this.url=null,this.observer.removeAllListeners(),this._autoLevelCapping=-1},t.prototype.attachMedia=function(t){Pt.b.log("attachMedia"),this.media=t,this.trigger(Ot.a.MEDIA_ATTACHING,{media:t})},t.prototype.detachMedia=function(){Pt.b.log("detachMedia"),this.trigger(Ot.a.MEDIA_DETACHING),this.media=null},t.prototype.loadSource=function(t){t=kt.a.buildAbsoluteURL(window.location.href,t,{alwaysNormalize:!0}),Pt.b.log("loadSource:"+t),this.url=t,this.trigger(Ot.a.MANIFEST_LOADING,{url:t})},t.prototype.startLoad=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;Pt.b.log("startLoad("+t+")"),this.networkControllers.forEach(function(e){e.startLoad(t)})},t.prototype.stopLoad=function(){Pt.b.log("stopLoad"),this.networkControllers.forEach(function(t){t.stopLoad()})},t.prototype.swapAudioCodec=function(){Pt.b.log("swapAudioCodec"),this.streamController.swapAudioCodec()},t.prototype.recoverMediaError=function(){Pt.b.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)},Nr(t,[{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){Pt.b.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){Pt.b.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){Pt.b.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(t){this.levelController.nextLoadLevel=t}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(t){Pt.b.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){Pt.b.log("set startLevel:"+t);var e=this;-1!==t&&(t=Math.max(t,e.minAutoLevel)),e.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(t){Pt.b.log("set autoLevelCapping:"+t),this._autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){for(var t=this,e=t.levels,r=t.config.minAutoBitrate,i=e?e.length:0,a=0;a<i;a++){if((e[a].realBitrate?Math.max(e[a].realBitrate,e[a].bitrate):e[a].bitrate)>r)return a}return 0}},{key:"maxAutoLevel",get:function(){var t=this,e=t.levels,r=t.autoLevelCapping;return-1===r&&e&&e.length?e.length-1:r}},{key:"nextAutoLevel",get:function(){var t=this;return Math.min(Math.max(t.abrController.nextAutoLevel,t.minAutoLevel),t.maxAutoLevel)},set:function(t){var e=this;e.abrController.nextAutoLevel=Math.max(e.minAutoLevel,t)}},{key:"audioTracks",get:function(){var t=this.audioTrackController;return t?t.audioTracks:[]}},{key:"audioTrack",get:function(){var t=this.audioTrackController;return t?t.audioTrack:-1},set:function(t){var e=this.audioTrackController;e&&(e.audioTrack=t)}},{key:"liveSyncPosition",get:function(){return this.streamController.liveSyncPosition}},{key:"subtitleTracks",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTrack:-1},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}},{key:"subtitleDisplay",get:function(){var t=this.subtitleTrackController;return!!t&&t.subtitleDisplay},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}}]),t}();e.default=Mr},function(t,e,r){function i(t){function e(i){if(r[i])return r[i].exports;var a=r[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e.oe=function(t){throw console.error(t),t};var i=e(e.s=ENTRY_MODULE);return i.default||i}function a(t){return(t+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function n(t){var e=[],r=t.toString(),i=r.match(/^function\s?\(\w+,\s*\w+,\s*(\w+)\)/);if(!i)return e;for(var n,o=i[1],s=new RegExp("(\\\\n|\\W)"+a(o)+"\\((/\\*.*?\\*/)?s?.*?([\\.|\\-|\\w|/|@]+).*?\\)","g");n=s.exec(r);)e.push(n[3]);return e}function o(t,e){for(var r=[e],i=[],a={};r.length;){var o=r.pop();if(!a[o]&&t[o]){a[o]=!0,i.push(o);var s=n(t[o]);r=r.concat(s)}}return i}t.exports=function(t,e){e=e||{};var a=r.m,n=e.all?Object.keys(a):o(a,t),s="("+i.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+n.map(function(t){return JSON.stringify(t)+": "+a[t].toString()}).join(",")+"})(self);",l=new window.Blob([s],{type:"text/javascript"});if(e.bare)return l;var u=window.URL||window.webkitURL||window.mozURL||window.msURL,d=u.createObjectURL(l),h=new window.Worker(d);return h.objectURL=d,h}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(7),a=r(1),n=r(0),o=r(5),s=r.n(o),l=function(t){var e=new s.a;e.trigger=function(t){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];e.emit.apply(e,[t,t].concat(i))},e.off=function(t){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];e.removeListener.apply(e,[t].concat(i))};var r=function(e,r){t.postMessage({event:e,data:r})};t.addEventListener("message",function(a){var o=a.data;switch(o.cmd){case"init":var s=JSON.parse(o.config);t.demuxer=new i.a(e,o.typeSupported,s,o.vendor);try{Object(n.a)(!0===s.debug)}catch(t){console.warn("demuxerWorker: unable to enable logs")}r("init",null);break;case"demux":t.demuxer.push(o.data,o.decryptdata,o.initSegment,o.audioCodec,o.videoCodec,o.timeOffset,o.discontinuity,o.trackSwitch,o.contiguous,o.duration,o.accurateTimeOffset,o.defaultInitPTS)}}),e.on(a.a.FRAG_DECRYPTED,r),e.on(a.a.FRAG_PARSING_INIT_SEGMENT,r),e.on(a.a.FRAG_PARSED,r),e.on(a.a.ERROR,r),e.on(a.a.FRAG_PARSING_METADATA,r),e.on(a.a.FRAG_PARSING_USERDATA,r),e.on(a.a.INIT_PTS_FOUND,r),e.on(a.a.FRAG_PARSING_DATA,function(e,r){var i=[],a={event:e,data:r};r.data1&&(a.data1=r.data1.buffer,i.push(r.data1.buffer),delete r.data1),r.data2&&(a.data2=r.data2.buffer,i.push(r.data2.buffer),delete r.data2),t.postMessage(a,i)})};e.default=l}]).default}); \ No newline at end of file diff --git a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/webtorrent.min.js b/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/webtorrent.min.js deleted file mode 100644 index 8c1c01da3..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/DPlayer/lib/webtorrent.min.js +++ /dev/null @@ -1,9 +0,0 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.WebTorrent=e()}}(function(){var e;return function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[s]={exports:{}};t[s][0].call(f.exports,function(e){var n=t[s][1][e];return o(n||e)},f,f.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)o(r[s]);return o}({1:[function(e,t,n){function r(e,t){s.Readable.call(this,t),this.destroyed=!1,this._torrent=e._torrent;var n=t&&t.start||0,r=t&&t.end&&t.end<e.length?t.end:e.length-1,o=e._torrent.pieceLength;this._startPiece=(n+e.offset)/o|0,this._endPiece=(r+e.offset)/o|0,this._piece=this._startPiece,this._offset=n+e.offset-this._startPiece*o,this._missing=r-n+1,this._reading=!1,this._notifying=!1,this._criticalLength=Math.min(1048576/o|0,2)}t.exports=r;var o=e("debug")("webtorrent:file-stream"),i=e("inherits"),s=e("readable-stream");i(r,s.Readable),r.prototype._read=function(){this._reading||(this._reading=!0,this._notify())},r.prototype._notify=function(){var e=this;if(e._reading&&0!==e._missing){if(!e._torrent.bitfield.get(e._piece))return e._torrent.critical(e._piece,e._piece+e._criticalLength);if(!e._notifying){e._notifying=!0;var t=e._piece;e._torrent.store.get(t,function(n,r){if(e._notifying=!1,!e.destroyed){if(n)return e._destroy(n);o("read %s (length %s) (err %s)",t,r.length,n&&n.message),e._offset&&(r=r.slice(e._offset),e._offset=0),e._missing<r.length&&(r=r.slice(0,e._missing)),e._missing-=r.length,o("pushing buffer of length %s",r.length),e._reading=!1,e.push(r),0===e._missing&&e.push(null)}}),e._piece+=1}}},r.prototype.destroy=function(e){this._destroy(null,e)},r.prototype._destroy=function(e,t){this.destroyed||(this.destroyed=!0,this._torrent.destroyed||this._torrent.deselect(this._startPiece,this._endPiece,!0),e&&this.emit("error",e),this.emit("close"),t&&t())}},{debug:30,inherits:41,"readable-stream":82}],2:[function(e,t,n){(function(n){function r(e,t){i.call(this),this._torrent=e,this._destroyed=!1,this.name=t.name,this.path=t.path,this.length=t.length,this.offset=t.offset,this.done=!1;var n=t.offset,r=n+t.length-1;this._startPiece=n/this._torrent.pieceLength|0,this._endPiece=r/this._torrent.pieceLength|0,0===this.length&&(this.done=!0,this.emit("done"))}t.exports=r;var o=e("end-of-stream"),i=e("events").EventEmitter,s=e("./file-stream"),a=e("inherits"),u=e("path"),c=e("render-media"),f=e("readable-stream"),d=e("stream-to-blob"),h=e("stream-to-blob-url"),l=e("stream-with-known-length-to-buffer");a(r,i),Object.defineProperty(r.prototype,"downloaded",{get:function(){if(!this._torrent.bitfield)return 0;for(var e=0,t=this._startPiece;t<=this._endPiece;++t)if(this._torrent.bitfield.get(t))e+=this._torrent.pieceLength;else{var n=this._torrent.pieces[t];e+=n.length-n.missing}return e}}),r.prototype.select=function(e){0!==this.length&&this._torrent.select(this._startPiece,this._endPiece,e)},r.prototype.deselect=function(){0!==this.length&&this._torrent.deselect(this._startPiece,this._endPiece,!1)},r.prototype.createReadStream=function(e){var t=this;if(0===this.length){var r=new f.PassThrough;return n.nextTick(function(){r.end()}),r}var i=new s(t,e);return t._torrent.select(i._startPiece,i._endPiece,!0,function(){i._notify()}),o(i,function(){t._destroyed||t._torrent.destroyed||t._torrent.deselect(i._startPiece,i._endPiece,!0)}),i},r.prototype.getBuffer=function(e){l(this.createReadStream(),this.length,e)},r.prototype.getBlob=function(e){if("undefined"==typeof window)throw new Error("browser-only method");d(this.createReadStream(),this._getMimeType(),e)},r.prototype.getBlobURL=function(e){if("undefined"==typeof window)throw new Error("browser-only method");h(this.createReadStream(),this._getMimeType(),e)},r.prototype.appendTo=function(e,t,n){if("undefined"==typeof window)throw new Error("browser-only method");c.append(this,e,t,n)},r.prototype.renderTo=function(e,t,n){if("undefined"==typeof window)throw new Error("browser-only method");c.render(this,e,t,n)},r.prototype._getMimeType=function(){return c.mime[u.extname(this.name).toLowerCase()]},r.prototype._destroy=function(){this._destroyed=!0,this._torrent=null}}).call(this,e("_process"))},{"./file-stream":1,_process:66,"end-of-stream":33,events:34,inherits:41,path:63,"readable-stream":82,"render-media":83,"stream-to-blob":100,"stream-to-blob-url":99,"stream-with-known-length-to-buffer":101}],3:[function(e,t,n){function r(e,t){var n=this;n.id=e,n.type=t,s("new Peer %s",e),n.addr=null,n.conn=null,n.swarm=null,n.wire=null,n.connected=!1,n.destroyed=!1,n.timeout=null,n.retries=0,n.sentHandshake=!1}function o(){}var i=e("unordered-array-remove"),s=e("debug")("webtorrent:peer"),a=e("bittorrent-protocol"),u=e("./webconn");n.createWebRTCPeer=function(e,t){var n=new r(e.id,"webrtc");return n.conn=e,n.swarm=t,n.conn.connected?n.onConnect():(n.conn.once("connect",function(){n.onConnect()}),n.conn.once("error",function(e){n.destroy(e)}),n.startConnectTimeout()),n},n.createTCPIncomingPeer=function(e){var t=e.remoteAddress+":"+e.remotePort,n=new r(t,"tcpIncoming");return n.conn=e,n.addr=t,n.onConnect(),n},n.createTCPOutgoingPeer=function(e,t){var n=new r(e,"tcpOutgoing");return n.addr=e,n.swarm=t,n},n.createWebSeedPeer=function(e,t){var n=new r(e,"webSeed");return n.swarm=t,n.conn=new u(e,t),n.onConnect(),n},r.prototype.onConnect=function(){var e=this;if(!e.destroyed){e.connected=!0,s("Peer %s connected",e.id),clearTimeout(e.connectTimeout);var t=e.conn;t.once("end",function(){e.destroy()}),t.once("close",function(){e.destroy()}),t.once("finish",function(){e.destroy()}),t.once("error",function(t){e.destroy(t)});var n=e.wire=new a;n.type=e.type,n.once("end",function(){e.destroy()}),n.once("close",function(){e.destroy()}),n.once("finish",function(){e.destroy()}),n.once("error",function(t){e.destroy(t)}),n.once("handshake",function(t,n){e.onHandshake(t,n)}),e.startHandshakeTimeout(),t.pipe(n).pipe(t),e.swarm&&!e.sentHandshake&&e.handshake()}},r.prototype.onHandshake=function(e,t){var n=this;if(n.swarm&&!n.destroyed){if(n.swarm.destroyed)return n.destroy(new Error("swarm already destroyed"));if(e!==n.swarm.infoHash)return n.destroy(new Error("unexpected handshake info hash for this swarm"));if(t===n.swarm.peerId)return n.destroy(new Error("refusing to connect to ourselves"));s("Peer %s got handshake %s",n.id,e),clearTimeout(n.handshakeTimeout),n.retries=0;var r=n.addr;!r&&n.conn.remoteAddress&&(r=n.conn.remoteAddress+":"+n.conn.remotePort),n.swarm._onWire(n.wire,r),n.swarm&&!n.swarm.destroyed&&(n.sentHandshake||n.handshake())}},r.prototype.handshake=function(){var e=this,t={dht:!e.swarm.private&&!!e.swarm.client.dht};e.wire.handshake(e.swarm.infoHash,e.swarm.client.peerId,t),e.sentHandshake=!0},r.prototype.startConnectTimeout=function(){var e=this;clearTimeout(e.connectTimeout),e.connectTimeout=setTimeout(function(){e.destroy(new Error("connect timeout"))},"webrtc"===e.type?25e3:5e3),e.connectTimeout.unref&&e.connectTimeout.unref()},r.prototype.startHandshakeTimeout=function(){var e=this;clearTimeout(e.handshakeTimeout),e.handshakeTimeout=setTimeout(function(){e.destroy(new Error("handshake timeout"))},25e3),e.handshakeTimeout.unref&&e.handshakeTimeout.unref()},r.prototype.destroy=function(e){var t=this;if(!t.destroyed){t.destroyed=!0,t.connected=!1,s("destroy %s (error: %s)",t.id,e&&(e.message||e)),clearTimeout(t.connectTimeout),clearTimeout(t.handshakeTimeout);var n=t.swarm,r=t.conn,a=t.wire;t.swarm=null,t.conn=null,t.wire=null,n&&a&&i(n.wires,n.wires.indexOf(a)),r&&(r.on("error",o),r.destroy()),a&&a.destroy(),n&&n.removePeer(t.id)}}},{"./webconn":6,"bittorrent-protocol":14,debug:30,"unordered-array-remove":111}],4:[function(e,t,n){function r(e){var t=this;t._torrent=e,t._numPieces=e.pieces.length,t._pieces=[],t._onWire=function(e){t.recalculate(),t._initWire(e)},t._onWireHave=function(e){t._pieces[e]+=1},t._onWireBitfield=function(){t.recalculate()},t._torrent.wires.forEach(function(e){t._initWire(e)}),t._torrent.on("wire",t._onWire),t.recalculate()}function o(){return!0}t.exports=r,r.prototype.getRarestPiece=function(e){e||(e=o);for(var t=[],n=1/0,r=0;r<this._numPieces;++r)if(e(r)){var i=this._pieces[r];i===n?t.push(r):i<n&&(t=[r],n=i)}return t.length>0?t[Math.random()*t.length|0]:-1},r.prototype.destroy=function(){var e=this;e._torrent.removeListener("wire",e._onWire),e._torrent.wires.forEach(function(t){e._cleanupWireEvents(t)}),e._torrent=null,e._pieces=null,e._onWire=null,e._onWireHave=null,e._onWireBitfield=null},r.prototype._initWire=function(e){var t=this;e._onClose=function(){t._cleanupWireEvents(e);for(var n=0;n<this._numPieces;++n)t._pieces[n]-=e.peerPieces.get(n)},e.on("have",t._onWireHave),e.on("bitfield",t._onWireBitfield),e.once("close",e._onClose)},r.prototype.recalculate=function(){var e;for(e=0;e<this._numPieces;++e)this._pieces[e]=0;var t=this._torrent.wires.length;for(e=0;e<t;++e)for(var n=this._torrent.wires[e],r=0;r<this._numPieces;++r)this._pieces[r]+=n.peerPieces.get(r)},r.prototype._cleanupWireEvents=function(e){e.removeListener("have",this._onWireHave),e.removeListener("bitfield",this._onWireBitfield),e._onClose&&e.removeListener("close",e._onClose),e._onClose=null}},{}],5:[function(e,t,n){(function(n,r){function o(e,t,n){m.call(this),this._debugId="unknown infohash",this.client=t,this.announce=n.announce,this.urlList=n.urlList,this.path=n.path,this._store=n.store||v,this._getAnnounceOpts=n.getAnnounceOpts,this.strategy=n.strategy||"sequential",this.maxWebConns=n.maxWebConns||4,this._rechokeNumSlots=!1===n.uploads||0===n.uploads?0:+n.uploads||10,this._rechokeOptimisticWire=null,this._rechokeOptimisticTime=0,this._rechokeIntervalId=null,this.ready=!1,this.destroyed=!1,this.paused=!1,this.done=!1,this.metadata=null,this.store=null,this.files=[],this.pieces=[],this._amInterested=!1,this._selections=[],this._critical=[],this.wires=[],this._queue=[],this._peers={},this._peersLength=0,this.received=0,this.uploaded=0,this._downloadSpeed=O(),this._uploadSpeed=O(),this._servers=[],this._xsRequests=[],this._fileModtimes=n.fileModtimes,null!==e&&this._onTorrentId(e),this._debug("new torrent")}function i(e,t){return 2+Math.ceil(t*e.downloadSpeed()/T.BLOCK_LENGTH)}function s(e,t,n){return 1+Math.ceil(t*e.downloadSpeed()/n)}function a(e){return Math.random()*e|0}function u(){}t.exports=o;var c,f=e("addr-to-ip-port"),d=e("bitfield"),h=e("chunk-store-stream/write"),l=e("debug")("webtorrent:torrent"),p=e("torrent-discovery"),m=e("events").EventEmitter,g=e("xtend"),y=e("xtend/mutable"),_=e("fs"),v=e("fs-chunk-store"),b=e("simple-get"),w=e("immediate-chunk-store"),E=e("inherits"),k=e("multistream"),x=e("net"),S=e("os"),I=e("run-parallel"),B=e("run-parallel-limit"),A=e("parse-torrent"),C=e("path"),T=e("torrent-piece"),L=e("pump"),U=e("random-iterate"),R=e("simple-sha1"),O=e("speedometer"),M=e("uniq"),P=e("ut_metadata"),j=e("ut_pex"),H=e("./file"),N=e("./peer"),q=e("./rarity-map"),D=e("./server"),W=5e3,z=3*T.BLOCK_LENGTH,F=[1e3,5e3,15e3],V=e("../package.json").version,G="WebTorrent/"+V+" (https://webtorrent.io)";try{c=C.join(_.statSync("/tmp")&&"/tmp","webtorrent")}catch(e){c=C.join("function"==typeof S.tmpdir?S.tmpdir():"/","webtorrent")}E(o,m),Object.defineProperty(o.prototype,"timeRemaining",{get:function(){return this.done?0:0===this.downloadSpeed?1/0:(this.length-this.downloaded)/this.downloadSpeed*1e3}}),Object.defineProperty(o.prototype,"downloaded",{get:function(){if(!this.bitfield)return 0;for(var e=0,t=0,n=this.pieces.length;t<n;++t)if(this.bitfield.get(t))e+=t===n-1?this.lastPieceLength:this.pieceLength;else{var r=this.pieces[t];e+=r.length-r.missing}return e}}),Object.defineProperty(o.prototype,"downloadSpeed",{get:function(){return this._downloadSpeed()}}),Object.defineProperty(o.prototype,"uploadSpeed",{get:function(){return this._uploadSpeed()}}),Object.defineProperty(o.prototype,"progress",{get:function(){return this.length?this.downloaded/this.length:0}}),Object.defineProperty(o.prototype,"ratio",{get:function(){return this.uploaded/(this.received||1)}}),Object.defineProperty(o.prototype,"numPeers",{get:function(){return this.wires.length}}),Object.defineProperty(o.prototype,"torrentFileBlobURL",{get:function(){if("undefined"==typeof window)throw new Error("browser-only property");return this.torrentFile?URL.createObjectURL(new Blob([this.torrentFile],{type:"application/x-bittorrent"})):null}}),Object.defineProperty(o.prototype,"_numQueued",{get:function(){return this._queue.length+(this._peersLength-this._numConns)}}),Object.defineProperty(o.prototype,"_numConns",{get:function(){var e=this,t=0;for(var n in e._peers)e._peers[n].connected&&(t+=1);return t}}),Object.defineProperty(o.prototype,"swarm",{get:function(){return console.warn("WebTorrent: `torrent.swarm` is deprecated. Use `torrent` directly instead."),this}}),o.prototype._onTorrentId=function(e){var t=this;if(!t.destroyed){var r;try{r=A(e)}catch(e){}r?(t.infoHash=r.infoHash,t._debugId=r.infoHash.toString("hex").substring(0,7),n.nextTick(function(){t.destroyed||t._onParsedTorrent(r)})):A.remote(e,function(e,n){if(!t.destroyed)return e?t._destroy(e):void t._onParsedTorrent(n)})}},o.prototype._onParsedTorrent=function(e){var t=this;if(!t.destroyed){if(t._processParsedTorrent(e),!t.infoHash)return t._destroy(new Error("Malformed torrent data: No info hash"));t.path||(t.path=C.join(c,t.infoHash)),t._rechokeIntervalId=setInterval(function(){t._rechoke()},1e4),t._rechokeIntervalId.unref&&t._rechokeIntervalId.unref(),t.emit("_infoHash",t.infoHash),t.destroyed||(t.emit("infoHash",t.infoHash),t.destroyed||(t.client.listening?t._onListening():t.client.once("listening",function(){t._onListening()})))}},o.prototype._processParsedTorrent=function(e){this._debugId=e.infoHash.toString("hex").substring(0,7),this.announce&&(e.announce=e.announce.concat(this.announce)),this.client.tracker&&r.WEBTORRENT_ANNOUNCE&&!this.private&&(e.announce=e.announce.concat(r.WEBTORRENT_ANNOUNCE)),this.urlList&&(e.urlList=e.urlList.concat(this.urlList)),M(e.announce),M(e.urlList),y(this,e),this.magnetURI=A.toMagnetURI(e),this.torrentFile=A.toTorrentFile(e)},o.prototype._onListening=function(){function e(e){i._destroy(e)}function t(e){"string"==typeof e&&i.done||i.addPeer(e)}function n(){i.emit("trackerAnnounce"),0===i.numPeers&&i.emit("noPeers","tracker")}function r(){i.emit("dhtAnnounce"),0===i.numPeers&&i.emit("noPeers","dht")}function o(e){i.emit("warning",e)}var i=this;if(!i.discovery&&!i.destroyed){var s=i.client.tracker;s&&(s=g(i.client.tracker,{getAnnounceOpts:function(){var e={uploaded:i.uploaded,downloaded:i.downloaded,left:Math.max(i.length-i.downloaded,0)};return i.client.tracker.getAnnounceOpts&&y(e,i.client.tracker.getAnnounceOpts()),i._getAnnounceOpts&&y(e,i._getAnnounceOpts()),e}})),i.discovery=new p({infoHash:i.infoHash,announce:i.announce,peerId:i.client.peerId,dht:!i.private&&i.client.dht,tracker:s,port:i.client.torrentPort,userAgent:G}),i.discovery.on("error",e),i.discovery.on("peer",t),i.discovery.on("trackerAnnounce",n),i.discovery.on("dhtAnnounce",r),i.discovery.on("warning",o),i.info?i._onMetadata(i):i.xs&&i._getMetadataFromServer()}},o.prototype._getMetadataFromServer=function(){function e(e,n){function r(r,o,i){if(t.destroyed)return n(null);if(t.metadata)return n(null);if(r)return t.emit("warning",new Error("http error from xs param: "+e)),n(null);if(200!==o.statusCode)return t.emit("warning",new Error("non-200 status code "+o.statusCode+" from xs param: "+e)),n(null);var s;try{s=A(i)}catch(r){}return s?s.infoHash!==t.infoHash?(t.emit("warning",new Error("got torrent file with incorrect info hash from xs param: "+e)),n(null)):(t._onMetadata(s),void n(null)):(t.emit("warning",new Error("got invalid torrent file from xs param: "+e)),n(null))}if(0!==e.indexOf("http://")&&0!==e.indexOf("https://"))return t.emit("warning",new Error("skipping non-http xs param: "+e)),n(null);var o,i={url:e,method:"GET",headers:{"user-agent":G}};try{o=b.concat(i,r)}catch(r){return t.emit("warning",new Error("skipping invalid url xs param: "+e)),n(null)}t._xsRequests.push(o)}var t=this,n=Array.isArray(t.xs)?t.xs:[t.xs],r=n.map(function(t){return function(n){e(t,n)}});I(r)},o.prototype._onMetadata=function(e){var t=this;if(!t.metadata&&!t.destroyed){t._debug("got metadata"),t._xsRequests.forEach(function(e){e.abort()}),t._xsRequests=[];var n;if(e&&e.infoHash)n=e;else try{n=A(e)}catch(e){return t._destroy(e)}t._processParsedTorrent(n),t.metadata=t.torrentFile,t.client.enableWebSeeds&&t.urlList.forEach(function(e){t.addWebSeed(e)}),0!==t.pieces.length&&t.select(0,t.pieces.length-1,!1),t._rarityMap=new q(t),t.store=new w(new t._store(t.pieceLength,{torrent:{infoHash:t.infoHash},files:t.files.map(function(e){return{path:C.join(t.path,e.path),length:e.length,offset:e.offset}}),length:t.length})),t.files=t.files.map(function(e){return new H(t,e)}),t._hashes=t.pieces,t.pieces=t.pieces.map(function(e,n){var r=n===t.pieces.length-1?t.lastPieceLength:t.pieceLength;return new T(r)}),t._reservations=t.pieces.map(function(){return[]}),t.bitfield=new d(t.pieces.length),t.wires.forEach(function(e){e.ut_metadata&&e.ut_metadata.setMetadata(t.metadata),t._onWireWithMetadata(e)}),t._debug("verifying existing torrent data"),t._fileModtimes&&t._store===v?t.getFileModtimes(function(e,n){if(e)return t._destroy(e);if(t.files.map(function(e,r){return n[r]===t._fileModtimes[r]}).every(function(e){return e})){for(var r=0;r<t.pieces.length;r++)t._markVerified(r);t._onStore()}else t._verifyPieces()}):t._verifyPieces(),t.emit("metadata")}},o.prototype.getFileModtimes=function(e){var t=this,n=[];B(t.files.map(function(e,r){return function(o){_.stat(C.join(t.path,e.path),function(e,t){if(e&&"ENOENT"!==e.code)return o(e);n[r]=t&&t.mtime.getTime(),o(null)})}}),2,function(r){t._debug("done getting file modtimes"),e(r,n)})},o.prototype._verifyPieces=function(){var e=this;B(e.pieces.map(function(t,r){return function(t){if(e.destroyed)return t(new Error("torrent is destroyed"));e.store.get(r,function(o,i){return e.destroyed?t(new Error("torrent is destroyed")):o?n.nextTick(t,null):void R(i,function(n){if(e.destroyed)return t(new Error("torrent is destroyed"));if(n===e._hashes[r]){if(!e.pieces[r])return;e._debug("piece verified %s",r),e._markVerified(r)}else e._debug("piece invalid %s",r);t(null)})})}}),2,function(t){if(t)return e._destroy(t);e._debug("done verifying"),e._onStore()})},o.prototype._markVerified=function(e){this.pieces[e]=null,this._reservations[e]=null,this.bitfield.set(e,!0)},o.prototype._onStore=function(){var e=this;e.destroyed||(e._debug("on store"),e.ready=!0,e.emit("ready"),e._checkDone(),e._updateSelections())},o.prototype.destroy=function(e){this._destroy(null,e)},o.prototype._destroy=function(e,t){var n=this;if(!n.destroyed){n.destroyed=!0,n._debug("destroy"),n.client._remove(n),clearInterval(n._rechokeIntervalId),n._xsRequests.forEach(function(e){e.abort()}),n._rarityMap&&n._rarityMap.destroy();for(var r in n._peers)n.removePeer(r);n.files.forEach(function(e){e instanceof H&&e._destroy()});var o=n._servers.map(function(e){return function(t){e.destroy(t)}});n.discovery&&o.push(function(e){n.discovery.destroy(e)}),n.store&&o.push(function(e){n.store.close(e)}),I(o,t),e&&(0===n.listenerCount("error")?n.client.emit("error",e):n.emit("error",e)),n.emit("close"),n.client=null,n.files=[],n.discovery=null,n.store=null,n._rarityMap=null,n._peers=null,n._servers=null,n._xsRequests=null}},o.prototype.addPeer=function(e){var t=this;if(t.destroyed)throw new Error("torrent is destroyed");if(!t.infoHash)throw new Error("addPeer() must not be called before the `infoHash` event");if(t.client.blocked){var n;if("string"==typeof e){var r;try{r=f(e)}catch(n){return t._debug("ignoring peer: invalid %s",e),t.emit("invalidPeer",e),!1}n=r[0]}else"string"==typeof e.remoteAddress&&(n=e.remoteAddress);if(n&&t.client.blocked.contains(n))return t._debug("ignoring peer: blocked %s",e),"string"!=typeof e&&e.destroy(),t.emit("blockedPeer",e),!1}var o=!!t._addPeer(e);return o?t.emit("peer",e):t.emit("invalidPeer",e),o},o.prototype._addPeer=function(e){var t=this;if(t.destroyed)return"string"!=typeof e&&e.destroy(),null;if("string"==typeof e&&!t._validAddr(e))return t._debug("ignoring peer: invalid %s",e),null;var n=e&&e.id||e;if(t._peers[n])return t._debug("ignoring peer: duplicate (%s)",n),"string"!=typeof e&&e.destroy(),null;if(t.paused)return t._debug("ignoring peer: torrent is paused"),"string"!=typeof e&&e.destroy(),null;t._debug("add peer %s",n);var r;return r="string"==typeof e?N.createTCPOutgoingPeer(e,t):N.createWebRTCPeer(e,t),t._peers[r.id]=r,t._peersLength+=1,"string"==typeof e&&(t._queue.push(r),t._drain()),r},o.prototype.addWebSeed=function(e){if(this.destroyed)throw new Error("torrent is destroyed");if(!/^https?:\/\/.+/.test(e))return this.emit("warning",new Error("ignoring invalid web seed: "+e)),void this.emit("invalidPeer",e);if(this._peers[e])return this.emit("warning",new Error("ignoring duplicate web seed: "+e)),void this.emit("invalidPeer",e);this._debug("add web seed %s",e);var t=N.createWebSeedPeer(e,this);this._peers[t.id]=t,this._peersLength+=1,this.emit("peer",e)},o.prototype._addIncomingPeer=function(e){var t=this;return t.destroyed?e.destroy(new Error("torrent is destroyed")):t.paused?e.destroy(new Error("torrent is paused")):(this._debug("add incoming peer %s",e.id),t._peers[e.id]=e,void(t._peersLength+=1))},o.prototype.removePeer=function(e){var t=this,n=e&&e.id||e;(e=t._peers[n])&&(this._debug("removePeer %s",n),delete t._peers[n],t._peersLength-=1,e.destroy(),t._drain())},o.prototype.select=function(e,t,n,r){var o=this;if(o.destroyed)throw new Error("torrent is destroyed");if(e<0||t<e||o.pieces.length<=t)throw new Error("invalid selection ",e,":",t);n=Number(n)||0,o._debug("select %s-%s (priority %s)",e,t,n),o._selections.push({from:e,to:t,offset:0,priority:n,notify:r||u}),o._selections.sort(function(e,t){return t.priority-e.priority}),o._updateSelections()},o.prototype.deselect=function(e,t,n){var r=this;if(r.destroyed)throw new Error("torrent is destroyed");n=Number(n)||0,r._debug("deselect %s-%s (priority %s)",e,t,n);for(var o=0;o<r._selections.length;++o){var i=r._selections[o];if(i.from===e&&i.to===t&&i.priority===n){r._selections.splice(o,1);break}}r._updateSelections()},o.prototype.critical=function(e,t){var n=this;if(n.destroyed)throw new Error("torrent is destroyed");n._debug("critical %s-%s",e,t);for(var r=e;r<=t;++r)n._critical[r]=!0;n._updateSelections()},o.prototype._onWire=function(e,t){var r=this;if(r._debug("got wire %s (%s)",e._debugId,t||"Unknown"),e.on("download",function(e){r.destroyed||(r.received+=e,r._downloadSpeed(e),r.client._downloadSpeed(e),r.emit("download",e),r.client.emit("download",e))}),e.on("upload",function(e){r.destroyed||(r.uploaded+=e,r._uploadSpeed(e),r.client._uploadSpeed(e),r.emit("upload",e),r.client.emit("upload",e))}),r.wires.push(e),t){var o=f(t);e.remoteAddress=o[0],e.remotePort=o[1]}r.client.dht&&r.client.dht.listening&&e.on("port",function(n){if(!r.destroyed&&!r.client.dht.destroyed){if(!e.remoteAddress)return r._debug("ignoring PORT from peer with no address");if(0===n||n>65536)return r._debug("ignoring invalid PORT from peer");r._debug("port: %s (from %s)",n,t),r.client.dht.addNode({host:e.remoteAddress,port:n})}}),e.on("timeout",function(){r._debug("wire timeout (%s)",t),e.destroy()}),e.setTimeout(3e4,!0),e.setKeepAlive(!0),e.use(P(r.metadata)),e.ut_metadata.on("warning",function(e){r._debug("ut_metadata warning: %s",e.message)}),r.metadata||(e.ut_metadata.on("metadata",function(e){r._debug("got metadata via ut_metadata"),r._onMetadata(e)}),e.ut_metadata.fetch()),"function"!=typeof j||r.private||(e.use(j()),e.ut_pex.on("peer",function(e){r.done||(r._debug("ut_pex: got peer: %s (from %s)",e,t),r.addPeer(e))}),e.ut_pex.on("dropped",function(e){var n=r._peers[e];n&&!n.connected&&(r._debug("ut_pex: dropped peer: %s (from %s)",e,t),r.removePeer(e))}),e.once("close",function(){e.ut_pex.reset()})),r.emit("wire",e,t),r.metadata&&n.nextTick(function(){r._onWireWithMetadata(e)})},o.prototype._onWireWithMetadata=function(e){function t(){o.destroyed||e.destroyed||(o._numQueued>2*(o._numConns-o.numPeers)&&e.amInterested?e.destroy():(i=setTimeout(t,W),i.unref&&i.unref()))}function n(){if(e.peerPieces.buffer.length===o.bitfield.buffer.length){for(r=0;r<o.pieces.length;++r)if(!e.peerPieces.get(r))return;e.isSeeder=!0,e.choke()}}var r,o=this,i=null;e.on("bitfield",function(){n(),o._update()}),e.on("have",function(){n(),o._update()}),e.once("interested",function(){e.unchoke()}),e.once("close",function(){clearTimeout(i)}),e.on("choke",function(){clearTimeout(i),i=setTimeout(t,W),i.unref&&i.unref()}),e.on("unchoke",function(){clearTimeout(i),o._update()}),e.on("request",function(t,n,r,i){if(r>131072)return e.destroy();o.pieces[t]||o.store.get(t,{offset:n,length:r},i)}),e.bitfield(o.bitfield),e.interested(),e.peerExtensions.dht&&o.client.dht&&o.client.dht.listening&&e.port(o.client.dht.address().port),"webSeed"!==e.type&&(i=setTimeout(t,W),i.unref&&i.unref()),e.isSeeder=!1,n()},o.prototype._updateSelections=function(){var e=this;e.ready&&!e.destroyed&&(n.nextTick(function(){e._gcSelections()}),e._updateInterest(),e._update())},o.prototype._gcSelections=function(){for(var e=this,t=0;t<e._selections.length;++t){for(var n=e._selections[t],r=n.offset;e.bitfield.get(n.from+n.offset)&&n.from+n.offset<n.to;)n.offset+=1;r!==n.offset&&n.notify(),n.to===n.from+n.offset&&(e.bitfield.get(n.from+n.offset)&&(e._selections.splice(t,1),t-=1,n.notify(),e._updateInterest()))}e._selections.length||e.emit("idle")},o.prototype._updateInterest=function(){var e=this,t=e._amInterested;e._amInterested=!!e._selections.length,e.wires.forEach(function(t){e._amInterested?t.interested():t.uninterested()}),t!==e._amInterested&&(e._amInterested?e.emit("interested"):e.emit("uninterested"))},o.prototype._update=function(){var e=this;if(!e.destroyed)for(var t,n=U(e.wires);t=n();)e._updateWire(t)},o.prototype._updateWire=function(e){function t(t,n,r,o){return function(i){return i>=t&&i<=n&&!(i in r)&&e.peerPieces.get(i)&&(!o||o(i))}}function n(){var t=e.downloadSpeed()||1;if(t>z)return function(){return!0};var n=Math.max(1,e.requests.length)*T.BLOCK_LENGTH/t,r=10,o=0;return function(e){if(!r||s.bitfield.get(e))return!0;for(var i=s.pieces[e].missing;o<s.wires.length;o++){var a=s.wires[o],u=a.downloadSpeed();if(!(u<z)&&(!(u<=t)&&a.peerPieces.get(e)&&!((i-=u*n)>0)))return r--,!1}return!0}}function r(e){for(var t=e,n=e;n<s._selections.length&&s._selections[n].priority;n++)t=n;var r=s._selections[e];s._selections[e]=s._selections[t],s._selections[t]=r}function o(o){if(e.requests.length>=u)return!0;for(var i=n(),a=0;a<s._selections.length;a++){var c,f=s._selections[a];if("rarest"===s.strategy)for(var d=f.from+f.offset,h=f.to,l=h-d+1,p={},m=0,g=t(d,h,p,i);m<l&&!((c=s._rarityMap.getRarestPiece(g))<0);){for(;s._request(e,c,s._critical[c]||o););if(!(e.requests.length<u))return f.priority&&r(a),!0;p[c]=!0,m++}else for(c=f.from+f.offset;c<=f.to;c++)if(e.peerPieces.get(c)&&i(c)){for(;s._request(e,c,s._critical[c]||o););if(!(e.requests.length<u))return f.priority&&r(a),!0}}return!1}var s=this;if(!e.peerChoking){if(!e.downloaded)return function(){if(!e.requests.length)for(var n=s._selections.length;n--;){var r,o=s._selections[n];if("rarest"===s.strategy)for(var i=o.from+o.offset,a=o.to,u=a-i+1,c={},f=0,d=t(i,a,c);f<u&&!((r=s._rarityMap.getRarestPiece(d))<0);){if(s._request(e,r,!1))return;c[r]=!0,f+=1}else for(r=o.to;r>=o.from+o.offset;--r)if(e.peerPieces.get(r)&&s._request(e,r,!1))return}}();var a=i(e,.5);if(!(e.requests.length>=a)){var u=i(e,1);o(!1)||o(!0)}}},o.prototype._rechoke=function(){function e(e,t){return e.downloadSpeed!==t.downloadSpeed?t.downloadSpeed-e.downloadSpeed:e.uploadSpeed!==t.uploadSpeed?t.uploadSpeed-e.uploadSpeed:e.wire.amChoking!==t.wire.amChoking?e.wire.amChoking?1:-1:e.salt-t.salt}var t=this;if(t.ready){t._rechokeOptimisticTime>0?t._rechokeOptimisticTime-=1:t._rechokeOptimisticWire=null;var n=[];t.wires.forEach(function(e){e.isSeeder||e===t._rechokeOptimisticWire||n.push({wire:e,downloadSpeed:e.downloadSpeed(),uploadSpeed:e.uploadSpeed(),salt:Math.random(),isChoked:!0})}),n.sort(e);for(var r=0,o=0;o<n.length&&r<t._rechokeNumSlots;++o)n[o].isChoked=!1,n[o].wire.peerInterested&&(r+=1);if(!t._rechokeOptimisticWire&&o<n.length&&t._rechokeNumSlots){var i=n.slice(o).filter(function(e){return e.wire.peerInterested}),s=i[a(i.length)];s&&(s.isChoked=!1,t._rechokeOptimisticWire=s.wire,t._rechokeOptimisticTime=2)}n.forEach(function(e){e.wire.amChoking!==e.isChoked&&(e.isChoked?e.wire.choke():e.wire.unchoke())})}},o.prototype._hotswap=function(e,t){var n=this,r=e.downloadSpeed();if(r<T.BLOCK_LENGTH)return!1;if(!n._reservations[t])return!1;var o=n._reservations[t];if(!o)return!1;var i,s,a=1/0;for(s=0;s<o.length;s++){var u=o[s];if(u&&u!==e){var c=u.downloadSpeed();c>=z||2*c>r||c>a||(i=u,a=c)}}if(!i)return!1;for(s=0;s<o.length;s++)o[s]===i&&(o[s]=null);for(s=0;s<i.requests.length;s++){var f=i.requests[s];f.piece===t&&n.pieces[t].cancel(f.offset/T.BLOCK_LENGTH|0)}return n.emit("hotswap",i,e,t),!0},o.prototype._request=function(e,t,r){function o(){n.nextTick(function(){a._update()})}var a=this,u=e.requests.length,c="webSeed"===e.type;if(a.bitfield.get(t))return!1;if(u>=(c?Math.min(s(e,1,a.pieceLength),a.maxWebConns):i(e,1)))return!1;var f=a.pieces[t],d=c?f.reserveRemaining():f.reserve();if(-1===d&&r&&a._hotswap(e,t)&&(d=c?f.reserveRemaining():f.reserve()),-1===d)return!1;var h=a._reservations[t];h||(h=a._reservations[t]=[]);var l=h.indexOf(null);-1===l&&(l=h.length),h[l]=e;var p=f.chunkOffset(d),m=c?f.chunkLengthRemaining(d):f.chunkLength(d);return e.request(t,p,m,function n(r,i){if(!a.destroyed){if(!a.ready)return a.once("ready",function(){n(r,i)});if(h[l]===e&&(h[l]=null),f!==a.pieces[t])return o();if(r)return a._debug("error getting piece %s (offset: %s length: %s) from %s: %s",t,p,m,e.remoteAddress+":"+e.remotePort,r.message),c?f.cancelRemaining(d):f.cancel(d),void o();if(a._debug("got piece %s (offset: %s length: %s) from %s",t,p,m,e.remoteAddress+":"+e.remotePort),!f.set(d,i,e))return o();var s=f.flush();R(s,function(e){if(!a.destroyed){if(e===a._hashes[t]){if(!a.pieces[t])return;a._debug("piece verified %s",t),a.pieces[t]=null,a._reservations[t]=null,a.bitfield.set(t,!0),a.store.put(t,s),a.wires.forEach(function(e){e.have(t)}),a._checkDone()&&!a.destroyed&&a.discovery.complete()}else a.pieces[t]=new T(f.length),a.emit("warning",new Error("Piece "+t+" failed verification"));o()}})}}),!0},o.prototype._checkDone=function(){var e=this;if(!e.destroyed){e.files.forEach(function(t){if(!t.done){for(var n=t._startPiece;n<=t._endPiece;++n)if(!e.bitfield.get(n))return;t.done=!0,t.emit("done"),e._debug("file done: "+t.name)}});for(var t=!0,n=0;n<e._selections.length;n++){for(var r=e._selections[n],o=r.from;o<=r.to;o++)if(!e.bitfield.get(o)){t=!1;break}if(!t)break}return!e.done&&t&&(e.done=!0,e._debug("torrent done: "+e.infoHash),e.emit("done")),e._gcSelections(),t}},o.prototype.load=function(e,t){var n=this;if(n.destroyed)throw new Error("torrent is destroyed");if(!n.ready)return n.once("ready",function(){n.load(e,t)});Array.isArray(e)||(e=[e]),t||(t=u);var r=new k(e),o=new h(n.store,n.pieceLength);L(r,o,function(e){if(e)return t(e);n.pieces.forEach(function(e,t){n.pieces[t]=null,n._reservations[t]=null,n.bitfield.set(t,!0)}),n._checkDone(),t(null)})},o.prototype.createServer=function(e){if("function"!=typeof D)throw new Error("node.js-only method");if(this.destroyed)throw new Error("torrent is destroyed");var t=new D(this,e);return this._servers.push(t),t},o.prototype.pause=function(){ -this.destroyed||(this._debug("pause"),this.paused=!0)},o.prototype.resume=function(){this.destroyed||(this._debug("resume"),this.paused=!1,this._drain())},o.prototype._debug=function(){var e=[].slice.call(arguments);e[0]="["+this.client._debugId+"] ["+this._debugId+"] "+e[0],l.apply(null,e)},o.prototype._drain=function(){var e=this;if(this._debug("_drain numConns %s maxConns %s",e._numConns,e.client.maxConns),!("function"!=typeof x.connect||e.destroyed||e.paused||e._numConns>=e.client.maxConns)){this._debug("drain (%s queued, %s/%s peers)",e._numQueued,e.numPeers,e.client.maxConns);var t=e._queue.shift();if(t){this._debug("tcp connect attempt to %s",t.addr);var n=f(t.addr),r={host:n[0],port:n[1]},o=t.conn=x.connect(r);o.once("connect",function(){t.onConnect()}),o.once("error",function(e){t.destroy(e)}),t.startConnectTimeout(),o.on("close",function(){if(!e.destroyed){if(t.retries>=F.length)return void e._debug("conn %s closed: will not re-add (max %s attempts)",t.addr,F.length);var n=F[t.retries];e._debug("conn %s closed: will re-add to queue in %sms (attempt %s)",t.addr,n,t.retries+1);var r=setTimeout(function(){var n=e._addPeer(t.addr);n&&(n.retries=t.retries+1)},n);r.unref&&r.unref()}})}}},o.prototype._validAddr=function(e){var t;try{t=f(e)}catch(e){return!1}var n=t[0],r=t[1];return r>0&&r<65535&&!("127.0.0.1"===n&&r===this.client.torrentPort)}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../package.json":122,"./file":2,"./peer":3,"./rarity-map":4,"./server":21,_process:66,"addr-to-ip-port":7,bitfield:13,"chunk-store-stream/write":26,debug:30,events:34,fs:22,"fs-chunk-store":50,"immediate-chunk-store":40,inherits:41,multistream:58,net:21,os:21,"parse-torrent":62,path:63,pump:67,"random-iterate":72,"run-parallel":86,"run-parallel-limit":85,"simple-get":90,"simple-sha1":92,speedometer:94,"torrent-discovery":106,"torrent-piece":107,uniq:110,ut_metadata:114,ut_pex:21,xtend:119,"xtend/mutable":120}],6:[function(e,t,n){function r(e,t){f.call(this),this.url=e,this.webPeerId=c.sync(e),this._torrent=t,this._init()}t.exports=r;var o=e("bitfield"),i=e("safe-buffer").Buffer,s=e("debug")("webtorrent:webconn"),a=e("simple-get"),u=e("inherits"),c=e("simple-sha1"),f=e("bittorrent-protocol"),d=e("../package.json").version;u(r,f),r.prototype._init=function(){var e=this;e.setKeepAlive(!0),e.once("handshake",function(t,n){if(!e.destroyed){e.handshake(t,e.webPeerId);for(var r=e._torrent.pieces.length,i=new o(r),s=0;s<=r;s++)i.set(s,!0);e.bitfield(i)}}),e.once("interested",function(){s("interested"),e.unchoke()}),e.on("uninterested",function(){s("uninterested")}),e.on("choke",function(){s("choke")}),e.on("unchoke",function(){s("unchoke")}),e.on("bitfield",function(){s("bitfield")}),e.on("request",function(t,n,r,o){s("request pieceIndex=%d offset=%d length=%d",t,n,r),e.httpRequest(t,n,r,o)})},r.prototype.httpRequest=function(e,t,n,r){var o,u=this,c=e*u._torrent.pieceLength,f=c+t,h=f+n-1,l=u._torrent.files;if(l.length<=1)o=[{url:u.url,start:f,end:h}];else{var p=l.filter(function(e){return e.offset<=h&&e.offset+e.length>f});if(p.length<1)return r(new Error("Could not find file corresponnding to web seed range request"));o=p.map(function(e){var t=e.offset+e.length-1;return{url:u.url+("/"===u.url[u.url.length-1]?"":"/")+e.path,fileOffsetInRange:Math.max(e.offset-f,0),start:Math.max(f-e.offset,0),end:Math.min(t,h-e.offset)}})}var m,g=0,y=!1;o.length>1&&(m=i.alloc(n)),o.forEach(function(i){function u(e,t){if(e.statusCode<200||e.statusCode>=300)return y=!0,r(new Error("Unexpected HTTP status code "+e.statusCode));s("Got data of length %d",t.length),1===o.length?r(null,t):(t.copy(m,i.fileOffsetInRange),++g===o.length&&r(null,m))}var c=i.url,f=i.start,h=i.end;s("Requesting url=%s pieceIndex=%d offset=%d length=%d start=%d end=%d",c,e,t,n,f,h);var l={url:c,method:"GET",headers:{"user-agent":"WebTorrent/"+d+" (https://webtorrent.io)",range:"bytes="+f+"-"+h}};a.concat(l,function(e,t,n){if(!y)return e?"undefined"==typeof window||c.startsWith(window.location.origin+"/")?(y=!0,r(e)):a.head(c,function(t,n){if(!y){if(t)return y=!0,r(t);if(n.statusCode<200||n.statusCode>=300)return y=!0,r(new Error("Unexpected HTTP status code "+n.statusCode));if(n.url===c)return y=!0,r(e);l.url=n.url,a.concat(l,function(e,t,n){if(!y)return e?(y=!0,r(e)):void u(t,n)})}}):void u(t,n)})})},r.prototype.destroy=function(){f.prototype.destroy.call(this),this._torrent=null}},{"../package.json":122,bitfield:13,"bittorrent-protocol":14,debug:30,inherits:41,"safe-buffer":88,"simple-get":90,"simple-sha1":92}],7:[function(e,t,n){var r=/^\[?([^\]]+)\]?:(\d+)$/,o={},i=0;t.exports=function(e){if(1e5===i&&t.exports.reset(),!o[e]){var n=r.exec(e);if(!n)throw new Error("invalid addr: "+e);o[e]=[n[1],Number(n[2])],i+=1}return o[e]},t.exports.reset=function(){o={},i=0}},{}],8:[function(e,t,n){"use strict";function r(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function o(e){return 3*e.length/4-r(e)}function i(e){var t,n,o,i,s,a,u=e.length;s=r(e),a=new d(3*u/4-s),o=s>0?u-4:u;var c=0;for(t=0,n=0;t<o;t+=4,n+=3)i=f[e.charCodeAt(t)]<<18|f[e.charCodeAt(t+1)]<<12|f[e.charCodeAt(t+2)]<<6|f[e.charCodeAt(t+3)],a[c++]=i>>16&255,a[c++]=i>>8&255,a[c++]=255&i;return 2===s?(i=f[e.charCodeAt(t)]<<2|f[e.charCodeAt(t+1)]>>4,a[c++]=255&i):1===s&&(i=f[e.charCodeAt(t)]<<10|f[e.charCodeAt(t+1)]<<4|f[e.charCodeAt(t+2)]>>2,a[c++]=i>>8&255,a[c++]=255&i),a}function s(e){return c[e>>18&63]+c[e>>12&63]+c[e>>6&63]+c[63&e]}function a(e,t,n){for(var r,o=[],i=t;i<n;i+=3)r=(e[i]<<16)+(e[i+1]<<8)+e[i+2],o.push(s(r));return o.join("")}function u(e){for(var t,n=e.length,r=n%3,o="",i=[],s=0,u=n-r;s<u;s+=16383)i.push(a(e,s,s+16383>u?u:s+16383));return 1===r?(t=e[n-1],o+=c[t>>2],o+=c[t<<4&63],o+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],o+=c[t>>10],o+=c[t>>4&63],o+=c[t<<2&63],o+="="),i.push(o),i.join("")}n.byteLength=o,n.toByteArray=i,n.fromByteArray=u;for(var c=[],f=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=h.length;l<p;++l)c[l]=h[l],f[h.charCodeAt(l)]=l;f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63},{}],9:[function(e,t,n){(function(e){function n(e,t,n){for(var r=0,o=1,i=t;i<n;i++){var s=e[i];if(s<58&&s>=48)r=10*r+(s-48);else if(i!==t||43!==s){if(i!==t||45!==s){if(46===s)break;throw new Error("not a number: buffer["+i+"] = "+s)}o=-1}}return r*o}function r(t,n,o,i){return null==t||0===t.length?null:("number"!=typeof n&&null==i&&(i=n,n=void 0),"number"!=typeof o&&null==i&&(i=o,o=void 0),r.position=0,r.encoding=i||null,r.data=e.isBuffer(t)?t.slice(n,o):new e(t),r.bytes=r.data.length,r.next())}r.bytes=0,r.position=0,r.data=null,r.encoding=null,r.next=function(){switch(r.data[r.position]){case 100:return r.dictionary();case 108:return r.list();case 105:return r.integer();default:return r.buffer()}},r.find=function(e){for(var t=r.position,n=r.data.length,o=r.data;t<n;){if(o[t]===e)return t;t++}throw new Error('Invalid data: Missing delimiter "'+String.fromCharCode(e)+'" [0x'+e.toString(16)+"]")},r.dictionary=function(){r.position++;for(var e={};101!==r.data[r.position];)e[r.buffer()]=r.next();return r.position++,e},r.list=function(){r.position++;for(var e=[];101!==r.data[r.position];)e.push(r.next());return r.position++,e},r.integer=function(){var e=r.find(101),t=n(r.data,r.position+1,e);return r.position+=e+1-r.position,t},r.buffer=function(){var e=r.find(58),t=n(r.data,r.position,e),o=++e+t;return r.position=o,r.encoding?r.data.toString(r.encoding,e,o):r.data.slice(e,o)},t.exports=r}).call(this,e("buffer").Buffer)},{buffer:24}],10:[function(e,t,n){(function(e){function n(t,r,o){var i=[],s=null;return n._encode(i,t),s=e.concat(i),n.bytes=s.length,e.isBuffer(r)?(s.copy(r,o),r):s}n.bytes=-1,n._floatConversionDetected=!1,n._encode=function(t,r){if(e.isBuffer(r))return t.push(new e(r.length+":")),void t.push(r);if(null!=r)switch(typeof r){case"string":n.buffer(t,r);break;case"number":n.number(t,r);break;case"object":r.constructor===Array?n.list(t,r):n.dict(t,r);break;case"boolean":n.number(t,r?1:0)}};var r=new e("e"),o=new e("d"),i=new e("l");n.buffer=function(t,n){t.push(new e(e.byteLength(n)+":"+n))},n.number=function(t,r){var o=r/2147483648<<0,i=r%2147483648<<0,s=2147483648*o+i;t.push(new e("i"+s+"e")),s===r||n._floatConversionDetected||(n._floatConversionDetected=!0,console.warn('WARNING: Possible data corruption detected with value "'+r+'":','Bencoding only defines support for integers, value was converted to "'+s+'"'),console.trace())},n.dict=function(e,t){e.push(o);for(var i,s=0,a=Object.keys(t).sort(),u=a.length;s<u;s++)i=a[s],null!=t[i]&&(n.buffer(e,i),n._encode(e,t[i]));e.push(r)},n.list=function(e,t){var o=0,s=t.length;for(e.push(i);o<s;o++)null!=t[o]&&n._encode(e,t[o]);e.push(r)},t.exports=n}).call(this,e("buffer").Buffer)},{buffer:24}],11:[function(e,t,n){var r=t.exports;r.encode=e("./encode"),r.decode=e("./decode"),r.byteLength=r.encodingLength=function(e){return r.encode(e).length}},{"./decode":9,"./encode":10}],12:[function(e,t,n){t.exports=function(e,t,n,r,o){var i,s;if(void 0===r)r=0;else if((r|=0)<0||r>=e.length)throw new RangeError("invalid lower bound");if(void 0===o)o=e.length-1;else if((o|=0)<r||o>=e.length)throw new RangeError("invalid upper bound");for(;r<=o;)if(i=r+(o-r>>1),(s=+n(e[i],t,i,e))<0)r=i+1;else{if(!(s>0))return i;o=i-1}return~r}},{}],13:[function(e,t,n){(function(e){function n(e,t){if(!(this instanceof n))return new n(e,t);0===arguments.length&&(e=0),this.grow=t&&(isFinite(t.grow)&&r(t.grow)||t.grow)||0,"number"!=typeof e&&void 0!==e||(e=new o(r(e)),e.fill&&!e._isBuffer&&e.fill(0)),this.buffer=e}function r(e){var t=e>>3;return e%8!=0&&t++,t}var o=void 0!==e?e:"undefined"!=typeof Int8Array?Int8Array:function(e){for(var t=new Array(e),n=0;n<e;n++)t[n]=0};n.prototype.get=function(e){var t=e>>3;return t<this.buffer.length&&!!(this.buffer[t]&128>>e%8)},n.prototype.set=function(e,t){var n=e>>3;t||1===arguments.length?(this.buffer.length<n+1&&this._grow(Math.max(n+1,Math.min(2*this.buffer.length,this.grow))),this.buffer[n]|=128>>e%8):n<this.buffer.length&&(this.buffer[n]&=~(128>>e%8))},n.prototype._grow=function(e){if(this.buffer.length<e&&e<=this.grow){var t=new o(e);if(t.fill&&t.fill(0),this.buffer.copy)this.buffer.copy(t,0);else for(var n=0;n<this.buffer.length;n++)t[n]=this.buffer[n];this.buffer=t}},void 0!==t&&(t.exports=n)}).call(this,e("buffer").Buffer)},{buffer:24}],14:[function(e,t,n){function r(e,t,n,r){this.piece=e,this.offset=t,this.length=n,this.callback=r}function o(){if(!(this instanceof o))return new o;m.Duplex.call(this),this._debugId=l(4).toString("hex"),this._debug("new wire"),this.peerId=null,this.peerIdBuffer=null,this.type=null,this.amChoking=!0,this.amInterested=!1,this.peerChoking=!0,this.peerInterested=!1,this.peerPieces=new u(0,{grow:g}),this.peerExtensions={},this.requests=[],this.peerRequests=[],this.extendedMapping={},this.peerExtendedMapping={},this.extendedHandshake={},this.peerExtendedHandshake={},this._ext={},this._nextExt=1,this.uploaded=0,this.downloaded=0,this.uploadSpeed=p(),this.downloadSpeed=p(),this._keepAliveInterval=null,this._timeout=null,this._timeoutMs=0,this.destroyed=!1,this._finished=!1,this._parserSize=0,this._parser=null,this._buffer=[],this._bufferSize=0,this.on("finish",this._onFinish),this._parseHandshake()}function i(e,t,n,r){for(var o=0;o<e.length;o++){var i=e[o];if(i.piece===t&&i.offset===n&&i.length===r)return s(e,o),i}return null}t.exports=o;var s=e("unordered-array-remove"),a=e("bencode"),u=e("bitfield"),c=e("safe-buffer").Buffer,f=e("debug")("bittorrent-protocol"),d=e("xtend"),h=e("inherits"),l=e("randombytes"),p=e("speedometer"),m=e("readable-stream"),g=4e5,y=c.from("BitTorrent protocol"),_=c.from([0,0,0,0]),v=c.from([0,0,0,1,0]),b=c.from([0,0,0,1,1]),w=c.from([0,0,0,1,2]),E=c.from([0,0,0,1,3]),k=[0,0,0,0,0,0,0,0],x=[0,0,0,3,9,0,0];h(o,m.Duplex),o.prototype.setKeepAlive=function(e){var t=this;t._debug("setKeepAlive %s",e),clearInterval(t._keepAliveInterval),!1!==e&&(t._keepAliveInterval=setInterval(function(){t.keepAlive()},55e3))},o.prototype.setTimeout=function(e,t){this._debug("setTimeout ms=%d unref=%s",e,t),this._clearTimeout(),this._timeoutMs=e,this._timeoutUnref=!!t,this._updateTimeout()},o.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this._debug("destroy"),this.emit("close"),this.end())},o.prototype.end=function(){this._debug("end"),this._onUninterested(),this._onChoke(),m.Duplex.prototype.end.apply(this,arguments)},o.prototype.use=function(e){function t(){}var n=e.prototype.name;if(!n)throw new Error('Extension class requires a "name" property on the prototype');this._debug("use extension.name=%s",n);var r=this._nextExt,o=new e(this);"function"!=typeof o.onHandshake&&(o.onHandshake=t),"function"!=typeof o.onExtendedHandshake&&(o.onExtendedHandshake=t),"function"!=typeof o.onMessage&&(o.onMessage=t),this.extendedMapping[r]=n,this._ext[n]=o,this[n]=o,this._nextExt+=1},o.prototype.keepAlive=function(){this._debug("keep-alive"),this._push(_)},o.prototype.handshake=function(e,t,n){var r,o;if("string"==typeof e?r=c.from(e,"hex"):(r=e,e=r.toString("hex")),"string"==typeof t?o=c.from(t,"hex"):(o=t,t=o.toString("hex")),20!==r.length||20!==o.length)throw new Error("infoHash and peerId MUST have length 20");this._debug("handshake i=%s p=%s exts=%o",e,t,n);var i=c.from(k);i[5]|=16,n&&n.dht&&(i[7]|=1),this._push(c.concat([y,i,r,o])),this._handshakeSent=!0,this.peerExtensions.extended&&!this._extendedHandshakeSent&&this._sendExtendedHandshake()},o.prototype._sendExtendedHandshake=function(){var e=d(this.extendedHandshake);e.m={};for(var t in this.extendedMapping){var n=this.extendedMapping[t];e.m[n]=Number(t)}this.extended(0,a.encode(e)),this._extendedHandshakeSent=!0},o.prototype.choke=function(){if(!this.amChoking){for(this.amChoking=!0,this._debug("choke");this.peerRequests.length;)this.peerRequests.pop();this._push(v)}},o.prototype.unchoke=function(){this.amChoking&&(this.amChoking=!1,this._debug("unchoke"),this._push(b))},o.prototype.interested=function(){this.amInterested||(this.amInterested=!0,this._debug("interested"),this._push(w))},o.prototype.uninterested=function(){this.amInterested&&(this.amInterested=!1,this._debug("uninterested"),this._push(E))},o.prototype.have=function(e){this._debug("have %d",e),this._message(4,[e],null)},o.prototype.bitfield=function(e){this._debug("bitfield"),c.isBuffer(e)||(e=e.buffer),this._message(5,[],e)},o.prototype.request=function(e,t,n,o){return o||(o=function(){}),this._finished?o(new Error("wire is closed")):this.peerChoking?o(new Error("peer is choking")):(this._debug("request index=%d offset=%d length=%d",e,t,n),this.requests.push(new r(e,t,n,o)),this._updateTimeout(),void this._message(6,[e,t,n],null))},o.prototype.piece=function(e,t,n){this._debug("piece index=%d offset=%d",e,t),this.uploaded+=n.length,this.uploadSpeed(n.length),this.emit("upload",n.length),this._message(7,[e,t],n)},o.prototype.cancel=function(e,t,n){this._debug("cancel index=%d offset=%d length=%d",e,t,n),this._callback(i(this.requests,e,t,n),new Error("request was cancelled"),null),this._message(8,[e,t,n],null)},o.prototype.port=function(e){this._debug("port %d",e);var t=c.from(x);t.writeUInt16BE(e,5),this._push(t)},o.prototype.extended=function(e,t){if(this._debug("extended ext=%s",e),"string"==typeof e&&this.peerExtendedMapping[e]&&(e=this.peerExtendedMapping[e]),"number"!=typeof e)throw new Error("Unrecognized extension: "+e);var n=c.from([e]),r=c.isBuffer(t)?t:a.encode(t);this._message(20,[],c.concat([n,r]))},o.prototype._read=function(){},o.prototype._message=function(e,t,n){var r=n?n.length:0,o=c.allocUnsafe(5+4*t.length);o.writeUInt32BE(o.length+r-4,0),o[4]=e;for(var i=0;i<t.length;i++)o.writeUInt32BE(t[i],5+4*i);this._push(o),n&&this._push(n)},o.prototype._push=function(e){if(!this._finished)return this.push(e)},o.prototype._onKeepAlive=function(){this._debug("got keep-alive"),this.emit("keep-alive")},o.prototype._onHandshake=function(e,t,n){var r=e.toString("hex"),o=t.toString("hex");this._debug("got handshake i=%s p=%s exts=%o",r,o,n),this.peerId=o,this.peerIdBuffer=t,this.peerExtensions=n,this.emit("handshake",r,o,n);var i;for(i in this._ext)this._ext[i].onHandshake(r,o,n);n.extended&&this._handshakeSent&&!this._extendedHandshakeSent&&this._sendExtendedHandshake()},o.prototype._onChoke=function(){for(this.peerChoking=!0,this._debug("got choke"),this.emit("choke");this.requests.length;)this._callback(this.requests.pop(),new Error("peer is choking"),null)},o.prototype._onUnchoke=function(){this.peerChoking=!1,this._debug("got unchoke"),this.emit("unchoke")},o.prototype._onInterested=function(){this.peerInterested=!0,this._debug("got interested"),this.emit("interested")},o.prototype._onUninterested=function(){this.peerInterested=!1,this._debug("got uninterested"),this.emit("uninterested")},o.prototype._onHave=function(e){this.peerPieces.get(e)||(this._debug("got have %d",e),this.peerPieces.set(e,!0),this.emit("have",e))},o.prototype._onBitField=function(e){this.peerPieces=new u(e),this._debug("got bitfield"),this.emit("bitfield",this.peerPieces)},o.prototype._onRequest=function(e,t,n){var o=this;if(!o.amChoking){o._debug("got request index=%d offset=%d length=%d",e,t,n);var s=function(r,s){if(a===i(o.peerRequests,e,t,n))return r?o._debug("error satisfying request index=%d offset=%d length=%d (%s)",e,t,n,r.message):void o.piece(e,t,s)},a=new r(e,t,n,s);o.peerRequests.push(a),o.emit("request",e,t,n,s)}},o.prototype._onPiece=function(e,t,n){this._debug("got piece index=%d offset=%d",e,t),this._callback(i(this.requests,e,t,n.length),null,n),this.downloaded+=n.length,this.downloadSpeed(n.length),this.emit("download",n.length),this.emit("piece",e,t,n)},o.prototype._onCancel=function(e,t,n){this._debug("got cancel index=%d offset=%d length=%d",e,t,n),i(this.peerRequests,e,t,n),this.emit("cancel",e,t,n)},o.prototype._onPort=function(e){this._debug("got port %d",e),this.emit("port",e)},o.prototype._onExtended=function(e,t){if(0===e){var n;try{n=a.decode(t)}catch(e){this._debug("ignoring invalid extended handshake: %s",e.message||e)}if(!n)return;this.peerExtendedHandshake=n;var r;if("object"==typeof n.m)for(r in n.m)this.peerExtendedMapping[r]=Number(n.m[r].toString());for(r in this._ext)this.peerExtendedMapping[r]&&this._ext[r].onExtendedHandshake(this.peerExtendedHandshake);this._debug("got extended handshake"),this.emit("extended","handshake",this.peerExtendedHandshake)}else this.extendedMapping[e]&&(e=this.extendedMapping[e],this._ext[e]&&this._ext[e].onMessage(t)),this._debug("got extended message ext=%s",e),this.emit("extended",e,t)},o.prototype._onTimeout=function(){this._debug("request timed out"),this._callback(this.requests.shift(),new Error("request has timed out"),null),this.emit("timeout")},o.prototype._write=function(e,t,n){for(this._bufferSize+=e.length,this._buffer.push(e);this._bufferSize>=this._parserSize;){var r=1===this._buffer.length?this._buffer[0]:c.concat(this._buffer);this._bufferSize-=this._parserSize,this._buffer=this._bufferSize?[r.slice(this._parserSize)]:[],this._parser(r.slice(0,this._parserSize))}n(null)},o.prototype._callback=function(e,t,n){e&&(this._clearTimeout(),this.peerChoking||this._finished||this._updateTimeout(),e.callback(t,n))},o.prototype._clearTimeout=function(){this._timeout&&(clearTimeout(this._timeout),this._timeout=null)},o.prototype._updateTimeout=function(){var e=this;e._timeoutMs&&e.requests.length&&!e._timeout&&(e._timeout=setTimeout(function(){e._onTimeout()},e._timeoutMs),e._timeoutUnref&&e._timeout.unref&&e._timeout.unref())},o.prototype._parse=function(e,t){this._parserSize=e,this._parser=t},o.prototype._onMessageLength=function(e){var t=e.readUInt32BE(0);t>0?this._parse(t,this._onMessage):(this._onKeepAlive(),this._parse(4,this._onMessageLength))},o.prototype._onMessage=function(e){switch(this._parse(4,this._onMessageLength),e[0]){case 0:return this._onChoke();case 1:return this._onUnchoke();case 2:return this._onInterested();case 3:return this._onUninterested();case 4:return this._onHave(e.readUInt32BE(1));case 5:return this._onBitField(e.slice(1));case 6:return this._onRequest(e.readUInt32BE(1),e.readUInt32BE(5),e.readUInt32BE(9));case 7:return this._onPiece(e.readUInt32BE(1),e.readUInt32BE(5),e.slice(9));case 8:return this._onCancel(e.readUInt32BE(1),e.readUInt32BE(5),e.readUInt32BE(9));case 9:return this._onPort(e.readUInt16BE(1));case 20:return this._onExtended(e.readUInt8(1),e.slice(2));default:return this._debug("got unknown message"),this.emit("unknownmessage",e)}},o.prototype._parseHandshake=function(){var e=this;e._parse(1,function(t){var n=t.readUInt8(0);e._parse(n+48,function(t){var r=t.slice(0,n);if("BitTorrent protocol"!==r.toString())return e._debug("Error: wire not speaking BitTorrent protocol (%s)",r.toString()),void e.end();t=t.slice(n),e._onHandshake(t.slice(8,28),t.slice(28,48),{dht:!!(1&t[7]),extended:!!(16&t[5])}),e._parse(4,e._onMessageLength)})})},o.prototype._onFinish=function(){for(this._finished=!0,this.push(null);this.read(););for(clearInterval(this._keepAliveInterval),this._parse(Number.MAX_VALUE,function(){});this.peerRequests.length;)this.peerRequests.pop();for(;this.requests.length;)this._callback(this.requests.pop(),new Error("wire was closed"),null)},o.prototype._debug=function(){var e=[].slice.call(arguments);e[0]="["+this._debugId+"] "+e[0],f.apply(null,e)}},{bencode:11,bitfield:13,debug:30,inherits:41,randombytes:73,"readable-stream":82,"safe-buffer":88,speedometer:94,"unordered-array-remove":111,xtend:119}],15:[function(e,t,n){(function(n){function r(e){function t(e){n.nextTick(function(){a.emit("warning",e)})}var a=this;if(!(a instanceof r))return new r(e);if(s.call(a),e||(e={}),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.announce)throw new Error("Option `announce` is required");if(!n.browser&&!e.port)throw new Error("Option `port` is required");a.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),a._peerIdBuffer=o.from(a.peerId,"hex"),a._peerIdBinary=a._peerIdBuffer.toString("binary"),a.infoHash="string"==typeof e.infoHash?e.infoHash:e.infoHash.toString("hex"),a._infoHashBuffer=o.from(a.infoHash,"hex"),a._infoHashBinary=a._infoHashBuffer.toString("binary"),i("new client %s",a.infoHash),a.destroyed=!1,a._port=e.port,a._getAnnounceOpts=e.getAnnounceOpts,a._rtcConfig=e.rtcConfig,a._userAgent=e.userAgent,a._wrtc="function"==typeof e.wrtc?e.wrtc():e.wrtc;var u="string"==typeof e.announce?[e.announce]:null==e.announce?[]:e.announce;u=u.map(function(e){return e=e.toString(),"/"===e[e.length-1]&&(e=e.substring(0,e.length-1)),e}),u=h(u);var c=!1!==a._wrtc&&(!!a._wrtc||d.WEBRTC_SUPPORT);a._trackers=u.map(function(e){var n=l.parse(e).protocol;return"http:"!==n&&"https:"!==n||"function"!=typeof m?"udp:"===n&&"function"==typeof g?new g(a,e):"ws:"!==n&&"wss:"!==n||!c?(t(new Error("Unsupported tracker protocol: "+e)),null):"ws:"===n&&"undefined"!=typeof window&&"https:"===window.location.protocol?(t(new Error("Unsupported tracker protocol: "+e)),null):new y(a,e):new m(a,e)}).filter(Boolean)}t.exports=r;var o=e("safe-buffer").Buffer,i=e("debug")("bittorrent-tracker:client"),s=e("events").EventEmitter,a=e("xtend"),u=e("inherits"),c=e("once"),f=e("run-parallel"),d=e("simple-peer"),h=e("uniq"),l=e("url"),p=e("./lib/common"),m=e("./lib/client/http-tracker"),g=e("./lib/client/udp-tracker"),y=e("./lib/client/websocket-tracker");u(r,s),r.scrape=function(e,t){if(t=c(t),!e.infoHash)throw new Error("Option `infoHash` is required");if(!e.announce)throw new Error("Option `announce` is required");var n=a(e,{infoHash:Array.isArray(e.infoHash)?e.infoHash[0]:e.infoHash,peerId:o.from("01234567890123456789"),port:6881}),i=new r(n);i.once("error",t),i.once("warning",t);var s=Array.isArray(e.infoHash)?e.infoHash.length:1,u={};return i.on("scrape",function(e){if(s-=1,u[e.infoHash]=e,0===s){i.destroy();var n=Object.keys(u);1===n.length?t(null,u[n[0]]):t(null,u)}}),e.infoHash=Array.isArray(e.infoHash)?e.infoHash.map(function(e){return o.from(e,"hex")}):o.from(e.infoHash,"hex"),i.scrape({infoHash:e.infoHash}),i},r.prototype.start=function(e){var t=this;i("send `start`"),e=t._defaultAnnounceOpts(e),e.event="started",t._announce(e),t._trackers.forEach(function(e){e.setInterval()})},r.prototype.stop=function(e){var t=this;i("send `stop`"),e=t._defaultAnnounceOpts(e),e.event="stopped",t._announce(e)},r.prototype.complete=function(e){var t=this;i("send `complete`"),e||(e={}),e=t._defaultAnnounceOpts(e),e.event="completed",t._announce(e)},r.prototype.update=function(e){var t=this;i("send `update`"),e=t._defaultAnnounceOpts(e),e.event&&delete e.event,t._announce(e)},r.prototype._announce=function(e){this._trackers.forEach(function(t){t.announce(e)})},r.prototype.scrape=function(e){var t=this;i("send `scrape`"),e||(e={}),t._trackers.forEach(function(t){t.scrape(e)})},r.prototype.setInterval=function(e){var t=this;i("setInterval %d",e),t._trackers.forEach(function(t){t.setInterval(e)})},r.prototype.destroy=function(e){var t=this;if(!t.destroyed){t.destroyed=!0,i("destroy");var n=t._trackers.map(function(e){return function(t){e.destroy(t)}});f(n,e),t._trackers=[],t._getAnnounceOpts=null}},r.prototype._defaultAnnounceOpts=function(e){var t=this;return e||(e={}),null==e.numwant&&(e.numwant=p.DEFAULT_ANNOUNCE_PEERS),null==e.uploaded&&(e.uploaded=0),null==e.downloaded&&(e.downloaded=0),t._getAnnounceOpts&&(e=a(e,t._getAnnounceOpts())),e}}).call(this,e("_process"))},{"./lib/client/http-tracker":21,"./lib/client/udp-tracker":21,"./lib/client/websocket-tracker":17,"./lib/common":18,_process:66,debug:30,events:34,inherits:41,once:60,"run-parallel":86,"safe-buffer":88,"simple-peer":91,uniq:110,url:112,xtend:119}],16:[function(e,t,n){function r(e,t){var n=this;o.call(n),n.client=e,n.announceUrl=t,n.interval=null,n.destroyed=!1}t.exports=r;var o=e("events").EventEmitter;e("inherits")(r,o),r.prototype.setInterval=function(e){var t=this;null==e&&(e=t.DEFAULT_ANNOUNCE_INTERVAL),clearInterval(t.interval),e&&(t.interval=setInterval(function(){t.announce(t.client._defaultAnnounceOpts())},e),t.interval.unref&&t.interval.unref())}},{events:34,inherits:41}],17:[function(e,t,n){function r(e,t,n){var r=this;h.call(r,e,t),i("new websocket tracker %s",t),r.peers={},r.socket=null,r.reconnecting=!1,r.retries=0,r.reconnectTimer=null,r.expectingResponse=!1,r._openSocket()}function o(){}t.exports=r;var i=e("debug")("bittorrent-tracker:websocket-tracker"),s=e("xtend"),a=e("inherits"),u=e("simple-peer"),c=e("randombytes"),f=e("simple-websocket"),d=e("../common"),h=e("./tracker"),l={},p=5e4;a(r,h),r.prototype.DEFAULT_ANNOUNCE_INTERVAL=3e4,r.prototype.announce=function(e){var t=this;if(!t.destroyed&&!t.reconnecting){if(!t.socket.connected)return void t.socket.once("connect",function(){t.announce(e)});var n=s(e,{action:"announce",info_hash:t.client._infoHashBinary,peer_id:t.client._peerIdBinary});if(t._trackerId&&(n.trackerid=t._trackerId),"stopped"===e.event||"completed"===e.event)t._send(n);else{var r=Math.min(e.numwant,10);t._generateOffers(r,function(e){n.numwant=r,n.offers=e,t._send(n)})}}},r.prototype.scrape=function(e){var t=this;if(!t.destroyed&&!t.reconnecting){if(!t.socket.connected)return void t.socket.once("connect",function(){t.scrape(e)});var n=Array.isArray(e.infoHash)&&e.infoHash.length>0?e.infoHash.map(function(e){return e.toString("binary")}):e.infoHash&&e.infoHash.toString("binary")||t.client._infoHashBinary,r={action:"scrape",info_hash:n};t._send(r)}},r.prototype.destroy=function(e){function t(){a&&(clearTimeout(a),a=null),s.removeListener("data",t),s.destroy(),s=null}var n=this;if(e||(e=o),n.destroyed)return e(null);n.destroyed=!0,clearInterval(n.interval),clearTimeout(n.reconnectTimer);for(var r in n.peers){var i=n.peers[r];clearTimeout(i.trackerTimeout),i.destroy()}if(n.peers=null,n.socket&&(n.socket.removeListener("connect",n._onSocketConnectBound),n.socket.removeListener("data",n._onSocketDataBound),n.socket.removeListener("close",n._onSocketCloseBound),n.socket.removeListener("error",n._onSocketErrorBound),n.socket=null),n._onSocketConnectBound=null,n._onSocketErrorBound=null,n._onSocketDataBound=null,n._onSocketCloseBound=null,l[n.announceUrl]&&(l[n.announceUrl].consumers-=1),l[n.announceUrl].consumers>0)return e();var s=l[n.announceUrl];if(delete l[n.announceUrl],s.on("error",o),s.once("close",e),!n.expectingResponse)return t();var a=setTimeout(t,d.DESTROY_TIMEOUT);s.once("data",t)},r.prototype._openSocket=function(){var e=this;e.destroyed=!1,e.peers||(e.peers={}),e._onSocketConnectBound=function(){e._onSocketConnect()},e._onSocketErrorBound=function(t){e._onSocketError(t)},e._onSocketDataBound=function(t){e._onSocketData(t)},e._onSocketCloseBound=function(){e._onSocketClose()},e.socket=l[e.announceUrl],e.socket?l[e.announceUrl].consumers+=1:(e.socket=l[e.announceUrl]=new f(e.announceUrl),e.socket.consumers=1,e.socket.once("connect",e._onSocketConnectBound)),e.socket.on("data",e._onSocketDataBound),e.socket.once("close",e._onSocketCloseBound),e.socket.once("error",e._onSocketErrorBound)},r.prototype._onSocketConnect=function(){var e=this;e.destroyed||e.reconnecting&&(e.reconnecting=!1,e.retries=0,e.announce(e.client._defaultAnnounceOpts()))},r.prototype._onSocketData=function(e){var t=this;if(!t.destroyed){t.expectingResponse=!1;try{e=JSON.parse(e)}catch(e){return void t.client.emit("warning",new Error("Invalid tracker response"))}"announce"===e.action?t._onAnnounceResponse(e):"scrape"===e.action?t._onScrapeResponse(e):t._onSocketError(new Error("invalid action in WS response: "+e.action))}},r.prototype._onAnnounceResponse=function(e){var t=this;if(e.info_hash!==t.client._infoHashBinary)return void i("ignoring websocket data from %s for %s (looking for %s: reused socket)",t.announceUrl,d.binaryToHex(e.info_hash),t.client.infoHash);if(!e.peer_id||e.peer_id!==t.client._peerIdBinary){i("received %s from %s for %s",JSON.stringify(e),t.announceUrl,t.client.infoHash);var n=e["failure reason"];if(n)return t.client.emit("warning",new Error(n));var r=e["warning message"];r&&t.client.emit("warning",new Error(r));var o=e.interval||e["min interval"];o&&t.setInterval(1e3*o);var s=e["tracker id"];if(s&&(t._trackerId=s),null!=e.complete){var a=Object.assign({},e,{announce:t.announceUrl,infoHash:d.binaryToHex(e.info_hash)});t.client.emit("update",a)}var u;if(e.offer&&e.peer_id&&(i("creating peer (from remote offer)"),u=t._createPeer(),u.id=d.binaryToHex(e.peer_id),u.once("signal",function(n){var r={action:"announce",info_hash:t.client._infoHashBinary,peer_id:t.client._peerIdBinary,to_peer_id:e.peer_id,answer:n,offer_id:e.offer_id};t._trackerId&&(r.trackerid=t._trackerId),t._send(r)}),u.signal(e.offer),t.client.emit("peer",u)),e.answer&&e.peer_id){var c=d.binaryToHex(e.offer_id);u=t.peers[c],u?(u.id=d.binaryToHex(e.peer_id),u.signal(e.answer),t.client.emit("peer",u),clearTimeout(u.trackerTimeout),u.trackerTimeout=null,delete t.peers[c]):i("got unexpected answer: "+JSON.stringify(e.answer))}}},r.prototype._onScrapeResponse=function(e){var t=this;e=e.files||{};var n=Object.keys(e);if(0===n.length)return void t.client.emit("warning",new Error("invalid scrape response"));n.forEach(function(n){var r=Object.assign(e[n],{announce:t.announceUrl,infoHash:d.binaryToHex(n)});t.client.emit("scrape",r)})},r.prototype._onSocketClose=function(){var e=this;e.destroyed||(e.destroy(),e._startReconnectTimer())},r.prototype._onSocketError=function(e){var t=this;t.destroyed||(t.destroy(),t.client.emit("warning",e),t._startReconnectTimer())},r.prototype._startReconnectTimer=function(){var e=this,t=Math.floor(3e4*Math.random())+Math.min(15e3*Math.pow(2,e.retries),18e5);e.reconnecting=!0,clearTimeout(e.reconnectTimer),e.reconnectTimer=setTimeout(function(){e.retries++,e._openSocket()},t), -e.reconnectTimer.unref&&e.reconnectTimer.unref(),i("reconnecting socket in %s ms",t)},r.prototype._send=function(e){var t=this;if(!t.destroyed){t.expectingResponse=!0;var n=JSON.stringify(e);i("send %s",n),t.socket.send(n)}},r.prototype._generateOffers=function(e,t){function n(){o.length===e&&(i("generated %s offers",e),t(o))}var r=this,o=[];i("generating %s offers",e);for(var s=0;s<e;++s)!function(){var e=c(20).toString("hex");i("creating peer (from _generateOffers)");var t=r.peers[e]=r._createPeer({initiator:!0});t.once("signal",function(t){o.push({offer:t,offer_id:d.hexToBinary(e)}),n()}),t.trackerTimeout=setTimeout(function(){i("tracker timeout: destroying peer"),t.trackerTimeout=null,delete r.peers[e],t.destroy()},p),t.trackerTimeout.unref&&t.trackerTimeout.unref()}();n()},r.prototype._createPeer=function(e){function t(e){r.client.emit("warning",new Error("Connection error: "+e.message)),o.destroy()}function n(){o.removeListener("error",t),o.removeListener("connect",n)}var r=this;e=Object.assign({trickle:!1,config:r.client._rtcConfig,wrtc:r.client._wrtc},e);var o=new u(e);return o.once("error",t),o.once("connect",n),o}},{"../common":18,"./tracker":16,debug:30,inherits:41,randombytes:73,"simple-peer":91,"simple-websocket":93,xtend:119}],18:[function(e,t,n){var r=e("safe-buffer").Buffer,o=e("xtend/mutable");n.DEFAULT_ANNOUNCE_PEERS=50,n.MAX_ANNOUNCE_PEERS=82,n.binaryToHex=function(e){return"string"!=typeof e&&(e=String(e)),r.from(e,"binary").toString("hex")},n.hexToBinary=function(e){return"string"!=typeof e&&(e=String(e)),r.from(e,"hex").toString("binary")},o(n,e("./common-node"))},{"./common-node":21,"safe-buffer":88,"xtend/mutable":120}],19:[function(e,t,n){(function(e){t.exports=function(t,n){function r(t){o.removeEventListener("loadend",r,!1),t.error?n(t.error):n(null,new e(o.result))}if("undefined"==typeof Blob||!(t instanceof Blob))throw new Error("first argument must be a Blob");if("function"!=typeof n)throw new Error("second argument must be a function");var o=new FileReader;o.addEventListener("loadend",r,!1),o.readAsArrayBuffer(t)}}).call(this,e("buffer").Buffer)},{buffer:24}],20:[function(e,t,n){(function(n){function r(e,t){if(!(this instanceof r))return new r(e,t);i.call(this),t||(t={}),"object"==typeof e&&(t=e,e=t.size),this.size=e||512,t.nopad?this._zeroPadding=!1:this._zeroPadding=s(t.zeroPadding,!0),this._buffered=[],this._bufferedBytes=0}var o=e("inherits"),i=e("readable-stream").Transform,s=e("defined");t.exports=r,o(r,i),r.prototype._transform=function(e,t,r){for(this._bufferedBytes+=e.length,this._buffered.push(e);this._bufferedBytes>=this.size;){var o=n.concat(this._buffered);this._bufferedBytes-=this.size,this.push(o.slice(0,this.size)),this._buffered=[o.slice(this.size,o.length)]}r()},r.prototype._flush=function(){if(this._bufferedBytes&&this._zeroPadding){var e=new n(this.size-this._bufferedBytes);e.fill(0),this._buffered.push(e),this.push(n.concat(this._buffered)),this._buffered=null}else this._bufferedBytes&&(this.push(n.concat(this._buffered)),this._buffered=null);this.push(null)}}).call(this,e("buffer").Buffer)},{buffer:24,defined:32,inherits:41,"readable-stream":82}],21:[function(e,t,n){},{}],22:[function(e,t,n){arguments[4][21][0].apply(n,arguments)},{dup:21}],23:[function(e,t,n){(function(t){"use strict";var r=e("buffer"),o=r.Buffer,i=r.SlowBuffer,s=r.kMaxLength||2147483647;n.alloc=function(e,t,n){if("function"==typeof o.alloc)return o.alloc(e,t,n);if("number"==typeof n)throw new TypeError("encoding must not be number");if("number"!=typeof e)throw new TypeError("size must be a number");if(e>s)throw new RangeError("size is too large");var r=n,i=t;void 0===i&&(r=void 0,i=0);var a=new o(e);if("string"==typeof i)for(var u=new o(i,r),c=u.length,f=-1;++f<e;)a[f]=u[f%c];else a.fill(i);return a},n.allocUnsafe=function(e){if("function"==typeof o.allocUnsafe)return o.allocUnsafe(e);if("number"!=typeof e)throw new TypeError("size must be a number");if(e>s)throw new RangeError("size is too large");return new o(e)},n.from=function(e,n,r){if("function"==typeof o.from&&(!t.Uint8Array||Uint8Array.from!==o.from))return o.from(e,n,r);if("number"==typeof e)throw new TypeError('"value" argument must not be a number');if("string"==typeof e)return new o(e,n);if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var i=n;if(1===arguments.length)return new o(e);void 0===i&&(i=0);var s=r;if(void 0===s&&(s=e.byteLength-i),i>=e.byteLength)throw new RangeError("'offset' is out of bounds");if(s>e.byteLength-i)throw new RangeError("'length' is out of bounds");return new o(e.slice(i,i+s))}if(o.isBuffer(e)){var a=new o(e.length);return e.copy(a,0,0,e.length),a}if(e){if(Array.isArray(e)||"undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return new o(e);if("Buffer"===e.type&&Array.isArray(e.data))return new o(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},n.allocUnsafeSlow=function(e){if("function"==typeof o.allocUnsafeSlow)return o.allocUnsafeSlow(e);if("number"!=typeof e)throw new TypeError("size must be a number");if(e>=s)throw new RangeError("size is too large");return new i(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:24}],24:[function(e,t,n){"use strict";function r(e){if(e>X)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return u(e)}return i(e,t,n)}function i(e,t,n){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return e instanceof ArrayBuffer?d(e,t,n):"string"==typeof e?c(e,t):h(e)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function a(e,t,n){return s(e),e<=0?r(e):void 0!==t?"string"==typeof n?r(e).fill(t,n):r(e).fill(t):r(e)}function u(e){return s(e),r(e<0?0:0|l(e))}function c(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!o.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var n=0|m(e,t),i=r(n),s=i.write(e,t);return s!==n&&(i=i.slice(0,s)),i}function f(e){for(var t=e.length<0?0:0|l(e.length),n=r(t),o=0;o<t;o+=1)n[o]=255&e[o];return n}function d(e,t,n){if(t<0||e.byteLength<t)throw new RangeError("'offset' is out of bounds");if(e.byteLength<t+(n||0))throw new RangeError("'length' is out of bounds");var r;return r=void 0===t&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,t):new Uint8Array(e,t,n),r.__proto__=o.prototype,r}function h(e){if(o.isBuffer(e)){var t=0|l(e.length),n=r(t);return 0===n.length?n:(e.copy(n,0,0,t),n)}if(e){if(V(e)||"length"in e)return"number"!=typeof e.length||G(e.length)?r(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function l(e){if(e>=X)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+X.toString(16)+" bytes");return 0|e}function p(e){return+e!=e&&(e=0),o.alloc(+e)}function m(e,t){if(o.isBuffer(e))return e.length;if(V(e)||e instanceof ArrayBuffer)return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(e).length;default:if(r)return q(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return L(this,t,n);case"utf8":case"utf-8":return B(this,t,n);case"ascii":return C(this,t,n);case"latin1":case"binary":return T(this,t,n);case"base64":return I(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function _(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,G(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=o.from(t,r)),o.isBuffer(t))return 0===t.length?-1:v(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):v(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function v(e,t,n,r,o){function i(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}var s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,n/=2}var c;if(o){var f=-1;for(c=n;c<a;c++)if(i(e,c)===i(t,-1===f?0:c-f)){if(-1===f&&(f=c),c-f+1===u)return f*s}else-1!==f&&(c-=c-f),f=-1}else for(n+u>a&&(n=a-u),c=n;c>=0;c--){for(var d=!0,h=0;h<u;h++)if(i(e,c+h)!==i(t,h)){d=!1;break}if(d)return c}return-1}function b(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s<r;++s){var a=parseInt(t.substr(2*s,2),16);if(G(a))return s;e[n+s]=a}return s}function w(e,t,n,r){return F(q(t,e.length-n),e,n,r)}function E(e,t,n,r){return F(D(t),e,n,r)}function k(e,t,n,r){return E(e,t,n,r)}function x(e,t,n,r){return F(z(t),e,n,r)}function S(e,t,n,r){return F(W(t,e.length-n),e,n,r)}function I(e,t,n){return 0===t&&n===e.length?$.fromByteArray(e):$.fromByteArray(e.slice(t,n))}function B(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var i=e[o],s=null,a=i>239?4:i>223?3:i>191?2:1;if(o+a<=n){var u,c,f,d;switch(a){case 1:i<128&&(s=i);break;case 2:u=e[o+1],128==(192&u)&&(d=(31&i)<<6|63&u)>127&&(s=d);break;case 3:u=e[o+1],c=e[o+2],128==(192&u)&&128==(192&c)&&(d=(15&i)<<12|(63&u)<<6|63&c)>2047&&(d<55296||d>57343)&&(s=d);break;case 4:u=e[o+1],c=e[o+2],f=e[o+3],128==(192&u)&&128==(192&c)&&128==(192&f)&&(d=(15&i)<<18|(63&u)<<12|(63&c)<<6|63&f)>65535&&d<1114112&&(s=d)}}null===s?(s=65533,a=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),o+=a}return A(r)}function A(e){var t=e.length;if(t<=J)return String.fromCharCode.apply(String,e);for(var n="",r=0;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=J));return n}function C(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(127&e[o]);return r}function T(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(e[o]);return r}function L(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var o="",i=t;i<n;++i)o+=N(e[i]);return o}function U(e,t,n){for(var r=e.slice(t,n),o="",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function R(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,r,i,s){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<s)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function M(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(e,t,n,r,o){return t=+t,n>>>=0,o||M(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),K.write(e,t,n,r,23,4),n+4}function j(e,t,n,r,o){return t=+t,n>>>=0,o||M(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),K.write(e,t,n,r,52,8),n+8}function H(e){if(e=e.trim().replace(Y,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function N(e){return e<16?"0"+e.toString(16):e.toString(16)}function q(e,t){t=t||1/0;for(var n,r=e.length,o=null,i=[],s=0;s<r;++s){if((n=e.charCodeAt(s))>55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function D(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}function W(e,t){for(var n,r,o,i=[],s=0;s<e.length&&!((t-=2)<0);++s)n=e.charCodeAt(s),r=n>>8,o=n%256,i.push(o),i.push(r);return i}function z(e){return $.toByteArray(H(e))}function F(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function V(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function G(e){return e!==e}var $=e("base64-js"),K=e("ieee754");n.Buffer=o,n.SlowBuffer=p,n.INSPECT_MAX_BYTES=50;var X=2147483647;n.kMaxLength=X,o.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,t,n){return i(e,t,n)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,n){return a(e,t,n)},o.allocUnsafe=function(e){return u(e)},o.allocUnsafeSlow=function(e){return u(e)},o.isBuffer=function(e){return null!=e&&!0===e._isBuffer},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,s=Math.min(n,r);i<s;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=o.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var s=e[n];if(!o.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(r,i),i+=s.length}return r},o.byteLength=m,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)y(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?B(this,0,e):g.apply(this,arguments)},o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===o.compare(this,e)},o.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),"<Buffer "+e+">"},o.prototype.compare=function(e,t,n,r,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var s=i-r,a=n-t,u=Math.min(s,a),c=this.slice(r,i),f=e.slice(t,n),d=0;d<u;++d)if(c[d]!==f[d]){s=c[d],a=f[d];break}return s<a?-1:a<s?1:0},o.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},o.prototype.indexOf=function(e,t,n){return _(this,e,t,n,!0)},o.prototype.lastIndexOf=function(e,t,n){return _(this,e,t,n,!1)},o.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return k(this,e,t,n);case"base64":return x(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var J=4096;o.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t<e&&(t=e);var r=this.subarray(e,t);return r.__proto__=o.prototype,r},o.prototype.readUIntLE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r},o.prototype.readUIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},o.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return o*=128,r>=o&&(r-=Math.pow(2,8*t)),r},o.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return o*=128,i>=o&&(i-=Math.pow(2,8*t)),i},o.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||R(e,4,this.length),K.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),K.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),K.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),K.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){O(this,e,t,n,Math.pow(2,8*n)-1,0)}var o=1,i=0;for(this[t]=255&e;++i<n&&(o*=256);)this[t+i]=e/o&255;return t+n},o.prototype.writeUIntBE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){O(this,e,t,n,Math.pow(2,8*n)-1,0)}var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},o.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);O(this,e,t,n,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<n&&(s*=256);)e<0&&0===a&&0!==this[t+i-1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+n},o.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);O(this,e,t,n,o-1,-o)}var i=n-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+n},o.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,n){return P(this,e,t,!0,n)},o.prototype.writeFloatBE=function(e,t,n){return P(this,e,t,!1,n)},o.prototype.writeDoubleLE=function(e,t,n){return j(this,e,t,!0,n)},o.prototype.writeDoubleBE=function(e,t,n){return j(this,e,t,!1,n)},o.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var o,i=r-n;if(this===e&&n<t&&t<r)for(o=i-1;o>=0;--o)e[o+t]=this[o+n];else if(i<1e3)for(o=0;o<i;++o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},o.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!o.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var s;if("number"==typeof e)for(s=t;s<n;++s)this[s]=e;else{var a=o.isBuffer(e)?e:new o(e,r),u=a.length;for(s=0;s<n-t;++s)this[s+t]=a[s%u]}return this};var Y=/[^+\/0-9A-Za-z-_]/g},{"base64-js":8,ieee754:39}],25:[function(e,t,n){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],26:[function(e,t,n){function r(e,t,n){function i(t){a.destroyed||(e.put(u,t),u+=1)}var a=this;if(!(a instanceof r))return new r(e,t,n);if(s.Writable.call(a,n),n||(n={}),!e||!e.put||!e.get)throw new Error("First argument must be an abstract-chunk-store compliant store");if(!(t=Number(t)))throw new Error("Second argument must be a chunk length");a._blockstream=new o(t,{zeroPadding:!1}),a._blockstream.on("data",i).on("error",function(e){a.destroy(e)});var u=0;a.on("finish",function(){this._blockstream.end()})}t.exports=r;var o=e("block-stream2"),i=e("inherits"),s=e("readable-stream");i(r,s.Writable),r.prototype._write=function(e,t,n){this._blockstream.write(e,t,n)},r.prototype.destroy=function(e){this.destroyed||(this.destroyed=!0,e&&this.emit("error",e),this.emit("close"))}},{"block-stream2":20,inherits:41,"readable-stream":82}],27:[function(e,t,n){function r(e,t,n){for(var r,i,s,a=1/0,u=0,c=t.length-1;u<=c&&(r=u+(c-u>>1),s=t[r]-e,s<0?u=r+1:s>0&&(c=r-1),s=o(s),s<a&&(a=s,i=r),t[r]!==e););return n?i:t[i]}var o=Math.abs;t.exports=r},{}],28:[function(e,t,n){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===g(e)}function r(e){return"boolean"==typeof e}function o(e){return null===e}function i(e){return null==e}function s(e){return"number"==typeof e}function a(e){return"string"==typeof e}function u(e){return"symbol"==typeof e}function c(e){return void 0===e}function f(e){return"[object RegExp]"===g(e)}function d(e){return"object"==typeof e&&null!==e}function h(e){return"[object Date]"===g(e)}function l(e){return"[object Error]"===g(e)||e instanceof Error}function p(e){return"function"==typeof e}function m(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function g(e){return Object.prototype.toString.call(e)}n.isArray=t,n.isBoolean=r,n.isNull=o,n.isNullOrUndefined=i,n.isNumber=s,n.isString=a,n.isSymbol=u,n.isUndefined=c,n.isRegExp=f,n.isObject=d,n.isDate=h,n.isError=l,n.isFunction=p,n.isPrimitive=m,n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":43}],29:[function(e,t,n){(function(n,r,o){function i(e,t,n){if("function"==typeof t)return i(e,null,t);t=t?I(t):{},a(e,t,function(e,r,o){if(e)return n(e);t.singleFileTorrent=o,l(r,t,n)})}function s(e,t,n){if("function"==typeof t)return s(e,null,t);t=t?I(t):{},a(e,t,n)}function a(e,t,r){function i(){O(e.map(function(e){return function(t){var n={};if(m(e))n.getStream=_(e),n.length=e.size;else if(o.isBuffer(e))n.getStream=v(e),n.length=e.length;else{if(!y(e)){if("string"==typeof e){if("function"!=typeof C.stat)throw new Error("filesystem paths do not work in the browser");var r=a>1||c;return void u(e,r,t)}throw new Error("invalid input type")}n.getStream=w(e,n),n.length=0}n.path=e.path,t(null,n)}}),function(e,t){if(e)return r(e);t=A(t),r(null,t,c)})}if(Array.isArray(e)&&0===e.length)throw new Error("invalid input type");g(e)&&(e=Array.prototype.slice.call(e)),Array.isArray(e)||(e=[e]),e=e.map(function(e){return m(e)&&"string"==typeof e.path&&"function"==typeof C.stat?e.path:e}),1!==e.length||"string"==typeof e[0]||e[0].name||(e[0].name=t.name);var s=null;e.forEach(function(t,n){if("string"!=typeof t){var r=t.fullPath||t.name;r||(r="Unknown File "+(n+1),t.unknownName=!0),t.path=r.split("/"),t.path[0]||t.path.shift(),t.path.length<2?s=null:0===n&&e.length>1?s=t.path[0]:t.path[0]!==s&&(s=null)}}),e=e.filter(function(e){if("string"==typeof e)return!0;var t=e.path[e.path.length-1];return d(t)&&L.not(t)}),s&&e.forEach(function(e){var t=(o.isBuffer(e)||y(e))&&!e.path;"string"==typeof e||t||e.path.shift()}),!t.name&&s&&(t.name=s),t.name||e.some(function(e){return"string"==typeof e?(t.name=S.basename(e),!0):e.unknownName?void 0:(t.name=e.path[e.path.length-1],!0)}),t.name||(t.name="Unnamed Torrent "+Date.now());var a=e.reduce(function(e,t){return e+Number("string"==typeof t)},0),c=1===e.length;if(1===e.length&&"string"==typeof e[0]){if("function"!=typeof C.stat)throw new Error("filesystem paths do not work in the browser");T(e[0],function(e,t){if(e)return r(e);c=t,i()})}else n.nextTick(function(){i()})}function u(e,t,n){f(e,c,function(r,o){if(r)return n(r);o=Array.isArray(o)?A(o):[o],e=S.normalize(e),t&&(e=e.slice(0,e.lastIndexOf(S.sep)+1)),e[e.length-1]!==S.sep&&(e+=S.sep),o.forEach(function(t){t.getStream=b(t.path),t.path=t.path.replace(e,"").split(S.sep)}),n(null,o)})}function c(e,t){t=R(t),C.stat(e,function(n,r){if(n)return t(n);var o={length:r.size,path:e};t(null,o)})}function f(e,t,n){C.stat(e,function(r,o){if(r)return n(r);o.isDirectory()?C.readdir(e,function(r,o){if(r)return n(r);O(o.filter(d).filter(L.not).map(function(n){return function(r){f(S.join(e,n),t,r)}}),n)}):o.isFile()&&t(e,n)})}function d(e){return"."!==e[0]}function h(e,t,n){function r(e){f+=e.length;var t=l;M(e,function(e){c[t]=e,h-=1,u()}),h+=1,l+=1}function i(){p=!0,u()}function s(e){a(),n(e)}function a(){m.removeListener("error",s),g.removeListener("data",r),g.removeListener("end",i),g.removeListener("error",s)}function u(){p&&0===h&&(a(),n(null,o.from(c.join(""),"hex"),f))}n=R(n);var c=[],f=0,d=e.map(function(e){return e.getStream}),h=0,l=0,p=!1,m=new U(d),g=new k(t,{zeroPadding:!1});m.on("error",s),m.pipe(g).on("data",r).on("end",i).on("error",s)}function l(e,n,o){var i=n.announceList;i||("string"==typeof n.announce?i=[[n.announce]]:Array.isArray(n.announce)&&(i=n.announce.map(function(e){return[e]}))),i||(i=[]),r.WEBTORRENT_ANNOUNCE&&("string"==typeof r.WEBTORRENT_ANNOUNCE?i.push([[r.WEBTORRENT_ANNOUNCE]]):Array.isArray(r.WEBTORRENT_ANNOUNCE)&&(i=i.concat(r.WEBTORRENT_ANNOUNCE.map(function(e){return[e]})))),void 0===n.announce&&void 0===n.announceList&&(i=i.concat(t.exports.announceList)),"string"==typeof n.urlList&&(n.urlList=[n.urlList]);var s={info:{name:n.name},"creation date":Math.ceil((Number(n.creationDate)||Date.now())/1e3),encoding:"UTF-8"};0!==i.length&&(s.announce=i[0][0],s["announce-list"]=i),void 0!==n.comment&&(s.comment=n.comment),void 0!==n.createdBy&&(s["created by"]=n.createdBy),void 0!==n.private&&(s.info.private=Number(n.private)),void 0!==n.sslCert&&(s.info["ssl-cert"]=n.sslCert),void 0!==n.urlList&&(s["url-list"]=n.urlList);var a=n.pieceLength||x(e.reduce(p,0));s.info["piece length"]=a,h(e,a,function(t,r,i){if(t)return o(t);s.info.pieces=r,e.forEach(function(e){delete e.getStream}),n.singleFileTorrent?s.info.length=i:s.info.files=e, -o(null,E.encode(s))})}function p(e,t){return e+t.length}function m(e){return"undefined"!=typeof Blob&&e instanceof Blob}function g(e){return"undefined"!=typeof FileList&&e instanceof FileList}function y(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}function _(e){return function(){return new B(e)}}function v(e){return function(){var t=new P.PassThrough;return t.end(e),t}}function b(e){return function(){return C.createReadStream(e)}}function w(e,t){return function(){var n=new P.Transform;return n._transform=function(e,n,r){t.length+=e.length,this.push(e),r()},e.pipe(n),n}}t.exports=i,t.exports.parseInput=s,t.exports.announceList=[["udp://tracker.leechers-paradise.org:6969"],["udp://tracker.coppersurfer.tk:6969"],["udp://tracker.opentrackr.org:1337"],["udp://explodie.org:6969"],["udp://tracker.empire-js.us:1337"],["wss://tracker.btorrent.xyz"],["wss://tracker.openwebtorrent.com"],["wss://tracker.fastcast.nz"]];var E=e("bencode"),k=e("block-stream2"),x=e("piece-length"),S=e("path"),I=e("xtend"),B=e("filestream/read"),A=e("flatten"),C=e("fs"),T=e("is-file"),L=e("junk"),U=e("multistream"),R=e("once"),O=e("run-parallel"),M=e("simple-sha1"),P=e("readable-stream")}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{_process:66,bencode:11,"block-stream2":20,buffer:24,"filestream/read":35,flatten:36,fs:22,"is-file":44,junk:47,multistream:58,once:60,path:63,"piece-length":64,"readable-stream":82,"run-parallel":86,"simple-sha1":92,xtend:119}],30:[function(e,t,n){(function(r){function o(){return!("undefined"==typeof window||!window||void 0===window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document&&"WebkitAppearance"in document.documentElement.style||"undefined"!=typeof window&&window&&window.console&&(console.firebug||console.exception&&console.table)||"undefined"!=typeof navigator&&navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+n.humanize(this.diff),t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var o=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(o++,"%c"===e&&(i=o))}),e.splice(i,0,r)}}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(e){try{null==e?n.storage.removeItem("debug"):n.storage.debug=e}catch(e){}}function u(){var e;try{e=n.storage.debug}catch(e){}return!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG),e}n=t.exports=e("./debug"),n.log=s,n.formatArgs=i,n.save=a,n.load=u,n.useColors=o,n.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],n.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},n.enable(u())}).call(this,e("_process"))},{"./debug":31,_process:66}],31:[function(e,t,n){function r(e){var t,r=0;for(t in e)r=(r<<5)-r+e.charCodeAt(t),r|=0;return n.colors[Math.abs(r)%n.colors.length]}function o(e){function t(){if(t.enabled){var e=t,r=+new Date,o=r-(c||r);e.diff=o,e.prev=c,e.curr=r,c=r;for(var i=new Array(arguments.length),s=0;s<i.length;s++)i[s]=arguments[s];i[0]=n.coerce(i[0]),"string"!=typeof i[0]&&i.unshift("%O");var a=0;i[0]=i[0].replace(/%([a-zA-Z%])/g,function(t,r){if("%%"===t)return t;a++;var o=n.formatters[r];if("function"==typeof o){var s=i[a];t=o.call(e,s),i.splice(a,1),a--}return t}),n.formatArgs.call(e,i);(t.log||n.log||console.log.bind(console)).apply(e,i)}}return t.namespace=e,t.enabled=n.enabled(e),t.useColors=n.useColors(),t.color=r(e),"function"==typeof n.init&&n.init(t),t}function i(e){n.save(e),n.names=[],n.skips=[];for(var t=(e||"").split(/[\s,]+/),r=t.length,o=0;o<r;o++)t[o]&&(e=t[o].replace(/\*/g,".*?"),"-"===e[0]?n.skips.push(new RegExp("^"+e.substr(1)+"$")):n.names.push(new RegExp("^"+e+"$")))}function s(){n.enable("")}function a(e){var t,r;for(t=0,r=n.skips.length;t<r;t++)if(n.skips[t].test(e))return!1;for(t=0,r=n.names.length;t<r;t++)if(n.names[t].test(e))return!0;return!1}function u(e){return e instanceof Error?e.stack||e.message:e}n=t.exports=o.debug=o.default=o,n.coerce=u,n.disable=s,n.enable=i,n.enabled=a,n.humanize=e("ms"),n.names=[],n.skips=[],n.formatters={};var c},{ms:57}],32:[function(e,t,n){t.exports=function(){for(var e=0;e<arguments.length;e++)if(void 0!==arguments[e])return arguments[e]}},{}],33:[function(e,t,n){var r=e("once"),o=function(){},i=function(e){return e.setHeader&&"function"==typeof e.abort},s=function(e){return e.stdio&&Array.isArray(e.stdio)&&3===e.stdio.length},a=function(e,t,n){if("function"==typeof t)return a(e,null,t);t||(t={}),n=r(n||o);var u=e._writableState,c=e._readableState,f=t.readable||!1!==t.readable&&e.readable,d=t.writable||!1!==t.writable&&e.writable,h=function(){e.writable||l()},l=function(){d=!1,f||n.call(e)},p=function(){f=!1,d||n.call(e)},m=function(t){n.call(e,t?new Error("exited with error code: "+t):null)},g=function(){return(!f||c&&c.ended)&&(!d||u&&u.ended)?void 0:n.call(e,new Error("premature close"))},y=function(){e.req.on("finish",l)};return i(e)?(e.on("complete",l),e.on("abort",g),e.req?y():e.on("request",y)):d&&!u&&(e.on("end",h),e.on("close",h)),s(e)&&e.on("exit",m),e.on("end",p),e.on("finish",l),!1!==t.error&&e.on("error",n),e.on("close",g),function(){e.removeListener("complete",l),e.removeListener("abort",g),e.removeListener("request",y),e.req&&e.req.removeListener("finish",l),e.removeListener("end",h),e.removeListener("close",h),e.removeListener("finish",l),e.removeListener("exit",m),e.removeListener("end",p),e.removeListener("error",n),e.removeListener("close",g)}};t.exports=a},{once:60}],34:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function o(e){return"function"==typeof e}function i(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!i(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,i,u,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var f=new Error('Uncaught, unspecified "error" event. ('+t+")");throw f.context=t,f}if(n=this._events[e],a(n))return!1;if(o(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:i=Array.prototype.slice.call(arguments,1),n.apply(this,i)}else if(s(n))for(i=Array.prototype.slice.call(arguments,1),c=n.slice(),r=c.length,u=0;u<r;u++)c[u].apply(this,i);return!0},r.prototype.addListener=function(e,t){var n;if(!o(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,o(t.listener)?t.listener:t),this._events[e]?s(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,s(this._events[e])&&!this._events[e].warned&&(n=a(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!o(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,i,a;if(!o(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,r=-1,n===t||o(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(n)){for(a=i;a-- >0;)if(n[a]===t||n[a].listener&&n[a].listener===t){r=a;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],o(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?o(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(o(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],35:[function(e,t,n){function r(e,t){var n=this;if(!(this instanceof r))return new r(e,t);t=t||{},o.call(this,t),this._offset=0,this._ready=!1,this._file=e,this._size=e.size,this._chunkSize=t.chunkSize||Math.max(this._size/1e3,204800),this.reader=new FileReader,this._generateHeaderBlocks(e,t,function(e,t){if(e)return n.emit("error",e);Array.isArray(t)&&t.forEach(function(e){n.push(e)}),n._ready=!0,n.emit("_ready")})}var o=e("readable-stream").Readable,i=e("inherits"),s=e("typedarray-to-buffer");i(r,o),t.exports=r,r.prototype._generateHeaderBlocks=function(e,t,n){n(null,[])},r.prototype._read=function(){if(!this._ready)return void this.once("_ready",this._read.bind(this));var e=this,t=this.reader,n=this._offset,r=this._offset+this._chunkSize;if(r>this._size&&(r=this._size),n===this._size)return this.destroy(),void this.push(null);t.onload=function(){e._offset=r,e.push(s(t.result))},t.onerror=function(){e.emit("error",t.error)},t.readAsArrayBuffer(this._file.slice(n,r))},r.prototype.destroy=function(){if(this._file=null,this.reader){this.reader.onload=null,this.reader.onerror=null;try{this.reader.abort()}catch(e){}}this.reader=null}},{inherits:41,"readable-stream":82,"typedarray-to-buffer":108}],36:[function(e,t,n){t.exports=function(e,t){function n(e,r){return e.reduce(function(e,o){return Array.isArray(o)&&r<t?e.concat(n(o,r+1)):e.concat(o)},[])}return t="number"==typeof t?t:1/0,t?n(e,1):Array.isArray(e)?e.map(function(e){return e}):e}},{}],37:[function(e,t,n){t.exports=function(){if("undefined"==typeof window)return null;var e={RTCPeerConnection:window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection,RTCSessionDescription:window.RTCSessionDescription||window.mozRTCSessionDescription||window.webkitRTCSessionDescription,RTCIceCandidate:window.RTCIceCandidate||window.mozRTCIceCandidate||window.webkitRTCIceCandidate};return e.RTCPeerConnection?e:null}},{}],38:[function(e,t,n){function r(e){if("string"==typeof e&&(e=i.parse(e)),e.protocol||(e.protocol="https:"),"https:"!==e.protocol)throw new Error('Protocol "'+e.protocol+'" not supported. Expected "https:"');return e}var o=e("http"),i=e("url"),s=t.exports;for(var a in o)o.hasOwnProperty(a)&&(s[a]=o[a]);s.request=function(e,t){return e=r(e),o.request.call(this,e,t)},s.get=function(e,t){return e=r(e),o.get.call(this,e,t)}},{http:95,url:112}],39:[function(e,t,n){n.read=function(e,t,n,r,o){var i,s,a=8*o-r-1,u=(1<<a)-1,c=u>>1,f=-7,d=n?o-1:0,h=n?-1:1,l=e[t+d];for(d+=h,i=l&(1<<-f)-1,l>>=-f,f+=a;f>0;i=256*i+e[t+d],d+=h,f-=8);for(s=i&(1<<-f)-1,i>>=-f,f+=r;f>0;s=256*s+e[t+d],d+=h,f-=8);if(0===i)i=1-c;else{if(i===u)return s?NaN:1/0*(l?-1:1);s+=Math.pow(2,r),i-=c}return(l?-1:1)*s*Math.pow(2,i-r)},n.write=function(e,t,n,r,o,i){var s,a,u,c=8*i-o-1,f=(1<<c)-1,d=f>>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,l=r?0:i-1,p=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),t+=s+d>=1?h/u:h*Math.pow(2,1-d),t*u>=2&&(s++,u/=2),s+d>=f?(a=0,s=f):s+d>=1?(a=(t*u-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[n+l]=255&a,l+=p,a/=256,o-=8);for(s=s<<o|a,c+=o;c>0;e[n+l]=255&s,l+=p,s/=256,c-=8);e[n+l-p]|=128*m}},{}],40:[function(e,t,n){(function(e){function n(e){if(!(this instanceof n))return new n(e);if(this.store=e,this.chunkLength=e.chunkLength,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.mem=[]}function r(t,n,r){e.nextTick(function(){t&&t(n,r)})}t.exports=n,n.prototype.put=function(e,t,n){var r=this;r.mem[e]=t,r.store.put(e,t,function(t){r.mem[e]=null,n&&n(t)})},n.prototype.get=function(e,t,n){if("function"==typeof t)return this.get(e,null,t);var o=t&&t.offset||0,i=t&&t.length&&o+t.length,s=this.mem[e];if(s)return r(n,null,t?s.slice(o,i):s);this.store.get(e,t,n)},n.prototype.close=function(e){this.store.close(e)},n.prototype.destroy=function(e){this.store.destroy(e)}}).call(this,e("_process"))},{_process:66}],41:[function(e,t,n){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],42:[function(e,t,n){t.exports=function(e){for(var t=0,n=e.length;t<n;++t)if(e.charCodeAt(t)>127)return!1;return!0}},{}],43:[function(e,t,n){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function o(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&r(e.slice(0,0))}t.exports=function(e){return null!=e&&(r(e)||o(e)||!!e._isBuffer)}},{}],44:[function(e,t,n){"use strict";function r(e){return o.existsSync(e)&&o.statSync(e).isFile()}var o=e("fs");t.exports=function(e,t){if(!t)return r(e);o.stat(e,function(e,n){return e?t(e):t(null,n.isFile())})},t.exports.sync=r},{fs:22}],45:[function(e,t,n){function r(e){return o(e)||i(e)}function o(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function i(e){return a[s.call(e)]}t.exports=r,r.strict=o,r.loose=i;var s=Object.prototype.toString,a={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0}},{}],46:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],47:[function(e,t,n){"use strict";n.re=/^npm-debug\.log$|^\..*\.swp$|^\.DS_Store$|^\.AppleDouble$|^\.LSOverride$|^Icon\r$|^\._.*|^\.Spotlight-V100$|\.Trashes|^__MACOSX$|~$|^Thumbs\.db$|^ehthumbs\.db$|^Desktop\.ini$/,n.is=function(e){return n.re.test(e)},n.not=n.isnt=function(e){return!n.is(e)}},{}],48:[function(e,t,n){(function(n){function r(e){var t={},r=e.split("magnet:?")[1];(r&&r.length>=0?r.split("&"):[]).forEach(function(e){var n=e.split("=");if(2===n.length){var r=n[0],o=n[1];if("dn"===r&&(o=decodeURIComponent(o).replace(/\+/g," ")),"tr"!==r&&"xs"!==r&&"as"!==r&&"ws"!==r||(o=decodeURIComponent(o)),"kt"===r&&(o=decodeURIComponent(o).split("+")),"ix"===r&&(o=Number(o)),t[r])if(Array.isArray(t[r]))t[r].push(o);else{var i=t[r];t[r]=[i,o]}else t[r]=o}});var o;if(t.xt){(Array.isArray(t.xt)?t.xt:[t.xt]).forEach(function(e){if(o=e.match(/^urn:btih:(.{40})/))t.infoHash=o[1].toLowerCase();else if(o=e.match(/^urn:btih:(.{32})/)){var r=i.decode(o[1]);t.infoHash=n.from(r,"binary").toString("hex")}})}return t.infoHash&&(t.infoHashBuffer=n.from(t.infoHash,"hex")),t.dn&&(t.name=t.dn),t.kt&&(t.keywords=t.kt),"string"==typeof t.tr?t.announce=[t.tr]:Array.isArray(t.tr)?t.announce=t.tr:t.announce=[],t.urlList=[],("string"==typeof t.as||Array.isArray(t.as))&&(t.urlList=t.urlList.concat(t.as)),("string"==typeof t.ws||Array.isArray(t.ws))&&(t.urlList=t.urlList.concat(t.ws)),a(t.announce),a(t.urlList),t}function o(e){e=s(e),e.infoHashBuffer&&(e.xt="urn:btih:"+e.infoHashBuffer.toString("hex")),e.infoHash&&(e.xt="urn:btih:"+e.infoHash),e.name&&(e.dn=e.name),e.keywords&&(e.kt=e.keywords),e.announce&&(e.tr=e.announce),e.urlList&&(e.ws=e.urlList,delete e.as);var t="magnet:?";return Object.keys(e).filter(function(e){return 2===e.length}).forEach(function(n,r){(Array.isArray(e[n])?e[n]:[e[n]]).forEach(function(e,o){!(r>0||o>0)||"kt"===n&&0!==o||(t+="&"),"dn"===n&&(e=encodeURIComponent(e).replace(/%20/g,"+")),"tr"!==n&&"xs"!==n&&"as"!==n&&"ws"!==n||(e=encodeURIComponent(e)),"kt"===n&&(e=encodeURIComponent(e)),t+="kt"===n&&o>0?"+"+e:n+"="+e})}),t}t.exports=r,t.exports.decode=r,t.exports.encode=o;var i=e("thirty-two"),s=e("xtend"),a=e("uniq")}).call(this,e("buffer").Buffer)},{buffer:24,"thirty-two":103,uniq:110,xtend:119}],49:[function(e,t,n){function r(e,t){var n=this;if(!(n instanceof r))return new r(e,t);if(!u)throw new Error("web browser lacks MediaSource support");t||(t={}),n._bufferDuration=t.bufferDuration||c,n._elem=e,n._mediaSource=new u,n._streams=[],n.detailedError=null,n._errorHandler=function(){n._elem.removeEventListener("error",n._errorHandler),n._streams.slice().forEach(function(e){e.destroy(n._elem.error)})},n._elem.addEventListener("error",n._errorHandler),n._elem.src=window.URL.createObjectURL(n._mediaSource)}function o(e,t){var n=this;if(s.Writable.call(n),n._wrapper=e,n._elem=e._elem,n._mediaSource=e._mediaSource,n._allStreams=e._streams,n._allStreams.push(n),n._bufferDuration=e._bufferDuration,n._sourceBuffer=null,n._openHandler=function(){n._onSourceOpen()},n._flowHandler=function(){n._flow()},"string"==typeof t)n._type=t,"open"===n._mediaSource.readyState?n._createSourceBuffer():n._mediaSource.addEventListener("sourceopen",n._openHandler);else if(null===t._sourceBuffer)t.destroy(),n._type=t._type,n._mediaSource.addEventListener("sourceopen",n._openHandler);else{if(!t._sourceBuffer)throw new Error("The argument to MediaElementWrapper.createWriteStream must be a string or a previous stream returned from that function");t.destroy(),n._type=t._type,n._sourceBuffer=t._sourceBuffer,n._sourceBuffer.addEventListener("updateend",n._flowHandler)}n._elem.addEventListener("timeupdate",n._flowHandler),n.on("error",function(e){n._wrapper.error(e)}),n.on("finish",function(){if(!n.destroyed&&(n._finished=!0,n._allStreams.every(function(e){return e._finished})))try{n._mediaSource.endOfStream()}catch(e){}})}t.exports=r;var i=e("inherits"),s=e("readable-stream"),a=e("to-arraybuffer"),u="undefined"!=typeof window&&window.MediaSource,c=60;r.prototype.createWriteStream=function(e){return new o(this,e)},r.prototype.error=function(e){var t=this;t.detailedError||(t.detailedError=e);try{t._mediaSource.endOfStream("decode")}catch(e){}},i(o,s.Writable),o.prototype._onSourceOpen=function(){var e=this;e.destroyed||(e._mediaSource.removeEventListener("sourceopen",e._openHandler),e._createSourceBuffer())},o.prototype.destroy=function(e){var t=this;t.destroyed||(t.destroyed=!0,t._allStreams.splice(t._allStreams.indexOf(t),1),t._mediaSource.removeEventListener("sourceopen",t._openHandler),t._elem.removeEventListener("timeupdate",t._flowHandler),t._sourceBuffer&&(t._sourceBuffer.removeEventListener("updateend",t._flowHandler),"open"===t._mediaSource.readyState&&t._sourceBuffer.abort()),e&&t.emit("error",e),t.emit("close"))},o.prototype._createSourceBuffer=function(){var e=this;if(!e.destroyed)if(u.isTypeSupported(e._type)){if(e._sourceBuffer=e._mediaSource.addSourceBuffer(e._type),e._sourceBuffer.addEventListener("updateend",e._flowHandler),e._cb){var t=e._cb;e._cb=null,t()}}else e.destroy(new Error("The provided type is not supported"))},o.prototype._write=function(e,t,n){var r=this;if(!r.destroyed){if(!r._sourceBuffer)return void(r._cb=function(o){if(o)return n(o);r._write(e,t,n)});if(r._sourceBuffer.updating)return n(new Error("Cannot append buffer while source buffer updating"));try{r._sourceBuffer.appendBuffer(a(e))}catch(e){return void r.destroy(e)}r._cb=n}},o.prototype._flow=function(){var e=this;if(!e.destroyed&&e._sourceBuffer&&!e._sourceBuffer.updating&&!("open"===e._mediaSource.readyState&&e._getBufferDuration()>e._bufferDuration)&&e._cb){var t=e._cb;e._cb=null,t()}};o.prototype._getBufferDuration=function(){for(var e=this,t=e._sourceBuffer.buffered,n=e._elem.currentTime,r=-1,o=0;o<t.length;o++){var i=t.start(o),s=t.end(o)+0;if(i>n)break;(r>=0||n<=s)&&(r=s)}var a=r-n;return a<0&&(a=0),a}},{inherits:41,"readable-stream":82,"to-arraybuffer":105}],50:[function(e,t,n){(function(e){function n(e,t){if(!(this instanceof n))return new n(e,t);if(t||(t={}),this.chunkLength=Number(e),!this.chunkLength)throw new Error("First argument must be a chunk length");this.chunks=[],this.closed=!1,this.length=Number(t.length)||1/0,this.length!==1/0&&(this.lastChunkLength=this.length%this.chunkLength||this.chunkLength,this.lastChunkIndex=Math.ceil(this.length/this.chunkLength)-1)}function r(t,n,r){e.nextTick(function(){t&&t(n,r)})}t.exports=n,n.prototype.put=function(e,t,n){if(this.closed)return r(n,new Error("Storage is closed"));var o=e===this.lastChunkIndex;return o&&t.length!==this.lastChunkLength?r(n,new Error("Last chunk length must be "+this.lastChunkLength)):o||t.length===this.chunkLength?(this.chunks[e]=t,void r(n,null)):r(n,new Error("Chunk length must be "+this.chunkLength))},n.prototype.get=function(e,t,n){if("function"==typeof t)return this.get(e,null,t);if(this.closed)return r(n,new Error("Storage is closed"));var o=this.chunks[e];if(!o)return r(n,new Error("Chunk not found"));if(!t)return r(n,null,o);var i=t.offset||0,s=t.length||o.length-i;r(n,null,o.slice(i,s+i))},n.prototype.close=n.prototype.destroy=function(e){if(this.closed)return r(e,new Error("Storage is closed"));this.closed=!0,this.chunks=null,r(e,null)}}).call(this,e("_process"))},{_process:66}],51:[function(e,t,n){(function(t){function r(e,t,n){for(var r=t;r<n;r++)e[r]=0}function o(e,t,n){t.writeUInt32BE(Math.floor((e.getTime()+g)/1e3),n)}function i(e,t,n){t.writeUInt16BE(Math.floor(e)%65536,n),t.writeUInt16BE(Math.floor(256*e*256)%65536,n+2)}function s(e,t,n){t[n]=Math.floor(e)%256,t[n+1]=Math.floor(256*e)%256}function a(e,t,n){e||(e=[0,0,0,0,0,0,0,0,0]);for(var r=0;r<e.length;r++)i(e[r],t,n+4*r)}function u(e,n,r){var o=new t(e,"utf8");o.copy(n,r),n[r+o.length]=0}function c(e){for(var t=new Array(e.length/4),n=0;n<t.length;n++)t[n]=d(e,4*n);return t}function f(e,t){return new Date(1e3*e.readUInt32BE(t)-g)}function d(e,t){return e.readUInt16BE(t)+e.readUInt16BE(t+2)/65536}function h(e,t){return e[t]+e[t+1]/256}function l(e,t,n){var r;for(r=0;r<n&&0!==e[t+r];r++);return e.toString("utf8",t,t+r)}var p=e("./index"),m=e("./descriptor"),g=20828448e5;n.fullBoxes={},["mvhd","tkhd","mdhd","vmhd","smhd","stsd","esds","stsz","stco","stss","stts","ctts","stsc","dref","elst","hdlr","mehd","trex","mfhd","tfhd","tfdt","trun"].forEach(function(e){n.fullBoxes[e]=!0}),n.ftyp={},n.ftyp.encode=function(e,r,o){r=r?r.slice(o):new t(n.ftyp.encodingLength(e));var i=e.compatibleBrands||[];r.write(e.brand,0,4,"ascii"),r.writeUInt32BE(e.brandVersion,4);for(var s=0;s<i.length;s++)r.write(i[s],8+4*s,4,"ascii");return n.ftyp.encode.bytes=8+4*i.length,r},n.ftyp.decode=function(e,t){e=e.slice(t);for(var n=e.toString("ascii",0,4),r=e.readUInt32BE(4),o=[],i=8;i<e.length;i+=4)o.push(e.toString("ascii",i,i+4));return{brand:n,brandVersion:r,compatibleBrands:o}},n.ftyp.encodingLength=function(e){return 8+4*(e.compatibleBrands||[]).length},n.mvhd={},n.mvhd.encode=function(e,u,c){return u=u?u.slice(c):new t(96),o(e.ctime||new Date,u,0),o(e.mtime||new Date,u,4),u.writeUInt32BE(e.timeScale||0,8),u.writeUInt32BE(e.duration||0,12),i(e.preferredRate||0,u,16),s(e.preferredVolume||0,u,20),r(u,22,32),a(e.matrix,u,32),u.writeUInt32BE(e.previewTime||0,68),u.writeUInt32BE(e.previewDuration||0,72),u.writeUInt32BE(e.posterTime||0,76),u.writeUInt32BE(e.selectionTime||0,80),u.writeUInt32BE(e.selectionDuration||0,84),u.writeUInt32BE(e.currentTime||0,88),u.writeUInt32BE(e.nextTrackId||0,92),n.mvhd.encode.bytes=96,u},n.mvhd.decode=function(e,t){return e=e.slice(t),{ctime:f(e,0),mtime:f(e,4),timeScale:e.readUInt32BE(8),duration:e.readUInt32BE(12),preferredRate:d(e,16),preferredVolume:h(e,20),matrix:c(e.slice(32,68)),previewTime:e.readUInt32BE(68),previewDuration:e.readUInt32BE(72),posterTime:e.readUInt32BE(76),selectionTime:e.readUInt32BE(80),selectionDuration:e.readUInt32BE(84),currentTime:e.readUInt32BE(88),nextTrackId:e.readUInt32BE(92)}},n.mvhd.encodingLength=function(e){return 96},n.tkhd={},n.tkhd.encode=function(e,i,s){return i=i?i.slice(s):new t(80),o(e.ctime||new Date,i,0),o(e.mtime||new Date,i,4),i.writeUInt32BE(e.trackId||0,8),r(i,12,16),i.writeUInt32BE(e.duration||0,16),r(i,20,28),i.writeUInt16BE(e.layer||0,28),i.writeUInt16BE(e.alternateGroup||0,30),i.writeUInt16BE(e.volume||0,32),a(e.matrix,i,36),i.writeUInt32BE(e.trackWidth||0,72),i.writeUInt32BE(e.trackHeight||0,76),n.tkhd.encode.bytes=80,i},n.tkhd.decode=function(e,t){return e=e.slice(t),{ctime:f(e,0),mtime:f(e,4),trackId:e.readUInt32BE(8),duration:e.readUInt32BE(16),layer:e.readUInt16BE(28),alternateGroup:e.readUInt16BE(30),volume:e.readUInt16BE(32),matrix:c(e.slice(36,72)),trackWidth:e.readUInt32BE(72),trackHeight:e.readUInt32BE(76)}},n.tkhd.encodingLength=function(e){return 80},n.mdhd={},n.mdhd.encode=function(e,r,i){return r=r?r.slice(i):new t(20),o(e.ctime||new Date,r,0),o(e.mtime||new Date,r,4),r.writeUInt32BE(e.timeScale||0,8),r.writeUInt32BE(e.duration||0,12),r.writeUInt16BE(e.language||0,16),r.writeUInt16BE(e.quality||0,18),n.mdhd.encode.bytes=20,r},n.mdhd.decode=function(e,t){return e=e.slice(t),{ctime:f(e,0),mtime:f(e,4),timeScale:e.readUInt32BE(8),duration:e.readUInt32BE(12),language:e.readUInt16BE(16),quality:e.readUInt16BE(18)}},n.mdhd.encodingLength=function(e){return 20},n.vmhd={},n.vmhd.encode=function(e,r,o){r=r?r.slice(o):new t(8),r.writeUInt16BE(e.graphicsMode||0,0);var i=e.opcolor||[0,0,0];return r.writeUInt16BE(i[0],2),r.writeUInt16BE(i[1],4),r.writeUInt16BE(i[2],6),n.vmhd.encode.bytes=8,r},n.vmhd.decode=function(e,t){return e=e.slice(t),{graphicsMode:e.readUInt16BE(0),opcolor:[e.readUInt16BE(2),e.readUInt16BE(4),e.readUInt16BE(6)]}},n.vmhd.encodingLength=function(e){return 8},n.smhd={},n.smhd.encode=function(e,o,i){return o=o?o.slice(i):new t(4),o.writeUInt16BE(e.balance||0,0),r(o,2,4),n.smhd.encode.bytes=4,o},n.smhd.decode=function(e,t){return e=e.slice(t),{balance:e.readUInt16BE(0)}},n.smhd.encodingLength=function(e){return 4},n.stsd={},n.stsd.encode=function(e,r,o){r=r?r.slice(o):new t(n.stsd.encodingLength(e));var i=e.entries||[];r.writeUInt32BE(i.length,0);for(var s=4,a=0;a<i.length;a++){var u=i[a];p.encode(u,r,s),s+=p.encode.bytes}return n.stsd.encode.bytes=s,r},n.stsd.decode=function(e,t,n){e=e.slice(t);for(var r=e.readUInt32BE(0),o=new Array(r),i=4,s=0;s<r;s++){var a=p.decode(e,i,n);o[s]=a,i+=a.length}return{entries:o}},n.stsd.encodingLength=function(e){var t=4;if(!e.entries)return t;for(var n=0;n<e.entries.length;n++)t+=p.encodingLength(e.entries[n]);return t},n.avc1=n.VisualSampleEntry={},n.VisualSampleEntry.encode=function(e,o,i){o=o?o.slice(i):new t(n.VisualSampleEntry.encodingLength(e)),r(o,0,6),o.writeUInt16BE(e.dataReferenceIndex||0,6),r(o,8,24),o.writeUInt16BE(e.width||0,24),o.writeUInt16BE(e.height||0,26),o.writeUInt32BE(e.hResolution||4718592,28),o.writeUInt32BE(e.vResolution||4718592,32),r(o,36,40),o.writeUInt16BE(e.frameCount||1,40);var s=e.compressorName||"",a=Math.min(s.length,31);o.writeUInt8(a,42),o.write(s,43,a,"utf8"),o.writeUInt16BE(e.depth||24,74),o.writeInt16BE(-1,76);var u=78;(e.children||[]).forEach(function(e){p.encode(e,o,u),u+=p.encode.bytes}),n.VisualSampleEntry.encode.bytes=u},n.VisualSampleEntry.decode=function(e,t,n){e=e.slice(t);for(var r=n-t,o=Math.min(e.readUInt8(42),31),i={dataReferenceIndex:e.readUInt16BE(6),width:e.readUInt16BE(24),height:e.readUInt16BE(26),hResolution:e.readUInt32BE(28),vResolution:e.readUInt32BE(32),frameCount:e.readUInt16BE(40),compressorName:e.toString("utf8",43,43+o),depth:e.readUInt16BE(74),children:[]},s=78;r-s>=8;){var a=p.decode(e,s,r);i.children.push(a),i[a.type]=a,s+=a.length}return i},n.VisualSampleEntry.encodingLength=function(e){var t=78;return(e.children||[]).forEach(function(e){t+=p.encodingLength(e)}),t},n.avcC={},n.avcC.encode=function(e,r,o){r=r?r.slice(o):t(e.buffer.length),e.buffer.copy(r),n.avcC.encode.bytes=e.buffer.length},n.avcC.decode=function(e,n,r){return e=e.slice(n,r),{mimeCodec:e.toString("hex",1,4),buffer:new t(e)}},n.avcC.encodingLength=function(e){return e.buffer.length},n.mp4a=n.AudioSampleEntry={},n.AudioSampleEntry.encode=function(e,o,i){o=o?o.slice(i):new t(n.AudioSampleEntry.encodingLength(e)),r(o,0,6),o.writeUInt16BE(e.dataReferenceIndex||0,6),r(o,8,16),o.writeUInt16BE(e.channelCount||2,16),o.writeUInt16BE(e.sampleSize||16,18),r(o,20,24),o.writeUInt32BE(e.sampleRate||0,24);var s=28;(e.children||[]).forEach(function(e){p.encode(e,o,s),s+=p.encode.bytes}),n.AudioSampleEntry.encode.bytes=s},n.AudioSampleEntry.decode=function(e,t,n){e=e.slice(t,n);for(var r=n-t,o={dataReferenceIndex:e.readUInt16BE(6),channelCount:e.readUInt16BE(16),sampleSize:e.readUInt16BE(18),sampleRate:e.readUInt32BE(24),children:[]},i=28;r-i>=8;){var s=p.decode(e,i,r);o.children.push(s),o[s.type]=s,i+=s.length}return o},n.AudioSampleEntry.encodingLength=function(e){var t=28;return(e.children||[]).forEach(function(e){t+=p.encodingLength(e)}),t},n.esds={},n.esds.encode=function(e,r,o){r=r?r.slice(o):t(e.buffer.length),e.buffer.copy(r,0),n.esds.encode.bytes=e.buffer.length},n.esds.decode=function(e,n,r){e=e.slice(n,r);var o=m.Descriptor.decode(e,0,e.length),i="ESDescriptor"===o.tagName?o:{},s=i.DecoderConfigDescriptor||{},a=s.oti||0,u=s.DecoderSpecificInfo,c=u?(248&u.buffer.readUInt8(0))>>3:0,f=null;return a&&(f=a.toString(16),c&&(f+="."+c)),{mimeCodec:f,buffer:new t(e.slice(0))}},n.esds.encodingLength=function(e){return e.buffer.length},n.stsz={},n.stsz.encode=function(e,r,o){var i=e.entries||[];r=r?r.slice(o):t(n.stsz.encodingLength(e)),r.writeUInt32BE(0,0),r.writeUInt32BE(i.length,4);for(var s=0;s<i.length;s++)r.writeUInt32BE(i[s],4*s+8);return n.stsz.encode.bytes=8+4*i.length,r},n.stsz.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=e.readUInt32BE(4),o=new Array(r),i=0;i<r;i++)o[i]=0===n?e.readUInt32BE(4*i+8):n;return{entries:o}},n.stsz.encodingLength=function(e){return 8+4*e.entries.length},n.stss=n.stco={},n.stco.encode=function(e,r,o){var i=e.entries||[];r=r?r.slice(o):new t(n.stco.encodingLength(e)),r.writeUInt32BE(i.length,0);for(var s=0;s<i.length;s++)r.writeUInt32BE(i[s],4*s+4);return n.stco.encode.bytes=4+4*i.length,r},n.stco.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=new Array(n),o=0;o<n;o++)r[o]=e.readUInt32BE(4*o+4);return{entries:r}},n.stco.encodingLength=function(e){return 4+4*e.entries.length},n.stts={},n.stts.encode=function(e,r,o){var i=e.entries||[];r=r?r.slice(o):new t(n.stts.encodingLength(e)),r.writeUInt32BE(i.length,0);for(var s=0;s<i.length;s++){var a=8*s+4;r.writeUInt32BE(i[s].count||0,a),r.writeUInt32BE(i[s].duration||0,a+4)}return n.stts.encode.bytes=4+8*e.entries.length,r}, -n.stts.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=new Array(n),o=0;o<n;o++){var i=8*o+4;r[o]={count:e.readUInt32BE(i),duration:e.readUInt32BE(i+4)}}return{entries:r}},n.stts.encodingLength=function(e){return 4+8*e.entries.length},n.ctts={},n.ctts.encode=function(e,r,o){var i=e.entries||[];r=r?r.slice(o):new t(n.ctts.encodingLength(e)),r.writeUInt32BE(i.length,0);for(var s=0;s<i.length;s++){var a=8*s+4;r.writeUInt32BE(i[s].count||0,a),r.writeUInt32BE(i[s].compositionOffset||0,a+4)}return n.ctts.encode.bytes=4+8*i.length,r},n.ctts.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=new Array(n),o=0;o<n;o++){var i=8*o+4;r[o]={count:e.readUInt32BE(i),compositionOffset:e.readInt32BE(i+4)}}return{entries:r}},n.ctts.encodingLength=function(e){return 4+8*e.entries.length},n.stsc={},n.stsc.encode=function(e,r,o){var i=e.entries||[];r=r?r.slice(o):new t(n.stsc.encodingLength(e)),r.writeUInt32BE(i.length,0);for(var s=0;s<i.length;s++){var a=12*s+4;r.writeUInt32BE(i[s].firstChunk||0,a),r.writeUInt32BE(i[s].samplesPerChunk||0,a+4),r.writeUInt32BE(i[s].sampleDescriptionId||0,a+8)}return n.stsc.encode.bytes=4+12*i.length,r},n.stsc.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=new Array(n),o=0;o<n;o++){var i=12*o+4;r[o]={firstChunk:e.readUInt32BE(i),samplesPerChunk:e.readUInt32BE(i+4),sampleDescriptionId:e.readUInt32BE(i+8)}}return{entries:r}},n.stsc.encodingLength=function(e){return 4+12*e.entries.length},n.dref={},n.dref.encode=function(e,r,o){r=r?r.slice(o):new t(n.dref.encodingLength(e));var i=e.entries||[];r.writeUInt32BE(i.length,0);for(var s=4,a=0;a<i.length;a++){var u=i[a],c=(u.buf?u.buf.length:0)+4+4;r.writeUInt32BE(c,s),s+=4,r.write(u.type,s,4,"ascii"),s+=4,u.buf&&(u.buf.copy(r,s),s+=u.buf.length)}return n.dref.encode.bytes=s,r},n.dref.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=new Array(n),o=4,i=0;i<n;i++){var s=e.readUInt32BE(o),a=e.toString("ascii",o+4,o+8),u=e.slice(o+8,o+s);o+=s,r[i]={type:a,buf:u}}return{entries:r}},n.dref.encodingLength=function(e){var t=4;if(!e.entries)return t;for(var n=0;n<e.entries.length;n++){var r=e.entries[n].buf;t+=(r?r.length:0)+4+4}return t},n.elst={},n.elst.encode=function(e,r,o){var s=e.entries||[];r=r?r.slice(o):new t(n.elst.encodingLength(e)),r.writeUInt32BE(s.length,0);for(var a=0;a<s.length;a++){var u=12*a+4;r.writeUInt32BE(s[a].trackDuration||0,u),r.writeUInt32BE(s[a].mediaTime||0,u+4),i(s[a].mediaRate||0,r,u+8)}return n.elst.encode.bytes=4+12*s.length,r},n.elst.decode=function(e,t){e=e.slice(t);for(var n=e.readUInt32BE(0),r=new Array(n),o=0;o<n;o++){var i=12*o+4;r[o]={trackDuration:e.readUInt32BE(i),mediaTime:e.readInt32BE(i+4),mediaRate:d(e,i+8)}}return{entries:r}},n.elst.encodingLength=function(e){return 4+12*e.entries.length},n.hdlr={},n.hdlr.encode=function(e,r,o){r=r?r.slice(o):new t(n.hdlr.encodingLength(e));var i=21+(e.name||"").length;return r.fill(0,0,i),r.write(e.handlerType||"",4,4,"ascii"),u(e.name||"",r,20),n.hdlr.encode.bytes=i,r},n.hdlr.decode=function(e,t,n){return e=e.slice(t),{handlerType:e.toString("ascii",4,8),name:l(e,20,n)}},n.hdlr.encodingLength=function(e){return 21+(e.name||"").length},n.mehd={},n.mehd.encode=function(e,r,o){return r=r?r.slice(o):new t(4),r.writeUInt32BE(e.fragmentDuration||0,0),n.mehd.encode.bytes=4,r},n.mehd.decode=function(e,t){return e=e.slice(t),{fragmentDuration:e.readUInt32BE(0)}},n.mehd.encodingLength=function(e){return 4},n.trex={},n.trex.encode=function(e,r,o){return r=r?r.slice(o):new t(20),r.writeUInt32BE(e.trackId||0,0),r.writeUInt32BE(e.defaultSampleDescriptionIndex||0,4),r.writeUInt32BE(e.defaultSampleDuration||0,8),r.writeUInt32BE(e.defaultSampleSize||0,12),r.writeUInt32BE(e.defaultSampleFlags||0,16),n.trex.encode.bytes=20,r},n.trex.decode=function(e,t){return e=e.slice(t),{trackId:e.readUInt32BE(0),defaultSampleDescriptionIndex:e.readUInt32BE(4),defaultSampleDuration:e.readUInt32BE(8),defaultSampleSize:e.readUInt32BE(12),defaultSampleFlags:e.readUInt32BE(16)}},n.trex.encodingLength=function(e){return 20},n.mfhd={},n.mfhd.encode=function(e,r,o){return r=r?r.slice(o):new t(4),r.writeUInt32BE(e.sequenceNumber||0,0),n.mfhd.encode.bytes=4,r},n.mfhd.decode=function(e,t){return{sequenceNumber:e.readUint32BE(0)}},n.mfhd.encodingLength=function(e){return 4},n.tfhd={},n.tfhd.encode=function(e,r,o){return r=r?r.slice(o):new t(4),r.writeUInt32BE(e.trackId,0),n.tfhd.encode.bytes=4,r},n.tfhd.decode=function(e,t){},n.tfhd.encodingLength=function(e){return 4},n.tfdt={},n.tfdt.encode=function(e,r,o){return r=r?r.slice(o):new t(4),r.writeUInt32BE(e.baseMediaDecodeTime||0,0),n.tfdt.encode.bytes=4,r},n.tfdt.decode=function(e,t){},n.tfdt.encodingLength=function(e){return 4},n.trun={},n.trun.encode=function(e,r,o){r=r?r.slice(o):new t(8+16*e.entries.length),r.writeUInt32BE(e.entries.length,0),r.writeInt32BE(e.dataOffset,4);for(var i=8,s=0;s<e.entries.length;s++){var a=e.entries[s];r.writeUInt32BE(a.sampleDuration,i),i+=4,r.writeUInt32BE(a.sampleSize,i),i+=4,r.writeUInt32BE(a.sampleFlags,i),i+=4,r.writeUInt32BE(a.sampleCompositionTimeOffset,i),i+=4}n.trun.encode.bytes=i},n.trun.decode=function(e,t){},n.trun.encodingLength=function(e){return 8+16*e.entries.length},n.mdat={},n.mdat.encode=function(e,t,r){e.buffer?(e.buffer.copy(t,r),n.mdat.encode.bytes=e.buffer.length):n.mdat.encode.bytes=n.mdat.encodingLength(e)},n.mdat.decode=function(e,n,r){return{buffer:new t(e.slice(n,r))}},n.mdat.encodingLength=function(e){return e.buffer?e.buffer.length:e.contentLength}}).call(this,e("buffer").Buffer)},{"./descriptor":52,"./index":53,buffer:24}],52:[function(e,t,n){(function(e){var t={3:"ESDescriptor",4:"DecoderConfigDescriptor",5:"DecoderSpecificInfo",6:"SLConfigDescriptor"};n.Descriptor={},n.Descriptor.decode=function(r,o,i){var s,a=r.readUInt8(o),u=o+1,c=0;do{s=r.readUInt8(u++),c=c<<7|127&s}while(128&s);var f,d=t[a];return f=n[d]?n[d].decode(r,u,i):{buffer:new e(r.slice(u,u+c))},f.tag=a,f.tagName=d,f.length=u-o+c,f.contentsLen=c,f},n.DescriptorArray={},n.DescriptorArray.decode=function(e,r,o){for(var i=r,s={};i+2<=o;){var a=n.Descriptor.decode(e,i,o);i+=a.length;s[t[a.tag]||"Descriptor"+a.tag]=a}return s},n.ESDescriptor={},n.ESDescriptor.decode=function(e,t,r){var o=e.readUInt8(t+2),i=t+3;if(128&o&&(i+=2),64&o){i+=e.readUInt8(i)+1}return 32&o&&(i+=2),n.DescriptorArray.decode(e,i,r)},n.DecoderConfigDescriptor={},n.DecoderConfigDescriptor.decode=function(e,t,r){var o=e.readUInt8(t),i=n.DescriptorArray.decode(e,t+13,r);return i.oti=o,i}}).call(this,e("buffer").Buffer)},{buffer:24}],53:[function(e,t,n){(function(t){var r=e("uint64be"),o=e("./boxes"),i=n,s=n.containers={moov:["mvhd","meta","traks","mvex"],trak:["tkhd","tref","trgr","edts","meta","mdia","udta"],edts:["elst"],mdia:["mdhd","hdlr","elng","minf"],minf:["vmhd","smhd","hmhd","sthd","nmhd","dinf","stbl"],dinf:["dref"],stbl:["stsd","stts","ctts","cslg","stsc","stsz","stz2","stco","co64","stss","stsh","padb","stdp","sdtp","sbgps","sgpds","subss","saizs","saios"],mvex:["mehd","trexs","leva"],moof:["mfhd","meta","trafs"],traf:["tfhd","trun","sbgps","sgpds","subss","saizs","saios","tfdt","meta"]};i.encode=function(e,n,r){return i.encodingLength(e),r=r||0,n=n||new t(e.length),i._encode(e,n,r)},i._encode=function(e,t,n){var a=e.type,u=e.length;u>4294967295&&(u=1),t.writeUInt32BE(u,n),t.write(e.type,n+4,4,"ascii");var c=n+8;if(1===u&&(r.encode(e.length,t,c),c+=8),o.fullBoxes[a]&&(t.writeUInt32BE(e.flags||0,c),t.writeUInt8(e.version||0,c),c+=4),s[a]){s[a].forEach(function(n){if(5===n.length){var r=e[n]||[];n=n.substr(0,4),r.forEach(function(e){i._encode(e,t,c),c+=i.encode.bytes})}else e[n]&&(i._encode(e[n],t,c),c+=i.encode.bytes)}),e.otherBoxes&&e.otherBoxes.forEach(function(e){i._encode(e,t,c),c+=i.encode.bytes})}else if(o[a]){var f=o[a].encode;f(e,t,c),c+=f.bytes}else{if(!e.buffer)throw new Error("Either `type` must be set to a known type (not'"+a+"') or `buffer` must be set");var d=e.buffer;d.copy(t,c),c+=e.buffer.length}return i.encode.bytes=c-n,t},i.readHeaders=function(e,t,n){if(t=t||0,(n=n||e.length)-t<8)return 8;var i=e.readUInt32BE(t),s=e.toString("ascii",t+4,t+8),a=t+8;if(1===i){if(n-t<16)return 16;i=r.decode(e,a),a+=8}var u,c;return o.fullBoxes[s]&&(u=e.readUInt8(a),c=16777215&e.readUInt32BE(a),a+=4),{length:i,headersLen:a-t,contentLen:i-(a-t),type:s,version:u,flags:c}},i.decode=function(e,t,n){t=t||0,n=n||e.length;var r=i.readHeaders(e,t,n);if(!r||r.length>n-t)throw new Error("Data too short");return i.decodeWithoutHeaders(r,e,t+r.headersLen,t+r.length)},i.decodeWithoutHeaders=function(e,n,r,a){r=r||0,a=a||n.length;var u=e.type,c={};if(s[u]){c.otherBoxes=[];for(var f=s[u],d=r;a-d>=8;){var h=i.decode(n,d,a);if(d+=h.length,f.indexOf(h.type)>=0)c[h.type]=h;else if(f.indexOf(h.type+"s")>=0){var l=h.type+"s",p=c[l]=c[l]||[];p.push(h)}else c.otherBoxes.push(h)}}else if(o[u]){var m=o[u].decode;c=m(n,r,a)}else c.buffer=new t(n.slice(r,a));return c.length=e.length,c.contentLen=e.contentLen,c.type=e.type,c.version=e.version,c.flags=e.flags,c},i.encodingLength=function(e){var t=e.type,n=8;if(o.fullBoxes[t]&&(n+=4),s[t]){s[t].forEach(function(t){if(5===t.length){var r=e[t]||[];t=t.substr(0,4),r.forEach(function(e){e.type=t,n+=i.encodingLength(e)})}else if(e[t]){var o=e[t];o.type=t,n+=i.encodingLength(o)}}),e.otherBoxes&&e.otherBoxes.forEach(function(e){n+=i.encodingLength(e)})}else if(o[t])n+=o[t].encodingLength(e);else{if(!e.buffer)throw new Error("Either `type` must be set to a known type (not'"+t+"') or `buffer` must be set");n+=e.buffer.length}return n>4294967295&&(n+=8),e.length=n,n}}).call(this,e("buffer").Buffer)},{"./boxes":51,buffer:24,uint64be:109}],54:[function(e,t,n){(function(n){function r(){if(!(this instanceof r))return new r;i.Writable.call(this),this.destroyed=!1,this._pending=0,this._missing=0,this._buf=null,this._str=null,this._cb=null,this._ondrain=null,this._writeBuffer=null,this._writeCb=null,this._ondrain=null,this._kick()}function o(e){this._parent=e,this.destroyed=!1,i.PassThrough.call(this)}var i=e("readable-stream"),s=e("inherits"),a=e("next-event"),u=e("mp4-box-encoding"),c=new n(0);t.exports=r,s(r,i.Writable),r.prototype.destroy=function(e){this.destroyed||(this.destroyed=!0,e&&this.emit("error",e),this.emit("close"))},r.prototype._write=function(e,t,n){if(!this.destroyed){for(var r=!this._str||!this._str._writableState.needDrain;e.length&&!this.destroyed;){if(!this._missing)return this._writeBuffer=e,void(this._writeCb=n);var o=e.length<this._missing?e.length:this._missing;if(this._buf?e.copy(this._buf,this._buf.length-this._missing):this._str&&(r=this._str.write(o===e.length?e:e.slice(0,o))),this._missing-=o,!this._missing){var i=this._buf,s=this._cb,a=this._str;this._buf=this._cb=this._str=this._ondrain=null,r=!0,a&&a.end(),s&&s(i)}e=o===e.length?c:e.slice(o)}if(this._pending&&!this._missing)return this._writeBuffer=e,void(this._writeCb=n);r?n():this._ondrain(n)}},r.prototype._buffer=function(e,t){this._missing=e,this._buf=new n(e),this._cb=t},r.prototype._stream=function(e,t){var n=this;return this._missing=e,this._str=new o(this),this._ondrain=a(this._str,"drain"),this._pending++,this._str.on("end",function(){n._pending--,n._kick()}),this._cb=t,this._str},r.prototype._readBox=function(){function e(r,o){t._buffer(r,function(r){o=o?n.concat([o,r]):r;var i=u.readHeaders(o);"number"==typeof i?e(i-o.length,o):(t._pending++,t._headers=i,t.emit("box",i))})}var t=this;e(8)},r.prototype.stream=function(){var e=this;if(!e._headers)throw new Error("this function can only be called once after 'box' is emitted");var t=e._headers;return e._headers=null,e._stream(t.contentLen,null)},r.prototype.decode=function(e){var t=this;if(!t._headers)throw new Error("this function can only be called once after 'box' is emitted");var n=t._headers;t._headers=null,t._buffer(n.contentLen,function(r){var o=u.decodeWithoutHeaders(n,r);e(o),t._pending--,t._kick()})},r.prototype.ignore=function(){var e=this;if(!e._headers)throw new Error("this function can only be called once after 'box' is emitted");var t=e._headers;e._headers=null,this._missing=t.contentLen,this._cb=function(){e._pending--,e._kick()}},r.prototype._kick=function(){if(!this._pending&&(this._buf||this._str||this._readBox(),this._writeBuffer)){var e=this._writeCb,t=this._writeBuffer;this._writeBuffer=null,this._writeCb=null,this._write(t,null,e)}},s(o,i.PassThrough),o.prototype.destroy=function(e){this.destroyed||(this.destroyed=!0,this._parent.destroy(e),e&&this.emit("error",e),this.emit("close"))}}).call(this,e("buffer").Buffer)},{buffer:24,inherits:41,"mp4-box-encoding":53,"next-event":59,"readable-stream":82}],55:[function(e,t,n){(function(n,r){function o(){}function i(){function e(){n._want&&(n._want=!1,n._read())}function t(){n._stream=null}if(!(this instanceof i))return new i;a.Readable.call(this),this.destroyed=!1,this._reading=!1,this._stream=null,this._drain=null,this._want=!1,this._onreadable=e,this._onend=t;var n=this}function s(e){this._parent=e,this.destroyed=!1,a.PassThrough.call(this)}var a=e("readable-stream"),u=e("inherits"),c=e("mp4-box-encoding");t.exports=i,u(i,a.Readable),i.prototype.mediaData=i.prototype.mdat=function(e,t){var n=new s(this);return this.box({type:"mdat",contentLength:e,encodeBufferLen:8,stream:n},t),n},i.prototype.box=function(e,t){if(t||(t=o),this.destroyed)return t(new Error("Encoder is destroyed"));var i;if(e.encodeBufferLen&&(i=new r(e.encodeBufferLen)),e.stream)e.buffer=null,i=c.encode(e,i),this.push(i),this._stream=e.stream,this._stream.on("readable",this._onreadable),this._stream.on("end",this._onend),this._stream.on("end",t),this._forward();else{i=c.encode(e,i);if(this.push(i))return n.nextTick(t);this._drain=t}},i.prototype.destroy=function(e){if(!this.destroyed){if(this.destroyed=!0,this._stream&&this._stream.destroy&&this._stream.destroy(),this._stream=null,this._drain){var t=this._drain;this._drain=null,t(e)}e&&this.emit("error",e),this.emit("close")}},i.prototype.finalize=function(){this.push(null)},i.prototype._forward=function(){if(this._stream)for(;!this.destroyed;){var e=this._stream.read();if(!e)return void(this._want=!!this._stream);if(!this.push(e))return}},i.prototype._read=function(){if(!this._reading&&!this.destroyed){if(this._reading=!0,this._stream&&this._forward(),this._drain){var e=this._drain;this._drain=null,e()}this._reading=!1}},u(s,a.PassThrough),s.prototype.destroy=function(e){this.destroyed||(this.destroyed=!0,this._parent.destroy(e),e&&this.emit("error",e),this.emit("close"))}}).call(this,e("_process"),e("buffer").Buffer)},{_process:66,buffer:24,inherits:41,"mp4-box-encoding":53,"readable-stream":82}],56:[function(e,t,n){n.decode=e("./decode"),n.encode=e("./encode")},{"./decode":54,"./encode":55}],57:[function(e,t,n){function r(e){if(e=String(e),!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*d;case"days":case"day":case"d":return n*f;case"hours":case"hour":case"hrs":case"hr":case"h":return n*c;case"minutes":case"minute":case"mins":case"min":case"m":return n*u;case"seconds":case"second":case"secs":case"sec":case"s":return n*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function o(e){return e>=f?Math.round(e/f)+"d":e>=c?Math.round(e/c)+"h":e>=u?Math.round(e/u)+"m":e>=a?Math.round(e/a)+"s":e+"ms"}function i(e){return s(e,f,"day")||s(e,c,"hour")||s(e,u,"minute")||s(e,a,"second")||e+" ms"}function s(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+n:Math.ceil(e/t)+" "+n+"s"}var a=1e3,u=60*a,c=60*u,f=24*c,d=365.25*f;t.exports=function(e,t){t=t||{};var n=typeof e;if("string"===n&&e.length>0)return r(e);if("number"===n&&!1===isNaN(e))return t.long?i(e):o(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}],58:[function(e,t,n){function r(e,t){var n=this;if(!(n instanceof r))return new r(e,t);s.Readable.call(n,t),n.destroyed=!1,n._drained=!1,n._forwarding=!1,n._current=null,"function"==typeof e?n._queue=e:(n._queue=e.map(o),n._queue.forEach(function(e){"function"!=typeof e&&n._attachErrorListener(e)})),n._next()}function o(e){if(!e||"function"==typeof e||e._readableState)return e;var t=(new s.Readable).wrap(e);return e.destroy&&(t.destroy=e.destroy.bind(e)),t}t.exports=r;var i=e("inherits"),s=e("readable-stream");i(r,s.Readable),r.obj=function(e){return new r(e,{objectMode:!0,highWaterMark:16})},r.prototype._read=function(){this._drained=!0,this._forward()},r.prototype._forward=function(){if(!this._forwarding&&this._drained&&this._current){this._forwarding=!0;for(var e;null!==(e=this._current.read());)this._drained=this.push(e);this._forwarding=!1}},r.prototype.destroy=function(e){this.destroyed||(this.destroyed=!0,this._current&&this._current.destroy&&this._current.destroy(),"function"!=typeof this._queue&&this._queue.forEach(function(e){e.destroy&&e.destroy()}),e&&this.emit("error",e),this.emit("close"))},r.prototype._next=function(){var e=this;if(e._current=null,"function"==typeof e._queue)e._queue(function(t,n){if(t)return e.destroy(t);n=o(n),e._attachErrorListener(n),e._gotNextStream(n)});else{var t=e._queue.shift();"function"==typeof t&&(t=o(t()),e._attachErrorListener(t)),e._gotNextStream(t)}},r.prototype._gotNextStream=function(e){function t(){o._forward()}function n(){e._readableState.ended||o.destroy()}function r(){o._current=null,e.removeListener("readable",t),e.removeListener("end",r),e.removeListener("close",n),o._next()}var o=this;if(!e)return o.push(null),void o.destroy();o._current=e,o._forward(),e.on("readable",t),e.once("end",r),e.once("close",n)},r.prototype._attachErrorListener=function(e){function t(r){e.removeListener("error",t),n.destroy(r)}var n=this;e&&e.once("error",t)}},{inherits:41,"readable-stream":82}],59:[function(e,t,n){function r(e,t){var n=null;return e.on(t,function(e){if(n){var t=n;n=null,t(e)}}),function(e){n=e}}t.exports=r},{}],60:[function(e,t,n){function r(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function o(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},n=e.name||"Function wrapped with `once`";return t.onceError=n+" shouldn't be called more than once",t.called=!1,t}var i=e("wrappy");t.exports=i(r),t.exports.strict=i(o),r.proto=r(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return r(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return o(this)},configurable:!0})})},{wrappy:118}],61:[function(e,t,n){(function(n){function r(e){n.isBuffer(e)&&(e=u.decode(e)),a(e.info,"info"),a(e.info["name.utf-8"]||e.info.name,"info.name"),a(e.info["piece length"],"info['piece length']"),a(e.info.pieces,"info.pieces"),e.info.files?e.info.files.forEach(function(e){a("number"==typeof e.length,"info.files[0].length"),a(e["path.utf-8"]||e.path,"info.files[0].path")}):a("number"==typeof e.info.length,"info.length");var t={};t.info=e.info,t.infoBuffer=u.encode(e.info),t.infoHash=f.sync(t.infoBuffer),t.infoHashBuffer=new n(t.infoHash,"hex"),t.name=(e.info["name.utf-8"]||e.info.name).toString(),void 0!==e.info.private&&(t.private=!!e.info.private),e["creation date"]&&(t.created=new Date(1e3*e["creation date"])),e["created by"]&&(t.createdBy=e["created by"].toString()),n.isBuffer(e.comment)&&(t.comment=e.comment.toString()),t.announce=[],e["announce-list"]&&e["announce-list"].length?e["announce-list"].forEach(function(e){e.forEach(function(e){t.announce.push(e.toString())})}):e.announce&&t.announce.push(e.announce.toString()),n.isBuffer(e["url-list"])&&(e["url-list"]=e["url-list"].length>0?[e["url-list"]]:[]),t.urlList=(e["url-list"]||[]).map(function(e){return e.toString()}),d(t.announce),d(t.urlList);var r=e.info.files||[e.info];t.files=r.map(function(e,n){var o=[].concat(t.name,e["path.utf-8"]||e.path||[]).map(function(e){return e.toString()});return{path:c.join.apply(null,[c.sep].concat(o)).slice(1),name:o[o.length-1],length:e.length,offset:r.slice(0,n).reduce(i,0)}}),t.length=r.reduce(i,0);var o=t.files[t.files.length-1];return t.pieceLength=e.info["piece length"],t.lastPieceLength=(o.offset+o.length)%t.pieceLength||t.pieceLength,t.pieces=s(e.info.pieces),t}function o(e){var t={info:e.info};return t["announce-list"]=(e.announce||[]).map(function(e){return t.announce||(t.announce=e),e=new n(e,"utf8"),[e]}),t["url-list"]=e.urlList||[],e.created&&(t["creation date"]=e.created.getTime()/1e3|0),e.createdBy&&(t["created by"]=e.createdBy),e.comment&&(t.comment=e.comment),u.encode(t)}function i(e,t){return e+t.length}function s(e){for(var t=[],n=0;n<e.length;n+=20)t.push(e.slice(n,n+20).toString("hex"));return t}function a(e,t){if(!e)throw new Error("Torrent is missing required field: "+t)}t.exports=r,t.exports.decode=r,t.exports.encode=o;var u=e("bencode"),c=e("path"),f=e("simple-sha1"),d=e("uniq")}).call(this,e("buffer").Buffer)},{bencode:11,buffer:24,path:63,"simple-sha1":92,uniq:110}],62:[function(e,t,n){(function(n,r){function o(e){if("string"==typeof e&&/^(stream-)?magnet:/.test(e))return f(e);if("string"==typeof e&&(/^[a-f0-9]{40}$/i.test(e)||/^[a-z2-7]{32}$/i.test(e)))return f("magnet:?xt=urn:btih:"+e);if(r.isBuffer(e)&&20===e.length)return f("magnet:?xt=urn:btih:"+e.toString("hex"));if(r.isBuffer(e))return d(e);if(e&&e.infoHash)return e.announce||(e.announce=[]),"string"==typeof e.announce&&(e.announce=[e.announce]),e.urlList||(e.urlList=[]),e;throw new Error("Invalid torrent identifier")}function i(e,t){function r(e){try{i=o(e)}catch(e){return t(e)}i&&i.infoHash?t(null,i):t(new Error("Invalid torrent identifier"))}var i;if("function"!=typeof t)throw new Error("second argument must be a Function");try{i=o(e)}catch(e){}i&&i.infoHash?n.nextTick(function(){t(null,i)}):s(e)?a(e,function(e,n){if(e)return t(new Error("Error converting Blob: "+e.message));r(n)}):"function"==typeof c&&/^https?:/.test(e)?c.concat({url:e,timeout:3e4,headers:{"user-agent":"WebTorrent (http://webtorrent.io)"}},function(e,n,o){if(e)return t(new Error("Error downloading torrent: "+e.message));r(o)}):"function"==typeof u.readFile&&"string"==typeof e?u.readFile(e,function(e,n){if(e)return t(new Error("Invalid torrent identifier"));r(n)}):n.nextTick(function(){t(new Error("Invalid torrent identifier"))})}function s(e){return"undefined"!=typeof Blob&&e instanceof Blob}t.exports=o,t.exports.remote=i;var a=e("blob-to-buffer"),u=e("fs"),c=e("simple-get"),f=e("magnet-uri"),d=e("parse-torrent-file");t.exports.toMagnetURI=f.encode,t.exports.toTorrentFile=d.encode,function(){r.alloc(0)}()}).call(this,e("_process"),e("buffer").Buffer)},{_process:66,"blob-to-buffer":19,buffer:24,fs:22,"magnet-uri":48,"parse-torrent-file":61,"simple-get":90}],63:[function(e,t,n){(function(e){function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var o=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(e){return o.exec(e).slice(1)};n.resolve=function(){for(var n="",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(n=s+"/"+n,o="/"===s.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!o).join("/"),(o?"/":"")+n||"."},n.normalize=function(e){var o=n.isAbsolute(e),i="/"===s(e,-1);return e=t(r(e.split("/"),function(e){return!!e}),!o).join("/"),e||o||(e="."),e&&i&&(e+="/"),(o?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var o=r(e.split("/")),i=r(t.split("/")),s=Math.min(o.length,i.length),a=s,u=0;u<s;u++)if(o[u]!==i[u]){a=u;break}for(var c=[],u=a;u<o.length;u++)c.push("..");return c=c.concat(i.slice(a)),c.join("/")},n.sep="/",n.delimiter=":",n.dirname=function(e){var t=i(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},n.basename=function(e,t){var n=i(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},n.extname=function(e){return i(e)[3]};var s="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,e("_process"))},{_process:66}],64:[function(e,t,n){for(var r=e("closest-to"),o=Math.pow(2,10),i=13,s=[];i++<22;)s.push(Math.pow(2,i));t.exports=function(e){return r(e/o,s)}},{"closest-to":27}],65:[function(e,t,n){(function(e){"use strict";function n(t,n,r,o){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var i,s,a=arguments.length;switch(a){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,o)});default:for(i=new Array(a-1),s=0;s<i.length;)i[s++]=arguments[s];return e.nextTick(function(){t.apply(null,i)})}}!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports=n:t.exports=e.nextTick}).call(this,e("_process"))},{_process:66}],66:[function(e,t,n){function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(d===setTimeout)return setTimeout(e,0);if((d===r||!d)&&setTimeout)return d=setTimeout,setTimeout(e,0);try{return d(e,0)}catch(t){try{return d.call(null,e,0)}catch(t){return d.call(this,e,0)}}}function s(e){if(h===clearTimeout)return clearTimeout(e);if((h===o||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(e);try{return h(e)}catch(t){try{return h.call(null,e)}catch(t){return h.call(this,e)}}}function a(){g&&p&&(g=!1,p.length?m=p.concat(m):y=-1,m.length&&u())}function u(){if(!g){var e=i(a);g=!0;for(var t=m.length;t;){for(p=m,m=[];++y<t;)p&&p[y].run();y=-1,t=m.length}p=null,g=!1,s(e)}}function c(e,t){this.fun=e,this.array=t}function f(){}var d,h,l=t.exports={};!function(){try{d="function"==typeof setTimeout?setTimeout:r}catch(e){d=r}try{h="function"==typeof clearTimeout?clearTimeout:o}catch(e){h=o}}();var p,m=[],g=!1,y=-1;l.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];m.push(new c(e,t)),1!==m.length||g||i(u)},c.prototype.run=function(){this.fun.apply(null,this.array)},l.title="browser",l.browser=!0,l.env={},l.argv=[],l.version="",l.versions={},l.on=f,l.addListener=f,l.once=f,l.off=f,l.removeListener=f,l.removeAllListeners=f,l.emit=f,l.binding=function(e){throw new Error("process.binding is not supported")},l.cwd=function(){return"/"},l.chdir=function(e){throw new Error("process.chdir is not supported")},l.umask=function(){return 0}},{}],67:[function(e,t,n){var r=e("once"),o=e("end-of-stream"),i=e("fs"),s=function(){},a=function(e){return"function"==typeof e},u=function(e){return!!i&&((e instanceof(i.ReadStream||s)||e instanceof(i.WriteStream||s))&&a(e.close))},c=function(e){return e.setHeader&&a(e.abort)},f=function(e,t,n,i){i=r(i);var s=!1;e.on("close",function(){s=!0}),o(e,{readable:t,writable:n},function(e){if(e)return i(e);s=!0,i()});var f=!1;return function(t){if(!s&&!f)return f=!0,u(e)?e.close():c(e)?e.abort():a(e.destroy)?e.destroy():void i(t||new Error("stream was destroyed"))}},d=function(e){e()},h=function(e,t){return e.pipe(t)},l=function(){var e=Array.prototype.slice.call(arguments),t=a(e[e.length-1]||s)&&e.pop()||s;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var n,r=e.map(function(o,i){var s=i<e.length-1;return f(o,s,i>0,function(e){n||(n=e),e&&r.forEach(d),s||(r.forEach(d),t(n))})});return e.reduce(h)};t.exports=l},{"end-of-stream":33,fs:21,once:60}],68:[function(t,n,r){(function(t){!function(o){function i(e){throw new RangeError(O[e])}function s(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function a(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),e=e.replace(R,"."),r+s(e.split("."),t).join(".")}function u(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t>=55296&&t<=56319&&o<i?(n=e.charCodeAt(o++),56320==(64512&n)?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--)):r.push(t);return r}function c(e){return s(e,function(e){var t="";return e>65535&&(e-=65536,t+=j(e>>>10&1023|55296),e=56320|1023&e),t+=j(e)}).join("")}function f(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:k}function d(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function h(e,t,n){var r=0;for(e=n?P(e/B):e>>1,e+=P(e/t);e>M*S>>1;r+=k)e=P(e/M);return P(r+(M+1)*e/(e+I))}function l(e){var t,n,r,o,s,a,u,d,l,p,m=[],g=e.length,y=0,_=C,v=A;for(n=e.lastIndexOf(T),n<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&i("not-basic"),m.push(e.charCodeAt(r));for(o=n>0?n+1:0;o<g;){for(s=y,a=1,u=k;o>=g&&i("invalid-input"),d=f(e.charCodeAt(o++)),(d>=k||d>P((E-y)/a))&&i("overflow"),y+=d*a,l=u<=v?x:u>=v+S?S:u-v,!(d<l);u+=k)p=k-l,a>P(E/p)&&i("overflow"),a*=p;t=m.length+1,v=h(y-s,t,0==s),P(y/t)>E-_&&i("overflow"),_+=P(y/t),y%=t,m.splice(y++,0,_)}return c(m)}function p(e){var t,n,r,o,s,a,c,f,l,p,m,g,y,_,v,b=[];for(e=u(e),g=e.length,t=C,n=0,s=A,a=0;a<g;++a)(m=e[a])<128&&b.push(j(m));for(r=o=b.length,o&&b.push(T);r<g;){for(c=E,a=0;a<g;++a)(m=e[a])>=t&&m<c&&(c=m);for(y=r+1,c-t>P((E-n)/y)&&i("overflow"),n+=(c-t)*y,t=c,a=0;a<g;++a)if(m=e[a],m<t&&++n>E&&i("overflow"),m==t){for(f=n,l=k;p=l<=s?x:l>=s+S?S:l-s,!(f<p);l+=k)v=f-p,_=k-p,b.push(j(d(p+v%_,0))),f=P(v/_);b.push(j(d(f,0))),s=h(n,y,r==o),n=0,++r}++n,++t}return b.join("")}function m(e){return a(e,function(e){return L.test(e)?l(e.slice(4).toLowerCase()):e})}function g(e){return a(e,function(e){return U.test(e)?"xn--"+p(e):e})}var y="object"==typeof r&&r&&!r.nodeType&&r,_="object"==typeof n&&n&&!n.nodeType&&n,v="object"==typeof t&&t;v.global!==v&&v.window!==v&&v.self!==v||(o=v);var b,w,E=2147483647,k=36,x=1,S=26,I=38,B=700,A=72,C=128,T="-",L=/^xn--/,U=/[^\x20-\x7E]/,R=/[\x2E\u3002\uFF0E\uFF61]/g,O={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=k-x,P=Math.floor,j=String.fromCharCode;if(b={version:"1.4.1",ucs2:{decode:u,encode:c},decode:l,encode:p,toASCII:g,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return b});else if(y&&_)if(n.exports==y)_.exports=b;else for(w in b)b.hasOwnProperty(w)&&(y[w]=b[w]);else o.punycode=b}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],69:[function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,n,i){t=t||"&",n=n||"=";var s={};if("string"!=typeof e||0===e.length)return s;e=e.split(t);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var u=e.length;a>0&&u>a&&(u=a);for(var c=0;c<u;++c){var f,d,h,l,p=e[c].replace(/\+/g,"%20"),m=p.indexOf(n);m>=0?(f=p.substr(0,m),d=p.substr(m+1)):(f=p,d=""),h=decodeURIComponent(f),l=decodeURIComponent(d),r(s,h)?o(s[h])?s[h].push(l):s[h]=[s[h],l]:s[h]=l}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],70:[function(e,t,n){"use strict";function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var o=function(e){switch(typeof e){ -case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?r(s(e),function(s){var a=encodeURIComponent(o(s))+n;return i(e[s])?r(e[s],function(e){return a+encodeURIComponent(o(e))}).join(t):a+encodeURIComponent(o(e[s]))}).join(t):a?encodeURIComponent(o(a))+n+encodeURIComponent(o(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},{}],71:[function(e,t,n){"use strict";n.decode=n.parse=e("./decode"),n.encode=n.stringify=e("./encode")},{"./decode":69,"./encode":70}],72:[function(e,t,n){var r=function(e){var t=0;return function(){if(t===e.length)return null;var n=e.length-t,r=Math.random()*n|0,o=e[t+r],i=e[t];return e[t]=o,e[t+r]=i,t++,o}};t.exports=r},{}],73:[function(e,t,n){(function(e,n,r){"use strict";function o(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}function i(t,o){if(t>65536)throw new Error("requested too many random bytes");var i=new n.Uint8Array(t);t>0&&s.getRandomValues(i);var a=new r(i.buffer);return"function"==typeof o?e.nextTick(function(){o(null,a)}):a}var s=n.crypto||n.msCrypto;s&&s.getRandomValues?t.exports=i:t.exports=o}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{_process:66,buffer:24}],74:[function(e,t,n){function r(e,t){var n=this;if(!(n instanceof r))return new r(e);i.Writable.call(n,t),n.destroyed=!1,n._queue=[],n._position=e||0,n._cb=null,n._buffer=null,n._out=null}var o=e("inherits"),i=e("readable-stream");t.exports=r,o(r,i.Writable),r.prototype._write=function(e,t,n){for(var r=this,o=!0;;){if(r.destroyed)return;if(0===r._queue.length)return r._buffer=e,void(r._cb=n);r._buffer=null;var i=r._queue[0],s=Math.max(i.start-r._position,0),a=i.end-r._position;if(s>=e.length)return r._position+=e.length,n(null);var u;if(a>e.length){r._position+=e.length,u=0===s?e:e.slice(s),o=i.stream.write(u)&&o;break}r._position+=a,u=0===s&&a===e.length?e:e.slice(s,a),o=i.stream.write(u)&&o,i.last&&i.stream.end(),e=e.slice(a),r._queue.shift()}o?n(null):i.stream.once("drain",n.bind(null,null))},r.prototype.slice=function(e){var t=this;if(t.destroyed)return null;e instanceof Array||(e=[e]);var n=new i.PassThrough;return e.forEach(function(r,o){t._queue.push({start:r.start,end:r.end,stream:n,last:o===e.length-1})}),t._buffer&&t._write(t._buffer,null,t._cb),n},r.prototype.destroy=function(e){var t=this;t.destroyed||(t.destroyed=!0,e&&t.emit("error",e))}},{inherits:41,"readable-stream":82}],75:[function(e,t,n){"use strict";function r(e){if(!(this instanceof r))return new r(e);c.call(this,e),f.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",o)}function o(){this.allowHalfOpen||this._writableState.ended||a(i,this)}function i(e){e.end()}var s=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};t.exports=r;var a=e("process-nextick-args"),u=e("core-util-is");u.inherits=e("inherits");var c=e("./_stream_readable"),f=e("./_stream_writable");u.inherits(r,c);for(var d=s(f.prototype),h=0;h<d.length;h++){var l=d[h];r.prototype[l]||(r.prototype[l]=f.prototype[l])}},{"./_stream_readable":77,"./_stream_writable":79,"core-util-is":28,inherits:41,"process-nextick-args":65}],76:[function(e,t,n){"use strict";function r(e){if(!(this instanceof r))return new r(e);o.call(this,e)}t.exports=r;var o=e("./_stream_transform"),i=e("core-util-is");i.inherits=e("inherits"),i.inherits(r,o),r.prototype._transform=function(e,t,n){n(null,e)}},{"./_stream_transform":78,"core-util-is":28,inherits:41}],77:[function(e,t,n){(function(n){"use strict";function r(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?T(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}function o(t,n){A=A||e("./_stream_duplex"),t=t||{},this.objectMode=!!t.objectMode,n instanceof A&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:o,this.highWaterMark=~~this.highWaterMark,this.buffer=new N,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(H||(H=e("string_decoder/").StringDecoder),this.decoder=new H(t.encoding),this.encoding=t.encoding)}function i(t){if(A=A||e("./_stream_duplex"),!(this instanceof i))return new i(t);this._readableState=new o(t,this),this.readable=!0,t&&"function"==typeof t.read&&(this._read=t.read),U.call(this)}function s(e,t,n,r,o){var i=f(t,n);if(i)e.emit("error",i);else if(null===n)t.reading=!1,d(e,t);else if(t.objectMode||n&&n.length>0)if(t.ended&&!o){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&o){var u=new Error("stream.unshift() after end event");e.emit("error",u)}else{var c;!t.decoder||o||r||(n=t.decoder.write(n),c=!t.objectMode&&0===n.length),o||(t.reading=!1),c||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,o?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&h(e))),p(e,t)}else o||(t.reading=!1);return a(t)}function a(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}function u(e){return e>=D?e=D:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function c(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=u(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function f(e,t){var n=null;return R.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function d(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,h(e)}}function h(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(j("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?C(l,e):l(e))}function l(e){j("emit readable"),e.emit("readable"),b(e)}function p(e,t){t.readingMore||(t.readingMore=!0,C(m,e,t))}function m(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(j("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function g(e){return function(){var t=e._readableState;j("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&L(e,"data")&&(t.flowing=!0,b(e))}}function y(e){j("readable nexttick read 0"),e.read(0)}function _(e,t){t.resumeScheduled||(t.resumeScheduled=!0,C(v,e,t))}function v(e,t){t.reading||(j("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),b(e),t.flowing&&!t.reading&&e.read(0)}function b(e){var t=e._readableState;for(j("flow",t.flowing);t.flowing&&null!==e.read(););}function w(e,t){if(0===t.length)return null;var n;return t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=E(e,t.buffer,t.decoder),n}function E(e,t,n){var r;return e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):r=e===t.head.data.length?t.shift():n?k(e,t):x(e,t),r}function k(e,t){var n=t.head,r=1,o=n.data;for(e-=o.length;n=n.next;){var i=n.data,s=e>i.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(s));break}++r}return t.length-=r,o}function x(e,t){var n=O.allocUnsafe(e),r=t.head,o=1;for(r.data.copy(n),e-=r.data.length;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,s),0===(e-=s)){s===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,n}function S(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,C(I,t,e))}function I(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function B(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}t.exports=i;var A,C=e("process-nextick-args"),T=e("isarray");i.ReadableState=o;var L=(e("events").EventEmitter,function(e,t){return e.listeners(t).length}),U=e("./internal/streams/stream"),R=e("buffer").Buffer,O=e("buffer-shims"),M=e("core-util-is");M.inherits=e("inherits");var P=e("util"),j=void 0;j=P&&P.debuglog?P.debuglog("stream"):function(){};var H,N=e("./internal/streams/BufferList");M.inherits(i,U);var q=["error","close","destroy","pause","resume"];i.prototype.push=function(e,t){var n=this._readableState;return n.objectMode||"string"!=typeof e||(t=t||n.defaultEncoding)!==n.encoding&&(e=O.from(e,t),t=""),s(this,n,e,t,!1)},i.prototype.unshift=function(e){return s(this,this._readableState,e,"",!0)},i.prototype.isPaused=function(){return!1===this._readableState.flowing},i.prototype.setEncoding=function(t){return H||(H=e("string_decoder/").StringDecoder),this._readableState.decoder=new H(t),this._readableState.encoding=t,this};var D=8388608;i.prototype.read=function(e){j("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return j("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?S(this):h(this),null;if(0===(e=c(e,t))&&t.ended)return 0===t.length&&S(this),null;var r=t.needReadable;j("need readable",r),(0===t.length||t.length-e<t.highWaterMark)&&(r=!0,j("length less than watermark",r)),t.ended||t.reading?(r=!1,j("reading or ended",r)):r&&(j("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=c(n,t)));var o;return o=e>0?w(e,t):null,null===o?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&S(this)),null!==o&&this.emit("data",o),o},i.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},i.prototype.pipe=function(e,t){function o(e){j("onunpipe"),e===h&&s()}function i(){j("onend"),e.end()}function s(){j("cleanup"),e.removeListener("close",c),e.removeListener("finish",f),e.removeListener("drain",y),e.removeListener("error",u),e.removeListener("unpipe",o),h.removeListener("end",i),h.removeListener("end",s),h.removeListener("data",a),_=!0,!l.awaitDrain||e._writableState&&!e._writableState.needDrain||y()}function a(t){j("ondata"),v=!1,!1!==e.write(t)||v||((1===l.pipesCount&&l.pipes===e||l.pipesCount>1&&-1!==B(l.pipes,e))&&!_&&(j("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,v=!0),h.pause())}function u(t){j("onerror",t),d(),e.removeListener("error",u),0===L(e,"error")&&e.emit("error",t)}function c(){e.removeListener("finish",f),d()}function f(){j("onfinish"),e.removeListener("close",c),d()}function d(){j("unpipe"),h.unpipe(e)}var h=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=e;break;case 1:l.pipes=[l.pipes,e];break;default:l.pipes.push(e)}l.pipesCount+=1,j("pipe count=%d opts=%j",l.pipesCount,t);var p=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr,m=p?i:s;l.endEmitted?C(m):h.once("end",m),e.on("unpipe",o);var y=g(h);e.on("drain",y);var _=!1,v=!1;return h.on("data",a),r(e,"error",u),e.once("close",c),e.once("finish",f),e.emit("pipe",h),l.flowing||(j("pipe resume"),h.resume()),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var n=t.pipes,r=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<r;o++)n[o].emit("unpipe",this);return this}var i=B(t.pipes,e);return-1===i?this:(t.pipes.splice(i,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)},i.prototype.on=function(e,t){var n=U.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&h(this):C(y,this))}return n},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var e=this._readableState;return e.flowing||(j("resume"),e.flowing=!0,_(this,e)),this},i.prototype.pause=function(){return j("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(j("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(e){var t=this._readableState,n=!1,r=this;e.on("end",function(){if(j("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&r.push(e)}r.push(null)}),e.on("data",function(o){if(j("wrapped data"),t.decoder&&(o=t.decoder.write(o)),(!t.objectMode||null!==o&&void 0!==o)&&(t.objectMode||o&&o.length)){r.push(o)||(n=!0,e.pause())}});for(var o in e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var i=0;i<q.length;i++)e.on(q[i],r.emit.bind(r,q[i]));return r._read=function(t){j("wrapped _read",t),n&&(n=!1,e.resume())},r},i._fromList=w}).call(this,e("_process"))},{"./_stream_duplex":75,"./internal/streams/BufferList":80,"./internal/streams/stream":81,_process:66,buffer:24,"buffer-shims":23,"core-util-is":28,events:34,inherits:41,isarray:46,"process-nextick-args":65,"string_decoder/":102,util:21}],78:[function(e,t,n){"use strict";function r(e){this.afterTransform=function(t,n){return o(e,t,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function o(e,t,n){var r=e._transformState;r.transforming=!1;var o=r.writecb;if(!o)return e.emit("error",new Error("no writecb in Transform class"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&e.push(n),o(t);var i=e._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&e._read(i.highWaterMark)}function i(e){if(!(this instanceof i))return new i(e);a.call(this,e),this._transformState=new r(this);var t=this;this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(e,n){s(t,e,n)}):s(t)})}function s(e,t,n){if(t)return e.emit("error",t);null!==n&&void 0!==n&&e.push(n);var r=e._writableState,o=e._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(o.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}t.exports=i;var a=e("./_stream_duplex"),u=e("core-util-is");u.inherits=e("inherits"),u.inherits(i,a),i.prototype.push=function(e,t){return this._transformState.needTransform=!1,a.prototype.push.call(this,e,t)},i.prototype._transform=function(e,t,n){throw new Error("_transform() is not implemented")},i.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var o=this._readableState;(r.needTransform||o.needReadable||o.length<o.highWaterMark)&&this._read(o.highWaterMark)}},i.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0}},{"./_stream_duplex":75,"core-util-is":28,inherits:41}],79:[function(e,t,n){(function(n){"use strict";function r(){}function o(e,t,n){this.chunk=e,this.encoding=t,this.callback=n,this.next=null}function i(t,n){k=k||e("./_stream_duplex"),t=t||{},this.objectMode=!!t.objectMode,n instanceof k&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:o,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var i=!1===t.decodeStrings;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){p(n,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new E(this)}function s(t){if(k=k||e("./_stream_duplex"),!(L.call(s,this)||this instanceof k))return new s(t);this._writableState=new i(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev)),A.call(this)}function a(e,t){var n=new Error("write after end");e.emit("error",n),x(t,n)}function u(e,t,n,r){var o=!0,i=!1;return null===n?i=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(i=new TypeError("Invalid non-string/buffer chunk")),i&&(e.emit("error",i),x(r,i),o=!1),o}function c(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=T.from(t,n)),t}function f(e,t,n,r,i,s){n||(r=c(t,r,i),C.isBuffer(r)&&(i="buffer"));var a=t.objectMode?1:r.length;t.length+=a;var u=t.length<t.highWaterMark;if(u||(t.needDrain=!0),t.writing||t.corked){var f=t.lastBufferedRequest;t.lastBufferedRequest=new o(r,i,s),f?f.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else d(e,t,!1,a,r,i,s);return u}function d(e,t,n,r,o,i,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,n?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function h(e,t,n,r,o){--t.pendingcb,n?x(o,r):o(r),e._writableState.errorEmitted=!0,e.emit("error",r)}function l(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function p(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if(l(n),t)h(e,n,r,t,o);else{var i=_(n);i||n.corked||n.bufferProcessing||!n.bufferedRequest||y(e,n),r?S(m,e,n,i,o):m(e,n,i,o)}}function m(e,t,n,r){n||g(e,t),t.pendingcb--,r(),b(e,t)}function g(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function y(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=n;for(var s=0;n;)o[s]=n,n=n.next,s+=1;d(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new E(t)}else{for(;n;){var a=n.chunk,u=n.encoding,c=n.callback;if(d(e,t,!1,t.objectMode?1:a.length,a,u,c),n=n.next,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequestCount=0,t.bufferedRequest=n,t.bufferProcessing=!1}function _(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function v(e,t){t.prefinished||(t.prefinished=!0,e.emit("prefinish"))}function b(e,t){var n=_(t);return n&&(0===t.pendingcb?(v(e,t),t.finished=!0,e.emit("finish")):v(e,t)),n}function w(e,t,n){t.ending=!0,b(e,t),n&&(t.finished?x(n):e.once("finish",n)),t.ended=!0,e.writable=!1}function E(e){var t=this;this.next=null,this.entry=null,this.finish=function(n){var r=t.entry;for(t.entry=null;r;){var o=r.callback;e.pendingcb--,o(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}}t.exports=s;var k,x=e("process-nextick-args"),S=!n.browser&&["v0.10","v0.9."].indexOf(n.version.slice(0,5))>-1?setImmediate:x;s.WritableState=i;var I=e("core-util-is");I.inherits=e("inherits");var B={deprecate:e("util-deprecate")},A=e("./internal/streams/stream"),C=e("buffer").Buffer,T=e("buffer-shims");I.inherits(s,A),i.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(i.prototype,"buffer",{get:B.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(e){}}();var L;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(L=Function.prototype[Symbol.hasInstance],Object.defineProperty(s,Symbol.hasInstance,{value:function(e){return!!L.call(this,e)||e&&e._writableState instanceof i}})):L=function(e){return e instanceof this},s.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},s.prototype.write=function(e,t,n){var o=this._writableState,i=!1,s=C.isBuffer(e);return"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof n&&(n=r),o.ended?a(this,n):(s||u(this,o,e,n))&&(o.pendingcb++,i=f(this,o,s,e,t,n)),i},s.prototype.cork=function(){this._writableState.corked++},s.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||y(this,e))},s.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},s.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},s.prototype._writev=null,s.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&void 0!==e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||w(this,r,n)}}).call(this,e("_process"))},{"./_stream_duplex":75,"./internal/streams/stream":81,_process:66,buffer:24,"buffer-shims":23,"core-util-is":28,inherits:41,"process-nextick-args":65,"util-deprecate":115}],80:[function(e,t,n){"use strict";function r(){this.head=null,this.tail=null,this.length=0}var o=(e("buffer").Buffer,e("buffer-shims"));t.exports=r,r.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},r.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},r.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},r.prototype.clear=function(){this.head=this.tail=null,this.length=0},r.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},r.prototype.concat=function(e){if(0===this.length)return o.alloc(0);if(1===this.length)return this.head.data;for(var t=o.allocUnsafe(e>>>0),n=this.head,r=0;n;)n.data.copy(t,r),r+=n.data.length,n=n.next;return t}},{buffer:24,"buffer-shims":23}],81:[function(e,t,n){t.exports=e("events").EventEmitter},{events:34}],82:[function(e,t,n){n=t.exports=e("./lib/_stream_readable.js"),n.Stream=n,n.Readable=n,n.Writable=e("./lib/_stream_writable.js"),n.Duplex=e("./lib/_stream_duplex.js"),n.Transform=e("./lib/_stream_transform.js"),n.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":75,"./lib/_stream_passthrough.js":76,"./lib/_stream_readable.js":77,"./lib/_stream_transform.js":78,"./lib/_stream_writable.js":79}],83:[function(e,t,n){function r(e,t,n,r){"function"==typeof n&&(r=n,n={}),n||(n={}),r||(r=function(){}),a(e),c(n),"string"==typeof t&&(t=document.querySelector(t)),i(e,function(n){if(t.nodeName!==n.toUpperCase()){var r=l.extname(e.name).toLowerCase();throw new Error('Cannot render "'+r+'" inside a "'+t.nodeName.toLowerCase()+'" element, expected "'+n+'"')}return t},n,r)}function o(e,t,n,r){function o(e){return"video"===e||"audio"===e?s(e):u(e)}function s(e){var r=u(e);return n.controls&&(r.controls=!0),n.autoplay&&(r.autoplay=!0),t.appendChild(r),r}function u(e){var n=document.createElement(e);return t.appendChild(n),n}function f(e,t){e&&t&&t.remove(),r(e,t)}if("function"==typeof n&&(r=n,n={}),n||(n={}),r||(r=function(){}),a(e),c(n),"string"==typeof t&&(t=document.querySelector(t)),t&&("VIDEO"===t.nodeName||"AUDIO"===t.nodeName))throw new Error("Invalid video/audio node argument. Argument must be root element that video/audio tag will be appended to.");i(e,o,n,f)}function i(e,t,n,r){function o(){p.removeEventListener("loadstart",o),n.autoplay&&p.play()}function i(){p.removeEventListener("canplay",i),r(null,p)}function a(){p=t("iframe"),s(e,function(e,t){if(e)return c(e);p.src=t,".pdf"!==_&&(p.sandbox="allow-forms allow-scripts"),r(null,p)})}function c(t){t.message='Error rendering file "'+e.name+'": '+t.message,f(t.message),r(t)}var p,_=l.extname(e.name).toLowerCase(),k=0;v.indexOf(_)>=0?function(){function r(){f("Use MediaSource API for "+e.name),v(),p.addEventListener("error",l),p.addEventListener("loadstart",o),p.addEventListener("canplay",i);var t=new h(p),n=t.createWriteStream(u(e.name));e.createReadStream().pipe(n),k&&(p.currentTime=k)}function a(){f("Use Blob URL for "+e.name),v(),p.addEventListener("error",c),p.addEventListener("loadstart",o),p.addEventListener("canplay",i),s(e,function(e,t){if(e)return c(e);p.src=t,k&&(p.currentTime=k)})}function d(e){f("videostream error: fallback to MediaSource API: %o",e.message||e),p.removeEventListener("error",d),p.removeEventListener("canplay",i),r()}function l(t){if(f("MediaSource API error: fallback to Blob URL: %o",t.message||t),"number"==typeof e.length&&e.length>n.maxBlobLength)return f("File length too large for Blob URL approach: %d (max: %d)",e.length,n.maxBlobLength),c(new Error("File length too large for Blob URL approach: "+e.length+" (max: "+n.maxBlobLength+")"));p.removeEventListener("error",l),p.removeEventListener("canplay",i),a()}function v(){p||(p=t(b),p.addEventListener("progress",function(){k=p.currentTime}))}var b=y.indexOf(_)>=0?"video":"audio";x?g.indexOf(_)>=0?function(){f("Use `videostream` package for "+e.name),v(),p.addEventListener("error",d),p.addEventListener("loadstart",o),p.addEventListener("canplay",i),m(e,p)}():r():a()}():b.indexOf(_)>=0?function(){p=t("audio"),s(e,function(e,t){if(e)return c(e);p.addEventListener("error",c),p.addEventListener("loadstart",o),p.addEventListener("canplay",i),p.src=t})}():w.indexOf(_)>=0?function(){p=t("img"),s(e,function(t,n){if(t)return c(t);p.src=n,p.alt=e.name,r(null,p)})}():E.indexOf(_)>=0?a():function(){function t(){d(n)?(f('File extension "%s" appears ascii, so will render.',_),a()):(f('File extension "%s" appears non-ascii, will not render.',_),r(new Error('Unsupported file type "'+_+'": Cannot append to DOM')))}f('Unknown file extension "%s" - will attempt to render into iframe',_);var n="";e.createReadStream({start:0,end:1e3}).setEncoding("utf8").on("data",function(e){n+=e}).on("end",t).on("error",r)}()}function s(e,t){var r=l.extname(e.name).toLowerCase();p(e.createReadStream(),n.mime[r],t)}function a(e){if(null==e)throw new Error("file cannot be null or undefined");if("string"!=typeof e.name)throw new Error("missing or invalid file.name property");if("function"!=typeof e.createReadStream)throw new Error("missing or invalid file.createReadStream property")}function u(e){return{".m4a":'audio/mp4; codecs="mp4a.40.5"',".m4v":'video/mp4; codecs="avc1.640029, mp4a.40.5"',".mkv":'video/webm; codecs="avc1.640029, mp4a.40.5"',".mp3":"audio/mpeg",".mp4":'video/mp4; codecs="avc1.640029, mp4a.40.5"',".webm":'video/webm; codecs="vorbis, vp8"'}[l.extname(e).toLowerCase()]}function c(e){null==e.autoplay&&(e.autoplay=!0),null==e.controls&&(e.controls=!0),null==e.maxBlobLength&&(e.maxBlobLength=k)}n.render=r,n.append=o,n.mime=e("./lib/mime.json");var f=e("debug")("render-media"),d=e("is-ascii"),h=e("mediasource"),l=e("path"),p=e("stream-to-blob-url"),m=e("videostream"),g=[".m4a",".m4v",".mp4"],y=[".m4v",".mkv",".mp4",".webm"],_=[".m4a",".mp3"],v=[].concat(y,_),b=[".aac",".oga",".ogg",".wav"],w=[".bmp",".gif",".jpeg",".jpg",".png",".svg"],E=[".css",".html",".js",".md",".pdf",".txt"],k=2e8,x="undefined"!=typeof window&&window.MediaSource},{"./lib/mime.json":84,debug:30,"is-ascii":42,mediasource:49,path:63,"stream-to-blob-url":99,videostream:117}],84:[function(e,t,n){t.exports={".3gp":"video/3gpp",".aac":"audio/aac",".aif":"audio/x-aiff",".aiff":"audio/x-aiff",".atom":"application/atom+xml",".avi":"video/x-msvideo",".bmp":"image/bmp",".bz2":"application/x-bzip2",".conf":"text/plain",".css":"text/css",".csv":"text/plain",".diff":"text/x-diff",".doc":"application/msword",".flv":"video/x-flv",".gif":"image/gif",".gz":"application/x-gzip",".htm":"text/html",".html":"text/html",".ico":"image/vnd.microsoft.icon",".ics":"text/calendar",".iso":"application/octet-stream",".jar":"application/java-archive",".jpeg":"image/jpeg",".jpg":"image/jpeg",".js":"application/javascript",".json":"application/json",".less":"text/css",".log":"text/plain",".m3u":"audio/x-mpegurl",".m4a":"audio/mp4",".m4v":"video/mp4",".manifest":"text/cache-manifest",".markdown":"text/x-markdown",".mathml":"application/mathml+xml",".md":"text/x-markdown",".mid":"audio/midi",".midi":"audio/midi",".mov":"video/quicktime",".mp3":"audio/mpeg",".mp4":"video/mp4",".mp4v":"video/mp4",".mpeg":"video/mpeg",".mpg":"video/mpeg",".odp":"application/vnd.oasis.opendocument.presentation",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odt":"application/vnd.oasis.opendocument.text",".oga":"audio/ogg",".ogg":"application/ogg",".pdf":"application/pdf",".png":"image/png",".pps":"application/vnd.ms-powerpoint",".ppt":"application/vnd.ms-powerpoint",".ps":"application/postscript",".psd":"image/vnd.adobe.photoshop",".qt":"video/quicktime",".rar":"application/x-rar-compressed",".rdf":"application/rdf+xml",".rss":"application/rss+xml",".rtf":"application/rtf",".svg":"image/svg+xml",".svgz":"image/svg+xml",".swf":"application/x-shockwave-flash",".tar":"application/x-tar",".tbz":"application/x-bzip-compressed-tar",".text":"text/plain",".tif":"image/tiff",".tiff":"image/tiff",".torrent":"application/x-bittorrent",".ttf":"application/x-font-ttf",".txt":"text/plain",".wav":"audio/wav",".webm":"video/webm",".wma":"audio/x-ms-wma",".wmv":"video/x-ms-wmv",".xls":"application/vnd.ms-excel",".xml":"application/xml",".yaml":"text/yaml",".yml":"text/yaml",".zip":"application/zip"}},{}],85:[function(e,t,n){(function(e){t.exports=function(t,n,r){function o(t){function n(){r&&r(t,s),r=null}d?e.nextTick(n):n()}function i(e,n,r){if(s[e]=r,n&&(f=!0),0==--u||n)o(n);else if(!f&&h<a){var d;c?(d=c[h],h+=1,t[d](function(e,t){i(d,e,t)})):(d=h,h+=1,t[d](function(e,t){i(d,e,t)}))}}if("number"!=typeof n)throw new Error("second argument must be a Number");var s,a,u,c,f,d=!0;Array.isArray(t)?(s=[],u=a=t.length):(c=Object.keys(t),s={},u=a=c.length);var h=n;u?c?c.some(function(e,r){if(t[e](function(t,n){i(e,t,n)}),r===n-1)return!0}):t.some(function(e,t){if(e(function(e,n){i(t,e,n)}),t===n-1)return!0}):o(null),d=!1}}).call(this,e("_process"))},{_process:66}],86:[function(e,t,n){(function(e){t.exports=function(t,n){function r(t){function r(){n&&n(t,i),n=null}u?e.nextTick(r):r()}function o(e,t,n){i[e]=n,(0==--s||t)&&r(t)}var i,s,a,u=!0;Array.isArray(t)?(i=[],s=t.length):(a=Object.keys(t),i={},s=a.length),s?a?a.forEach(function(e){t[e](function(t,n){o(e,t,n)})}):t.forEach(function(e,t){e(function(e,n){o(t,e,n)})}):r(null),u=!1}}).call(this,e("_process"))},{_process:66}],87:[function(e,t,n){(function(e){!function(){function n(e){"use strict";for(var t={fill:0},i=function(e){for(e+=9;e%64>0;e+=1);return e},s=function(e,t){var n=new Uint8Array(e.buffer),r=t%4,o=t-r;switch(r){case 0:n[o+3]=0;case 1: -n[o+2]=0;case 2:n[o+1]=0;case 3:n[o+0]=0}for(var i=1+(t>>2);i<e.length;i++)e[i]=0},a=function(e,t,n){e[t>>2]|=128<<24-(t%4<<3),e[14+(2+(t>>2)&-16)]=n/(1<<29)|0,e[15+(2+(t>>2)&-16)]=n<<3},u=function(e,t,n,r,o){var i,s=this,a=o%4,u=(r+a)%4,c=r-u;switch(a){case 0:e[o]=s.charCodeAt(n+3);case 1:e[o+1-(a<<1)|0]=s.charCodeAt(n+2);case 2:e[o+2-(a<<1)|0]=s.charCodeAt(n+1);case 3:e[o+3-(a<<1)|0]=s.charCodeAt(n)}if(!(r<u+a)){for(i=4-a;i<c;i=i+4|0)t[o+i>>2]=s.charCodeAt(n+i)<<24|s.charCodeAt(n+i+1)<<16|s.charCodeAt(n+i+2)<<8|s.charCodeAt(n+i+3);switch(u){case 3:e[o+c+1|0]=s.charCodeAt(n+c+2);case 2:e[o+c+2|0]=s.charCodeAt(n+c+1);case 1:e[o+c+3|0]=s.charCodeAt(n+c)}}},c=function(e,t,n,r,o){var i,s=this,a=o%4,u=(r+a)%4,c=r-u;switch(a){case 0:e[o]=s[n+3];case 1:e[o+1-(a<<1)|0]=s[n+2];case 2:e[o+2-(a<<1)|0]=s[n+1];case 3:e[o+3-(a<<1)|0]=s[n]}if(!(r<u+a)){for(i=4-a;i<c;i=i+4|0)t[o+i>>2|0]=s[n+i]<<24|s[n+i+1]<<16|s[n+i+2]<<8|s[n+i+3];switch(u){case 3:e[o+c+1|0]=s[n+c+2];case 2:e[o+c+2|0]=s[n+c+1];case 1:e[o+c+3|0]=s[n+c]}}},f=function(e,t,n,r,i){var s,a=this,u=i%4,c=(r+u)%4,f=r-c,d=new Uint8Array(o.readAsArrayBuffer(a.slice(n,n+r)));switch(u){case 0:e[i]=d[3];case 1:e[i+1-(u<<1)|0]=d[2];case 2:e[i+2-(u<<1)|0]=d[1];case 3:e[i+3-(u<<1)|0]=d[0]}if(!(r<c+u)){for(s=4-u;s<f;s=s+4|0)t[i+s>>2|0]=d[s]<<24|d[s+1]<<16|d[s+2]<<8|d[s+3];switch(c){case 3:e[i+f+1|0]=d[f+2];case 2:e[i+f+2|0]=d[f+1];case 1:e[i+f+3|0]=d[f]}}},d=function(e){switch(r.getDataType(e)){case"string":return u.bind(e);case"array":case"buffer":return c.bind(e);case"arraybuffer":return c.bind(new Uint8Array(e));case"view":return c.bind(new Uint8Array(e.buffer,e.byteOffset,e.byteLength));case"blob":return f.bind(e)}},h=new Array(256),l=0;l<256;l++)h[l]=(l<16?"0":"")+l.toString(16);var p=function(e){for(var t=new Uint8Array(e),n=new Array(e.byteLength),r=0;r<n.length;r++)n[r]=h[t[r]];return n.join("")},m=function(e){var t;if(e<=65536)return 65536;if(e<16777216)for(t=1;t<e;t<<=1);else for(t=16777216;t<e;t+=16777216);return t};!function(e){if(e%64>0)throw new Error("Chunk size must be a multiple of 128 bit");t.offset=0,t.maxChunkLen=e,t.padMaxChunkLen=i(e),t.heap=new ArrayBuffer(m(t.padMaxChunkLen+320+20)),t.h32=new Int32Array(t.heap),t.h8=new Int8Array(t.heap),t.core=new n._core({Int32Array:Int32Array,DataView:DataView},{},t.heap),t.buffer=null}(e||65536);var g=function(e,n){t.offset=0;var r=new Int32Array(e,n+320,5);r[0]=1732584193,r[1]=-271733879,r[2]=-1732584194,r[3]=271733878,r[4]=-1009589776},y=function(e,n){var r=i(e),o=new Int32Array(t.heap,0,r>>2);return s(o,e),a(o,e,n),r},_=function(e,n,r,o){d(e)(t.h8,t.h32,n,r,o||0)},v=function(e,n,r,o,i){var s=r;_(e,n,r),i&&(s=y(r,o)),t.core.hash(s,t.padMaxChunkLen)},b=function(e,t){var n=new Int32Array(e,t+320,5),r=new Int32Array(5),o=new DataView(r.buffer);return o.setInt32(0,n[0],!1),o.setInt32(4,n[1],!1),o.setInt32(8,n[2],!1),o.setInt32(12,n[3],!1),o.setInt32(16,n[4],!1),r},w=this.rawDigest=function(e){var n=e.byteLength||e.length||e.size||0;g(t.heap,t.padMaxChunkLen);var r=0,o=t.maxChunkLen;for(r=0;n>r+o;r+=o)v(e,r,o,n,!1);return v(e,r,n-r,n,!0),b(t.heap,t.padMaxChunkLen)};this.digest=this.digestFromString=this.digestFromBuffer=this.digestFromArrayBuffer=function(e){return p(w(e).buffer)},this.resetState=function(){return g(t.heap,t.padMaxChunkLen),this},this.append=function(e){var n,r=0,o=e.byteLength||e.length||e.size||0,i=t.offset%t.maxChunkLen;for(t.offset+=o;r<o;)n=Math.min(o-r,t.maxChunkLen-i),_(e,r,n,i),i+=n,r+=n,i===t.maxChunkLen&&(t.core.hash(t.maxChunkLen,t.padMaxChunkLen),i=0);return this},this.getState=function(){var e,n=t.offset%t.maxChunkLen;if(n)e=t.heap.slice(0);else{var r=new Int32Array(t.heap,t.padMaxChunkLen+320,5);e=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}return{offset:t.offset,heap:e}},this.setState=function(e){if(t.offset=e.offset,20===e.heap.byteLength){new Int32Array(t.heap,t.padMaxChunkLen+320,5).set(new Int32Array(e.heap))}else t.h32.set(new Int32Array(e.heap));return this};var E=this.rawEnd=function(){var e=t.offset,n=e%t.maxChunkLen,r=y(n,e);t.core.hash(r,t.padMaxChunkLen);var o=b(t.heap,t.padMaxChunkLen);return g(t.heap,t.padMaxChunkLen),o};this.end=function(){return p(E().buffer)}}var r={getDataType:function(t){if("string"==typeof t)return"string";if(t instanceof Array)return"array";if(void 0!==e&&e.Buffer&&e.Buffer.isBuffer(t))return"buffer";if(t instanceof ArrayBuffer)return"arraybuffer";if(t.buffer instanceof ArrayBuffer)return"view";if(t instanceof Blob)return"blob";throw new Error("Unsupported data type.")}};if(n._core=function(e,t,n){"use asm";var r=new e.Int32Array(n);function o(e,t){e=e|0;t=t|0;var n=0,o=0,i=0,s=0,a=0,u=0,c=0,f=0,d=0,h=0,l=0,p=0,m=0,g=0;i=r[t+320>>2]|0;a=r[t+324>>2]|0;c=r[t+328>>2]|0;d=r[t+332>>2]|0;l=r[t+336>>2]|0;for(n=0;(n|0)<(e|0);n=n+64|0){s=i;u=a;f=c;h=d;p=l;for(o=0;(o|0)<64;o=o+4|0){g=r[n+o>>2]|0;m=((i<<5|i>>>27)+(a&c|~a&d)|0)+((g+l|0)+1518500249|0)|0;l=d;d=c;c=a<<30|a>>>2;a=i;i=m;r[e+o>>2]=g}for(o=e+64|0;(o|0)<(e+80|0);o=o+4|0){g=(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])<<1|(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])>>>31;m=((i<<5|i>>>27)+(a&c|~a&d)|0)+((g+l|0)+1518500249|0)|0;l=d;d=c;c=a<<30|a>>>2;a=i;i=m;r[o>>2]=g}for(o=e+80|0;(o|0)<(e+160|0);o=o+4|0){g=(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])<<1|(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])>>>31;m=((i<<5|i>>>27)+(a^c^d)|0)+((g+l|0)+1859775393|0)|0;l=d;d=c;c=a<<30|a>>>2;a=i;i=m;r[o>>2]=g}for(o=e+160|0;(o|0)<(e+240|0);o=o+4|0){g=(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])<<1|(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])>>>31;m=((i<<5|i>>>27)+(a&c|a&d|c&d)|0)+((g+l|0)-1894007588|0)|0;l=d;d=c;c=a<<30|a>>>2;a=i;i=m;r[o>>2]=g}for(o=e+240|0;(o|0)<(e+320|0);o=o+4|0){g=(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])<<1|(r[o-12>>2]^r[o-32>>2]^r[o-56>>2]^r[o-64>>2])>>>31;m=((i<<5|i>>>27)+(a^c^d)|0)+((g+l|0)-899497514|0)|0;l=d;d=c;c=a<<30|a>>>2;a=i;i=m;r[o>>2]=g}i=i+s|0;a=a+u|0;c=c+f|0;d=d+h|0;l=l+p|0}r[t+320>>2]=i;r[t+324>>2]=a;r[t+328>>2]=c;r[t+332>>2]=d;r[t+336>>2]=l}return{hash:o}},void 0!==t?t.exports=n:"undefined"!=typeof window&&(window.Rusha=n),"undefined"!=typeof FileReaderSync){var o=new FileReaderSync,i=new n(4194304);self.onmessage=function(e){var t,n=e.data.data;try{t=i.digest(n),self.postMessage({id:e.data.id,hash:t})}catch(t){self.postMessage({id:e.data.id,error:t.name})}}}}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],88:[function(e,t,n){t.exports=e("buffer")},{buffer:24}],89:[function(e,t,n){(function(e){t.exports=function(t,n){var r=[];t.on("data",function(e){r.push(e)}),t.once("end",function(){n&&n(null,e.concat(r)),n=null}),t.once("error",function(e){n&&n(e),n=null})}}).call(this,e("buffer").Buffer)},{buffer:24}],90:[function(e,t,n){(function(n){function r(e,t){e="string"==typeof e?{url:e}:Object.assign({},e),t=u(t),e.url&&o(e),null==e.headers&&(e.headers={}),null==e.maxRedirects&&(e.maxRedirects=10);var i;e.form&&(i="string"==typeof e.form?e.form:c.stringify(e.form)),e.body&&(i=e.json?JSON.stringify(e.body):e.body),e.json&&(e.headers.accept="application/json"),e.json&&i&&(e.headers["content-type"]="application/json"),e.form&&(e.headers["content-type"]="application/x-www-form-urlencoded"),i&&(e.headers["content-length"]=n.byteLength(i)),delete e.body,delete e.form,i&&!e.method&&(e.method="POST"),e.method&&(e.method=e.method.toUpperCase()),Object.keys(e.headers).some(function(e){return"accept-encoding"===e.toLowerCase()})||(e.headers["accept-encoding"]="gzip, deflate");var d="https:"===e.protocol?a:s,h=d.request(e,function(n){if(n.statusCode>=300&&n.statusCode<400&&"location"in n.headers)return e.url=n.headers.location,n.resume(),void(e.maxRedirects>0?(e.maxRedirects-=1,r(e,t)):t(new Error("too many redirects")));var o="function"==typeof f&&"HEAD"!==e.method;t(null,o?f(n):n)});return h.on("timeout",function(){h.abort(),t(new Error("Request timed out"))}),h.on("error",t),h.end(i),h}function o(e){var t=d.parse(e.url);t.hostname&&(e.hostname=t.hostname),t.port&&(e.port=t.port),t.protocol&&(e.protocol=t.protocol),t.auth&&(e.auth=t.auth),e.path=t.path,delete e.url}t.exports=r;var i=e("simple-concat"),s=e("http"),a=e("https"),u=e("once"),c=e("querystring"),f=e("unzip-response"),d=e("url");r.concat=function(e,t){return r(e,function(n,r){if(n)return t(n);i(r,function(n,o){if(n)return t(n);if(e.json)try{o=JSON.parse(o.toString())}catch(n){return t(n,r,o)}t(null,r,o)})})},["get","post","put","patch","head","delete"].forEach(function(e){r[e]=function(t,n){return"string"==typeof t&&(t={url:t}),t.method=e.toUpperCase(),r(t,n)}})}).call(this,e("buffer").Buffer)},{buffer:24,http:95,https:38,once:60,querystring:71,"simple-concat":89,"unzip-response":21,url:112}],91:[function(e,t,n){(function(n){function r(e){var t=this;if(!(t instanceof r))return new r(e);if(t._id=u(4).toString("hex").slice(0,7),t._debug("new peer %o",e),e=Object.assign({allowHalfOpen:!1},e),c.Duplex.call(t,e),t.channelName=e.initiator?e.channelName||u(20).toString("hex"):null,t._isChromium="undefined"!=typeof window&&!!window.webkitRTCPeerConnection,t.initiator=e.initiator||!1,t.channelConfig=e.channelConfig||r.channelConfig,t.config=e.config||r.config,t.constraints=t._transformConstraints(e.constraints||r.constraints),t.offerConstraints=t._transformConstraints(e.offerConstraints||{}),t.answerConstraints=t._transformConstraints(e.answerConstraints||{}),t.reconnectTimer=e.reconnectTimer||!1,t.sdpTransform=e.sdpTransform||function(e){return e},t.stream=e.stream||!1,t.trickle=void 0===e.trickle||e.trickle,t.destroyed=!1,t.connected=!1,t.remoteAddress=void 0,t.remoteFamily=void 0,t.remotePort=void 0,t.localAddress=void 0,t.localPort=void 0,t._wrtc=e.wrtc&&"object"==typeof e.wrtc?e.wrtc:s(),!t._wrtc)throw"undefined"==typeof window?new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"):new Error("No WebRTC support: Not a supported browser");if(t._pcReady=!1,t._channelReady=!1,t._iceComplete=!1,t._channel=null,t._pendingCandidates=[],t._previousStreams=[],t._chunk=null,t._cb=null,t._interval=null,t._reconnectTimeout=null,t._pc=new t._wrtc.RTCPeerConnection(t.config,t.constraints),t._isWrtc=Array.isArray(t._pc.RTCIceConnectionStates),t._isReactNativeWebrtc="number"==typeof t._pc._peerConnectionId,t._pc.oniceconnectionstatechange=function(){t._onIceStateChange()},t._pc.onicegatheringstatechange=function(){t._onIceStateChange()},t._pc.onsignalingstatechange=function(){t._onSignalingStateChange()},t._pc.onicecandidate=function(e){t._onIceCandidate(e)},t.initiator){var n=!1;t._pc.onnegotiationneeded=function(){n||t._createOffer(),n=!0},t._setupData({channel:t._pc.createDataChannel(t.channelName,t.channelConfig)})}else t._pc.ondatachannel=function(e){t._setupData(e)};"addTrack"in t._pc?(t.stream&&t.stream.getTracks().forEach(function(e){t._pc.addTrack(e,t.stream)}),t._pc.ontrack=function(e){t._onTrack(e)}):(t.stream&&t._pc.addStream(t.stream),t._pc.onaddstream=function(e){t._onAddStream(e)}),t.initiator&&t._isWrtc&&t._pc.onnegotiationneeded(),t._onFinishBound=function(){t._onFinish()},t.once("finish",t._onFinishBound)}function o(){}t.exports=r;var i=e("debug")("simple-peer"),s=e("get-browser-rtc"),a=e("inherits"),u=e("randombytes"),c=e("readable-stream");a(r,c.Duplex),r.WEBRTC_SUPPORT=!!s(),r.config={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:global.stun.twilio.com:3478?transport=udp"}]},r.constraints={},r.channelConfig={},Object.defineProperty(r.prototype,"bufferSize",{get:function(){var e=this;return e._channel&&e._channel.bufferedAmount||0}}),r.prototype.address=function(){var e=this;return{port:e.localPort,family:"IPv4",address:e.localAddress}},r.prototype.signal=function(e){var t=this;if(t.destroyed)throw new Error("cannot signal after peer is destroyed");if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}t._debug("signal()"),e.candidate&&(t._pc.remoteDescription?t._addIceCandidate(e.candidate):t._pendingCandidates.push(e.candidate)),e.sdp&&t._pc.setRemoteDescription(new t._wrtc.RTCSessionDescription(e),function(){t.destroyed||(t._pendingCandidates.forEach(function(e){t._addIceCandidate(e)}),t._pendingCandidates=[],"offer"===t._pc.remoteDescription.type&&t._createAnswer())},function(e){t._destroy(e)}),e.sdp||e.candidate||t._destroy(new Error("signal() called with invalid signal data"))},r.prototype._addIceCandidate=function(e){var t=this;try{t._pc.addIceCandidate(new t._wrtc.RTCIceCandidate(e),o,function(e){t._destroy(e)})}catch(e){t._destroy(new Error("error adding candidate: "+e.message))}},r.prototype.send=function(e){var t=this;t._isWrtc&&n.isBuffer(e)&&(e=new Uint8Array(e)),t._channel.send(e)},r.prototype.destroy=function(e){this._destroy(null,e)},r.prototype._destroy=function(e,t){var n=this;if(!n.destroyed){if(t&&n.once("close",t),n._debug("destroy (error: %s)",e&&(e.message||e)),n.readable=n.writable=!1,n._readableState.ended||n.push(null),n._writableState.finished||n.end(),n.destroyed=!0,n.connected=!1,n._pcReady=!1,n._channelReady=!1,n._previousStreams=null,clearInterval(n._interval),clearTimeout(n._reconnectTimeout),n._interval=null,n._reconnectTimeout=null,n._chunk=null,n._cb=null,n._onFinishBound&&n.removeListener("finish",n._onFinishBound),n._onFinishBound=null,n._pc){try{n._pc.close()}catch(e){}n._pc.oniceconnectionstatechange=null,n._pc.onicegatheringstatechange=null,n._pc.onsignalingstatechange=null,n._pc.onicecandidate=null,"addTrack"in n._pc?n._pc.ontrack=null:n._pc.onaddstream=null,n._pc.onnegotiationneeded=null,n._pc.ondatachannel=null}if(n._channel){try{n._channel.close()}catch(e){}n._channel.onmessage=null,n._channel.onopen=null,n._channel.onclose=null,n._channel.onerror=null}n._pc=null,n._channel=null,e&&n.emit("error",e),n.emit("close")}},r.prototype._setupData=function(e){var t=this;if(!e.channel)return t._destroy(new Error("Data channel event is missing `channel` property"));t._channel=e.channel,t._channel.binaryType="arraybuffer","number"==typeof t._channel.bufferedAmountLowThreshold&&(t._channel.bufferedAmountLowThreshold=65536),t.channelName=t._channel.label,t._channel.onmessage=function(e){t._onChannelMessage(e)},t._channel.onbufferedamountlow=function(){t._onChannelBufferedAmountLow()},t._channel.onopen=function(){t._onChannelOpen()},t._channel.onclose=function(){t._onChannelClose()},t._channel.onerror=function(e){t._destroy(e)}},r.prototype._read=function(){},r.prototype._write=function(e,t,n){var r=this;if(r.destroyed)return n(new Error("cannot write after peer is destroyed"));if(r.connected){try{r.send(e)}catch(e){return r._destroy(e)}r._channel.bufferedAmount>65536?(r._debug("start backpressure: bufferedAmount %d",r._channel.bufferedAmount),r._cb=n):n(null)}else r._debug("write before connect"),r._chunk=e,r._cb=n},r.prototype._onFinish=function(){function e(){setTimeout(function(){t._destroy()},1e3)}var t=this;t.destroyed||(t.connected?e():t.once("connect",e))},r.prototype._createOffer=function(){var e=this;e.destroyed||e._pc.createOffer(function(t){function n(){e.destroyed||(e.trickle||e._iceComplete?o():e.once("_iceComplete",o))}function r(t){e._destroy(t)}function o(){var n=e._pc.localDescription||t;e._debug("signal"),e.emit("signal",{type:n.type,sdp:n.sdp})}e.destroyed||(t.sdp=e.sdpTransform(t.sdp),e._pc.setLocalDescription(t,n,r))},function(t){e._destroy(t)},e.offerConstraints)},r.prototype._createAnswer=function(){var e=this;e.destroyed||e._pc.createAnswer(function(t){function n(){e.destroyed||(e.trickle||e._iceComplete?o():e.once("_iceComplete",o))}function r(t){e._destroy(t)}function o(){var n=e._pc.localDescription||t;e._debug("signal"),e.emit("signal",{type:n.type,sdp:n.sdp})}e.destroyed||(t.sdp=e.sdpTransform(t.sdp),e._pc.setLocalDescription(t,n,r))},function(t){e._destroy(t)},e.answerConstraints)},r.prototype._onIceStateChange=function(){var e=this;if(!e.destroyed){var t=e._pc.iceConnectionState,n=e._pc.iceGatheringState;e._debug("iceStateChange (connection: %s) (gathering: %s)",t,n),e.emit("iceStateChange",t,n),"connected"!==t&&"completed"!==t||(clearTimeout(e._reconnectTimeout),e._pcReady=!0,e._maybeReady()),"disconnected"===t&&(e.reconnectTimer?(clearTimeout(e._reconnectTimeout),e._reconnectTimeout=setTimeout(function(){e._destroy()},e.reconnectTimer)):e._destroy()),"failed"===t&&e._destroy(new Error("Ice connection failed.")),"closed"===t&&e._destroy()}},r.prototype.getStats=function(e){var t=this;0===t._pc.getStats.length?t._pc.getStats().then(function(t){var n=[];t.forEach(function(e){n.push(e)}),e(null,n)},function(t){e(t)}):t._isReactNativeWebrtc?t._pc.getStats(null,function(t){var n=[];t.forEach(function(e){n.push(e)}),e(null,n)},function(t){e(t)}):t._pc.getStats.length>0?t._pc.getStats(function(t){var n=[];t.result().forEach(function(e){var t={};e.names().forEach(function(n){t[n]=e.stat(n)}),t.id=e.id,t.type=e.type,t.timestamp=e.timestamp,n.push(t)}),e(null,n)},function(t){e(t)}):e(null,[])},r.prototype._maybeReady=function(){var e=this;e._debug("maybeReady pc %s channel %s",e._pcReady,e._channelReady),!e.connected&&!e._connecting&&e._pcReady&&e._channelReady&&(e._connecting=!0,e.getStats(function(t,n){function r(t){var n=i[t.localCandidateId];n&&n.ip?(e.localAddress=n.ip,e.localPort=Number(n.port)):n&&n.ipAddress?(e.localAddress=n.ipAddress,e.localPort=Number(n.portNumber)):"string"==typeof t.googLocalAddress&&(n=t.googLocalAddress.split(":"),e.localAddress=n[0],e.localPort=Number(n[1]));var r=o[t.remoteCandidateId];r&&r.ip?(e.remoteAddress=r.ip,e.remotePort=Number(r.port)):r&&r.ipAddress?(e.remoteAddress=r.ipAddress,e.remotePort=Number(r.portNumber)):"string"==typeof t.googRemoteAddress&&(r=t.googRemoteAddress.split(":"),e.remoteAddress=r[0],e.remotePort=Number(r[1])),e.remoteFamily="IPv4",e._debug("connect local: %s:%s remote: %s:%s",e.localAddress,e.localPort,e.remoteAddress,e.remotePort)}if(!e.destroyed){t&&(n=[]),e._connecting=!1,e.connected=!0;var o={},i={},s={};if(n.forEach(function(e){"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(o[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(i[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)}),n.forEach(function(e){"transport"===e.type&&r(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&r(e)}),e._chunk){try{e.send(e._chunk)}catch(t){return e._destroy(t)}e._chunk=null,e._debug('sent chunk from "write before connect"');var a=e._cb;e._cb=null,a(null)}"number"!=typeof e._channel.bufferedAmountLowThreshold&&(e._interval=setInterval(function(){e._onInterval()},150),e._interval.unref&&e._interval.unref()),e._debug("connect"),e.emit("connect")}}))},r.prototype._onInterval=function(){!this._cb||!this._channel||this._channel.bufferedAmount>65536||this._onChannelBufferedAmountLow()},r.prototype._onSignalingStateChange=function(){var e=this;e.destroyed||(e._debug("signalingStateChange %s",e._pc.signalingState),e.emit("signalingStateChange",e._pc.signalingState))},r.prototype._onIceCandidate=function(e){var t=this;t.destroyed||(e.candidate&&t.trickle?t.emit("signal",{candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):e.candidate||(t._iceComplete=!0,t.emit("_iceComplete")))},r.prototype._onChannelMessage=function(e){var t=this;if(!t.destroyed){var r=e.data;r instanceof ArrayBuffer&&(r=n.from(r)),t.push(r)}},r.prototype._onChannelBufferedAmountLow=function(){var e=this;if(!e.destroyed&&e._cb){e._debug("ending backpressure: bufferedAmount %d",e._channel.bufferedAmount);var t=e._cb;e._cb=null,t(null)}},r.prototype._onChannelOpen=function(){var e=this;e.connected||e.destroyed||(e._debug("on channel open"),e._channelReady=!0,e._maybeReady())},r.prototype._onChannelClose=function(){var e=this;e.destroyed||(e._debug("on channel close"),e._destroy())},r.prototype._onAddStream=function(e){var t=this;t.destroyed||(t._debug("on add stream"),t.emit("stream",e.stream))},r.prototype._onTrack=function(e){var t=this;if(!t.destroyed){t._debug("on track");var n=e.streams[0].id;-1===t._previousStreams.indexOf(n)&&(t._previousStreams.push(n),t.emit("stream",e.streams[0]))}},r.prototype._debug=function(){var e=this,t=[].slice.call(arguments);t[0]="["+e._id+"] "+t[0],i.apply(null,t)},r.prototype._transformConstraints=function(e){var t=this;if(0===Object.keys(e).length)return e;if((e.mandatory||e.optional)&&!t._isChromium){var n=Object.assign({},e.optional,e.mandatory);return void 0!==n.OfferToReceiveVideo&&(n.offerToReceiveVideo=n.OfferToReceiveVideo,delete n.OfferToReceiveVideo),void 0!==n.OfferToReceiveAudio&&(n.offerToReceiveAudio=n.OfferToReceiveAudio,delete n.OfferToReceiveAudio),n}return e.mandatory||e.optional||!t._isChromium?e:(void 0!==e.offerToReceiveVideo&&(e.OfferToReceiveVideo=e.offerToReceiveVideo,delete e.offerToReceiveVideo),void 0!==e.offerToReceiveAudio&&(e.OfferToReceiveAudio=e.offerToReceiveAudio,delete e.offerToReceiveAudio),{mandatory:e})}}).call(this,e("buffer").Buffer)},{buffer:24,debug:30,"get-browser-rtc":37,inherits:41,randombytes:73,"readable-stream":82}],92:[function(e,t,n){function r(e){return u.digest(e)}function o(e,t){if(!d)return void setTimeout(t,0,r(e));"string"==typeof e&&(e=i(e)),d.digest({name:"sha-1"},e).then(function(e){t(s(new Uint8Array(e)))},function(n){t(r(e))})}function i(e){for(var t=e.length,n=new Uint8Array(t),r=0;r<t;r++)n[r]=e.charCodeAt(r);return n}function s(e){for(var t=e.length,n=[],r=0;r<t;r++){var o=e[r];n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")}var a=e("rusha"),u=new a,c="undefined"!=typeof window?window:self,f=c.crypto||c.msCrypto||{},d=f.subtle||f.webkitSubtle;try{d.digest({name:"sha-1"},new Uint8Array).catch(function(){d=!1})}catch(e){d=!1}t.exports=o,t.exports.sync=r},{rusha:87}],93:[function(e,t,n){(function(n){function r(e){var t=this;if(!(t instanceof r))return new r(e);if(e||(e={}),"string"==typeof e&&(e={url:e}),null==e.url&&null==e.socket)throw new Error("Missing required `url` or `socket` option");if(null!=e.url&&null!=e.socket)throw new Error("Must specify either `url` or `socket` option, not both");if(t._id=a(4).toString("hex").slice(0,7),t._debug("new websocket: %o",e),e=Object.assign({allowHalfOpen:!1},e),u.Duplex.call(t,e),t.connected=!1,t.destroyed=!1,t._chunk=null,t._cb=null,t._interval=null,e.socket)t.url=e.socket.url,t._ws=e.socket;else{t.url=e.url;try{t._ws="function"==typeof c?new f(e.url,e):new f(e.url)}catch(e){return void n.nextTick(function(){t._destroy(e)})}}t._ws.binaryType="arraybuffer",t._ws.onopen=function(){t._onOpen()},t._ws.onmessage=function(e){t._onMessage(e)},t._ws.onclose=function(){t._onClose()},t._ws.onerror=function(){t._destroy(new Error("connection error to "+t.url))},t._onFinishBound=function(){t._onFinish()},t.once("finish",t._onFinishBound)}t.exports=r;var o=e("safe-buffer").Buffer,i=e("debug")("simple-websocket"),s=e("inherits"),a=e("randombytes"),u=e("readable-stream"),c=e("ws"),f="function"!=typeof c?WebSocket:c;s(r,u.Duplex),r.WEBSOCKET_SUPPORT=!!f,r.prototype.send=function(e){this._ws.send(e)},r.prototype.destroy=function(e){this._destroy(null,e)},r.prototype._destroy=function(e,t){var n=this;if(!n.destroyed){if(t&&n.once("close",t),n._debug("destroy (error: %s)",e&&(e.message||e)),n.readable=n.writable=!1,n._readableState.ended||n.push(null),n._writableState.finished||n.end(),n.connected=!1,n.destroyed=!0,clearInterval(n._interval),n._interval=null,n._chunk=null,n._cb=null,n._onFinishBound&&n.removeListener("finish",n._onFinishBound),n._onFinishBound=null,n._ws){var r=n._ws,o=function(){r.onclose=null};if(r.readyState===f.CLOSED)o();else try{r.onclose=o,r.close()}catch(e){o()}r.onopen=null,r.onmessage=null,r.onerror=null}n._ws=null,e&&n.emit("error",e),n.emit("close")}},r.prototype._read=function(){},r.prototype._write=function(e,t,n){if(this.destroyed)return n(new Error("cannot write after socket is destroyed"));if(this.connected){try{this.send(e)}catch(e){return this._destroy(e)}"function"!=typeof c&&this._ws.bufferedAmount>65536?(this._debug("start backpressure: bufferedAmount %d",this._ws.bufferedAmount),this._cb=n):n(null)}else this._debug("write before connect"),this._chunk=e,this._cb=n},r.prototype._onFinish=function(){function e(){setTimeout(function(){t._destroy()},1e3)}var t=this;t.destroyed||(t.connected?e():t.once("connect",e))},r.prototype._onMessage=function(e){if(!this.destroyed){var t=e.data;t instanceof ArrayBuffer&&(t=o.from(t)),this.push(t)}},r.prototype._onOpen=function(){var e=this;if(!e.connected&&!e.destroyed){if(e.connected=!0,e._chunk){try{e.send(e._chunk)}catch(t){return e._destroy(t)}e._chunk=null,e._debug('sent chunk from "write before connect"');var t=e._cb;e._cb=null,t(null)}"function"!=typeof c&&(e._interval=setInterval(function(){e._onInterval()},150),e._interval.unref&&e._interval.unref()),e._debug("connect"),e.emit("connect")}},r.prototype._onInterval=function(){if(this._cb&&this._ws&&!(this._ws.bufferedAmount>65536)){this._debug("ending backpressure: bufferedAmount %d",this._ws.bufferedAmount);var e=this._cb;this._cb=null,e(null)}},r.prototype._onClose=function(){this.destroyed||(this._debug("on close"),this._destroy())},r.prototype._debug=function(){var e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],i.apply(null,e)}}).call(this,e("_process"))},{_process:66,debug:30,inherits:41,randombytes:73,"readable-stream":82,"safe-buffer":88,ws:21}],94:[function(e,t,n){var r=1,o=function(){r=r+1&65535},i=setInterval(o,250);i.unref&&i.unref(),t.exports=function(e){var t=4*(e||5),n=[0],o=1,i=r-1&65535;return function(e){var s=r-i&65535;for(s>t&&(s=t),i=r;s--;)o===t&&(o=0),n[o]=n[0===o?t-1:o-1],o++;e&&(n[o-1]+=e);var a=n[o-1],u=n.length<t?0:n[o===t?0:o];return n.length<4?a:4*(a-u)/n.length}}},{}],95:[function(e,t,n){(function(t){var r=e("./lib/request"),o=e("xtend"),i=e("builtin-status-codes"),s=e("url"),a=n;a.request=function(e,n){e="string"==typeof e?s.parse(e):o(e);var i=-1===t.location.protocol.search(/^https?:$/)?"http:":"",a=e.protocol||i,u=e.hostname||e.host,c=e.port,f=e.path||"/";u&&-1!==u.indexOf(":")&&(u="["+u+"]"),e.url=(u?a+"//"+u:"")+(c?":"+c:"")+f,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var d=new r(e);return n&&d.on("response",n),d},a.get=function(e,t){var n=a.request(e,t);return n.end(),n},a.Agent=function(){},a.Agent.defaultMaxSockets=4,a.STATUS_CODES=i,a.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/request":97,"builtin-status-codes":25,url:112,xtend:119}],96:[function(e,t,n){(function(e){function t(){if(void 0!==i)return i;if(e.XMLHttpRequest){i=new e.XMLHttpRequest;try{i.open("GET",e.XDomainRequest?"/":"https://example.com")}catch(e){i=null}}else i=null;return i}function r(e){var n=t();if(!n)return!1;try{return n.responseType=e,n.responseType===e}catch(e){}return!1}function o(e){return"function"==typeof e}n.fetch=o(e.fetch)&&o(e.ReadableStream),n.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),n.blobConstructor=!0}catch(e){}var i,s=void 0!==e.ArrayBuffer,a=s&&o(e.ArrayBuffer.prototype.slice);n.arraybuffer=n.fetch||s&&r("arraybuffer"),n.msstream=!n.fetch&&a&&r("ms-stream"),n.mozchunkedarraybuffer=!n.fetch&&s&&r("moz-chunked-arraybuffer"),n.overrideMimeType=n.fetch||!!t()&&o(t().overrideMimeType),n.vbArray=o(e.VBArray),i=null}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],97:[function(e,t,n){(function(n,r,o){function i(e,t){return a.fetch&&t?"fetch":a.mozchunkedarraybuffer?"moz-chunked-arraybuffer":a.msstream?"ms-stream":a.arraybuffer&&e?"arraybuffer":a.vbArray&&e?"text:vbarray":"text"}function s(e){try{var t=e.status;return null!==t&&0!==t}catch(e){return!1}}var a=e("./capability"),u=e("inherits"),c=e("./response"),f=e("readable-stream"),d=e("to-arraybuffer"),h=c.IncomingMessage,l=c.readyStates,p=t.exports=function(e){var t=this;f.Writable.call(t),t._opts=e,t._body=[],t._headers={},e.auth&&t.setHeader("Authorization","Basic "+new o(e.auth).toString("base64")),Object.keys(e.headers).forEach(function(n){t.setHeader(n,e.headers[n])});var n,r=!0;if("disable-fetch"===e.mode||"timeout"in e)r=!1,n=!0;else if("prefer-streaming"===e.mode)n=!1;else if("allow-wrong-content-type"===e.mode)n=!a.overrideMimeType;else{if(e.mode&&"default"!==e.mode&&"prefer-fast"!==e.mode)throw new Error("Invalid value for opts.mode");n=!0}t._mode=i(n,r),t.on("finish",function(){t._onFinish()})};u(p,f.Writable),p.prototype.setHeader=function(e,t){var n=this,r=e.toLowerCase();-1===m.indexOf(r)&&(n._headers[r]={name:e,value:t})},p.prototype.getHeader=function(e){return this._headers[e.toLowerCase()].value},p.prototype.removeHeader=function(e){delete this._headers[e.toLowerCase()]},p.prototype._onFinish=function(){var e=this;if(!e._destroyed){var t=e._opts,i=e._headers,s=null;"GET"!==t.method&&"HEAD"!==t.method&&(s=a.blobConstructor?new r.Blob(e._body.map(function(e){return d(e)}),{type:(i["content-type"]||{}).value||""}):o.concat(e._body).toString());var u=[];if(Object.keys(i).forEach(function(e){var t=i[e].name,n=i[e].value;Array.isArray(n)?n.forEach(function(e){u.push([t,e])}):u.push([t,n])}),"fetch"===e._mode)r.fetch(e._opts.url,{method:e._opts.method,headers:u,body:s||void 0,mode:"cors",credentials:t.withCredentials?"include":"same-origin"}).then(function(t){e._fetchResponse=t,e._connect()},function(t){e.emit("error",t)});else{var c=e._xhr=new r.XMLHttpRequest;try{c.open(e._opts.method,e._opts.url,!0)}catch(t){return void n.nextTick(function(){e.emit("error",t)})}"responseType"in c&&(c.responseType=e._mode.split(":")[0]),"withCredentials"in c&&(c.withCredentials=!!t.withCredentials),"text"===e._mode&&"overrideMimeType"in c&&c.overrideMimeType("text/plain; charset=x-user-defined"),"timeout"in t&&(c.timeout=t.timeout,c.ontimeout=function(){e.emit("timeout")}),u.forEach(function(e){c.setRequestHeader(e[0],e[1])}),e._response=null,c.onreadystatechange=function(){switch(c.readyState){case l.LOADING:case l.DONE:e._onXHRProgress()}},"moz-chunked-arraybuffer"===e._mode&&(c.onprogress=function(){e._onXHRProgress()}),c.onerror=function(){e._destroyed||e.emit("error",new Error("XHR error"))};try{c.send(s)}catch(t){return void n.nextTick(function(){e.emit("error",t)})}}}},p.prototype._onXHRProgress=function(){var e=this;s(e._xhr)&&!e._destroyed&&(e._response||e._connect(),e._response._onXHRProgress())},p.prototype._connect=function(){var e=this;e._destroyed||(e._response=new h(e._xhr,e._fetchResponse,e._mode),e._response.on("error",function(t){e.emit("error",t)}),e.emit("response",e._response))},p.prototype._write=function(e,t,n){this._body.push(e),n()},p.prototype.abort=p.prototype.destroy=function(){var e=this;e._destroyed=!0,e._response&&(e._response._destroyed=!0),e._xhr&&e._xhr.abort()},p.prototype.end=function(e,t,n){var r=this;"function"==typeof e&&(n=e,e=void 0),f.Writable.prototype.end.call(r,e,t,n)},p.prototype.flushHeaders=function(){},p.prototype.setTimeout=function(){},p.prototype.setNoDelay=function(){},p.prototype.setSocketKeepAlive=function(){};var m=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"]}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"./capability":96,"./response":98,_process:66,buffer:24,inherits:41,"readable-stream":82,"to-arraybuffer":105}],98:[function(e,t,n){(function(t,r,o){var i=e("./capability"),s=e("inherits"),a=e("readable-stream"),u=n.readyStates={UNSENT:0,OPENED:1, -HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=n.IncomingMessage=function(e,n,r){function s(){c.read().then(function(e){if(!u._destroyed){if(e.done)return void u.push(null);u.push(new o(e.value)),s()}}).catch(function(e){u.emit("error",e)})}var u=this;if(a.Readable.call(u),u._mode=r,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){t.nextTick(function(){u.emit("close")})}),"fetch"===r){u._fetchResponse=n,u.url=n.url,u.statusCode=n.status,u.statusMessage=n.statusText,n.headers.forEach(function(e,t){u.headers[t.toLowerCase()]=e,u.rawHeaders.push(t,e)});var c=n.body.getReader();s()}else{u._xhr=e,u._pos=0,u.url=e.responseURL,u.statusCode=e.status,u.statusMessage=e.statusText;if(e.getAllResponseHeaders().split(/\r?\n/).forEach(function(e){var t=e.match(/^([^:]+):\s*(.*)/);if(t){var n=t[1].toLowerCase();"set-cookie"===n?(void 0===u.headers[n]&&(u.headers[n]=[]),u.headers[n].push(t[2])):void 0!==u.headers[n]?u.headers[n]+=", "+t[2]:u.headers[n]=t[2],u.rawHeaders.push(t[1],t[2])}}),u._charset="x-user-defined",!i.overrideMimeType){var f=u.rawHeaders["mime-type"];if(f){var d=f.match(/;\s*charset=([^;])(;|$)/);d&&(u._charset=d[1].toLowerCase())}u._charset||(u._charset="utf-8")}}};s(c,a.Readable),c.prototype._read=function(){},c.prototype._onXHRProgress=function(){var e=this,t=e._xhr,n=null;switch(e._mode){case"text:vbarray":if(t.readyState!==u.DONE)break;try{n=new r.VBArray(t.responseBody).toArray()}catch(e){}if(null!==n){e.push(new o(n));break}case"text":try{n=t.responseText}catch(t){e._mode="text:vbarray";break}if(n.length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=new o(i.length),a=0;a<i.length;a++)s[a]=255&i.charCodeAt(a);e.push(s)}else e.push(i,e._charset);e._pos=n.length}break;case"arraybuffer":if(t.readyState!==u.DONE||!t.response)break;n=t.response,e.push(new o(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=t.response,t.readyState!==u.LOADING||!n)break;e.push(new o(new Uint8Array(n)));break;case"ms-stream":if(n=t.response,t.readyState!==u.LOADING)break;var c=new r.MSStreamReader;c.onprogress=function(){c.result.byteLength>e._pos&&(e.push(new o(new Uint8Array(c.result.slice(e._pos)))),e._pos=c.result.byteLength)},c.onload=function(){e.push(null)},c.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&e.push(null)}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"./capability":96,_process:66,buffer:24,inherits:41,"readable-stream":82}],99:[function(e,t,n){var r=e("stream-to-blob");t.exports=function e(t,n,o){if("function"==typeof n)return e(t,null,n);r(t,n,function(e,t){if(e)return o(e);var n=URL.createObjectURL(t);o(null,n)})}},{"stream-to-blob":100}],100:[function(e,t,n){var r=e("once");t.exports=function e(t,n,o){if("function"==typeof n)return e(t,null,n);o=r(o);var i=[];t.on("data",function(e){i.push(e)}).on("end",function(){var e=n?new Blob(i,{type:n}):new Blob(i);o(null,e)}).on("error",o)}},{once:60}],101:[function(e,t,n){(function(n){var r=e("once");t.exports=function(e,t,o){o=r(o);var i=new n(t),s=0;e.on("data",function(e){e.copy(i,s),s+=e.length}).on("end",function(){o(null,i)}).on("error",o)}}).call(this,e("buffer").Buffer)},{buffer:24,once:60}],102:[function(e,t,n){"use strict";function r(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function o(e){var t=r(e);if("string"!=typeof t&&(_.isEncoding===b||!b(e)))throw new Error("Unknown encoding: "+e);return t||e}function i(e){this.encoding=o(e);var t;switch(this.encoding){case"utf16le":this.text=h,this.end=l,t=4;break;case"utf8":this.fillLast=c,t=4;break;case"base64":this.text=p,this.end=m,t=3;break;default:return this.write=g,void(this.end=y)}this.lastNeed=0,this.lastTotal=0,this.lastChar=v.allocUnsafe(t)}function s(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:-1}function a(e,t,n){var r=t.length-1;if(r<n)return 0;var o=s(t[r]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--r<n?0:(o=s(t[r]))>=0?(o>0&&(e.lastNeed=o-2),o):--r<n?0:(o=s(t[r]),o>=0?(o>0&&(2===o?o=0:e.lastNeed=o-3),o):0)}function u(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�".repeat(n);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�".repeat(n+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�".repeat(n+2)}}function c(e){var t=this.lastTotal-this.lastNeed,n=u(this,e,t);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function f(e,t){var n=a(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�".repeat(this.lastTotal-this.lastNeed):t}function h(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function p(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function m(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function g(e){return e.toString(this.encoding)}function y(e){return e&&e.length?this.write(e):""}var _=e("buffer").Buffer,v=e("buffer-shims"),b=_.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};n.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},i.prototype.end=d,i.prototype.text=f,i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{buffer:24,"buffer-shims":23}],103:[function(e,t,n){var r=e("./thirty-two");n.encode=r.encode,n.decode=r.decode},{"./thirty-two":104}],104:[function(e,t,n){(function(e){"use strict";function t(e){var t=Math.floor(e.length/5);return e.length%5==0?t:t+1}var r=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];n.encode=function(n){e.isBuffer(n)||(n=new e(n));for(var r=0,o=0,i=0,s=0,a=new e(8*t(n));r<n.length;){var u=n[r];i>3?(s=u&255>>i,i=(i+5)%8,s=s<<i|(r+1<n.length?n[r+1]:0)>>8-i,r++):(s=u>>8-(i+5)&31,0==(i=(i+5)%8)&&r++),a[o]="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".charCodeAt(s),o++}for(r=o;r<a.length;r++)a[r]=61;return a},n.decode=function(t){var n,o=0,i=0,s=0;e.isBuffer(t)||(t=new e(t));for(var a=new e(Math.ceil(5*t.length/8)),u=0;u<t.length&&61!==t[u];u++){var c=t[u]-48;if(!(c<r.length))throw new Error("Invalid input - it is not base32 encoded string");i=r[c],o<=3?(o=(o+5)%8,0===o?(n|=i,a[s]=n,s++,n=0):n|=255&i<<8-o):(o=(o+5)%8,n|=255&i>>>o,a[s]=n,s++,n=255&i<<8-o)}return a.slice(0,s)}}).call(this,e("buffer").Buffer)},{buffer:24}],105:[function(e,t,n){var r=e("buffer").Buffer;t.exports=function(e){if(e instanceof Uint8Array){if(0===e.byteOffset&&e.byteLength===e.buffer.byteLength)return e.buffer;if("function"==typeof e.buffer.slice)return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(r.isBuffer(e)){for(var t=new Uint8Array(e.length),n=e.length,o=0;o<n;o++)t[o]=e[o];return t.buffer}throw new Error("Argument must be a Buffer")}},{buffer:24}],106:[function(e,t,n){(function(n){function r(e){function t(e,t){var n=new i(t);return n.on("warning",o._onWarning),n.on("error",o._onError),n.listen(e),o._internalDHT=!0,n}var o=this;if(!(o instanceof r))return new r(e);if(s.call(o),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!n.browser&&!e.port)throw new Error("Option `port` is required");o.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),o.infoHash="string"==typeof e.infoHash?e.infoHash:e.infoHash.toString("hex"),o._port=e.port,o._userAgent=e.userAgent,o.destroyed=!1,o._announce=e.announce||[],o._intervalMs=e.intervalMs||9e5,o._trackerOpts=null,o._dhtAnnouncing=!1,o._dhtTimeout=!1,o._internalDHT=!1,o._onWarning=function(e){o.emit("warning",e)},o._onError=function(e){o.emit("error",e)},o._onDHTPeer=function(e,t){t.toString("hex")===o.infoHash&&o.emit("peer",e.host+":"+e.port,"dht")},o._onTrackerPeer=function(e){o.emit("peer",e,"tracker")},o._onTrackerAnnounce=function(){o.emit("trackerAnnounce")},!1===e.tracker?o.tracker=null:e.tracker&&"object"==typeof e.tracker?(o._trackerOpts=a(e.tracker),o.tracker=o._createTracker()):o.tracker=o._createTracker(),!1===e.dht||"function"!=typeof i?o.dht=null:e.dht&&"function"==typeof e.dht.addNode?o.dht=e.dht:e.dht&&"object"==typeof e.dht?o.dht=t(e.dhtPort,e.dht):o.dht=t(e.dhtPort),o.dht&&(o.dht.on("peer",o._onDHTPeer),o._dhtAnnounce())}t.exports=r;var o=e("debug")("torrent-discovery"),i=e("bittorrent-dht/client"),s=e("events").EventEmitter,a=e("xtend"),u=e("inherits"),c=e("run-parallel"),f=e("bittorrent-tracker/client");u(r,s),r.prototype.updatePort=function(e){var t=this;e!==t._port&&(t._port=e,t.dht&&t._dhtAnnounce(),t.tracker&&(t.tracker.stop(),t.tracker.destroy(function(){t.tracker=t._createTracker()})))},r.prototype.complete=function(e){this.tracker&&this.tracker.complete(e)},r.prototype.destroy=function(e){var t=this;if(!t.destroyed){t.destroyed=!0,clearTimeout(t._dhtTimeout);var n=[];t.tracker&&(t.tracker.stop(),t.tracker.removeListener("warning",t._onWarning),t.tracker.removeListener("error",t._onError),t.tracker.removeListener("peer",t._onTrackerPeer),t.tracker.removeListener("update",t._onTrackerAnnounce),n.push(function(e){t.tracker.destroy(e)})),t.dht&&t.dht.removeListener("peer",t._onDHTPeer),t._internalDHT&&(t.dht.removeListener("warning",t._onWarning),t.dht.removeListener("error",t._onError),n.push(function(e){t.dht.destroy(e)})),c(n,e),t.dht=null,t.tracker=null,t._announce=null}},r.prototype._createTracker=function(){var e=a(this._trackerOpts,{infoHash:this.infoHash,announce:this._announce,peerId:this.peerId,port:this._port,userAgent:this._userAgent}),t=new f(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onTrackerPeer),t.on("update",this._onTrackerAnnounce),t.setInterval(this._intervalMs),t.start(),t},r.prototype._dhtAnnounce=function(){function e(){return t._intervalMs+Math.floor(Math.random()*t._intervalMs/5)}var t=this;t._dhtAnnouncing||(o("dht announce"),t._dhtAnnouncing=!0,clearTimeout(t._dhtTimeout),t.dht.announce(t.infoHash,t._port,function(n){t._dhtAnnouncing=!1,o("dht announce complete"),n&&t.emit("warning",n),t.emit("dhtAnnounce"),t.destroyed||(t._dhtTimeout=setTimeout(function(){t._dhtAnnounce()},e()),t._dhtTimeout.unref&&t._dhtTimeout.unref())}))}}).call(this,e("_process"))},{_process:66,"bittorrent-dht/client":21,"bittorrent-tracker/client":15,debug:30,events:34,inherits:41,"run-parallel":86,xtend:119}],107:[function(e,t,n){(function(e){function n(e){if(!(this instanceof n))return new n(e);this.length=e,this.missing=e,this.sources=null,this._chunks=Math.ceil(e/r),this._remainder=e%r||r,this._buffered=0,this._buffer=null,this._cancellations=null,this._reservations=0,this._flushed=!1}t.exports=n;var r=16384;n.BLOCK_LENGTH=r,n.prototype.chunkLength=function(e){return e===this._chunks-1?this._remainder:r},n.prototype.chunkLengthRemaining=function(e){return this.length-e*r},n.prototype.chunkOffset=function(e){return e*r},n.prototype.reserve=function(){return this.init()?this._cancellations.length?this._cancellations.pop():this._reservations<this._chunks?this._reservations++:-1:-1},n.prototype.reserveRemaining=function(){if(!this.init())return-1;if(this._reservations<this._chunks){var e=this._reservations;return this._reservations=this._chunks,e}return-1},n.prototype.cancel=function(e){this.init()&&this._cancellations.push(e)},n.prototype.cancelRemaining=function(e){this.init()&&(this._reservations=e)},n.prototype.get=function(e){return this.init()?this._buffer[e]:null},n.prototype.set=function(e,t,n){if(!this.init())return!1;for(var o=t.length,i=Math.ceil(o/r),s=0;s<i;s++)if(!this._buffer[e+s]){var a=s*r,u=t.slice(a,a+r);this._buffered++,this._buffer[e+s]=u,this.missing-=u.length,-1===this.sources.indexOf(n)&&this.sources.push(n)}return this._buffered===this._chunks},n.prototype.flush=function(){if(!this._buffer||this._chunks!==this._buffered)return null;var t=e.concat(this._buffer,this.length);return this._buffer=null,this._cancellations=null,this.sources=null,this._flushed=!0,t},n.prototype.init=function(){return!this._flushed&&(!!this._buffer||(this._buffer=new Array(this._chunks),this._cancellations=[],this.sources=[],!0))}}).call(this,e("buffer").Buffer)},{buffer:24}],108:[function(e,t,n){(function(n){var r=e("is-typedarray").strict;t.exports=function(e){if(r(e)){var t=new n(e.buffer);return e.byteLength!==e.buffer.byteLength&&(t=t.slice(e.byteOffset,e.byteOffset+e.byteLength)),t}return new n(e)}}).call(this,e("buffer").Buffer)},{buffer:24,"is-typedarray":45}],109:[function(e,t,n){(function(e){n.encodingLength=function(){return 8},n.encode=function(t,n,r){n||(n=new e(8)),r||(r=0);var o=Math.floor(t/4294967295),i=t-4294967295*o;return n.writeUInt32BE(o,r),n.writeUInt32BE(i,r+4),n},n.decode=function(t,n){return n||(n=0),t||(t=new e(4)),n||(n=0),4294967295*t.readUInt32BE(n)+t.readUInt32BE(n+4)},n.encode.bytes=8,n.decode.bytes=8}).call(this,e("buffer").Buffer)},{buffer:24}],110:[function(e,t,n){"use strict";function r(e,t){for(var n=1,r=e.length,o=e[0],i=e[0],s=1;s<r;++s)if(i=o,o=e[s],t(o,i)){if(s===n){n++;continue}e[n++]=o}return e.length=n,e}function o(e){for(var t=1,n=e.length,r=e[0],o=e[0],i=1;i<n;++i,o=r)if(o=r,(r=e[i])!==o){if(i===t){t++;continue}e[t++]=r}return e.length=t,e}function i(e,t,n){return 0===e.length?e:t?(n||e.sort(t),r(e,t)):(n||e.sort(),o(e))}t.exports=i},{}],111:[function(e,t,n){function r(e,t){if(!(t>=e.length||t<0)){var n=e.pop();if(t<e.length){var r=e[t];return e[t]=n,r}return n}}t.exports=r},{}],112:[function(e,t,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function o(e,t,n){if(e&&c.isObject(e)&&e instanceof r)return e;var o=new r;return o.parse(e,t,n),o}function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r.prototype.format.call(e)}function s(e,t){return o(e,!1,!0).resolve(t)}function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}var u=e("punycode"),c=e("./util");n.parse=o,n.resolve=s,n.resolveObject=a,n.format=i,n.Url=r;var f=/^([a-z0-9.+-]+:)/i,d=/:[0-9]*$/,h=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["<",">",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(l),m=["'"].concat(p),g=["%","/","?",";","#"].concat(m),y=["/","?","#"],_={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},b={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},w=e("querystring");r.prototype.parse=function(e,t,n){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),o=-1!==r&&r<e.indexOf("#")?"?":"#",i=e.split(o);i[0]=i[0].replace(/\\/g,"/"),e=i.join(o);var s=e;if(s=s.trim(),!n&&1===e.split("#").length){var a=h.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=t?w.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var d=f.exec(s);if(d){d=d[0];var l=d.toLowerCase();this.protocol=l,s=s.substr(d.length)}if(n||d||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var p="//"===s.substr(0,2);!p||d&&v[d]||(s=s.substr(2),this.slashes=!0)}if(!v[d]&&(p||d&&!b[d])){for(var E=-1,k=0;k<y.length;k++){var x=s.indexOf(y[k]);-1!==x&&(-1===E||x<E)&&(E=x)}var S,I;I=-1===E?s.lastIndexOf("@"):s.lastIndexOf("@",E),-1!==I&&(S=s.slice(0,I),s=s.slice(I+1),this.auth=decodeURIComponent(S)),E=-1;for(var k=0;k<g.length;k++){var x=s.indexOf(g[k]);-1!==x&&(-1===E||x<E)&&(E=x)}-1===E&&(E=s.length),this.host=s.slice(0,E),s=s.slice(E),this.parseHost(),this.hostname=this.hostname||"";var B="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!B)for(var A=this.hostname.split(/\./),k=0,C=A.length;k<C;k++){var T=A[k];if(T&&!T.match(/^[+a-z0-9A-Z_-]{0,63}$/)){for(var L="",U=0,R=T.length;U<R;U++)T.charCodeAt(U)>127?L+="x":L+=T[U];if(!L.match(/^[+a-z0-9A-Z_-]{0,63}$/)){var O=A.slice(0,k),M=A.slice(k+1),P=T.match(/^([+a-z0-9A-Z_-]{0,63})(.*)$/);P&&(O.push(P[1]),M.unshift(P[2])),M.length&&(s="/"+M.join(".")+s),this.hostname=O.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),B||(this.hostname=u.toASCII(this.hostname));var j=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+j,this.href+=this.host,B&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!_[l])for(var k=0,C=m.length;k<C;k++){var N=m[k];if(-1!==s.indexOf(N)){var q=encodeURIComponent(N);q===N&&(q=escape(N)),s=s.split(N).join(q)}}var D=s.indexOf("#");-1!==D&&(this.hash=s.substr(D),s=s.slice(0,D));var W=s.indexOf("?");if(-1!==W?(this.search=s.substr(W),this.query=s.substr(W+1),t&&(this.query=w.parse(this.query)),s=s.slice(0,W)):t&&(this.search="",this.query={}),s&&(this.pathname=s),b[l]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var j=this.pathname||"",z=this.search||"";this.path=j+z}return this.href=this.format(),this},r.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(i=w.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||b[t])&&!1!==o?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),r&&"#"!==r.charAt(0)&&(r="#"+r),s&&"?"!==s.charAt(0)&&(s="?"+s),n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+o+n+s+r},r.prototype.resolve=function(e){return this.resolveObject(o(e,!1,!0)).format()},r.prototype.resolveObject=function(e){if(c.isString(e)){var t=new r;t.parse(e,!1,!0),e=t}for(var n=new r,o=Object.keys(this),i=0;i<o.length;i++){var s=o[i];n[s]=this[s]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),u=0;u<a.length;u++){var f=a[u];"protocol"!==f&&(n[f]=e[f])}return b[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!b[e.protocol]){for(var d=Object.keys(e),h=0;h<d.length;h++){var l=d[h];n[l]=e[l]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||v[e.protocol])n.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),p.length<2&&p.unshift(""),n.pathname=p.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var m=n.pathname||"",g=n.search||"";n.path=m+g}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),_=e.host||e.pathname&&"/"===e.pathname.charAt(0),w=_||y||n.host&&e.pathname,E=w,k=n.pathname&&n.pathname.split("/")||[],p=e.pathname&&e.pathname.split("/")||[],x=n.protocol&&!b[n.protocol];if(x&&(n.hostname="",n.port=null,n.host&&(""===k[0]?k[0]=n.host:k.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),w=w&&(""===p[0]||""===k[0])),_)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,k=p;else if(p.length)k||(k=[]),k.pop(),k=k.concat(p),n.search=e.search,n.query=e.query;else if(!c.isNullOrUndefined(e.search)){if(x){n.hostname=n.host=k.shift();var S=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");S&&(n.auth=S.shift(),n.host=n.hostname=S.shift())}return n.search=e.search,n.query=e.query,c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!k.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var I=k.slice(-1)[0],B=(n.host||e.host||k.length>1)&&("."===I||".."===I)||""===I,A=0,C=k.length;C>=0;C--)I=k[C],"."===I?k.splice(C,1):".."===I?(k.splice(C,1),A++):A&&(k.splice(C,1),A--);if(!w&&!E)for(;A--;A)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),B&&"/"!==k.join("/").substr(-1)&&k.push("");var T=""===k[0]||k[0]&&"/"===k[0].charAt(0);if(x){n.hostname=n.host=T?"":k.length?k.shift():"";var S=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");S&&(n.auth=S.shift(),n.host=n.hostname=S.shift())}return w=w||n.host&&k.length,w&&!T&&k.unshift(""),k.length?n.pathname=k.join("/"):(n.pathname=null,n.path=null),c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var e=this.host,t=d.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":113,punycode:68,querystring:71}],113:[function(e,t,n){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],114:[function(e,t,n){var r=e("bencode"),o=e("bitfield"),i=e("safe-buffer").Buffer,s=e("debug")("ut_metadata"),a=e("events").EventEmitter,u=e("inherits"),c=e("simple-sha1"),f=1e3;t.exports=function(e){function t(t){a.call(this),this._wire=t,this._metadataComplete=!1,this._metadataSize=null,this._remainingRejects=null,this._fetching=!1,this._bitfield=new o(0,{grow:f}),i.isBuffer(e)&&this.setMetadata(e)}return u(t,a),t.prototype.name="ut_metadata",t.prototype.onHandshake=function(e,t,n){this._infoHash=e},t.prototype.onExtendedHandshake=function(e){return e.m&&e.m.ut_metadata?e.metadata_size?"number"!=typeof e.metadata_size||1e7<e.metadata_size||e.metadata_size<=0?this.emit("warning",new Error("Peer gave invalid metadata size")):(this._metadataSize=e.metadata_size,this._numPieces=Math.ceil(this._metadataSize/16384),this._remainingRejects=2*this._numPieces,void(this._fetching&&this._requestPieces())):this.emit("warning",new Error("Peer does not have metadata")):this.emit("warning",new Error("Peer does not support ut_metadata"))},t.prototype.onMessage=function(e){var t,n;try{var o=e.toString(),i=o.indexOf("ee")+2;t=r.decode(o.substring(0,i)),n=e.slice(i)}catch(e){return}switch(t.msg_type){case 0:this._onRequest(t.piece);break;case 1:this._onData(t.piece,n,t.total_size);break;case 2:this._onReject(t.piece)}},t.prototype.fetch=function(){this._metadataComplete||(this._fetching=!0,this._metadataSize&&this._requestPieces())},t.prototype.cancel=function(){this._fetching=!1},t.prototype.setMetadata=function(e){if(this._metadataComplete)return!0;s("set metadata");try{var t=r.decode(e).info;t&&(e=r.encode(t))}catch(e){}return(!this._infoHash||this._infoHash===c.sync(e))&&(this.cancel(),this.metadata=e,this._metadataComplete=!0,this._metadataSize=this.metadata.length,this._wire.extendedHandshake.metadata_size=this._metadataSize,this.emit("metadata",r.encode({info:r.decode(this.metadata)})),!0)},t.prototype._send=function(e,t){var n=r.encode(e);i.isBuffer(t)&&(n=i.concat([n,t])),this._wire.extended("ut_metadata",n)},t.prototype._request=function(e){this._send({msg_type:0,piece:e})},t.prototype._data=function(e,t,n){var r={msg_type:1,piece:e};"number"==typeof n&&(r.total_size=n),this._send(r,t)},t.prototype._reject=function(e){this._send({msg_type:2,piece:e})},t.prototype._onRequest=function(e){if(!this._metadataComplete)return void this._reject(e);var t=16384*e,n=t+16384;n>this._metadataSize&&(n=this._metadataSize);var r=this.metadata.slice(t,n);this._data(e,r,this._metadataSize)},t.prototype._onData=function(e,t,n){t.length>16384||(t.copy(this.metadata,16384*e),this._bitfield.set(e),this._checkDone())},t.prototype._onReject=function(e){this._remainingRejects>0&&this._fetching?(this._request(e),this._remainingRejects-=1):this.emit("warning",new Error('Peer sent "reject" too much'))},t.prototype._requestPieces=function(){this.metadata=i.alloc(this._metadataSize);for(var e=0;e<this._numPieces;e++)this._request(e)},t.prototype._checkDone=function(){for(var e=!0,t=0;t<this._numPieces;t++)if(!this._bitfield.get(t)){e=!1;break}if(e){this.setMetadata(this.metadata)||this._failedMetadata()}},t.prototype._failedMetadata=function(){this._bitfield=new o(0,{grow:f}),this._remainingRejects-=this._numPieces,this._remainingRejects>0?this._requestPieces():this.emit("warning",new Error("Peer sent invalid metadata"))},t}},{bencode:11,bitfield:13,debug:30,events:34,inherits:41,"safe-buffer":88,"simple-sha1":92}],115:[function(e,t,n){(function(e){function n(e,t){function n(){if(!o){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),o=!0}return e.apply(this,arguments)}if(r("noDeprecation"))return e;var o=!1;return n}function r(t){try{if(!e.localStorage)return!1}catch(e){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],116:[function(e,t,n){(function(n){function r(e){var t=this;a.call(t),t._tracks=[],t._fragmentSequence=1,t._file=e,t._decoder=null,t._findMoov(0)}function o(e,t){var n=this;n._entries=e,n._countName=t||"count",n._index=0,n._offset=0,n.value=n._entries[0]}function i(){return{version:0,flags:0,entries:[]}}var s=e("binary-search"),a=e("events").EventEmitter,u=e("inherits"),c=e("mp4-stream"),f=e("mp4-box-encoding"),d=e("range-slice-stream");t.exports=r,u(r,a),r.prototype._findMoov=function(e){var t=this;t._decoder&&t._decoder.destroy(),t._decoder=c.decode();var n=t._file.createReadStream({start:e});n.pipe(t._decoder),t._decoder.once("box",function(r){"moov"===r.type?t._decoder.decode(function(e){n.destroy();try{t._processMoov(e)}catch(e){e.message="Cannot parse mp4 file: "+e.message,t.emit("error",e)}}):(n.destroy(),t._findMoov(e+r.length))})},o.prototype.inc=function(){var e=this;e._offset++,e._offset>=e._entries[e._index][e._countName]&&(e._index++,e._offset=0),e.value=e._entries[e._index]},r.prototype._processMoov=function(e){var t=this,r=e.traks;t._tracks=[],t._hasVideo=!1,t._hasAudio=!1;for(var s=0;s<r.length;s++){var a,u,c=r[s],d=c.mdia.minf.stbl,h=d.stsd.entries[0],l=c.mdia.hdlr.handlerType;if("vide"===l&&"avc1"===h.type){if(t._hasVideo)continue;t._hasVideo=!0,a="avc1",h.avcC&&(a+="."+h.avcC.mimeCodec),u='video/mp4; codecs="'+a+'"'}else{if("soun"!==l||"mp4a"!==h.type)continue;if(t._hasAudio)continue;t._hasAudio=!0,a="mp4a",h.esds&&h.esds.mimeCodec&&(a+="."+h.esds.mimeCodec),u='audio/mp4; codecs="'+a+'"'}var p=[],m=0,g=0,y=0,_=0,v=0,b=0,w=new o(d.stts.entries),E=null;d.ctts&&(E=new o(d.ctts.entries));for(var k=0;;){var x=d.stsc.entries[v],S=d.stsz.entries[m],I=w.value.duration,B=E?E.value.compositionOffset:0,A=!0;if(d.stss&&(A=d.stss.entries[k]===m+1),p.push({size:S,duration:I,dts:b,presentationOffset:B,sync:A,offset:_+d.stco.entries[y]}),++m>=d.stsz.entries.length)break;if(g++,_+=S,g>=x.samplesPerChunk){g=0,_=0,y++;var C=d.stsc.entries[v+1];C&&y+1>=C.firstChunk&&v++}b+=I,w.inc(),E&&E.inc(),A&&k++}c.mdia.mdhd.duration=0,c.tkhd.duration=0;var T=x.sampleDescriptionId,L={type:"moov",mvhd:e.mvhd,traks:[{tkhd:c.tkhd,mdia:{mdhd:c.mdia.mdhd,hdlr:c.mdia.hdlr,elng:c.mdia.elng,minf:{vmhd:c.mdia.minf.vmhd,smhd:c.mdia.minf.smhd,dinf:c.mdia.minf.dinf,stbl:{stsd:d.stsd,stts:i(),ctts:i(),stsc:i(),stsz:i(),stco:i(),stss:i()}}}}],mvex:{mehd:{fragmentDuration:e.mvhd.duration},trexs:[{trackId:c.tkhd.trackId,defaultSampleDescriptionIndex:T,defaultSampleDuration:0,defaultSampleSize:0,defaultSampleFlags:0}]}};t._tracks.push({trackId:c.tkhd.trackId,timeScale:c.mdia.mdhd.timeScale,samples:p,currSample:null,currTime:null,moov:L,mime:u})}if(0===t._tracks.length)return void t.emit("error",new Error("no playable tracks"));e.mvhd.duration=0,t._ftyp={type:"ftyp",brand:"iso5",brandVersion:0,compatibleBrands:["iso5"]};var U=f.encode(t._ftyp),R=t._tracks.map(function(e){var t=f.encode(e.moov);return{mime:e.mime,init:n.concat([U,t])}});t.emit("ready",R)},r.prototype.seek=function(e){var t=this;if(!t._tracks)throw new Error("Not ready yet; wait for 'ready' event");t._fileStream&&(t._fileStream.destroy(),t._fileStream=null);var n=-1;if(t._tracks.map(function(r,o){function i(e){s.destroyed||s.box(e.moof,function(n){if(n)return t.emit("error",n);if(!s.destroyed){r.inStream.slice(e.ranges).pipe(s.mediaData(e.length,function(e){if(e)return t.emit("error",e);if(!s.destroyed){var n=t._generateFragment(o);if(!n)return s.finalize();i(n)}}))}})}r.outStream&&r.outStream.destroy(),r.inStream&&(r.inStream.destroy(),r.inStream=null);var s=r.outStream=c.encode(),a=t._generateFragment(o,e);if(!a)return s.finalize();(-1===n||a.ranges[0].start<n)&&(n=a.ranges[0].start),i(a)}),n>=0){var r=t._fileStream=t._file.createReadStream({start:n});t._tracks.forEach(function(e){e.inStream=new d(n,{highWaterMark:1e7}),r.pipe(e.inStream)})}return t._tracks.map(function(e){return e.outStream})},r.prototype._findSampleBefore=function(e,t){var n=this,r=n._tracks[e],o=Math.floor(r.timeScale*t),i=s(r.samples,o,function(e,t){return e.dts+e.presentationOffset-t});for(-1===i?i=0:i<0&&(i=-i-2);!r.samples[i].sync;)i--;return i};r.prototype._generateFragment=function(e,t){var n,r=this,o=r._tracks[e];if((n=void 0!==t?r._findSampleBefore(e,t):o.currSample)>=o.samples.length)return null;for(var i=o.samples[n].dts,s=0,a=[],u=n;u<o.samples.length;u++){var c=o.samples[u];if(c.sync&&c.dts-i>=1*o.timeScale)break;s+=c.size;var f=a.length-1;f<0||a[f].end!==c.offset?a.push({start:c.offset,end:c.offset+c.size}):a[f].end+=c.size}return o.currSample=u,{moof:r._generateMoof(e,n,u),ranges:a,length:s}},r.prototype._generateMoof=function(e,t,n){for(var r=this,o=r._tracks[e],i=[],s=t;s<n;s++){var a=o.samples[s];i.push({sampleDuration:a.duration,sampleSize:a.size,sampleFlags:a.sync?33554432:16842752,sampleCompositionTimeOffset:a.presentationOffset})}var u={type:"moof",mfhd:{sequenceNumber:r._fragmentSequence++},trafs:[{tfhd:{flags:131072,trackId:o.trackId},tfdt:{baseMediaDecodeTime:o.samples[t].dts},trun:{ -flags:3841,dataOffset:8,entries:i}}]};return u.trafs[0].trun.dataOffset+=f.encodingLength(u),u}}).call(this,e("buffer").Buffer)},{"binary-search":12,buffer:24,events:34,inherits:41,"mp4-box-encoding":53,"mp4-stream":56,"range-slice-stream":74}],117:[function(e,t,n){function r(e,t,n){var i=this;if(!(this instanceof r))return new r(e,t,n);n=n||{},i.detailedError=null,i._elem=t,i._elemWrapper=new o(t),i._waitingFired=!1,i._trackMeta=null,i._file=e,i._tracks=null,"none"!==i._elem.preload&&i._createMuxer(),i._onError=function(e){i.detailedError=i._elemWrapper.detailedError,i.destroy()},i._onWaiting=function(){i._waitingFired=!0,i._muxer?i._tracks&&i._pump():i._createMuxer()},i._elem.addEventListener("waiting",i._onWaiting),i._elem.addEventListener("error",i._onError)}var o=e("mediasource"),i=e("pump"),s=e("./mp4-remuxer");t.exports=r,r.prototype._createMuxer=function(){var e=this;e._muxer=new s(e._file),e._muxer.on("ready",function(t){e._tracks=t.map(function(t){var n=e._elemWrapper.createWriteStream(t.mime);n.on("error",function(t){e._elemWrapper.error(t)});var r={muxed:null,mediaSource:n,initFlushed:!1,onInitFlushed:null};return n.write(t.init,function(e){r.initFlushed=!0,r.onInitFlushed&&r.onInitFlushed(e)}),r}),(e._waitingFired||"auto"===e._elem.preload)&&e._pump()}),e._muxer.on("error",function(t){e._elemWrapper.error(t)})},r.prototype._pump=function(){var e=this,t=e._muxer.seek(e._elem.currentTime,!e._tracks);e._tracks.forEach(function(n,r){var o=function(){n.muxed&&(n.muxed.destroy(),n.mediaSource=e._elemWrapper.createWriteStream(n.mediaSource),n.mediaSource.on("error",function(t){e._elemWrapper.error(t)})),n.muxed=t[r],i(n.muxed,n.mediaSource)};n.initFlushed?o():n.onInitFlushed=function(t){if(t)return void e._elemWrapper.error(t);o()}})},r.prototype.destroy=function(){var e=this;e.destroyed||(e.destroyed=!0,e._elem.removeEventListener("waiting",e._onWaiting),e._elem.removeEventListener("error",e._onError),e._tracks&&e._tracks.forEach(function(e){e.muxed.destroy()}),e._elem.src="")}},{"./mp4-remuxer":116,mediasource:49,pump:67}],118:[function(e,t,n){function r(e,t){function n(){for(var t=new Array(arguments.length),n=0;n<t.length;n++)t[n]=arguments[n];var r=e.apply(this,t),o=t[t.length-1];return"function"==typeof r&&r!==o&&Object.keys(o).forEach(function(e){r[e]=o[e]}),r}if(e&&t)return r(e)(t);if("function"!=typeof e)throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(t){n[t]=e[t]}),n}t.exports=r},{}],119:[function(e,t,n){function r(){for(var e={},t=0;t<arguments.length;t++){var n=arguments[t];for(var r in n)o.call(n,r)&&(e[r]=n[r])}return e}t.exports=r;var o=Object.prototype.hasOwnProperty},{}],120:[function(e,t,n){function r(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)o.call(n,r)&&(e[r]=n[r])}return e}t.exports=r;var o=Object.prototype.hasOwnProperty},{}],121:[function(e,t,n){t.exports=function e(t,n,r){return void 0===n?function(n,r){return e(t,n,r)}:(void 0===r&&(r="0"),t-=n.toString().length,t>0?new Array(t+(/\./.test(n)?2:1)).join(r)+n:n+"")}},{}],122:[function(e,t,n){t.exports={version:"0.98.18"}},{}],123:[function(e,t,n){(function(n,r){function o(e){function t(){i.destroyed||(i.ready=!0,i.emit("ready"))}var i=this;if(!(i instanceof o))return new o(e);h.call(i),e||(e={}),"string"==typeof e.peerId?i.peerId=e.peerId:a.isBuffer(e.peerId)?i.peerId=e.peerId.toString("hex"):i.peerId=a.from(B+b(9).toString("base64")).toString("hex"),i.peerIdBuffer=a.from(i.peerId,"hex"),"string"==typeof e.nodeId?i.nodeId=e.nodeId:a.isBuffer(e.nodeId)?i.nodeId=e.nodeId.toString("hex"):i.nodeId=b(20).toString("hex"),i.nodeIdBuffer=a.from(i.nodeId,"hex"),i._debugId=i.peerId.toString("hex").substring(0,7),i.destroyed=!1,i.listening=!1,i.torrentPort=e.torrentPort||0,i.dhtPort=e.dhtPort||0,i.tracker=void 0!==e.tracker?e.tracker:{},i.torrents=[],i.maxConns=Number(e.maxConns)||55,i._debug("new webtorrent (peerId %s, nodeId %s, port %s)",i.peerId,i.nodeId,i.torrentPort),i.tracker&&("object"!=typeof i.tracker&&(i.tracker={}),e.rtcConfig&&(console.warn("WebTorrent: opts.rtcConfig is deprecated. Use opts.tracker.rtcConfig instead"),i.tracker.rtcConfig=e.rtcConfig),e.wrtc&&(console.warn("WebTorrent: opts.wrtc is deprecated. Use opts.tracker.wrtc instead"),i.tracker.wrtc=e.wrtc),r.WRTC&&!i.tracker.wrtc&&(i.tracker.wrtc=r.WRTC)),"function"==typeof k?i._tcpPool=new k(i):n.nextTick(function(){i._onListening()}),i._downloadSpeed=w(),i._uploadSpeed=w(),!1!==e.dht&&"function"==typeof d?(i.dht=new d(l({nodeId:i.nodeId},e.dht)),i.dht.once("error",function(e){i._destroy(e)}),i.dht.once("listening",function(){var e=i.dht.address();e&&(i.dhtPort=e.port)}),i.dht.setMaxListeners(0),i.dht.listen(i.dhtPort)):i.dht=!1,i.enableWebSeeds=!1!==e.webSeeds,"function"==typeof m&&null!=e.blocklist?m(e.blocklist,{headers:{"user-agent":"WebTorrent/"+S+" (https://webtorrent.io)"}},function(e,n){if(e)return i.error("Failed to load blocklist: "+e.message);i.blocked=n,t()}):n.nextTick(t)}function i(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}function s(e){return"undefined"!=typeof FileList&&e instanceof FileList}t.exports=o;var a=e("safe-buffer").Buffer,u=e("simple-concat"),c=e("create-torrent"),f=e("debug")("webtorrent"),d=e("bittorrent-dht/client"),h=e("events").EventEmitter,l=e("xtend"),p=e("inherits"),m=e("load-ip-set"),g=e("run-parallel"),y=e("parse-torrent"),_=e("path"),v=e("simple-peer"),b=e("randombytes"),w=e("speedometer"),E=e("zero-fill"),k=e("./lib/tcp-pool"),x=e("./lib/torrent"),S=e("./package.json").version,I=S.match(/([0-9]+)/g).slice(0,2).map(function(e){return E(2,e)}).join(""),B="-WW"+I+"-";p(o,h),o.WEBRTC_SUPPORT=v.WEBRTC_SUPPORT,Object.defineProperty(o.prototype,"downloadSpeed",{get:function(){return this._downloadSpeed()}}),Object.defineProperty(o.prototype,"uploadSpeed",{get:function(){return this._uploadSpeed()}}),Object.defineProperty(o.prototype,"progress",{get:function(){var e=this.torrents.filter(function(e){return 1!==e.progress});return e.reduce(function(e,t){return e+t.downloaded},0)/(e.reduce(function(e,t){return e+(t.length||0)},0)||1)}}),Object.defineProperty(o.prototype,"ratio",{get:function(){return this.torrents.reduce(function(e,t){return e+t.uploaded},0)/(this.torrents.reduce(function(e,t){return e+t.received},0)||1)}}),o.prototype.get=function(e){var t,n,r=this,o=r.torrents.length;if(e instanceof x){for(t=0;t<o;t++)if((n=r.torrents[t])===e)return n}else{var i;try{i=y(e)}catch(e){}if(!i)return null;if(!i.infoHash)throw new Error("Invalid torrent identifier");for(t=0;t<o;t++)if(n=r.torrents[t],n.infoHash===i.infoHash)return n}return null},o.prototype.download=function(e,t,n){return console.warn("WebTorrent: client.download() is deprecated. Use client.add() instead"),this.add(e,t,n)},o.prototype.add=function(e,t,n){function r(){if(!s.destroyed)for(var e=0,t=s.torrents.length;e<t;e++){var n=s.torrents[e];if(n.infoHash===a.infoHash&&n!==a)return void a._destroy(new Error("Cannot add duplicate torrent "+a.infoHash))}}function o(){s.destroyed||("function"==typeof n&&n(a),s.emit("torrent",a))}function i(){a.removeListener("_infoHash",r),a.removeListener("ready",o),a.removeListener("close",i)}var s=this;if(s.destroyed)throw new Error("client is destroyed");if("function"==typeof t)return s.add(e,null,t);s._debug("add"),t=t?l(t):{};var a=new x(e,s,t);return s.torrents.push(a),a.once("_infoHash",r),a.once("ready",o),a.once("close",i),a},o.prototype.seed=function(e,t,n){function r(e){var t=[function(t){e.load(f,t)}];a.dht&&t.push(function(t){e.once("dhtAnnounce",t)}),g(t,function(t){if(!a.destroyed)return t?e._destroy(t):void o(e)})}function o(e){a._debug("on seed"),"function"==typeof n&&n(e),e.emit("seed"),a.emit("seed",e)}var a=this;if(a.destroyed)throw new Error("client is destroyed");if("function"==typeof t)return a.seed(e,null,t);a._debug("seed"),t=t?l(t):{},"string"==typeof e&&(t.path=_.dirname(e)),t.createdBy||(t.createdBy="WebTorrent/"+I);var f,d=a.add(null,t,r);return s(e)&&(e=Array.prototype.slice.call(e)),Array.isArray(e)||(e=[e]),g(e.map(function(e){return function(t){i(e)?u(e,t):t(null,e)}}),function(e,n){if(!a.destroyed)return e?d._destroy(e):void c.parseInput(n,t,function(e,r){if(!a.destroyed){if(e)return d._destroy(e);f=r.map(function(e){return e.getStream}),c(n,t,function(e,t){if(!a.destroyed){if(e)return d._destroy(e);var n=a.get(t);n?d._destroy(new Error("Cannot add duplicate torrent "+n.infoHash)):d._onTorrentId(t)}})}})}),d},o.prototype.remove=function(e,t){if(this._debug("remove"),!this.get(e))throw new Error("No torrent with id "+e);this._remove(e,t)},o.prototype._remove=function(e,t){var n=this.get(e);n&&(this.torrents.splice(this.torrents.indexOf(n),1),n.destroy(t))},o.prototype.address=function(){return this.listening?this._tcpPool?this._tcpPool.server.address():{address:"0.0.0.0",family:"IPv4",port:0}:null},o.prototype.destroy=function(e){if(this.destroyed)throw new Error("client already destroyed");this._destroy(null,e)},o.prototype._destroy=function(e,t){var n=this;n._debug("client destroy"),n.destroyed=!0;var r=n.torrents.map(function(e){return function(t){e.destroy(t)}});n._tcpPool&&r.push(function(e){n._tcpPool.destroy(e)}),n.dht&&r.push(function(e){n.dht.destroy(e)}),g(r,t),e&&n.emit("error",e),n.torrents=[],n._tcpPool=null,n.dht=null},o.prototype._onListening=function(){if(this._debug("listening"),this.listening=!0,this._tcpPool){var e=this._tcpPool.server.address();e&&(this.torrentPort=e.port)}this.emit("listening")},o.prototype._debug=function(){var e=[].slice.call(arguments);e[0]="["+this._debugId+"] "+e[0],f.apply(null,e)}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/tcp-pool":21,"./lib/torrent":5,"./package.json":122,_process:66,"bittorrent-dht/client":21,"create-torrent":29,debug:30,events:34,inherits:41,"load-ip-set":21,"parse-torrent":62,path:63,randombytes:73,"run-parallel":86,"safe-buffer":88,"simple-concat":89,"simple-peer":91,speedometer:94,xtend:119,"zero-fill":121}]},{},[123])(123)}); diff --git a/plugin/document/kod/plugins/DPlayer/static/images/icon.png b/plugin/document/kod/plugins/DPlayer/static/images/icon.png deleted file mode 100644 index 99581a2b8..000000000 Binary files a/plugin/document/kod/plugins/DPlayer/static/images/icon.png and /dev/null differ diff --git a/plugin/document/kod/plugins/DPlayer/static/main.js b/plugin/document/kod/plugins/DPlayer/static/main.js deleted file mode 100644 index a61e7dc37..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/main.js +++ /dev/null @@ -1,88 +0,0 @@ -kodReady.push(function(){ - kodApp.add({ - name:"DPlayer", - title:LNG['Plugin.default.DPlayer'], - ext:"{{config.fileExt}}", - sort:"{{config.fileSort}}", - icon:'{{pluginHost}}static/images/icon.png', - callback:function(path,ext){ - var music = ['mp3','wav','aac','m4a','oga','ogg','webma']; - if(isWap() && G.ACT != 'file'){ //移动端,非视频文件分享页面用跳转方式打开 - return window.open(core.path2url(path)); - } - var vedio = { - url:core.path2url(path), - name:urlDecode(core.pathThis(path)), - path:path, - ext:ext - }; - var appStatic = "{{pluginHost}}static/"; - var top = ShareData.frameTop(); - top.require.async(appStatic+'page.js',function(app){ - app.play(appStatic,vedio); - }); - } - }); - window.DplayerSubtitle = parseInt("{{config.subtitle}}"); - - //临时兼容4.38及以前版本;APP预览txt校验权限失败问题; - if (G.ACT + '.' + G.ST == 'view.api' && !G.user){ - G.sharePage = undefined; - $.addStyle('.ace_editor{font-size:13px !important;}'); - } - - /** - * 临时修复文件夹右键新窗口打开异常问题;<=4.32 - */ - var checkAuth = function(path){ - if (path == undefined) return false; - if (path.indexOf('http') === 0 ) return true; - if (!G.shareInfo && - !core.pathReadable(path)){ - Tips.tips(LNG.no_permission_read_all,false); - core.playSound("error"); - return false; - } - return true; - } - kodApp.add({ - name:"browserOpen", - title:LNG.open_ie, - sort:-100, - icon:"x-item-file x-html", - callback:function(path,ext){ - var url = core.path2url(path); - console.log(url,path,ext); - if( path.substr(-1) == '/' && url.search("explorer/fileProxy&") !=-1 ){ - return Tips.tips(LNG.path_can_not_action,false); - } - if(!checkAuth(path)) return; - if(isWap()){ - window.location.href = url; - }else{ - window.open(url); - } - } - }); - core.path2url=function(beforePath,testHttp){ - if (beforePath.substr(0,4) == 'http') return beforePath; - if(testHttp == undefined) testHttp = true;//尝试转换为http真实路径;只允许root用户 - var url,path = core.pathClear(beforePath); - - //user group - if (G.isRoot && testHttp && - path.substring(0,G.webRoot.length) == G.webRoot){//服务器路径下 - if (path.substring(0,G.basicPath.length) == G.basicPath){//设置了服务器到子目录 - url = G.appRoot + core.pathUrlEncode(path.replace(G.basicPath,'')); - }else{ - url = G.webHost + core.pathUrlEncode(path.replace(G.webRoot,'')); - } - }else{ - url = G.appHost+'explorer/fileProxy&accessToken='+G.accessToken+'&path=' +urlEncode(path); - if (typeof(G.sharePage) != 'undefined') { - url = G.appHost+'share/fileProxy&user='+G.user+'&sid='+G.sid+'&path=' +urlEncode(path); - } - } - return url; - } -}); diff --git a/plugin/document/kod/plugins/DPlayer/static/page.js b/plugin/document/kod/plugins/DPlayer/static/page.js deleted file mode 100644 index ed93c29d3..000000000 --- a/plugin/document/kod/plugins/DPlayer/static/page.js +++ /dev/null @@ -1,81 +0,0 @@ -define(function(require, exports) { - var playStart = function(vedioInfo){ - var $target = createDialog(vedioInfo.name); - var typeArr = { - 'f4v' : 'flv', - 'f4a' : 'flv', - 'm4a' : 'mp3', - 'aac' : 'mp3', - 'ogg' : 'oga', - }; - var type = typeArr[vedioInfo.ext] || vedioInfo.ext; - var playerOption = { - container:$target.get(0), - preload: 'none', - theme:'#f60', - loop: false, - autoplay:true, - lang: 'zh-cn', - //flv仅支持 H.264+AAC编码 https://github.com/Bilibili/flv.js/issues/47 - video: { - url:vedioInfo.url, - type:type - }, - // danmaku: { - // id:md5(vedioInfo.url), - // api:'https://api.prprpr.me/dplayer/' - // }, - contextmenu: [ - { - text: 'kodcloud官网', - link: 'https://kodcloud.com/' - } - ] - }; - if(window.DplayerSubtitle){ - // 默认加载同名文件字幕;暂时只支持vtt格式 http://dplayer.js.org/#/home?id=options - playerOption.subtitle = { - url:core.path2url(vedioInfo.path+'.vtt') - } - } - new DPlayer(playerOption); - } - var createDialog = function(title,ext){ - var size = {width:'70%',height:'60%'}; - if(ext == 'mp3'){ - size = {width:'320px',height:'420px'}; - } - var dialog = $.dialog({ - //id:'movie-dialog', - simple:true, - ico:core.icon('mp4'), - title:title, - width:size.width, - height:size.height, - content:'<div class="Dplayer"></div>', - resize:true, - padding:0, - fixed:true, - close:function(){ - } - }); - dialog.DOM.wrap.addClass('dplayer-dialog'); - return dialog.DOM.wrap.find(".Dplayer"); - } - - - var playReady = function(appStatic,vedioInfo){ - require.async([ - appStatic+'DPlayer/lib/flv.min.js', - appStatic+'DPlayer/lib/hls.min.js', - appStatic+'DPlayer/lib/dash.all.min.js', - appStatic+'DPlayer/DPlayer.min.css', - appStatic+'DPlayer/DPlayer.min.js', - ],function(a){ - playStart(vedioInfo); - }); - } - return { - play:playReady - }; -}); diff --git a/plugin/document/kod/plugins/VLCPlayer/app.php b/plugin/document/kod/plugins/VLCPlayer/app.php deleted file mode 100644 index 8a30b86a2..000000000 --- a/plugin/document/kod/plugins/VLCPlayer/app.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -class VLCPlayerPlugin extends PluginBase{ - function __construct(){ - parent::__construct(); - } - public function regiest(){ - $this->hookRegiest(array( - 'user.commonJs.insert' => 'VLCPlayerPlugin.echoJs', - )); - } - public function echoJs($st,$act){ - if($this->isFileExtence($st,$act)){ - $this->echoFile('static/main.js'); - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/plugins/VLCPlayer/package.json b/plugin/document/kod/plugins/VLCPlayer/package.json deleted file mode 100644 index 6dc006fd9..000000000 --- a/plugin/document/kod/plugins/VLCPlayer/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id":"VLCPlayer", - "name":"VLC Player", - "title":"VLC 播放器", - "version":"1.33", - "source":{ - "icon":"{{pluginHost}}static/images/icon.png" - }, - "category":"media,file", - "description":"VLCPlayer mediafile player;", - "keywords":"", - "auther":{ - "copyright":"kodcloud.", - "homePage":"http://www.kodcloud.com", - }, - "configItem":{ - "pluginAuth":{ - "type":"userSelect", - "value":"all:1", - "display":"{{LNG.Plugin.config.auth}}", - "desc":"{{LNG.Plugin.config.authDesc}}", - "require":1 - }, - "fileExt":{ - "type":"tags", - "display":"{{LNG.Plugin.Config.fileExt}}", - "desc":"{{LNG.Plugin.Config.fileExtDesc}}", - "value":"aac,arc,arj,asf,asx,avi,f4v,flv, m2ts,m4v,mp2,mov,mp3,mp4,mp4v,mpe,mpg,mts,mkv,ogv,3gp,mpeg,wav,wma,wmv,rm,rmvb,vob,webm,webmv, mp3,wav,wma,m4a,aac,oga,ogg,webma", - }, - "fileSort":{ - "type":"number", - "display":"{{LNG.Plugin.Config.fileSort}}", - "desc":"{{LNG.Plugin.Config.fileSortDesc}}", - "value":1, - } - } -} diff --git a/plugin/document/kod/plugins/VLCPlayer/static/images/icon.png b/plugin/document/kod/plugins/VLCPlayer/static/images/icon.png deleted file mode 100644 index a82b84912..000000000 Binary files a/plugin/document/kod/plugins/VLCPlayer/static/images/icon.png and /dev/null differ diff --git a/plugin/document/kod/plugins/VLCPlayer/static/main.js b/plugin/document/kod/plugins/VLCPlayer/static/main.js deleted file mode 100644 index 873f7a2f9..000000000 --- a/plugin/document/kod/plugins/VLCPlayer/static/main.js +++ /dev/null @@ -1,84 +0,0 @@ -kodReady.push(function(){ - kodApp.add({ - name:"VLCPlayer", - title:LNG['Plugin.default.VLCPlayer'], - ext:"{{config.fileExt}}", - sort:"{{config.fileSort}}", - icon:'{{pluginHost}}static/images/icon.png', - callback:function(path,ext){ - if(isWap()){//ios不支持文件下载 - window.open(core.path2url(path)); - return; - } - var dialog = $.dialog({ - ico:core.icon(ext), - title:urlDecode(core.pathThis(path)), - animate:false, - width:750, - height:450, - content:makePlayer(core.path2url(path)), - resize:true, - padding:0, - fixed:true - }); - $('.VLCPlayer-dialog embed').css('background','#000'); - - setTimeout(function() { - var vlc = getVLC("vlc"); - if(!vlc || !vlc.playlist){ - dialog.DOM.wrap.find('.error-tips').removeClass('hidden'); - } - dialog._clickMax(); - dialog._clickMax(); - },500); - } - }); - - - function getVLC(name){ - if (window.document[name]){ - return window.document[name]; - } - if ($.isIE()) { - if (document.embeds && document.embeds[name]){ - return document.embeds[name]; - } - }else{ - return document.getElementById(name); - } - } - var makePlayer = function(src){ - if(navigator.platform.toLowerCase().indexOf('win') == -1 ){ - var msg = '<div class="row can-select" style="position:absolute;top:40%;width:100%;">\ - <div class="col-md-8 col-md-offset-2">\ - <div class="alert alert-warning" role="alert">\ - <h5>抱歉,该插件仅支持windows系统</h5> </div> </div></div>'; - return msg; - } - - var player = ""; - var width = '100%',height = '100%'; - var download = "http://download.videolan.org/pub/videolan/vlc/2.2.6/win32/vlc-2.2.6-win32.exe"; - - player = '<object width="'+width+'" height="'+height+'" data="'+src+'" id="VLCPlayer" '; - player += 'classid="clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616">'; - player += '<param name="codebase" value="http://go.divx.com/plugin/DivXBrowserPlugin.cab">'; - player += '<param value="true" name="autoPlay">'; - player += '<param value="'+src+'" name="src">'; - player += '<embed width="'+width+'" height="'+height+'" version="VideoLAN.VLCPlugin.2" pluginspage="'+download+'" type="application/x-vlc-plugin" name="vlc" src="' + src + '">'; - player += '</object>'; - - player += '<div class="row can-select error-tips hidden" style="position:absolute;top:40%;width:100%;">\ - <div class="col-md-8 col-md-offset-2"><div class="alert alert-warning">\ - <h4> VLC播放器尚未安装<br/><br/></h4>\ - <p>请先安装 <a href="'+download+'">VLC播放器</a> 安装后需重新启动浏览。<br/>\ - 或将文件<a href="'+src+'">下载</a>到本地用电脑播放器播放。<br/><br/>\ - 注: 该插件需要activex支持,只支持windows,不支持firefox和chrome50+(屏蔽了activex功能),建议使用360极速、QQ浏览器、UC浏览器、猎豹等\ - </p>\ - </div>\ - </div></div>'; - return player; - } -}); - - diff --git a/plugin/document/kod/plugins/adminer/adminer/adminer.css b/plugin/document/kod/plugins/adminer/adminer/adminer.css deleted file mode 100644 index cd2d43a9c..000000000 --- a/plugin/document/kod/plugins/adminer/adminer/adminer.css +++ /dev/null @@ -1,737 +0,0 @@ -/* -FLAT UI Flavored Adminer Theme by M. Mahbubur Rahman (mahbub@mahbubblog.com) -Screenshot : http://d.pr/i/cznH -Based on work by : Lukáš Brandejs -https://raw.github.com/vrana/adminer/master/designs/ng9/adminer.css -*/ -/* - * add at last; - * https://github.com/vrana/adminer - * - * adminer.php :allow in iframe( if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");} ) - */ -::-webkit-scrollbar-track-piece{ - background-color: rgba(180,180,180,0.06); - border-radius:3px; -} -::-webkit-scrollbar{width:10px;height:10px;} -::-webkit-scrollbar-thumb{background-color:rgba(180,180,180,0.2);;border-radius: 12px; - background-clip:padding-box;border:1px solid rgba(180,180,180,0.4);min-height: 28px;} -::-webkit-scrollbar-thumb:hover{background-color:rgba(180,180,180,0.4);border:1px solid rgba(180,180,180,0.7);} - - -* {margin:0px;padding:0px;} -body{ - font: 13px/1.7 'Source Sans Pro',"Helvetica Neue", "Microsoft Yahei", "微软雅黑", STXihei, "WenQuanYi Micro Hei","Proxima Nova Rg","Droid Sans",Arial,Helvetica, sans-serif; - color:#555; - -} - - - -body{ - background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAMAAAD8CC+4AAAB11BMVEX3+Pj39/f2+Pj1+Pj29/b29vf29vb29/f29/j19/f19/b19/X09/bz9/f09/f19ff19fb19fXz9vX19vX19vf09vf09vb09vX09vTz9vb19vb09fX09fT09Pb09PX09PT09fb09ff19PTz9fbz9fXz9fTz9fPy9fXy9fTz9PPz8/Xz8/Tz8/Pz9Pbz9PTz9PXy9PXy9PTy9PPw9PPw9PTy8/Py8/Ly8vTy8vPy8vLy8/Tv8/Pv8/Ly8/Xw8/Tw8/Pw8/Lw8vTw8vPw8vLv8vPv8vLv8vDu8/Pu8vDu8vLw8vDw8PLw8PDw8PPv8PPv8PDv8PLv8O/v7/Lu8O/u7/Lt8PDt8O/v7/Dv7+/u8PDu8PLu7/Du7+/u7+7u7vDu7u/u7u7s7+/t7/Dt7+/t7+7s7+7t7u/t7u7t7u3t7e/t7e7t7e3u7fDt7vDs7u/s7u7s7u3r7u7r7u3s7ezs7O7s7O3s7Ozs7e/s7e3s7e7r7e/r7e7r7e3r7ezq7ezq7e3r7Ozr7Ovr6+3r6+zr6+vr7O3r7O7q7O3q7Ozq7Ovp7Ozp7Ovq6uzq6uvq6urq6+3q6+vq6+zp6+zp6+vp6+rn6+vp6urp6erp6uzn6uvn6urp6uvn6erAHzXDAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3gwCEQA7J/bSFgAAIABJREFUeNrUvY1zHddxJ3o3SsxFaou2nhK4SIgiqwIXFZkPMCRdUwRsjojLYZErSDOhLJGje8uWNBLvOq4YcirrhV6wDmrfMsGu86pEaZ9rd/3+2J3z0ed09+nzMRegs69tkfgigDt9Tn/++teT6XTadRUR9q4k+J90b+yAdMGXdZ36sP/ybteI/ht/6U6JdOz9dyKyDzIfZH9/oWR3d3j75iDqY/pHHir5Bks/yOnp8WoyD0R99Iksp6ddzyT8omfP5H8M3/9p2/ofG/tBDwc5tPLwof7YZJqSpjEPt9Wi32Ra3dmZV8Uinab1sYr3x2t9/aNy2W3b5SCtl6OoHDoZrfknz0FOz/fb/fazyXR9fXiGfW+vRvB0h6cz3Emrcf24/XXDV3p4V523vc3NzVoJ+5z/evb9N7000yn5VFOgfH9RZrPDGRN1we8SOTzcX5oXekrl+AySvGlReTZI6T+MXfknT7788suSH4YMyjffVJNqY6MadVeHf4dVmjL8OVkv/9JA2w8eXLhwYVBsb424MuP7c2fXe2Tf1afU+/Cy71jLex7SaTnkgkyqF/EWU4dwzjbC+QEj6s3f/OY3g9L1018XrbvzxeCJd5umwfevWkF2zlPwA9tnevby5ImyPebtZSBf5VUbKnAIALruSyWSevMyLxZsTZTejPaInVFHr9BTKNmZgG3tuuuDRO9pJ36mU/83Nj8X+DlnEZyVMvUGZ+3C1iDtSDk8bI1v/2oQpsaRXjyhp2dP/jeWbw7/fPLngwyX+iI80I8+Atc96v6iL+9rIq9K36hXf1wC37u+jt/dHP5vA4PaHMjhL/0ZHL9vaEmo1+hY3/xdGtN9IckKpn2w4V9yaVv/9nna6ITtNtYgsA/MVCD5Nyp6X1/XD359XbqbJXZ8+NIWX8pNGk9t1oJst22xEQdrpNWO5Vvq2xtHvdsVyvn4chNDCVo3mlfCPyh+6ZmOw5fSj4idDfer7+xM/BNcW6vOKp1NzBOHpXPxAZOmAc1ekr+5vv6bTHR8NpyhvjcRnf6jevJE++/P3n1XfRxSk+FktAk3+/UgpS65LD5HD/301D954TZqUd+4tV/wPDK/U/O73749uW1k3Up9XuI13p35LAVh/mUnWtH2DuvUUpTlUv9OxiagRO2TT05tEjwyQ4O/T5/8/0ZcWqpverOlZU3Zefd05yY25mZ+R8rjhz/vj3b/EF/bG+tPy5YXbuJrYwlm6172P/10H7IxyNbU1Vcv037D5btKhiO+f/jf/tvfW3Hh25elspovJkGfSZpG5mjoV2DOxDkX5UrKg/fvfnfy3UD4nd00ulqc9brq4G0uWe1Bk7F/ZE0+M+qzGdz02bE6PIv9fcl979K7b9RMw/biVNxJ/jBEAipn481H9Vn4w1gK8nLqtbXJ2lSHckbM2/v7UsZlS7HD/1prBGwMF3XhKKJf7BPZ3HRlXUnGZHQqJR/+u3PHq8Um61WlXjAk7m+ZCO4kKv1pKCj4cxUOrtl8beR0NdW6g9mqu5xOFckn/tMgzsao7/QVluECTbSq15Hi19dXCuF2o2JOS6JOoyo+DY/QwMybvA2yt4OD4ZabbG0DnEC7n5H+rqrHPsVSVmy7c2cRl4QRleO08yq5+YpqUUz5jMpyh0TvTkwtriMXlkZj3auvvmrv6vBCrG93Tp65fLjUupan3tk9l/KcVf3G8Px10c2Iq7+6Ypy57aPLq6YXSFK9s+hu8APnkxKExqQoIvGvbLg6E9LwWEf12Llzv5fEELyLxebdG2/oIO3996+7uEDM7eEgxDPzwQJcp0ICPS06bjMSL9X8dlSNVB8XZ6P0t/4bLP8CsbdQDPBv+Yp/Vvn/76fDPZlsCDLkSL763tGLK4XvSl7Flbf5XD2yqLPWN2e7xkW3IVZb7aJvqO+l2uQLVah58kRK2/6jl2w+pvrJqNGA5csVxTraedLap77Bw1TdPgjQcY9eCFOGiz3xIXLgVU0VFcfxtt/StijLGlW6AS9/jj2Xc6zBmRc0uAMTd36uxWT3Q+YXSqhEIbEKM6xoeU7OChKNGB0m9gnBkap5jZVSOoTsNIBXojEoIXbB3m8RKUNV/AaSYh26eoyNKNdz9/1eVA5de2X5X3Ly2Wefud9bFasePXrkz4x9o4KQ+CFU3R8+fJg0qW0b/cT5uvZEZk41368N6dpkfeaTX1P2UH9fvOghFK0LxsCS25ua6MnMqSvQz+w2FfhAt8r1voxELsHtq/hNOO9w4vkd30b/Wr29XatQ4fCBEqUKX9EbI8/DvRefDhEesqF9uuqIbG4JsramNOdj2HRRlcRsYSPWvz/HX75Zh+V0LXI1dt0aIRKBfDqIbryoMpzCUQyZ+3J5+7ayfTllK0Fe+623vC9jHsK9GQVZOeCEu/3/klVXk58p+eYb6CQqFOAmjt5dcXNqjPxFe9l1M3KnFzPzsU5daN9FW3ijkRQ6P3NJln0jg4jSAeX2tjZnOnJTBkj/c2QzlsvhijudP78bzHSmfjgBUPz0DGU4J68rmThfvrmZiudWEXOxIxUTyAXZVY7WYuv6UkyG1Hy4X7aSchMXUNKZGRxpA5zc9R0b1rk5hG7N8Odwo0kob/Tho7hkEO5ANn+A7kpEZpssT988f72L50CQx648IFzzTv8Si+l0KyIBPEbl2n3/T3HpB9Nlqi/qjmstourhbnFz3tVtDGzpGP6KY5/kwg6Csj0vrZubPrzGixcnFy/qZ33xYlWtrVGXDnG8apbclkSHenW9kpWP91cEg88N+oUL6qPg1DXMleDen1AsnOmxWGy7Ccq2deC2vf3OCBn+5aiToMN8sSM7n+scepQWtUERk3HB3fz2t/oFh9ZNK3QCidq6yZLUAdgMWlu2RjMa7iqW8MqddVP4dQrEbnqqt+fH9rrb8+3qEyRq2zY6d8Z8txVb8UiFJ+NL8P9ifXNRTDDbrambPdmKmPRIHaSqnuRHGaKtD5vNxRowTC5d4jDdy9b4DLccErbhg5fffVe/XITQYuGL1X9/k8ncVNgD8A+O2sChmwymr4uu+d85+d9E5/YJGD1Cw+WixkspxJR0Av614NuH9+/e/fBDWnlpTHreshJ7HgDXaHOdiOc24mL0jFBTh+Hrff/99+lldu/t7t67d085d20DkmBkpll7QJ4PVJ0C2zCiKi3Oh8Vi17DLdnGnOJrLQSWha4oNxZtOuu6NphlRovO1GH3jtQwfflFLtuwqWR2wz4CVl6rtGfE/srjFLl3N8n/xrPy2yxnb9wdpUJ5uLakynhtw53SU59rsBuLeCDqJYqq6M0UBXl4kEtx7ogoObk722udG3frOv6aFe/NigO25mOaC6YenT3ndr7x/eE3L5FpCtF/FQjvqtsXG6yvsBLDqXMEBWIysyV7Y/uyz/d52VknY9hMlGMrhjbsW+SAAvM52WvRfxQdAp10/RfL0eftwGdwuFx91lX1tQvM0k6ut+Qe6vr5e2OsK6mT72QwfoDG0x0og8zp3CFwN9+qfanGNsUFUkqZtuPcob3722S4qFWEE14KZ/RLtut9bQW1XrdJly/Umex/jMVKR3LaRif1726VuTKa+7Yaw5kRSMGjUcS/tp3YoePOaL6keBUAIr84nM0Es+kJCWNU2cLfhu3/P/EVK80dHJJRgYZjQfC3unJ9Ffq8kyNKVLqeTqYQ2Pe/q3A9+kLzs+r7j702j9wtXtZgvFOP3ypwqE7kOd94YbzzF+CTq1U0ot3wPBIfnakTr8JB118SkTXk1h3CO+HhtiZ/OEyONT1OAiKwEUXtg3u1FnvhMeH09LHDCfZ/RoZIRQjuu8ziFwUa+z6J/pQsXLuDf0HgF10HVKuy1kdbROPXnxLcPb4txXUQqeJRh0ham6enJs7kbHD6v8WSWjrtyc1TpQ1zuW23RG267cNosRmvqPmjrAC4XkVw8d6kkQffy0Ue6uwncA/TQddvbEVy9ZNhVQ3Hw0ouIb7cW3nbYrVOncr5mOpA28BlOqWLL1+v8HXvDJ8iLT30KbEMfgK+I1ZBAtrF0RaH6+nrToFDrzRAbTU167AhYjUwXC6RKm3r7ApxpmUclkY4rLgbk27XSZ17NwdGIqKtNIWYOVx2kk2pvIrTfdlLWJltjBEFRIVx3Wupy44xsDKKLjDE2zWZhJc50C7Tcvt3tQiKmKIV2d39qAzJzF1tt6U0zDf2iip3EZXCyxp0n1/GbUTmejOtr/wUYXDOyCJdDwUpzsCPE3HQzwVRZJooKxe2u0G0mIKqYvVd+M/TXGvxoVN2Vsw2h4m/T2J8uKz12DIZHIljqfIi5K049Hh4qve3ZLN1l7DY/08GdVXB3BuHOHjt6UU5Fm17KoPFVDxd2AsOL0+kapGzg2IMQTgm6966O2jQjSinmAvHpCpncCvosoujSLHxOXXQTiWlDjk+WGXFcLBLxuynHWsUaveJBV3eDbQ7nrrOyFUxm6KI/KwjARrJIIAg0Zh86LRFX75hsriz198Q6PErNwWYLzVB9wfTRsfUYc8vTlTcVutOsTSvcOvXhOw6hRPfWWwY8pcqryWGnnhJP3XVI5/r4uA4TsiEfd3ApXq/r06jJFbstYXQ/aM4V+uz3fha53sK934dC3GS4r2t5Z762hrSdIJ4DZLvBIKe6MRp6N26sgZp5Flm6RMz8CqpnHtRdFrPtsMkGZ/MDJIUVOajF9XUvK/0PAX40woM9ydhbD97oLtvql72rnpesm9Za9eKLFemvDfItKzP7MdVu29gYzPPjx3w42txozSmVKSd4+1wlVT1E8XtatPnXFt534Y9DGJV2vrjD/pDF8z8XJWYAlNcH138K1BKl4jJvB4wcMnAdw62tjQrnbcHtB/NRKh1u2OtWOimPs1FcyW8Al/3Ro+k+KcA5yIRhEcz22mLia3BVzcDvEOXVGiNfGrnlS/BzmTUoqs2ybss9YJlZm6ylrfqaZHAvKo9ujor5wP37QEWhmBtpu0Qq3YjQt4ZEezn7HmTq2k6b2N+MqBeIGYtQSlfarHkwDiFL7+Gw9Gnbj+uDUHVHDx6U6lwgG3xoiVvT04shm0ix+KmWFQM5dji6wqb5XAgD1ta64BwIPXQqQEWhvoHL5aq58tTbpvaKC688DXfITt1MV58fnrueZAEtGu0S+FQ1wt9nqrS0M6NL8pygLleYWYHg1N+iSTR+ujiIvazrgchNmHCoIcU8GEFGecTrhQvKYZujwcP2CGZKCVzjn4mJuYZEIozza6/JlfZ4Bl5FvT4q0+AmvKqFtoVzayK1RIxGcpx4fZ0hZUP1FC3CoGI7sjtjuUmU6iK6taaFpewqnLutKWD1bNzc1vs08M1iYfyg2ntctnI31vZOz1E8Waus9LO1zdNZulf6DJM2DW+mu9i8yT1bRbaJ60ccIyuWDRIyKP6118wtpWOKgjg/PUaJPa7FureF6ux5SJw35ySldVsUKbzpJYBWdUGjHdWiFQJFwKicff/s3XfftQmYj8xRe/XHP9b190e63Q5f8ZkRFL059dXRLnpVLZd7eyEO3tqG0CmYEvrf/V0HtfQzJ+eKBa/cp6NOhemnk5q7lLbJzF6Ri9YHquz5dKtWgztNizffXKVOAwmG/R3nvgZnIa77NjTfxopE8gQTwzO1jZIqH7yRQO5c6jHPWEdXgsr4wvtXO9lATsjU4Omu7Uj1HJSn6ZpmdNx4zA3fGCXmwGmyGwucmZeEEPos4IcHxnjPdNV8nV0aXEYQG+i8Ek2QtP7cqnbfGD48ymP9z//MDT/huBaV7vz5xmhBjtm8qcJj1R63IR7d1iLF8PAdzLmJFw5USH8hEubRW+wWd6jePpmwF/q/q+Zeq6drbtYxGptLn9P4qdOVZIFAkBOOgZwicx8p3FhoPI79QA+4Vb2o8lPoEaFxOZ1yUOmbEa76R4M4Pz5o2zwoA5CYa4JBJ8PbBrkFNt3fxRpwMYfoZo5V+dEDIuyzf/u3Z6R3XUFqoNhEgdyZSvDmhirw4l1JRvL9hlWBddRf9d1W2nIdPuZ6OMa+qC8D1Psu9Fh2SclwxqIwX2FzhTbUSCMFWFunY0gKG69/8sknNPrvoVaLQLsYRxOrw5UxDWQa6nrOCaOaHAQ6A5GjKpY9ugEzJF23Lq/GHXsEKzPxhRms5fALmyYJnxjStt3dHg017BLWKNYs9zqEPH10ul5VR0cVNiH188jTovI/kfq/h2SC36EEy6lcvYkEcgasXI+ae3PX28DkLpQ3WQKVY+AVdHmHjy4WYZVAqx2hG2tVPZcGGnqSg+t/UWrvtcajjZingI11m3XIYMzTpxLuyaC8VzDv2mfLFbn0ZoWUccdOXYNghawcnQATVq2T2sz18aJcu4v0fWSmy6ysxm+hkiScKwjSkIKr3kFhfQcGYyhq14VxgaPp1g45/ZDU46y+YpGduKdHmLdeeauU19ZBovZulI0C5Yi/RSm+ihOuitW38hDOhY/+Bl+NCvQCnQ2wxZj53LZS6PjacBA8DXzNamUE7AoFB12EsbY5uN5iiIe/8YgByPTM4ih940TNTXHapmg1pvaeabkIbfaww1bZhgcZXgvWsvg00HvwGTMrJKhH9r03Edv29uFhCHccMjcNgraQ2WLpNWwi8QXG29sWrLroCXtPjknpkq6Ts4lWPzF6gHt3EfHU0Yq5e33rFgfKTtnMG7nVBBeP2ATNMBvjNaAFPXk8Ecdv6dkHVHP52c8ixRircv12upQeIiZUjQYiMhksI30jA7xD321sSHcOuyKNHm9pHSqioYsXx/I1Jjz7BsPMvf7669E2SFDFzfXudX/VJmvTxMxDdychrkzX20VPtWN+jURwVc4YIJMeu+aqTnV0xIt2VfWhkQRG8lyWS30wPLB1VntHtxf4hvDNJrSx5JK7+kvvXLJXuGed6OjYelAdi82mkrLfZu4rfMqWk7m379X5F+NGy3EcDitvgBxfmiGXE0gJ4JG+8EJZwC63WhgTe+7ZX7o0u3Tp0kiUjm//kHKseXNRMkaJK3FK7b0FQhXh3LCHTsEna5r7n5zoqlAvW4P4hOrp+Ug9POpZCkSRL77z8QWXAEWAk9yqZwfWpVmWXPJuh1lbVIKL3fObN2+mxo7jFASDFiPVVWvdV77slFhykKdJ+f8yo4pcNhpsnydB9rWekIoDpVSdRuVOMIyUEN7j2OVtmGg3J4qfCT7+thacpQEsjo0lv2+kwuGWD7N8c0yV44T0Dk05LWP4GhYGmmiOfACX/2oMkqSlGGrTM1iJT4z8/ldUqBonik3oIvTRp42sc0s5RE7ENAjosRi85Ouvj+iybBSOJSdu/r17QFoNm9+GdD2EP0dwZx8w4bmWj+dN/RzNKdsAjRwd+0WEwaLYtJw5dKPe/yKJ1yewHnWVknsIlZIqKFE26P+jSQwwcSDcjRuu2TJFrReWrQe+RLTvy+VdYdS0SqrEo6FJWS6o09fLPRf1F+IpOXjOHsKvvjLfJtj/PB74bnn8rdqHlE0CUKzVUnbmQ/mpL8wPysGqfMnf86Rj53lbuqpeLo7a16KeLRmoAdI4ORrhx2vdJh08Zh0P6ollPxa+j8JgLL3aj9F3OWJu4ek4kdaBRzgDCyDQO5nanK7KpqdNQ3curczN9/Zikxj4jNy6hfv5BDQzd/Nq3a7pr6tbeiRgXDOlU+zYR6Alx/Xj9VU/j9ycKf2FF1BFLgjfzCdKQZFdd8NLE2imC/UuWlwouM4YuHmGP1KKmYpIHw6uBVLFYE2V+3gl9OMqALifPWk/t4KMCHnHKduMxW3rceYZX7dRO5gHezooe1oi8xDgTopwTVFqxniGuASTioc6uIM5WvX2fRBScB2Zo68s8rW3sxVmYVRR5o1T+DGlmVTDhVx78jFzXRUb/FqJujHcRYRQ+J8Dak00zms/61AClAuDufl8T4Azp6usFSRbz+UUIOMwNXifTxDi9Vwu+qxQ6ShYb6QUziorOsmAVO3rstevD2r3s4kNmH/OMVE2MRtJ4TJVQIebWOJWao9Q7rVcbidxm7Hj5zT4UgVAH5hfWWWYRVK6Xtjgq+2uOIMxjjOs16B5TvnmXO0V12ckZiKgfNsMYKnsBzCKmSpCSgAASjPpZubeBikrvp//fV3dnauw8xZgPiy8b/mVQTir4syvfvUrKSsbkbzx61I+y4a78DxHh6vMrjYwQEVtfx7iPisO5reQI9F23E6mPnp08yaaeCmkmFjSPV2VSBwma1/vcfNY+geqmxZXuEZnhpZSDyicUxjX8Ws7cQpI0QZGs6oHD9Re3qAUl+QwQE2aS5eGUFCw0htnKc15K/kx8uWpsB0S8sJADJXY4gGgcgHGhyxZxV4WgOaqfEg/yOL1sHnuZ9qowj69Xgn3bJroM4aikAfN9MWfzy1n5Hy+0ih8Lrh/fWFWQu8uFhrlG2Kj3IQa/nhtKq99jDdob2/PpW69AVJ1wvBbbb42039Xv+hjI2L96mNd6tBF9FVceM66b022+DHIRXacHywTvTcN6J29vlcHUde+VJ0eQCMdKrKxy0416Wbb0t10fdl7Vjnp/oACRbSPjOfewoduNlNGYQsxJ0ynvux2Tll6QUWOTrRtivyxQtzOKu/hwvOtWmitVWZmxnx7Hs1Pw+n01PGAFpuuyDo2Ctd7O3LPFQYPdEfdLoJxd9aF+ay0vvRB/xGrvNl/FPH+jiDIlNZtzHbjBsrWGjeDYScxTs8EgZVLM4mUzYbkRVZ+Ok564IQQZGytXda5ppe4rYmgTdPNtda5d8X0MXY2RY2nOBYS/dfREQfOxus5RcOKxJjTO4OiuuEtAnhfNY5bW9sJlB69MU22Km9gE8ycN6+/jqMx870SDViotI3vpIpOvfo0RxqG58h1pnW0YpZme+KepEZzwzNqaIFCagRTvhkzVm22r78mO5nyDGJ+zIECWhuyPz0CdbUfYP92Jlp2Hs0ZXrCgSKdcunpJig5uitcvpUZjE5+7HKzWpjTDmlOQBN44a6pSpDLaAoCpt73zojOhDbM8kSrrN7jpWtRPVKU5N9i0wmyLphxA0wGTkghOB/fDY8fA6IUL5XRstjVeanUmCNlrdeHCiDj9gsQbG+xuAuTMfSR+QsU4YmXlq2IEZNUV8hdEh08bTXvmSjFWdIHLRsaNj5AbtRpW1dpFUHsSSuc2pjfFZdhSUKS/27U18BlLboN4BcecXS712nW5nx8u+ve/P2dbJJ5HnE5b7ByxFkfEDA7wdXXajI5RvC6c1uEkCKo+GQl5p0HYZB02sA3BerJGkwLMuKh9tlHXfuLIDzvNUlhG8iGR81n5l5EkCWGFqzbzpyhGsyPJZ0E5W9PMhoo9S7vsbpEZ92PV6rYMmfu0o5PUw1/qWyL4zApzDtRbT6YrTTYo40Qu9GIBoXnBFg6iY7+7WYrWRgdzDZlzAf6Zf/fvahxSO/yaL6lVo3UN3y7ghVOI1gjZ/n//76D0rCzsxddvP11FIgkboRQLQLFTCQtpZs8O8niZct/sL7zk08f4eV7e2h4uz6CitwCHGuRRltK7Eqea8AAqG3dSnbAVBDols6vRlE2e9+xOfBgX5RLCtELeMAgPqDiQk+y7n3Cwf5Vk6U3kRMhM/rQvf/lyQ/9FeETcRNvcJenUp7rsSg0Q25hck9rSUTO3mgvifWce1CV/UkDjmtizJl9s79OFz//SSSxd+yYw/aB0rreJx5jdMoOKdJOPMbuS3GISNtTzl70eEasLjEMxFA3KcrX+DZo5YH6CVlpYnU9A4Qoo+vPUMa74MuNvJWS12ZZOoPXOL+5JcoHXtWlte+vOEvXZeEIJHYgJM8ruqKLRdPm7lPN6UwmbadE1XKUi88W0KdlSRdmpcCBWKsfuR5S+5kleFSY+OuMSjdxNGSaOlzJ+qSCPG3s6EkmbJYm0BAXlUuHZZKzw2OWmwZNjcE5vZosFb3YXkvSJxdQWBwpw8CjOD3ieIw2XHBPsJos2EPR4eAuNMjZx4NzwpfFG7Apifw84Ju+wrR203GbDtAcPTpIzJ5gfgnjq+SpCu53wjHBXbYrf0Up219z+PeKG/06VCn7/+9/7Gqotqw0PagKuexphFVmTJkYRRoo1VxeBerPXutm5cDUlFPgYW6ysFI9ryYPSVAOH77c37nqP1OR8Dz0owh4fZ6lB5mWunA6R6p8N3jDm0Rd6unb4ogN845/JEtDTmBL9YkuO3gsEXXL3VBsDde/lu3wgbEndwmi6ZOpmyEjPcPGpl4R9K2r3ir7ZyEnrXtsnrrmWZoQQ2VqDHbrS3i2DWoaCaU+LcVNdeVtAOVMp+mDaOUI8/TG3OQPqroU0wBuJPL24CqcqMxwKiQrFW89ZLhgMpLEi0S/xpGK2bZobJ4vygZyBujdFyt+wME0X3rSyDw6M6vUj7V3JTr/X91tb3YgBZdVt+VMr2HcnlT7DCZynqqiCEWPDBCzaqGCaPcfyPDKUkxWvdzboIEzPobHNqWloS2RtDtm7off5FAm66RiUXFKSW8yW4tb3f4qJoHREvzabAcR5YvTpJ1nXstNsNU2GaX5sTMBWcuaBC1rtmy6oZ8hHCPmMvusOFuOxcDXl74Q153Z5TrAfp1RGxNM5tS+YDQAYjZ8f+KdyETU4IS2z5BZtPOkQZfDPRG3JWp2YJyb5COqYORiSc9MRwA3QqjoOmlilG2rdetuHqxn7b74hxTLTP8shKFCRznU49HvFMfwc99EdzHG11up0JUl7a8tpllJ4bhFj2Gc74gt1Pv+8JrQPhylK3sxuVEbVLQbw/MfY8P1A+W6DjMNt1fj1hzxuYW5WYl06kZlIMDKR2UdQVOZ2swHapole2d4V5SJZW+FROI/EfTDuFrv8gR2pkTJxo7O2UO25pO3p065wzc5gqx8/fsy1avWvKzEWlkCgVS7Wn07dKSJ99nB0cX1KB0+R0mfjYBPOlfu3cUclX1m7pabJzS0t27OLslP4AAAgAElEQVQ4/mDUtWpOOORqhJzTkPAG7ZKHI/Wv4r9slk5XYMYqcgURnu5e63wzD5XSYAY1yoapHseb971AVmmohhp0i9yFXtv4i/7kSeUBDitmX+FVfvbs2ZOCDWn0NETW6GjFpe05kymG1wyX/auvshVZCM+JBhcTmf5zGs6pss0NZWtyESk7Ks4Q8rLVCrH1FtA/A0MNa8Tx232GZTlnlrD3NZzJXgA9o7JH0+z4+WWscwjuptPl8htdU0rc9Bfw/L/T7qSA3D27ge2qTB/IhxllMFOY3YVx/HQ6Tafp4SfiQ0XkFh+WxnTzefGevIjSSWMGwAg18uNe+cYC9E7/5g1/BODr/iEjtdwhnfDtLCZrLyikOBfuJ5waT0SSitUC5Q9va/R0eR6e1/8ZLqa3zOqvhw+fPaPk+7SAw4vzIn97IKY+nCvOzHLZvJCZY4MykxckT2J1mIwXPtjC4Vwkmm+aDVS361Z2+eVwOUQzBe2wsMQWD76NjjhkAqdpp/N4oH/601B+K7ra3/++V/2WhndPQ70b8OHjx87qc8js11+TKQgqMP3P9DKxplSRtCqJLS63bkEvUB4pIp0AfKaGWeUIfIp8g3pEOtfGHoQqvB2WX/t3aWR2HF5uc/cjqBrWGPGMMXqOQevz1i1bc/MQpOFEwBHQZRyk5Bs31DHohq8raLdGfPRkxelkOs4iFxK14U6W3yL5XdNcKhY4GXzZdhuvrj18eHx8LDrs0wL3HFrtIJz373wTrcVqVmLnq2+4aqucpPV0yZSC1AGyLsEZ3AG1yPXr1xuTb9tADmPiDnCwZxqca64448vyi0CFaqitG1mSqzejpfnhAfwZFfVjy7M3BdJ6SpPnL89BzliRD3O2RaWH1evUnBND05lCrAWnqSLdtIsyk8RG0Ccj51lQH2swuwQ/cY5tVe2+LgO6daXZ1T85zzbp2bO1sGwCHZSGm8jFdDoNhl0wI00D/xY+aWuubrgR7IsEY9fIGXCZ5lF5olAPqrqoggGMe+29rwZ+CeekG9PW7Awa6irFMDY+bk9iZa56hipjvIsxU8gQzPAlGyJlY4iH299mGmF1PQTXq5uDh8nPeqUjFMV0yvRsZt205VceH4rIUX8aKc7F7tSEAl/D8F7zB4fm/LzbLSKIeYWijXcA1bENu+IJ+dh2y8p3XRwbR/xxnax8IbYfgj+xVif2VXH8ZN7S2lQ7XNB+VVeM2wrTd/XvSOgupWjY3i9syn45iLLod5dgVcafvcJl1MF5spIbFm7nyqfCMcH9s5LD3ypx5+xgSu/548ePlZeHoge991M4AtHcXUDRRPkFJmNG2XA5xVXg9B8dsspSrS2rIen0HBz4wJKt242X6Jx1v1qPMcotQ7rqEDxal/Nxu8esxbx5ZNBMVVGn5HZPgVkxlQ6x0k3fb/lKPbcoO2OVvgjhDMahZ3mFULFOpITGrdYmjqoYHsng1Xb9Ht0pTtKrrXiUB7X8/b9RUtQZH9VAxbW2UsizwPO1Q0gpJKC7jIqXSnbGIvw9E94vd/OKtvYu2fLpOon8MtoWWMXce7icGiWoIVSBDZpyN3pfwb//TUpGZmanIYlIfpcaJQuIunQixsIdHMg9NwOZbHjg1xgwOkvTo4C3SaIOI48KxQcTTcUIcPsCq1xYLDWr+8RWTI+n4qbhWCMecLRvsobsCFi6L69lv97cbzzzED8+KZicMpuWjmJq9L1Fg7Oo+1agWDR1gHpwTRC8i2y/k7DkdjnFIMl+fjA0yGjeafPscmDqVYsmN3BM2y9xzmBYtuuUXv/852etrkRXZ41amihm6qYGZdVIKjK6BruIdWEqFNuDWTCizg+C0UyjQ4gT8TN1ChbXCFFhNz2TSBpHTcYVkRRNgGY5dfhG4RDMy3HN2WJPCXmnNon6fk8955EeatHue4qiezTzNGhZLNxAjd6fMq+7x6Oid7kzlwzTRouL64IpGAQTucAm1s3frPcWNNtcYaZdpdiC/1XKFJiQrRXLM9/Ei+87pqzmeuTD+yZUXoShmucUrvjmygWL8Z2R6eNcoJPE6vSL+AvNyrO3kTeBqjtK2g8iR6E0tZ7PvdanlnFJ/zC55ZujJIkH5U9XAUM8exYP1IPYoYDpy5TabElVEcV6vDOEdWGg3hNnIAkMbJmDr6w+xUHOrk+u8+Vbco0+2e5PNNxQNNeMqNHNcdlXB7V/+qcYVGm/ZcgxRrxArbWB+dxWglMUZHOg9uPj4hUsLlq314eCY9FUoB50clVbCHGZ19ejHPbtz/QOvy85cTvqp8tE/tOLdlmbzex++EN/A2kRRX0si9/8HhKoxEAMHp+BAXNmX93lHNid+HOdDaTzMbaY/rmC4oS+ZxwwY0cZMflUhz282gKwtLh+Omliy3aLIY5DTPtesSYsngh3+uLFYCA9u4UrrM6fudXWmXMO1Sr4iXZmo6jd9pOVg/YzSdGWvMYkuYoQ2GVnRQjoBL5qgYqyZF0HBUGmWqsvxMx8b12t1c3BgWcCnx4cyJAJsNWl9DMmuAHwXUNa74beAjXgKl/XIWfgcLw8/2sODW+Eci7hniF4WDCFpEgDMfyWJsxDoOZMcYaYeE8eLBHsboxmfx4l4qEfm7TRpaWYVsLT+o0fZzJRXXmGHuKf1b//RL3GLatKGEWf8mobMHBC4L6cNrQFT/DRkPM4UT21VEWuGRK0wbRTmqCZv+BSnT3VaG2C2kxGy/ymTwV6rW99y3EI64U9QSWOnQsoQ7Po7DiOdorEe4M2S1O94sVZqB+uXn+hCc9+ydKltAQ5YS6+H1X2EnJLyeOmXUDgDv8ADo0DWcAZSrTX0gyARBCCSr221GSz+nN4tngCORAB7xbnF1Cf1V9TRhJYRM+s4E84Lo7yxOJP70SwF96xf3eQuN8ugkvB/qhp18XUkht+2XC7XtjQg2WCnq6nOziw12bh1gHQIp3+LmHDtdVmvP15Us41iCtZfXqoW+vLBBBGD6jeYrX4yCVfMtB0SL2IWSXUF+mbrnzKSqMt7h47V3TGOqzs3d3ybSWjqGje/YPH7uXLN/Al9qWZKRACf0zWjiP2XV+uvXWLhHI6HSjJiyal0CXUTfHvmRhji6zTTnROm8D8quZ3nfmpfc+p1ZJNQTryMPjzhw+PMzMOEukIEwygTsf6pPKa8+mqxn7AxamREFEsOKvoAh8KutfQPwCUsaH5dB3jrZN8bsaCfIHAPUDKhLzQkoWeyYV2v34lYVlU0cJ2IUYAePsI7J2FbaNZ4Z6OztjEdWmh41aIuc5eZ0s/FIXQLGyn1bbfKswo9K/+1U4WOaMi9+goY8f+UYkRX4zouHDaAgyENlaNXIO+L59Ud7PoXZSTIIZ3Yabg6fxpYBNCjccLAA4g91u0KygOdk/EccYEIGe+QJvQkIwN5GbrHjZzK5SNXIklpt+i0vsUz+MKJkN9/HJWTNkGI5sy3RTdTykKznOVmSBZj624hthriofPdfK2YLd6+CJTklZ/0NhdKHV/73sX3AzROr6uDi5FOZ7CUXVjz6WQXPLDmSTS0QiHxDEGRWPHKra3kxnpAthGs1B4ctvac5tfwV0cZxii4fo35AMOHNkpmNHVsuprisBgkBcFUQ80ftNnK8ftviPEk7jUKGNdM5O+HkNZDuZdof0drgBlsYzOdGoHI/AeIDqyfDYEzQq191z4fmthI/Ke1F4W1Lzbnvu0YzPsyMW/nBNWzZyg+4YYAvkTjUnRzKpO44MqKiHwFeTevZwFKcLS5BCtpXDXYz70yPt04zdoTS3ECdBHqRkWrGeleTTPuJ2SA2nGYCKPtDgKcFRvDVAzI6TjkxB5mbv5uPgTwIt9wqqiAXRm6ZtlxXuFHx+XYiyefc7st7BShSbqQ1A6NagZZsu36ll8isCNwTVS/JYO52Z4h4u4qlavLc0i3UGxEWRV5yOxMFxT5yo5yNjAMlp9zJ3FM0+phDN0FYjbCKizlZdfXoGAX+9VFnBPwzvm8XlHvph52khfpk3Es4yOk2Thk2bqbjZo0RXo12erXGnJB2wgMiqkH/+b6cbdd5Bwqns9o8t5tao4ZHKG7PsxXZVFoBOnp2dET6h/bkzTfKTODXAGatwG8z5127qmdGvbFuOnqMrmOtGFnkGrdTaZ8VQNhGNeBwd0wwOWO2GorQsu/xCbXkWmKVv8a8OB5Uz3iXbQpccwz5XbjldnEGLLckv6qjiBMyVNj3ZcYICYwkuqB+6sgS7GAheBUG/9Xiiu9kIPyERFVBejfv2WJB0rAoPmtRWmZdQztdQbDgKD2TlSyMj21B1nJu+72ARuNKYdHRgOMjgMZsRTgfx02sX7pgsHj0QdJ9tY1xe9dDMhvdUKeDRZk2HOOztreQpf13TDvAQNOYSN8B3y5f7WImYi1dx+ikCj2dZBaWJO1uFCbJa74/gB5Ll6yTatSEkODvMCF9wXkRD29ddDb84/Fs6tTApS9MFE9wjqhC4wYRGLiT8FXdD7dPQE4nYI3F0Ox7Ldc5aKsYhr4T9YOc9OmlG53wCLVZZz5f7iC+4KZaesW+78XH9rFbZFqvRY20ouu48gl8LdGXhNqbwfZ1vt9wdpmiaxnQ4dfqlMI4202SxsdW07I1GLs1v2KJI95wqMLIJrYlubLB5a/YBFQRhTtnuW1l4m6zLVuvlIjUusW4FtDyj+1XZdcdStrjdQnl62N9Ucb8LKQYkyzcd0nJN6yfd+NchqUXlE0Gb2rusIZNvyTYeLdXyQF3TUuRNb+K1cdCp1arO01S55QP0dKN5w82YKKny8vBvBKudoB/1UrGeZM0OyJm4RNgnYEQECHQwHWt3D+eVYkaagWtdiMy/1lh/X75Q5fEw6youiML7dCLBBFvCtB/RzEwShxBUvtVYL6KRsEtmhc30LHXKW3gUoNx3TjeaY8oduiB4eP56GSAO4+NesCAySJDojFdbR118wtrhahiONpggbqZrhuMDmtrJtScPK6xkJzMB45Ew9vihDjb0bRExSeqK0CyU/0CfIQMIXSXy0ufB2KU9ACYreM5yeqVrcf0W0EXUOYuSWvjECfoBAw1U/mOb5F1fGf4csnRD1TKZ02wOy83xe7WpdF0CrCKJmQ9zvksFUeIfZ8Ip943aQLkJGdOCaAYHJiMvV2IEHMaWjCWe8iWwhfX6XX0SU0m+UDq/09eoaF1urM9ywWKmb8ryWsAXUeVevmvuGTD/k64qkZhopyh7n9iHnu62s7UGGhu2HJV2lIBQQyZl81MCDGnusw4v+3XOSyqzdbByLnFr7MLJoBs6+0UwGIlLWBXDsn+5448N+MWmgJjPx4xN2P8Vq5iEu7Oy4rtnTAk45VqT9J3PMVp0v65PomfmOiIZC7L+dDu4iTRVrEO1b9HM3bvDui7/WExy1Q1dmffrcpeim3/OiHkFdIBAmkAfgqP1DvtZW0LZs1pFlE4hx4sMoKRMv8cDSXasqUUG6G/744Q/5UqtkaMf2363hQE6O3aOIt5JKnBFVJ43HPqYSs729TQKVmkdGmh0d2VQ32U0aUdrcCIHc5enK1ZjVJ0jRAvR4/mYdQ9exafzO4dnRkFFqx32Ba2crumawYK/Uq1sna9yusKatd6YdlS6m3Uq+324w8x5UEd43WwlYGUKJbfBMnYDcLGGsAKI4Vjt6hi96i0gjsh3al0UfDoM1R5urSUMhmsQLF+IwmZTOwzx9besgCPYaYVzFQbPHYaZWMP/r62+9dfmtTkEHKejTx1MNW1DoviR8xZ86KZ9MZhw7pbAfn2AQiUZy4RDblDYVtKbp5gMw9hp4EEtUmUsnZVg15s9GlafxC79IYmeCh6N/0QcPrqIS1iDhdj6c9AGUb/jt/+0gsJhIvAyOl5puswsieHG75sOE+sVX2YiD9DTfAPhD0CuVcsIvvxT6yGi3Kt0uPm73dGoh+kQeTzclCFeK6LrunAM5O1jMuj1DAtDyWocw3IcGO7Xf48OeAS1RPaoKW9e04GKrG1tsMBdDm6S+yxTT8t+48eTJfx3kcye2JLcgHEJe8Vtbf0wvunLtf/In8BGh5HbhQrpG+z33rAX6ETfM1Lgnbze6L1ZT8EKeYZ3B4OorryCOQJuhefK6Be0qLxZ44/ANgy3Z6iBe5ISDVkYBYXxbeaM0btsQplR0lQaHHn8vTivrQ8vreWM2j6YmPoT6TJ0swwbpEN6Wjb6A0Xuea9LGOufEhxPGvcpAgxeRmuXD4wx9r2287ifYUBMZi/O+H36IAg6ouHgJqwLKik75EiZhxfBE3/NBhp/2rW996y9lYtTXiTi1c3c9uQheHttZukq1DgaXWLC+4gInfsjUODnlr9LKsOyppMU6mB7XeUTD+n4ewj8Pf3hi6HWQ/VXEVaRM7XdhuR5phc4bq1Dts6LiW9J/Ix2HcFj+gYsX83zvdmQRplRDxrirEGUyCBvJbTpJ7fvGiro1QWl7A2/DXCMgh2HlwSzgWcVAOZUV/1QUi5TSrd1bCcGY66rLPjDGAthV3RTIH9FuXEfx6+766N23nElTEG6YJjdGSRkCPuDKKYvtEBYCnu8i02VbBG1J8yM9jsyWIzMgOdEedaRX1KDKM0WUNFVA3jmLzxfPMBtR8ILQjnuhBrNWuMgoJgemiy5i5Baku1ZTP36W7BsNoaL4um1TF4avtNGsDGJ7Y4bc/pR1dOfHdNqQxm4OxNnkD3f0GOufp4loG99QFiaVhoOKd64mu6djM7Vs5D7zA4zIz4dN1RC5Z+1tqu0m53iNG5yhcdDrUcHhW1HXmXzMP734aEvZOT2geH6f1lhPIlPVwzYGLr3brWNf1WDvZwUVtoiqKf15vtE6KRhVXandKrqFblQ4b5vqXuMf464aZOk8VFrQAQko5ytS55ZBJ54K0Hx6j3vcIi+SxyBVuvtmLHw/BaU74/bHkhTQL4yQSRRAqUKiRHTF3lUw6Yj6beCGXzJ0WChk3w7dGlXhCFnvl0V9CI+QE1qSU0vaYcQ9S5HaG++TWOAuQSzrYE4fM1/DiRaB2j7ndAfoiQLK+srMd5+vQHNlug7IGbd8V/1RmKpsIMeuJrJuWK8GPJX1xkZ2pt0+JZiiNuNs77xD6G4ay4O8YI0IVIoDimTRzIs04MiRc3zXVqKX41LW5BoLi+Br6G5x9Wv2YT3+HSUBkUrOigd1+KTYIcb1N5Wsh+SB6gA4liq6uKHrisP44KvNqyanINi3RhnjWQqA+UjSvA29Mdh6+WuHyry1H2k77eMnMDGTibqEsSl9FOmhX1piQgS1p6cOpNRs9vzMu30VQPMbs9qcjERj5Bq5opfar5x74shewu6QxcIiht3SIDvsGR6ECxempKdunQrv8kcCcqgWHcgpaqPbvwwLOl0uZZAHO2+H9SptUisxU76//2JUhlde65sOD1+fOWLDhe25uv8CKj0LVEZUvnWz4ar1KrKRjHTXQgpsRDznKJ1w1UcnVZukUyI100i9J1J70GPHcEToKKKYYdrGIdTToKhmCixjxlfy8y4yBPqP/mgTEz4LcHZr23oxoBlXf1Xop8txfuDLwcPk0Rued2lQ1SQAIDwGqng9i6IW208z+yd8F6ewOAVu27eV/W41MutnftewmRGHhp+vzLLmHVJQfcY3eBqaFx7foDqJBGFMMf2HXV0ftPXu6S79td+CIaAbJHHe2PhlGa4j00VW3zj+2V5Tx2CGIJt0uNhSFQqsLVos3n77Wk6y2vyjv2RS6tNheCJaWu0ipdZwlNjzxLJwzO7YVnMHYe3JWZeXjIDFBz8TlmC2gq3iW3H2MWSQ4ezt5PZQ4d++8KxfNeXL0HVLyYs1QF5oo4waZoSKgAaLLbiPcgQhiMJV6ma4b5ShciOYZlo/FUherWQdf4NPrr16ZhadQmgWpAa3YOMGhmbP4aqkTn9a69ps0CMPBkigWrvqDDacQnvIHbpnwX5hF3LsFApg1P8MyyrRe7iGq1hsY6QJciyjbETVO3zMV0WaH2IJwbHtGEJC200lOk8V0OxhphABeIepVgVuxGkXouQaIAsz5Ri2MTf4/Vaw6SvPN2lzbnDvm5G9HUUW7SrmlbEXiqJK2FhYfZVInHumVc98C4Em3JUns4vTBQmoYcJxTIdPmaloHyX+bcinoLDRAEsvCuGVxnH41njj3kGtjE4gvCQ1StWPUaS/7FMh0h9EARKJ6AVtkwKCyKJe6kL66kbd2yUXYddXEktDhkDwNsop7cKg36gJo3JxQ2w6TU9oWpygttV6W/0FXM/CBG/UPJlCdOEEMpPVlpAijo5JJCeuhCozW7MqPM1QfkbEFkB19WGeT1j4SJvQagPt21NHvOX169drDnKM9BGaaSY+5SelQRDJ0Byw3HFB7/xi8aNBtj3XY7v7b5xIDBFmMx4K88LpJmUFLlwgBBOROG6GArkZIBFRPnVGxCua28TjQiEx/yy1iHPqEzKHDbYWfOYJBRVjhy6ELaPMuWM3y4m1Avwxtv37xVibt3d4so+hT7itDqCrvuFKLJ5Bfw7Z+gzl6YCeWBBnPapEzRLWqKRnnFRJjtSjyTNsIousmrLWjvMhtDxiNNp1kVTFRX0+DbmVE5efT6HQ0KBKoorVbNR0RQN/hzek/WkRHoJiFb8dydsm8g4HM+2dit/qwHJubta2IaqgIQiFpiEi7r1V0LHmWUPflE16av66ZJlI4A5Nj+A0LAHFTEudq+Aq172IseUGSxmQ66H5+W7b0rK70IGRt8V7dvcSBpKwOFOcKqIGjDxnenR0lASWv/xyZOcivu6Xkfe84Wuu4ryX71xHDFLXFZSHHQB4pAeTzoVbgx4VqmTebNlMrLpWMqZg+zblAL+kZHLJS3QfcvxZ2TEY+0v8rEDGI+AtF3AKHil8hpjqF+XDEIvdYosF0e1v6DATajva34gl4wpLYyz/blbYLTc/8BwTddJPl5We3a+w8Mc+T8NmumgtBDC45hppvFbyPV0s0DSlKYccXNVEpe4MFqTp1LjblhBr69nWokC0kJjUdKipx2TvFr/U2sEjDL1z5nS+nByCMwdzQZ6utJywZnH+mMKpoQqiyDD9FH/icCR0pWXhFqkbdEfTBI1Wseq/CrWG6/X44qut3eHFwi6b3BFMlt1+jRqDsUowFaizXrw4XUOHad3ZmQJ7/nb2tuPa+1XhhlMGTBa9uRf+FC8ySk4PGR5qOPE+ljHfKALejROO+H1O03xGJpTW3O1s5Fw9u3NsnAwvuauuXJHgZ8NHN89XZrMLEbjVBPtOOWK3tqxjj8Vb3biKw4t+OYjZlMJ/8hNu9PCSX/Czbg8hC+akQuKGP50IuFVSXsQ5OR9fKzUleg7LtVrMnsS/injwKOpfbU1j8dyKwy//9vtuhuKFF4R1Hsh2KYxr9ux+Mk62Q59mbr1vtgak1q0ktl3fiH1cuTF/HvWmwur8YPOtK8LIGV18+3FEVC2+QVH1Jb9PUeSRoZMwF1Q1rhgoOYHF6nQk3Rty9B791PBn1HPHbj50jkc+1b4vJdgLCwpSb4gH6WJZQKFiUfmWMOQJ+BkeGJCZrgOb3JErzvvpTi5evFhVTvkH07BqUyx5xsg6vB3x6GM+/8dBEDNTSRhngHvvZNbwBbqwv4NBsgNzHE6b0IncolBMAaG5Wd5Ryt3wLRvhRa4/msbwxq3hfC2WJpEnLRaXjleoRpVfnrFdms04iKKokqk+Urg/nu9SOEMR34hGnu40zc6oWlITYNUbAvT0n2jy85ldANPM7tSazf5ikEdW6+70aXPPvJ39KyDk1qONa3miKYDfqFH2sq3KdZDbUo5O3eEZu/Pi2M+EuyQX84aVrnVu0DCTHJ+7memtTMi92ZTG5Q5vgSnQbYutQ0Ua9A2VCVKGWyeS5pfeLRN9Isx0qr2D2ECTjoxZc+V7avQ+682oBbh36HFQVEDw+FlnnG5BypGtqqGX7e1HjwrHovWZVVPjAmkYvp9NoHQXj/Cu+gZrseOz4/CazTjbT66Jaw6a0Usj5DJDoV0M5F8bLWurYGkn9uJFUTHkI/mQLeXR94unb1ufprfSfIgchvAtoOSLkNuPJ/NQ3svO0djHY8pEO3QUiJFQRMbCaExXXJMtlZIJl3iTEJ4Hc9YSD1du53jpaq4UNzAnvYjh0DvPWKn/LEgRZpt7exEb1/FzYg4G/xVRDqlIsDIGAjz8dlThLmPHyArN4or26CV1v7/vB1+Y0sM1yWSkYzZL8G8BAaM4/k2VvhEueKjZha0NbfBlu+dhY+O9jbAmmBqWEh1+QxwzNhVdNPPWxk8j7szAfY2otlDFx1MFDhcfceXJ/TQI3xaL73OxWVw0HJVrbiQMp9n87GpUJixu33DTvY3FIS8ShHuUW/fnabEFOFaOIldF/fkwF8mPmEwYWVCFSZCSlM6la03c1Xfd92Vpmtu3yXPoOh/MLRYIJTlc6mBnnvqjFDKtRDTvqMZODdY777zzJdtPW1yHMVP/T/0/thPODrXDGysvuS9oouPwdgDap50F8UEeIzXi5Hj/0tfp8p7usMlWey5F7fV205jYTBUc4wYbanIsgvOlOnjL7meT6IcmetG4LJg9d6UltURGsacQMElNtpN29DcA/gFyNSngoLR5HyOKA/hWQPSPTxGkc34tqbu9RcJtIBp6uVzcYrlOxczCmEbLGiIYm7h55wjILVd/CRdKJ6txIKaPJ2zP2wgRwS1wMaXWWI7Y1pHjjE+UC7BnJFmOsub06ETd82A/ozzOQWdd2IQLZN3gu8eH9hMKkXNDg8WiZkGtIKvuUHGO5EWslRUaVa41d81POv0+LFMtVnty0bGXigyjqKaZur0yqAORV9Jf/qOPCMRdFWJREsIgU1GeqarCCAsgEyG+Hvy4cvt8dcO3jNhBsQmfefzLwoIL+6qHSvjXqI9BjrfRtteutWZajIKcETYXddaw6Tn8A8udO3eAKny4dYpfYLnc3yfhim71aWCUkmkAACAASURBVKssi9MFRz1C1S3hZEQbAJ9Od1hnnNffllEjU6tWjjIihGtlhp/Ertx3NWl3259Vi0ejpM0Jt3buE7ruiOgtf+Cl9jdZQFFIVZoXikx1LoCPmHeITR4NEuPN9bgYzZur380uJEXSNGSP7ne+U0wJrOT877J1D5EAdRcWZcOVLpJl64MxFTar5+miNH7h7+VDOzL1wnj6jX3HvfcKm3Oyv4W24k0gh9eidIF/HrFp+JTlcXB+TnMMfSnOfx0O4SUoTjMlSs3KyclJdCJDy+EhrEXfNwZeX0x4OjdvqrgQUY0yGtYFAz2TuZZQWgCOZcSpVtiRO6X79QgSA9Z3TGqdIKWKbVq+MWn6fAQ0ii7AuXx5uroYbZ8YUtWerDYs0agP1KBTFD8us8GFW0Lo4corTxRc6S9kKE+Uyziel7a7fyDBpY8/+ZPJCYyVtiOs4+itR3ilA0lI9l955b333qOAWPUlmFu73fL394z2XDoYcHqUflKzcFZofD9cbgi2hViEtM6ZsMCm2S6RCP/YuLStnsAdsI0w7a6FQHz80kocz0lTdGw41cS7EeMWL/0n1UzCs647obq2b6j/YNDSaNLuZnJy86a16lAD6uu+NyeSs2pHd0jGstPVL69ZnbhOffZsM8j2qML1C5y4wI1RI2djMxaePxPJ1E91FDgYl3fffdcM6uFdusIpHPK6ayHXWCLULgjXI5dcKNqkKjf637wL7t7SsiXG5bakDTSxexobhTgDPI7dfz/NslxOOGNA3lSzuN6F9HMW93t+a5Ovmnae4iEllV+dlhPjGDrI+vh4nNJXtP+hqp177+Fy+8PaFAx050iKcHlXV+Ct3N0WDkDkCEAXJp2uGWarmXqRzrxzNYZJWyui4MRa7Niye6toDs3tly9Nmcu23vmDzNbyDwbpnXHX8iN13ofLXCVqj6suCRZUzeZVvdL1207NhoCmsigX5pgJ+39Bim5aFHt7fW1u+rNnc0qBT0PykvoclCYk8b01W2I0H2jlvgOqyfko4LkW4D4KhYbsO+oPshileAgzQpPkb3DMZXcF4BnfQx/iycu0p8aDN120tmd60oGd9D3zh0NeNH9ybqIbp+oSf/e7s41g7Q0gPAjpOK0/D19Hr+kgK/RZEm6/iYp57F6JwsCwb+HGUT9TP2ypGCnFqZbmraSIcw+VK817dGQT3nMUrSgnNsFFD+60z6Bpe3zUaix5U+E4yfvwZPKd7bkZhw5+He5+ppLkuHrCyUn0Ui1x8XRKF0uVSAieuihgJIY32Apl/xV2ioU5Kqf00zNqOS7YeLN89p1Szyg4DZ994ZD8q6/G6tyFsA8e2A9RRJdXLQETFq9ZIQUcQ4i0AM5iYcoLIeMNw5u5qy8UBunhPh4nSOlogzvy69a78211/iPxwJ7+K71kcBWhTw4UI6VeR6uLGLCJJHMwJKy8qM/Tkkrn4xphO/b94b8rVzR9YHybAgRzFRllW+c1WNi5RsxAVelikzFfh7U1ZtWE7POGPKvw0hdNubxs/PV+YsDqj9N3RS0/oBiKTKmtvDxnyuuK4sCJ3jziUBJRJvwxy6rcaeIM1oNvSahb995aXYdBNYuZ/S3gg+vxobU+PNHV4oTcdHa1V3HiUn/N4Z/e2TqD8LTrHLJ0WJKn5WQRbH3ZOcvvizKPl19m+xwwpWnZqfnzQdBChPWimg2PSQFphvJ0I7gxHIdEjRFo7PNcxc29G+B1LrI7lS7y0ZmEXoHjY3PdK7tdMWOxdZNyGsDeRUoLiObI9u9iMcn66HJctNwwvExt3tXkOFh4uZp66itsGjXx0El6gJFuatjYQKkZjo+aeDGOOfXliCjdrzokWR6sq5dzNY/OzXaAJc/f2HBEXkXjZItwIxmSrGSl/QA76yDM90124+qnvW0HeaflbJrO05ndPOfQHcrsIDmzOKdL2XytgjdPlJy1ICN+JjcDG/tEYNhxVZ5yzgTHbMyYo1CwIfBfu+eV32+zVEZfGm7etYX3VZqHD30B/SkP5I99CS/aq/Gbfc/YEO6ShdWVdf/ACHpzEE0RuHNGkfhuLEXOwjByydNy2wwhad7JkgT7NQ1NXibiQ0w3Wc4P7A6xjSvM+T47S4ZaD1iVPXQpVsYk58ydo3feiAl01Taidbd0DX7w8m7TN2aynlrKLCBMcg32V155JSxd6vJaqi5r+mh1EsE8Ic9QO8DztO75mZMhHLocNFlD194M1nyRkVgKp3vnKCaoEm2VCJFklijcf/DyTERVGAC1Sd9KKG01gPKK/T2uXPFv0/7k8GUWJ6eem01CfbtQn3BbuxaLMz5tO2PAznU+P5uhNN/EhJvnIdq1gd6PkkonhbmxTJeUKZytmiKcaKKRNyMRcqNdFLxLwb5tLZl6XX2/Z8VG71z6FSTCA2uWp8r7G8Ink6jNHmfFOepvxMq8EUBDEEWjlmp0sZhMpH01KTEUTeNXc7oBu2Yqo2zkEAfX4qCNVjtAQO/35Tj4Bzb4ok9Xke2XKwnN8GfZ5QHmiQ6ZHZq2IEbRV5fi+Da5HCdX52p/DewTSl70BQxVguaTjrveSpCZbblYzll2BcejCwAqVTiNpuzrMTF4XVVaxKFK6LyOEkp3CKoU+pXX5qVWS7YVYV14gRlAP+ksQEjv9freb1qAsgwJ2slFr2R7bif4I2sjaRZXPXqk9b1DbPsBFgjE3B8zhEGIDLi9sPkxCFuK5Tw7PwiTlMEMsTTFBVl15T9SeJh0et5iWupZqmXVSGNnY3VvLSB6IjqwQw6QzqcZgvdgzIwGcxRakQj49BOEvTPLkPRUEyB0lG2F/mg6lGq1bjqED47VCxtegWsUg/pNYEeid9+K/MoKnU8rtuvBDFyrBj3KsvCSJTrwk84wwmQHnbNDmY7PX6VqxKtXbrcxGzOcae3DxZ/NLkuvxq1m7Bwd/MLs+eTsiIeHcmeOzzSQynqxTM4L2Y5Elz91YWZFgpngXyh08SpQR/D5wx/uAqB9x+r94SQcNRTbMCi7S4UgY351koLUo4Rui9emIhiJac3UwoMHS2TWaxO6+HCuAhvX6w5rnTDvbTu+24LdwPdzMk7z/YhRJR3cEZAv1N0sVsY8CxTA0Tvu3a6uyzRCrUbfd3wWKpG5J4hiMkSDusvnDyCP5nlPxflu4sZx8KL/77J288mJfURh3jZmaimHmImKLs17I/lObK5jSFR5IXZUH72ufVsNxzlHRzqIXoJ3D0WfAcScgpB8Y5m4x4sNMMX8Mcz4cRDn/Pqhf9Fg5PpJLyn81JbmfKBOCu40iHcod/uRZ77s/tJbb4ETFIk9+DCX3y8ryHG5fPCBzeZA5cwWlFbkMqa9HmXph8f98st0AC4o1CgaC/Lu9MBXa/GT8ud2qY6u9EoMyl0KYSbdCW1YfTV82TMjEYDE8+CYKWALWp5BwIGr+yx2mF3WZgZ4dxCnAAau8sKcD9zLYfCu8q7GcRcOU9GbIo1mvm3wSmBWrdXYKfDYVS5kkxFhvrVKQ3gteGhMSNyPjxPjqzUHNzMDmZ5jlR5XEIyP7bDj+M08NkBGAjrSrQ4efln5sg+/9GI6HQ1/p0DghbjJDd7KclU6N65fDYDCcXFdElSVmuDBTVfhslf9WdsSix50WJXiUbMKfbjNJWWZso1a6HNu1ASpZ4BM/x4Rq+X+R0wELrOGmPzEeBsFx1JKA6CYXMpjdETpOG47TFxuBJ3AxbrJ8B++3OUjyizUY3m7vxsvvrj/8ssvqwE2bQ/bdmNIZnPXBCAFLbLvSexTwrKb0F2Lq77bJ7m3d+SQBcO1dwqHRJ3Q+1WPHj26zaSglcD58OjIiwHFN3r/B0JYQP99BxfvrOYpqFMVX7uRMig9BkH4ZoW5ZCds845HStEOho6K6zIW8M9LRJi2wgJBnavGqQPh7waliwqN+1yvfh3bYhP3zCG9wyWkq4QBRUvwd12YZa4gk5O0jMrVUL8NVxDiIOf5mIf1KWOfOOlzVGHe5EFpBjJVU3y3l17PLmJzKqidHgE/TLKS/nnNPcRQ3XBBPBCvLdw6MoYiqHrSRe/rFZSeKMEr/phClEXqcdgBRRkwrM2A3QWw4bsMwwcuzI9DeGNK3idScgOqYrEkstKMSzNud4E0CY8RtdIX5F9JGm0yWSz+KSdSxy3ZYHtWbz0PGT+lVlJol/Xe+aWpTgafrj4DaicHdvx+J8jL3LKXnR116VHr7caNTgfzdge7sLJ6b4/2VqAiV0OUytqLyxgwMnLV3RtFexYZ8sBBvV6mMjj0EUoPZhj5aJOOXc3nnc9GmfrSl96MSI0WxgNpQjji6hM8KU3hMDNWubB4aoHmICRY1b//9wUNlso30XcyDZevVkmJzliYadNcyZfb7//xdMGw70x42gERea26zEvb01IfOLIR794ePjaANwF59dVXtTs19KaigZ+/vSlAIc0gxExWeCMudOtgmWijf0XA0JjBZhPSLxZkv+jMMijUpeYLwWmM0nnuk+6s4wS9rBg3Z3MMbd7rxSYeyodXfET0i1/Uxc/GZ2IIhIoumBDb20KTiUbEcXW6RJIsWFdB2WrrO1Xxq0atI9NJt/j2JZwJy9+hfIADjpixplj0JkNpEuSBKH6XWSba1MrwFKUesJ/3X/F2mkwcBz1U3nDCfQgPpBBd+jwH5mx3mQuD9jobX4/x0g+e+pafknWlWZuTkfCtr12XEe/SqdzL5kUnmsWL0bv9IjGEYy03f+VTEw7PWtYpEU7AiuvZSgIQMZB1vcU9jyZhmKK+r6oR8TtUntztSwFAphJ3Ca6xk9LrIrtj0gfiOpz7gErG1+sybP/114lnKDdak13XGVkQhgWX4VsRLJPMcdjIKsXERHHxuoZV+1tOzL+rXQ6nwfav4KwG3N6s+yKJONPEXgXkpgv9TU0GrpUuHBYDmwzaq5WueXYi8pFDfSs45bVrN076kzLJcT57Eea/cunqKjmb0E9X4G0Ahi3Fhpo+6G+mIl7bQd+JXm63jSsYjLDVxoouCk4sdB2BpYGq3MJtq9d5yIPVKnLH4yRWfUeG3/WjvD27zHf0nEuinm2oLs3ZPzpyk5udWwIS2so3BfHBevQQXLliO3MbI18N2wyEqTBiwy/+yqvGZ4VS8Qq59AASu/RuTJuBMUontvyU3TE8kW5aqnhTz/4UNm/pVP3u3bshH1reeCr9leCdiXVHactRrMHMR5ZVsqab6eanclff3w76rcXdVhrAF62IFoZiPES5ChHeLGjBaJpaTtnKJUDHOZRUO+ZWYwiYokJKfGk3LoYbHDV00SGNcYhgdBn2UHFGvsxdUV02MgSDMLOUzQTfXHDr5SlcrGUcqTPadG74UcO/m4zceiKNPByTwYfh1DdSzsX4VPxLz+LK3GOqs1XXGqx6VwWDPb4GYxqpPOBLYfnuaaFmx/w1n+9//rl5PaPdFdzjnR3wMlvWquCpB38SFGkQRoSLUJkjAAnFkTWTZzkZWY2DavSMHHR+I8KhvCZPLXd5dhLnIthL1NmPz6Pb4rCy6GMQPGxvL1ZpunEmGrP7yVrw5YzOPEEb1j5GA09Ccnw8pp8O1Rmho64FWtVffVWytSugGLFJWgwd6khJZrOXXtIfeSmudg16FDkI1DCmKMq2P0ByfGwfkroS+tKbe4/5n7FZ2oTCrDkVhBMahLr3MXd9uNsc6T7zcabN56OYqbDZAv/xthMbYPzd735XaOF/qyUzCVGFTRbSZqE2/uVAtOUv5pjCFDJEjuRsrWSuRXLsXUUjyidPfvQhKoEFLwf5LCi622QmoNIpHHvQd55MPtjuJz+BiP8yftO/sfKrjDinfpwca/S7pCAmd6hSY8T/MpTymlwc1L5CturvKY7i5nMXuQm12OHR6zCYlX+2V0YEAtIZ0VOY/CG82qx8byCL0E2B6ByNKVvfTuK9Sv83+Yc4eCKY/Cb5m/rj4cOHuQEHvloe0veVhp0o6QQljhl8a3MWsSV1JPfv3+cpYy4aUNELvFAD7ZdPr0B/7Npog8nfOjiYiskajnzQY3d6H45k5RweAYEieop+bHFmMKQpj5481PolXosICgT2oyiqBSdMOEnBuxO3mwW8oLpecOog3i8G8BVgdjRcMYNNz0WkOLEPdKpnVztUju+DW69/ATOCUHHfbv4Wu+u2VhlsdlilnY6se4xnawT371YiVW+keLOOzDBofeZv+BGeaBK8enBm6hrDzgffYuZ06LSO6MEtmkpnnzUjqMCYxxAVv1iE3Rp304wZJ8QD6VswSVJzcVh0jmrufOFRMJz94osKQK2Dg+PY/jQEdD4MKaNEPgY5jkNlQX33g5/Vew9qiXadMfgwXqspgcpthVVXylrirTuGQve4yMo+EsPInRZJDlMxV1MQZoERayPOcQonWjvDoJHLcbUyKPGI0nUq8c7RUcGTqj3fd3jFHUkTJ4Z3uLPNTb8RvY1ZutyyF0pDskCIKQang3OysWFnj6iqMVNaaNa6M5Rhs9vXos5MFdibl19e9fKT0dSaI//wGbd0HJZDDAEDyTCvjwg0Nsp6Zdp2rcSDgiS9m0MqzM7sG3ZxSSjyHHOIn3GBHMzr1c79JCx8DPcuhvDkqqMb7wszPkEXb/VlaXcZhY/F6ZRZIfbBgzJcoEe+2yK8D3nwelUHzaOCj1KMIB78QqyGa6d2402YRXpmHd5Q4+pbD9BDQ169RkPohyiqk5X+H7Miuvu2kFV1xHhfUdImFmPIFFdFKD/tLBMmFDO4Yf+YdEHO3fHYETqKeg61M3nkAk3elVtMic8mrJJ494cy7qa3ro085nGrOSwAnfr/3NNsY1KIoTiRmCra1g40evJfysIyaq3udKpNBPmInf6gSleQoIobdGiioZJUaSSnPQDMilBqhxpDqG21Q8/D4DtE2EBK1X/ZNZLsdIceZS1usukdBOwRdLjRZH0fOammJDvrJz2fWizagvL1118HHr22juqVV7DaDIX2S/iyB43XP3Yd9Y2Q88E3JdWnVFAJrlUnZAYe8UFEIkrXrfUckgzTepz4dx44vwLX/a6Sawgpn7nXETE2HF/5vjdlLYBU6GgeR/2xqJoKhUIbJoqT0YInBP3bbvWG4IyD6vSZwTO+q1BLYaoz1CcnkfNwhgFAKm7RTq0vu/kPUYFJbXYpqtFDbZ4yeErKb+rt8L4vl5bVS6GcewhZ+j452XNUT/4LFqBP5SlaShzvmCsqvjRqwCf12UePQux7knjBD/JZxx62m3hnouK7jFxtVbr9jMgHL+M0O1dwcY4sQ48vBhjkHUEoRsokcbjZjgP4HpEs1KZNR1hiac4xvgwrpeuDa1fVx02RPTE7yxKTdlfi3ExF6v71YTaCnlbQiqcfjmL5Pxoz6HsC0rbwfh69u7HM4O7fwggiwhK8gOEnpe2PcUjX+Mola/CW99NFxPvoWuws8MJSL5UyrdptHwoPXYyvkr0vYlCDetnZ7fbRkcvtXNNdTtlauzK0fY3IcDLI+2mqksa3yjVOMkoR62fVde0W41O18o37wtX4GqrHhw9GRO8AqpBGwc0Mgg7DkAB7y8tmWdFwCgKSZAR+RrssLqv9nN8NiJOth1usJGyvhTX3Jrcz295UeY9gC+uARxtVYnvExVkHW7V076acHRPk8SCu/uZftGkFxaJ4qetFyBElwzY5HeO/EzNudC8oTc7aNs0X2LaYKZsgQzBk+YrhgjibVFCj1Ie1JtiTfI2Hd6bx7j6r9itXrjhSVy3d+vr6D0kdKhLKibT/GdohZN35b02aDycJ3PuKwNj2r/eDXUwsZFHMQS8Fb3KJVpG23h1keIJYccFoZgAFFmqmctFWvYhKABJ6cMIyOuHMh9x2bco+fp3BYiGpeHHjxsKT/6dqsf4AhMbOnINjXZiafCM3xrnL/n9gviGyEEC3WFxGPYZ0S2llb2+4dHSXzhB4VyFI4TO/wt43Poj3GsL7jK038GH4OWyQXYJTmsgQFfiwfRj+Noszr5k/Y9sUbZe9icy5KdnPi3HmPvW5OmO1Eud9GAUubhfVk+SEcrFwDLgZW/NdxhajqN57b2fnI78jy4dNNaXg7/sALaZfCjmNVVXAoae++wObtx3H+upHdv4DinRm526WzWLs3qlCRpK+T5fkHLSUaVzifO9ZSjLpyrSaid2RwX7JijnCqsMCFamFhQ0PahNcqDBw2kEoYBF228mKE6TwPhBQGW6YmdekeGtvd3TdbpDAVdZUOjN0RXtxtURFx+ven5OKbGzpl7jxY1pUivUk8vPTU7Ma8VDY8NBJgZwMfNZvlF709ruCuPVymcEL7kONbn70ox/ZfTSDXHNj4zozWpJ6DG+o6IbY2ORMC55i98V879fRDQpJajpI29r22jUBN9/3uAklL/VCKHiCmXBMsaGPHIUDtUUrvLhHytXwrpRoC6ZhNAPqd39SVZ9yQVwJjBuHJcCD53XtafU02x33ZuoQFeq3iuj8CBX0wLzThgsPCocv43zmrrLUtozIWs2ruAGQGAiQoV9THZeOUMu5sS4g1zEH0pVlzUWodNluIhKwyRYdoFPBV862Ef3h8J0L6txVdxzfR+Cvh21xhxhFa77lfNwBHUek8mjazRKGWmV7P1DXvzCij6k9rwHrvr3tu9icdwCOCSO4ysS+tnN2VUC9ywb/qjHvjQPQOKmzeefk+BwEdHtyQhrZvpufQTvQ4OwjaecYvmYq/K71vgJHrDJ8TuWse2GRTtcnzU1VX7YMAh2ev8FyANt2R86/tgfCJgHBdAuuyLTBL29+rjT0KNFJLvQdtiuj4LSgogBfDQMSVI849b96JRoN+/Xh4e9+dx4VGqGdR3ArOD2qSNCltXf//v1wySp2i3DMP//8c8aTiDQYGT/OYGK1PMiyNB26SSh4qq/VQtdAiNigj4JNfmzOdRbdzyhwsuQ9Wh1OuAjB+FdlzGI20pMfo2O9gKdzGCtwm2f4ReMbLeSioBlHtXu4dESxikOgf/GLN136ikO+4w9YfIlsQrSvCoY9tR2YxHMVBo7Gmgt8P9wiM7XsWolffPEFOcvV6kwUUcc/RA98RCxRBKuRpukQfb/b6FJWpjhhjEQblaMkTk7qnalzccRpBj/55BOhqeMOCqp73tRitWSmNrBIxZrjut5KAsiQOzg6svfZ1eQ9pghIZaef8gKN3VnzQPPpCQXOSQGJXLoss8S2zsMy+2wzP1XMDKm3ddBugOgaqbJckkIcPmmV/Z3kvO1IuLkmS/9qwTbziQY+LM24OJ3fT/3Zjz76CO8CMi2jVIXmwCEN2CBTDHvAOWCqHI/gWQO5e/dGpMQxN2ti9GvXSGkjEPydbn6IZLBwPsf2I7t0VZMMnpXM0Z5wO1CPHu9cPyTdtQAeRz/QvPqqD2xsQc1PtspkNErw9ihYfmMiuiaYasNhFYpEWXlh8g+BpLX8u9/xLh4JgU/YpqgIYoFU34Q4fYiP8AffRdLjtC2OS5a2HSS+1rWOYM8CtveHY4uwrXf0rSOu2SFTFGUMRJCz29kmbftNeTvSddGSK9IoHrn+N1oM4HHUPY/jGcDQu4lZxn3j1oTVV5zAQzETjW17jThHc3zR/osqWmW38RtZbAFZmwyEcA5uPzyfb/oNWKR9sfQ+3ZzWSBiHiCwGA+GHX8VxRljkKM+o43VvAEaoc1W5ym8WNtv4bHHGdczGASS9AeH1qjCUq8UPWdHxzpUrxidekZtUzTmLh7x+jOVBIHq48QzdFhpqmmhFmxDSiY7Bg9QVxzB4ZdVffJEFD8FIp+i/3OOerLYyW99z69lkYKEnK4zNWRgzqH8L0HNfxUEnT1T4hs8BsGSScUJfJl8aWxOwoWOeOf2nvNcJHpJE5OMDBTtmvR8jqrl2za77WVj8B7wa89BCaiXbm1wUN1zC+gwpllQSMe7qgVx+iQhAFKPprQraaha9xSI5/a2iqdoQXaFiWUzchZVKsDESeJaI1vg2ZbiJSBgHwFf12K9fvw6j3bGZPWPAEVRMBf6zGFLhH/+RuXVaFmUmdtKvipdatd9x//59p0d2K67ZAN7Fc07j29vu5QyhXL+PV1uZ8RTa8HQxht9jFk0g6b6nGmfj2In3ynAhrg+CeQcgJDupOAC9fr1jI7Hmj43oZKt1+wQkiCb4cQZHdicCKNqEMIiKBB5Llkfu90pQ8A49lkO6gh6l6p4qgEAJB4Oo8x2jbtV9zHPyQa2jh8FCMO2Rcm9S3myOjjAYwx38cFsjY9lERINuCbv+2tl2cD63xRnW4acjMWhmG1gkeutG5Xyc6SrL19W7j2RhsZRd9FFPnq4kAv6qK4FdJ1CisagITYnBrJj5qftng6+LtiH8tw5CJ37+Naxw2/iFbahZ7JPVg0wYDZvY3N629GBIL63OIrz26I7GyAPTpp0TfhBjXxEalNq7AuKht8k0EErRjZ28wp/PPj5l5LKPuO4VR7VTf4cNvO6t1GRyxAdEYOhreqN1aU6D370n39wkzaZaIjaJ7HnZWSyKaUPhJbjiHH7Z/zkYdojlYzLu1SLiXPE8yW5D6rEBgEjxN8WvAf1Ci2gEnWtLP99H4yyI+J7jga3bDikM1Ls7Kk0VA75qEfES5L0rV1SuaRNP4WWEVO0S20XE+EWJpQQJFqftya3jwwg3bC6Ee9swVu0x4KJ8s8w1H02za3xdJNcdJAAB2utZhp2xdfmKVWY4asrecJLHqccIfa1ZyHa6jSFyJDVnbQXfKgfgcwAiXsxGJG7BujwamjhbsBqIwq8tpDEP1Ty5+NE9KH7aD56Yr8tZ3UOpzn6rO3d6g5e6eRNnoLBEsY+02I7d2LJ6xEFqlwzlfP0wsGW3b9/u/W+v/ZPxXHBYDw4A0o6jcL0caMFsfAgcN3f7wGVs5HM+xrcLkhy24Snbg7y3p5ptFboRk64bp3MLFcevv0o103jPf5ulYtqNR8I3Cjrp9c2Assxifzi9WeedmD/9tQAAIABJREFUq8x7vf/619H0fk9s0RgovMZAJipz77/vXsP162a6OERMuu0NTO4JUAphpt3v7dJNZ1s/40ub69q1iyeFfZbV0nP/232bzPyA4tuW6LUWNjUZc5AP0YqAcLXAPBNZ/4QNPEnxK5PwVmSn1+3bosoXdL3XXNwP4VuBfswvHG7C4+pmfpW5x3CNkts253Jp85G9yQo1GRM8dfnFvm8Fwjvk9Doj/EmrP7obAVHfufOZXJira6mPbgmfMdadYbeWJUW5OGwmBZ7xcZpnmXZbfLXrM2Me1paxGjzyCmrlrm6yGfJBZx7CsbY02EeZ9xHZuYRo9HzjDLsUaBtnN4icpaW9CVbuMDFxm5RkJl0IeScb2GvoAaaXHOYqr53Zd1mw6UuXf3S4bbaP+2osp5jzGrbHIsWWfD8ik8KI3dzyN988GnEJbFFtf/8afywt6DrfqHKY4sEvDfm6qHWXXOvjPqQVUSWRcxrSDTnURZKJxsencym/bBmFuI1kwds1O+E5QEO13/nOdyjT0oGvxJoyjEFDWvZh1FqXhzPpgFg/GgLN+DiPHPiuoOEokS7l8ITUQP5EEA1PQ6+PkN9LqJjK2fToPCsG20QRN8S+l72GHb0L3WrOhBjXIQbb3/9sEDHyxZBXFLxjAA0IDtmT6OQoY2QygrOZxrEtx5H2s2ub1MRfX5Ha5Dqu29S9Rxqu25rddlCDxeVYAeaG30srTNcN66PoPpiCrThJJaNtzNbE64d/PUbk/5mfia0dVeLw1kIs7wj5+sa+D9spWzKw5TkvP0lNLIUtZpuz6ucr8xyUnHqxJ2HW+6CeleHv0EVtULNs24OBIxSjadrX4OIHwR5z6mAI0GhbTZBh+k04ozC3WG+jaJQW0zYtCMQBacQgHkVntAbPC3LNRsIedIriL8k1NgEF/4//kcTN4MQngk6D3XThbb4Svq2sgX215kl5fAE5Nz7Jed/Ivm5kKDyk1/qDB0PKjLez1b6fdpzGzxwfN4ltfgjliw6ApbeJlRJdrc0mNzvZWA74o1AdOOD/L13bxaSSAvlCn94kmNoKI9Tx4mFzT2zxwTRfbLvFlWkSDDMxOTaTH0l+Cl1q3isBbYsxjJrBfxX2/YQlGXfeX9XCIwxhftkMucKfrBbfE3zk6SmYePJdR9GEJnAxJjAMXo0Mk8gEdpiADX3UavtnP/vZ8HHbXlPlENtgFw2YQ++JdMgVm4uXEhVcXNbgHwEo9xo4o078xaNXoSOB+54VuwvYPtXpBWn4QbD/6lezH1su1WvncAqKpFFgmklm+R6QwCIitqOCdJV3TkbI/fs3iSh6vsM2n6mj6RPojEgja3gPtdpbvzg5UZ8QjXsfYVK3r3u+T6JP9beLRlpNC60rZ+/b7A2BQPADevLGo0ePhC0SHZp/hpRNQ65Q2Z179fj6BdJumCyyLP81B7jWBoHhKbPHcQI6dMG1CJcqG2oJLmeVxOT1eC8Z9GMwmiCxx1HqutQ2HkSzFJ4eVKlXytmgfKx13+recGZN85NgwrN1HG1Qgb+ammdUB+KXoYRliBJg5CydtXTdNeeBzUGvEeLRBGNii1w27Yh5XcufeRwFgZxkYTrEiRkaQNd8J5Tg+SXNvMGUyFMgezc/yl3merOxcArcSRdtvv55MNgL48w8O9vgzfUFrHpR8iQpJWjY6GCocGbnDvlP4BIti8mtXiGeH648TINpzkWdm2HDYP30TY2cmDv88/7cxnOFFWdmLoZoeS992ZeGV7CsCNsZfqnqWgYjtRn45x+ELttliHYhuQ3p8yt+RfslkgdyETbXAsPukauBSKQBAiqwZTUXpVgx3OXmMYSTggynVY7eyjsO0IUxZ3+5Ut/FVJjZjGobAcDsNI6Qwo3vmXHMUHt//dd/7Y08QlKK2Bke7clrMRmEMcculSpG9aK+kBVO6hOOAoNNcOgkncJkg8lqDknLZ1FRYXyF2PqrPl57lY07g19V4k2/FgQnTXPdbmn1QRrsZ7je92/HhZ1lM8oKc8kOThEcAXsw9LY2pvRgW9OiuK1GG4rqQew6DKhUau+k1FuGw/UppSvTbobA48MOapvICP4JlMYdBdW46JU/Qp2XVHVheE0B7Vtow1WRDrrxZG3zDqs3AL2o67YmxHJyP01SpU5gB3og//NELHOQ4eF0eUKLQKkWhj8EQEVEXVb/nAgIVtdoMl1XZQ2mI/qr1nsd+a7LEYZ/es6yz+tsPwnfet90AzCvikv4Ll9vPmw4Z1u8fmqR327n0N33+L+i4gvJieJMZJA8V14na0zCke2QZiC8Ky74fwVFNQwKaX/SoVI8Yqmo0w7d33D4MqWEkz4WtEd3Ex/D5OU1jvzBkIC4bGY+bwGZNr8cHopiiFap+c4O2uMDVh16bta+C8TQn3yCnh0J5EjxvRrVVVJg78FgpapsqeOBOGYQZ2D9yl9RuUMxSj0ZcIqhKI4MxAmhWnvLF4aF13KHJ6Cafz0mKxXrpOq393HJfomEN5vlcKFFRsFaerdfnvzctFYLIriSSb2WYAeuCDmso5RAjVMgxpePFH3l2nnbPM03DX/w0Ikd0i1ezxKltZb6C+g7xwuNHa2/Cg+uNx5cf0r9936kZ8NA6/LmM7qIM9Z18V1W89Yk9SWKTG3PwLvdThqTplzJjSd0eS9Ae2nyV6VIhVpcnN0V0DRLtJ8ueG09x8gJqj9DP30XAd77GQLILxZvvKFiMX8cHj0S9yuHdMW15SCIrDG08pOf/MTc2dPTBDeskJxTn0jZT6m62swLNwPcLq8pkG8b4GwKPqFEx3QqqNfELz0Qkii0wHiQXOTOc6LiyrKRKLFU/qaJPvym5CI2P/gB3qLnYzcr77//froxa7HR1in5LRK8BxNaeuPTw0t87949840q3mXzLGGuyk6qah2Gru7GKs7hmWgNzgB0KXEpOkQCrvEQvpGU7LYIL0LHkgmXnMZ8+XUHJyWgaTS+jHeThT0FjIkjKd2HEfZuHNAt20tip91LgJnAXdXZDIZZm2OYe2CxnNfpRIBIrUBm3pp6e4+AEG2GbEmiwzYNCnD92ypdaAtFle3FnXyA7asRp2jJxoewllOjGs/+KgIcKupvHAd0kbYkJ0JBVl29M1x0MfKPsIf40fFJPIZDU+LgcruE0sN8/CGeYrlWEgsyONU9SZY2XNn//HNI2219BibUHLWrQ/rHC7LDy13mxZASEBxBbDxjm/cjCGIiJzAspYY3Njc3DUjEDK/AZm201UGUl+toqwXaw5NgPXoLhWVJTVfkZmmf6ZGzoYAhGLziwJBg25HRd03pUKKFcDyLT4KwKjqtTo+6rG3zLULQ9O2UdFXaY4fZ0MJ5catRQx1nMzCL1FkEk2yNKcwzuknkyYPbboozw58hzlmgf0GwVjualC9GtYXBO6rZ0yaGvqWuDKdOl5/CfHL37nB6d/kaplXmHCBNE7SOmFvovIwfx2DViXv3Nje77o0hRrcZG2ialsmVurA57fBCRmv19cjIkTEuR0d+sVmEf84CqraSfVXl3iaM1v0uk2vXans348PjYUIe4QXjoJHB+BG4iQaceFHttP3DQ+a6Q+Xp9c4YJYVcdu1mTm0W6tx7MMfmT0LBgrcf4HNPz/jSpeiK8uR7kbYpKc9ZP/7oUWWmYsw93zGDLT1HvTfmRsPUG599u1oDgCLUubGKE2LaO7UjbYddxU7qkrllg3XQO9Wffu21IArslL2Gf6Wur83RgzWVsan0v9ayb3vqGCE3+L47GURFhOQwQPnG13ipY+J6nCFaV0q7OoXq3t8fwklMD2sv8euvkyXpZFn64kdYMAucy9HQPCOP6/+DlgiCYrgAJJCrvx27vFKGFai6jmpvN4H3zkrXDSpWl96oOt1iMWHe7CjPHGisuyu6Ji93JSAoYmCwN6yYQOf990NjV2NMKarxviGJxs/pX4TW4pyunfKRLfi5klg0ZynFrEQzNAZV9CIa8CtiYCu7fntayNITO+3QPD85qnCHfVnUV+UL6D391bVrrnPQqUcv1JHfxCmacKx54PtxQFGiL7mvtgpDzUA/ONsIuGK5TOCNr79eLn80hKtWBePENVGHPxmWhGYBLvVnNp005uzb5lTCrup8pm5LXVYquqwPaM0gA0uC4ngIb5gne6l+0dqEtcWLCDC+odNBXSB6B/IQ6LvT0MB/pseOA3y1aGz4HW5MY+UZjqZIwWKJ0p1QdpDd+f41rEN3f0lIx5ig7FRfl4v30j1oLup7H+bA0KOC965I5XUYDpg7tX++slkfNcrPX7+uGCX5EsIl9d0CdqpBB0FDKX4aE1eGhQ+cnHimEFI4K1x5TvBQWvuGK1DXp3EZxgZ1ri+teJ7xlIAnD1OEYvu5nCzSkgzHNl0K79ppyTWykXHV9FPwFUZlttTPuHQpSgZGtBtxABU47MZ79UV0eZey76eJtG2C9+9UlnwlB42gndLkCg4CMngtzuFfGxJJJF9+qbOzXROlD79YO0KgjGb2otLVankIrIyTM/mfnW0ROEE9NR4M/bx/rpYAA9xZm1Ul6C66bwKGYA19g/2MNW2tGsjr3w8iOIs/c0OZBfinMBS8zw2Aj/0ZwkwCEqjo3cfvFDCl/yIfIjzXR1mKISK/ThAOIYnOZqB8GsBGptYGrrsBrlAYb+u669ffZy96c1PiC9/x0UI/zUiYdhKf7jcjQ9P+K3W4NUUKrss5anb9fheMGvOYvOQsdDYG3MFeofVWX2F6bWUz3dle7EeG2pLiu+jK2EdX9C1RqcdlWleioQiMJSs1/dVf/VXU93+cLsO/KkgNO3+4Q58ZrtEmoXQ/4UYaLtTyYX9SBIoA/As4awyPkQ+BNReBDWAlrKoy4Ya5xDUYXKpmFEeKd3kPtcoKDXuEVGyQV6wAPXFQc+wQQWC+EIEhjlW1vr4Of0+n6/pPGsGh9Q6+t657uREGeD6qPvnNb+RbMJi5GN+fiGG37aXeR2fb22GlkhQsW19+NccqxBMqNQXe2g0qO5nf0RFfLy6T5mskErRSyTF1tEdAjkLUy/+RrNe+hjn0LjGfkpJKXvtS1y6uw2shdnYSnATzifBJRf2qZTAaw+vaXUGYXfDrq6TylMSYLQ3NeUKxO3fmq+ZtlDsjxMahd4IZVjhLAH2i5clg8rx2RXhKD7W5krgJdcM75efaNm6BmLaLgcYy2kirZtNHnTiGwS8bYWrblleuGcyL4JIdGFaO7FoUFSCrIAT5AuFSd67CxzxOIiShspCBSXO1RPpfMYnaWEmMhXcifePgx+nDYdnIonHc6cSm59GRiP3/00iapZkchZs3x7ZagwPVnkWO6IJHaJLCfld+xxOg2EiuLuSwEd7ftTVzQIze9FvO7So9bmwU3/TUVm2JZJI20h/CPVf3eXKcCm9V1ebTT3czsBlURS0HWBEIHd3I5mL3/s6qegeKKEwJzud1gBQ0t1/bDq9K4YHBiOk3Devf90qUtx4RF8fBCVlfDzDPbLcyVGvRNLNd/bNBfuVBl4kyrO/4etPWEnJ+x3Ts9iJimkxO6K6+dA69CTrxdQW6ciE9dtfdjICOKdE/yc/1HHNyuTMGOy2jJNChAAGpL/Bst1lGjaTmDw6QssEQuHfo++oj5qFNS6Sx6Njm70ECAz8Jm+yhAXSMnm2sJtNKnxpZwLHfR+iwiVeZ7B58773WDjn1/a6/iyEW0tn9k25UBG85DGwUGMI+hcB6LTgB5FAMCuVHQemKWoUNybJLLAUb8WUPoUyY2aIbP9Cn9E8nuGcxqTYh27VwgQE26W3e4VsqAvNnEMvfvElTdPtbmr+LdoorZHTCi8uDbfbJhAHckLI3jd6jePGiduWCRp3oE6He4OZ9BgEbPSDmX3lIBbHr7v43zQ4cAKPy19v2uKTLVrOtHCaCf2xErpibAl2NijDbYnO2bYM5dDb9oJF34M+lyZZlOLoilt0tHTSsmVx6Qo86th7SQaYw+Tff/OEejFJae4VOXW9snYesKZFzupql51tRoJz7GgEvJSidXO2QV5VPZ11jS/SGI7B7RnHMM7qPDhWYJ0/2iS+nd1xPrEqBnNm4YZsMmvUBHejYENtRdF7dOQzbOO5eW01iao0FfjZL/14Rf+DGRueqsUX99Ahi1D2f4XuOddDJ+k0Mj3MzAXrJk8Qal+vzrEqcVY6mZu4dYfzNXAXmiz4SgqnBSjfWZgc5XJ5UbW1NuMHAIb1FJh7Cf4yq8qa71obUFBOJnsTAfCUz92MtbbvN0pY01QTnI4FG3Y7s0FU/zf3Eu1mhVTihxzoEYal5loKMDWX4VT8zEPDXXgPL7i6ZGE276jkKyNdwbjaE5pe0zGYXE0ehC6J3ioxsWCOm0XDiEuSMIyc1h1qwcUPidcUpuI0gCLDTj29XTDWPoWNqeKT2+361fB2RC+Q1ndlF6Q2JTlOxQ2dbkdUz9zf6oqRK3YxDUsCq2OHRxaLsbf7sWSR6DywYJ3amXk6N3GnXlPTKXSI8V0mZA9C0liP4Goy3mrOgK9x+UNwa8d3zLczq735UIF13gqYXc1Qj3DBnnTavv8qld7bEiRRnFoyPzuPzjIU/PHz48KEvz6FV2rITDS/73b/4i8QVlex7afwWVmDFKF6t2L1zZ+7X4AD/jBGCo0vygil261//OomboATYGiFnSl5hN/hMYbs3C6kor5gP+iqvxWaAkSpzQ7u2pS5kfeWKlIAF/IdwDtzQ5iY9BXHSxc7B5PYjYy0sdNMDD6TDrhd77JnBZUiyzYT28Heo3dPTRG0Of6HqPDKfhWx7I5ODNFMdnTX2Lo8v5amYYTwX+IwX2Z8+pUqvEqwdgcHLXV1jvrNENa0Eu8IYKaXGO1Q7xPNbNQuwmTvk15de2q9/3TTju+phbSZojnEXD3nzJS/IRIsZWuyOT4vF2P1cIIfH7117Kqp5k4614gY9ulNtN0I02BaNMq3SbHnPiOMPnB2WSqBpudFi5mnpq43sQJ/Guisqol+bKsAzlXgc14XbGafkWjOmCvV3OKVOlA6YIjRhN1wQbWL1bB9SuL1ywYCusclRXZr+qd/CFbv/6E6bEP7H6uaqNV/qdS/0sCrnk4PZNvuefttW4Gp2XxnxfZ4ykkFiS6sUUr2NdFxteyUVvZPmesUKr6D8pgmKchQol0rZhqtd0UO9NLuZbPAeFKZ3BMiEu79zbMSLwDY7eMgvLru78oJ4XdaBMzA33KF1X5fRTuQIKRCWYtev5DH62EpzfKH7PlNtVTEE8kA4ZgzQB/XlLcnXultelB8XGSNlPt0E3syJ6a3KYJqofPvb0hd7X5DWeSwf3/ctVoBSffEF/ofKkGVrMPnL7thxnK6RP5/NNGmzpPMqC5Oh7XQr3LNrvIS4VBsufNNcJZNughebUHaeyi8w0aFuEP2wp6DaOaXIibIv68zOmwp101Rod/MjkMNDP9e2KyE/dmmqx3ejI1dFs/QyvXts18ZGkKUBN7uPvJw6kxpfLy3TJKjEgo27mzOy10Uy76vS7HVVNH2LRWxmP/YVOe8zt/XTTz/dR4t5XJOFYWUFYvDDBKGc2bJ0OGZ4UbjtNGZvMFCJ3nOCXl7PdlaSRR22po+rXJ+IA2ER9/RvYkqXmNPxALUe3Eyd/cIazC6bjmmlJTcsK3sfbXBxUVvPR7uHjBT2mVPQtMLLEaWjPmr9ayuF6r57V9GxaVdkTXKMfH1UN9W/TbouPHEPcROxGklAC+2nmwKf7jcdeRYPaKp+IAtAZnUlLoYgau0sH2XtN4sarwWFDmRdbFv1CdO4+thdbQDy6Zvm0NHEMd7Av/12JjWLBvR2pGCQy0zJ6r3Lly9j8Ct9/Mogl64u2gzL8mvSqKry4l1neGicyS/Z1jYx1WSVweUMfHa2qy3w4zkEpS6u+tUN2tLDCpfeAY2NMQA6DXePbyrcVFQCYrgTCw95fJL3YtB6DWcUvJrHXfoDVHYZDYbNzMzgCn2E7x0LZrs2S1TTjt1dAgKm0AhKXFiNbhhXXRRk+3u7aU9plDBhs9HFgv6aIZLU0SY27nU/drWDKcMqN6CewTUsK1r3tVgvxmoK+nIrFN0FCQs0E0cnuDplslZ9K5SQwvy8her7NQ+vhS6lq8zb5YrtuYo0rnpykivKUHumTkcJNmZ876X0ng/pmicx8WhIMguH1u/qr4hF78/QFYC2xODZl6PC+E7axjFS5oRBDpULnjzRe+Et6NZEjz1twCPeOWcX7Der8W7slWJ2+yINwN3OiEKWtkL4RpDuNjfng+cUI//m8Hynq0k0ZUMrlykY0K+tcRPj0XqG24iMB9lFAoII16ZR3MxOKBj/rZy3VaFYmsfN10PI5cXBthAONJKbwHuxZuVoPXvTZzMNjoRxh/Xq4kVl7ptmI7O+JYRT2SJhTun2bn3yCVpeqaJ3z+yQFD/Zd02mpbgWpaIwXOhq21owkoqr7L3Nzb/4Qp5oKmSKzI8yRaKXQiU266QgM4sCHs11prgqM/FEv/gqhjfn2+lmEOYgUoIflG6n1R/owUyTrekV65wO1VaxcgUrlIPpRvq1FOBiSPRatPEptiM9xwBtqnfKsvfCFje/YvYXv4itLntSZuWlQD0n6eqrtvGXBCFKJyTQjBDaFuTNmxJDcBIjV/HlNhHaZDUGF2fb00fUmPkasVhsyxTxlpPLL3XiHAO6N35HBD3KBwC+gfmTOKpqeUbZdx3zGY2x9Mdv4ePAeullgZv14YJhsAPITJrkaXOVglj0ztBSPR4NQri5amF3a6eq1WgkMZKoMUoDsPj6ZiKLjkaAF2oonYCczzTb6GWMhbfOa1vbXt5vaTYUbT9uoLg1qRhgEfZiplMGeX7hhZTn0He6jn2uNp9iAEm2qW3Ca6+uOp0Dl8VhZab7FlKfR6bf7t9n+IldVHbVqgfPYWI7ZcR7tJharVMHugLt9u96OO2+OMgo8RCIwTotRty9e1UQ3VPZKIfIxebVC0p1IhGstK9pCmfAdtq+/LJtB7UDz8zk+Pg4S8jDuNIL7gRz3vjeE1rxJFtgQUvVrk6vdQ3PdWhUYc9AJKP8QxEQpHCY3UEQDWxeyUgdl40Yh+DNfFiRmxGLPzj+SGFdV2ZRhOE8PGc/EX16QGKfWEgcroKQ6hkGJJXY0Oh3sVFEZGRqoTyqK4DCryT+UkZudYNwkeEnz9CU4QEbcIs2sqc37l731ztDSpKYWvUJOnjyQ78EMIKmOIkPdcd37+JB1g4QVPr8L5c3P/wQ0zX1IX2UBcaY1nhwPg4lei40i+tew0kBXZyLXgZ/XlJt5ZZW3+ucOb6IJdl8Ibyzfr6l2YhX4U0UWScnXPDsfo+5dcxTk646W1SKPppkGrx//761+RQSKRuam5Q8zLrrO49SouBTy+U7SnSNcU8oxxQDJWdJ0Ivpo289T0FHeAu/NTjtg1ih5obbyCnf9IJlGJWEonEjvuyK2NhLr/7YLiQn8GBm9fYu534dArjDm0aTfu5+f/8zCog2f9uKnrfmvgo7BkThieREFiD9aA8C9YxRJU7iZpSK5CLhBO3xtx1U3ZXR01mhL2vi0F+UuwHK1ObKg1XUJTmxMBeBnOmljVeu0L4q1OfUDFNtN/Sohrvp8j4v0YSIUoPNmqik9jeL7Hl5SMdkTY22cOu+Fkyvar0v6Lx4RwM8cAC48672R5AZF9JarUpoUUdWOFDtvU2MMn+77vvQE1veh08x2gs+ezyNxXs4lPvlL/VfrndzNF66p0/PDpCJSxm/2GIR5uoYnpkrzH7q5D+RPF006WAajXmvIvlusjmF+DRd8RXQcR0dUN5/bvf8+Nh2jQ5XEBe11xF3q2sw7jisdj5qxi2k6ccCAjnAyXi37t6EwvxVaWFbHwZyKMZV4BKYYKVEFIuicJesX7dRXXQRa2mSTnDvbWv+9vzPpDMjd2q++ILtZshVHJDO/Xxx2nY3f4Bgjswqj4FShIEcpUF/AFN/Fhztc7miVptk4zUeLqzAYirxxJIOeyrj99htfhiEcVKgQnyaL++EnV0HqBl7ax9rtNzG+elaTcaksz5DVbFFmIJZ6c5DI58+najxZVe2IAqN7hHLXRWhftM0PyYSgmCrgECKu2uBzdKhbKDnSsYfzqc8gxzreWmxiegNAyxu3UKxvPm9xd55AyhatQYsWqMdPvH06XCBkXk3trxCOfpyaQOp1SFUvOJjDBMeb7TU8QRUsTSUInDl0Pbc/YAbUO6444/s/+3fzmYL9Q0tLWJeOMHUTvaKZdS72t1uAipJnrFH5h2iel8ueZfNrWY/ijVUYzqX+i2RO4PK70b/jqApGYPpFXwRJnyTRto1L+EhOEv91Zh555CmZ1L+OFYxXaeDLO7iFM2/bYxfawfxp2d+9q1VGGuoYK+HTmu91uk1GeHZUUTEntTDhwoPr7X+UVQKCb6Tx+YLbT0KZxR5l3jXtEhssLb1/GUtZKBKD6e7sdVOrswYT0Bbq099Dkc3VSLIlPq7ktZWFjM2mT48+U0k1NzSYxwZwNH9kjMLnTOlu2xJJtj8MuK2o9DzMhpZanRFTjfLoWceN/DJQs3wTekHRhby/JoHn7qT/Zwuh3/5ZTbswFx3xJZL9dij0YE8rFfFkMkZVhK13rdvLwyJusG59u4MIELg/XkQot8RLv9Z+mrCeGlpsQVNvVD+95KqHZ9ZTg0odyqCv7VhNd6ZXQ+NW875sqf7n5BB5WjgZnM6XypTaMkSKjaholc9D/qJlVAzCVGh6Fls9IJ0aKrkAWHEvleLirnFrNACFHoC7KB1aiWx7UvuaTT8Hoak56l0Q3GrmJVdl3Z3iKTf0aOh2IP3zRoSxy5qWvrhktXS31SD/V58seEWt65LFjJUGwVIGvjWTUOtAjUBrqe6RbJw3V3jI41dRc/Qiy++WOO6baSfXgcdtwpf6BpXaqzWS3GlqbVmzBaEhANgymFzGbLkby0WqvNGoneUds0/AAAgAElEQVRGRLaPp57Tgn7hOLa1KknahX962cUFYyOAwW5vNM3G7ExyVZ97G8gdm2kxfWvzV+7YgSrsXyuhUGjvpVvdYC9xABBiKudos5Pq4P3fVj4eJP0bJl21RDTg3XVRd+3MbXW49PLq1WYn3OplaIceupTtrNSLR0cjM+CFwAs630cqem5+fZmhkALuePrL+WRdGjN5aZDhJp9fRoe+tyH+JhG5faMm4XquOIM29E2EvLuq6BI7Ft4FQKRUupuM6KqiME6RbNthdbd+k9Tg0Pe8o9d3AUbS9WA8UQGuHgSvA5Ec/OpXo5ciG4Xo1STPCzgTcr13bg13Y79KRHbYA+GLM6te7zpy6RtWd+9yg2Hbz+lOH2mnpVhmDw/v4sP22f9q7tp647iSc7/mNQEIcBlYAZaGCCegTEuEtMMs2xTd3iVMo8dSLKU1vYnltklk8zDI2wiZOHoRQmBfrCXgAM6fTZ9LnVNVp86lh+MgBV/ImeGImjqnrl99BaA5Belar9vgb/FEna3Hmo54mytyf+UoSX71SUJaYb2XC+D8hb8Q++jRmt0wuI0XVbSijk+/bbbhMW9AObAuzcSJEYp1dDD209VdzDfBRS2XFwQtRZ9zcnKCGTY00n42TaPGBYz+88FndxIpI2CVF7E6yHHQEj/JV18FjJGM2dxh07AR1xmb0Tfuxk2d/sQxMuRTKggXSqpLinA3zFfuzDXwKzB6yy6zhdEx6gBajL3k5ubGMA33vaItBCQ9Xb3H2OwHEqBodJijriCx5VPrh866MyewKl5yHPufxiXeVpN8vPPpRoPC4rICWVuFmd6UaVCVh/BA4fgFCFoTVgLVJIfz65zgrjDNSm30AiWI8XP+DyWGebNA9Jl8kHmRw/bHCw6GelUsRRSLr9CJ0y+aCrx6927CB4tXVqXNZUyGcPqdB5KNVN33VFdohU4NOWa0cOyskGHJQ2+bOcxKNPTAgXqMxmpKN67h9/Y7wRbASygBl1Hi3L7fwlkGN+y1EN4q5CDJTaq3+mbTXGCB+umwGVzfMIVn8B81Dm65njy65kKiDwe/ULs6T8nJsitsz7e5V7UPaESQr1gKEalh858hnKW4c079VwO4ZvRWAluyQfnOyQ2eOYyPD2QWT0nNCt1xx0Skf1nfZB0Gcf/mQEefXEjvo32FnamK99iuZGrwoDR3kRKIAq5NURchsVZigmBnbDwA2/ReUCeAdgUH3m4vPCQ1/e7fjMAa2z4bw52ensKXJkj56KMAcfTAnR1KhAgPL7KtcTbW/MEH0s1Pk9S+evVqTNlelQrJa9EnrAmrzVl8PYp78mSw0f3JiTHZaASy8+rx78S9hlIrWHz8lA/liKGGuiKix+q0PUdB2kD58ZDoNp5+B6WDGyPYygaX0F/dGf2gEGMwWP6+NPPTzDqtm/0yl9buS2abuPVH7u7zeJnLui4KJme6bLVcfMG+r6akXOYFflVc0+zubn3xdc2cyYCchrv+yNoQ58NbRm5Mbx0+7P9Gdtm0laySOOX/IurYn2KvPWfxGl5oOpdTRccZ2zOCeGk5GyrQ8QLt4v17iTEyIif6AKTtD9S59PUs1a/90B+J7mPlkytj513ZYFUUkcXjCIwKILNTasTZyE8NWVY++m/twsne2Zcvz4w6GR0GI76yRPHyfnXlzU1RSIv62fCKFpFN6snlLK1c9SY3skauQmQHgTsMYcQU7HJtsK0effTQNHnPexQ5KuZC8xDR3OAmnqI3A6k0DQMF3flkw6kNUEg2q0ZNnR7FaB7AD2VGIQWzuZt9xyKrP7Fx3u4lNC9zw4bi6M6Cq01o+Y36/TFRHhUGX+MBIGvWDkQrnpN8QzfhDXszpfwAYrHZElE1riLGQ7zxUOiNknYUG80eQIdRaUlUsmhL+dVGRHT2K39I8K894KmHitvImmoEw5ZJ0X8vWuIVNRQ2N5LZekP3m0K9F5IsKTFY+vCPbJlC0zv8z21yOl93QlDNIB14xTheNol7h0ENz/0EavhTmZSRI9KjPKWoaa22iIP14gLinMP5/GgTMbfebgNRqnoNgZeUEGtGv8aHaU2Bn461CwKgzMS6LBwO3C1qSkUiRcRicRyczFK7B/g1wl4ohjKLDHyeuqSLa4SjpqqrhsW+/vfMLBrokIFZLOz7K1Dzmn+UfG9lnfnkWbNzoGSWuHLuQvlgBTSOz6T353WmMZxSf5Hr61l3g2U8O6dy+HWOCyuTejPSCnbRiaOc28wfM23eR3Q1LJ/yiR0qzqi/6V/N55UhwjcXBZ2r3fzMu53KR7+DTB5TRHfgFcnU6vVrkn/0Den0NMA1McR20TCSNFbi9TjbgNrfSZFGCcVtoj9jYwIV+vcBr/delOKbRWj8Yl5eRte0uulH49NDyvFyay42AxAdHcR0KhrilXsHuWOlv1jFlix3b+zGmQ3itNIwTnv1w7lePWUHZkPUh626OlCW8+wB22ks1GOL/X6Tkl//2sRraI/fdPdbofW+5xLjtOe8crZDWxE4aNyznZsKgiyZXB1lUOR04FVqirn2wk5coPiMxwG128hG3Ba02FNiXnJ7a1/7RSCHRtu/NQf7Y905c8mYasUqIj3u8t3dBMilK+EvFh/P5fgpQwC8gwN6Kbp36tL33KOuqvGb7LbP8sGpXytRh4LWR/2o87WlM7HKyl05qLsqVWdDOQ/X3uyGm8Zn96c/UeTPA1JGIf77+fPfzmfzuP2WHryK33Mj0BpBNbVDfbwweGrfXDxRP9nLXpHv+oxhCEwBqzvgt3KSYajbsqwmZvGED1U105c/KlF3XP/vxyXtaUOX9cmi0HGDek0T1XxNSBj+NiHxznj85ue1XoUPXcq7ZILg1YDwD3hu4iNJ4JSeWlqp4xF+WDms620fm2C4/gnNtl2sqvtlQACvz0Ik595mxc3d99QeoFYzS0fvfhX/QSi3gi7BmHSUZxgqFpFSvGuIEX46AV+5Ihah/uabk5MT2J+XAeTD0xAO/O53K7VEGy0ZlBsxAR7yyXgfXyMxWVvn6i/GlqHtujYBTzbOrs7OhunngBAKYfjrpIJs8U2fJjLIw2+Qy16rxvRdKRLTRHLNQJLwiMKBhmrA1AqR+6+iv9evm7AWhzC0wU3X61XR32980Wh5VSinRbdg1Jnoe3TXTSr2QM7te1ewj04j1lE62KgNgEC+bSPbXsePNan0PrkF1seXM6hHi5FEzzw7n4uiSsW5Odrq3QRtUlhFMFi4T0ML+e4UDHzeWr/clWYZwtf+yW9DiVY0e5KJje8RLZQSoiTw6AKnd2ROLRCHYogyxydyuQoOhwfV25m5oKpfLEFNtkws7JrkbSdoJ249JTZYrS7cfjGcDvqDRU+ey6QlYN+rEK9oETD23poFNM71LzSxZd9Tmh/zE4oNFyfmbj5K04UpnLtdjt36o2ANfJsz34LyfxnzrhprCXBmoNrE8PtqdccQrHbYq1UDF/76ujZAWFbD0/5g7TcSKarZszOG9HtvRXtv5ZzxpoHTSKUS748MkRSkEtNSa+4aokAAHGGciE0/xpY5+nfV/9+t7HdOgxD17e7uJhR9yTzQ0dHnIOGZyOnIGmqgLDPdNu8KrHlflZ4J3cJhHsTEk9fICYz/OTm5NkSUT9G+AO7QzRF5YsUp7J9HwdU51GFTWwnmFhJJp3d02P/kSXvqxZTTkwNo4dBzK0buvbf7LgaX/XNVgMpodQRPTHfPGsz7ZEhDFfdc/c5VTCb0z+qiZz1nCfRQEw4AvdJTkA4AkUqx2bt1srFKu4U7GRpUoDSn8a19c5/eFcRlbX4kkegEfuDoaIM8XW6msTINWDJsPnx+Z0S864A9t+7b68EDLx3oiiFbcEyGIq8lAWNLi0gGCoh0b6vXz85nCz8QCS490HpzR7E3vcWXtNvjCJfiVKx7Mk30gXAeoxLb8chO+HadcgOdVzt0UrVPkL2b4+IglXekdJdG1+RCAoLm2jbKIblDqsYFdDwvv2wKecyhnsoIjdYRUeungBPDDcpCZ1VPJY1p2HMtUnNl4aHSo0U/lHbcizwCbBfbeEg6N9UGlXW0xvHEB++4NiMWZ7iLaMWN3oIA6pe03TRE30DzHUtOzqkPTQLMCob3wsd7db2UNjdAVjYIAEn5JHiNn0WydCPzedk8Yy9Gb4up1bcuvXlLv2RaXoUvZhVyze11nWYe5qxGOrprdneFE2l3445/N2bVdgiMSsPmMEsZsd+juSUzT+dF/blyYciMARFYeLqS9xH57rvvvpgmumpjO2/hbOq+wcmkCUMPLwu4IHemA2dNa9XfcW3aDd20sR7uKWVIWdqnPqUJZ61k0qS2SIlSxNS2S+83Mek+brYgiKWd8b35p8xDHWPqn15sPYq+ZAt5upHRmT3EuYiVXarzVVF4Xh7IU9WT6ZYC0ebpH40AzYUddQgNPLS/tT978GXcoP/hD8b8mXRNhfP4AzEw1T1+HwpUm55XOj7uUezlZ2AAFKHN+443732RVv+C3nDe9ofvRYCfEd98aTiDOBp1w3e3LjsB2VHUmv+ssfRKNZ5hWjnf/1TyVpS5XUUBCZd7L2XGUfXJDtkbhPw1Y3Asu7qmCtN12WpsvgInpvQVq7bycg6UjgWwdUaMr7kW6jSmYI7BbeO3G1Tj8j8yaEgVwcVB4GcXq5vv3DretwkpC+SiDXWBGcJb+T2j5zZBRIV2sHF8pAEz6VNAci1w1DqS34sGcjJWKg6QMxe+Few6F31u+tE3BhcOzS3hdkzDR1IY7DWNzVh3A6q/mIJMwTl6lxAMZkaUdR4Wi4FRwFy3ITuNXKYxe7eSq3VFtNP04gyq+IKRSiPi/bgLfVgvmvJlmeN8cRajVwcKp16KaR9gJc3LcZlfmFi3yfYM5VUmZovl6muFhfOtdd95Qcvi8LTiN9/4jyRYjUip3lKu+o798zZER1f7kXWfYrsOOROSq+ku+ryg61bUdvOJe4BZh0J6iI9oYKyNZf3NFMzc27c5+26gMovFxGvb4eKX1HklC3IFiqA66v5Rb+1ES1KDRul4EkY90OcAdp116qbI3HUT+65gfRMfPErWdY0VCrW5CN5b/1zI7ziNiBwvbpIyZ92TgCFGraYpp+20PMHA4Bw21hFNIASD9B0IUjKiZtqTgYZLu2E/NaNta1BYjKnnLYZA79KAAiONsSwhg5t5wMMuCpn1S6DjgrZLL+2V8s1GtNudNZh1SI7y8ra9VwCVKBPzMd/H8Lb794Mpdh+lKfMeTMOo54I2XRNWfrqDg3gZQgjnUXEOIvkpHCFxOOsgzCbjiRkbE5g/yC4uWliuEGCgVGn6TUb6GeUA6h35DB1oRGACHXRvR7fnsLDd1OS9/M2nn35qrTX1wecRr13lByTQq6GIKFZ0Zdnd3WU9Xb4pDOOjmjiywrbJbSvmOsJOzir5dOpZJweuG6LXRDzWg8RW3mfkmowjPu1hyRDBv6FpdqH3REkfSY+8nYKFRWufaNDcBtF8mH1Vaj8My/WJqo0VcDY9kZQBa66CVHhuJLcGOg2siCZg67VXiiaYN+qEM6N/bgUkNt6rowOA9lXUL16gE8eN0/LWtVQjoVyYgvX9KRpdhvuuw3T00SM/7muw7t5Okyz6fScLZKtocL9PDL0ikiE/9Py5/+GuJIazPNlH5XCakH/WkpYWFGpWmNPuguwIFpCv1sj7w5OO3d8qA0+QMGjGGHl4+8kxBk+5SnlZhKQYwzy7oqMLP102+ZhQBCrO7NTThmJCHkNblNWACkNd2ff54/DixYt6YttkFUNM1cl0gMbtsbq9pk7JOfUbaUeYJpWwH0Z75BEGKdtMY6OiNVv3lG2wnh3VutvsBEykDOsOqDAY5YgtYhkYnmRiT758iWoDuyiUc5MQFKgINRiBEu7addIx85glmZNpZVINnBnZ+mDuvG625AL4Y5GlHhdbz/dc0EVj7LbdK8u9cfk1hqHqIJ2DD+gACQrNz4F+igRyJpaPXuxsQz48AGXZ+o7isATKKJOQOxgUWuWca7gAMdB4LGoxBWObYBaacxet5AWjpbaIrfPCkL+Lp1sRY3vRzed5UvgJ0gWeLb3TUisEpWhVUG5zHgm5pYaPJBcLigJtnqjdQBfpsIcb30xvpqCmVhteGo+RNJugcz+WW+V0q+QNmmF98AC6M3TohbO2Q+4+XvgJzrwVHIIyxH8XiqsOHE+VKizSeTaL1Mx769otvtNqChOzmYVBz6UJmx3rM+IgqnT31M08W+3iaXY7CqWmIljvVn+n9Jogilc+W705+G8ZDO25ItX/1GT5g4nAxlxfvCB364JjovirLAnNTrD3m3dai0EU3rTLkZ1oWTqrYZ+zUwdTzAlkI7jacNNRB47CvCZVrrWbnowbttscz15YGTX47yA//fRGkPHCL39WZbkFZZZTniFIX03ALS/dUXNL8imxva2yyrYO3Bs5678zBDpAQb46MGoOqMRE++52UTT7QfFPIZCXE5E0d5mPmcF2Zq99/xXccLtaWYvk1SkHjW+fKnCh1htXpBlY2lLJtSA70w3ybSj9888/14GLK6s3++Iuin3k5wo7MBGseg5AtVrZGZjzLWEnBf0azf/8M8dN0ZXd0v4sScewSYVfbLRWC7ezTeciA4sMut7Usuycn9v3e/To0Y6O5c7HxypWnY04ETS+gJO0o8WivqskMZJFZfmaUaINlMq/vt5KtwWhoX2RQn2FSqvjv20pmvE4X2dry2Oz2J9qM3IWyKGf29ViOi3nqSnF9qDJLa9oJqhdZAGDRoqs5TijkEATN3BGfMkR0ZCdhe9Lw0lixWo9gpeqVcDOS6x7LNtif7iEnbh3T36CFWPMyLNcq0N5GamEe7hUF4LkUgFbNp3vkkU+wl+zlaYo7PHxTEZIHj9+DHUUTy//FC/dQ2r+n6KrjgQa367PSu9Wm7+mBLDcFrZbDgVf76Lm3d0To3HXh/GNGVJ7b3e1kSos0USoR7rgi78UFhQoa+Ix9X4qnTNA6uHSXjMLN6TRvpFY7MQs4FqfzzOtFiINh7O1x4k1iuk8us0bdClJD/N18BcFSVgFpdZgzNVI64YjrX2fxw4BKcybmK8DE1KCyejechDbCZk7lGdWJmr9jDA426vfFHRbErjYPV4no+RfKKtqyMP5zuoQdfstenfDNgjfHskwuWnRe+iACdC9IKdc1JQJpZVGc4g7d8OIePwo9NU1N/ECMjqIEx0VmGMeMN/eFK6bUk4d6omHdiu9QsE4SAz9C7ZtqjvK7XVD9arjQnxK3AFqpQ/SH7ZLlBSPFzeZsrVSZ8Zc1DntxCTaaH20IZO/7OWVucatfTFb3AOeQnxEoKUy/quWbqOHlJwt2NrdkhJ8VzJ1qsKpCciItjzyF6CVlq3mq6/Ygh9dXt0hzrXaP9kAISelXZGX2Se6/NvQjAvhHZuyXWpwqR9tVtoJJaP3417rFVYhOvIh4Tir8FrPGA9ax+a6xuiIWJn2MphLg1ffC83+ZbSrivE1FeKMQw6hbdtkT/0omGqyebtP4IMFkRw45buLsDciP7Lmy251CQ+wWKXDhRVXj4vqlpv38SGFlhsFBiD+2v8V+01QMErRKMGLGNDjorDQGP0cKiLr038/CnXdfb0N2dmhx6p7+PChJyxAtIO2q6IN9r8aaYKVTZ4S3vFYNAo8s3w1E5UO5t5ygT391oDgigs0z5+P/1HvAWtCmw/IljS/GNdFbMEKexLPtWIfNYRcgAPoCgAyUXRMhedPAjGT1tbh1v8Hcn1xsVq5G4/2/7h03LNUEToCYejJdcXwtl7HIH9FHn+TlNvbIJ7zBFT2/1rTv2HY5AJ0W8I4WEcv5mn+7ZDCo+BUNq9SRUZY6PRKtJredQcHB1/a1jlhBsaIsUWmGt95y7+9SXOxTih2hdSutumCvYOedTNLUOT11rHQi44yHPoefFi8P3RJH0NZkqxQPZyYcDO5W3VUNNxqLH2EKw5V6n6vfuXZDJf5ZEx11J0owsATi2OfRCa8nrS1hTF+rzcUo3N2CoRyi0AB5xJ1bbFbgmqWDklZp663aUAMA6GT9srcb1V0byKl13RJvTM1P7S/RgjkdaXSnslcEPHtt+fnwS5cBomsQ/pu58rNdYb1n4B2xTd8zMz1cLLP5Uwztagi5zAWN/iiU85BP5sQS9C7bu/yMsLu6z8qfwgGsbXWssAdZ3wc2ohH0Qtbq4uSdlpXFsDtRODaiC7PbwHwHFSNREg0aguTfxoYjaU3MMGcvKecyWozmcMVlwKBoE0CQ6uSe58a+/SGtWAvlvR74IKus5odHHpeXUkF3DINwsPt77emVNCenk6mLipkjQ0tvrdJaEo5lpI9UlyyprtWB9PIljT8s88+03d9npUUaKLUxqsd1SDwzPlklrgOKMMIfWALBc3Ly+PCIQhKV2FBjpaqoLJPNAFT4DzTaxHd9d37rCaIv05tQC+koRlfGdGxp3C00+VvtX3HuXiRrtc2Z8vI+Pl+OAoYfU4UFzsNl5eXE2pyHUQHMp3kZORMZFWwPhh3SM9wzqAPooVo70PTe/Ckvn6VIiq0hozwmEVaAXlevPBckE+vrz1MnXZdvX6C6YbsDVdfPHumz4q/5SqcH/995o6ROmo6k99TuyvDycR4JRcuO5pipJHblFJtuxPQj1DSzyS7zXQs9KCxOg5oa7aD7u1hWnLMYOEZXO3UQt3F1zcOhH8OKICFDXEzgnnOksdlZBA8efLKax8aH0kFckiRsiC2wYO09MY3iBkCfO+rSAe2FOlEUreIgc9kgvKSgZ4saoFYzTBFwz3XxAuytXc4Nhq5uz3J1gKYmO6/vGycqyuX7h575x28yd/t69vSnkonjqAm5DJKDi7UYapzsrlxR6QtIcuYskFcxwngSYwgJ4+S8PtLkexRX06noZTwzeZ6thiabetR/+7uFmn6p58ixTnkJTJe3tXQuBPnqfyezDzhuqtBOUA4VD5UhuCqmsYs2oXnod5iWZ7C9Jd230bIMeNLa7QIC/9EqnGooYqDk3Tz3O7rkgI8eLOrDSQXf7cS9PEQ13PCF2j3QDc4hitY2vv3K4eRCS+sv6tdR294h/oxQtS+nxpzSircZPIodYvc7FW7Yf1tBSYfGfloR61c0go2JzWp+Hsbw17hbtvmSGJqnUbvNR1EEfljtMaEdE11x0ZZLOy8pKExoLW3KAUZit5hnSflPoT5RmzqT9DgY+OHmzYgMbGLzMXWub7n4r1HspCE1+emX/kAPxvs2HXFdsR349f+UJbKw0sl+AOuWMDeBwzuGCAxdx7agAMS/uCgoETTpvhODNdVXxNmIQks5R7wjdaB4ZyvCAM3s/8DteFTsnWk6qu7iGlliliJovn1CQAlBKI4PCydTMi8IDuVm1ojJNRsJwyv1ChBJ5Krx90ks/Mkpka86tK5WK9BwV9+Gb/x9xK4KzsHN6T7LULqvxMwDVRSqJ7O3cZTle2ulzffd8IDa6yU3TqmYLIbtVZjhfbggeX6jrIQ9v3oRzVGnliPNxnJM/3z7q2p2vLiaxRMsWeid9XLjtFNjEpAR2A+/0R/J3j7SeMu6UpA0OJ9LojhRtxoCcBjiN4hmsP397+DQVVZ1um7fgdr78c+CwjGus1glJXnr2yQO3cF2OS8izgoJTWOJnkc/abjIWQ4WTb4tFzWxbf9+toPHSGcxpyOOdytp450jc8Nu+nFuscO3ZhV3VcjcEu5XS6t42TDjdWhJY0+F3Zjo0Ibqa1MYqIIrvt08G2Wzv3rrwXMzbxQRl0gdw7qyXIODaaER1pBQBjNmm7I2y+CkxK39XJQVEw3dhnd2lfRKQtjUxl7VLRCxyE01NV33SefoFcTBlomlCM+RPr03S8ntJ6+4V1fawcuBXS+FIt4xSeY+9gOgCY2RRWdKMl02RZBJmCM+dzPqE/rnbfT0QKMFSUOV28Q7+Bjx/n5/ffmhC2XpCZLi3H6S8tEwC9yceK2iEmiliO+Pn7lm4BdMgzm2IB8Q1+Vb63qegtiCtrGOLLi/gg0SkZXNcMRVONIJ08/TejfBwEFOb7A7VZA7K+w85ZUX7+H9XhbcOk+GZsq0eOijhJ/MeNP13GeIglPzEN22UDu0Q67oqnhtIx2gyzDBx0b+XTbbL1uXL/coOjOufJXL2OOm7bjzSibXs/lym2vtxDI0XvP7uuzUd68id5+9fSzILvjkf2eFNebS56ariLcvPsVG3rS14pUUvgaTbpjdX+CFRhQKhaJ54X8ftfl84pk0jVbhmCkSaM91F02bbWZXqITELu7vcinugN7lUNKTNd90GIL7fWo/Tm19DE/YXY7414tQspEvLpDVxM34Je7nNuGS76wGkbjkph3e/4cQjubIZUi5vSBUIudyQgUbIn7e4eYaYa78IXr47rQiKmPuglImZS+gwHHd+/m83/JyWSPYA+N3aBawnWQh0vN51EG9+i6lpmz3XHsJhRE9R7yJvLyIhPPNvcAwGYYTk//QQletjBbLv1CRFf3iLOO4FLM7e2t45jK4yWfifEXXOb5m4nyTHw/PozzueWXOOyPpe0QlLvE8cwpqRTfnKcLJMFTPljre7boQxsgPZU2ZQwKV2IwCMhFce7Ifp0UH5cPsANXAylrtpp15V+3HdMeD+hupsd3N4n2rJUffnBenk+nq3Vf6J63iUBuamsnptMOB22yeeHqLrjn6I0kv5ey4y+8fiEYoM2Wrak8SNFdfWZt557Ik1ur2zocTrlUrkaar67ljPKc5fnODuhzME8v9oprXM1QO9j+fW3Mg4L7mRWcmOEv0FAySeDGlODWVtjlMeUpap9PAVa8mYSqvEn9mLH8ITuljeZs+k5veqshNV1RU9WfgIMDzDXVEfopPW7gBXuO/TvON48ZB0XOuc45zDCVDDegTO76x21d83iZxt5vTlhXHrkhhPYQlxC27FszrWTeJw8i6w9amNTnxnsAAAJASURBVGb0PZrUCQqI5T0TFl/Vva+HvMt3u0nLt6LdmHK1FmCmFuGoy8YNuA1++MYq3hTU5S6dIZ+oCips9nMO2uVboIuUbzNqsO3bASyM9Wu+01LXeAji6twtWBnIjhW7btFu0GXVOgkx8+c/v379mj9RcCxMbeXNRhL3BombnYZgfWjKMhJhcMXYr+LWXZxSVkbfdT8T0IsESmMTN58jj+ZTDsrZ+4gOEZVtIUmHxBxaKv90V8HvwKxGfp6CdOVj/Zho9E4Kq47h/cMPo9W3rhBH0+GKYHzjO9HxIy4d436HElyp+Cz9RwN53IJ1n9YwD034+/eiKb+5Q1wvAapscaZnhXJXZCXQNmIGrq7McjaZQJTkc7Fc4DAl+ZOw9IRiViB9m71CMhNBUmgYipdezBC6J/sfbkrlakuCJ98Z2wUkfPPieo/6DGi93lXkLphgW7x/N/LxZJEmsvOvFFmBNJ6I0IEh9FUoN9uT4RcSIDdxhn5NzgHp48bOgsvn7FWrDo84PL2zUPaHD81ctK30DKJKHwayCYY2cyDaR3m2QbJ+6emCIYBeIqn9uq5NJ9IpUhYHc1sbk4CSfjIJFNs08vtheHC1T/mECCqOheeC7nz8tgFAUmSHnmDnX41n2/7SKFiXIEYLxBU5uJc+/eMfIxDn/w9iA8Noxmnvf9f98IMK+YhPWKfiOx29T8BGdMlr6Vx7OYRO8ufNTh5Tg+76TB/Nl1Pk8eO+P7ueILe3FB5bVq0htVffb9+e998Ubvu/BqI/jy8ssTMAAAAASUVORK5CYII=); /* https://github.com/pappu687/adminer-theme/blob/master/adminer-bg.png */ -} - -a,a:visited { - color:#2980b9; - text-decoration:none; - padding:3px 1px; -} -#dbs span{ -color:white; -} - -#content table thead span, #content table thead a { - font-weight:bold; - color:#FFF; - text-shadow:0px 01px 0px #000; -} - -#content table thead a:hover { - background:none; - text-decoration:underline; - color:black; -} - -a:hover { - text-decoration:underline; -} - -h1 { - font-size:1.9em; - font-weight:normal; - background:white; - color:#1e5eb6; - border-bottom:1px solid rgb(85, 112, 139); - padding:20px; - margin:0px; -} - -#menu h1 { - padding:0px 0px 5px 20px; - background:none; -} - -h2,h3 { - font-size:1.7em; - font-weight:bold; - background:transparent; - color:#34495e; - border-bottom:1px solid #f4f4f4; - padding:10px 0px; - margin:0px; -} - -fieldset { - padding:5px; - border:1px solid #DEDEDE; -} -input,select,textarea { - border:1px solid #e5e5e5; - margin:1px; - padding:0px; -} -select{ - padding:7px 4px; - background-color:#FFFFFF; -} - -input[type=submit] { - color:white; - background:#27ae60; - padding:4px 10px; - cursor:pointer; - border:0px solid; -} - -input[type=submit]:hover{ - background:#2c3e50; -} - -input[type=checkbox]{ - margin-right:5px; -} - -input[type=image] { - border:1px solid #d0cdc4; -} - -input[type=checkbox],input[type=radio]{ - border:1px solid #e5e5e5; - padding:2px 5px; -} - -code{ - background:#f0ffe1; - border:1px dashed #d5f1b9; - padding:2px 4px; - font-family:"Monaco","Courier New"; -} -code a:hover{background:transparent} - -table{ - margin:10px 0px; - border:1px solid #E6E6E6; - background-color:#FFFFFF; -} - -tbody tr:hover td,tbody tr:hover th{ - background:#edf4ff -} - -thead th, thead td { - text-align:center; - vertical-align:middle; - font-weight:bold; - white-space:nowrap; - background:#34495e; - color:#FFFFFF; - padding-right:10px; -} -thead th acronym, thead td acronym, thead th sup, thead td sup{ - color:#CCDDFF; -} - -th,td{ - border:1px solid rgba(233,233,233,.3); - padding:3px 6px; - vertical-align:top; -} - -th a { - font-weight:bold; - padding-bottom:0px; - text-shadow:1px 1px 1px #FFF; -} - -th { - background:white; -} - -tr.odd td { - background:#fcfaf5; -} - -#content tbody tr.checked td, tr.checked.odd td { - background:#fbe2e2; - color:red; -} - -.hidden{ - display:none -} - -.error,.message{ - padding:0px; - background:transparent; - font-weight:bold -} - -.error{ - color:#c00 -} - -.message{ - color:#090 -} - -#content{ - margin:0px 0px 0px 320px; - padding:50px 20px 40px 0px; - height:100%; -} - -#lang { - background:#ecf0f1; - color:#808080; - position:fixed; - top:0px; - left:0px; - width:100%; - padding:10px 20px; - z-index:1; -} - -#breadcrumb { - position:fixed; - top:0px; - left:300px; - background:#48A5BF; - z-index:2; - width:100%; - color:#ecf0f1; - padding:10px; - font-size:15px; - font-weight:bold; -} -#breadcrumb a{ - color:#ecf0f1; - font-size:15px; - font-weight:bold; -} - -#menu { - background:#34495e; - position:fixed; - top:-10px; - color:#FFF; - padding:20px; - padding-top:40px; - bottom:0px; - overflow:auto; - left:0px; - width:240px; - border-right:2px solid #34495e; -} - -#menu p{ - border-bottom:1px solid rgb(85, 112, 139); -} - -#menu a{ - color:#FFF; -} - -#schema .table { - padding:5px; - background:#fcfaf5; - border:1px solid #d0cdc4; -} - -#schema .table b { - color:#006aeb; - font-weight:bold; - text-decoration:underline; -} - -#schema .table b:hover { - color:white; -} - -input[name=logout] { - color:#fce2e2; - background:#d73e3e; -} - -input[name=drop] { - background-color:#c0392b; -} - -input[name=logout]:hover { - background:#ea0202; -} - -#logins a, #tables a { - background:none; -} - -#logins a:hover, #tables a:hover { - -} - -#logout { - color:#FFF; - text-decoration:none; -} - -#logout:hover { - color:red; -} - -.js .column { - background:#ecf0f1; -} - -#content table thead a.text:hover { - text-decoration:none; -} - -#version, .version { - font-size:50%; -} - -#h1:hover { - color:white; -} - - -input[type=submit] { - font-size:13px; - font-weight:normal; - -moz-border-radius:1px; - -webkit-border-radius:1px; - border-radius:1px; - border:0px solid #469df5; - padding:4px 12px; - text-decoration:none; - background-color:#65ADC3; - color:#ffffff; - display:inline-block; - text-shadow:0px 01px 0px #287ace; - -webkit-box-shadow:inset 0px 0px 0px 0px #cae3fc; - -moz-box-shadow:inset 0px 0px 0px 0px #cae3fc; - box-shadow:inset 0px 0px 0px 0px #cae3fc; -} -input[type=submit]:hover { - background-color:#34495e; - text-shadow:0px 1px 0px #000; -} -input[type=submit]:active { - position:relative; - top:1px; -} - - -table -{ - position: relative; -} -table:before, table:after -{ - z-index: -1; - position: absolute; - content: ""; - bottom: 15px; - left: 10px; - width: 50%; - top: 80%; - max-width:300px; - background: #777; - -webkit-box-shadow: 0 15px 10px #777; - -moz-box-shadow: 0 15px 10px #777; - box-shadow: 0 15px 10px #777; - -webkit-transform: rotate(-3deg); - -moz-transform: rotate(-3deg); - -o-transform: rotate(-3deg); - -ms-transform: rotate(-3deg); - transform: rotate(-3deg); -} -table:after -{ - -webkit-transform: rotate(3deg); - -moz-transform: rotate(3deg); - -o-transform: rotate(3deg); - -ms-transform: rotate(3deg); - transform: rotate(3deg); - right: 10px; - left: auto; -} - - -/* ==================add by warlee==================*/ - - -#lang { - top: 0; - left: 170px; - z-index: 10; - color: #485b6e; - width: 50px; - background: rgba(0, 0, 0, 0); -} -#lang select{ - position: absolute; - left: 0px; - right: 0px; - top: 13px; - color: #677d8e; - width: 100%; - background: #4e6175; - border: none; - -webkit-appearance: none; - background: rgba(0, 0, 0, 0); -} - -#menu { - top:-23px;padding:0; - bottom: 0; - width: 272px; - border-right:none; -} -#menu h1{ - padding: 16px 0px 6px 28px; - border-bottom: 1px solid #465a6f; - background: #3f576f; - border: none; -} -#menu h1:before { - content: "Adminer "; - line-height: 40px; - color: #fff; - font-style: italic; -} -#menu h1 a { - display: none; -} -#menu h1 #h1{ - font-size:24px; -} -.version {color: #677d8e;font-size:14px;} -#breadcrumb {left: 290px;padding-left: 20px;} -#breadcrumb a { - color: #ecf0f1; - font-size: 15px; - text-decoration: none; - font-weight: bold; - border-bottom: 2px solid rgba(255,255,255,0.5); - padding-bottom: 4px; - margin: 0 5px; -} -#breadcrumb a:hover{ - color: #FFEB3B; - border-color: #FFEB3B; -} - -#menu #logins{ - padding: 15px 0; -} -#menu #logins a{ - background: none; - padding: 4px 10px; - display: block; - text-decoration:none; - color: #b3d3f3; -} -#menu #logins a:hover{ - background:#3f576f; -} -#menu #logins br{display:none;} - - -p#dbs {padding-left: 21px;} -#content { - margin: 0px 0px 0px 295px; -} -.links a{margin-right: 10px;} -#menu p { - padding: 15px 0px 15px 20px; - border-bottom: 1px solid #41566b; -} -#menu #dbs{ - margin: 10px; - margin-bottom: -1px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border: none; - background: #527290; - color: #3c5165; -} -#menu #dbs span{display:none;} -#menu select{ - background-color: #456079; - border: none; - color: #fff; - border-radius: 4px; - width: 227px; - position: absolute; - left: 21px; - height: 23px; - line-height: 23px; -} -#menu select:hover{background-color:#31475f;} - -#menu .links{ - padding-bottom: 5px; - border: none; - border-top: 1px solid #445f77; - background: #445f77; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - margin: 0 10px; - padding: 0; - text-align: center; - display: table; - width: 252px; - overflow: hidden; -} -#menu .links a { - padding: 6px 1px; - margin: 0; - display: table-cell; - font-size: 12px; - text-decoration: none; - color: #b3d3f3; -} -#menu .links a:hover{background: #507394;} -#menu .links a:active{background: #5f83a5;} - -#menu #tables{ - margin: 0 -15px !important; - position: absolute; - left: 15px; - right: 15px; - bottom: 0; - top: 170px; - overflow-y: auto !important; -} - -a,input,button{transition:all .168s;} -.pages { - left: 290px; - bottom: 5px; - background: #feffff; - color: #666; - border-color: #acc6ce; -} -.pages a{ - display: inline-block; - padding: 2px 6px; - color:#48A5BF; -} -.pages a:hover{ - color:#fff; - text-decoration: none; - background: #48A5BF; -} - -#ajaxstatus + .links{ - /*border-bottom:1px solid #ccc;*/ -} -#ajaxstatus + .links a { - border: 1px solid #ccc; - display: inline-block; - padding: 4px 1.5em; - border-radius:0px; - font-weight: bold; - color: #555; - letter-spacing: 1px; - text-decoration:none; - margin-right: -5px; - margin-bottom: -1px; - background: #f3f3f3; -} -#ajaxstatus + .links a.active, -#ajaxstatus + .links a:hover { - background: #48a5bf; - color: #fff; - border: 1px solid #48a5bf; -} -#ajaxstatus + .links a.active + a{border-left-color:#48a5bf;} -textarea:focus,pre:focus,input:focus { - border-color: #75a1f0; - outline: none; - box-shadow: 0 0 4px #75a1f0; -} - -#menu p#tables{padding:0;margin-top: 10px;border:none;} -#tables a[title] { - float: none; - display: block; - color: #b9cbdc; - z-index: 1; -} -#tables a[title]:hover, -#tables a.active, -#tables a.select:hover + a, -#tables a.select.active + a { - background-color: #3c536b; - font-weight: normal; -} -#tables br {display: none;} -#tables a { - float: right; - text-decoration: none; - padding: 5px 16px; - line-height: 17px; - color: #48a5bf; - font-size: 13px; - position: relative; - z-index: 999; -} -#tables a.select:hover { - color:#FFC107;background:#425b75; -} -#schema .table a b:hover{color:#f30;} - - -select, input[type=file]{ - height: 27px;line-height: 27px; - background-color: #f6f6f6; - border: 1px solid #ddd; - border-radius: 3px; - cursor: pointer; - padding: 0; - padding-left: 10px; - outline: none; -} -select:hover{background: #ddd;} - - -thead th, thead td{position:relative;} -.js .column { - position: absolute; - padding: 0; - z-index: 9; - left: 0px; - top: 30px; - background: #fff; - min-width: 60px; - width: 100%; - border: 1px solid #48a5bf; - border-top:none; -} -.js .column a { - text-align: center; - color: #fff; - font-weight: bold; - background:#48A5BF; - display: inline-block; - float: left; - height: 25px; - line-height: 25px; - width: 50%; - padding: 0; - border:none; - font-size: 15px; - font-weight: normal; -} -.js .column a:hover{ - background:#34495e !important; - color:#fff !important; -} - -input:not([type]), input[type="color"], -input[type="email"], -input[type="number"], -input[type="password"], -input[type="tel"], -input[type="url"], -input[type="text"], -input[type="search"] { - padding: 5px 5px; - height: 27px; - border-radius: 3px; - margin: 0 4px; - box-sizing: border-box; -} -input[type="radio"] { - border: none; - display: inline-block; - margin: 5px; -} -table input[type="radio"]{margin:0;} -input[type=checkbox], input[type=radio] { - width: 14px; - height: 14px; -} - -input[type=submit] { - padding: 6px 14px; - border-radius:3px; -} -label { margin: 0 8px;} -thead td, thead th{color:#fff;} - -#content tbody tr.checked td, tr.checked.odd td { - background: #c8edff; - color: #03A9F4; -} -pre, textarea { - font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace; - background:#fff; -} -.size {width: 9ex;} -#help { - border: 1px solid #ffd149; - background: #fdedbc; - padding: 4px 8px; - color: #888; - border-radius: 2px; -} -#help a.jush-help{ - color: #bb7103; -} - -#schema + .links a{ - position: fixed; - top: 66px; - right: 10px; - padding: 4px 8px; - background: #48a5bf; - color: #fff; -} - - -input[type=image]{border:none;} -h2, h3 { - font-size: 1.5em; - padding: 15px 0 0 0; - margin: 0px; - border-bottom: 1px solid #ddd; -} -.icon { - width: 23px; - height: 23px; - background-color: #48a5bf; -} -.logout { - z-index: 999; - position: fixed; -} - -.js .checkable .checked td, -.js .checkable .checked th { - background: #2196f3; -} -.footer > div{padding-left:10px;} \ No newline at end of file diff --git a/plugin/document/kod/plugins/adminer/adminer/index.php b/plugin/document/kod/plugins/adminer/adminer/index.php deleted file mode 100644 index ed6c75661..000000000 --- a/plugin/document/kod/plugins/adminer/adminer/index.php +++ /dev/null @@ -1,1952 +0,0 @@ -<?php -/** Adminer - Compact database management -* @link https://www.adminer.org/ -* @author Jakub Vrana, https://www.vrana.cz/ -* @copyright 2007 Jakub Vrana -* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 -* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) -* @version 4.6.3 -*/ -@ignore_user_abort(true); -@set_time_limit(3600*2);//set_time_limit(0) 1day -@ini_set('memory_limit','2028M');//2G; -@ini_set("display_errors","off");//on off -@error_reporting(0);// 0 -include('./../../../app/api/sso.class.php'); -SSO::sessionAuth('AdminerAccess','check=roleID&value=1'); -class AdminerSoftware extends Adminer { - function login($login, $password) {return true;} -} -function adminer_object() {return new AdminerSoftware;} - -error_reporting(6135);$Wc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Wc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Di=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Di)$$X=$Di;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function -connection(){global$g;return$g;}function -adminer(){global$b;return$b;}function -version(){global$ia;return$ia;}function -idf_unescape($u){$ne=substr($u,-1);return -str_replace($ne.$ne,$ne,substr($u,1,-1));}function -escape_string($X){return -substr(q($X),1,-1);}function -number($X){return -preg_replace('~[^0-9]+~','',$X);}function -number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function -remove_slashes($ng,$Wc=false){if(get_magic_quotes_gpc()){while(list($y,$X)=each($ng)){foreach($X -as$ce=>$W){unset($ng[$y][$ce]);if(is_array($W)){$ng[$y][stripslashes($ce)]=$W;$ng[]=&$ng[$y][stripslashes($ce)];}else$ng[$y][stripslashes($ce)]=($Wc?$W:stripslashes($W));}}}}function -bracket_escape($u,$Oa=false){static$oi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return -strtr($u,($Oa?array_flip($oi):$oi));}function -min_version($Ui,$Ae="",$h=null){global$g;if(!$h)$h=$g;$ih=$h->server_info;if($Ae&&preg_match('~([\d.]+)-MariaDB~',$ih,$B)){$ih=$B[1];$Ui=$Ae;}return(version_compare($ih,$Ui)>=0);}function -charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function -script($sh,$ni="\n"){return"<script".nonce().">$sh</script>$ni";}function -script_src($Ii){return"<script src='".h($Ii)."'".nonce()."></script>\n";}function -nonce(){return' nonce="'.get_nonce().'"';}function -target_blank(){return' target="_blank" rel="noreferrer noopener"';}function -h($Q){return -str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function -nl_br($Q){return -str_replace("\n","<br>",$Q);}function -checkbox($C,$Y,$fb,$je="",$pf="",$kb="",$ke=""){$I="<input type='checkbox' name='$C' value='".h($Y)."'".($fb?" checked":"").($ke?" aria-labelledby='$ke'":"").">".($pf?script("qsl('input').onclick = function () { $pf };",""):"");return($je!=""||$kb?"<label".($kb?" class='$kb'":"").">$I".h($je)."</label>":$I);}function -optionlist($vf,$ch=null,$Mi=false){$I="";foreach($vf -as$ce=>$W){$wf=array($ce=>$W);if(is_array($W)){$I.='<optgroup label="'.h($ce).'">';$wf=$W;}foreach($wf -as$y=>$X)$I.='<option'.($Mi||is_string($y)?' value="'.h($y).'"':'').(($Mi||is_string($y)?(string)$y:$X)===$ch?' selected':'').'>'.h($X);if(is_array($W))$I.='</optgroup>';}return$I;}function -html_select($C,$vf,$Y="",$of=true,$ke=""){if($of)return"<select name='".h($C)."'".($ke?" aria-labelledby='$ke'":"").">".optionlist($vf,$Y)."</select>".(is_string($of)?script("qsl('select').onchange = function () { $of };",""):"");$I="";foreach($vf -as$y=>$X)$I.="<label><input type='radio' name='".h($C)."' value='".h($y)."'".($y==$Y?" checked":"").">".h($X)."</label>";return$I;}function -select_input($Ka,$vf,$Y="",$of="",$Zf=""){$Sh=($vf?"select":"input");return"<$Sh$Ka".($vf?"><option value=''>$Zf".optionlist($vf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Zf'>").($of?script("qsl('$Sh').onchange = $of;",""):"");}function -confirm($Ke="",$dh="qsl('input')"){return -script("$dh.onclick = function () { return confirm('".($Ke?js_escape($Ke):lang(0))."'); };","");}function -print_fieldset($t,$se,$Xi=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$se</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($Xi?"":" class='hidden'").">\n";}function -bold($Wa,$kb=""){return($Wa?" class='active $kb'":($kb?" class='$kb'":""));}function -odd($I=' class="odd"'){static$s=0;if(!$I)$s=-1;return($s++%2?$I:'');}function -js_escape($Q){return -addcslashes($Q,"\r\n'\\/");}function -json_row($y,$X=null){static$Xc=true;if($Xc)echo"{";if($y!=""){echo($Xc?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Xc=false;}else{echo"\n}\n";$Xc=true;}}function -ini_bool($Pd){$X=ini_get($Pd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function -sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function -set_password($Ti,$N,$V,$F){$_SESSION["pwds"][$Ti][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function -get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function -q($Q){global$g;return$g->quote($Q);}function -get_vals($G,$d=0){global$g;$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$d];}return$I;}function -get_key_vals($G,$h=null,$lh=true){global$g;if(!is_object($h))$h=$g;$I=array();$H=$h->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($lh)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function -get_rows($G,$h=null,$n="<p class='error'>"){global$g;$yb=(is_object($h)?$h:$g);$I=array();$H=$yb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!is_object($h)&&$n&&defined("PAGE_HEADER"))echo$n.error()."\n";return$I;}function -unique_array($J,$w){foreach($w -as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$I=array();foreach($v["columns"]as$y){if(!isset($J[$y]))continue -2;$I[$y]=$J[$y];}return$I;}}}function -escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return -idf_escape($y);}function -where($Z,$p=array()){global$g,$x;$I=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,1);$d=escape_key($y);$I[]=$d.($x=="sql"&&preg_match('~^[0-9]*\.[0-9]*$~',$X)?" LIKE ".q(addcslashes($X,"%_\\")):($x=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($p[$y],q($X))));if($x=="sql"&&preg_match('~char|text~',$p[$y]["type"])&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$y)$I[]=escape_key($y)." IS NULL";return -implode(" AND ",$I);}function -where_check($X,$p=array()){parse_str($X,$db);remove_slashes(array(&$db));return -where($db,$p);}function -where_link($s,$d,$Y,$rf="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$rf:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function -convert_fields($e,$p,$L=array()){$I="";foreach($e -as$y=>$X){if($L&&!in_array(idf_escape($y),$L))continue;$Ha=convert_field($p[$y]);if($Ha)$I.=", $Ha AS ".idf_escape($y);}return$I;}function -cookie($C,$Y,$ve=2592000){global$ba;return -header("Set-Cookie: $C=".urlencode($Y).($ve?"; expires=".gmdate("D, d M Y H:i:s",time()+$ve)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function -stop_session($cd=false){if(!ini_bool("session.use_cookies")||($cd&&@ini_set("session.use_cookies",false)!==false))session_write_close();}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function -set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function -auth_url($Ti,$N,$V,$l=null){global$fc;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($fc))."|username|".($l!==null?"db|":"").session_name()),$B);return"$B[1]?".(sid()?SID."&":"").($Ti!="server"||$N!=""?urlencode($Ti)."=".urlencode($N)."&":"")."username=".urlencode($V).($l!=""?"&db=".urlencode($l):"").($B[2]?"&$B[2]":"");}function -is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function -redirect($A,$Ke=null){if($Ke!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$Ke;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function -query_redirect($G,$A,$Ke,$zg=true,$Dc=true,$Oc=false,$ai=""){global$g,$n,$b;if($Dc){$_h=microtime(true);$Oc=!$g->query($G);$ai=format_time($_h);}$vh="";if($G)$vh=$b->messageQuery($G,$ai,$Oc);if($Oc){$n=error().$vh.script("messagesPrint();");return -false;}if($zg)redirect($A,$Ke.$vh);return -true;}function -queries($G){global$g;static$sg=array();static$_h;if(!$_h)$_h=microtime(true);if($G===null)return -array(implode("\n",$sg),format_time($_h));$sg[]=(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return$g->query($G);}function -apply_queries($G,$T,$_c='table'){foreach($T -as$R){if(!queries("$G ".$_c($R)))return -false;}return -true;}function -queries_redirect($A,$Ke,$zg){list($sg,$ai)=queries(null);return -query_redirect($sg,$A,$Ke,$zg,false,!$zg,$ai);}function -format_time($_h){return -lang(1,max(0,microtime(true)-$_h));}function -remove_from_uri($Kf=""){return -substr(preg_replace("~(?<=[?&])($Kf".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function -pagination($E,$Kb){return" ".($E==$Kb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function -get_file($y,$Sb=false){$Uc=$_FILES[$y];if(!$Uc)return -null;foreach($Uc -as$y=>$X)$Uc[$y]=(array)$X;$I='';foreach($Uc["error"]as$y=>$n){if($n)return$n;$C=$Uc["name"][$y];$ii=$Uc["tmp_name"][$y];$_b=file_get_contents($Sb&&preg_match('~\.gz$~',$C)?"compress.zlib://$ii":$ii);if($Sb){$_h=substr($_b,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$_h,$Eg))$_b=iconv("utf-16","utf-8",$_b);elseif($_h=="\xEF\xBB\xBF")$_b=substr($_b,3);$I.=$_b."\n\n";}else$I.=$_b;}return$I;}function -upload_error($n){$He=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($n?lang(2).($He?" ".lang(3,$He):""):lang(4));}function -repeat_pattern($Xf,$te){return -str_repeat("$Xf{0,65535}",$te/65535)."$Xf{0,".($te%65535)."}";}function -is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function -shorten_utf8($Q,$te=80,$Gh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$te).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$te).")($)?)",$Q,$B);return -h($B[1]).$Gh.(isset($B[2])?"":"<i>...</i>");}function -format_number($X){return -strtr(number_format($X,0,".",lang(5)),preg_split('~~u',lang(6),-1,PREG_SPLIT_NO_EMPTY));}function -friendly_url($X){return -preg_replace('~[^a-z0-9_]~i','-',$X);}function -hidden_fields($ng,$Fd=array()){$I=false;while(list($y,$X)=each($ng)){if(!in_array($y,$Fd)){if(is_array($X)){foreach($X -as$ce=>$W)$ng[$y."[$ce]"]=$W;}else{$I=true;echo'<input type="hidden" name="'.h($y).'" value="'.h($X).'">';}}}return$I;}function -hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function -table_status1($R,$Pc=false){$I=table_status($R,$Pc);return($I?$I:array("Name"=>$R));}function -column_foreign_keys($R){global$b;$I=array();foreach($b->foreignKeys($R)as$q){foreach($q["source"]as$X)$I[$X][]=$q;}return$I;}function -enum_input($U,$Ka,$o,$Y,$uc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$Ce);$I=($uc!==null?"<label><input type='$U'$Ka value='$uc'".((is_array($Y)?in_array($uc,$Y):$Y===0)?" checked":"")."><i>".lang(7)."</i></label>":"");foreach($Ce[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$fb=(is_int($Y)?$Y==$s+1:(is_array($Y)?in_array($s+1,$Y):$Y===$X));$I.=" <label><input type='$U'$Ka value='".($s+1)."'".($fb?' checked':'').'>'.h($b->editVal($X,$o)).'</label>';}return$I;}function -input($o,$Y,$r){global$zi,$b,$x;$C=h(bracket_escape($o["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$Fa=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$Fa[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$Fa);$r="json";}$Ig=($x=="mssql"&&$o["auto_increment"]);if($Ig&&!$_POST["save"])$r=null;$ld=(isset($_GET["select"])||$Ig?array("orig"=>lang(8)):array())+$b->editFunctions($o);$Ka=" name='fields[$C]'";if($o["type"]=="enum")echo -h($ld[""])."<td>".$b->editInput($_GET["edit"],$o,$Ka,$Y);else{$vd=(in_array($r,$ld)||isset($ld[$r]));echo(count($ld)>1?"<select name='function[$C]'>".optionlist($ld,$r===null||$vd?$r:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($ld))).'<td>';$Rd=$b->editInput($_GET["edit"],$o,$Ka,$Y);if($Rd!="")echo$Rd;elseif(preg_match('~bool~',$o["type"]))echo"<input type='hidden'$Ka value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$Ka value='1'>";elseif($o["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$Ce);foreach($Ce[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$fb=(is_int($Y)?($Y>>$s)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$C][$s]' value='".(1<<$s)."'".($fb?' checked':'').">".h($b->editVal($X,$o)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif(($Yh=preg_match('~text|lob~',$o["type"]))||preg_match("~\n~",$Y)){if($Yh&&$x!="sqlite")$Ka.=" cols='50' rows='12'";else{$K=min(12,substr_count($Y,"\n")+1);$Ka.=" cols='30' rows='$K'".($K==1?" style='height: 1.2em;'":"");}echo"<textarea$Ka>".h($Y).'</textarea>';}elseif($r=="json"||preg_match('~^jsonb?$~',$o["type"]))echo"<textarea$Ka cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$Je=(!preg_match('~int~',$o["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$o["length"],$B)?((preg_match("~binary~",$o["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$o["unsigned"]?1:0)):($zi[$o["type"]]?$zi[$o["type"]]+($o["unsigned"]?0:1):0));if($x=='sql'&&min_version(5.6)&&preg_match('~time~',$o["type"]))$Je+=7;echo"<input".((!$vd||$r==="")&&preg_match('~(?<!o)int(?!er)~',$o["type"])&&!preg_match('~\[\]~',$o["full_type"])?" type='number'":"")." value='".h($Y)."'".($Je?" data-maxlength='$Je'":"").(preg_match('~char|binary~',$o["type"])&&$Je>20?" size='40'":"")."$Ka>";}echo$b->editHint($_GET["edit"],$o,$Y);$Xc=0;foreach($ld -as$y=>$X){if($y===""||!$X)break;$Xc++;}if($Xc)echo -script("mixin(qsl('td'), {onchange: partial(skipOriginal, $Xc), oninput: function () { this.onchange(); }});");}}function -process_input($o){global$b,$m;$u=bracket_escape($o["field"]);$r=$_POST["function"][$u];$Y=$_POST["fields"][$u];if($o["type"]=="enum"){if($Y==-1)return -false;if($Y=="")return"NULL";return+$Y;}if($o["auto_increment"]&&$Y=="")return -null;if($r=="orig")return($o["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($o["field"]):false);if($r=="NULL")return"NULL";if($o["type"]=="set")return -array_sum((array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return -false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads")){$Uc=get_file("fields-$u");if(!is_string($Uc))return -false;return$m->quoteBinary($Uc);}return$b->processInput($o,$Y,$r);}function -fields_from_edit(){global$m;$I=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$C=bracket_escape($y,1);$I[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($y==$m->primary),);}return$I;}function -search_tables(){global$b,$g;$_GET["where"][0]["val"]=$_POST["query"];$fh="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=$b->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$H=$g->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$H||$H->fetch_row()){$jg="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$fh<li>".($H?$jg:"<p class='error'>$jg: ".error())."\n";$fh="";}}}echo($fh?"<p class='message'>".lang(9):"</ul>")."\n";}function -dump_headers($Dd,$Te=false){global$b;$I=$b->dumpHeaders($Dd,$Te);$Hf=$_POST["output"];if($Hf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Dd).".$I".($Hf!="file"&&!preg_match('~[^0-9a-z]~',$Hf)?".$Hf":""));session_write_close();ob_flush();flush();return$I;}function -dump_csv($J){foreach($J -as$y=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$J[$y]='"'.str_replace('"','""',$X).'"';}echo -implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$J)."\r\n";}function -apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function -get_temp_dir(){$I=ini_get("upload_tmp_dir");if(!$I){if(function_exists('sys_get_temp_dir'))$I=sys_get_temp_dir();else{$Vc=@tempnam("","");if(!$Vc)return -false;$I=dirname($Vc);unlink($Vc);}}return$I;}function -file_open_lock($Vc){$jd=@fopen($Vc,"r+");if(!$jd){$jd=@fopen($Vc,"w");if(!$jd)return;chmod($Vc,0660);}flock($jd,LOCK_EX);return$jd;}function -file_write_unlock($jd,$Mb){rewind($jd);fwrite($jd,$Mb);ftruncate($jd,strlen($Mb));flock($jd,LOCK_UN);fclose($jd);}function -password_file($i){$Vc=get_temp_dir()."/adminer.key";$I=@file_get_contents($Vc);if($I||!$i)return$I;$jd=@fopen($Vc,"w");if($jd){chmod($Vc,0660);$I=rand_string();fwrite($jd,$I);fclose($jd);}return$I;}function -rand_string(){return -md5(uniqid(mt_rand(),true));}function -select_value($X,$_,$o,$Zh){global$b;if(is_array($X)){$I="";foreach($X -as$ce=>$W)$I.="<tr>".($X!=array_values($X)?"<th>".h($ce):"")."<td>".select_value($W,$_,$o,$Zh);return"<table cellspacing='0'>$I</table>";}if(!$_)$_=$b->selectLink($X,$o);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$I=$b->editVal($X,$o);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Zh!=""&&is_shortable($o))$I=shorten_utf8($I,max(0,+$Zh));else$I=h($I);}return$b->selectVal($I,$_,$o,$X);}function -is_mail($rc){$Ia='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Xf="$Ia+(\\.$Ia+)*@($ec?\\.)+$ec";return -is_string($rc)&&preg_match("(^$Xf(,\\s*$Xf)*\$)i",$rc);}function -is_url($Q){$ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return -preg_match("~^(https?)://($ec?\\.)+$ec(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function -is_shortable($o){return -preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$o["type"]);}function -count_rows($R,$Z,$Xd,$od){global$x;$G=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Xd&&($x=="sql"||count($od)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$od).")$G":"SELECT COUNT(*)".($Xd?" FROM (SELECT 1$G GROUP BY ".implode(", ",$od).") x":$G));}function -slow_query($G){global$b,$ki,$m;$l=$b->database();$bi=$b->queryTimeout();$ph=$m->slowQuery($G,$bi);if(!$ph&&support("kill")&&is_object($h=connect())&&($l==""||$h->select_db($l))){$he=$h->result(connection_id());echo'<script',nonce(),'> -var timeout = setTimeout(function () { - ajax(\'',js_escape(ME),'script=kill\', function () { - }, \'kill=',$he,'&token=',$ki,'\'); -}, ',1000*$bi,'); -</script> -';}else$h=null;ob_flush();flush();$I=@get_key_vals(($ph?$ph:$G),$h,false);if($h){echo -script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function -get_token(){$vg=rand(1,1e6);return($vg^$_SESSION["token"]).":$vg";}function -verify_token(){list($ki,$vg)=explode(":",$_POST["token"]);return($vg^$_SESSION["token"])==$ki;}function -lzw_decompress($Sa){$ac=256;$Ta=8;$mb=array();$Kg=0;$Lg=0;for($s=0;$s<strlen($Sa);$s++){$Kg=($Kg<<8)+ord($Sa[$s]);$Lg+=8;if($Lg>=$Ta){$Lg-=$Ta;$mb[]=$Kg>>$Lg;$Kg&=(1<<$Lg)-1;$ac++;if($ac>>$Ta)$Ta++;}}$Zb=range("\0","\xFF");$I="";foreach($mb -as$s=>$lb){$qc=$Zb[$lb];if(!isset($qc))$qc=$ij.$ij[0];$I.=$qc;if($s)$Zb[]=$ij.$qc[0];$ij=$qc;}return$I;}function -on_help($tb,$mh=0){return -script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $tb, $mh) }, onmouseout: helpMouseout});","");}function -edit_form($a,$p,$J,$Gi){global$b,$x,$ki,$n;$Lh=$b->tableName(table_status1($a,true));page_header(($Gi?lang(10):lang(11)),$n,array("select"=>array($a,$Lh)),$Lh);if($J===false)echo"<p class='error'>".lang(12)."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> -';if(!$p)echo"<p class='error'>".lang(13)."\n";else{echo"<table cellspacing='0'>".script("qsl('table').onkeydown = editingKeydown;");foreach($p -as$C=>$o){echo"<tr><th>".$b->fieldName($o);$Tb=$_GET["set"][bracket_escape($C)];if($Tb===null){$Tb=$o["default"];if($o["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$Tb,$Eg))$Tb=$Eg[1];}$Y=($J!==null?($J[$C]!=""&&$x=="sql"&&preg_match("~enum|set~",$o["type"])?(is_array($J[$C])?array_sum($J[$C]):+$J[$C]):$J[$C]):(!$Gi&&$o["auto_increment"]?"":(isset($_GET["select"])?false:$Tb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$o);$r=($_POST["save"]?(string)$_POST["function"][$C]:($Gi&&$o["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$o["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$r="now";}input($o,$Y,$r);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($p){echo"<input type='submit' value='".lang(14)."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($Gi?lang(15):lang(16))."' title='Ctrl+Shift+Enter'>\n",($Gi?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(17)."...', this); };"):"");}}echo($Gi?"<input type='submit' name='delete' value='".lang(18)."'>".confirm()."\n":($_POST||!$p?"":script("focus(qsa('td', qs('#form'))[1].firstChild);")));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> -<input type="hidden" name="save" value="1"> -<input type="hidden" name="token" value="',$ki,'"> -</form> -';}if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo -lzw_decompress("\0\0\0` \0�\0\n @\0�C��\"\0`E�Q����?�tvM'�Jd�d\\�b0\0�\"��fӈ��s5����A�XPaJ�0���8�#R�T��z`�#.��c�X��Ȁ?�-\0�Im?�.�M��\0ȯ(̉��/(%�\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo -lzw_decompress("\n1̇�ٌ�l7��B1�4vb0��fs���n2B�ѱ٘�n:�#(�b.\rDc)��a7E����l �ñ��i1̎s���-4��f� ��i7��� ���Fé�vt2���!� r0���t~�U�'3M��W�B�'c�P�:6T\rc�A�zr_�WK�\r-�VNFS%~�c���&�\\^�r����u�ŎÞ�ً4'7k����Q��h�'g\rFB\ryT7SS�P�1=ǤcI��:�d��m>�S8L�J��t.M��� ϋ`'C����889�� �Q����2�#8А����6m����j��h�<�����9/��:�J�)ʂ�\0d>!\0Z��v�n��o(���k�7��s��>� �!�R\"*nS�\0@P\"��(�#[���@g �o���zn�9k�8�n���1�I*�� =�n������0�c(�;�à��!���*c��>Ύ�E7D�LJ��1����`�8(��3M��\"�39�?E �e=Ҭ�~������Ӹ7;�C����E\rd!)�a*�5ajo\0�#`�38�\0��]�e���2� mk��e]���AZs�StZ�Z!)BR�G+�#Jv2(���c�4<�#sB�0���6YL\r�=���[�73��<�:��bx��J= m_ ���f�l��t��I��H�3�x*���6`t6��%�U�L�eق�<�\0�AQ<P<:�#u/�:T\\>��-�xJ�͍ QH\nj�L+j�z��7���`����\nk��'�N�vX>�C-T˩�����4*L�%Cj>7ߨ�ި���`���;y���q�r�3 #��} :#n�\r�^�=C�Aܸ�Ǝ�s&8��K&��*0��t�S���=�[��:�\\]�E݌�/O�>^]�ø�<����gZ�V��q����� ��x\\������޺��\"J�\\î��##���D��x6��5x�������\rH�l ����b��r�7��6���j|����ۖ*�F AquvyO��WeM����D.F��:R�\$ -����T!�DS`�8D�~��A`(�em�����T@O1@��X��\nLp�P�����m�yf� �) ��ˆ�GSEI���xC(s(a�?\$`tE�n��,�� \$a��U>,�В\$Z�kDm,G\0��\\��i��%ʹ� n��������g���b y`��Ԇ�W� 䗗�_C��T\ni��H%�da ��i�7�At�,��J�X4n����0o͹�9g\nzm�M%`�'I���О-���7:p�3p��Q�rED������b2 ]�PF����>e���3j\n�߰t!�?4f�tK;��\rΞи�!�o�u�?���Ph���0uIC}'~��2�v�Q���8)���7�DI�=��y&��ea�s*hɕjlA�(�\"�\\��m^i��M)��^� |~�l��#!Y�f81RS����!���62P�C��l&���xd!�|��9�`�_OY�=��G�[E�-eL�CvT� )�@�j -5���pSg�.�G=���ZE��\$\0�цKj�U��\$���G'I�P��~�ځ� ;��hNێG%*�Rj�X[�XPf^��|��T!�*N��І�\rU��^q1V!��Uz,�I|7�7�r,���7���ľB���;�+���ߕ �A�p����^���~ؼW!3P�I8]��v�J��f�q�|,���9W�f`\0�q�Z�p}[Jdhy��N�Y|�C y,�<s A�{e�Q���hd���LJ �B4;ks&�������a�������;˹}�S��J���)�=d��|��� Nd� �I�*8���dl�ѓ�E6~Ϩ�F����X`�M\rʞ/�%B/V�I�N&;���0�UC cT&.E+��������@�0`;���G�5��ަj'������Ɛ�Y�+��QZ-i���yv��I�5��,O|�P�]Fۏ�����\0���2�49͢���n/χ]س&��I^�=�l��qfI��= �]x1GR�&�e�7��)��'��:B�B�>a�z�-���2.����bz���#�����Uᓍ�L7-�w�t�3ɵ��e���D��\$�#���j�@�G�8� �7p���R�YC��~��:�@��EU�J��;67v]�J'���q1ϳ�El�QІi�����/��{k<��֡M�po�}��r��q�؞ �c�ä�_m�w��^�u������������ln��� ��_�~�G�n����{kܞ�w���\rj~�K�\0�����-����B�;����b`}�CC,���-��L��8\r,��kl�nj�n}-5����3u�gm��Ÿ� *�/�� ����׏�`�`�#x�+B?#�ۏN;OR\r����\$�����k��ϙ\01\0k�\0�8��a��/t���#(&�l&���p��삅���i�M�{�zp*�-g���v��6�k� ���d�؋����A`6�lX) +d ��7 �\r�� �ځcj6��\rp�\r��\r\"oP�7�\r��\0�\0�y��P���\rQ7 ���Z��4Q���ڍ p/�y\r��##D�;����<�g�\0fi2�)f�\\ m �Gh\r�#�n����@[ �G�\"Sqm��\r���#�(Aj� �qѣ%���̑3qE��\0r�����›0��я����.��Q7шW���u����� �@�H��q'vs�0�\n�+0����SG�p�O`�\r)c�#�����R=\$�ƐR\r�Gы\$R?%2C �[\0؍�~�!�\\��p�#@���O(rg%�?ra\$��)r](��&�?&�#&R�',\rqV3�\"H�m+���l�Q\"\0�4��\$r�,�=����&2;.�H@`���a�� ��\$�_*RIS&��q��_�1 �1+1���� ��3)2�V7� �2l�ڄ!1g-�2f`���,Q�7��0qg�]!q��m6����_�M7 ���7�o6Q� �� �kp�3�g9��s� 3�6�\r�:S�9ӏ;� �\r9�-\0�Yӧ0Q�<b#<Ӂ�w/�G��>r�\r��=3��^&Q;ѣ?q�0\"�0HЙ�|���ʖS��i��@*�T�2�T#�� �\0�C��07]?��&���E ��D�;:/�3�E�5��EQ�e��T\"�m����5�E;��#=4�8��*���LS�5Hr�JE TO\rԅJ��J��J���eG) 8B�8� ,&�G���� ��+M���ɲ��^*���G��14�6�\$.\"拢�I4w!\$L �8b�A2�L�'M?MF�\$�,����Nr ��/4�BJ�¨");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo -lzw_decompress("f:��gCI��\n8��3)��7���81��x:\nOg#)��r7\n\"��`�|2�gSi�H)N�S��\r��\"0��@�)�`(\$s6O!��V/=��' T4�=��iS��6IO��er�x�9�*ź��n3�\rщv�C��`���2G%�Y�����1��f���Ȃl��1�\ny�*pC\r\$�n�T��3=\\�r9O\"� ��l<�\r�\\��I,�s\nA��e h+M�!�q0��f�`(�N{c��+w���Y��p٧3�3��+I��j�����k��n�q���zi#^r�����3���[��o;��(��6�#�Ґ��\":cz>ߣC2v�CX�<�P� �c*5\n���/�P97�|F��c0�����!���!���!��\nZ%�ć#CH�!�� r8�\$���,�Rܔ2���^0��@�2��(�88P/��݄�\\�\$La\\�;c�H��HX���\nʃt���8A<�sZ�*�;I��3��@�2<���!A8G<�j�-K�({*\r��a1���N4Tc\"\\�!=1^ ���M9O�:�;j��\r�X��L#H�7�#Tݪ/-���p�;�B ‹\n�2!���t]apΎ��\0R�C�v�M�I,\r���\0Hv��?kT�4����uٱ�;&���+&���\r�X���bu4ݡi88�2B�/⃖4���N8A�A)52������2��s�8�5���p�WC@�:�t�㾴�e��h\"#8_��cp^��I]OH��:zd�3g�(���Ök��\\6����2�ږ��i��7���]\r�xO�n�p�<��p�Q�U�n��|@���#G3��8bA��6�2�67%#�\\8\r��2�c\r�ݟk� �.(� ��-�J;��� ��L�� � ��W��㧓ѥɤ����n��ҧ���M��9ZНs]�z����y^[��4-�U\0t a��62^��.`���.C�j�[ᄠ% Q\0`d�M8�����\$O0`4���\n\0a\rA�<�@����\r!�:�BA�9�?h>�Ǻ ��~̌�6Ȉh�= �-�A7X��և\\�\r��Q<蚧q�'!XΓ2�T �!�D\r��,K�\"�%�H�qR\r�̠��C =�������<c�\n#<�5�M� �E��y�������o\"�cJKL2�&��eR��W�AΐTw�ё;�J���\\`)5��ޜB�qhT3��R �'\r+\":�8 ��tV�A�+]��S72��Y�F��Z85�c,���J��/+S�nBpoW�d��\"�Q�� a�ZKp�ާy\$�����4�I�@L'@�xC�df�~}Q*�ҺA��Q�\"B�*2\0�.��kF�\"\r��� �o�\\�Ԣ���VijY� �M��O�\$��2�ThH����0XH�5~kL���T*:~P��2�t� ��B\0�Y������j �vD�s .�9�s��̤�P�*x���b�o����P�\$�W/�*��z';��\$�*����d�m �Ã�'b\r�n%��47W�-�������K���@<�g�èbB��[7�\\�|�VdR��6leQ�`(Ԣ,�d��8\r�]S:?�1�`��Y�`�A�ғ%��ZkQ�sM�*���{` �J*�w��ӊ>�վ�D���>�eӾ�\"�t+po������W\$����Q�@��3 t`����-k7g��]��l� �E��^dW>nv �t�lzPH��FvW�V\n�h;��B�D�س/�:J��\\�+ %�����]��ъ��wa�ݫ���=��X��N�/��w�J�_[�t)5���QR2l�-:�Y9�&l R; �u#S � ht�k�E!l���>SH��X<,��O�YyЃ%L�]\0� ��^�dw�3�,Sc�Qt�e=�M:4���2]��P�T�s��n:��u>�/�d�� ��a�'%����qҨ&@֐���H�G�@w8p����΁�Z\n��{�[�t2 ���a��> �w�J�^+u~�o��µXkզBZk˱�X=��0>�t��lŃ)Wb�ܦ��'�A�,��m�Y�,�A���e��#V��+�n1I����E�+[����[ ��-R�mK9� �~���L�-3O���`_0s���L;�����]�6��|��h�V�T:��ޞerM��a�\$~e�9�>����Д�\r��\\���J1Ú� ��%�=0{� ����|ޗtڼ�=���Q�|\0?��[g@u?ɝ|��4�*��c-7�4\ri'^���n;�������(���{K�h�nf� ��Zϝ}l�����]\r��pJ>�,gp{�;�\0��u)��s�N�'����H��C9 M5��*��`�k�㬎 ����A hY��*����jJ�DžPN+^� D�*��À�� �D ��P���LQ`O&��\0�}�\$���6�Zn>��0� �e��\n�� �trp!�hV�'Py�^�*|r%|\nr\r#���@w����T.Rv�8�j�\nmB���p�� �Y0�Ϣ�m\0�@P\r8 �Y\rG��d� �QG�P%E�/@]\r�� �{\0�Q����bR M\rF��| ��%0SDr�����f/ ����\":�mo�ރ� %�@�3H�x\0�l\0� �� ��W����\n�8\r\0}�@�D��`#�t ��.�jEoDrǢlb ����t�f4�0���%�0���k�z2\r� �W@’�%\r\n~1��X����D 2!��O�*���{ 0<E��k*m�0ı���|\r\n�^i��� ��!.�r � ��������f��Ĭ��+:��ŋJ�B5\$L���P���LĂ�� Z@����`^P�L%5%jp�H�W��on��kA#&���8��<K6�/����̏������XW e+&�%���c&rj� �'%�x�����nK�2�2ֶ�l��*�.�r��΢���*�\r+jp�Bg�{ ���0�%1(���Z�`Q#�Ԏ�n*h��v�B����\\F\n�W�r f\$�93�G4%d�b�:JZ!�,��_��f%2��6s*F���Һ�EQ�q~��`ts�Ҁ���(�`�\r���#�R����R�r��X��:R�)�A*3�\$l�*ν:\"Xl��tbK�-�š�O>R�-�d��=��\$S�\$�2��}7Sf��[�}\"@�]�[6S|SE_>�q-�@z`�;�0��ƻ��C�*��[���{D��jC\nf�s�P�6'���ȕ QE���N\\%r�o�7o�G+dW4A*��#TqE�f��%�D�Z�3��2.��R k��z@��@�E�D�`C�V!C��ŕ\0���I�)38��M3�@�3L��ZB�1F@L�h~G�1M���6��4�Xє�}ƞ f�ˢIN ��34��X�Btd�8\nbtN��Qb;�ܑD��L�\0��\"\n����V��6��]U�cVf���D`�M�6�O4�4sJ��55�5�\\x �<5[F�ߵy7m�)@SV��Ğ#�x��8 ոы��`�\\`�-�v2���p���+v���U��L�xY.����\0005(�@��ⰵ[U@#�VJuX4�u_�\"JO(Dt�_ 5s�^���������5�^�^V�I��\rg&]��\r\"ZCI�6��#��\r��ܓ��]7���q�0��6}o���`u��ab(�X�D�f�M�N)�V� UUF�о��=jSWi�\"\\B1 Ğ�E0� �amP� �&<�O_�L���. c�1Z*��R\$�h���mv�[v>ݭ�p����(��0�� ��cP�om\0R ��p�&�w+KQ�s6�}5[s�J���2��/���O �V*)�R�.Du33�F\r�;��v4� ��H� _!��2��k����+��%�: �_,�e o��F��AJ�O�\"%�\n�k5`z %|�%�Ϋg|��} l�v2n7�~\0� �YRH��@��r��xN-Jp\0���f#��@ˀmv�x��\r���2WMO/�\nD��7�}2���VW�W��wɀ7����H�k���]�\$�Mz\\�e�.f�RZ�a�B� ��Qd�KZ��vt���w4�\0�Z@� ��Bc;�b��>�B� 3m�n\n�o��J3��k�(܍���\"�yG\$:\r�ņ�ݎ��G6�ɲJ��y��Q�\\Q��if�����(�m)/r�\$�J�/�H�]*���g�ZOD�Ѭ��]1�g22������f�=HT��]N�&���M\0�[8x�ȮE��8&L�Vm�v����j�ט�F��\\�� ���&s�@Q� \\\"�b�� ��\rBs�Iw� �Yɜ�N �7�C/&٫`�\n\n��[k���*A���T�V*UZtz{�.��y�S��� #�3�ipzW@yC\nKT��1@|�z#���_CJz(B�,V�(K�_��dO���P�@X��t�Ѕ��c;�WZzW�_٠�\0ފ�CF�xR � �\n������P�A��&������,�pfV|@N�\"�\$�[�i����� �����Z�\0Zd\\\"�|�W` ��]��tz�o\$� \0[����u�e���ə�b hU-��,�r �Lk8�� ֫�V&�al����d��2; �'-��J yu��a���\0����a��{s�[9V\0��F��R �VB0S;D�>L4�&�ZHO1� \0�wg� �S�tK��R�z ���i��+�3�w��z�X�]�(G\$����D+�tչ�(#����oc�: ��Y6�\0��&�� @� ���)��!����w� ��# t�x�ND�����)��C��F Z�p��a��*F�b� ��ͼ����ģ�����Si/S�!��z�UH*�4����0�K�-�/���-k`�n�Li�J�~�w�Jn��\"�`�=��V�3Oį8t�>��vo��E.��Rz`��p�P���E\\��ɧ�3L�l�ѥs]T���oV��\n�� *�\r�@7)��D�m�0W�5Ӏ��ǰ�w��b���| ��JV����\"�ur\r�&N0N�B�d��d�8�D��_ͫ�^T��H#]�d�+�v �~�U,�PR%�����x���fA��C��m����͸����c��yŜD)���uH���p�p�^u\0� � ���}�{ѡ�\rg�s�QM�Y�2j�\r�|0\0X��@q���I`��5F�6�N��V@ӔsE�p���#\r�P�T��DeW�ؼ񛭁��z!û�:�DMV(��~X���9�\0�@���40N�ܽ~�Q�[T���e�qSv\"�\"h�\0R-�hZ�d����F5�P��`�9�D&xs9W֗5Er@o�wkb�1��PO-O�OxlH�D 6/ֿ�m�ޠ��3�7T��K�~54� �p#�I�>YIN\\5���NӃ����M��pr&�G�xM�sq����.F���8�Cs�� h�e5������*�b�)Sڪ� �̭�e�0�-X� {�5|�i�֢a��ȕ6z�޽��/Y���ێM� ƃ� �\nR*8r o� @7�8Bf�z�K�r���A\$˰ p�\0?���d�k�|45}�A����ɶ�W��J�2k Gi\0\"����d���8�\0�>m��� `8�w�7�o4�cGh��Q�(퀨�8@\$<\0p��0���L�eX+�Ja�{�B��h��8�Cy���P2��Ӯ�*�EH�2���DqS�ۘ�p�0�I���k�`��S�\n� ›:��B�7����{-����`�� ��6�A�W�ܖ\r�p�W#���?���{\0����� �cD��[<����f�--�pԌ�*B�]�nW��^��R70\r�+N�GN�\$(\0�#+y�@�@iD(8@\r�h��H�He����zz�{ 1���h��W1F�Who&aɜ�d6���jw�������`h�{v`RE�\nj ���`�ܷ����*���ʸ}�Y�� \rY�H�6�#\0�廆��a�� Q�HEl4�d���p��#�������o�br+_)\r`��!�|dQ�>��=Qʡ��ζ�EOB'�>�P��Ӷ� A\rnK�i�� ����� �%< �o;�S�@�! �x��:���A�+\\ 1d\$�jO��7�%� �/����gu�z*�G�H�5\"8��,�]raq���/�h��#����\$ /tn��8y��-�O���H�b���<�Z�!���1��`�.(uo����|`GːS��BaM ڂ9ƞ�D@���1�B�tD��ʡ@?o�(H��qC��8E�TcncR��6�N%�rHj��2G\0�a��q �r��z9b>(P��x��<��)�x#�8�誹t���h�2v��Wo2U���t��+=�l#���j�D� 0����&R�c�\$�*̑-Z`��\r��;�|A�p�=1� 1����ƈ�bEv(^�X�P2=\0}�W���G�<���G�����R�#P�Hܮr9 ��Y��!�LB���4�NC�Z��IC���MLm��,�f@eY�x�BS(�+��<4Y�)-�\r�z?\$���\"\"�� 6�E�\r)z���@ȑ��r��� �*��J�윋��%\$�e�J� ��\0A�\$ڰ/5��B0S���x��I�Q)�<��4YS�&�{��b�+IG=>�\r�PY`Z�D�`��U����F1���4d8X(����C%�`�㜭0�I\$�7W�pǁ,� �Ac���&Ԍ�p\$�:�>]�.�VY��\$p� ��]��`�;��e�\0�0�\n��K+ �@DL�S��r(on�M\0@9��%�\"�WS�\"���� 䥙�ٍ�ػj�_J-��rʜ���5�\\�2�5>Ze\"0 ��%9y��^�WMax&a)D�L���2Q����t?�=,�/o�f�3I�J�\$\r;���7�}�\r�W�@�Ұ�M|\r�Y�� �]5���\\*s:��FV!���kن�R���L3L� ��52�M� sb�\$����7�\0l�y���&� 9�|m!��0J��4��TSd���G���nK�V:l�D'/��:Zs��\n ��y�%��i����,@ҲL��j1<��3Ĩ�D2/;��'Pݻ����`���qKȰ�f�I�L� Dݬ�4�3 ��OH�J� q�&�����X��!��r)F�Xx���^QwOP��h��՞-_�>�a����( ��x%��K�b�<�E�j7�������hHt�`�.r�P���x��\"{\0006CVQE�&��>�ޅ�w����e'?B�9x�>:\"�73���xT\0e����j ��[t�Ҝ\"�(\\ K�e�z�r����e> ���\0002�hʇ�� X�a<�JtU�z`�達?��#�����2-��4hFY|C��\"M�yƔKd ���E�7���+(U�ʖX�� /D���)�\"����بމjoh�Fz4�t���D׌�G��RZ�ć�ȿ\0�FV4Q�6v�b�i=G�;Ϭ�k�d+\n>�E��\0�2f{����!J��Q�J� ؘ9��(2 �#\\Z��,��Qܥ�3?8`�  bwR6��\n*� ㋀�ƒ�(t��L*�S�d�\0x�)�(�*�wH]7O�N�v(Гdg�q \nLp��L� N��H@�1����M � n��z���e4!! ��'槝-t� ��AQP���L,����7��\\�i����^�\$�,�|�Z��(S9���\n* +��T�D�z?(T�>��L��æ��R����\$�zдi̼W�ͨ�Ds�{)�@����� v�P��g�qIVҨ����\n )�!�8|\$pZ�*�!7A����N��j�NW����U���Q� ��)�eF�UA�S�x\0[N���2���X :S�T�~�S*T4 �3��]9�F���]:�KUg;�� *Ay�a��1j|8Ϋ����I�MR��Vh7uU���r,�h�%<q�R@N9� ާ�k� �B|�����8 ��r������DР@\"�ɋ�z\r������O�_���Q�\0\0���|�]�f�\nz�����UeH�Ą/k+� TF ?��*03�!�\0��I���t f\0(S�U� �ZA�F��1\0��k�]��WZN�Q��܂���%��x1 ���'��!-,�Ƕvzg��#�Gh�;f�PH�9Bj�u�\n�A�VR����1K+�MN!��Sμ��Y��vdZ\\,���g٨�����\"}W��Yɵ�t�P��g�,����� \0b�-�hB/@�̎�/�M��J���Y\0����)\n��I�?v� ��Ȕ1��\$�(�w\r+�n ��s�s�QfQ�O�P�.D���bV\0-�J<�i;[���=#���n,j?)�\"���lYL.����A::������BxOF7� ���`��� d��}�}=�i)@к��\$ q˷(y%��huzb2�3Ƨ��.�-h�oO����\0`���VZ��&y�t9C���鋭Z��ґ�Z!�X�U����.k��V#8�G�}�Q���u8cΫt�bE>�v��{@{QP]<�ary��j\\��\$j�x�nc6k�;qs�T���K�����jJ���n\\C��{���`g�6�5�Rk�t����s�|@�_0΅5:B�3����rѡ�&�㴸�\0����&�׈�����ԡ��SXʕ�G�m�ʶWr,j� q\0\$޺sW�P�.A\n4�9(u�.���l�V�Ju�Ԍ�+�A�uC�>hl6��2���G�e���N��n�=�'���~��Þ ��PҀ�%0z�u��r�\0��9uE�s\"���\\�ט���^���(3ՑS%<+�9��Ծ����\0���~'̞�֓<+�,i�:��@��N�� �\$�o������� �]������Z�!��]�n,��x��>_�f��W\0006��%�}I�\nh߀w�����ǃ -��H@_�Vi�����{���R��^�۔} 5�b,!5���H��p/��k<��<�jh|i��k��hLv݄\n�`�[���WC6��z\n�g��r��u=��!zCţ���e#��nj��\0 `^;=E�*@�y�% ��LQe���2�A�1,��C�ix�t����G�]q�O(����\n�V9dr�D'5@x\$�r6��;\"ǣ���7�\0M0ņH_#�c�pn>��<aa�q@g�2��lm-��������8��?8� �7p����>��ji���N�\$#E/�0��s\n�B\r�*��z��oyn[Ι�� 6�a����g8�qC� �⼜�I�rNF�ȫ�1��70�����/i(�B�0����Z��(��+S�J�,��91/Y+jxӱF���A��k�f�Jee\r�Cͳrz�m���h@9�O�� ؝��GK�Ad���OH���=���<&`��K�PA�!WO;-�X�L��m�Kz�7-e[u��p�q���o/�`�C����KX�f�i��Y7=�M�/�F�R�۔T�d��Y\"=`�1�k�1Տh�\r���f@N��z�(@���� h�\0�����I�}PJKr���pR`x������fo���(A��[��19�(&jo<��I@p @�����,y� nIs�^Ўѫ:Y��vc���؏9q.C��8�bW��V?��҅�9� \$u�@5#S(4Y���K�� �6�!��N6<��|v1��3ʊ:��!����`��M��l����f`�Z��J= ��GX�Y)_l�А�T�)P��`�%��:�!Z\"lYS�Uؤ(��Y1Z�니rv)F`�K~=Y>���S���c�� ��!l���D����BrF\$��RA:�\\�P�4�V�R 6<�O�S�_BCS+����'V��2T#Lc�F�N BD%�G�W�nR�S����I��\n'k�0�ˆ��O��Ў����8rݯAS�?��xm��yv���a�b��Ͱ�,��ЅA������]pJ\\\\�Xi���Eu��B)���Z@Ώ \"��gg0{��n��'APR ��٨v�~�0R�w쀱\"�������H�J���Ζ�\\�\r}i?�Ғ:��2���g��{I�3)��B��͙Z�s��`.�#2�vt�X�IGU>`)�%���(|�f<Κ_�ޯ���_G�<��_ ˟������[:�6G8��l�#J (��JC���`���wF�w\"b�!,��!�r�@�K(���\n@AsV��S�ֹ�4�_\ns٠eڋj��)&�3�{��k���Q���G�c��X^�L{�C\n�m����A��D��1O?(��(�����2\"UL��+#o��@���X�\0�٭���^n_p�eQ˙X}%��*��e�m�{�GN��Xl�q�]R\\Z�v!�) ���xd΀,�cK��鮇�m���I~����K�{+��Gݥ�=@Q��,1!aEOc��#6<u��rB�\n�Ȳ��dH �t���� �{C�<x3���H��1��K�wB�\0��u����'ӆQ�^���򕥂�i�rRv�Vɷ�lS�.O)����[��xS�t���c)���k�B��+��v���B��w�.�wC���2���2d�.H��p+a\\ H��[�\$}nNN7��H�.�S\r�ȒT �� �w� *H�g\\��\$�,�:KBOx��>����5����Ӷ����u2��n��`��Yq�D���xwMB�n�2>���G�ڄ����YaK�w(2`����w����1m�-:�&LD8�U��8l� �\\<��� ��z�a����:,��K'�%7:���M����U[���*;K���j�;/wG���\n���^�eV'��,��;��B6�G�1��OKW����(i�X\np�Cکc6�^��㷀=�^ûcQ��Rp`\$ �D(\0D�>{�ET�c��I\r{���\$o�R �ZZ�4*��??�+j���n��Q `����X�3� \$���M�\n׉w�\"d�W���~@�'�I�᭫�0+-��w����y�6�vȽ'�Ԇ:Y)Y0\0�*)?'��Ǟv����fI�\n��z�9�.�b��!�c�E�[��F麙ks�}��Bv�g�5�V���,)J\$��j�Z�J�\$�Y��ח9�\0�\n����.^J��ڋ�b��mI0:g��������˗ATP�I�]~!��;D����� �z��<P�Q>�m���`��?%Y��T\n\0D\0�\0'���H@0`�<׭�10�(�m�-��ɞ7A\0�~�~ꁡĤ?t�hє.w�%)0 #c ����\"�c����jfW��\0\0p��C���kC��8��85+i:��[�8�b��l�[\"����5S�y\0�����*�Q�6V�s�9��7!�;\"��c�)�O�Q,��Ա��\r�7�,*�0�aQ�u?�_C|�������R(o(��<j(��Tv��\r|_\"�3��m��S7D�!׸�h�|���(�&�@:� \"-ގ��&Mu;�,�bк=p�>A6ɭ���7���- WW9�O,�o'�v2�<�3\0���h��@`� 3TX�Ϛ|�\"FC_��~x����`��'f�Q-4�����/�`'���=A�\$>��` P��_G(���E���&/J�I�v�'�m餧zpޞFo� �/[��i�؋�G*���y�(�<��7q�Y�.�眪��B���\r�l�r\nUnƧ��T>��� ���� �Q���_�|����K��8�ډ�e��_��xz�x�L���p14��d����U#4t�K���\$�!����p�w����Zx ��_����i5T?}��C�{�����h/Gzj\$.B�Ҩ�=#�Ϗ|��*����I��w/��a�x`*��*���]����>a?'} FJS���ԖA0��'�����ʟ�0:63�� �л��n'��U/�r�|=slb0�\0W�rB�ʤ���@T��~\$����H����� ��D\\���-���(��ᩖB�M���z+�%�(��i��㹃�I���5/�.y/���\$�{Q}p�ܻdI�\\�Վ�B�\0V0�B�9�{T\$n�8\$Z�e�Pij���%9�&���V ��b�x}g\"%h���*ٸvOw�˾�/�o�L,���=��V��5Bg� ϶�3��>�~�`\nxi�\"��v@�����nף�ϳyac�G�'%[��4`n��47!5�ހr����ɉ��>z�(Y�t��0���V���P�ZXT`2�~Cl���[o�n�t8jB\0d�\0000��V��g�����@V!�h\0006d<��=[�W�����f�@pb��a��ټ�s;���G<�~a�?�N�L����\"(���?�%�x#�7�|S��O�Ɠ)�B4��+��*�!��)6#�+?'���(X�����JO\0��");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo -lzw_decompress("v0��F����==��FS ��_6MƳ���r:�E�CI��o:�C��Xc��\r�؄J(:=�E���a28�x�?�'�i�SANN���xs�NB��Vl0���S ��Ul�(D|҄��P��>�E�㩶yH ch��-3Eb�� �b��pE�p�9.����~\n�?Kb�iw|�`��d.�x8EN��!��2��3���\r���Y���y6GFmY�8o7\n\r�0��\0�Dbc�!�Q7Шd8���~��N)�Eг`�Ns��`�S)�O� ��/�<�x�9�o�����3n��2�!r�:;�+�9�CȨ���\n<�`��b�\\�?�`�4\r#`�<�Be �B#�N ��\r.D`��j�4���p�ar�� 㢺�>�8�\$�c��1�c���c����{n7����A�N�RLi\r1���!�(� j´�+��62�X�8+����.\r����!x���h�' ��6S�\0R����O�\n��1(W0���7q��:N�E:68n+��մ5_(�s�\r�� /m�6P�@�EQ���9\n�V-���\"�.:�J��8we�q�|؇�X�]��Y X�e�zW�� �7��Z1��hQf��u�j�4Z{p\\AU�J<��k��@�ɍ��@�}&���L7 U�wuYh��2��@�u� P�7�A�h����3 Û��XEͅZ�]�l�@Mplv�)� ��HW���y>�Y�-�Y��/�������hC�[*��F�#~�!�`�\r#0P�C˝�f��� ���\\���^�%B<�\\�f�ޱ�����&/�O��L\\jF��jZ�1�\\:ƴ>�N��XaF�A�������f�h{\"s\n�64������?�8�^p�\"띰�ȸ\\�e(�P�N��q[g��r�&�}Ph���W��*��r_s�P�h���\n���om������#���.�\0@�pdW � \$Һ�Q۽Tl0� ��HdH�)��ۏ� �)P���H�g��U����B�e\r�t:��\0)\"�t�,�����[�(D�O\nR8!�Ƭ֚��lA�V��4�h��Sq<��@}���gK�]���]�=90��'����wA<����a�~��W��D|A���2�X�U2��yŊ��=�p)�\0P �s��n�3�r�f\0�F���v��G ��I@�%���+��_I`� ���\r.��N���KI�[�ʖSJ���aUf�Sz���M�� %��\"Q|9��Bc�a�q\0�8�#�<a��:z1Uf��>�Z�l������e5#U@iUG‚��n�%Ұs���;gxL�pP�?B��Q�\\�b ��龒Q�=7�:��ݡQ�\r:�t�:y(� �\n�d)���\n�X;����CaA�\r���P�GH�!���@�9\n\nAl~H���V\ns��ի�Ư�bBr���������3�\r�P�% �ф\r}b/�Α\$�5�P�C�\"w�B_��U�gAt��夅�^Q��U���j���Bvh졄4�)�� +�)<�j^�<L��4U*���Bg�����*n�ʖ�-���� 9 O\$��طzyM�3�\\9���.o�����E(i��� ���7 tߚ�-&�\nj!\r��y�y�D1g���]��yR�7\"������~����)TZ0E9M�YZt Xe!�f�@�{Ȭyl 8�;���R{��8�Į�e�+UL�'�F�1���8PE5- �_!�7��[2�J��;�HR��ǹ�8p痲݇@��0,ծpsK0\r�4��\$sJ���4�DZ��I��'\$cL�R��MpY&����i�z3G�zҚJ%��P�-��[�/x�T�{p��z�C�v���:�V'�\\��KJa��M�&���Ӿ\"�e�o^Q+h^��iT��1�OR�l�,5[ݘ\$��)��jLƁU`�S�`Z ^�|��r�=��n登��TU 1Hyk��t+\0v�D�\r <��ƙ��jG���t�*3%k�Y ܲT*�|\"C��lhE�(�\r�8r��{��0����D�_��.6и�;����rBj�O'ۜ���>\$��`^6��9�#����4X��mh8:��c��0��;�/ԉ����;�\\'(��t�'+ �����̷�^ �]��N�v��#�,�v���O�i�ϖ�>��<S�A\\�\\��!�3*tl`�u�\0p'�7�P�9�bs�{�v�{��7�\"{��r�a�(�^��E����g��/���U�9g���/��`�\nL\n�)���(A�a�\" ��� �&�P��@O\n師0�(M&�FJ'�! �0�<�H�������*�|��*�OZ�m*n/b�/����� ��.��o\0��dn�)����i�:R���P2�m�\0/v�OX���Fʳψ���\"�����0�0�����0b��gj��\$�n�0}� �@� =MƂ 0n�P�/p�ot������.�̽ �g\0�)o�\n0���\rF�� ��b�i��o}\n�̯� NQ �' �x�Fa�J���L������\r��\r����0��' ��d oep��4D��ʐ�q(~�� �\r�E��pr�QVFH�l��Kj���N&�j!�H`�_bh\r1� �� n!�Ɏ� z���� �\\��\r���`V_k��\"\\ׂ'V��\0ʾ`AC������V�`\r%�����\r����k@N����B�횙� �!�\n�\0Z� 6�\$d��,%�%la�H�\n�#�S\$ !\$@��2���I\$r�{!��J�2H�ZM\\��hb,� '||cj~g�r�`�ļ�\$��� +�A1�E���� <�L��\$�Y%-FD��d�L焳��\n@�bVf�;2_(��L�п� �<%@ڜ,\"�d��N�er�\0�`��Z ��4�'ld9-�#`��Ŗ����j6�ƣ�v���N�͐f��@܆�&�B\$ � (�Z&���278I ��P\rk\\���2`�\rdLb@E��2`P( B'� ����0�&��{���:��dB�1�^؉*\r\0c<K�|�5sZ�`���O3�5=@�5�C>@�W* =\0N<g�6s67Sm7u? {<&L�.3~D��\rŚ �x��),r�in�/��O\0o{0k�]3>m��1\0�I@�9T34+ԙ@e�GFMC�\rE3�Etm!�#1�D @�H(��n ��<g,V`R]@����3Cr7s~�GI�i@\0v��5\rV�'��� ���P��\r�\$<b�%(�Dd��PW����b� fO �x\0�} � �lb�&�vj4�LS��ִԶ5&dsF M�4��\".H�M0�1uL�\"��/J`�{�����xǐYu*\"U.I53Q�3Q��J��g��5�s���&jь��u�٭ЪGQ MTmGB�t l-c�*��\r��Z7���*hs/RUV����B�Nˈ�����Ԋ�i�Lk�.���t�龩�rYi���-S��3�\\�T�OM^�G>�ZQj���\"���i��MsS�S\$Ib f���u����:�SB|i��Y¦��8 v�#�D�4`��.��^�H�M�_ռ�u��U�z`Z�J e��@Ce��a�\"m�b�6ԯJR�� �T�?ԣXMZ��І��p����Qv�j�jV�{���C�\r��7�Tʞ� ��5{P��]�\r�?Q�AA������2񾠓V)Ji��-N 99f�l Jm��;u�@�<F�Ѡ�e�j ��Ħ�I�<+CW@�����Z�l�1�<2�iF�7`KG�~L&+N��YtWH飑w ����l��s'g��q+L�zbiz���Ţ�.Њ�zW�� �zd�W����(�y)v�E4,\0� \"d��\$B�{��!)1U�5b p#�}m=��@�w� P\0�\r� ����`O|��� �ɍ����Y��JՂ�E��Ou�_�\n`F`�}M�.#1��f�*�ա�� �z�uc���� xf�8kZR�s2ʂ-���Z2�+�ʷ�(�sU�cD�ѷ� ��X!��u�&-vP�ر\0'L�X �L����o � �>�Վ�\r@�P�\rxF��E��ȭ �%� ���=5N֜��?�7�N�Å�w�`�hX�98 �����q��z��d%6̂t�/���� ��L��l��,�Ka�N~� ���� ,�'�ǀM\rf9�w��!x��x[�ϑ�G�8;�xA��-I�&5\$�D\$���%��xѬ���´�� �]����&o�-3�9�L��z���y6 �;u�zZ ��8�_�ɐx\0D?�X7����y�OY.#3�8��ǀ�e�Q�=؀*��G�wm ���Y�� ���]YOY�F���)�z#\$e��)�/�z?�z;����^��F�Zg�����������`^�e����#���� ���?��e��M��3u�偃0�>�\"?��@חXv�\"������*Ԣ\r6v~��OV~�&ר�^g���đٞ�'��f6:-Z~ ��O6;zx��;&!�+{9M�ٳd� \r,9���W� �ݭ:�\r�ٜ��@睂+��]��-�[g��ۇ[s�[i��i�q��y��x�+�|7�{7�|w�}����E� �W��Wk�|J؁��xm��q xwyj���#��e��(�������ߞþ��� {��ڏ�y���M���@��ɂ��Y�(g͚-��������J(���@� ;�y�#S���Y��p@�%�s��o�9;�������+�� �;����ZNٯº��� k�V��u�[�x��|q��ON?��� �`u��6�|�|X ����س|O�x!�:���ϗY]�����c���\r�h�9n� ������8'���� ��\rS.1��USȸ��X��+��z]ɵ��?����C�\r��\\ ����\$�`��)U�|ˤ|Ѩx'՜����<�̙e�|�ͳ� ���L���M�y�(ۧ�l�к�O]{Ѿ�FD���}�yu��Ē�,XL\\�x��;U��Wt�v��\\OxWJ9Ȓ�R5�WiMi[�K��f(\0�dĚ�迩�\r�M����7�;��������6�KʦI�\r���xv\r�V3���ɱ.��R������|��^2�^0߾\$�Q��[�D��ܣ�>1'^X ~t�1\"6L���+��A��e�����I��~����@���� pM>�m<��SK��-H���T76�SMfg�=��GPʰ�P�\r��>�����2Sb\$�C[���(�)��%Q#G`u��Gwp\rk�Ke�zhj��zi(��rO�������T=�7���~ �4\"ef�~ �d���V�Z���U�-�b'V�J�Z7���)T��8.<�RM�\$�����'�by�\n5����_� �w����U�`ei޿J�b�g�u�S��?��`���+��� M�g�7`���\0�_�-��� _��?�F�\0����X���[��J�8&~D#��{P���4ܗ��\"�\0��������@ғ��\0F ?*��^��w�О:���u��3xK�^�w���߯�y[Ԟ(���#�/zr_�g��?�\0?�1wMR&M���?�St�T]ݴG�:I����)��B�� v����1�<�t��6�:�W{���x:=��ޚ��:�!!\0x�����q&��0}z\"]��o�z���j�w�����6��J�P۞[\\ }��`S�\0�qHM�/7B��P���]FT��8S5� /I�\r�\n ��O�0aQ\n�>�2�j�;=ڬ�dA=�p�VL)X�\n¦`e\$�TƦQJ����lJ����y�I� �:�� ��B�bP���Z��n����U;>_�\n ����� `��uM򌂂�֍m����Lw�B\0\\b8�M��[z��&�1�\0� �\r�T������+\\�3�Plb4-)%Wd#\n��r ��MX\"ϡ�(Ei11(b`@f����S���j�D��bf�}�r����D�R1���b��A��Iy\"�Wv��gC�I�J8z\"P\\i�\\m~ZR��v�1ZB5I��i@x����-�uM\njK�U�h\$o��JϤ!�L\"#p7\0� P�\0�D�\$ �GK4e��\$�\nG�?�3�EAJ F4�Ip\0��F�4��<f@� %q�<k�w�� �LOp\0�x��( �G>�@�����9\0T����GB7�-�����G:<Q��#���Ǵ�1�&tz��0*J=�'�J>���8q��Х��� �O��X�F��Q�,����\"9��p�*�6 6A'�,y��IF�R��T���\"��H�R�!�j#kyF���e��z�����G\0�p��aJ` C�i�@�T�|\n�Ix�K\"��*��Tk\$c��ƔaAh��!�\"�E\0O�d�Sx� \0T �\0���!F�\n�U�|�#S& IvL\"����\$h���EA�N\$�%%�/\nP�1���{��) <���L���-R1��6���<�@O*\0J@q��Ԫ#�@ǵ0\$t�|�]�`��ĊA]���Pᑀ�C�p\\pҤ\0���7���@9�b�m�r�o�C+�]�Jr�f��\r�)d� ����^h�I\\�. g��>���8���'�H�f�rJ�[r�o���.�v���#�#yR�+�y��^����F\0᱁�]!ɕ�ޔ++�_�,�\0<@�M-�2W���R ,c���e2�*@\0�P ��c�a0�\\P���O�� �`I_2Qs\$�w��=:�z\0)�` � h�������\nJ@@ʫ�\0�� 6qT��4J%�N-�m����.ɋ%*cn��N�6\"\r͑�����f�A��� p�M ۀI7\0�M�>lO�4�S 7�c�� �\"�ߧ\0�6�ps�����y.�� ���RK��PAo1F�tI�b*��<���@�7�˂p,�0N��:��N�m�,�xO%�!��v����gz(�M���I�� ��~y���h\0U:��OZyA8�<2����us�~l���E�O�0��0]'�>��ɍ�:���;�/��w�����'~3GΖ~ӭ����c. ���vT\0c�t'�;P�\$�\$ ����-�s��e|�!�@d�Obw��c��'�@`P\"x� ���0O�5�/|�U{:b�R\"�0�шk���`BD�\nk�P��c��4�^ p6S`��\$�f;�7�?ls��߆gD�'4Xja A��E%� 86b�:qr \r�]C8�c�F\n'ьf_9�%(��*�~��iS�� ��@(85�T��[��Jڍ4�I�l=��Q�\$d��h�@D -��!�_]��H�Ɗ�k6:���\\M-����\r�FJ>\n.� �q�eG�5QZ����' ɢ���ہ0��zP��#������r���t����ˎ��<Q��T��3�D\\����pOE�%)77�Wt�[��@����\$F)�5qG0�-�W�v�`�*)Rr��=9qE*K\$g ��A!�PjBT:�K���!��H� R0?�6�yA)B@:Q�8B+J�5U]`�Ҭ��:���*%Ip9�̀�` KcQ�Q.B��Ltb��yJ�E�T��7���Am�䢕Ku:��Sji� 5.q%LiF��Tr��i��K�Ҩz�55T%U��U�IՂ���Y\"\nS�m���x��Ch�NZ�UZ���( B��\$Y�V��u@蔻�� ��| �\$\0�\0�oZw2Ҁx2���k\$�*I6I�n�����I,��QU4�\n��). �Q���aI�]����L�h\"�f���>�:Z�>L�`n�ض��7�VLZu��e��X����B���B�����Z`;���J�]�����S8��f \nڶ�#\$�jM(��ޡ����a�G��+A�!�xL/\0) C�\n�W@�4��� ��۩� ��RZ����=���8�`�8~�h��P ��\r� ���D-FyX�+�f�QSj+X�|��9-��s�x�����+�V�cbp쿔o6H�q�����@.��l�8g�YM��WMP��U��YL�3Pa�H2�9��:�a�` ��d\0�&�Y��Y0٘��S�-��%;/�T�BS�P�%f������@�F�(�֍*�q +[�Z:�QY\0޴�JUY֓/���pkzȈ�,�𪇃j�ꀥW�״e�J�F��VBI�\r��pF�Nقֶ�*ը�3k�0�D�{����`q��ҲBq�e�D� c���V�E���n����FG�E�>j�����0g�a|�Sh�7u�݄�\$���;a��7&��R[WX���(q�#���P���ז�c8!�H���VX�Ď�j��Z������Q,DUaQ�X0��ը���Gb��l�B�t9-oZ���L���­�pˇ�x6&��My��sҐ����\"�̀�R�IWU`c���}l<|�~�w\"��vI%r+��R�\n\\����][��6�&���ȭ�a�Ӻ��j�(ړ�Tѓ��C'��� '%de,�\n�FC�эe9C�N�Ѝ�-6�Ueȵ��CX��V������+�R+�����3B��ڌJ�虜��T2�]�\0P�a�t29��(i�#�aƮ1\"S�:�����oF)k� f���Ъ\0�ӿ��,��w�J@��V򄎵�q.e}KmZ����XnZ{G-���ZQ���}��׶�6ɸ���_�؁Չ�\n�@7�` �C\0]_ ��ʵ����}�G�WW: fCYk+��b۶���2S, ڋ�9�\0﯁+�W�Z!�e��2������k.Oc��(v̮8�DeG`ۇŒ�L���,�d�\"C���B-�İ(�� ��p���p�=����!�k������}(���B�kr�_R�ܼ0�8a%ۘL \0���b������@�\"��r,�0T�rV>����Q��\"�r��P�&3b�P��-�x���uW~�\"�*舞�N�h�%7���K�Y��^A����C����p����\0� ..`c��+ϊ�GJ���H���E����l@|I#Ac��D��|+<[c2�+*WS<�r��g���}��>i�݀�!`f8�(c����Q�=f�\n�2�c�h4�+q���8\na�R�B�|�R����m ��\\q��gX����ώ0�X�`n�F���O p��H�C��jd�f��EuDV��bJɦ��:��\\�!mɱ?,TIa���aT.L�]�,J��?�?��FMct!a٧R�F�G�!�A���rr�-p�X��\r��C^�7���&�R�\0��f� *�A\n�՛H��y�Y=���l�<��A�_�� +��tA�\0B�<Ay�(fy�1�c�O;p� ��ᦝ`�4СM��*��f�� 5fvy {?���:y��^c��u�'���8\0��ӱ?��g��� 8B��&p9�O\"z���rs�0��B�!u�3�f{�\0�:�\n@\0����p���6�v.;�����b�ƫ:J>˂��-�B�hkR`-����aw�xEj����r�8�\0\\����\\�Uhm� �(m�H3̴�S����q\0��NVh�Hy� ��5�M͎e\\g�\n�IP:Sj�ۡٶ�<���x�&�L��;nfͶc�q��\$f�&l���i�����0%yΞ�t�/��gU̳�d�\0e:��h�Z �^�@��1��m#�N��w@��O��zG�\$�m6�6}��ҋ�X'�I�i\\Q�Y���4k-.�:yz���H��] ��x�G��3��M\0��@z7���6�-DO34�ދ\0Κ��ΰ t\"�\"vC\"Jf�Rʞ��ku3�M��~����5V ��j/3���@gG�}D���B�Nq��=]\$�I��Ӟ�3�x=_j�X٨�fk(C]^j�M��F��ա��ϣCz��V��=]&�\r�A< ������6�Ԯ�״�`jk7:g��4ծ��YZq�ftu�|�h�Z��6��i〰0�?��骭{-7_:��ސtѯ�ck�`Y��&���I�lP `:�� j�{h�=�f � �[by��ʀoЋB�RS���B6��^@'�4��1U�Dq}��N�(X�6j}�c�{@8 ���,� �PFC���B�\$m v���P�\"��L��CS�]����E���lU��f�wh{o�(��)�\0@*a1G� (��D4-c��P8��N|R���VM���n8G`e}�!}���p�����@_���nCt�9��\0]�u��s���~�r��#Cn�p;�%�>wu���n�w��ݞ�.���[��hT�{��值 �ˁ��J���ƗiJ�6�O�=������E��ٴ��Im���V'��@�&�{��������;�op;^��6Ŷ@2�l���N��M��r�_ܰ�Í�` �( y�6�7�����ǂ��7/�p�e>|�� �=�]�oc����&�xNm���烻��o �G�N p����x��ý���y\\3����€'�I`r�G�]ľ�7�\\7�49�]�^p�{<Z��q4�u�|��Qۙ��p���i\$�@ox�_<���9p BU\"\0005�� i�ׂ��C�p�\n�i@�[��4�jЁ�6b�P�\0�&F2~������U&�}����ɘ ��Da<��zx�k���=���r3��(l_���FeF���4�1�K \\ӎld� �1�H\r���p!�%bG�Xf��'\0��� '6��ps_��\$?0\0�~p(�H\n�1�W:9�͢��`��:h�B��g�B�k��p�Ɓ�t��EBI@<�%����` �y�d\\Y@D�P?�|+!��W��.:�Le�v,�>q�A���:���bY�@8�d>r/)�B�4���(���`|�:t�!����?<�@���/��S��P\0��>\\�� |�3�:V�uw���x�(����4��ZjD^���L�'���C[�'�����jº[�E�� u�{KZ[s���6��S1��z%1�c��B4�B\n3M`0�;����3�.�&?��!YA�I,)��l�W['��I‡Tj���>F���S���BбP�ca�nju�N����H� LS��0��Y`���\"il�\r�B���/����%P���N�G� �0J�X\n?a�!�3@M�F&ó����,�\"���lb�:KJ\r�`k_�b��A��į��1� I,�����;B,�:���Y%�J���#v��'�{���� �� wx:\ni����} c��eN���`!w��\0�BRU#�S�!�<`��&v�<�&�qO�+Σ�sfL9�Q�Bʇ����b��_+�*�Su>%0�����8@l�?�L1po.�C&��ɠB��qh�����z\0�`1�_ 9�\"���!�\$���~~-�.�*3r?�ò�d�s\0����>z\n�\0�0�1�~���J����|Sޜ��k7g�\0��KԠd��a��Pg�%�w�D��zm�����)����j�����`k���Q�^��1���+��>/wb�GwOk���_�'��-CJ��7&����E�\0L\r>�!�q́���7����o��`9O`�����+!}�P~E�N�c��Q�)��#��#�����������J��z_u{��K%�\0=��O�X�߶C�>\n���|w�?�F�����a�ϩU����b N�Y��h����/��)�G��2���K|�y/�\0��Z�{��P�YG�;�?Z}T!�0��=mN����f�\"%4�a�\"!�ޟ����\0���}��[��ܾ��bU}�ڕm��2�����/t���%#�.�ؖ��se�B�p&}[˟��7�<a�K���8��P\0��g��?��,�\0�߈r,�>���W����/��[�q��k~�CӋ4��G��:��X��G�r\0������L%VFLUc��䑢��H�ybP��'#�� \0п���`9�9�~���_��0q�5K-�E0�b�ϭ�����t`lm����b��Ƙ; ,=�� 'S�.b��S���Cc����ʍAR,����X�@�'��8Z0�&�Xnc<<ȣ�3\0(�+*�3��@&\r�+�@h, ��\$O���\0Œ��t+>����b��ʰ�\r�><]#�%�;N�s�Ŏ����*��c�0-@��L� >�Y�p#�-�f0��ʱa�,>��`����P�:9��o�� �ov�R)e\0ڢ\\����\nr{îX����:A*��.�D��7�����#,�N�\r�E���hQK2�ݩ��z�>P@�� � T<��=�:�� �X�GJ<�GAf� &�A^p�`���{��0`�:���);U !�e\0����c�p\r�����:(��@�%2 S�\$Y��3�hC��:O�#��L��/����k,��K�oo7�BD0{���j��j &X2��{�}�R�x��v���أ�9A�� �� 0�;0�����-�5��/�<�� �N�8E���� +�Ѕ�Pd��;���*n��&�8/jX�\r��> PϐW>K��O��V�/��U\n<��\0�\nI�k@��㦃[��Ϧ²�#�?���%���.\0001\0��k�`1T � ����ɐl�������p���������< .�>��5��\0�� O�>k@Bn��<\"i%�>��z�� ���� ��3�P�! �\r�\"��\r �>�ad���U?�ǔ3P��j3�䰑>; �� �>�t6�2�[��޾M\r�>��\0��P���B�Oe*R� n���y;� 8\0���o�0���i���3ʀ2@����?x�[����L�a����w\ns����A��x\r[�a�6�clc=�ʼX0�z/> +��� �W[�o2���)e�2�HQP�DY�zG4#YD����p) �H�p���&�4*@�/:� �T� ���aH5���h.�A>��`;.���Y��a ���t/ =3��BnhD?(\n�!�B�s�\0��D�&D�J��)\0�j�Q�y��hDh(�K�/!�>�h,=�����tJ�+�S��,\"M�Ŀ�N�1�[;�Т��+��#<��I�Zğ�P�)��LJ�D��P1\$����Q�>dO��v�#�/mh8881N:��Z0Z���T �B�C�q3%��@�\0��\"�XD �3\0�!\\�8#�h�v�ib��T�!d�����V\\2��S��Œ\nA+ͽp�x�iD(�(�<* ��+��E��T���B�S�CȿT ���� e�A�\"�|�u�v8�T\0002�@8D^oo�����|�N������J8[��3����J�z׳WL\0�\0��Ȇ8�:y,�6&@�� �E�ʯݑh;�!f��.B�;:���[Z3������n���ȑ��A���qP4,��Xc8^��`׃��l.����S�hޔ���O+�%P#Ρ\n?��IB��eˑ�O\\]��6�#��۽؁(!c)�N����?E��B##D �Ddo��P�A�\0�:�n�Ɵ�` �� Q��>!\r6�\0��V%cb�HF�)�m&\0B �2I�5��#]���D>��3<\n:ML��9C���0��\0���(ᏩH\n����M�\"GR\n@���`[���\ni*\0��)������u�)��Hp\0�N� �\"��N:9q�.\r!���J��{,�'����4� B��� lq���Xc��4��N1ɨ5�Wm��3\n��F��`�'��Ҋx��&>z>N�\$4?����(\n쀨>� �ϵP�!Cq͌��p�qGLqq�G�y�H.�^��\0z�\$�AT9Fs�Ѕ�D{�a��cc_�G�z�)� �}Q��h��HBָ�<�y!L����!\\�����'�H(��-�\"�in]Ğ���\\�!�`M�H,gȎ�*�Kf�*\0�>€6���6��2�hJ�7�{nq�8����H�#c�H�#�\r�:��7�8�܀Z��ZrD��߲`rG\0�l\n�I��i\0<����\0Lg�~���E��\$��P�\$�@�PƼT03�HGH�l�Q%*\"N?�%�� ��\n�CrW�C\$��p�%�uR`��%��R\$�<�`�Ifx���\$/\$�����\$���O�(���\0��\0�RY� *�/ �\rܜC9��&hh�=I�'\$�RRI�'\\�a=E����u·'̙wI�'T���������K9%�d����!��������j�����&���v̟�\\=<,�E��`�Y��\\����*b0>�r��,d�pd���0DD ̖`�,T �1�% P���/�\r�b�(���J����T0�``ƾ�� ��J�t���ʟ((d�ʪ�h+ <Ɉ+H%i �����#�`� ���'��B>t��J�Z\\�`<J�+h R���8 �h R�,J]g�I��0\n%J�*�Y���JwD��&ʖD�������R�K\"�1Q�� ��AJKC,�mV�������-���KI*�r��\0�L�\"�Kb(����J:qKr�d�ʟ-)��ˆ#Ը�޸[�A�@�.[�Ҩʼ�4���.�1�J�.̮�u#J���g\0��򑧣<�&���K�+� M?�/d��%'/��2Y��>�\$��l�\0��+����}-t��ͅ*�R�\$ߔ ��K�.����JH�ʉ �2\r��B���(P���6\"��nf�\0#Ї ��%\$��[�\n�no�LJ�����e'<����1K��y�Y1��s�0�&zLf#�Ƴ/%y-�ˣ3-�’�K��L�΁��0����[,��̵,������0���(�.D�� @��2�L+.|�����2�(�L�*��S:\0�3����G3l��aːl�@L�3z4�ǽ%̒�L�3����!0�33=L�4|ȗ��+\"���4���7�,\$�SPM�\\��?J�Y�̡��+(�a=K��4���C̤<Ё�=\$�,��UJ]5h�W�&t�I%��5�ҳ\\M38g�́5H�N?W1H��^��Ը�Y͗ؠ�͏.�N3M�4Å�`��i/P�7 �dM>�d�/�LR���=K�60>�I\0[��\0��\r2���Z@�1��2��7�9�FG+�Ҝ�\r)�hQtL}8\$�BeC#��r*H�۫�-�H�/���6��\$�RC9�ب!���7�k/P�0Xr5��3D���<T�Ԓq�K���n�H�<�F�:1SL�r�%(��u)�Xr�1��nJ�I��S� \$\$�.·9��IΟ�3 �L �l���Ι9��C�N�#ԡ�\$�/��s��9�@6�t���N�9���N�: ����7�Ӭ�:D���M)<#���M}+�2�N� �O&��JNy*���ٸ[;���O\"m����M�<c�´���8�K�,���N�=07s�JE=T��O<����J�=D��:�C<���ˉ=���K�ʻ̳�L3�����LTЀ3�S,�.���q-��s�7�>�?�7O;ܠ`�OA9���ϻ\$��� O�;��`9�n�I�A�xp��E=O�<��5����2�O�?d�����`N�iO�>��3�P ?���O�m��S�M�ˬ��=�(�d�Aȭ9���\0�#��@��9D����&��� ?���� i9�\n�/��A���ȭA��S�Po?kuN5�~4���6���=򖌓*@(�N\0\\۔d G��p#��>�0��\$2�4z )� `�W���+\0��80�菦� �����z\"T��0�:\0�\ne \$��rM�=�r\n�N�P�Cm t80�� #��J=�&�� 3\0*��B�6�\"������#��>� �(Q\n���8�1C\rt2�EC�\n`(�x?j8N�\0��[��QN>���'\0�x c���\n�3��Ch�`&\0���8�\0�\n���O`/����A`#��Xc���D �tR\n>���d�B�D�L���� ����Dt4���j�p�GAoQoG8,-s����K#�);�E5�TQ�G�4Ao\0�>�tM�D8yRG@'P�C� �<P�C�\"�K\0��x��~\0�e i9���v))ѵGb6� ��H\r48�@�M�:��F�tQ�!H��{R } �URp���O\0�I�t8������[D4F�D�#��+D�'�M����>RgI���Q�J���U�)Em���TZ�E�'��iE����qF zA��>�)T�Q3H�#TL�qIjNT���&C��h�X\nT���K\0000�5���JH�\0�FE@'љFp�hS5F�\"�oѮ�e%aoS E)� ��DU��Q�Fm�ѣM��Ѳe(tn� �U1ܣ~>�\$��ǂ��(h�ǑG�y`�\0�� ��G��3�5Sp (��P�G�\$��#�� ���N�\n�V\$��]ԜP�=\"RӨ?Lzt��1L\$\0��G~��,�KN�=���GM����NS�)��O]:ԊS}�81�RGe@C�\0�OP�S�N�1��T!P�@��S����S�G`\n�:��P�j�7R� @3��\n� ����� ��DӠ��L����� ��\0�Q5���CP��SMP�v4��?h h�T�D0��֏��>&�ITx�O�?�@U��R8@%Ԗ��K���N�K��RyE�E#�� @���� %L�Q�Q����?N5\0�R\0�ԁT�F�ԔR�S�!oTE�C(�����ĵ\0�?3i�SS@U�QeM�� K�\n4P�CeS��\0�NC�P��O�!�\"RT�����S�N���U5OU>UiI�PU#UnKP��UYT�*�C��U�/\0+���)��:ReA�\$\0���x��WD�3���`����U5�IHUY��:�P �e\0�MJi��� ��Q�>�@�T�C{��u��?�^�v\0WR�]U}C��1-5+U�?�\r�W<�?5�JU-SX��L�� \\t�?�sM�b�ՃV܁t�T�>�MU+� E�c���9Nm\rRǃC�8�S�X�'R��XjCI#G|�!Q�Gh�t�Q��� )<�Y�*��RmX0����M���OQ�Y�h���du���Z(�Ao#�NlyN�V�Z9I���M��V�ZuOՅT�T�EՇַS�e����\n�X��S�QER����[MF�V�O=/����>�gչT�V�oU�T�Z�N�*T\\*����S-p�S��V�q��M(�Q=\\�-UUUV�C���Z�\nu�V\$?M@U�WJ\r\rU��\\�'U�W]�W��W8�N�'#h=oC���F(��:9�Yu����V-U�9�]�C�:U�\\�\n�qW���(TT?5P�\$ R3�⺟C}`>\0�E]�#R�� ��#R�)�W���:`#�G�)4�R��;��ViD%8�)Ǔ^�Q��#�h �HŽX ��\$N�x��#i x�ԒXR��'�9`m\\���\nE��Q�`�bu@��N�dT�#YY����GV�]j5#?L�xt/#���#酽O�P��Q��6����^� �������M\\R5t�Ӛp�*��X�V\"W�D� oRALm\rdG�N ����6�p\$�P废E5����Tx\n�+��C[��V�����8U�Du}ػF\$.��Q-;4Ȁ�NX\n�.X�b͐�\0�b�)�#�N�G4K��ZS�^״M�8��d�\"C��>��dHe\n�Y8���.� ���ҏF�D��W1cZ6��Q�KH�@*\0�^���\\Q�F�4U3Y|�=�Ӥ�E ��ۤ�?-�47Y�Pm�hYw_\r�VeױM���ُe(0��F�\r�!�PUI�u�7Q�C�ю?0����gu\rqधY-Q�����=g\0�\0M#�U�S5Zt�֟ae^�\$>�ArV�_\r;t���HW�Z�@H��hzD��\0�S2J� HI�O�'ǁe�g�6�[�R�<�?� /��KM����\n>��H�Z!i� ���TX6���i�C !ӛg� � �G }Q6��4>�w�!ڙC}�VB�>�UQڑj�8c�U�T���'<�>����HC]�V��7jj3v���`0���23����x�@U�k�\n�:Si5��#Y�-w����M?c��MQ�GQ�уb`��\0�@ ��ҧ\0M��)ZrKX�֟�Wl������l�TM�D\r4�QsS�40�sQ́�mY�h�d��C`{�V�gE�\n��XkՁ�'��,4���^�6�#<4��NX nM):��OM_6d�������[\"KU�n��?l�x\0&\0�R56�T~>� �ո?�Jn��� ��Z/i�6���glͦ�U��F}�.����JL�CTbM�4��cL�TjSD�}Jt���Z����:�L���d:�Ez�ʤ�>��V\$2>����[�p�6��R�9u�W.?�1��RHu���R�?58Ԯ��D��u���p�c�Z�?�r׻ Eaf��}5wY���ϒ���W�wT[Sp7'�_aEk�\"[/i��#�\$;m�fأWO����F�\r%\$�ju-t#<�!�\n:�KEA����]�\nU�Q�KE��#��X��5[�>�`/��D��֭VEp �)��I%�q���n�x):��le���[e�\\�eV[j�����7 -+��G�WEwt�WkE�~u�Q/m�#ԐW�`�yu�ǣD�A�'ױ\r��ՙO�D )ZM^��u-|v8]�g��h���L��W\0���6�X��=Y�d�Q�7 ϓ��9����r <�֏�D��B`c�9� ��`�D �=wx�I%�,ᄬ�����j[њ����O��� ``��|�����������.� AO��� ��@�@ 0h2�\\�ЀM{e�9^>���@7\0��˂W���\$,��Ś�@؀����w^fm�,\0�yD,ם^X�.�ֆ�7����2��f;��6�\n����^�zC�קmz��n�^���&LFF� ,��[��e� �aXy9h�!:z�9c�Q9b� !���Gw_W�g�9���S+t���p�tɃ\nm+����_� ��\\���k5���]�4�_h�9 ��N����]%|��7�֜�];�� |���X��9�|����G���[��\0�}U���MC�I:�qO�Vԃa\0\r�R�6π�\0�@H ��P+r�S�W���p7�I~�p/��H�^������E�-%��̻�&.��+�Jђ;:���!���N� �~����/�W�� !�B�L+�\$��q�=��+�`/Ƅe�\\���x�pE�lpS�J S�ݢ��6��_�(ů���b\\O��&�\\�59�\0�€9n���D�{�\$���K��v2 d]�v�C�����?�tf|W�:��� p&��Ln��賞�{;���G�R9��T.y���I8���\rl� � T� �n�3���T.�9��3����Z�s����G����: 0���z��.�]��ģQ�?�gT�%��x�Ռ.����n<�-�8B˳,B��rgQ�����Ɏ`��2�:{�g��s��g�Z��� ׌<��w{���bU9� `5`4�\0BxMp�8qnah�@ؼ�-�(�>S|0�����3�8h\0���C�zLQ�@�\n?��`A��>2��,���N�&��x�l8sah1�|�B�ɇD�xB�#V��V�׊`W�a'@��� X_?\n� �_�. �P�r2�bUar�I�~��S���\0ׅ\"�2����>b;�vPh{[ �7a`�\0�˲j�o�~���v��|fv�4[�\$�� {�P\rv�BKGbp������O�5ݠ2\0j�لL���)�m��V�ejBB.'R{C��V'`؂ ��%�ǀ�\$�O��\0�`����4 �N�>;4���/�π��*��\\5���!��`X*�%��N�3S�AM���Ɣ,�1����\\��caϧ ��@��˃�B/����0` �v2��`hD�JO\$�@p!9� !�\n1�7pB,>8F4��f�π:��7���3��3����T8�=+~�n���\\�e�<br����Fز� � �C�N�:c�:�l�<\r��\\3�>���6�ONn��!;��@�tw�^F�L�;�� �,^a��\ra\"��ڮ'�:�v�Je4�א;��_d\r4\r�:����S�����2��[c��X�ʦPl�\$�ޣ�i�w�d#�B��b��������`:���~ <\0�2����R���P�\r�J8D�t@�E��\0\r͜6����7����Y���\"����\r�����3��.�+�z3�;_ʟvL����wJ�94�I�Ja,A����;�s?�N\nR��!��ݐ�Om�s�_��-zۭw���zܭ7���z���M����o����\0��a��ݹ4�8�Pf�Y�?��i��eB�S�1\0�jDTeK��UYS�?66R �c� 6Ry[c���5�]B͔�R�_eA)&�[凕XYRW�6VYaeU�fYe�w��U�b�w�E�ʆ;z�^W�9��ק�ݖ��\0<ޘ�e�9S���da� �_-��L�8Dž�Q��TH[!<p\0��Py5�|�#��P� �9v��2�|Ǹ��fa o��,j8�\$A@k����a���b�c��f4!4���cr,;�����b�=��;\0��ź���cd��X�b�x�a�Rx0A�h�+w�xN[��B��p���w�T�8T%��M�l2�������}��s.kY��0\$/�fU�=��s�gK���M� �?���`4c.��!�&�分g��f�/�f1�=��V AE<#̹�f\n�)���Np��`.\"\"�A����� q��X��٬: a�8��f��Vs�G��r�:�V��c�g�Vl��g=��`��W���y�gU��˙�Ẽ�eT=� ����x 0� M�@����%κb���w��f��O�筘�*0���|t�%��P��p��gK���?p�@J�<Bٟ#�`1��9�2�g�!3~����nl��f��Vh���.����aC���?���-�1�68>A��a�\r�� y�0��i�J�}�� ����� z:\r�)�S���@ ��h@���Y���mCEg�cyφ��<���h@�@�zh<W��`•��:zO���\r��W���V08�f7�(Gy���`St#��f�#����C(9���؀d���8T:���0�� q���79� �phAg�6�.��7 Fr�b� �j��A5��a1� �h�ZCh:�%��gU��D9��Ɉ�׹��0~vTi;�VvS��w��\r΃?��f�����n�ϛiY��a��3�·9�,\n��r��,/,@.:�Y>&��F�)�����}�b���iO�i��:d�A�n��c=�L9O�h{�� 8hY.������������\r��և�����1Q�U �C�h��e�O���+2o����N�����zp�(�]�h��Z|�O�c�zD���;�T\0j�\0�8#�>Ύ�=bZ8Fj���;�޺T酡w��)���N`�� �ÅB{��z\r�c���|dTG�i�/�� !i��0���'`Z:�CH�(8�`V������\0�ꧩ��W��Ǫ��zgG������-[�� i��N\rq��n���o ƥfEJ��apb��}6���=o���,t�Y+��EC\r�Px4=����@���.��F��[�zq���X6:FG��#��\$@&�ab��hE:����`�S�1�1g1���2uhY��_:Bߡdc�*���\0�ƗFYF�:���n���=ۨH*Z�Mhk�/�냡�zٹ]��h@����1\0��ZK�������^+�,vf�s��>���O�|���s�\0֜5�X ��ѯF��n�A�r]|�Ii4�� ��C� h@ع����cߥ�6smO������gX�V2�6g?~��Y�Ѱ�s�cl \\R�\0��c��A+�1������\n(����^368cz:=z��(�� ;裨�s�F�@`;�,>yT��&��d�Lן��%�� -�CHL8\r��b�����Mj]4�Ym9����Z�B��P}<���X���̥�+g�^�M� + B_Fd�X���l�w�~�\r⽋�\":��qA1X������3�ΓE�h�4�ZZ��&����1~!N�f��o���\nMe�଄��XI΄�G@V*X��;�Y5{V�\n���T�z\rF�3}m ��p1�[�>�t�e�w����@V�z#��2�� i���{�9��p̝�gh���+[elU���A�ٶӼi1�!��omm�*K���}��!�Ƴ��{me�f`��m��C�z=�n�:}g� T�mLu1F��}=8�Z���O��mFFMf��OO����������/����ޓ���V�oqj���n!+����Z��I�.�9!nG�\\��3a�~�O+��::�K@�\n�@���Hph��\\B��dm�fvC���P�\" ��.nW&��n��HY�+\r���z�i>Mfqۤ��Qc�[�H+��o��*�1'��#āEw�D_X�)>�s��-~\rT=�������- �y�m����{�h��j�M�)�^����'@V�+i�������;F��D[�b!����B ��:MP���ۭoC�vAE?�C�IiY��#�p�P\$k�J�q�.�07���x�l�sC|���bo�2�X�>M�\rl&��:2�~��cQ����o��d�-��U�Ro�Y�nM;�n�#��\0�P�f��Po׿(C�v<���[�o۸����fѿ���;�ẖ�[�Y�.o�Up���pU���.���B!'\0���<T�:1�������<���n��F���I�ǔ��V0�ǁRO8�w��,aF��ɥ�[�Ο��YO����/\0��ox���Q�?��:ً���`h@:�����/M�m�x:۰c1������v� ;���^���@��@�����\n{�����;���B��8�� g坒�\\*g�yC)��E�^�O�h ���A�u>���@�D��Y�����`o�<>��p���ķ�q,Y1Q��߸��/qg�\0+\0���D���?�� ����k:�\$����ץ6~I��=@���!��v�zO񁚲�+���9�i����a������g��� ���?��0Gn�q�]{Ҹ,F���O���� <_>f+��,�� ���&�����·�y�ǩO�:�U¯�L�\n�úI:2��-;_Ģ�|%�崿!��f�\$���Xr\"Kni����\$8#�g�t-��r@L�圏�@S�<�rN\n�D/rLdQk࣓�����e����Э��\n=4)� B���ך��Z-|Hb����Hk�* �Q!�'��G ��Ybt!��(n,�P�Ofq�+X �Y����\"b F6��r f�\"�ܳ!N��^��r�B_(�\"�K�_-<��*Q���/,)�H\0����r�\"z2(�tه.F>��#3��� 268sh٠��ƑI1Sn20���-��4���2A�s(�4�˶��\0��#��r�K'�ͷG'�7&\n>x���J�GO8,�0 ���8���\0�W9��I�?:3n�\r-w:�����;3ȉ�!�;��ꃘ�Z�RM�+>�����0/=R�'1�4�8����m�%ȥ}χ9�;�=�nQ��=�hhL��G�kW�\r� %�4Ҝs�ΖJ�3s�4�@�U�%\$���N;�?4���N��2|��Z�3�h\0�3�5�^�xi2d\r|�M�ʣbh|�#v�` \0�ꐮ���\$\r2h#���?���I\n���+o-��?6`ṽ�.\$���KY%�J?�c�R�N#K:�K�EL�>:��@��jP��n_t&slm�'�ЩɸӜ�����;6ۗHU5#�Q7U��WY�U bN��W�_���;TC�[�<ږ>����W�CU��6X#`MI:t�ӵ�� u#`�fu�\$�t���X�`�f<�;b�gh���9�7�S58���#^�-�\0����չR*�'��(���qZ壣�X�Q�FUv�W GW���T��W�~ڭ^�W�����J=_ؗbm��bV \\l��/�M��TmTOXu�=_��ITvvu�a\rL_�qR/]]m�su=H=u�g o\\UՅgM� XVU��%�h��53U�\\=��Q��M�v���g�m��ue�����h�b�M�GCeO5�ԁ�O5��Y� i=e� G�TURvOa�*�ivWX�J5<��bu�]������<����\$u3v#�'e�u�R5m��v�D5�.v���W=�U _�(�\\V��_<��S�n) �1M%Qh�Z�T�f5E�'��W��v�UmiՂU��]aW�U�dRv��-YUZu��UV��UiR�V������[��ZMU�\\=�v{�X���wQ�huHv��gqݴw!�oqt�U{TGq�{�#^G_ubQ���i9Qb>�NUd��k��5hP�mu[�\0����_��[�Y-����r���(�CrMe�J�!h?QrX3 x���#��x�<�{u5~���-�u��YyQ\r-��\0�uգuuٿpUڅ�)�P��\r<u�S�0��w��-i���!�֊�B���d]��Ň��E��vlmQݏ6k��J��w�Ğ����ED�U�R�e�v:X�c�NW}`-�t�H#e��b��u��� ~B7� ?� OP�CW���SE͕V>���U�7�����m�ӂ�z�=����1���+��m�I,>�X7��]�.��* ^��N��.��/\"��� )� ���s��|��ӟ�l�}� ����! �5n�p�j��h�}���m�E�zH�aO0d=A|w�߳������u���v���G�x#��b� cS�o-��tOm`C��^M��@�h�n\$k�`�`HD^�PE�[�]��rR�m�=�.�ه>Ayi� \"��� ��o�-,.�\nq+���fXd����*߽�K�؃'�� �%a����9p���KLM��!�,������zX#�V�uH%!��63�J�ryՁ��q_�u �W����|@3b1��7|~wﱳ��A7��›� ��9cS&{���%Vx��kZO��w�Ur?����N �|�C�#Ű��կ �/�� 9�ft�Ew�C��a�^\0�O<�W�{Y�=�e��n���gyf0h@�S�\0:C���^��VgpE9:85�3�ާ���@��j_�[�+��ǩx�^�ꮆ~@чW���㓜�9x�FC���.�����k^I���pU9��S������\$�� �\r4���\0��O���)L[�p?�.PECS�I1nm{ �?�P�WA߲�;���D�;S�a�Kf��%�?�X��+��B>� �9���Gj�c�z�A͎�:�a�n0bJ{o��!3��!'��K�����}�\\��3W��5�x ���L;�2ζn�a;���׺Xӛ]�o��x�{�5ޙjX���vӚ��q��EE{р4����{��� �\n��>��aﯷ�����L����������'����{�\n��>J�ߌ��ӗ��Y�\rOʽ�t����-O���4��9F�;�����G��I�F��1�o����O���a{w�0����Ư;񔄑l�o��J�Tb\rw�2�J��=D#�n�:�y��S�^�,.�?(�I\$���Ư��3��s�4M�aCR���G̑��I߰n<�zy�XN��?��.� �=���DǼ�\r����\n��\ro��\nПCl%��Y���߰��G���}#�VН%�(����3�ɍ�r��};��׿G��n�[�{����_<m4[ I����q��?�0cV�nms��nM���\"Nj1�w?@�\$1��>��^�����\\�{n�\\���7���ٟic1���hoo�?j<G�x �l���S�r}���|\"}��/�?s��tI���&^�1e��t��,�*'F��=�/F�k�,95rV������쑈��o9��/F��_�~*^��{�I����_�����^n���N��~���A�d����U�w�qY���T�2��G�?�&����:y��%��X�J�C�d W�ߎ~�G!��J}��������B-��;���h�*�R���E��~���.�~���SAqDVx���='��E�(^���~��� �������o7~�M[��Q��(��y��nP�>[WX{q�aϤ���.&N�3]��HY������[���&�8?�3������݆����#���B�e�6��@��[������G\r�+�� }������_��7�|N����4~(z�~����%��?����[��1�S�]x�k��KxO^�A���rZ+����*�W��k�wD(���R:��\0����'����m!O�\n��u���.�[ �P�!��}��m ��1p�u��,T��L €0}��&P٥\n�=D�=���\ršA/�o@��2�t�6�DK��\0���q�7�l���B���(�;[��kr\r�;#���lŔ\r�<}zb+��O�[�WrX�`�Z ţ�Pm'Fn����Sp�-�\0005�`d���P���Ǿ��;��n\0�5f�P���EJ�w�� �.?�;��N�ޥ,;Ʀ�-[7��e��i��-���dَ<[~�6k:&�.7�]�\0������/�59 ��@eT:煘�3�d�sݝ�5䏜 5f\0�P��HB�����8J�LS\0vI\0���7Dm��a�3e��?B��\$�.E���f���@�n���b�Gb��q3�|��Paˈ�ϯX7Tg>�.�p�5��AHŵ��3S�,��@�#&w��3��m[���I�ѥ�^�̤J1?�gTၽ#�S�=_��_�� ���Vq/C۾�݀�|�����D �g>܄��� 6\r�7}q��Ť�JG�B^�\\g������&%��[�2Ixì��6\03]�3�{�@RU��M��v<�1����sz�uP�5��F:�i�|�`�q���V| ��\nk��}�'|�gd�!�8� <,�P7�m��||���I�A��]BB �F�0X��� � D��`W���qm�OL� �.�(�p��ҁ��\"!����\0��A����V��7k��M�\$�N0\\���\"�f ������\0uq��,��5��A6�p���\n�ΐjY�7[pK��4;�l�5n��@�\\f��l ��M���P��3��C�HbЌ��cEpP���4eooe�{ \r -��2.�֥��P50u���G}��\0����<\r��!��~�������\n7F��d�����>��a��%�c6Ԟ��M��|��d����O�_�?J�� C0�>Ё�&7kM4�`%f�l�ΘB~�wx��ZG�P�2��0�=�*p ��@�BeȔ��|2�\r�?q��8����Њ(�yr���0��>�>�E?w�|r]�%Av�����@�+�X��Ag�� ��s��C��AXmNҝ�4\0\r���8J�J�ǸD�Қ�:= ������S�4��F; �\\&��P!6%\$i�xi4c�0B�;62=��1��̈PC��ƒm�� �dpc+�5��\$/rCR�`�MQ�6(\\��2A���\\��lG�l�\0Bq��P �r���B����т�_6Ll�!BQ��IŽG�����XRbs�]B�Hr���`�X��\$p�8��� nbR,±�L��\"�E%\0�aYB�s���D,�!��ϛpN9 RbG�4��M��t����jU�����y\0��%\$.�iL!x��ғ�(�.�)6T(�I��a%�K�]m�t���&��G7�ITM�B�\rza��])va�%�� � 41T�j͹(!�����\\�\\�W��\\t\$�0��%�\0aK\$�T�F(Y�C@��H� ��H�nD�d��W p��hZ�'�ZC,/���\$����J�FB�uܬQ:Υ�A��:-a#��=jb��l�Ug;{R��U��EWn�Ua��V��Nj��u�G�*�yֹ%��@��*���Yx�_�z�]�)v\"��R��L�VIv�=`��'��U�) S\r~R���\ni��)5S��D49~�b�;)3�,�9M3�HsJkT�Ü�(����uJ�][\$uf��ob���\n. ,�Yܵ9j1'��!�1�\$J��gڤ՟ĆU0��Zuah���c H��,�Yt��Kb�5��5��/dY��AU�҅��[W>�_V�\r��*���j��-T�� z�Y�d�c�m�ҹ��:����[Ut-{���l �i+a)�.[��_:�5��h��W§�m��%JI��[T�h>�������;�X̺d�ŸS�d�V�;\rƱ!N��K&�A�Ju4B��dg΢.Vp��mb��)�V!U\0G丨��`���\\��q�7Q�b�VL��:�Ղ���Z.�N��*�ԏU]Z�l�z������R D1I��£�r:\0<1~;#�Jb���M�y�+�۔/�\"ϛj<3�#��̌��:P.}�e����D\"q�yJ�G���sop�����X�\r� �d��\rxJ%���ƼO:%yy��,��%{�3<�Xø���� z�E�z(\0 �D_���.2+�g�b�c�x�pgި��|9CP����48U Q�/Aq��Q�(4 7e\$D��v:�V�b��N4[��iv ���2�\r�X1��AJ(<PlF�\0���\\z�)���W�(�4����� p�����`��\r�da6����O��m�a�}q�`��6P�'h��3�|����f� j��A�z���+�D�UW�D���5��%#�x� 3{��L\r-͙]:jd�P j�f�q:Z�\"sad�)�G�3 ��+��r�N K��1Q���x=>�\"��-�:�F���Iك*�@ԟ�y�T�\\U��Y~Š������3D������f,s�8HV�'�t9v(:��B9�\\Z����(�&�E8���W\$X\0�\n��9�WB��b��66j9� �ʈ��?,��| �a��g1�\nPs�\0 @�%#K����\r\0ŧ\0���0�?�š,�\0��h��h�\08\0l\0�-�Z��jb�Ŭ\0p\0�-�f`ql��0\0i-�\\ps��7�e\"-Z�lb�E�,�\0��]P ��E��b\0�/,Z��\r�\0000�[f-@\rӯEڋ�/�Z8��~\"��ڋ��. ^��Qw��ϋ�\0�/t_ȼ� ��E���\0�0d]��b�Ť�|\0��\\ؼ���E�\0af0tZ��n�J�\0l\0�0L^��Qj@��J��^��q#F(�1�/�[�1�����I�.�^8��\0[�q��[Ñl\"�� ��\0�0,d�� ��\r����c��{cE�\0o�0�]�\0\rc%�ۋ���8�w���Z��-�\\��{��֋G�/\\bp��@1�\0a�1�����s�!Ũ�/�/�]8��~c\"�ۋ��2�cΑm�\"�9�q�/\\^fQ~c�_���-\$i�\"�\0003����fX�qx#\09��Z.�i���@F���3tZH� \rcK�b\0j�/Dj��1����I� h�a��v�Ʃ�OZ4�Z��т#YE�\0i�.hH��sX/F<���.�j���b���\0mV/d\\���b�E����3T^(�шcKFR�����]X�q��������6�]h��c6Eċ�66�h����n\0005�sn/dn��`\r\"�F���-D`�Ց��N�2�Y��bx��#\\�닇V3x�1x�Fx��\0�6�b�q����!��8|^���ub�����-�r��q��:��%�0�pp�#����\0�6�f��Ǣ�Ŭ�d�0�qH����\$�@�q�-�^B4��\"�\08�1�/lnxϑ���G�3:0tjh�~@Ƽ���3�vH��b�G(�e��4gغq��2�1��-�nX��\"�F<�Q�1\\j��1���ENj��4m����[�n�z7�yh�1�#�ގ/�3\\x�q�KG����6�o��1{��FJ���6�lX�q⣄�u���9�r(�1��Gc\0�f:�rX�� #�Ž\0i�<\\}���b�F�\0s�7�y2���#uFe��\">4i��������\n<{�㑍��Ɖ� J;�]��1�#��0��J;4^��D���Ǯ����4i��(H#��E�x�/�n��1��/ǡ��j6,l��1t�/\0005%�0�]x����GG5�!�0��������r�q�2��ޑ��NFP�o\"4�_��1�d�%�e �3�s8���G5�� �6�[H��c�H�jY�;�[辑�b�! �y�@�\\��q�#WHN���;�c�Q��:�-�%�.�kXƑ���G͌��1Df�ߑ�cWFl��!�0����c Eܐ��;l��q�\"�F����7\\\\������O�q�.T|\"?����E��f9TyYѩ�SG1���A\$f9R\n\"��x��>B��H��ߤ\0���:\$e�1���F?�=�3Tu)\nq�b��~���<T��α�c�H.�m~C�wHʱ�#/�I�]~3�^��ф#��>�Y�4�^��Qjc��K�1\"�8�|6 ��c\"�B��\"b4���%����G\0e\"�/t���1r�1��e!v2�y����<Ǡ���8\\o��ђ#t�ѐ\rz@�}H‘�b���y �1�\\���deG ��Z3�~�r)�1ȿ���Bl~H��:�dF��-�?�k8�q�c(F͋�K�5|my�c1�<�*@�j���1��ž��>I�Z��Qj��2��\$0��h�Q��VFT� \$�Al~�qڣȱ�\$�>\\p�\rq�\$/�u%�!�Jq \$� �tE��GN-Tq)�\"��Hʌ��=�X�2-�H���8\\n��RW\$H��\"�C\\_�\0�d\$�f��\".D�u 'Q�zE��&0to��qj��ƿ��R@d������u�##�LLk�*q�\$*Gđi�@T�i�l��E����5���r\\d�I���\"/�Z�0�j\$T���z5Ld3�����o�.Tq�!1{�����9�Z��Q�b�F�wJ94n�����{�(�-�8�2h�u��;\$�-Dk��rs��H���#���Y7�\"�/E���� \$j�^�-�]�7�[\"N\$��‘��W����/]�\$�+�1Ga�/&IDn�’@\$��!��\$�-�k!�Q����)(N/\$t������O�KzP�tX��[\0�G��w(*K\$v��1�c �'��G̞I�xd��\n�A�8\\rX��a��I�iN�I%\$���_���6�f�Q�#��I�5#�F��غ��#�E⒕\"�3\$�I�c�H���vR |�Q��cE���:R�e��h�EΏfK`8�r.#�E��s�0L���R��F���!\nC\$`���\$�H?��nP�e�!�@F'���/�����������%�N,h��rF\$�����3�t��Ҁ���!1<��CQ�%�Ò��J�Z�f.�6ō����C���Ԝ.�[��Bҿx����\0NRn`���Y\n�%+N�IMs:ùYd�ef�B[���nƹY��m��R�ג��Y��C�X���j��U+Vk,�\0P��b @e���x��V��yT�7�u�[J�ȱ\nD��eR��mx&�l �\0)�}�J�,\0�I�ZƵ\$k!���Yb�����R‡e/Q���k�5.�e��5����W�`��\0)�Yv\"V�\0��\n�%��`Yn�աa��xÆQ!,�`\"� _.�偩Ɩtm\$�\"��J��֍�� �v�%�M9j �� 斧�*�Kp֔�;\\R ��3(���^��:}���|>µa-'U%w*�#>�@�̬e�J���;Pw/+��5E\rjn���d���^[���cΰ�u�z\\ؐ1mi\"x��p��;����P)����#��ؒ���!A�;�� 4�a{`aV{K�U��8㨟0''o�2���yc̸9]K�@�җ^�lB��Or���,du��8�?����%�gB����Yn+�%c�e\0���ऱYr@f�(]ּ�\nbiz��n�SS2��GdBPj���@�(�ȥ�!�-�v��e�*c\0��4J�炒���,�U� d��e�j'T�H]Ԋ�G!�)u��֯��ү�Z�B5�̓W��0\n���R���W��\\�Q j�^r�%l��3,�Yy��f3&��܎�Q:ϵ2�m�R)�T��(KR��0�ʔ@��Y��Y:��e3\r%���T�%�X����ST�.J\\�0�h�ą�D!�:�u���U\"�Ł �o+7�\"����f'��R\0���J��2S�2�#nm ��I劜�\"X���[�ր��} J��c�9p0���Q�(U\0�xDEW��.L��=<B�0 +�)ZS V;�\\�I{�5I�A���,dW�u�5Ew\n\$%ҁ���2i_\$��+��O,����X��ՑJg&J��G��%\\J��b.��^L�T�Fl�薹]k#f@L�G�ĐT�ٗ��H��\"�q1S̰��j�V�(Ι��ZVz�ņ�,����G�.1F��gN�;�1ÊV��5E��5`�\0Ct�=F\nṛα�K����\0�ۊ�%��D]Q\$\r\0�3J\\,͙��<T4*���.�YK�D�Q��L�S%,�g������<��u0���Uĉ�*x(��N’Yv!��y� w�4fd��rG��M \$��^;�����)<P�]D�%%�;�j��I0�a�u^Jp�[)�v�3RhR�E��\n�L_�#5|ܾ�m3P�*�\\Y51X�� i�N���\$\"��a���h*KU���V8��u�%&�r�˚��5o���g�;�rMl[ƨ�g������U�q�깚h|�eO2�f MlW2AP�׹�����v~eD�e�3Uӫl�E62i�����Ub���U���������V��iI!\$i�ʭ&Z:��xm!ņ�.�O�fwү!���kݤ̓��6b\"�I�J]]:T��6�Vr��}��ǫ]����U�� ys7f�Mř�3����Y��:T_M�w%3�n��\n��z*��3�h�� �`U��L���,�ۄ�5��vf��Û�42_Q��h���uD�\no��)�ĜիM9�7foۼ��r����WB~iT�eyQT�N\n�d�pr�#��M�;���4�p���t���(;���5 |��ǂ��',AV7ܔ��UA�&��R�P�\"��y�ҷ��)�[�n���-3V��,?�s6�p���3�f��A��9k|�ɮS�f�*@��5�g��ɿ2��}����U�ݙ����H�F�l%�p«Ie�be�M�SO\r�[��i�3�f��LV��r �u�����NA�:�%r��y3Q�_̸�W.���^Sl@&���5�Yl��1���}Vx�gʅ�^Sn���Q!:5�Z�iZCԈ:���3qg�%D��ݪ{U�3�tZ�`��u%w:�ZQ:Q���W f�훿9Jpl�)�3x�v���K7�b#�����X+J�(��h��P*Ӂ���Λ��!ה�ŏSL�h*'���\npB��ڪ�gNʝ�8BuҪ�Ž�� Ό��8ni�I�s�US�I��;vvڳU�sR�7N�u�8�H|���ӷ�̎��8�q����+'���`�x�9R� ծ��MaR8�x�)��'!���;�U��Y֓��sNI�g:�KT�y�3�g��Y����k���ܳn'LO(��3�w4�4������l���J����w��9�\\����hf(�_~���}9N��� \0���b\"�Y餃Th,ڞ�@��D���\$�I��;�e��U��n����,�O�� X��g�-���+>ti'G����l�%\0�8�VB�U1�ye�\0KT�4���m��V2)\r]I/\rF���X���ߨ�a��G�¹�*�����>ER��� ���Z�-)I\$����:�a�\0�Fyba�g�w��(�_@�v}�i�ʳ�S^�25DԳ� ��URO��JH��\\�is�f��K�N��qi�Sg�OŸ\n�F~|���*@gR�_Q<9sܬ3i+ؗ�.Cw���|���y�6a�O�Y9���ɖ\n�Խ-([���_�}�S�]c� S=��������Y��U->�<���\n<�sO�Q4F�^}\0007u�k(/���/5{L�9�\0��� �&��[<���s�\0&��#�@h��3�V}��H���*�w+]'D�&�@�ց])��;TGe3��\\��n����d\$:�uN4�ykt�-dR!7����e4(P!��-��9� 4�_PMGb��ıw����6O�S�F���)��yh0+����qT|�� +u���+��A�?�� �T�3.q��41T��e��\n:P����{T�\n��h?��T�A�S��*���+�u�>�\\�Z����Y췢wEJ��%��s�L��d��y�+\rC�ߡ'A�l,�y�3���͗`� _*�P� ThKDV���~5 �0�+�,�-?�]���3�֍K�`�^���I42(]�w�.�r����]�\nYƨB���� ��}ЋR ��g�}: H��J�WP��\"޵���V\\�<��? >�����ܬ݆�=��:�\n0��\\+�S���f�U���U,�WCֈ�On��΅��.�e9|R�I'�[�/������2���Q��Bn:�I�\n��g�9�\r� ,�R6����Q\$X�+�>����`\n�)/_8Qi�����=��v?5v�\0 \n���LG�Dm�w\\�F֌�Ѣ���dꟵ}s�\"��Yv�|�J*�9h���@XEU�*�(oQ]\$�B��,��� ��KT�v�AptCɃ\n�C,/�<��ڙEW�-V�P��=W�*%K�-Q`9 (��59Ӏ�m)�X��@�2���T@��\nS���bd�Eδa�+�DX��|U� � ��F� 2�%5\nj�m��W�+�x�K��V�3#��CT�ek���&�,�l�jbd7)ӓ\"\n+�P��b��I�@�3��ܵjU��Es��)D�f뒃������P�Z3AΌ�\nwTh𗲪ۘ�4Z��<�uߩ�d q�ˊu(���bKG����n�Tﮈ]z��f%#�3I�fS��&}�@D�@++��A�h���\n��U�ޥ|B�;��Um��U�E�N�!�x2�1�\0�GmvH~��H�T�)�W��YN�\"�k5��vT#=�ڥ�<\n}�#R3Y�H�R� Iͳܦ;��Rl�1l�uB%TQJ�*���'�E�0i�dw,�z�ͥ:\$��;�?���j��)��)ԏ�\$32J}�&�[�\$��́�;Dn��E״�+0�aZ{���C ���(�� :����O@h��D��\0��`PTou����F�\rQv����o�ܡ\$S��+��#7��Izr�pk �DW��Fs�9��Q� ���1�g��#�\0\\L�\$��3�g�X�y�y �-3h����!�nX��]+�� ɝ�c\0�\0�b��\0\r���-{�\0�Q(� Q�\$s�0���m(�[Ru�V����>��+�J[�6����J\0֗�\\���,��K�3�.�]a_\0R�J Ɨ`�^ԶClR�IK��\n�\$�nŏ���Kj��\n����~/��mn�].�`��ij��#K��f:`\0�錀6�7K▨zc��\0����/K���/�d���FE\0aL���dZ`�J�S��ʙ�2��4�@/�(��L��0�`�ĩ��_�L��]4Zh�Щ�SD�M��4:c��SR��M�E4�i��SG�EMj��4zd�թ�SFKL��%4�e��%\$�lKM2��1�ڔ�i����MV��.�ڔ�i����Lz�/���ۣӄ��M�,`�_��imS��gMƜ�jg�����5�9.��9j_��S���.��9�_���S���.�7�r�)��%�[2�m8�uT��S��3M:�]3�q���nӱ�KN�1|^�kt�\"��H�gKj�-;zc�i�Ӛ����\r<�_�-i�Ӹ��\"֞U.���i�RڑkOF��=:\\��\$Zө�MLE�5�x����ӻ _\"֜=<\0 �t��S�9OҞ�1�~��i�����O��>�~q�)�F�� ��=6:~���J���P:��=��T�)�ƫ��PJ8�@�w�����*��O�5]>��t���T\n��!\"��6Y )��H�/P���3� ���/��P~��� �Ӯ�!\"��C����j� �eNJ������*%�4�1Q��CZ�Q�jTB�Q.�\rE)\0004��\$�2�SM+�<j�t�j0�,�9Q��}F\0\$�s��Ta��KΣ]Ecj*�'K�M��MGx��R�T1�#QꡥG��5�:�z�L��4u6z��\"j\"T�KuN֣�G�g\$jFSܨ�Q2��H��\"�MT��%R��Hz��\$�,�w�Re.\$r�z�)��Ԧ�-Q���J���ʪ@԰�=R&/�Iʕ1�*]T���7���Q��D&өqN� _(�q�c[Tw�QR�崜J�\0n��T���.��956c�܌�Sz�H���7�R�}�Sr8�N���\"b�T��Q�5MN���#����ES§-H��7\"�T��_S�}G�̕?*yԩ��S�P*�5#���܍�T:�]Pʟ�C*�ԉ�T:�-K8�5C����R�--MȾ�H��� �'T���H���H���ы�T���R���,���܋GTک-SJ��M*�ԩ�UTکmMH��M���>�gSD�5M�•R���H�wU\"��K8��R���ڌ�U*�-U*��n¾T�IR�,t�Z���Y�IUF�51���W)v�k�_KƫpJ�5Zj�ů�R�4r\n�^jI�CK����}Uʓ_��ԛ��O�=N�R*�F-��R��%W���c��\\�aV>�EYj��d���ëUά�WX�5*�Ջ��Uy��Z��1k�ը�7V��R\\H�5h*�U���UƧM[���k�vո�3V�}[(�5W�zո�iB�O��1��T���V�;�[��pR�Gu�;T@0>\0��/I���W`�]��\0���8��P��]��1m*��ǍyUz�mW��|�ݓ[��֯�]J�ш��U������Z*�5\\j����Z��`Z�5~��E�W��4Z��5h�Q�^�cXZ��S��1o� V��U&��T��5}cU^��X��dm*���kUu��SfG=[��j�sտ��X�Kc\n�iR�H�i#��uWt��������X�cĹ��U���rڢ�UZ�Շ�NE���X���4��ud�E�eV^��K��n��V8�sX¥�f��/�hJ�-J]ӂ������zO��<Eh�\$勓���\0K��<bw��>���N�\")]b� �+z�.cS.�iF� ���QNQ���V*������O[X�nx��P k��oN��}<aO�Iߓ�h���T;�r񉉤�VD6Q�;z�]j�~'�:�[Iv��7^ʑ����j�w[������ņ�:u �Ds#���\\w�<n|*�h �m�Kv;Y҈��3�]��^#�Z�j�gy�jħY,�%;3������.�W\"��\$�3>gڜ���Ϧ�V�T�Zj�hY�j�kD*!�h&Xz�i���+GV��\"��Z�:Ҥ�+�NoG�Zjj�i�]ʞkO�_�֬ԐmjI����t��#�[�j\rn�����n��Z�_,���g�Ě�:���9����[L2�W=T��0��f�\0P�U6\ns%7isY�?��u�3���nb5�����X|G~l�&�k���M��������y�S��)�]�ܭr��ٸ�������?�}u'n 0W-ι��b��Ǫ���k?�vQ�7��}p\n�����ٮ Z*�9)��5ޕZW �-ZB���:��㫊W�\0WZfp�Gp���ٮ:�Fp����U��SN/��\\��%s9�S{� �8��Z�as�ۓ�+�N^��9�M�{�P5�� �Q���J���y����;����z����Y�V �3�:�D�I���+����19M;�������V���\rQ{��ծ���+��F�CLĹ�N���Ԉ�\\��)\$i���N'\0���P�š���]X�^�s1�f�&�\"'<O���̡�L\0�\"�@� ��%�6��UA�1�i(z��݁�\r�Ղ��bZ��+IQO�3���\r=*ĉ��)�!����`��h��,ЫmGPC��A��ٲ�A�� (ZŰ%�t�,h/�� �i��k���XEJ6�ID�Ȭ\"�\n�aU- ��\nv�y��_���›ګ�k a�B<�Vƒ�D�/P���a��)9L�(Z��8�vvù�k �o�ZXk���| �&�.�東C����� `�1�]7&ę+�H�CBcX�B7xX�|1��0��a�6��ubpJLDž�(���mbl�8I�*R��@tk 0�����xX���;�� al]4s�t��Ū �0�c�'��l�`8M�8����D4w`p?@706g̈~K�\r�� �P���bh�\"&��\n�q�PD����\$�(�0QP<����� Q �!X��x��5���R�`w/2�2#���� `���1�/�܁\r���:²����B7�V7Z ��gMY�H3� ��b� Z��J���G�w�gl�^�-�R-!�l�7̲L��ư<1 �QC/ղh��)�W�6C �*d��6]VK!m�� ��05G\$�R��4��=Cw&[� �YP��dɚ�')VK,�5e�\r���K+�1�X)b�e)��uF2A#E�&g~�e�y�fp5�lYl�Ԝ5�����\nŠ�m}`�(�M �Pl9Y��f����]�Vl-4�é����>`��/��fPE�i�\0k�v�\0�fhS0�&�¦lͼ�#fu���5 i%�:Fd��9��؀G<� {�}��s[7\0�Ξ3�ft:+.Ȕ�p�>�ձ�@!Pas6q,���1bǬŋ�ZK���-��ar`�?RxX�鑡�V���#Ĥ�z�; �D���H��1��6D`��Y�` �R�P֋>-�!\$�����~π���`>���h�0�1����&\0�h���I�wl�Z�\$�\\\r��8�~,�\n�o_��B2D����a1��ǩ�=�v<�kF�p`�`�kBF�6� ����h��T T֎� �@?dr�剀J�H@1�G�dn��w���%��JG��0b�Tf]m(�k�qg\\�������ш3vk'�^d��AX��~ �W�Vs�*�ʱ�d��M����@?���}�6\\��m9<��i�ݧ��Ԭh�^s}�-�[K�s�q�b��-��OORm8\$�yw��##��@❷\0��ؤ 5F7����X\n��|J�/-S�W!f�� 0�,w��D4١RU�T������ZX�=�`�W\$@�ԥ(�XG��Ҋ��a>�*�Y���\n��\n��!�[mj���0,mu�W@ FX������=��(���b��<!\n\"��83�'��(R� �\n>��@�W�r!L�H�k�\r�E\nW��\r��'FH�\$�����m���=�ۥ{LY��&���_\0����#�䔀[�9\0�\"��@8�iK���0�l���p\ng��'qbF��y�c�l@9�(#JU�ݲ�{io���. {�ͳ4�V́�VnF�x���z� Q�ޞ\$kSa~ʨ0s@���%�y@��5H��N�ͦ�@�x�# ܫ /\\��?<hڂ���I�T��:�3�\n%��");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0�\0001���\0\0����\0\0\0!�\0\0\0,\0\0\0\0\0\0!�����M��*)�o��) q��e���#��L�\0;";break;case"cross.gif":echo"GIF89a\0\0�\0001���\0\0����\0\0\0!�\0\0\0,\0\0\0\0\0\0#�����#\na�Fo~y�.�_wa��1�J� G�L�6]\0\0;";break;case"up.gif":echo"GIF89a\0\0�\0001���\0\0����\0\0\0!�\0\0\0,\0\0\0\0\0\0 �����MQN\n�}��a8�y�aŶ�\0��\0;";break;case"down.gif":echo"GIF89a\0\0�\0001���\0\0����\0\0\0!�\0\0\0,\0\0\0\0\0\0 �����M��*)�[W�\\��L&ٜƶ�\0��\0;";break;case"arrow.gif":echo"GIF89a\0\n\0�\0\0������!�\0\0\0,\0\0\0\0\0\n\0\0�i������Ӳ޻\0\0;";break;}}exit;}if($_GET["script"]=="version"){$jd=file_open_lock(get_temp_dir()."/adminer.version");if($jd)file_write_unlock($jd,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$g,$m,$fc,$nc,$xc,$n,$ld,$rd,$ba,$Qd,$x,$ca,$me,$nf,$Yf,$Dh,$wd,$ki,$qi,$zi,$Fi,$ia;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$ba=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$Lf=array(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$Lf[]=true;call_user_func_array('session_set_cookie_params',$Lf);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Wc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",15);$me=array('en'=>'English','ar'=>'العربية','bg'=>'Български','bn'=>'বাংলা','bs'=>'Bosanski','ca'=>'Català','cs'=>'Čeština','da'=>'Dansk','de'=>'Deutsch','el'=>'Ελληνικά','es'=>'Español','et'=>'Eesti','fa'=>'فارسی','fi'=>'Suomi','fr'=>'Français','gl'=>'Galego','he'=>'עברית','hu'=>'Magyar','id'=>'Bahasa Indonesia','it'=>'Italiano','ja'=>'日本語','ko'=>'한국어','lt'=>'Lietuvių','ms'=>'Bahasa Melayu','nl'=>'Nederlands','no'=>'Norsk','pl'=>'Polski','pt'=>'Português','pt-br'=>'Português (Brazil)','ro'=>'Limba Română','ru'=>'Русский','sk'=>'Slovenčina','sl'=>'Slovenski','sr'=>'Српски','ta'=>'த‌மிழ்','th'=>'ภาษาไทย','tr'=>'Türkçe','uk'=>'Українська','vi'=>'Tiếng Việt','zh'=>'简体中文','zh-tw'=>'繁體中文',);function -get_lang(){global$ca;return$ca;}function -lang($u,$ef=null){if(is_string($u)){$bg=array_search($u,get_translations("en"));if($bg!==false)$u=$bg;}global$ca,$qi;$pi=($qi[$u]?$qi[$u]:$u);if(is_array($pi)){$bg=($ef==1?0:($ca=='cs'||$ca=='sk'?($ef&&$ef<5?1:2):($ca=='fr'?(!$ef?0:1):($ca=='pl'?($ef%10>1&&$ef%10<5&&$ef/10%10!=1?1:2):($ca=='sl'?($ef%100==1?0:($ef%100==2?1:($ef%100==3||$ef%100==4?2:3))):($ca=='lt'?($ef%10==1&&$ef%100!=11?0:($ef%10>1&&$ef/10%10!=1?1:2)):($ca=='bs'||$ca=='ru'||$ca=='sr'||$ca=='uk'?($ef%10==1&&$ef%100!=11?0:($ef%10>1&&$ef%10<5&&$ef/10%10!=1?1:2)):1)))))));$pi=$pi[$bg];}$Fa=func_get_args();array_shift($Fa);$gd=str_replace("%d","%s",$pi);if($gd!=$pi)$Fa[0]=format_number($ef);return -vsprintf($gd,$Fa);}function -switch_lang(){global$ca,$me;echo"<form action='' method='post'>\n<div id='lang'>",lang(19).": ".html_select("lang",$me,$ca,"this.form.submit();")," <input type='submit' value='".lang(20)."' class='hidden'>\n","<input type='hidden' name='token' value='".get_token()."'>\n";echo"</div>\n</form>\n";}if(isset($_POST["lang"])&&verify_token()){cookie("adminer_lang",$_POST["lang"]);$_SESSION["lang"]=$_POST["lang"];$_SESSION["translations"]=array();redirect(remove_from_uri());}$ca="en";if(isset($me[$_COOKIE["adminer_lang"]])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ca=$_COOKIE["adminer_lang"];}elseif(isset($me[$_SESSION["lang"]]))$ca=$_SESSION["lang"];else{$va=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$Ce,PREG_SET_ORDER);foreach($Ce -as$B)$va[$B[1]]=(isset($B[3])?$B[3]:1);arsort($va);foreach($va -as$y=>$rg){if(isset($me[$y])){$ca=$y;break;}$y=preg_replace('~-.*~','',$y);if(!isset($va[$y])&&isset($me[$y])){$ca=$y;break;}}}$qi=$_SESSION["translations"];if($_SESSION["translations_version"]!=131114700){$qi=array();$_SESSION["translations_version"]=131114700;}function -get_translations($le){switch($le){case"en":$f="A9D�y�@s:�G�(�ff����� ��:�S���a2 \"1�..L'�I��m�#�s,�K��OP#I�@%9��i4�o2ύ���,9�%�P�b2��a��r\n2�NC�(�r4��1C`(�:Eb�9A�i:�&㙔�y��F��Y��\r�\n� 8Z�S=\$A�� ��`�=�܌���0�\n��dF� ��n:Zΰ)��Q���mw����O��mfpQ�΂��q��a�į�#q��w7S�X3������o�\n>Z�M�zi��s;�̒��_�:���#|@�46��:�\r-z|�(j*���0�:-h��/̸�8)+r^1/Л�η,�ZӈKX�9,�p�:>#���(�6�qC���I�|��Ȣ,�(y �, %b{�ʢ�� �9B��)B����+�1>�P޵\r���6��2��L�P�2\r�\\*�Jb�=m��1�jH��O\$�����4 �jF�o���F4 #0z\r��8a�^��\\�N-�����|�єp�2��\r�:x7 �<�ص��^0��#�2�jk6��@��������ΎA&2��u�\n�1��l Ġ+��s� ���<��M�]l�&!��b_2���Oz\r��a7���1�7��� ��i��\r�ӊv�è�b����3����c2�N1�\0S�<���=�PȤϭc��%����������_�accC����\n\"`@�_�d�7�(��[V�n�6��9��h 8�k��/k˯K,�) �+Z\"��󰌻�����\"MF�����'iʌB\r��0�6NRL�D�B�ލMp򍯖t�F��^s1�t�!ͺ\n�p�7}K��`O-�d��>O��6t��P�c�_W�6W�P���pҐ�b��#2�x�#�\"�2�I]xP�� �L��tZP*1n�}\\گ�7ԫ� �@�}�I1T�.�A�E\r��W�a(�2�Ài !�H��x���u%�����Uj\\�(��W�*�S\niN)�@��\"rT��T�����r�Vm�0h�� F��7�0���=��4�\n��zw=G�����>nU�'�xvT12^ '؍ a �m�;�ET*�{-�0�F��Pia������Ky�HG����MA\0P A�8�O�A@\$���'�I�(^��߱���L�n\"�T��b|h91&pt���\rlp6�6bTK q0\r�m\n��Da\$%8ᐟ��M`�>nj��H� 0I\"�rC(K��?怀�fTI!�&�F�����d��W��ׁi�!<)�F�^�R&�8�c�����lS��\$�INprd\$��0cIC�ig0̑�@�C�\nm\$� �&H�0T��9p�#z^&�3 �H�5lZN��I�(�*�BxNT(@�(\n� �\"P�i�`^���F�N��;B�\\ӄČ��O,le ���p Ho5Dr����v\0T�V�6R�w�;�};����T�1�0g�R1 ��c`lH�c�� �'�@������?Bh<��O��wP���0��D��r#Gtt���<VL�VB@C�%^��+�SEb���Fa��%�MN-s��(����[hyD쐭u��Jص�x�����Z�-w9 �2\n�������� �' ��2�P�Z-r�����*��D7�����^�\r�/!]�¢S��4�!��^�� ?7z��@��@ �����o��~=��\"��x��6]��B`ú��� �f��z�v�'�� ��A\"q�Ο0����!�� k��Y��A�JC�̼�\r��߈r�Ș�#�]���/¨/e�j]rյIIĦ�&Q ���w8�:G�.�M�0�6�rJ`(+�P�o�'�)1m��pHGd�Œa4�l�Xz�\0����9eg�*j@ËhI3��œ��vYyȔ�������X��U�[�ɻ/�����PCL*lmo�rԔ�5�lp�\\f3cو����,!aL2S�{r�� ��+�˺��TK(�v@}�a�z��ğV��� x氧��*�\r�d3��In�͢�-�\\C%s�u���m������M�]m��o�2��֞=�+��/����>?�8�4l�ۘM��Κ�'��iE0��/�N] d4bdMrA���&,X:B�\0�\\^oꎠO�N�}[?^+����ɮ���ҀAJ�g)�\\ �vn�y{����N����K��)��{��]67�k �w�d0�Q��<�P˧�bI�#���:����R�͋�\n�f�OIt���>�y��+ok�������e� ���9I��_i�;+�ܟ����+���k|`��Wy��)� ��x��7�흉wV�e�x!�~\$�j< y���2����9Ȕ�I�`/������N����h�����NT�BP�%�t&.��� �O��Z�Dg��o�20&�fV�@�!#�,�b,&����6J0R���e�����n�pi�� �v��j�0X�e����#�����r�н�V��� �*�o ��\n�� 0�J�8D! \$�\n�F���\n�y\n/��p� N{\0n�\r�/�%\0�<D\0K� �\0��E��@�zCN]�<�P\rbL\"�}�O��7\r�N���<7�Lu��.\"� q%�Րꌛ�t�m�N��o�d \r�V�\0� `��eܢ0sz\r �sb�A\"p�h�@�\n���pG�\\.��̓Z��L�L��-�,7\r�|'0p�x�E�o��qz��إ�&6��\r�.�־�0V����4prJV����\$fKC��\n\n�' Pab�ڂ�����%�b��r�R�m�����R5�\"�#/�\nR%2�&�6\$⸍�#�8��o+��/Nuq�C/�L�N�@��vd��v��y'L����0� O`�%�t�rRZ\"�\"vl�L=� �,hÓcT3�eJ�L2��@�,�P6oJ�f���\"�-LDD�]����\$��\"���/)[\$\r�/�\\";break;case"ar":$f="�C�P���l*�\r�,&\n�A���(J.��0Se\\�\r��b�@�0�,\nQ,l)���µ���A��j_1�C�M��e ��S�\ng@�Og���X�DM�)��0��cA��n8�e*y#au4�� �Ir*;rS�U�dJ }���*z�U�@��X;ai1l(n������[�y�d�u 'c(��oF����e3�Nb���p2N�S��ӳ:LZ�z�P�\\b�u�.�[�Q`u !��Jy��&2��(gT��SњM�x�5g5�K�K�¦����0ʀ(�7\rm8�7(�9\r�f\"7N�9�� ��4�x荶� �x�;�#\"�������2ɰW\"J\nB��'hk �ūb�Di�\\@���p���yf���9����V�?�TXW���F��{�3)\"�W9�|��eRhU��Ҫ�1��P�>���\"o{�\"7�^��pL\n7OM*�O��<7cp�4��Rfl�N��SJ��\\E��V�J�+�#��܇Jr� �>�J��(ꆶ\$(�R�M��v�GI� �����ťr��Wj�|�\"v���< ��k��(���3\r��1�T[�nڰh�����޳�����\0�2�\0yw���3��:����x�\r�i�PH���p_�p�B�J`|6�-+�3A#kuF\r��^0��zC�ܪ�����s ��j�Q8������u,15���XrZTƖ��n�\"@P�0�Cs�3��(�Z(�f���\$������:��Yk���U��<���:����0�����ŋ�l�SR����i�Z��)�v�kR<�J�#[�q77WSI�Y<ь�l�MT���K���#oci@�c�7S����b���!�jh�;[3��!{�cT����\\!>6}�TT�o�1lk�Ȧg�[���H��rǙ`yٍr�1��a��]�7��(v��p�ý6�+���q�yj͗�g<�� Bld5�=����r���@�\r(o ��6-3\n~3�X��� y�dA�<�\0ꢃ��\\!��\0��9�k�:(ZC8a=@�!��@��pu7`�9���I�h� )� �A\n�\$��\n�\\��j&Hh���˒Ko!��+4J��\$(����x�YtrHJ�Ɨ���9�@͐(\\��8 Z!/PƣTXdZ��Я���C�\"�I@F�əAOe�C��\\N �v0��g��Ip� �]X��@�aAY-\$���n�3b�����W�\"^��K/���X`�݄��܁�sb IC���X� !�8���C����#�U��ͬG !��!�\r\n�C*.�@ʒ����j�F����bL h4�zO(�@��c� F�8 i 9��a � C&+\r�7�(u�iB��a���1̙�[�sG����U�a|+n����̍Hh���C`%7\$��!S��L����O.9�j�a�6����\$l��]�D7�z�S�Le��eł��j�&¥G��+�~+m��G�^�(e��#��V\\_��i�O?�j|&a\$��>�CK[[m��|l��qo�� �ddT�Z�����n�)=aC��G��ΰ�\\�\n<)�BD^tm��)B��ڑm�gQ-�G�<��f���y&&�N�P��[�~��3�\0� �v���v�i�.�&\0�V��]�*���i��qu�kOg��AG�㣢�+e�Z!96,n����A<'\0� A\n�\r�ЈB`E�j~:��N�b�D�ҥ)�K\0/ ��g([S0�P.͒��|\\��.)1H<� ��8�1ID�)�rA�/B�Ԣ \\J\rs���� _�\\:Xe�m�\"56��NW�O5�@w�ẃ����,G�\r� \nj����g�� 5J~(�`aR\\Bz,Vj NƗ+�\"^m'wDS[yo:|s��bˆ�\\�c�gi\$��ƆM�Ñ!�i�C\0P \0S\r!�����S ���UdžH�Cၢ޷E��e�@���ƶkC(w&����g�v1��������w�ܻ����I)R��zMc�SNIJ]�̜a6�u�G ����w��'S���3��MVqʄ�@V)��GϦ�.P� gk范�?�D�>����ң0ʕg�@�BH�i�H1X��p���'\$�?�|��`F�����F���5��{޺��FU&���,#D ����/X����A�f-�bPk��/-�!6� ��.F<��)�a������e6t\\R�ro!������U*�au���-�;�1��Hމ\n � ���G���\$�yzU�����ǕA mH<yS���\$Nt�,-�uU<3� O��h�+,5\"�;��:�X�VA h�9B���؟���\r��ؗ� �x[���Frҋ�d� �4�I�?\$�.G��~�F������E�b� �'�i �����p� \0�N�)N��^�0F��\"lg�R#��Gv�\"�-�lMf�A\n�)�~���T��.�g�,�ďmՐ8K�`��3?G�����/�l��I����ʘ/�P:�n @RSPi\0���Ϭ�����iLC�g�Wjr#��|��l�ˏ���\n��}� 0vh�\r���P�GP\0�j��p�{Pz��\0�xzp|��2��EB&\$'\\������¶pB^��e���+�1��nz�l��o��� \$���m�o�&�L߱Q���D8���V���\"\r�Pݪ�E\r�1�#�� f�&�g#�8�ft�^�����b ~�P~܎�r��l�m�L0�y��(�ip�!q�M����Q�l\$N�a�\\ߑr��\n�?/��-�W������&1O�hl�B���\"qd�h��.�Qf{�\$��*��ZqS\"��\$�2�@�RJ���g�T�P�\$j9Fv\"o�FȔ�\\T�x�� ���\"�o����L���\$+1(�O&r\"㒧�5%�+*�\"#��V/��2R}+c�G2�-r]-���\"ɐ����M��F2�eĔ?�+R�/� 02*�/���0 �-�o-���E,I���re�I����BU2���<H�3�P�S3\"��Ow3��3S4S4s�nJ�z2H\"me/p� eH1 *�X�\$�8�_#eQ9e:���y�G+î�� �mR|>l��d[)�-\r GFl��1���Җ��V�¨�l�}=n<'<O�:&���8��=�hz\r�V h: `�P�]��o�x�@� �� �Z]bf��\r�관@�h�@��\n���pO�B�����ov��*�x\$n����f�@�B�.-�wf�fqU!RwBze�|`E\0�D������UC�� �\r��c��\\���T�E��.�R�e4�+>�1��r�Fg���ǯ��-� �ȣ���t��O��P�2�,p\n\n�6cD4�B �Z\r���Ť��z.T�tø�ļ+&�M�b��P��Q� &���t�B�U���2ʈ����\\�ZU��[������:�^�d�8�lu0�:O*�4�ɔ�1�|��而�<��L�Ȍ�>\\SR�Օ�`*���/����%D� \0�@� �t\n`�";break;case"bg":$f="�P�\r�E�@4�!Aw h�Z(&��~\n��fa��N�`���D��4���\"�]4\r;Ae2��a�������.a���rp��@ד�|.W.X4��FP�����\$�hR�s���}@�Зp�Д�B�4�sE�΢7f�&E�,��i�X\n FC1��l7c��MEo)_G����_<�Gӭ}���,k놊qPX�}F�+9���7i�� Z贚i�Q��_a���Z��*�n^���S��9���Y�V��~�]�X\\R�6���}�j�} �l�4�v��=��3 �\0�@D |�¤���[�����^]#�s.�3d\0*��X�7��p@2�C��9(� �: #�9��\0�7���A����8\\z8Fc�������m X���4� ;��r�'HS���2�6A>�¦�6��5 �ܸ�kJ��&�j�\"K������9�{.��-�^�:�*U?�+*>S�3z>J&SK�&���hR����&�:��ɒ>I�J���L�H�H�����Eq8�ZV��s[����2�Ø�7ث��έj��/t��Z ��.��O��m�5�cCmҨL�X#�ij8��Q��B�ŤC*5\\ �ʰ��2\r�H�F��uG�� #���pφF�|cƣ��:\rx��!�9��D�d#@�2���D4���9�Ax^;�pÀ`Q@]��}��y(�2��\r�\\k� �X���px�!��n9)�- ;�%��^\r��jʣ��]U8{ā�����{v��M;��@O;D�Kb��Ur�\n��7`C:<��kT��`O)�(3J>M+�{��PH�htT�4�� �S�P3 ��8�i�q~���c+3 ��C%~#���po ܚ���8+����yqj�L\"�=��w���V�H�y��4�G���( :ں,�yޭ\"��#���w��DX\nA�Re�+��n@ދn{%4��׉Je;�d�&�yVq�AL(���!)?FL�A.���Pǹ��f�x!��B�p���ۡp�n+�\n�%���[{Z��qa�`9�V�H����!��w���t��4�H�4(L \$\\x��/Wsaoƥܸ%b�iTA!DȔ��4&l6@��N��;�l���/K�~�%�È\0S4\r4�h�<S�H�Q&*��3�Ӓ|ȡ��d4�/I����s�0�x��8 sf���2� �LWQ0A��Y&W��y�\nM�=\nͩ�]��zʉ>��Y�\$��W��i,���KDP�Ұ�O*�|��2��wK�.�8��� )������&�<L�XK�C��t��h�*x��=\"P��R]ؖ�mI9�(�P4B���rՈ�5��XrI�d,`��@ eL���D����E����_�+t9��\"c!��\r)i1'JI`T�b�@�S��O��oR�'#� �PefwR�V�Y{1fl՛��wH�@hA��,%���CIih5 ��~�5��i�)�T44�>#χw4�\\O&m�U�ڽ^<c{*��U{N�l����W ѷ*u���(�Xm3Y\0����5������CfXth9�V�0u��7�vk�h q�;l+�ẙ���a�9��g�\$`C� p�/��lŢ�\n��.�@P��>r���i\0(-�����A *(�\rd00�Lؕ�\r�9��U�g��!#�d��{ �Ȓ���8M��x� �.��`z��E%DR������� �Z�祠:J&���;��K.�='�7q� �Mn���i�R��2���Sº��;���e2�-�g�����<U'�2�h�?abї�gA��N4��/��I%��>@\$+�HOD���\\lZ�% ���H����Xb�M� �~�Iv�R��Iy�ŧ%R�6ǎк�&��,�\\�XA�����hq�\0F\n��.ɂK�\\b~椥�z��Pkg9��b��n���r�L��,j�H�bB\n+����E��=�cV]\\��}*ճF8�N�h ��b��;�Ո�,\r��;V '��w�]C��GpY����G� ߒ����\rz����d,_���\n%}/J�7s��C��k?ɶ�f{1���>iǹ�U�3!:�� ٮOZG:��8`;ؐV2��nr��/4��JXl�/��y{OuR�G��\0\$b'�B����노��c��2�s�A2�\r��J��<�[x��Vs��=ڿp!�h������!�񢣈{��<�  ��RPn���cd�#d��8�������؆\r�v�a]*B��7���m#�a~��Q������\n��\"�y�!=]��^�F �D��Wk��3v.�,���txH>�:�\\����5g�FByɼ������/��t�5@�\n�� � \0@ �E\0�G&el0G�za@�Xd�T��%����_��s�6�@#*8�hsPFQ(F��k*�i�J)�'\"�I�7�x�D+<��qE+�Z]��By�N6G�N���l� �9�؄����]��#��ˆ�l���I���'�q ~{L� P�+���/q ���m�Qo��K\r��mT�o�-�p��jzP�Ë�� pn5,�Ρ|.!</���[Nt%�6L��M����%��ώ֑DZ �yi�3� �H����H�\$� �c�zՂ>��;M�3���-V��(Ɔ�@�Br�g�@Bj�辗�����|�M�\"b�B��up]B��������|�j��P�NT��t{\"b�������+���XR�]b�.��9�oQ��#����Q�s��N���]\r��O2o��]��Mw¼(G�O)DJLn�%���\\8 �E@ூ/E���28�2j�(�A�4��D�E\$��\$�\$ȴ��lѬi������7GL�b�(H�R+�F,�Px��T��\0S#'�]H��-�R�- #�.2ІrԎNN�2Q,a�n�2��P]-r%q2��q\"��0=.��0�ʰΝ*R�l�7\"-n�-�̖���1�/\r��k1S*~�AsE2R�2����º�S\"mQ6\"�Ԩ`���x��&P�L#�%5 �;��6�\r7\rI!��7��7�a80Ip̰r+��\nN*�P;5S���%.��e;Ѓ�W*γ^ق��24S炣4��+mʾ�ۧbwD��� �B<(���|��^:��c@}Bl��Lȥ�8k:]��J �3�@fĄ�)��� ~�e.���Nxw�R�<��=� ��3n��C\r��O��M���aD�ޏ���=S�!I#0�H�Q-�7<s���\0]��>�,Lŕ\"����`���t�tQK܁2���g<�cKg��t̡�323�Ij\$�t��)%J�>҄)�aG�x4�O'�K�{�3P���\"A/.P:ar7'���d�� �6K;e������ :3�<5<R3�T�d��1J�γ�P3�V�6Ա4�P/�Pqzh�?�_Gu~�R�m�o:H�O��4� XG���4�'wYUKWt��I�����\$������BQN��JQ�5�J��\\�]%[]l�Q�W��\\��^lNx,�_�+�ڱՌ�M��k^M4�6���Y�97u�\\�bJ���I��\$I�Upx�3Nu�Z��I��X�Pu��6*lH8����vM`�AM���AJ��IUh!V{fϟg�_T�W��f�gϳZ���ci��d-�M���[��t�gS9dg�������g.�5��_��Ķ 6�4v�iq~�1��cYb� ���\$�) ��Big7��@ud�\"�APyӟq��r�SY)wr5Y;�Q+�#pD��?u\$��.�� fQ��qV�.��\n�\r)�u�\nqT�s\"� �us����b�:bb�\n�g�cu�8 AV�VwBQ��ֶ�B�E�\0�\n���p�I���kп 3�m���IB~7m8T�w�4�h�}�]s�2�i4�%1mj��#� �V�m�>#�la^ş:��Yը�Ĥ+�N�\"tXXjrW�5��o�>���fQ%J�o�x��wD�-dT�Jy��n+ڃ(H�t�|�������� �՗1)¸ۨ�4��R���)���q�\$ Y�4kX����|QZ�7=F�����4�dP� x��nI�eؓ�j�L��ؿ�8!D��J��|5C;5��r�W��X��\0A%��a���,m�-y �H���?XS�d]��on�[�\$9N�tbHJn9og���Z�8��hu��O�XA�W�b�������I�576�P_H\rb�\n�#3�Ԏb�/\"/�6��>r[_�c'����/e�wM�U?W�)t��#�";break;case"bn":$f="�S)\nt ]\0_� XD)L��@�4l5���BQp�� 9��\n��\0��,��h�SE�0�b�a%�. �H�\0��.b��2n��D�e*�D��M���,OJÐ��v����х\$:IK��g5U4�L� Nd!u>�&������a\\�@'Jx��S���4�P�D�����z�.S��E<�OS���kb�O�af�hb�\0�B���r��)����Q��W��E�{K��PP~�9\\��l*�_W ��7��ɼ� 4N�Q�� 8�'cI��g2��O9��d0�<�CA��: #ܺ�%3��5�!n�nJ�mk ����,q���@ᭋ�(n+L�9�x���k�I��2�L\0I��#Vܦ�#`�������B��4��:�� �,X���2����,(_)�� 7*�\n�p���p@2�C��9.�#�\0�#��2\r��7���8M���:�c��2@�L�� �S6�\\4�Gʂ\0�/n:&�.Ht��ļ/��0��2�TgPEt̥L�, L5H����L��G��j�%���R�t����-I�04=XK�\$Gf�Jz��R\$�a`(�����+b0�Ȉ�@/r��M�X�v����N����7cH�~Q(L�\$��wKR���WF5\"�,ԕ�_-�eR��������S�8u*P��\nِÕ�8���XTAԩJ�����P�2\r�d�O��>�s� #��߲n��Nc���K��O� �BPÐ��4C(��C@�:�t��� 9�}8M�8^2��}9д8^.A��7��`�7����7�x�`(gd�7Dz·+�/FQ�����1A8ՓI��iҮ\"�)E�/�)�T9tUԱM�/i�����78<��5�~�B��9\r�`ΐ��%=k�O���\n�@�ˢ����!kR{{J�T�L�84�sEq�\\�Ƕk��0�]u6`�Cb}��6Pʶ�Ûwnx�%C�����|d\r��d^�9U�s��@AaJ,�������0��⭶��0|�Tծr��1��)sn��,!�\$ D*�*&\n#�p����\n�@l>kА0��HQ ��Jj�Vh��٢u��Bh1��r�g qp�n���baI����0txQ1&����1 �|MC SH�LɎ+(T,���Y#y����%h�m��w�qE�% S�tHw�`���>�M��7�S�\${% :&Q��DŽ�� B��A<E���s�D��� wN��<��3`�ϔK8İS1Iny�q��<�\0��Ji��\0��:Lm�:)�C8aI�����z�������&䐧 )� ���Y�-�@��h�aEq+�h�B�N����S�s;@�Ԭ1���Y��\nf>N,9N��;�鱰5��C#?lG���w�>O �:=g\"��I�-�l�-�HW�tVxD8��!nPV��(�� �4��7 ���r�h�N ���S���Z�k�4�U�[Mm\r��6��܃�tn��6������_k��7\nChp=���J��x ��]�KTC[�PI�u�Z�m���C��duՅvRU���T�l�e8<�&���@�CdZ G�8&�yi�a ��?O'=\"���)����� s 6�;\riCL j\$�:�bQ\n�4)Uq�;ROΘ \n ([�]\r9eQ��\$�{�`Ar4��6B�Y�Jc&,�5�eUiָ����{�+�P�:#�����\r����<�]�@�~MJ�L�hy]J&���,G��D&x.��Y�[ #+(c�H)�{�E�h]\\ͽk;f�%]2b3���R�M{��d6J�szcI'y�����|����6P���} ɸ6�&���|���;^|^�ς�Y D�;�0/0O\naP�I�@Uh�Ó9\\�`�L�<� 9xE�Hh�sz�)E���VEV��(�F����\0��t�)^l^ؿ;�on�<1��� ؜ƴ����h4��ն֌�!�������j�+4D��Xu��2ee-�AԲ��p�_�n��ee�Ƹ+XGd��#/�\$PY%>��H2��iaH�����'m�9�/���P��2rŲ�S\n���x%E�!WZ���ۜ�SП_DeQ���@3VQ��?4U�LWG���c�34\n�ls�*':=U��Ty!��F��*т�f��DQL��95*/�QL��;Ax�2�4�R�u �:]�N�< �%�����q9V)��_!� r6|�猤�>�J�%�˖���g��7���]z�}�3JI\r!���CB`xS ���<�z�T�s }Q��&d��5�����7���=��;���\"eǴ����~_���}~�� t�EK� ��ܔS���5s�K���\nlt8�2��0�%�\rZ���mh�'�ץ��R��\0��GP�o�y�L�����ԮE�@�ĸ���c0J. ������d10)N��/rU�<�b�R0f�:��z�H�iz�Ɂ� �\n��`�\r����L`O���c�Q \0�Ǟ��L��v����b6{@^�:�z�{D \r�a���pTE\0Ä�(�t\nf�\n�.0�w�䕇�bv��B��� ��(� �Y/����й����i\n�L��L�.��#b��xP.�p�����sM��2;P���(�p�:��D�D�*8�Vu��B�\r�AH�Q{�N�@�����JqT���������i`�ܭ�M��\$(-Z�Q,���T|0�x-�&N� ��ˀ��L� �i�\nm*?r�ܣB�ljs! w!L���%B�\0R.!�>/�`y�rx�\";,�nc!���X��2l�-��5P�\$p`7O66�V/B/%�`�F��\$p@�jw�v���c2�q�󧚑\n���즮�-Ωji�R���R#sG�1�ߣn�P1 ��Ei+�1+�w,R�q��B��Am+Q ��-�jw��*ϕ+ �-r\r �g0 K�.v��/qK�k1R�)v� s%1*U*i0#ncj}PpR��`�H��1�*�j���#P�\"n�`�sR*����@��7M���l#34qn⯤Z���F���:,�1�Y)�8�)+����5hN���\0P�p�74K�R�Ҏ�V�\$�*���/T�r��?.��N�\\�,)R�n �\$+23�+qQ>O���37A;?��Γ)8�r��!;r�R���>��%0s�3S\r?r\0V2�/�5D� ��1'A�[/�-F)Ր�2�C�(�=E�-(�G�o5D.w��B��qXtm��=��,'�Gb�Atu�Iq[�o3����\$�<:���EKrO��K�CH�R,��>+�TT}�A�F���t[IWt����LE/����^�4�tN�V�f��pZrT�dC\n��I��K�-�>s\$�B�B�Lx��LH�3!!MT�/U�K( W\$�;:��Q�B!�Up}�\rI���!�(8�4��\$�hQ�\$��]�O-�O����W�Σw���儐ޓ�ʒ�b�� ']; �SS���u�� үPU!ORK6���]a57au�BU0Τ��'5� 0��EuL1R-�oZC�nxu�b6B�}d�md�iBu�2u /�Iceo_�=Q�ʕVa�5R�)��J4�C��L����&h[!��/�꥽G#���1\0�hR�)/)-IS�uQP�0�-A��lgA)6R;53f�EI2�\$�Qh�mL��P�,A�(�6�H{eeOi�F*&�j��G��n0���Swfv.�w\$�CWq\rUqno�s�] z(�cV��'�J+~ ��O�cP/mB�sR3,�2�u�aԯoWkaNṯ�u�QpPHVjLT�bw��W�ww�q�tWUxH�A\nCb��r5��ec�Sl�Yyv�Y{�-{t��7y��'��GB1^.oL�-u�w�/ %�\n��|�?VCv�@�e�R+p7�yYnX\r7��cAb�bW����_v�zw��]X}6�z�T��rVV��F(H�?l�c|X xY�5�z3g�3e��'�u��/n4ш(�}��7-���G�X^�#<���8�@��*�:�sNPU)�9}x!aQ���A�S��N�|U�VwoT�o�e5�*,�Qb�R!Js�Z��)Q�R{��)�_*�*B �4�N��8� ����`ƛ��\r`@�ƴ�h?i�\r��\r ̝��.��ۀ�� ����\n���Z��NI��s\r�����NF��k8�oc����\"Tݘ��|����iW�с�+/�C1��� �8�ƸUl̉dB� �M�\0�QV��G��eH�Q��7�A~E�~����*�h�g����N`�2\\'��Çw1 ���G�p��j\0Zn����㐪N����/b6�o��A�xB�-#��5�`�z(Ë&㵙x�8S3��P6�y^F1y*Ӈ/�T�x2M�ۃy��8�7_`� a�D`�^��<#ǖ@��@�\n�g��Q:���@C� a����p���\"\0�r�-�<(�R�3���/W��9�T)M�!��Z1�3؊\"�`G.�V:�QSM�N\nƒ��\r��8��D�X�����-�)<����ΙӃ�`)�`/d����_U��iN�5���W~�+�i�nT����6~TÈ��w8}Pgk����#VDV��h7w� \0�@� �t\n`�";break;case"bs":$f="D0�\r����e��L�S���? E�34S6MƨA��t7��p�tp@u9� ��x�N0���V\"d7����dp���؈�L�A�H�a)̅.�RL�� �p7���L�X\n FC1��l7AG���n7���(U�l�����b��eēѴ�>4����)�y��FY��\n,�΢A�f �-�����e3�Nw�|��H�\r�]�ŧ��43�X�ݣw��A!�D��6e�o7�Y>9���q�\$���iM�pV�tb�q\$�٤�\n%���LIT�k���)�乪��0�h���4 \n\n:�\n��:4P �;�c\"\\&��H�\ro� 4����x��@��,�\nl�E��j�+)��\n�� �C�r�5����ү/�~����;.�����j�&�f)|0�B8�7����,����ŭZ��'��ģ���8�9�#|� ���=\r�����Q��9��l:���br����܀�\n@�F��,\n�hԣ4cS=,## �M���B�B�1�S��&��!�@43Ul\"9�p�X��Ɍ��D4���9�Ax^;ځp�Q(��\\���{���(9 �xD���j�(�2�6����|��K���R(�FR�p�+;2��5��`�2�4�Q��ӌ�f�b-�W���{,��Th�0��(�9�1=n5�HK�&+�]�e�����JL\r#�x�\r�� ��\0Zѭ�J�#��0�:���-�� %��B0���l;�I���4�` ��0�����5�8ɲ\nY�H�+�\rC�j��j1���\$NF5��.5�hv��C�h�ӱ͍�Ӣ∙K��<��ް���N_a��n=3w��F��K��n#]��fP��Y�Pv�V���\"')�0*�c�ʝ')x¶9+�/��t������ P�|�ƣ@�,�H�\r�0́��p��������p��c�^�C3P A�3�P����m���S����h��0RK�pe2�X�@�Fs�X)R�v̢ x�������.\n��2������Gt���^IՐg\n�Q�ՆӲt;��b�Ő��h\"����Cƽ�.\n� P�\n��\"]������NJ!@���QI�W�r'\0�� �.X�'����֊�Z�^\"�%���� ���'D칗@IrF��H��z]W���A&��*�h�D.\\���]D,�������\rfm|�STס�U��;t` 0������f �U?��\0f ,���]\"�@s &03&wZi.�̗��N�� �x��L�\$�J�84BP�\n;�ReU�O� ��.iث8���4��ԢuXj͢ U�\0007�x�K���y=p�^ �?d�x��a�I|��=J�b�H`���zw��k������4Q�J'U�7I�fj̘q��c���\"�M���M�Y͕\\&��)X4J�q\n<)�I�񩜨D\$x�����]r�8�\r#\"l�BL����9���Q U�Ȏdži)�.}3u6޵դ�!@�)��\\i���*O�<�aũ�>[%\0n[=*\rd���4bB�m�l�63��p \n�@\"�A\0(4d\rȢP�LҲ�#a���p E ����{��+LW.�\0�i�9\r�Y�]��Kj]-�(\"8!|]�ppq'A�7� \n�` q�DP:�gY}��p��Zv10d�=Kf�}g{���<I����<�l2���\n�nv���b,%>ȼw�A���a6�-�'���r��YBlP}O��VQ53aB{ϒ��\nc(`0�쐂���M����/l���9�a˧��t(��o<����y�A�{�x ��r���.q<���(e�퉙L�`�娨��1wt�qݤ�U�(�i���c\r���B ߈%�o%�\$<P�N���O0��13_'���F����\n\nMl��nۡ\\�dy���=�Q��a�P*�J_h!��\$�K�B�e*�Xf�b ap@�Rd��3�{qM�lb��\$Ģ;��lk_L�KM�ĭ43~�\$*����8��X��ݽ<����i2��� ���w\nC�x)����oz4싄�2.E�Ik�M�#��m��B8���o�[�x_1��[xsN `�. ;��s�g��4n0� ħ� ��web�r>HJ�X �ZU���hI1��#�Cs���L\\��6�3 V�@%���q섉����r\r.-4�a\r�}��� Tu�\"m.��΀H>g�OK�������*cc=�`z�sk�����8�'�\\)��j�\n�F\\*9~��}���{�?Ts�ހ���s�0[�s\\����0&Z�)4�W��{�pL�A��F�]\nƻ��Vn)���� �XĄ�I��0�x��p�tJ:f��P ��.˚�C�L\"�/P�E�L(���b� �49�l��\r���H�p{L.���'�V%��͢MK�2�J�p6���x0@��Jn ����'Ot���ւ~�m�\$�>������pv����(�p�wO�0�\"M�� C*�p���P�8���r\rж#M3 �/�'�ƵP���Z9��tB�:��'��gt!�SC6mc�8���{ )��� � 0�xI\\�/�o� ��.g�� ���E��BF�q �:�и�KZM��D�����'��\r�n,�D�O#�\rL�b��p�c)\rϋ���_�lm&�8�o \"����oQ�MsH��\$�����&��pn��(cRc�SB.Ec���`�h���me��H2�g �O�%��.ѱ�,ᱸ�&�0�f\"-��Vm^�kg!�*0���(aK�I�>�D�%�����N\$ɍ �T/��\r1��#�!ǝ d8��g���|%ą � %�8�J��(��=\$�g�:�#�%H~MK �c ~ � �c1(�G+r7�I*\r8�&�I��~>%!�Y'�RPCi.�1�C��=҅���p�.2gg��� ���� ���Hd���1�T�3 h��1�<�\r�2�@*���`�4&^1F�7� �Q 0�SX�'�&��6B ��6��d�\r�V�r��/����1qB\\�0�\"PB ����\n���pM�����-ֹ\n7 M� d\$� 3�\n��<�B�\"��6���j�jz�\0ac\r�|���+#�.�>�\"�����c6cϦ�dj+��T�dD\r����\n�S���� -hN�gd��Xj-b��6Q\0z����CD�WE#?vog���_<fuBS�E��<q���qG�TD��>�\r1T�F���(1*�l��u�:3qT^D���pp<x�KQ�0\r��D�C�d2�΋`����4�|`��\"~��D���#��n1�Շ�-��2l @3�b�'YB��P��#. \$�1 �@����8���/�I�";break;case"ca":$f="E9�j���e3�NC�P�\\33A�D�i��s9�LF�(��d5M�C �@e6 Ɠ���r����d�`g�I�hp��L�9��Q*�K��5L� ��S,�W-��\r��<�e4�&\"�P�b2��a��r\n1e��y��g4��&�Q:�h4�\rC�� �M���Xa����+�����\\>R��LK&��v��� ���3��é�pt��0Y\$l�1\"P� ���d��\$�Ě`o9>U��^y�==��\n)�n�+ Oo���M|���*��u���Nr9]x� �{d���3j�P(��c��2&\"�:���:��\0��\r�rh�(��8����p�\r#{\$�j����#Ri�*�˜�h����B��8B�Dƒ�J4��h��n{��K� !/28,\$�� #��@�:.�j0��`@����ʨ��4����U�P�&�J��)��t9I0�9�˰!�S��2�!@Ԛ\$��H�4��Z ��&f�S�M<ը#���P�2&�:M\0�c| BD\n0�cB7 ��\"���X44��WAÐ� ����� ��D4���9�Ax^;ہr?V��r�3���_�H��J�|6����3.����x�B)@�\\�+�\"�I�j/E`N����:!L� �%l.�5�\$7┵2�1,[.����+���y&�� @1-�����yD\r��ڽG��)C���J l�M[�oB� nx�3 ,T\n;/c��P#�T��/9�C;=\\TT�����Rh8��b;\r�H�6\r�h�e;L� ]\r�3�&ejmT��R�e�2R�D�VOZ���L�� �V�22�\0�(��������;�SC�� ��8�3��{`��l�>�(}�Ҁw�/��h�[\n\rk^�F��*���P�<V̇r2�y��uO�YI9�����K=���0MJ���x�3C�;���qUO����W �n(h�0�tF1�a!��\$2� a ᄼ�c��j ��9��b��Y� )� ���C�@?�����n5Ĕ��e�b�;�o�7*rx����_��3�AW�&B�x*����<#%�,���Q@�\0��د��&\$�M���i��p\r!��@�� ��S��xcy�7�t �cXe��Yg������[Kp;��X^W\n�\\��r�c�����`��!gn�#>L��1�fMC !8�)R�rF� � vĜ��r��:�\$�A�2s��u\\/s찜�b#�\09D��˃f�h\\��ܠdXF���:Q\n�2�����L:p��˘#2a 2�Deu8�\n@P ��\$�AQ(�e*o����q0:�XMq��F��TjV��na�;�\$q8�җ�Тt��9�A�ĖCZ0���:�6�\nEQh h�TB�LBI&��2����ݢ�Q�T~i�N���B ������,��3d��O\naP�)��O��4lJ���)Ջ ��I3�f�'��1�Q��� Y ��]Q���Q�B������]��)Z�\0�'Ҧe��[J��z�r5�C�x���:M\$V %[��xNT(@�+��A\"���n OSO圳� _���X�ȁ�C(�I,'h85�\$��1:��띓���z�}n��GTyO\r<�X!<Vl��)�<R����U-�ov��e\$�Z�ּ׺�(wu�#޿θ&'bH�\rcuS�\\d��Q�\0\$��+�:,�`:L��%0�%�B�)��}�b�3g�b���ciQ��G �<BA�㴀n�C�G���*��\r\$�dܘ���K��Ȍ��P�_C�{f@a����X+v,z�W���M�%�y9�7d��@fй*�꾵D��s�����b����ss # Sˈ��&�qz���ܐI��4��whiB%knC ɫcd�(³@�B�=#�!�NmH�3@^k.|�2�=��6bMQ��2\\��0�־F��Y��}\$�5; � �N�P�T����N1�B�|�l�>�H*��!�s�Wf��YD���ZFi�&���xD��F���\r��.���-�m}�L��-?!�DE��H+\n\0&p�Ƀu�R\\�\"L�(Dлh�;˸�I�ur(�7��� ����q�Q��/ULB6&�~]TJw��@0c@M\n�:)������BC�b�0��Փ�)� �b5S}����7酑�8x)I4��� V�x��3GL��M� ����ߧ���ܛ���櫾2S^x�܉���� 7N�.�a�\\\"�TH`F6H-�\$��;`\n��Ok����ĎNC֗T��k>�c��f�[��>H8��e��:`@��+�XC )I>+�����␬d�9�g� Oa��%�`����wO �l��N�M��c \0o��K���(�/ v��\0 �{&w����5-����v��w-7��pMB/M���Ц/�m��pN6�H� 0Z\r�I�7C�\0�4�P\$xj�j-����<�p��(�T�9\00001 �\n0�&Cd���6B�.�D0& AZ4��ⲹE�9C��d2�K�`P�p(� �h�,��8��)��Z^�%0����h��Hp��dz�o�a��G(dI\rϠ�����! �xf2��!��SQ?\np.�F0�*>{ �B��� �J��7/Daqg�C1r����f��X�1d� v;M(Є�zʹ��&j�L��Г� ��0W�9y1u\0Po�|vG��.b��a���%t1ƏG�%F���T��V?1��Ü�D�2�V�Ѭ� ��;���vxr ��P�� �\n�!,��\"�!1��\"�S��\r�)�\$�|N��͒X�r>�2P���&ѭ ?Qj�'B?'�i~�d�#,��Ҁ����2��@�v�zQ��qD�2{'+\"�%Qo+��& �?ɼ �? �U*�nC�b\$\nf��)�Z.�ю��R� &���ئ\\�J\$��2�+p>f� ����1�\n��PN�t �Rd�\r�V��,W�Rj�\\�����& �ybjB�\n�H,�`��Z�#W�,���/�\\ِg2SxA3}���\n�y��L��&��F�q�->%�l 1��C�<��\"1m(PS��I�2f<\$�©��/rxp�^:6�!=�r;�1fx'���zVDHmӌ�l7&�L��9/ 6FB��� �B�&�EAL�T\n(�BcyB�\0>үA461T�| �5^ �D���&̶��+�>f��(���4)DL��bdp��q\$D�lG��O���|d0&�\r\"j�VDl*W\0�gK�E�<UB�C��=�*�e:�x2@�\$δ!3D����{�\\8��L���t2T+\"�.G��JE 1�^�@�U � \0t ��@�\n`";break;case"cs":$f="O8�'c!�~\n��fa�N2�\r�C 2i6�Q��h90�'Hi��b7����i��i6ȍ���A;͆Y��@v2�\r&�y�Hs�JGQ�8%9��e:L�:e2���Zt�@\n FC1��l7AP��4T�ت�;j\nb�dWeH��a1M��̬���N���e���^/J��-{�J�p�lP���D��le2b��c ��u:F���\r��bʻ�P��77��LDn�[?j1F��7�����I61T7r���{�F�E3i����Ǔ^0�b�b���p@c4{�2�&�\0���r\"��JZ�\r(挥b�䢦�k�:�CP�)�z�=\n �1�c(�*\n��99*�^����:4���2��Y ����a����8 Q�F&�X�?�|\$߸�\n!\r)���<i��R�B8�7��x�4Ƃ��5���/j�P�'#dά��p���0��c+�0���<����<�J\0���� R3\$?�\0\n��4;��ގq��B�.��8R��D�'���2\r���@H�����HLȭx���f��!\0�=Ap��~� �0z\r��8a�^���\\0ՕrT���x�9�ㄜ9��H��J�|;&��A(��K�1���^0��X��n=}#�C{��S���5��](7�CkH77��0�a��&޶l�:��[‰7#0���C*�%�0��N[����e� Y�蹼h��8 �*G�P�.'��NL�B `� 0��2ˣs+e��&�B&7\r���j=0�7\rq��3�c;�_��|\rc\$D�\r#��[��:��\r6 ��\"\"G� ��_��1���ytgQ/�=?\n\"bn˕� �l#(��1l���8�J��t�B=9†!�b�;�AH��������<}�R�״�&�\$-* #l\nň�Ǧ�w�.�sM���b ���~<�;`D�C�J3<3 ����%MM24�pV�N�@[\0h#DI��2� �S*��,��S9��ա�~��hn6���j�I�\0\r��@XH�����A9��v�ȑ�A�`a`렄�\0�3�`0��~��B�El-�D�Cg��3DD6�h/K��'��!�0��p ~����νC�m0M. �d��F���#H��v8\\�1��ML\$7�I\n����ʯ�!e ����hs@�[�P�i�e_K���F�NCQSAJl7��~�Ò���![�x�v�:���@V�(��b�tlESDMa\" HҜ�ʣ��V\\�Y�Ei�U��C��[� o�%¸�zp'��7.���C�;j�� ɰ|��y)�Ad\0�M��#JP��D��w�������\$'�T��V\\����Y��G�\0 b�9�q6v�����#�b6CP�j��\"J�*(N2�����@�IYy/s�������H!��2Uu? }3G�L�+2Rq���@\$\0AMi��\"��\0R�T�\rL����F@[� ���5�4J\\r@Tz����� V�tnW҃YJ�������� �\"\"\"A�-�R^g �]���,+ @��5�!i�Kl�ÚM6������I��=n4DUȒF(UD-��Q��E消,������xB�O\naQ��&�UBg`i�&�S:׋{a)�x3��N��ƥ����;��V((�,7:II9V\r��Ǣ�G�m�\r���`�S��0zg�BD�F�,�%a 4���w�m�-u_�D���cF��)E,CO.�������0pmA;vP�� q���t�W�\$일8��Sg\$Đ�@&��:6\n��3���ϒ\n46��g_����\n���'m �0��\$d�d���{yy`'��F�z3�*Qϴxx��z�A���\0t�,\ni��:�cj�G���������� �7?�OYRT\n�t�‚P����4����݄.\0)��sN�͗��9�c�J�jK��[��da�ɡ�D��[�x�.ݍ�D��RZ �<5\0���PZw�Kc3�����&������~1ڧ�]m�����;�`��#�\\\0\n�ؑ�}\rE؝��36w\"s�!2��9\$����^ ���֔h �*@��AW�䚢�Z�A�q�g'\"������/+��>7`��̲���ۖs ���t'�Y�a6�A�}dc ��|4�e���]_ۢ���G��ͺ&T\r���1;�˰�g��\r�: �3/�D�p���3�=4��&ed�;S���=��e���^�ջT}����q.�ϔ�����7@�?���=��m��(��NZ��}��ؤ^��V�w��@z�b�]��D�)�Ê���@;�RP�>\0P̀)���>�I�Ŋ�s�{�`���[���\r%���q?t2&�cz��;d�����py��N�2u�~Lc^ր���<���*�'�p'���ch���\0���'�}.�4�-�������4Ħ:0d��cx� *k��M���G�If�#z*\nF �H(K �wn��Č��B'`�d\0�k��H-�+)��θ��J�f�Wm�+/�gƀ `@ń�,;����,����N\n��9%n ��j� ��p\"}�0 \r0�� ���:#0%�J\r�ڔ��'�|�y02�d�M����f ��&V�q\n�N�O����0\"<���.�ʱPbn�N�O���1_#QH#�kQ2�.�k�����a�Q\r�'�^�L1O1��P� �%m�ُB7�����~^HԳ\"l&!Z(�B��dH�G��Y<r��^z����E���k#�Y��\0��\r̓\r�<��'˗ �NEK����\r������3���m��b� Ƃ�msQ�%CQP� G����@{Bx_�n�&,�.\0�Iy\r�i&P*0���}�qR�(I�w�vΐ7�)��{R�(�2�d�8����@F� d��0Za�C�Dk��kdn�>��r�)���’��A.��'�M�\r�m�\$s\n���a�|�C{0��9�+J�@d����h��DB�C�����2�O �4e�*'�D'�[4�3*m�u�6\$?2��S�u10�&�5J%s����9*�\\h�*�1�ۭ�U���:M�:�������&�_�H/ӼU�:�P�I�)F\n�l��c8��>>RY;��q<��>��?/2�a��2\$�Ggf=\n��\0�-��o������\"��D��f�HqA�5CcGBf��SAN�h�2���fg.\rf�9�\$24��o.��Q�Cl5b�4QsG�f�B��5Ht�uH��E`�a@�c�(gL� d��(��a�^�c�Fd�9�L�R,XR9vjz�&�\n���Z\n����zJ�!����|�t�m#C�VO��#K�O-#�Iі�&\"�/Id}�{�d 7B�? g��2 �#�2/�x�H�\$|Bd*L�\"C�@1 �3Ob:�B�,��\"@\$FT<@�aLd�R�\$�b�k\"~�\rr�sn��IP-���ӌҐ����(4Gի��O�3�je, �Y�N�U�YШ�\0��C�(PP5���'�PH&��&?Ñ�?\0a5\"Gm.(�xnk�(V��+&x\n�t�����Z3&/�(�\" �\0K�i�<�u�=\0�C�'VFy�dlg�-�N� �:�4���| ��Lrl`�\"��dsC5sdrE2\r�y1�I�@@";break;case"da":$f="E9 �Q��k5�NC�P�\\33AAD����eA�\"���o0�#cI�\\\n&�Mpci�� :IM���Js:0�#���s�B�S�\nNF��M�,��8�P�FY8�0��cA��n8����h(�r4��&� �I7�S �|l�I�FS%�o7l51�r������(�6�n7� ��13�/�)��@a:0��\n��]���t��e�����8��g:`� ���h���B\r�g�Л����)�0�3��h\n!��pQT�k7���WX�'\"h.��e9�<:�t�=�3��ȓ�.�@;)CbҜ)�Xˆ��bD��MB���*ZH�� 8�:'����;M��<� ���9��\r�#j������EBp�:Ѡ�欑���)��+<!#\n#���C(��0�(��b���B��,��EP ~��r&7�O�V:=j\0&8�\\b(!L�.74(��3# ڵ�C#���h+�� #�� ˋ>�=C،�H�4\r�B0�/��9 �`@S�Bz3��ˎ�t��d\$3�.��8^�����?�xD��jΌ-m��Ȧ2�x�!�N+0�cj2=@P������5���Ta��\"0;\r#(�\\�3R�Bp�ж�+�#�ܵ��2�2�!.�&��7��>*D��6����4�Z� i�*��(�0��cB;-��?jְ#\"�\0�)�(�dc����iӸ4�8�3I���/�ؑCx�?�¢��\r�ΑBC\$2@�a���`Z9�l�)�\"`Z5���v����]�(���e%7]��09�,�'��� ��3\\��q\0P��] �Կ�#k�9K\0P����7�l V�ű����w�M 4�>ҍ�0ͮ��{�:�\"�����9(��U3d����u9� #8µ��[SC(P9�)8�3�:Z�Јb��#����_��JVeb����k����8�42I[l����6��[�Dҙ\$DRLȕID@�A�b\\Vz�CJ1��r�@]�U�о��mP n@��Ч\"2b 9)*ɵ����1B�\$��F�U:�Ua�V��b�ժ�W�]+Ĝ��nXKʑ�`R���\$��H��L>+(Ϛ�N�ÆD�,�E�6���uÖ���U�ο�4g��)jTհ1߁|3�,(g���!�x�\rK�aÛ6# tͧ��[C�'. �EЃ�t�.o�0XN ї3`�(�� ]ħ'�\0����\n`�0\$��S!�V�BS\"�~ZuCK� �ɀ9��)m#�ܾ=������N&�����1%D���,g�1>gA�2��ޘ�pϥ�?XT��\n-�D<����)@��]n��ʐ@f:ľD�.\\�=�0����:��P �L*)�0g�\n�&m���@�Y\r�Y�H�L� �B������ R�JD����u�h �J=5�\"8G�`.d�#6�ԃP�*\\F\\�H�(X9)�x�*S/c�<2�p̠\nhn`�/��\0U\n �@�]�\0D�0\"����S��L�A|ɤ��0L������\$)�y%>G,���ؼ�-��]�`ԄN��7�ݽ�S�ޔ��(A�� C�t���[KUk�&��)�tv��e�1�\n��O�C��\n�IS����VT䵖��4ʄ���9r�����۬Qk�j��5\"Vnkv\n�֜������r�UmYV@u���{���8�Ԗ\$�� t.���W]�5F\0����M*rje�%�V�F�-�a��P�N�Q��e�WZ9�ġ���R� I�q��6���Z��{>���2�γ\0PRSQ)��;���{�s�1\"0�Aa P��|y�*��^CQ��+(��\\���\0��0cxb�K`(S�T�k\0w��\0��vφ0����K�:�h8�ht>��y�f�K��C�-�1F�{� �����j��C&��,g�A�����Z8�Ӛ��<K���:G� /�[����\\5 %��T�_¸e U��ڱz\\h6ĕ��0��_~h-Χ[�Sm���W,�BtYiy~�&��P�Eס��ܒ}��)@po%F�ppʓx�NO��o�����7↨�L�e��9���p]��l�\nXō,���e24/��\"`�C,c�R��'5�Ld�=�>R��EE�\n��d@x�M�[2��(�eđ��b�U��w:�^3n��b����m�h�Q��+��^��m�����7x��]���<}���w�@D�I�pzk�v4�wϤoOj4rT.~WYy�BH�\r:C�lW[Y�(\\Y[�\\s�g��}C�z�_�}�\r��a֖_IŦx��X�g��Z ����~�U ��y�cJ\\�����w�/��r�8����CxȊ�=>&w� ݯ�f�·��P���^ HެL�\rna������E�o��M����t^FN� ��iv�n��\"N ��G�G�~�Dn��\rTM̦40a��Cn~l��SF�L��I\"��|=��eT�%\0�p\$�P��x\\�u �A�Zălf)��?+�/��C�g\n� 0�:��Qb'��F�����)�R�f��6\rp�\no��p�)P� ��\$�(���t-�b0��D�G\n�k�4�� 0�\n�`�Q�0�\"��z�Q:�1?�# Q)\"��TE@���:C �LQK ku�:�@ �1 �ƴc40Ф8I� ��)''��@�RB��P̸��4�me(D�N f�B�M�� ���^���V�-mOS�X�@�C��`�@��ѡJ����(Œ�u f�B�:p�启 ��p|��;��_�N�M8�&�s�ֲ,�b�*J®��\n�я�Z�1\0.->/bf�\$T7��D&C~��h��N�4�,5�/�Dk�������(�ixl�C�9��'�0�FJ�n��8B\"� .�p�m��N*2��`+j�+?�\$���+�Bm���R�+%�+pC-R�+I�-��&#\"�27+ ����g�ަ�2l*� ����f�C�js\$k\\�'F�\"B��t��;� /��)�0-�?)`��� ��'�U��0��-1���j�k6��L��:�J\"��#��\n BԞ��F\".\r@";break;case"de":$f="S4����@s4��S��% ��pQ �\n6L�Sp��o�� 'C)�@f2�\r�s)�0a����i��i6�M�dd�b�\$RCI���[0��cI�� ��S:�y7�a��t\$�t��C��f4����(�e���*,t\n%�M�b���e6[�@���r��d��Qfa�&7���n9�ԇCіg/���* )aRA`��m+G;�=DY��:�֎Q���K\n�c\n|j�']�C�������\\�<,�:�\r٨U;Iz�d���g#��7%�_,�a�a#�\\��\n�p�7\r�:�Cx�\$k���6#zZ@�x�:����x�;�C\"f!1J *��n���.2:����8�QZ����,�\$ ��0��0�s�ΎH�̀�K�Z��C\nT��m{����S��C�' ��9\r`P�2��lº ����-��AI��8 ф� ���\$�f&G�F� C �/0����\"�눡D����uB`�3� U.9������`�2\r�\n�p� CT�v1�ij7 ��c�0���\r{�aC�E225���иc0z+��9�Ax^;�r5X�p\\3���_f�2H^*!��)�p�'1�@�}1m���R��:C�z:��S:��b��;� ��K����&.���(�Y��F=B������C�H���d����I�ū��5>,8 ��xZ\$�N�M��;G1��B���l�A��(�@� z4�X�3��(Α� ۔:� f6� J*�\$�@R��b����́�ϣ�ً%����@:O8�E;b���y�2\r�����8�N1t�׎��S����OL��c�۱��D�u�Եsh�6�1�����z�=x�8��'a�QT�\"N�O�kXل;j���cx�3\r��f �SP؍���t;+^@�{�c`�TU ���v؅��H��0pA-�ߑ�@�� P a4��� �Q< \$�6����� �1�w����?��P`o��=���\\\r`0@4A � �C\naH#\0��1�XE�XL�H1� �|R2�T�<>�-���_�0��E(:p��3\n��'5�uXX*�r�Z�iE �i-@ʵ��s@��'tr���3�)�p� #a����P�kq�H��Hoѡ\"Nd�� Z��iOG�F #��u\r Uk����V��\\j�s%�F�J~#�\0007.���Áoio7H|A�JN@�&��F�jVBg9��S�� '-����S���\$�D�\0�hSWͥ9�����9}�l����B���#���A5#:j a�3En��f����?c��\\�dɨ3���:PFQY\0����!����N� [���ث3�7á�3�sN�?HN�\$#�����A(��r�����������G��)w�̦�@�S�B�3v!�ȊK\0A��2�u�Ca0a��o\"�>(���N�F�VQ����t���D��CAH!f +��[M�t^�ް�Vֈ�l����F.S��8���i\rJB��0�˜T�Y_�9�Q�yJ��.��2,������Ԕ������\nZGlj�F&9�U�QXei0f�5���ڡ����9+f����P(.J�Ѥ<\$D]��l'Pr�4��!��L�3J �����P`�E�'\0� A\n� �.g/^�ԗ��IBj\\�����\\\"m ��}��@M��2a8�CXTz���\0��6��q� ��v\0�P��1�'c�rK�S�D�AH�����N��*dgUC�<�(+pҞ9#`y��6���Z�)���s�H�rhk\0002�b7Vb��A��pI�Ld�eۆR-8\n\rd�5����,� �}^}ZvX��̉���.�\0ΐ9��#ьl����l�� A�0:�0l?�(->�0�#�k� N�F0���F�\\B��%�Wh�ݦd\\�4TY�EAG�`b+��&MRF��Tx�3�i���FFgU�v��Aa l��ê�Y\\!��� Io���Y�;��5�M�����+'f�\r���f��&*���*á��\nu��b���<c�0 �ˌ�0�\\��rc;��K�F���P�5��Z�N]qg'�9\\^\r�0A[�\n���s�ް�`�[l�{�ty���)�7���|3������&���`�9�H_��\ngI�����K�� F��2K�T^a&ʽ���RM^��\r\rƋ�����F�ͷ�*�Py���6&8u�Fw�����x�Hv�G��l��~E?�2ta���6���(�f9� �=��F�o�g/�+sZ}���S�&xҊG?��N�͓�`+,�Ӌ�P �I�6d�A �NBĄr�K~5�L0�\nm,p�*Z��1F�e\"�wMvעX�N��B6\0Z\n�z9o\0P �R,@��Qo�#�>>,��pX��^�E ��0Z����CO�&<�c>zo|��poh5p�v���-�0,�\np����c�h�2�c�\nM⣯�����(�x�����&@ �� � N� �fO� ���)P�l��b0��h'pZ�C��,���� �o����U��x�\n&F0 ZJ�@أ\0d:����:#�`�Ā\$%:�Z��5�&��P9� ɱ@�1F`\"�\rnO�n+/�cb{E���}�X` �тw�X�\r���rq����uL6(-��-�b&'Я�b �)p^�&%-\n/��)\r�s��� \n?ʫ\n���7b��vˌ� Mꪰ41����%4>6@��\$��(j�f�n拫�c\r���&rE��\$�Y �z���M|d\0����k�b�����կQ'�A\0\"6N`�2 �\rf��0*e����8Q��0�+�> ��o���1*�*Q�P�+G+Rs)��*R��� O��R������_'2���\"��rH�Ϫ�Eg,2/��02�+���S\0:��1r�ˤ�[Rb1���m�R��R�DddI�,S8�S=%Һ\"�!`���/s(�C�\n��A�1�9&�~W��)��C\"��`A6��B :�sx&`�~F��L��<Sj��。S@�4�w.rF��a\0�s���J�\n;t���\"H�j�2����\n���ZJ\r�WCh \"g�v������S|���ϐ#�:�#`���Ϻ\$�\"�+�2m��CR�Pm� �*D1�(Fk��@��F7#a<t<`+TBs�%�f��W �H#'�T+�R\nD-��FvL�&:��2���O~#�.t<'\$�R����\\G�EJGa�:\rsvGT�0T������\0��t�L3vG%c�B��)��^� ���U�ί�5�.(� )p8O�\0�����~+����?\0� WM�.�BtQ�/&�\"��n �:M�� ��4��a �I�����S=�~Qk�v��b4�� ʴF|\r/-�J��' }OD%��#�I2 /b";break;case"el":$f="�J����=�Z� �&r͜�g�Y�{=; E�30��\ng%! ��F��3�,�̙i��`��d�L��I�s��9e'�A��='���\nH|�x�V�e�H56�@TБ:�hΧ�g;B�=\\EPTD\r�d�.g2�MF2A�V2i�q+��Nd*S:�d�[h�ڲ�G%����..YJ� #!��j6�2�>h\n�QQ34d�%Y_���\\Rk�_��U�[\n��OW�x�:� X� +�\\�g��+�[J��y��\"���Eb�w1uXK;r���h���s3�D6%������`�Y�J�F((zlܦ&s�’/�����2��/%�A�[�7���[��JX� �đ�Kں��m늕!iBdABpT 20�:�%�#���q\\�5)�”�*@I����\$Ф���6�>�r��ϼ�gfy�/.J��?�*��X�7��p@2�C��9)B �: #�9��\0�7���A5����8�\n8Oc��9��)A\"�\\=.��Q��Z䧾P侪�ڝ*���\0���\\N��J�(�*k[°�b��(l���1Q#\nM)ƥ��l��h�ʪ�Ft�.KM@�\$��@Jyn��Ѽ�/J��`���3N�����B���z�,/���H�<���Nsx�~_�����2�Ø�7�)6�T��`gvN+o��M��Ϫ�� �;񋦫�g6vv6�N��X���\$\$���n���^�������g��qO�i6��*�0�2\r�H�8O�BP�E #�@��pϰOӼ�=ϣ��:\rx�B�!9�ԀX���9 �0z\r��8a�^��h\\0ꚴ�Nc8_����9 �xD��l�>��4�6��x��|߲K�v��\"\\���z�\$����g�}�Od>/��S��R�����y��\n��\\9/�v<N��2z�9���,�B��9\rڰΏ�� @18X������of�E#>l]���j�ˑ�ZFD����[b�Coi޻�N�)�D�=���\0v)q#�@���UH�p��z��ȸ�̐�!4\n-��Ђ�H�¥�Rˡ�.L�!A6�)����i��ը�ZB4�AW���!9E�\"Gx3���\"�t���uqY�fMuƀ@ \$*���)��HbD>�j/�\$*�|0���=���Fs7\$*�B=t�^q(�5���.H����h�p�I'��c�J9%����Ÿh��d&�X�&`I�������-œ8gd�ܖX8���B�}��{�!����:\"@\$�� J,����Ȳ hdᢽ��ϙ�sA�N��\$�1a%*��3�ё2�Y�R\n�б�bӉ�4h& ���A�1Y�a�- H�:�u�I�kp �S�����Yg�.�*5�v�\r�^y3�6� �\$�j4��SKC����AE]� �¥�bD��7�j���ІF�Ld��ĺ��{�&�q��jvd�C� �™���2�H�w��\\R��h )�A:`��el�M��p���a���7�@�� �0@�'�s�u�K�\n���s*4}��x���\\K�Z��)Zj�D\$\"�dRI�#1YQ>*fb{�[L��X��3�qN1�9\n��ܫ�\r�]�0��� )��\\�y��@�\0�Ɍ�������\"S�^�%A��%V�xҢ�I��l��c7���,G�]c�&`�{f�?Ҹ\\�۬d�b`t�I+�hO���1\0@ۃ`l~i�8'\n�C+� !���p�[d ��\r��ڶm�7���\0 n�� C`s0���҂M;��2g�Z��S�\n,UHV��D&❉�د�jE>��əT(��A�.�����WI+-'p���nR�j��6lj۰r\r!�4��ψ[��PK�A���Sf!v,��gHQ1\"D�Ɯ��sʼn��H�B���9Q.,U\"ֹ�E(�E�z�Jh\$Di\n+3�F鄤�I�.�`�/�vh�B�ש��\n�J�2�'�� i�]�D�k\n���A�u���)7�G�eZ;2Pc� �zP��L:�\0P �L*L!8I�C�Iz��*4Ǭ���ش>��W��;u�և��V䁤�=a�)'X1�>%7]�&Hd:<�3eKx ��3T�A0T����(U7��y!��G���� �r����� Jл��nb�E`\n�8eԱ �\$L2�\$�1m Ԛ3��� K���\${β��L�!��v��g2�yz&����6=U�>�f2�H�r��C��qR;�]�R�,�M-��+n,�h��%��y�6~�^��a��z-Q�g�4�P���c�X���U]H�NaD����ݐ>\\��V���h;2��kO���Ԃ��~�h���t�Ì��|o��������v��sp�**TM+�{@���R ��?�Is���\\�0G������CVV�>�ǺDH�Jl��*\r��\$�b���BF-/�FB�\"�b��j�.���4.��K��x��z�)J�08�%��'v{jT@G��k���%'�X���H^z��yi��=f�H�E��J��b�hy)>� Jh����4�� �\0�n�Β\"��b�cPB����\0�2���YP��P6i.�i�j�i֜��d�\"�jf���\"�}@�(V �u .��ꈉDgI���do����e�Z\0 �\n��`�\0���\r%l\0ѥ\n��FR'�K.Z=�XH�K�І���@#'��b����h;B��Er8����*���6CL�!4�)�;B�'��x��GB(��5�U0p|I�\$q��1����8-�?)��QآhR��vJ��W̖X#�H�xkΛА��r Ep*���� ��<�HΎ�q��4�.�|B�#�2�B�?��R \$�N�l�� Z%&[�r��D�1�%p�B����WI���V��r�������[�\\ M��r�E��R�N=l F,�\r�~wFH�c!�(j*��,�B���� Rp��,Fҽ)oc�T-�5�'l�2H�2Ř҈���|��p'P�6Ik�D�@/\0|���-X�����B͂���b�8R�+��!H����J�8x��G��3��! )6�tE��Pq#d-7�k7�Msn��R/#�(����@� �^��U�xC�:�\n=/b+p�z�DB�;ӫ<�<E\\1�qdVA��7�\n��t� {<(�[�ܞ���ʵ���*`U�F\0�N@�`~��3�� 뼞��\"�d���T�B�C4%���J��<�Ƒ�̺�� jF����l�]�P�fL�L�,�0-@SC��[\"L�r���(���I�HE�(O\n�rG7Ԁ� \\�go>)6:3�H���o���>�]9(�)HessH��>��D �.s����GԳMN�L�ڽ�EpoL���s/0���?Ē.q�gI�k�K G S� ���QPG�P�}\"�A5Q��Q���'�N����� ,�ʋ��J�wH��P�-��wu\\���+� ��O��WUWUY3.�V�gt����>��D��B�(J�+0��NxۥK �����k��FH�I����4�Tb!�=u�D�'!�^��% �����G�G�5��\\U�=� ^�нSX�5v�\$M\0q>�.�X5{\r�cs�;4m\\���������Z�������xNX4WXt�Zug�5g84�L3eP{\"U�N�E��)5h);f�V�tD.4�&kf��Vէ��E3�*��X��j��j�� r�գgP�Kн �Mk��C՟l�^,��m�Եbb+���/orL���%d���e��U��-�W/L����?6SR�S4�;��LSgPw&��]kU�N�-q,�4�T�kuoET'mU|���EѭuP��p�J��<B�v�h^.hP+S����h����v�g5�u��d�ΫN,tS]�6�m,�Pl\"B��4�r��6m�{\\�V�t��nW?fNFvj?|w�5�;Ovcs�OI\rv��|QG{w�]��x�Mz��c��S�&w��7+V���ⷁ6���~ik7f��yO<�y�݃T��\$��W����UDCO\rO0�B����Ca�Gx�%K�~�e~�Q*\"e�CwwMh�\ro8|���\$\\�2|vڷS�e��cx�����M͑_���QZs��\\�8�lW�l�N��oe�_��'tU\nć6�6K�h�����v��[���qԤr<���8��+���&�&Eybņ�(��D�T�eH�x����5��u?����&�9��% ��TY~S�6IJ�e\$>�DT�����`�\r�� `� �N��C6�U9�!���Xc�<�2���%{^K��5)�:fC�x.F��\n���p)@I�2n�!s�8�3���T��:�:dv�r&��G\\D0�x�4�Ke��=��~�Z��\0)<���GF.��ה��L�qOjs[�Ԡ�T\r]5�)��L.\"��ٙXK��걙L�GC\nʷWP��n\$тK��Fv\"���\$���rh5]��&D32�\\��]+2�B�Z��:�>{��@�w4Fh58�'o��� �8Is��)ZZ��ř�i~�\nGA�E��Z�G��ኖs7���:ۍ�hU�~'��y�}��Ӯ��?��C�s�ke�I����\rwby��!u�c���:(�\0�wq=�h�裴�gU�F�RwV��,���c�G�4HX��ֹ=iY49) (夤Z+X�ß )E�n��d���'�B2HB�o�K1!�J}3��H4��W��+헮Ye��}��}���-jA��?��v!6TC�4���U�4(��5%�";break;case"es":$f="�_�NgF�@s2�Χ#x�% ��pQ8� 2��y��b6D�lp�t0�����h4����QY(6�Xk��\nx�E̒)t�e� Nd)�\n�r��b�蹖�2�\0���d3\rF�q��n4��U@Q��i3�L&ȭV�t2�����4&�̆�1��)L�(N\"-��DˌM�Q��v�U#v�Bg����S���x��#W� Ўu��@���R <� f�q�Ӹ�pr�q�߼�n�3t\"O��B�7��(������%�vI��� ���U7�{є� 9M�� ���9�J�: �bM ��;��\"h(-�\0�ϭ�`@:���0�\n@6/̂��.#R�)�ʊ�8�4� ��0�p�*\r(�4���C��\$�\\.9�**a�Ck쎁B0ʗÎз P��H“�� �P�:F[*������\nPA�3:E5B3R���#0&F @�0#�#?��<�O�ئ�4�sv�Ȯx��L�w*�O�;\0005�`�7�#s��%N�9RE�� ��j��C�|7�� ���ƌ��R[��\nD;�#��:���9�pl,C�C3��:����x�m�ѥT7>�r�3���_c�#���JP|6���3-�ˌ��x�&��`�<��QDcK�>#������ʬ °�SJ��,�7�'�*�-2��+�+B�=�� @1+�����2Q�`�6���9�K�*S# #p��IN*.0؏R\n�8`P�2�c��˞C�2�@�:��-�=�L�i&Q�k 4�e�<�9�*��T�ݨc�o�;�(<UN�6�X#�]/�����f�&�ɼ܃��������(��U᮷qZe�bx�UJ�T� �cx��8�/X��7��`2�hn���}-A�3ؠ�4�LK=�)*ܔ7b(���ˎ��}�В`�!&��w*���.j��4�%)�3 �%�>�\"T�#�m<*\r���78;����fj�}N�慓� !�0����Yr�X��0RM�k2A )� �u�<�8\0��CcYWe�қ��GU�R�z �՚3;�e��z\\�K5���*J~�x���j�� U |�!eDG�*Y�ug����p5�|��h�߫n8Hц�@…�\n&L-���8� 4�72d` �x%K�.� I�A��-�樴V��Z�em�u��UY�\\k�7.W^S��]��<��HZHt���4�������\r4}���?A�1\"2� ��4�7�@F��b#1,�0��\0l%��hj��pa � ��\0�d/S�A`��b܃\nJ8R(���f y�8)�PC�*x[C�OTLF��H\n7�\\F�AJ% �c��h\$e���3��~4d�⚆\\���0 �� ��Q4Q����.��\0���9�r�pϺO%4<+s�k8�K2~I'�\"0�) K�����%B�9!�*Sy� \$L<��:��� ��,*Dc�BD06�)0� R�2T���*̐ ]\n<)�HcRI�l��ſ�� R�d��ä\"pN��k%����\"i�1�17R�=�����\$/)�}EC���6���`�@�1#yD�[V��XÑ�?,☑����{8h�пclC\n�T ����R���!���u\r���;ۖ�ѱ�w�RAey o������xp�3�Ę�n�\r�%��;0�Cj9���v�)�1�ܷ�I�Gn�Sȷ�,g��>������{zF�=����͛2�\$����r{ D���c�K�JR�]�B*pݖ����;�@�U�!OL�DE��Z �1�=�s'�Tz� ��. �;\$,9-��@�^�C���G�i�>ӹ���fvø\n_�a�P0�kj�����Ţ��u.�K��sؓ�1\r��Ǔ>H�:6L�@��|�[1*��%R(�j�a\"���ӽ\rrM^�d<0�O�)�I��4��~�^+%T������� \0�ۖ�R�k\n�@�.��S�U�`e\rI=b04�ՉAe����G�e�{3e۽�b����v� {��!m��- �鳂��R&�#�~F� d���\\�CjQ�M�rLT�Az8nbn��qK͡C������)����P�Q,��\"q���})�1�cd�;ȷs��L��\r͍H{���g����9�㬢Kq�*�7%T U( R���C~{R׺���\"��H��� %�PDAV;��f�!<����q�*y�-��\$��U��˒��)��D�&� }��:�E�������cZ4�z�H���W��<畇a��.3���rG�H� ZC�q'mgߒn��+7�^���ơ=���Oz#H����B�(���`ջ@gL��^�/�)�f1+b�%q����X��C#*�����u/�ob�/�{)\\�f8���{�J�JwL�\0� �*�\r4䠘��:���.\\߮ނ�l.����P�x����o8� ���jb���E��\0Pp��tCoT�0}-BC�a\0@��̾�BC���b�8&�8�D(iz/C��ifF�/o�Bа��\$4��Z�0TbD�����6%����HPL\"�>�R�̫ c O0�' X���FP���vЯHPm,-�2ѣvӈT0����0�od�pZ��M�9 i͔��؍�/(�QPiQ2��Xت5 .K�LZqqK.�- �I��g�1\"X�iNK�~sF>�zƃ��1]�\$�M|�U05��]���\\�F¹�lu�f���tv��l�r��4q���iO�#�zk/yhP�%�p��>�Rd.q� ���Q�;\r� fqb NpOf|�Q>�O�!Q�����*zrFg�FՍMO��RRԥ!�5%�a%RcC%�Z�1%'rk&�Gpg�x=�����jU)-�&P.لK\$h �\r\0\nE�.J*�ј�ў7fi,jR� R��j�r���1h2D�%�jq�,F\\�iRin\"f�BVw\r�����#0d�\r�V� �����f.d#%B0���h�d��Ԛ�\n���Z�8c-Bh��K�H���5O\"�.�l��*��#�4���Ĩ\\C�o��+,<�)�Oq�t��8��V�/-bw��\"6Ԯ �&�+X�e6��གྷ��dh<-z �:J��j�8N�,�� cf�i� J�2.T��D�CJIb���<3G\r� �����)o�@ r�(���\$���U@�۴D#�b��J�0u�\rb��fO�vpk�p�\\utHp�\$O�0�� D�d>#������N��v�\0�B(��d6`,�\$�?�vKRT7o������R'}\0��јQ�1#+������%��/c���@� \0t ��@�\n`";break;case"et":$f="K0���a�� 5�M�C)�~\n��fa�F0�M��\ry9� &!��\n2�IIن��cf�p(�a5��3#t����ΧS��%9�����p���N�S\$�X\n FC1��l7AGH��\n7��&xT��\n*LP�|� ���j��\n)�NfS����9��f\\U}:���Rɼ� 4Nғq�Uj;F��| ��:�/�II�����R��7���a�ýa�����t��p���Aߚ�'#<�{�Л��]���a�� ��U7�sp��r9Zf�C�)2��ӤWR��O����c�ҽ� ����jx����2�n�v)\nZ�ގ�~2�,X��#j*D (�2<�p��,��<1E`P�:��Ԡ���88#(��!jD0�`P���#�+%�� ��JAH#��x���R�\"0K� KK�7L�J���SC�<5�rt7�ɨ�F�\n/��\nL7��<�)��ܜ�E��ܓ,�K�S��@\$h��7�����BS��:�<�����.�N/��B�Ä\0��#��'N�@ߵk�����V�T , �`@7�@�2���D4���9�Ax^;ہrH�=�r�3��_�6@^)�ڴ�(P̴����<�x�&��F�1���8*�~¨�Z��,�j�߲I �����\"����7��a���@T�9��H�5 �P�&���,����l:,���.�<8;���70�m*�K��6?��\nH@P�h #��2C`떻��/�S���j�� �t2CF&�%���[2�룠(\r#H�� �x�\r#X֣.\r������M����0������+yk,ԋecn�'�lؾc���2�;~6�\"�E���=��j%+���\0��\r�Q�J�j4z\$��J�Ϥ�����.OL :���w^ ���Z��ʲ�jR7��26��T�8��c|�P�+^�v��\\f�^�vYI�\0�FOi\nC\n��`�\n�)6��/R�S\nAe 6�{IZ*0Ƒ�/G���R�8/�?e�GE�n'��\"v�NA�N%ς\0����rYA�<��Va�Y�Ev0D��lg�i|��h��x g�\$tU!*\n=���B†n�� �ԛ�Sޱ�JNa��`\\��lSZKQk-����މ �q�PܹS�N�>*��+G�t'\$�k�y4����J�z�'�\"/��£�8p �h�92s���*����Vy�lre�T(���8a Ʊ8�(b`3������\\i�� )|5�C@i&A̚�R�S��x#(P2�\0�Q!%i�28i؜� �@\$ ԄЬv0�P�A���= ql3�c<\r�4�Ż�#⻘A�;�稇�YiY��=�<M�\n�'�����ÒC#�����a9�jd.&���I&XRFL �]g�`C1�\r�E�\\�&�l0u.yS�jxS\n������#xp\$ɨ�Jo���nT�RdW\\I�:Y�ҟ��i�bA��TG.{MLl���PЦ� �k��`�?� �z-�SU\n�Eg�r�B�(��jr p(�E<3���R�d�ɏ��\0U\n �@��-�D�0\"���̺�\$��&ʹ�Z�o�%őe�Lʣ&L�\0RF��c2#���[�y��2\$W���@ʽCa~.-K˧d���5Rς'V� ȫa;ע�\$�dG)3�d����{��ϋn���\"�N8u�ϑ��ޢ�0nI�e �U��˾P��FR r���b�,Z�<h6�|�2�\\q�50!�Ї��y�h�������1��������\$������1�p�t����Qc�7�(��f�|&jR��/�'b�Ғ�x�� �EN,����Z� rKY�hI�ҠT\nA\$#�p��ӝ������Ko�^��(S;Xb,\ndy?��\nB�E �P)����^�\r����ШBH9W�F�BVMޏ9ۺ��1�W&���� A�x ����_-�Z��/�F�,��K�V�[q�\\^^�^�Ja��\"m��6z���-���\nhi��g����{�n�?��R�>����>�s�|C�)�l��2BH�+k�h���3�� (�9T�`ULg�~�v��:|lw7��%��2��%��%\$� Fr�>�I��5���é�7ᔒ�Y�iߛ|�qC��O����d�n8yO�[�e��1o�t0.@!�����ֻ�d�̃�����1Tbr�fN��lť�q˔Y�J�Pj��n�r_��@:����z�g��W����\n5�EK����!���?3���I�����n7�� ��i:4�^4F|{�h(��(�%��t�����+d� ��™�x�#��x {�?k�x�\"�'o�x�Iܰ�xG=�~��wrS��]��߸�O�d�������\0���!�\n�N`�J�MP�� B���������ۭ܂kFϫN#�����䠴�j�,���q\0#�/�/pO �o� ��5�ZH�tZ�6=�P�Ih.�B��H^��i��e���������#��G'�Ė̬8�4�l�E+�WCBEm���2P�'P�-E��R���΀��jꋴe�g�_�\$J�,c\0S�%��Rb�.c0\\��5��Q��'�5\r�b*_F20\rXR���]㌫p[H^�QJ�ZM/u�\0n�\"�Ly�`mr� ��\r`�@��Ƽ�pt�d<\0��я.�i�7�{�@ K�0���\r/��������1�a�r�.�\n������(�)��H�l�HP��!�\"{ �( =1�O  �Q�I����F&�T\"H7�U��!�qQ*���!�  J\\/�#�FO��H���\n1���!���=%ƈ��g��\"2NA\r�g��\\�/�� �'rm%q-�q2z`F����-(�P�M(��0R���q��Z�}\$ϭc�׋�'�U/Q��\"��������B̝ P n@��2\r'�u�����/���CЈ�* / \\+�*P� �\\ЦiqU0� o\rƊ�����&�31Te�V��e*6�o9 @�L �`�&f@H�)k%����\$\n���Z։�J;Bj��*B8g-���\n�&���nv�����&�B\r �)�\r�NP/�`�Qq5n��\rv7��0M:\r'ꖥ�Y�3�6\$�>d��nM�#� �Te�R�>ЃLkK���'(�1��c�F �e�|��+j��,p+���C���ޖDH��*�/A�e\"T8M�3#6gC�=�Bg�N˄N�B+�\"5�Xm���(�'�9I.�\$(��B� >%/������9I�_�<ۂ��`�ݬ t�m��F�~,��&O�m��O� �6���RR�\"�K�y�x5�[HO%Nt6h�Dd�2/�\n0m�\r�n�%*7�lD��\$^ +hx�� \0�@� �t\n`�";break;case"fa":$f="�B��™��6P텛aT�F6��(J.��0Se�Sě aQ\n��\$6�Ma+X�!(A������t�^.�2�[\"S��-�\\�J��� )Cfh��!(i�2o D6��\n�sRXĨ\0Sm`ۘ��k6�Ѷ�m��kv�ᶹ6� �C!Z�Q�dJɊ�X��+<NCiW�Q�Mb\"����*� 5o#�d�v\\��%�ZA���#��g+���>m�c���[��P�vr��s��\r�ZU��s��/��H�r���%�)�NƓq�GXU�+)6\r��*��<�7\rcp�;��\0�9Cx���0�C�2� �2�a:#c��8AP�� c�2+d\"�����%e�_!�y �!m��*�Tڤ%Br� ��9�j�����S&�%hiT�-%���,:ɤ%�@�5�Qb�<̳^�& �\\� z���\" �7�2��J�&Y�� �9�d(��T 7P43CP�(�: �p�4���R��HR@���\nҤl�ƨ�,����b���#�鼩5D�ƌ�Z�V3�C�U\n�^�2zK3 ���2\r�d\n���7��@0�c1I���+B�(;�#��7����Dc�K��\0ys���3��:����x���\r�eApP��!}�u�C ^(a��B�`�\r�u(7�x�9Q����6W]��3d�\$�jB��������3M�<�\$�k�ᐌ D��U3�W��P�0�Cs�3��(��geP�j�%@�8o�����½\"%l��>��z�I�d��2Hl��b�����} \$����[ ~��; )2DB:��3S��\n��S0��*�B0�\"����T��z�+��+��6�s�Y��F���nп5@)�\"c�\$%�,�u.��<;1��Z�εs���X�e�Fd��짨��)A�����FVꇞ�9�\"���O].8�7���)�����2�|�ա]|���2�����&\r鑸\0��l6Ȓ�\"�M��I���Ò`_��X ���n�Lx�#ĥ��H�aBjf8AaC�4D��\"�BoR�7�\$�(HWK<(8p�AB�>m��s�b��i\r���)�^3ȂW`�C\naH#\0��Z��\$�9H���p.XfN�`CE�2v0|��3���D\$����J���jAP4\0�X�r�lp@��Hn@�1�U&Z� �y�R���Qѧ��>VѺVJH�ݣ�Zm���!p� 2�� u;�(�O�\n� 1D�����uWf�)G%|�\";]��y/E���_��I� �3\r�!G�&�X{n���GtbD%p>T��3+��RX���8>��쏤B�,�sY\")HԓC�T ·3*F!E�+� \\�6\0ą��!�2�0����a�j�p�i(l\r��R%�#0hB��\0Ƽ�\0n���6\$���T��4&'���K:�FЍ��H\n (KD�B� �3H���\nRbN5��b��@CR�h1�ų�@r\r'�AzZ�\nO�h7�jH��k!V1��#Tn+!3�j��E2�R�i\$M ���2��\"A{31:�Խ4���E�dΔ��^����\$��ȅCKSY�L755�bאq�add��RIqF��N��A�h��Y�\$ѕ�U,�g&\"�Kf�q���OY����8HŒ[�f�Z9%�����ZI=x���ݶ�tDfA���7�{|�Q^'�&^�lѯ�]4��`�Yf{�\"o�U���N�-��̰�����U��M�k���M�TC`�p \n�@\"�q�A�&\\��U.*k�b��j�U*hLh���a=ۮ��]�Dʝ�#�`��J��fj0�D��<����>�;åq{Q�kp�T����\0�%�w�Xg�!�\$�>�5����Cش�Y�i����38�<������SfL[V�THh�%\n_��O�Un������H�F5��Xk�U�H>�(n�{��{���<����Vf��RJ;8�ą[��>\"�a���b� ��gd��YN�7�1�43^|K)��`S}�E~���]�c�&�yF}����������Q�����eS��~����rs<[��&��G�kэ�����K0����{�-V��P �0�.R\r(ai�+�)�тG�tuӹa�\\�50^[\"��\$m^����H/6�6�Ȉ��H[�r}������%UQ ��K�XM]R��5�����!�����\\�O�D�\r����yȗ�E�� �k^�;Z���H����Q!���(C���*��o�p�Dg��S��=U_����q�� �o�kӹ{�MP��׈�w�j!\"W�&�@!~��'R)���\"�i����Y��Z+&<v�z3󉣾�����6���G�����]��.D�2~���&��@�A �H�~كJ�t(x2cMKZOBl�hN��Uo��gB{��\"NG#r�'����f�����&�F�@ �&�R��>ӌ��f�h𬪖�lӰp����B�~m �P�э�8/���l|�<�ǒ������*�࠰�������%p�Ň�����\$��~��K��n��\rϸ�hd�L6t纴/�.[\r�-�i��)�N%p���\"{I4da O d���50���\"#�p��� �� B%C,:��\r�S&�ƪ\$?\$a�*�p0��NQ\$�i\nN��\r�?��M43�㇈�Dl�(���.�P�eQ�mq �L`��>{P���7� \r�� ��,P�/���0�Q���AQ�zq΀��\".n��?��db���ʏ�I��D����C�p�\"�����o�f������\n�\$�Ѫ��� ��{�\r\"��.M�LL��3D�<�� ��\$NrT0/͘�G��l�k�T���9Rw q� �k\$�#pH��w%q�)2p��z�0R�q�(��͏'1��C&pN.�Rm\$�� ��\n��+�w*R4��#��ҲJ���6G1��m�^�R�/L�ډ�5��/�k-O�ؑd��J����.��' �t���s�\rHOP�1�g12\0��ͥ`t��Bpkf�S87�^����\$1�θ�������\n�����md���R�����@�k�\r �\reN�Q�\0MN��x�\n���Z���﮺�,X�����~0���?��Ϋloi��v'�����;��%B�-W0-�F\"u�)PG?���4mo`�Ěn-��c�*��s�ك.V�H���%j.�\"L;��w�!�,�o002w ��CjUgU��f'����ETƅa���M��&�L�*�H4thXN�v�qj�]G��J3�H��7� H\r%J�D���ݯ��GMVF�������o�t��чHspT��gp���6�[�32�kAG�\$G~!T��ǂN�~����UuR;QmT���2~��HÉ>K�ȵ\n��.CH��v���K���u(nfM�'�s.�܃H�7�@3�";break;case"fi":$f="O6N��x��a9L#�P�\\33`����d7�Ά���i��&H��\$:GNa��l4�e�p(�u:��&蔲`t:DH�b4o�A����B��b��v?K������d3\rF�q��t<�\rL5 *Xk:� �+d��nd����j0�I�ZA��a\r';e�� �K�jI�Nw}�G��\r,�k2�h����@Ʃ(vå��a��p1I��݈*mM�qza��M�C^�m��v���;��c�㞄凃�����P�F����K�u�ҩ��n7��3���5\"p &#T@� ��@����8>�*V9�c��2&�AH�5�Pޔ�a������X��j����i�82�Pcf&�n(� @�;����x�#�N êd���P�ҽ0|0��@���)Ӹ�\nъ�(ޙ��\"1o�:�)c�<یS�CP�<��F�i��:�S�� �BR�9C��^6�‚X�& �\$�=q�b4��c�0��,���s��P\r��:�BBX�'���9�-p�4ӭ��.�@�29��\0@P\$ 8A�\n0�c��8@����2��N4\r��Apl�:4C(��CB�8a�^��H\\�֫�\\� �z�ڰp�2��\r�����ϲ�)��^0�ɨ��4��� F�s��7c(��H�ܶ\rc�魸�R׶,@�:�j/<B�7'c:&��x�:�9�l�R8�,*1�|��i�5�-�è �x�� R\0�e@�7�XZ~�B5^5��(�3���Ϧ\r3�E�0��V�9Bd<��X�X���:5H\nP�p2�J%Jӧ���h��ɋ jB\n�/�z�\roN��\n\"`Z�h��܃� K��1:� JE(����F�t Kv\r�/�SCk�3�\"��'.+\"ܼ�Ƕ ����.P�!<����x��.�H \n7��52��\"MB5c\0:�����#H�J�r� b��#U{E��n��{�1�('!T��F�b�)\$|Γ�x��:V�� ��P\r�.&)������+���俣FD�Y��\n�����9�E\",��]aMf�L�ASc\r��A�2�6�S\nA��R�ѐ.0�DC��\n4��8���UOa�U�ą�#�\r%D4)DD\nfe �+5���cN�������V��`��n��;a�\$��4AH8n��j@��\n7te�����hsRR��tV��I!&'�QE%���\\ �:.E̺R�.��x/ ܼ��rm2�A��X̊ɴ��� �Gn�\0�U2��q��F�\n�E%`��u�jNal��1`0Bx��` K0�(�L��a �},���X\r� ���\nD'��5���9,N�>,t>n�A� ��4�PQ \n (!�,�!8�����N(�� ���� ��D2\n �i !���D��ZB��.•dD��U�W� [�S�D����ONct(Eܘ������\$�<�����dmX�&�j��ڋU<���j�#Z�M 1mU��D�`9��?`,#f���? NI\0P �L*ՓZ!t2���c\\�]:Lv���,p����d ��3��NIGu���ֲH�)&Y(����_ E*�0`��<0���sI�_De���ZKɉ/%5@��ŎA�\nE �1�5���\0U\n �@�ԯ�D�0\"�fz�_f!#��@��Q��2�j�!������N^�6}���\n�a���U�vQ�c�r���ueX�\0�J�+�R�q����C�\na���:�T�]���Y\0(S��*\$b��P�Bd%��9���H�%&CԠ�����H���7-*b� b:-�X�5�X��Amq���6�i�\"WnQ��5��OJ��s|]�\$�}�F�Bd�� �A��w�Cs��)�w����11UŴ@ѩ]6�&��-� �%f.��Av�X�S���j�J2\"����4.��='h�ܒ�Đ�\0\n?-���tq���T! \$\0� ���1]X�x�j~n�t�S��Nt�k5��x�\n��Y�A1�/v���_� �z��uPI�ߙwƞ��Hk|��M�h������X��i�ί6�՝1��8,��T��cY60��7�,i��A���\"k����(Z��'F���G��U�.�K� �F3�2V���}�Q�/Giv�ԢsEԾs[���z�Z�\r����M��#=zT(*}I��6�@1}�S#]z �y�I\$�>n Mcl��kV۟H(3����<�x�Ⓥr��1JxL�@Ry�0nM�5�`���e8����������ΖU�+/�.F��`(2�ק��}C�m!�=9�\n�{�sH�2a�� ~*E��2�?`뽘\n�s\\Ӵx���`�P\nR �.���l��g���v�`:ڋ��oN�o�i�(\"�\0���d�-���b��\$���\"zC��LB#D��j�F`v�>`��i��n�-�pF. y�P�(��X��ի��T���c�<Pz'p\n~09 ��^C/m\0�r��H���7�!\n���>�\n< %��\":�Bt�nG�΁0����4\rhC\"� °3->�����BŠ�'�%(r[�=F�(�\"Ї��'~�̖c-l:��b�&�:�Os1&5���p�\r\"�� ��vo\"�٠����� QQP��c�Z����C M:%1l�x�_����p�& ��j�&� &����e�%�P^��6T�8�1��qq  Q�p�Qdj\0=��u�2Z��\"�pK̂��`��3 0��LU�4�Ɔ\ng\0%���Y�m d�e1� R\rr�4�В�-::�!!`�1с#\"Db) A/,�D�.�w\$R8vp�hmdI�� ��&-h~qe\"�(\r-u �s\"�\\\$�s&P��f&y(��\$�6��<dnQ�]\$�:F�e*MorJ���\\��`&�Dh� ��E �R�v�c�\r�gQ���ROb������K1hB\$�)�ަ�FC�12�<q�t����i8'�JA������pK��cn\\�#��k�wL��.|(�vF� �\n�� ���z6pV4�<B�1/-�5B�7O@��X�B� �w��&�Ĉ��8c 0r�5Ӝ8�C�vFS�ɃDD/cX5�FN��(L*?��1\"O<b�2�nN.&F��'؏t�g�-�����-�6ά�G�'�F�s��.�bG����7�7\\��)`�(��p�ZC}�>���Y�Pd���@�\r�~��?G��&�jSEg\nk ��T\$Ѭ��K`jT*&\"D��n���G�rL�Sc�0?��-�DÃ\\#i���|�e(�LF�n�m/�!R\n�lI� T R-X�R�>";break;case"fr":$f="�E �1i��u9� fS���i7\n ��\0�% ���(�m8�g3I��e�� I�cI��i� �D��i6L��İ�22@�sY�2:JeS�\ntL�M&Ӄ��� �Ps��Le� C��f4����(�i���Ɠ<B�\n �LgSt�g�M�CL�7�j��?�7Y3���:N��xI�Na;OB��'��,f��&Bu��L�K������^�\rf�Έ����9�g!uz�c7�����'���z\\ή�����k� �n��M<����3�0����3��P�퍏�*��X�7������P�0��rP2\r�T����B���p�;��#D2��NՎ�\$ ���; �C(��2#K�������+���\0P�4 &\\£���8)Qj��‘C�'\r�h�ʣ���D�2�B�4ˀP�� ��윲ɬI�%*,��%����*hL�=���I����c˞a�\r�)��KqEÜ�K�J���s � *IK�72h�N��‘�����k��V.�X�(l+�2# ڈ&�47Ã�<�*/���8@�����R�ЃٵG��\0x�� ���CCx8a�^���\\0�V#�� �x�7�jGC ^*��ڗ%�̗(o��|�/ʘ�60�T5V*�LQ�z�0C�q21Lc��a\0�\0�5~0���8,�H�2cc&��P�0�Cu����\$�1�C���zj:!��eO2I҄�,�{*� l�S�Zql�X�0����\n�22o�[I�.�Y0�������\0003�C=r�\n[�B�1�2Y��y�\\�B��[�S���4���ci2 ������}B���)�c 3O���P6f��2�&U/�b���g<��}�O���i�z1T��1��(� �C�m��26Ę0�篱�=`��T��A�q�5�UB�&���@�U#�c\"���!�yc\nO���}O=�%Є���CO����gΉ�! �ݔ���y|0��\"3��Ѳ�r%�8*X>aJ*;g�]m�W��H�&���Sk�Z�E=4���ih.H7�U? � *�ж��Fa��7�����J]r<��qE����Z� )� �y�*)'T+\"�U\r �n ���g��E0&h2�d� �I\$���XI� X0��.>I\nI]\\i�s.�����V'��1\"t���F��4*�¥�y� �M7+U��� S�����B�}+M!JF�ud�� ��t��ڻ׈w^kռ����G'e��W�ϛ�5Rt<�l�ڟOa��:�fJ#���*��J�N�J 4?gl��R�e ��ɉi��@�J �a�C��9]3��g�0�g��o/�el�R}?Ѻ!FT����R7_j̖��]��e�\$��)��H\nqe8ǢAT\"������HZ1�kp��ȗbky@ �ͥ8�|��ZeTL��r�W :�b�e� KFV[BXCl&I����Rd�ѓ���x����0G�L4��I\r9�5k�?G3&B��_2��\n� ��HL�^˄���\n�!��K����OM€O\naP�B@@�u,:��T�T j�1?�%H���:��5w�6��ƗH�b�<|�|� \0���-1\n���{SV^�p̸DR��0w�1�\0�)��h�/��(e��A�T�N��!)��� �K n�P�\0�p \n�@\"�o��&\\����'�a�B !Z]+n !�H�v�� ���Ђp� u���%\\��e�8�������ĘOS^JA�?G�2��/m�Q�%�\"��\0��Gz�>�V,:=��������ހJ�=��_�@�ϯ39ԉm1]\r!\0)��5\0�\rs��aY*T��� .���*H.V��\n�W�x�C��i%\0�&��q�Q[:!%_�+���-�\n��Ȑ�⑊9�\r��T���@s*N��3tt_��E&#�Yr��\r:��1��ug2\$<\0���2HnيLᐴ�IY��:8��f�62�� ��2c����A��آ��_�8n�'������ڄ5;7���R�X�ta��� +@K�!����tʛ�aP*��re)��7MY/��9SqpMy=�p�\n�v� �.&0h2����C:Lv�1/�h<�UJ�5!��P� � P������X\0K�焣�9~��zv衏���o�OMѶ݊&Zvj�S�O��:N��+w\\�<s��J\rGZ�}pTRm:�-��߼�N���v1�ua��3�ߡ-%�����J���Ϫ}�\$zg'�i��v^�!�H��R� W�b�HrR�t+�P�t��V�����K�Ʉbu����������&{P��jS�*V#�!E�%��ُ��[�e���?���:e�k�IW��l�o�*v���ȝ��[�������lY~'gjO/��)��j�\0\0O�/��l�\0\"e\0kl#'\0��gȖ�mbN�K�r��h ��¨\"��h����`5��-�Ĭ.�F�hEϤ�dm�h3��I�.%m�Fƶ§� *tcp�p/ �y��������'���l�ʐ%��k��yp�\n0��p*��� l����\r�{��|���CЬ�\"v%�b����R����� ����\$< �N?�T�G� �������f�\"Q0ވP���p��� �/�B*�&� �u��\n���?p�����N�\r�9��/��M�&lP�)L(j�#���p��B�0�O��j��,8J4��\\\"�T�h\0��G2� يh��j��̂�/ʸ<�3 b�l@�=-Ц�5,��\$�B+�B�\r�Ԥ�.�eRr���-�%��аe�{\np��-�\0�m z���P��\"&\\@ ����p�\n���C'%�^��}!� %���q#IM���k'��\$�:�%�}���#�\n�x^ČI�j�\"�ºm+S�@�\r�@X�8� �Ò@3Q%\"���-2�R��(g�am�aϐ��f�#�d��)2Q/U0+��#�/�k'�2�bR�ح\$�R��2e-#�'2b,��33\$;�),��H��ds74M�)3AS3�@0Ё,�/�dJ=.�!��'Ё0�)Ƶ',���LNO �kS��\r�9�u9�/9ӎm�G7R���8���c\0݋���/;�r-B]��m)��JD\nSB91G��9�d�3�:2r�s�>�?ss �t �nJC\nN �h'\n ���C�ňb���h�6wj���&�E��1C�Č£j�v\"�`���*:&����:S���FI_C�#ޤ�,@�k�\r-\$5c:��|��ndP�'0���Z���vwj��3���@��Z���5,��!���N�ʴw-���,�#�ZZ�S����/�k!��u��p�iQ8@�2��d@��U@D5��I���\"QI2I\0�~c�\r�'\n�ju(~k�'�r�h���:3�(Oö�b�O4u\r��;'r씟&2�0�r�w#�WV�]MP�; IM�V•W1#��W��W�p M�\r��;e�!t|�&2<�,#�\nq\r<d.P���zE���B?�Bm��;\\�]BcM��~�#�@\r�'n�Ό���Hs�b0�\r�1�=/�MJ�㲢,`��L^�Lx+�}% Z����H b5vȆ���\nsR�T \\�3�`��=�<>`A`�";break;case"gl":$f="E9�j��g:����P�\\33AAD�y�@�T���l2�\r&����a9\r�1��h2�aB�Q<A'6�XkY�x��̒l�c\n�NF�I��d��1\0��B�M�� ���h,�@\n FC1��l7AF# ��\n7��4u�&e7B\rƃ �b7�f�S%6P\n\$��ף���]E�FS���'�M\"�c�r5z;d�jQ�0�·[���(��p�% �\n#� �� ˇ)�A`�Y��'7T8N6�Bi�R��hGcK��z&�Q\n�rǓ;��T�*��u�Z�\n9M�=Ӓ�4��肎��K��9���Ț\n �X0�А�䎬\n�k�ҲCI�Y�J�欥�r�� *�4����0�m��4�pꆖ��{Z���\\.�\r/ ��\r�R8?i:�\r �~!; D�\nC*� (�\$����V��\$`0��\n��%,АD�d�D�+�OSt9�B�`ҧ3�Ԫ ��\"<�+0�R����I\n�᎒]7 ��()I�01�A\0Ɗ�-� ��e0���@����[�Co��H���(���]��0X�(�͌��D4���9�Ax^;�tiU)Ar�3��\0_ؐp^*��ڼ��p̼�*r*�|�\nc*@1�r*�V?�X�u��j9��߉�{��\rKta�z\\�7��&7«\nA\$�Ԩ+��>� @1-(��yk8QC`�6��Tn���\0��O#\"1�y+\\X2��T`P���I*�2��+�|�w�*Lj����@P�3�c<i%�P��Ǣ��\r��4�ʨc�@���,�1������\r�T�&�O~DQ �mt�WQ��������� �(��T��[3���N ��U�'�ϝ/N܎#��@�l۬9�=�~�w)Χ��T�X\n\rCU�bJIY1�(����ˌ0���IxT��\"\\_q�P(6�7��*���GL(�L��C9č�gt���뽟���֋��l�0�\"BW��*��U4��i\$����tH_��D�\n\n�H  A+�L���t�\\\naL)h(�lG��P� k؄ p���XT�Z�)fy+� �z\$&�����p1�C�b B��T-���Y(d�d�����\"�@�����2F�&\$�����BA�\n!%h���������:_Ca�; �Ȗ�#�u���e�E����Z�`;��Rv��\\!�p��\0��\"�`��>�� pĨ�R�\\\"kA'� ��RJY�o\$� �ؚ� �b�Fq�%�j�r&�P�+�d��骑3*`D\$�ʃf4�!��P��� H!��M�� ��=�%Q���`�lO�!�����C&����)�@ \n (P��� X��xTс'dx�#\"*��pg&�8<b@��z\$��W�fwKH�{�Q�Hq����!OD�.�T�CC ��xyʀƹB��T�'�߶���C��)��Ш�IHaf��/�}��(�vfZ���So�.���b}Y%�����Ri�\n<)�F�N_Äl����D�\$\r�*GP�:�&�������@��HA�k蒲�Fi��b9�e�b��Lw�,�rN�\\80�*PӮ��3P�EP��5^Y��ƙ:����o �}��)�i�B�����M�C\n�T ����R�A<'\0� A\n��l�xR\nW���ЈB`E�wx�OG)v��9���(��Ryp4:���-a�͘ƿ#�X�T\$��LCr� t/g�\"�%Tc�I�{&�E�uJb�^.; ��p�^���j�>6��CR��\$c,���N*��7�T����ofdS4��VI�ݞ�`*l�D1<�P�U�� l�Au�<��C1�n�<,]+�k͑J�h6]�+w���AL���x� �c��U�)�3�IU2���Z� a�NO�x��jm��bz%��#N�.fn����ǬU�q/m��y5��qf��r�8r�dר\\��0�r�S�ك�yS� 3k�B2�`)a`�T�n[!Iv>=#p��+b\n�R���@�KѦ% ��bI���E ���:g��0�����CYQ-м5�]ڝ��N,Je`�@±ه6\rUM0\\T��A�?���8�i1�,aNt���ס�ZJ �0�<er�%ˢ���_��.1�+gF�EQ��5�_Rh �L��D�%k�%%l��+�I�˿�v �3G�.?Fr���q̨FE]���d|Ji�bD�g��>�]�i��A���!�h���4��#/M5ԗo��{aس��-ӳ��`ē��~�&�Dɦ?O�=V�*�/���0�LO�aΘ�{���1�����E&}A\\�]jTʴ􃞍:Z ��Ԕ�B��&!�&�dzT� Epl ���K��]�� ���!5��ƫY�G>��dg�lg\n�\r� ���|�T�g���(#�hK\"�I0\$z����ON0�8ul��&,TpChu�x�/L��`ӪhK�o't�PN��D{�n�-2��0������^�#T�nh1NQO���J�@�0�C�f��#-�\$+��Lp����P����p% �/��}@�\0��w���d�n�܀ɔ\"�&� j3��&�\0X↛�^��R��T@��\0̅\r~I�|{P�j�\r�n�&�d<O�dFP�\r�~�:��~�\0ڵG��\r�,a��(�\$bBO �1l�#7�Gf\"�p!0` ��R�p��Q����A�Wє7\r��hɈk� G��N�~�f� �q侕϶7<�q���4��F����puʘ�1��i ���'^k�4�\r�7�����k�!Q�!\r�gP\0w�8��B�>��]B �Jl�P�2:vR qfb�8�?\$�N�RU\$��%�=\$����j)�7\$0a'� �S'�c'�q�1��٢� ���څ 'Q�)��?1�u��(��P���)ː\n�fg��\",[#pj�f�)Q���H����ڊ��AB` �� ��*K\$*�Fa �� ��\"�)�B�\0005��,\n��e#fR�NQ�!S\$�&� %L�T�1� HT�>L �`Ɔ@ơ��3ii\"��礴1ĂE�) �w*,7G%�}k�\n���p�b\$N���<�'�9.j\"�.#\$r��B|M,|���'/'İ_Cb;�6n�=�0�M�͐����ډk\$몢�C6�F`�tJ�*s�!>�vx����t3�;�T�g!�D�� |�ϐO��z94�P>��D4&�d;A�p\r�B�;B²�)��CO����tI�vO���f�'B�B��%L(Rlf� &pHuf� B�� ޣd�ЮR<1�/D�l1�����!B�/`�ڃ+ABd1�\"�bTX)yt~��g���M)%�n��X:#:\0#h(���B�\r�";break;case"he":$f="�J5�\rt��U@ ��a��k���(�ff�P��������<=� R��\rt�]S�F�Rd�~ �k�T-t�^q ��`� z�\0�2nI&�A�-yZV\r%��S��`(`1 ƃQ��p9��'����K�&cu4� ��Q��� ��K*�u\r��u�I�Ќ4� MH㖩|���Bjs���=5��.��-���uF�}��D 3�~G=��`1:�F�9�k�)\\� ��N5�������%�(�n5���sp��r9�B�Q�t0��'3(��o2����d�p8x��Y��� �\"O��{J�!\ryR���i&���J ��\nҔ�'*����*���-� ӯH�v�&j�\n�A\n7t��. |��Ģ6�'�\\h�-,J�k�(;���)��4�oH���a��\r�t��Jr��<�(�9�#|�2�[W!� �!��T؂B�-i�q5����Ld��.j��tCA�f�Lק��� ��h�7;�s��>�����1�3\0�3ӯs���oh�4��@�:��@�o�\0�d4C(��C@�:�t�㽔 4�&�����}i[C ^)a���=����\r�<�7�x�@Hc��ω3��h<�!�\\��H2E����I â�F��\r%�P�0�Cu&3�A(�!1�<զ��O\"03T���i���\$�t��Q��p�Pk\\�a��w�n� ���Z{�Pz�Ok�T��i9-��q�kx 9ӂ��k� �F���!�۠�\" ��Ʃ,���z�}���@��B��&lPI.�7�u�<���W>�j���il��\rb\rĵ�����U�k_\r�-h�!�H������6��}6��.���<� �<�k ɺ7sXC���Ǻꁦ\$Ȇ��%?N�!7������w��l�[y�p:V���5p��ޖ �v8� ����@h�9��̫^�������P��z \$L\n�PH��%H ��O ����u q �5I)@�� �i�-]x��K@��<�L'WJ�@D\$��sNN Aj�t�=�`^���C�kߑ� ��/�L�,���`�5���J˂�<�%���\\KɁ1-��� )�O��Q|A�2pj&��P��:nj1�\$B��!�le�����KP9 'd���@�{T�t\\��U����}q� �X�a �v �0��f�<6�Τ�b�\r\0�V�ԛ%�\0cW��/H���.���FC\\D!lc�\0�\0()`��GF��� r)Q��ެÐi��'�y0����I��7�v��s���(t� q3s�Ў2<��8F\rPēS;�R<�0� V��} d���hZ�� ~��Ph� T�R�q��bzK[*�'s��\"�5�DqD���\" �I4}y���'��O\naR���JC�E ��`���\$D���\rΡ�W�� -�����iIߑ%!��8pZ���\$� K(���2 ���Ħ�@t'q�4���A�3W� �񢢘'�����-m��B�6M]�e��DV���3G��QB�نd�)�4���&�If�ufI �ۜ���_�T����GkN�� �^Nj��� ��{����/G󝻂s� ��z�I� �S�eF�'BZ��IJ5=��)�1�ES'6</7v��j#ĭ��fzZ��l�)�2b6sI�<�\r�WC��ӐN�ē��� �y��\$���OL���n��A�\\�2\\Y�o�D��;.k�����CG@���Iԙ���r)+B�� ���,jA\" ��2�b��2��\\�uLIS�d� �@�BHe�G�Z��)�9F>\\�(��x ��9�4es) �dAE��\r ��W�U8D |{�n��p�Hy:\r6@SHnZ:ϙ��(��!�V@d�HZ�+XuٲYR��i(d\$¡!��m\ry �p�&�G�Pْ��1 @U�֡���XXZ��-Y��-��1 o��4j���MU����� �\n0w��X�׸�!��}\$����qY�!�p�@��������Q+g���˺a�XS%��U#����T�Z�ܗ�\"��ȝ�u���\$�ưBo�h�����×��xY���xUS�(�f�2�8B�Ei-Bh�Wal-K��\$���F��K�X�}s�%ҵ�\nQv�������~\$v�*��m�ְ�F��v�x�{)�����vY\0�l_>���tɁ'�K�*�����R^�i;�z�ñ���\r9��5�5x\"�g�c��W�D��z՟�AsO~�i����3¨g�ף^D �A���@x*XGj!���l<�J���.�?\"{��?Z��������4HԖ��}���y��#�d^�tv\" q� ��rMK���j�s����+2��_�b<5��s�6\r�\n#��^��N#m�@k婀���^�fˏ\0000M>����<0nh.\n�\$jͲ���HQmo����u�g�k�\$�Hh�d \"��cON���#�th��N������q�ls 0|�07Bc�%.�'nE�^�ߌh����\"���Ư��P�'����X�'[ ���0κ�6�������D�AP� ��0(��6��ō�:�����0g��F��k�&\n>�J'f�5�Z:lωk��#��v�6���Z�-ЄB%)�Ie��~B<%�6�6��6�T��\$�88k(����\0@V\0��qx�Ǩt�P@qdff�߬�}p�o�)�lcH \n�\n-q�2D�l�%�x}�@`c:ձ�l\"���,Ȥ`FK�#ǎ��0��\$ǎiI�\$���\n4������j#�b����)�C2%!����.`͟���M�: �y�O/-/O�y�Bh� ���}��#����DFM�'V��7ʺ��pI'\r�Xx�i� ��@^&�@m��\"6��qn�.�'*� e��e�r�jMJ#b��\$*��`vRA ";break;case"hu":$f="B4�����e7���P�\\33\r�5 ��d8NF0Q8�m�C|��e6kiL � 0� �CT�\\\n Č'�LMBl4�fj�MRr2�X)\no9��D����:OF�\\�@\n FC1��l7AL5� �\n�L��Lt�n1�eJ��7)��F�)�\n!aOL5���x��L�sT��V�\r�*DAq2Q�Ǚ�d�u 'c-L� 8�'cI�'���Χ!��!4Pd&�nM�J�6�A����p�<W>do6N����\n���\" a�}�c1�=]��\n*J�Un\\t�(;�1�(6B��5��x�73��7�I���8��Z�7*�9�c����;��\"n����̘�R���XҬ�L� 玊zd�\r�謫j���mc�#%\rTJ��e�^��������D�<cH�α �(�-�C�\$�M�#��*��;�\"��6�`A3�t�֩���9 �²7cH�@&�b��\r��1\"�ܠ�Mc\"\r�0��I�%% 4�D��aCG1 B�8: P�6�� �=�))�-\n�� ��\rJP�1�l-7 �s P�@;��COa6�@9 �`@&#B�3��:����x�u��\rl�A�`��|:9��^)���5���\r��7�x�&��`�#bK����5�Lk�'*����i ��/n���/��A�d��a�CRB��0\0����r���2h:9�|�hD5�P��bC�O&��&ʌ����#����䞩�53�\" �0�:�!\0툎�(%�o���;�P�:�c�\$�i��3�<Ɗ��F��C��\0\npe�X� ����)X��\r���*�� �R�0��X�������˶�ף�7G∙j�]��2C;G��MAEѮV�e���)��*%\$��]���v�ZL_���Tu{�B�d�>�8�:���6� �:����ۓ���u�{��]��[� Bz�����\\��3n���cP��ho ����n���>�P7��\nh�xC cfЎ�{�P i���`� wɡ��փ((`���1�J��f� 0��10J\r�=!f �\0K-��23���bP t��0��j���� �j�BN�<�k\r��� j\r@�4��\rJ�\\%0�H����a,,㷀�L�\n)F�5%�趌��9ʹXs�.�S�8��-U���}��\"%��c��\\��t.�ػ����z�蟈B�Pk�~���m�Ht�`�9#4E��:0���>rQ�m�� ��ʁ&� �K���ˑW;%h�F2P�d�98��͓\0��T�6��K���Ñ�g��3I�F�W�&��-4p\ri�2@�1�S�X�s&�8���Ƌ��2n�֊>�L��qFp��� �@\$\n.�(��1�2>M��!S�6�3`�ͩ�g����%x�X�w.P���S���\r�\nO �@2%hΩ��SbX5,1�BJ�3��@t� �I\"!�ӫ��k���8���PfAd�7�t�f� cbTڽ�T;8i�G\$X5���˜T&\n(�VF-���s�XU7�Q�K4[M����Ry ���=\"+�u vp�_��ܲ�iY!M�*�ڨ� �R�;6zO_l�&V\r^��%\\K��A��;�&H9�9�*�F�[�1Ĩ[3�z�SL\r����SX�X|�f���_p���J\r�6��q�tj��.禥 9�A1��%TJH�v;\$���S��Q�o�Q�����­�16�O���-��\\`p��e{8<��o�{}\n�����f�F�u�v��\n���I��1mR����y��&�,7d�y�Ej�����P�[�S -����p�̴�.X\\�\"�Sb!�O~��o��( ��@���)/є�����x��;H'מ�bk%;�+'��ze����.�l��e2�G�\r�#G�X���0n�{a ٛ�6��y=����%g���Z.�UScD^vH��Lag���ơP*�~�&�W�z�P�K?A�ǽi�U��Z:\$�4 ^W�M����Pf���5a tD�������N������ �N\r{Â��{xJ�oc�N R��(�T��^3������ ���\rW <G���(s�m��?��F�j�V�C���}��\r���|y�o��O8�L���b��xFGȔ^�0r�qP�xG�d���C]%8��\$��6 ���pTQ�Lnݭ��5��59H!��@���[���YY��y��z,����D��0GIHH� �3+����V\rb69L���fI�rw���O��NK�)�9�߳7�ʵ&ާ�ls#E�я��\n����%�\rV0�d��J�(�7Ј��L!�A������+F \0~łp&G����[�����`�V��)�w�'�;d|��\"ff�dƖ�k��)\0�-��p��P�ŏ��x�J:<��ȝp�pL{Ϟ%o����#\"�&Ћ�ϰBŬ�g�/�G���E#�2`�3��)\"P� �N�N|�n��� �dw����\nnz<����] O\n0� \n�e\n���n�k��H�L� ��p�� \r����B Pf:�;�� �ƜD�D4@���H�@��3�dau\$t��\re�&1\$r ��i���m*�BZ��lj�:[C��f�����QD���R��5�u��0�O��;�G�������\rrzbr��=�����J��|FѨ)'�+���c�S�r�ljVj��{c>�������q���LA�8;��#�� tG� b� �� �<\n!J\$�*rk�\n\0�3��+oRbО�q�#m��p�bs#�e\"nn��om�x��z`�\r�-=�1%�%@���� Ƿ&2g&��b�\nq����9Ed9b^�b��\$C�#��q�)2�peR�+]ҭ*F>�1�G�<�{(Ɵ�����2�(��-��%��.��-1�\$-jW��ρ/��+�I/��������W��M1�dOr�{mLK���R�%,ڤ�-�m3��Lr[\$q��+4e312�Dc�3r �TY �C�rr)V�hF;,~�`ʶ�n/��7�|k�78�2�ӎdz�9b~��L�����\n�\"V�NjAx�S�i&��oX����ƿds<΂���=p��/b��k� *�\"bm`�m��_��\r ̅�_%+��K\0=P\0�\n���pN��@%���º6?�\n�f}�2'�7B�<X44��<\$D\$�@�B~nc�g%����</@M�\nEL/�N���D�.?��W�J:��81f�㺬#A�/-,� \"��P�|�&\0Ye ��=�;z@�;FSA��#��IJ��>kC�Ư��L\"0�\"�ӛ-����s�6�`���~��J�|\"�aO++/�N�\n5I� 舾f����5����o�-�cN,�Y�h ��� ��\r�,ZODxt�N��i�X`����*b\"?�.#�q&)%#p CVd��\r��Y��i,���<u\n+�]Ś-aZn�B*�g ,2�ف���\r�p9`\$�TKC:ނ�l�W�t\r��";break;case"id":$f="A7 \"Ʉ�i7�BQp�� 9�����A8N�i��g:���@��e9�'1p(�e9�NRiD��0���I�*7 0#d�@%9����L�@t�A�P)l�`1 ƃQ��p9��3||+6bU�t0�͒Ҝ��f)�Nf������S+Դ�o:�\r��@n7�#I��l2������:c����>㘺M��p*���4Sq�����7hA�]��l�7���c'������ '�D�\$��H�4�U7�z ��o9KH����d7����x���Ng3��Ȗ�C��\$s��**J���H�5�mܽ��b\\��Ϫ��ˠ��,�R<Ҏ����\0Ε\"I�O�A\0�A�r�BS���8�7����\"/M;�@@�HЬ���(� /k,,��ˀ���#(��% l�(D�C���N���.\0P����\\�8\"�(�6�(� ��j�\"�n���� c`��H@��lp�4�lB6��O���4C(��C@�:�t��\\(s�ܔ�@���}2��C ^)���1�@��O\n���|�� �Ғ��P�i�H�?8��ت����V˻����.@P�7HI2d:�B�d77��J2\$ԣ�%��d��h����@P���8\"V4�x� #K�\"TC�6#c�:��U���\0P������3�)L!�&<@̒B�M��܎��Z�����Qr��(���B�](�3�T8c�B�\$���&C��m�[s\$��j숀�/9��l�{\\��nL�ڢ�(�3� սT ��{u������69� ��m�P�id8Ķñ)�7��2�Y��^���b�����@���M3b���3��9�C\nF���!\r��aJ[�mj�)�B2��\" \\ cK(6�m��X�/�)iC���X��x�[›��]�ϕ�QN r�)@S�UCQ��D��.�f,��La� E�N>DG�PwA�����L���Ia�ɪ��T��T��T*�X����O����ep��S#�V?�|MY�`�\$�z�a�A����J���8�Cb�P��f�����Lpa k(��0���9�%t���–T�QG��4���\"�\\!��:�A��`���Lz��%�&��H\n��2��I�()\0��:�eVqlޙ�\$�̹� ���BniT\" _��Q�Ђ� �P0�4@�ڀe�kP:���NO@�K���q='�����Hk(T���LA;_\nH��i ��,q�����,��z</�#7�#� ���\0�˜ThaȢ�rhLOK�g(��(�\\ Jv\$�\0���Tyb\r��4��\nA��!�ؙ��P��{mh&=�B ��RE���p:���\0�&h�Y! l1��b�QY0O ��*�\0�B�EU@�-IA80��AO��T��e\$Pǚ.�j��J��)��AG2���D��3:GP�8�\r,���)u�z���e�ً��A�.��{ so#m�ҭT����c&\0(+B�ӍqpA�D+�0��pdD�ŢH�\"��s>�YH�7v�HS3\$ȿ/ʁYl��/!�ɓV���r��3��*�x��I9�(�I죥�2�tZ�͢-],�!�ZSD5����\0�W׭(7S���ڪ~ k³�Љo��oD�����Mi�|��d���]F4֞���9\";��*@��@ �mX͹�Ϣ�F�����H�D��]�B�x ���0,Z�+� \r�qߘ<k>�*<f�Կ�\"��Xuk�8���m\n-w�)�@�_�{.���(���xN��O�l�r\"x{eC �2BF���6'k&h��&a)�rLH\\��u#��� V�e��Ό{�a�:�LQqNa��L��P��J3 �\\���_��쓪D6��Ի �V��G�Q�:'t)w�MN��F9|���̻Y����L��W�nv�e��pl}���.k�h�բ�n@QQ�Mrc�Œ��D<��\n�����/#��K�r�ɶ��&[����� D�;D4�˘���7����S@Pk 5����_u��[ �W����'%@��RrAk݇��C��8��y��;�d@��xƬ✽�s�b��0�\\�.�.�_��X�̾<_����H���T���n'���S��w�콛�ooT뜯��p�i����\0� ��Pb��#�yip@� ���E<=>\n� �o1K�����Z{��Bƃ3Sm4��T*���S�}�s���|�^��V��rfӫsۯ��>W�}] z%�Pz�i��.�i/PkB. ��?{�c����>��P˃,J����&�z�pI�϶E@�\\Fv3n\r;薮��=��%��vNy��'V�����L�L�������J�}��R?̀p�#�0b��\"P ��͈գ�\0��N\$��(T0�n���ҴP\$�,S��4��P:&�����N�`+�\r+��p@L�����X10Fڏ��K� ���F���#ZL�\$f0>␈D�K� \$P�N��H� �T��gf�E���o�3o��L���/�~a��q � Zw��.��n��>\r�V b� b,,�BcG�4GP�(�uE(%����J���w��\n���pIk�>�N�0�Exp���tF ��M�\0 ����a`>�D,ö@ɦ2k�(� bF(\"�ɣr\$\n�^��a����\r�@XeBq��F\\,ä(�`K� �HKkd|��l���,���Ѱ��&h�?͐�\"bs��0���� ��O\0����l��0�\n �G� ����\"t�Úg�jhN��^l�*ƫ(�@ꗪ�\$/�\0���ɢ&/�0i�-E��V;ţI���o ���iBH� ���8G@�Fgg�FP��d\$F� ";break;case"it":$f="S4�Χ#x�% ���(�a9@L&�)��o ����l2�\r��p�\"u9��1qp(�a��b�㙦I!6�NsY�f7��Xj�\0��B��c���H 2�NgC,�Z0��cA��n8���S|\\o���&� �N� &(܂ZM7�\r1��I�b2�M��s:�\$Ɠ9�ZY7�D� �C#\"'j �� ���!���4Nz ��S����fʠ 1�����c0���x-T�E%�� �����\n\"�&V��3��Nw⩸�#;�pPC�����Τ&C~~Ft�h����ts;� �����#Cb�����l7\r*(椩j\n��4�Q�P%����\r(*\r#��#�Cv���`N:����:����M�пN�\\) �P�2��.��SZ���Ш-��\"��(�<@��I��TT�*c*rװL����0Р��#����1B*ݯ��\r �zԒ� r7M�Ђ2\r�[���[������ #�ù�4�A\0 ��̏�X���9 �0z\r��8a�^���\\0�ʴ �z*����2��\r�C�7 �Brݤ��^0��h��7���=Rm�i� h�k�\n�����/K�`�*w:�Mb�/�r�;#ܵ7��P��ApΆ�� @1*����J��\r�bH�Cp��!ǩ��6�+X�RcW�R�#���6C`�\r\nw��/�3��`�3Ԍni\rl���cp㕁B|��K�R��H����Bc3�7A_�vfP䦥#݈Oo`@)�\"`0�L+����M�ҮSS�]��� p̶!ԗ�-6|{�=;��ͳ�(�6�K��9�+�\0002���q�4\"M �8ih�d�� �\" �3 Δ����\$67����s3d�%;�t��݌,j�yxe7M�@�����5��\0�)�B2���#K����&b`��L�;,\$cR�����7\n{G�c�e�Y!��V��0J|ܠb5 �T��a0D�al7l g-*� �|V��0��J�H�r&�đ/w�� �T�������?j�QA5N�UZ�U��;�5j��rW*�'��V���A�|��>S,Г����zlI����Bp��C�|�`� s#��T6�T�cY��K���fL\"�0�hd|]�;xqἵ.A���L�����M�mJ��'DH�¤8dX„���\$(��\$�H\n\n!ʚpPQ�I1r�x1Z�r|�JDж�8H �r&�����xw���T䷞� |\$i�E�K�\r/�((0�eV2�E��֠��B�ɑ&,C�8�jMZ�hh��@�\":��d1�#�j&i�3�t7��H��D� �L*>@����y�=��JƧk�&*�U�l^���1��������b4QL7�E\$��cgm%\0���%�b`���� ��Hb]0R�Ԝ� ��\n7+ѭ���P�*V�U� E ����{%X�^��N)(r��R`MUl4P�� (Afᥩ���r™�]����\$bZ��\n��{�T`�L�O�p�ǹ�t�y��iq� u�ds�����SrfH#�&�l���t�yr,�X�J䈫b����fQ�bn���Л�(�S6-E��1�����s.��o��zu� ��K� 0����6L��R\"��ԗ�O�;��.aB��^��7�T�z�y�Ԁ�P���E��ړ/��U|`H&�SI^�yCe��%��b0Y�† *��\0����!��e��V&�JiA-)B�r��0���C \0�}�?;g��>�L�#�e��<ea� 0�^;-!���#�\\����\0�,z��xKS�3)߸da�@..�-e̓��a�yY�,|�N�-���Ŀ���H��A�3�Pҩ k �GBhdcdE��W%'w�4)+����x_�4�UP'��rC�d�\"�`�3�[8W�<=i\n^�+ee mIIyP�p���A�Phmelhi�*c_�ĸkH �Ke�K�E�b�\n ��\\�W*�_����s���T�/&�-��7V�H��ˢ�����{䕊ܮ#�;��Im�\\��s`)b�4�ihA&jK�R�J�t�AD1���g��\n��Vn}��[� I �w�z�OU�_��u���&\0��W0ʸO&s�R��3����\"\$����x7H����-�x[������u�p�z���+�{:��–,O�㳞��b�nf��f�Ҋl��.�\\� ^w;eP��I�����xl��ew}��xՍ�<WQ~�����N6�h��L�W�;���¨�M5���� ��Hs�k���zy�� =\$ 4�3�f�`�p\r�\\��_/�<O�߾�7�:J�q��� �����J���p���Y������/Z���ǣ~�?���U���X�^�������/�\0MV��>��Z � �\"8�H�\r�gZ�n��o�G���6�\0ߐ8�/ܿ>#�f�\0&4\r� ��\0�`x�� f�X��^G���@\$�K���n��o�e��[�s� �����ߐR�0��ep�b��'�B%mD�NL/��9 \$@��B4� �� ,L.��0���E �ҸDU�w0� ��4\n�6��3\r�&1�*�0��������.f�9h��\"-���\n��m����� E� tC\$�*���@����X/�m\$�M��L��RRp �J��s��\$�..B�0d��</�80fL��RB���._mV�B�1lIH����cK6��A �9@�j\n ��L�e)�O( @�bO\nA�*f��\n���pIr/F�,�&\n�>��҂��!!��L���4��@1bP%G\$��\$G��D~2����D���4�b�#��\\�� X�4qfV���G�i�&B�C#�Ģ��.lH#�4��,b��\"\\\$2������!�\r*R��R�3��=+��+ҭ, d�n�*N\$V2�j.����vP+�?o�@o��|&��N�K���\\jj�[*�0� t .�Dc�.�n��Q��E����쮠�-������ ��P6r�rK\r�yj� ��n�R�F1,p�\n��\n \\A &�\"0\$]�k �N \0t ��@�\n`";break;case"ja":$f="�W'�\nc���/�ɘ2-޼O���ᙘ@�S��N4UƂP�ԑ�\\}%QGq�B\r[^G0e< �&��0S�8�r�&����#A�PKY}t ��Q�\$��I�+ܪ�Õ8��B0� �<���h5\r��S�R�9P�:�aKI �T\n\n>��Ygn4\n�T:Shi�1zR��xL&���g`�ɼ� 4N�Q�� 8�'cI��g2��My��d0�5�CA�tt0����S�~���9���� �s��=��O�\\��� ����F�q��E:S*Lҡ\0�U'�����(TB��5�ø� ���7�N`��#�� �{r֍�@9�Ä\r��;��#���14���Z W�YBr����T�Dz��� Q��1�2<@����#ʲ��\$a�K�\$ V��ē)�,C�d��D�L��E�`�G9|T�������ž��)�L��� ��T�&�VA��_4+S�6A�T�\$4B8UN3���9-��A�@�N���@9S�(��\rØ�7ձ=��(���A~�!�bA'9PW% 􏩕��3M��H��#ZQK�D��y4*�^A\n�f��øs�QL��[� �A�b�6��HA\n��t5��\r #����h@0���� 5����4�aD����4C(��C@�:�t��T 7����8^2��|B9�q(^*!��5�`�\r�\r^7�x�VU͔A��NE�\$Ўh�K4J se��k0*�Wk��t�)�M��|zN�A \n��7=�<��������L��(�qT@��g9+A����:����0����ǐ%��E?GI,Qӯ�����R�9hQ9��vs�}�\\s�F팤�[vD\$�0���\$�o#/\$Y+��B7067u\$61�#s�(���Oq��KE�t�;�9�W��^��������G��z'�K�Z� �'��<�I�5bz*I�n눎 լ���`J-`AX.���e)BI��X& ߁~O�Z\0��T�#��к3��C��4���\0��b�VK����゠o5�7�@Uhu`L39�@xg=�͌@��g '�FG\0�n�0Rs ���V�*�S\nA[(��cG(�x\0@��B��\ng}I#\"��G�q)Q[�CR���CUՂ�p@��J c�X*�Ƚ�Ѩc�}�0D��������N ��*#�<A�7���I�\\�\"\ncWd�����C�\"R�)��\$p�C7g,Y��X�&c,nU�D�3(eAݖ2�܂As1fl�U*�\\��= !�8`�����~�o#@a\rm ��@%��P��K�LO�I�V��DH�� R,ӑ�X�0f�\r�`1���d��p!�3M�7�8��b,E�Î!�\r�9�����3��Q�5F��� g�d,��(����4F��t#�\"\n�&uZ\\K�, �Me�&�I��ѣj�w�9f��A�6f�ۆW����8�a�R���4p�Q�;)2]2�z�M��8�_Yj��'�\0�Ě��%Z�w !�-��42 O����0�D A.��G��Զ�(\$�`�� ip+�\r�JqM�.x9��̂�l�����3J��B�h����˜T}�i(�j I��!�G%�mz�z�)e4A �r,(�G��0A>���@�����[�4h��3Rw����Xe� �'�����h�0T\n 78�?�e��b�#V�KȤäA��\n]D(�u�r��t�p \n�@\"�@VH\"������dY�Dr��k2ۏy�C�\\w`I�=�E�p�ϐ�(\"[7G8�A��)j m�����s���'�8���X���Z�!�\r]\$ϸ�F���~td~�BZ�����'�S\n|r��P�B�sT�T\\OR2���5�\$ ��B��*Ȏ�T�\\ب�K,G���B\n^�ϐr�����I!�\r!��׹���S �ڿXc�|O�u��EQ�'���SZlTȃ� � �ܪ5���� �Ј��4h%x(���\0�\">���~J�YV�\n�[V9�x��'�`\\}Vb epE��)1l����5����q�%Y�>+�ȇG�M��{…��+�@��R�3���f4�զ��tӹ8*��A!� ��Ys刲*>kʛ���¤�' �no�A�.� �g�S��\rS:Dhr D{ρ�D}'��V�����վ����g�\$�/ |G� �(&b�XwIv���xGk��Z�c�\$�I[?�P���ֱ9�]&�-G�� ��P��g���C�Z�!&�oo�}��0O���?3�>Kh�֕�� [��v�|���/��␼Qb��kb��DQb6�a�c�2\$2��m���m�\$o\n�m���!\$mA����h\"@�0&��,3�m�l��k�>pF�0N�V��ZhDG����b�f�L��'R�L���\0>��A`�I@~ZE�/�H\r����#�^�С\nIx�Мw����h^ ���vN�I���pr\"0��f�q ��y馭B�Z0��g�[�а5��p�ϮZ�\"n��� �d�������O�Q�p���0t�%�|��0��!N`����P��;omQ^�\"���B�*�T�Ί�Ϲ� �� ��\0�q=�@� tnj|�M����0l1��q�i�I�����N&#�*�Kdm�\"�6S/��� Zi� �2��4Bξ��,p� p���3�(��60d�+�Ra� /(�j��l�.Lm��m�ᬲ��]�Bm��\r1�I\$Ƶ\\��ӑ1%�&rQ�.��'e�?q/O(�L|���.�jA�C(�^��c� �n���g�:1xZ��'���(�q}-r�)'Lu�ᑮ���0��B8���.��.�2�l�����~�r�0���! �Q��W�c-g�c(s&#�+.��/s)2�g54S92�A3a3�~3\n#��W��W�6M���3(Bsf#�k γ�s\$h�3y3~M\$�8spNSW7ś9��9�6%,�nS�U3S����*�i<�4�<�?;p�0O=o�0��n��GL'���%l�i;��6S�-��9n�.-: \$�`�,r�^�!3a0�!A�\$����Dʌ�Y/MC2�h��*\"�4���z�A  �AtKD�S*O.~�-^h�\r�V h� `�Ta6s���`޹ ̉�9��Ġړ�4���@�\n���pTIH�#�9�� ���{C�'2;°~�tM\"+޾*�,��I��J39�� 2m�-h8U2#&!o���f~���9 e��*�V�Bz'�P1���Aj��9pN�Ƞ{��&T��N#v��U�MNbN��8��<pJ�q3wM�d\n�H7CR5l: ��\r���e��eU�kf�%�6�K��a �����~�e�p��.\\����3B��\n���\r�:\rN΄��J��B�%h6:f�M�\n��Uc�s��kosM1��t5eV�b�q5v�Y5�Z�s+h�#*L �>��\0�U�B0@";break;case"ko":$f="�E��dH�ڕL@����؊Z��h�R�? E�30�شD���c�:��!#�t+�B�u�Ӑd��<�LJ����N\$�H��iBvr�Z��2X�\\,S�\n�%�ɖ��\n�؞VA�*zc�*��D���0��cA��n8ȡ�R`�M�i�� XZ:� J���>��]��ñN������,� �v%�q U�Y7�D� �� 7����i6L�S���:� ����h4�N���P +�[�G�bu,�ݔ#� �����^�hA?�IR���(�X E=i��g̫z ��[*K��XvEH*��[b;��\0�9Cx䠈�#�0�mx�7����:��8BQ\0� c�\$22K����12J�a�X/�*R�P\n� �N��H��j����I^\\#��ǭl�u���<H40 ���J��:�bv���Ds�!�\"�&�ӑ�B DS*M��j��M Tn�PP�乍̐BPp�D��9Qc(��Ø�7�* �U)q;+����v����!�<�u�B&��/����e4�\\��[�u�DD�\\T�4�TUHt�E��^u�;dH� �Z�ev��\\��v��d# ��A�7�1D8D��@0�cyM>�\0�wB�0׎�K����QC X���9 �0z\r��8a�^��\\0�Wd' �x�7�8��axD��l\$׾�4\$6�����}OT�=SA[�aBXJ�i��\0��^1z��Yj�9[O�/9NF&%\$n\n��7>�<���9`�Ys��K�5z�^��YRL���u����S���\"b��6D��6�*�BiQ��A؜/�!��D��QP���*u�f�����j�ĵ.o 2r�Z����767ԄB1�#s�(��9T����/:���Y�e��j���v�E!�S��� _/����w�@z][O����:��ي�WF%����1�1BQ�6A'\0`�h�-T�E�W��\n�YV�G����s`)�#NjW�Q��3�ا���,�tM�0y�g��<�\0�C��_a�ǂ\0��9�l<:(zC8a>��)�\0@��pu8��9���a��b@��0��1�d@�\0\\y� \nj&&��FJZBH��d%a�6\n����t��� ��tń���SA�v�V��3`�!�k@hG<BQ\nN_;db27���y��H�?�P��R���0��ib���1)0���c�}��vF�Cr̡�2�,�ҜfL�\$���nCk+��(���ۉ���5��L���┒��p�e�z���4��(� `���#^|��-�0�it�b\n�e��Dx��X)�7����ÜA�ɇ3\$�Ѫ7G&��%CL@PFH��\0PUK�#��v �1�J\0J)L���K��CS�D1��:���7�2��\r��C�ނ��Ub�?Q�2K���s�F� EG�G�H�)d�`�\"oO�(�#Ā����!�( uד�_U���}��:a@d\r-�x�W:NA�b��ʇ4@��m��Av�vWH\":�ui���xS\n�� �E�N��k�m? �Jdm�ʶʤ���ak���u&��b�z�Vb�2���O�5��Q�����N Gd�� �\"›����n��0T�O5�����b���6X9�&_�ȸbئA�\\��O ��*�\0�B�EX(@�.z�y&��n, �K%b�O�׀V��� �����_��/�\0���o�K�`�q�r[U����Ķ�4K���Z�|�/��@'+�H(n\n=ܕr)�\"��Z��%��I� T�X% /VfU�D�N������\$��%EQ��\nd;iE5*�J��\0t�1�k%���S�Q�݋V�F,�����TދNX)�SsSj��?x�VBg_t ��B�.�M�e�5����0\$�l-x\$,Uk�j�x���4���p|#�\0�<\n��c���]���6����%���cb)��?`(�� \n�u�1P;DZ^â�<����aLp73@ C \0�� �҇[Q���Ϋ��/�٭O�—� �n/��I��6*�8��.�Rj����S��DI&�|��\"�1+�4����M�g�9`�.D%�>J�������\$����&1&��� ���ZKɉ >)GR�C�m�SVj��G��h �����\r�+փ�,N�n��*0w�q+�\$L��H�V�a\"��W�'��V\$ɱ�2�\\�5�@��i�坥����k^�ng�e\"����`�h�z<���dz��C��CM����-l^�n]�> t%Y��]� KYW�����N��P��IA�\"A��SJr��g��b/�|;�>�s�B7`- �:�S\\�ƛ^k��oD���NI�RNc���ʬ���Ov�d�+�����o޹��na��*����\$�.U��lf���},|�0F�� ���|mR-p�z�Pf}�?˒�AC��z�����r�\0002�r������Ge��Є*n63�QW /nٌ�� � ���P�����j� O� �� �Ѓ�J�˩Ϟ0�F���)l�\"V+�:)�p�N �z���EbU�\0,���Bȧ�!���<lH�P=l8�o꺁3�V\ntiB�,+�+1'\r� ���0��f�ۇ��\rjG_���U�E\r�MK��L���,�an*O��(��>��o1�����J�l�j�0�D%�W�X�\0;�\" i�{#� ��+q�l���-�J�������<'\n���H���:��k!q�%�p2'1VD��\0:P] b���!R9#��C�\$gj�p�1��rVV��\$�:�2&i��@�����M-��Q���LtKb<�j�#/AG(�tL��'�`�g)�w*21'�c!�OM��� �E%��-�,%҅,��,�}� ��)�!��.��(!D�\0ňޭ�(���G'2�*�r�rn@�C � ��\nG����BvS(-N�<��B ���pH���F��#��ݦ��tS�f�\n��nT��[&����OY-b�h�\r�V h\\ `�Q�_�\$r���@޲@̇� ( ���ڑ\$@�ȨA��\n���pQ�\"�C����oP�@�21��2F��/@s4�bj��>� ��\r3�PAhjafNO42�0|��O��\r��f�T8c�T*d��\$AF�,����\0|�PS�.;ae�f���dv��~y��.S��@\\!�Q@QiFP�6�qTb�OP�,� ��Rz5�\\��ʴ�� @]m_?\r&=�^<�ʐ&F�dt�P4/�N�JF�px/��ǿ\0d���Z〬_\0���/�:\r�>����s�PZ������F��r�~���0X�%�Ãp��S�6�{!2JU��% Vt#��n��EnH`t�aB>\0";break;case"lt":$f="T4��FH�% ���(�e8NǓY�@�W�̦á�@f�\r��Q4�k9�M�a���Ō��!�^- Nd)!Ba����S9�lt:��F �0��cA��n8�� U i0���#I��n�P!�D� @l2����Kg\$)L�=&:\nb+�u����l�F0j���o:�\r#(��8Yƛ���/:E�� ��@t4M���HI��'S9���P춛h��b&Nq���|�J��PV�u��o���^<k4�9`��\$�g,�#H(�,1XI�3&�U7��sp��r9X�C �X�2�k>�6�cF8,c�@��c��#�:���Lͮ.X@��0Xض#�r�Y�#�z���\"��*ZH* �C�����д#R�Ӎ(��)�h\"��<���\r��b �� �2�C+����\n�5�Hh�2��l��)`P��5��J,o��ֲ������(��H�:����Š��2�n��'���m)KP�%�_\r鬚���tv�K`(P�H�:�����4#�]Ӵ���-B�6��A(0(��!\0�1�l�R��U����l��� �0�j�\0yf\r0��C@�:�t��� 5}b9���!|g�C ^'A�ڱ��8̱�h���|�#��5��%(�ʢ�\"�!�0��X��+����= �Ï����䍸(sf���P®-B�m;�hJ2K��9�r� �&{�gC���)`�!��K�������ЄH�1�Ԩ�1 �\0�c�`�2�X.���\0�1��~�3���0�#*�����n9B�4��*WG��RT���� �BbU�鱋��3�4h2�#�V��`��͈`�0���&�,6m���+���P��c+� Y�t�ILe\"_8�Ø�4Pا��������`����\r2K��W�@ӃK6��(h�6���\"�Lf�z�ߩe��j>��B�� �mg��8dQ��\r�3�b��)UA���@�E�Xn.�:�Ux��3c-ἳ'U�����,�l���`��e��\$���;A%� )� �i�y-�'PLб�%%����ܞ�5N�\$nr� Jb����%@���X��5\0ܑy�>\$�}��]A����h�4�JC\"�ZfIk-�t���-�3��L��\r�XK��`{������_%p�2�FIU\"�]�=x�`�\r�z���j������\\ �;�E�P�B�]��v'2❥��`���פ0>L�x�)� YCh)��(2ԤDGdE%���;�#����B1ќi2��U��ɕ���/3�����V�}�FH�( X�Ӽ�R� k��\0؉�YmY����n(Dy t7'&�KK��(�����\"G`��CPӹB rg���g\n!zAh\$���.��o�CrmH�6��{�*h�V7��NJIY-%��ڨ��Q�,iE���bM���&��L�btk�Xy2\n�ڠD�Cs85���p���\r��[�#P\\hQ\"X��<I��/f�K�*qq1���q|��ՙU�5��t�Jͭv��P��+ m�(C�f���*ЧP�f0o\\�1[8���8c��`�I�:}\n����C�5�p��BqI:SSp<�Y�C�h�(�#�W1gu\r|)���#Vk���Q�9�~o��J�|��4C�q��}>�B%�\";vEǑ��+�Xr+�\n�8G�z�.�Q�y*)s��}f?�*�^��{\r��^DKC�.Q�M�|��N3l�熷��_�0e*p7���XS�/%�%�s����Ql��ܡ �aI�j�jMJ0�g���M���pIzAG��60[�{ �L�� �����~M��>�b���3/X�ec�C�R�h.���A>hpi�l� p�t�{!�����^\\�}w����PK�P���R\0Jˁdn6�Z+G�\r�\r֘����x�)�H���K�g���Ǯ\\͙b�~K��)=�:���nLW���7#\0+���O�]��ᑟ��Q���C \0��l�k�����^�k�ID��6�| �s>e��9�3��O�f0Y���Va�\$��V�N��:�H��x�.�\"���R�%�9G#ܫ�r�`/��2:|ג�4Q�g<�F6���GH�#��/'�r�:�A6] �rB�ź�T����X��9�U끯�@��s˓AG�;�bt�(�����vF;�{(trݵv����+���·<G����1@gv 5�����x>�a�8�� ��k�L��1���5[�o�����{|����f�{oD=�,i�[�u� ��Y�4�io�����;?��\r񾦥����G@`q\r/\$�߷c�f��z�~g�~C�% �\0�6!�a�;�9�\$����DC0\"LDL�`���l���% �\"/|#�^���q�zQK�i�@2&�Rǫ�υ&�,h{e��#���e���)�0TLL�x����������J�� �d�\n&�N��ү���z�����B��Nf�n�N(�N�D�\n\r�bЦ��g7�ry] ���n�'0��l6D�����#Ư���b\"��t7\r���k��^ت��Ԣ\rdք�s~#�pJ��/œ\"�g)�#ư\"\":@b:ANs�N����J1,�q2��(Q)�,�6Jz7�\\.*�#�(��p��� �L��&L�%4Tp# ��٧��0��>�P����1O �@�q�L���9#�0-ұ����\r�)�#-�g�~/t�&8�J�Q�~Q��8\\��,%F�\"�<�Nث�NwCf:�ɰ� ϖ�p����\"��*-Ѻ�nj�B>m��;r:f�#��kd�/�#�B>2B9��8�3!кb��l��\rƞ\ndc1�����(P��I\$c�X�K&�y\$b��.����� iѹO\r)Q4G�Ux\r�,��ѱ*���R����% (�u+�O--���������Ib� ĪF�n6���B�2��G\"dx1o\"�)0r���d\r �B�-R2,'��RJ�`bb�g�f��� 6p� SI\$�<#�P sD��-4�>Gsc5P����׆|���\0�j�e3��b_\ņ S�#Ӕ ��/9N�f \r�V h `�M����2��^�j �6;\"z�@��)⅀@\n���ZԎ�� �I9�Z#,,��#�\0��i:�I@\"8��#2K���L�#ъ� �#2��p �+��8�4׀�,b�/e`8�vc����B��3�*�4896�����r+�g�8ń?�m\0��\n\\Q��A��֤hL�\n ��llϯ�{�r��s �u�\n��x��\0�����B���h`\"�PS�L�*��ǀ�L�2d��+\r�rm6\$��J�c�BO��of9��B4�m\0��+4D�:|�(s J��&Ԧ%�1K�v��F����\r� ��V�=��-T�Dv���zJ`�w\0�J�BTT�@C����CU�G�ôj�ג|\"�� k`I��\n2)����?��";break;case"ms":$f="A7 \"���t4��BQp�� 9���S �@n0�Mb4d� 3�d&�p(�=G#�i��s4�N����n3� ���0r5����h Nd))W�F��SQ��%���h5\r��Q��s7�Pca�T4� f�\$RH\n*���(1��A7[�0!��i9�`J��Xe6��鱤@k2�!�)��Bɝ/���B k4���C%�A�4�Js.g��@�� �œ��oF�6�sB�������e9NyC J|y�`J#h(�G�uH�>�T�k7������r��\"����:7�Nqs|[�8z,��c�����*��<�⌤h���7���)�Z���\"��íBR|� ���3��P�7��z�0��Z��%� ��� p����\n����,X�0�P��>�c�x@�I2[�'I�(��ɂ�ĤҀ䌸�; \n*��0\"sz��4P�B[�(�b(�G�\n�ݠC��&\r�˒�T��l��# �Ժ���?ì(c��& †�>o��;�#��7���؃@�@X��9 �0z\r��8a�^��\\�Q�s�=�8^��%Z9 �xD��k���#3ޖ� Hx�!�J(\r+lf�̃\n\n�(H;�5�C��᠗T`��j8@�.�P�禌0�\n�T�\"!(�.x�a�z\"%��5X����r�4�5H�\\���0��u�sB3��L�2EZ\$3�!� Rw�j[8\nn�&3�p��\"B�8����(Nz_F%�p��<-�ۣ)�QFK�B�)�\"`ߨ R`�0+���ǹC�?_0�0��ȣ������z������bγ��\0�C�\"��g!G����t�M�C��4��d?F (��'#x�3-�2KC2�2)y\n��� �N�76�C��Δ j�#sBr��uza�K�N3��+{�x��R�����7b�)���#@\\6p^�7OÓ\n�ǎl��(ާg�3�`aN�t&�t�PI�H3 |�DNyb�X�AW�6�[��4&�X�f�U�JKT�C�KV��6G������y̕�w��Z�m\$��?2w���-|ə}'c\$\\���\\+�x���X�@�,���ZW'�j,-0��0�\0ƽ�I��dm��pʞ��6O|��v}��%I؝�C1�{����ƷMڤ\r�|�ǥ��� !��#����f�|6(R\"�|�\npƭ!3�.!�.�\r�P6��X�`@@P&���SKAfSϞPB��μ�B���E0�yp�y���I�?�MR<MY��I+�Or�H��R �J N��6&4 ��F �CB�H��C\0(%1��f񎍯��ǥ����TA(�D'��R�y�3�^j��s\n<)�H��C�?H����ƹNb} g� �v�a�O��4��\0��e�\r苑�6GW+�l��O�\"��M!2�*K�hm�IN�Y6�ro̝'(jt3����J4�A<'\0� A\n���P�B`E�h�5�v*L�BM��%��q�NG�ᕺE�%����J�#��\n_Q2?\"c�iz3�!'z�v��{T�bN�h\\C��� �6�)Hs-�ͷG)m���It��`�{��1��꿒d�h��V:���c�ٖB(VYKysT+�Po�2��BnqJK���7r�[@PC�T4�����a&% �4���t, HH�7�M@_AG\\k�TEO�a�|ڄ'��{�k_ \$7��R\rL&jm� �Q��E�bU�,A�M]���M܌F��-:K�T�%��)��1���*���5,���#<��E�M����t�\0F*�\0L�N *;�+����� a`�f#\n�H�N�J2vQ�y7%��W� �\$�j ��V�:V�M�4y��!�U�6^�d�9f���46s\r��B� Ҙ^w\"\$L���4J�)��cO�>N��42����I^�M5��=x��{9��� *���K��t����rq�O=�{9r�#u9����!j��; �6ͽ�M!v�#F�9��0��L�(�<��~���q�և[_�7���d]��6��7�T����ׯ��a9����[�ݮ�A̅��oi���iT��/X�2���e�2��� ���~\"3����b���,�My:���ۤ��N���N���S�\rA~D`��;QmH@�q#���G�g?+8fɿ��6��B�M�_���9�Ծ9{򭴏;Vu�9����VuZ�����6�^&�x���Y�{�'���ú�MV~H����2&Lʯ�]��2 *� �X�����pǛ�,�:��'gD��)��|Gz��@�yU�`B�~F�}f-�}���sZ����A�]7qx�on>aڀ��|��~������G\r���<�I�~s������EK�C�HB���N��~&>��(L�FG��Cv�Ϡ�ؓ���P������F-�. �� �Z^O���f������2\0�9Ǝ��ư�/�菂:&l���`�O�%��Ӱ~f�P�em���&�2�F3\"- ���,d?p�O��0Y\n��� Y pq�2�0�\nK L\\ �lL���NvɈ\n������ �pM���O�i@搀�,�H\n;��&!���\r~!\0��b��v��Nâ}�.'���J����-�K��C��`�-��w�^5FR�1� D2�#8�E@��΍��F��\n���p\$����\\„� �ь�L�2:��8I�K��%Wj�\r��!b.�.6+�(�軧H���'b�iO�_\\\r �i��:Ll?Gm%�����&~n-�� ��Du.���\n�\"v2�/ r�O�\r��3bf��\nF�ju��g\n�Qrz�q����\$��>F��'.`¬����V��̊@����\0�D�-#�'�de\nh\n�1 #B�'���!���r�)�e#�k�(�]����0���\0�>�~q��";break;case"nl":$f="W2�N�������)�~\n��fa�O7M�s)��j5� FS���n2�X!��o0� ��p(�a<M�Sl��e� 2�t�I&���#y��+Nb)̅5!Q��q�;�9��`1 ƃQ��p9 &pQ��i3�M�`(��ɤf˔�Y;�M`����@�߰ ���\n,�ঃ �Xn7�s�����4'S���,:*R� ��5'�t)<_u�������FĜ������'5����>2��žv�t+CN��6D�Ͼ��G#��U7�~ ʘr��({S �X2'�@��m`� c��9��Ț�Oc�.N��c��(�j��*����%\n2J�c�2D�b��O[چJPʙ ���a�hl8:#�H�\$�#\"���:���:�0�1p@�, �,' NK���j���P��6��J.�|Җ*�c�8��\0ұF\"b>��o�������2��P�����%n��B���4�l3O�\0\$��x����Ԋ9�r91\r�  ��j�PA��4RCI��åL���سH�pd臎�� ��EJ��t�㽴&5r��.�8^���E����#R��3.�j�;���^0�Ѓ �\rʛ�� i\\\\�1�*:=��:�@P����Os<ͪ;�\rأ�'+î\"4�t����ȰJ��C�V��U#�p���H�(�0�CrL�Uc�UY���SL�(�0��b; #`�2�q#�v�1�K\"-'�Z��i�4��\"̗��C2��Td5��\n3�u^�#�#h�%���ފb��65��%J.�K\"7��-0�P�5CRt#��C��Ȋ|��^Z���X;�yB��I�����X\"\"��e�b�f1в-w �L�)ӌ PשiXk2���`�3l�zj*��A�� 8�_���]Y#6��#k������3ʊ*��%6�|2��R�T��ȼ��1>9`�r�Xa! �9�<�a] �y�R6vҹ\$7����8|J� ��3�X��i� i�4�`@�H2�ZET�\0u���^�����J�Q*g�@@_�y�p�I�K��&���dqP�J��C�і��Z�amu��Uz�K�r'T��J� .��3����kLK���xTPI\r^E�U #�'� �(rg� #�*up��1�oD�����Ha � Z��v��Ҟ}� 4�,�y, h��3���Q�8Q�~��\$p� �#��(��S��\$n��'�AU~�)�������?4a�Қtvh�AS6jѦ��H��so������I�7'\$잪T�p���\$h��H �AM��T���(L�҅�̧RgM�SE�ŧ��S �'�2��2^�M��ADp��\0� -w�\\ٕ�Sg�1E����vK��t�6C�@H��NN��z�b� ����QMa/&*�1?����j4�\\#I�Vʋ�V�Qt�C���&��R�QHb�P��/2�E�p \n�@\"�k� �&Z���/\r�9B��,X�A0��D�na�G\n�e\r�O�\0O\r�\0�Z(6Ï�l�2t���J���?+D�G0q�룶-􎺷n��!,T�����4\n�R[�78I�k&�d5�TH�c�Ę�\"7�5VI�;�W��[PuX�9�޺ٓ�L*�\r\$*j&���5�`(���{VE�ʩ���O^]�m��2�v�/y�Se�<8L��ET�L!Ø �},M��?=p ����C]�������{�Z�P�D���<|@S��=��u�P�U�\r��20ĎW�t\"΍E#ua���~\n�!��AEj\"W YZ P���SX�;/���H�)��8�B>� I�2!G7=�� ?8�E��X2���9����A�R��\$~}Q�+�pv%��]W3�8Y��̈e�n`���u�����6�����j �<��%U��9�OJ����E��+E5D�KVײ��-�[D��H����&�,����C@Q\0 [x�\"��JJ�����!�+��I\"#��b���|X��~f��3�3*[���RQS\$i{ 2����S|9R�ő?���N&�}�:y��<}ܱ�,x� b�U�h�kʃe����Cns��7���JC�s�d �ոL�u!͙\"���\$�N����{�6�QAp�*f�!��P��X)A8�[t�m���]�`�s�O�m���W#��1�.��ĖC9��CU������ܴsjA]��VL�۳X�M%��V���+ȣ�'��'�~b`�7Z�moǑv�;��v)�x���Q�1V,=׌a�� Rz�#�����@�L(�:����<H�I��tU�!L�a�̩\\%B�?�W�.ϯ� xԎ�����\$�����͈L��n�ؚ�ヴ2&��j��\0�\0�Pb.X���bv�#�� zXI#\$�&�(gP,�X����0:�.��C�6İ'L����SnE���&Vn�C#T\r��;쒸�<J�0�O:ɤ��\r�'�Njf�n�%P~�p��&3\nF�j�3,s�\n�\\uD�:��H������R�03 �\r/\n���&et�B>�:P���sc� ��%�\\\n�j����Q���Q%��z� l`Ʊ\r@�l��PA�i/w �8�,lą�<�1b3C'D�`�ʣ�V���\"��P���q/2C8bU@�X�h1�&i�f!f�e�G\n��5T\rЁ��G��\r%t�Z}�Tgb�\nq�m,�d \0��֑�\r�� rf\r�V\rb<\$'C���.�y�z&Bԣ�1C.�M@�n)8}�\n���pI�VeL&�\n�c�%\"8���v\"�Mh�B�#oK#��\r�0#B�#�B�'t*���� ��`��T(N�N1Qt�L~\$ E'�D� � q�8�a���j ���D��k&ٰ|���x�x�F�d��C(\$��gq^� oJ.B��-rL(��%�Y �6 �8G4���q��\r����.����*c8�BF8Q�'L.;-o�b,k��}Š�4���L�FnK*n��DT��4 �2�R҃��`�ae\n�t�#��\0�:��PRB��t)��a����V/�(T\r.†@NnW�*�h���N��`p�\r\",s��i+.��X��TJ � \0t ��@�\n`";break;case"no":$f="E9 �Q��k5�NC�P�\\33AAD����eA�\"a��t����l��\\�u6��x��A%���k����l9�!B)̅)#I̦��Zi�¨q�,�@\n FC1��l7AGCy�o9L�q��\n\$�������?6B�%#)��\n̳h�Z�r��&K�(�6�nW� �mj4`�q���e>�䶁\rKM7'�*\\^�w6^MҒa��>mv�>��t��4� ����j��� � L��w;i��y�`N-1�B9{�Sq��o;�!G+D��a:]�у!�ˢ��gY��8#Ø� �H�֍�R> O���6Lb�ͨ����)�2,��\"���8������� ɀ��=� @�CH�צּL� ��;!N��2����* �� �h\n�%#\n,�& ��@7 �|��* �)�*���R��<HR�;\r�P�\0��s��(-˖ޭ�h��2(���\r�Z�# ڶ(o��?(+�8?Ј�1��2��S������:\rx�� !\09�P X�(П ��D4&À��x�]��]��Ar�3��X_S�#���J(|6���3- �g-�x�@��z2N`P�� ��:���Եc��2��U��#�`���ˈŁB��9\r�`�9��\$<�\0HK� XC� >\n�Pˈ\r�|��\rF7��Z}��p�3 #����p���`�ȪZ5KL\0�0�*^P:`+����@�3�k2�d����W�KS��y\$��r>� �`\$2C\$�f��^�����0\"���k,���M0���H�wy]��4�\n5�C+\" �,�p�0�9^Ϙ�����w/+[\0\$���~��o=��.�}�� U��΢ ���}ǂH�F2����� ��� 5\"� �6ƪ��;{Q�x�O��*��t�͕#��U�w�l0��*��W��aJR*���ؿR��)��ߩh@�5.�L��#!�›0C��yL\$bHA�%!P45sD�uR��B����Z �0���@��:�(��R�L˒�[d�a���s�l'a��?�j�KP ����@t%\$��� Z�!M�0&ĥX����V��[+�t��X+\rb�劕�ZY��49��8 �\$!P�!^Y a�I�`ҚxN�Y�?������a�tm!Н�b0NvGF�ɞ���0��feI-r���1wT�* \"� C2^Q�UT=p��K\\�S᠙I����c8�4��4a˙LTk� 'R�0P��\$�\\H��@P�\r�k�AE1I�(\n\\� �ih��8`oQ��\r.`2�90��Q��@�r���k�K�֩g���^LL��l����\$Szf���C�P[DC\$�\$�����Q�]�*�O��/Aa��;��t j��UȀ �H4�|�:�p\\��i�: �@� ��i���V^\n���kI2�[�Z\$��t�(D_��7�pH�@�d��&䈒Jx@B�n��W��J��PFi�δ�])b��)����G)�sD2�(ι��ЂxNT(@�+��A\"���f�O�=7/�p��Zm �.��\"���[ʛ�0��h\"J3\$v�ܑtn�+\0����)�X��tCT��\$a��\$�����]+���)7‚�I�\n��^��t|WCJTJ����]�КSRb��O\$����<�����֎~`LP�U�C��nu�Z�d�B!�o��?��bY�!R�� ����]��*`�R\\La-t\r����D�;^ ����3�;gA'\$��ؑqKxT-/(���l�jD��9'� G\n[X/�핟i@Y(RTq�y;T��y�A���Yp�BH���8�y�Q�=�@ː�>�����\0/*� �F��i� s�*0� pO j�F�Li�pr!1(�6ͥ�� �ZsH��&u��� �72�O�8z��<�Y�8t���L��]�������ꭌD�T�7!�C����!IP\$������fݜ�N��k!�1� �)3/���\n�y\n����O��,����K��{�A�ކv��KB�b�옹8\0��9 3ы�-\\z�\r�GՓ��1n���E�ť\"�-�\"y�x��M�5#�>-^�С����yg4 5���Nd^-H\nZشo�¿�\"f/��\r!����P�e\r #~�LßS:�_�B.���R�:���!�j�d?d%����FC\\1���IrT�ׄ��\\��t�'x>e2�SLa\"G�����A�d?��]���c\0�?���W���v�ߛ��;�bS��~b�;fMX��Ơ\r:� \0�T�8����D��g���D �\$x�_t�3��\r���KY7O�ȿ0���y�}>9w��cʳh��4�T���_v�`eUr �y\$��L-��O���ۏ�\rʭS�0i#�d�'�DwO�)������&z�o�-�v��^���e\0����T^<5+i��2�D �p:��`6�lQ�r������H̩ ��l��hO��S�����ID_�\r�Fd��ݤ`�\\\r��'�.A��e�������g l���p�(pP�|\$�l�\$� ��\r� �~b�t�<��M��0��\r��B�]~b�)�j�pF�\rqgM�� �>��9H�1?Q(K(bе�*Ei� j�Be�9��b��8�e�V*N?�}�A0�lh�,�:�N3�0\0�Fƾ�ʪD���zMIні�� l\0�3,� .ꄝI�sC��B�A�tSf���R���0���Ȼ�*(d%z f\$`�d�\"�d����d�:�!J�1�ըH��\0���D`�`�A\"�� �M4��CX�ʹ.�ā�&ZK&\n��r���\r�<%1����tnF�y%\n����o�ܨ.gP6P}�~�ŀC��Q�\0#��N�#�\"lh��>߮°��Ad^�E�6��0)����b����ˋ�0l�c\\�S�H��s�q,B1,��\$�q�~6+���0���-j�5�3�s/˛-�D&c\"�.G,,��\\`���J|#2n0\0��.��2�0�m3-�]��\\K���fq3 - c�ڷ n\ng\n!t@�P��?�x0� 2P����b��.&J bD�Q1�F���\n�-iF�n\"��";break;case"pl":$f="C=D�)��eb��)��e7�BQp�� 9���s�����\r&����yb������ob�\$Gs(�M0��g�i��n0�!�Sa�`�b!�29)�V%9��� �Y 4���I��0��cA��n8��X1�b2���i�<\n!Gj�C\r��6\"�'C��D7� 8k��@r2юFF��6�Վ���Z�B ��.�j4� �U��i�'\n���v7v;=��SF7&�A�<�؉����r���Z��p��k'��z\n*�κ\0Q+�5Ə&(y���7�����r7���C\r��0�c+D7��`�:# �����\09���ȩ�{�<e��m(�2��Z��Nx��! t*\n����-򴇫�P�ȠϢ�*#� �j3<�� P�:��;�=C�;���#�\0/J�9I����B8�7�#��0���6@J�@���\0�4E���9N.8���Ø�7�)����@P���mc���B�N�Oc ����\$@ H޼ 2�D�9#Cv6\r�;�=9nhº�k�Y\0�cUJ ���?:4p+�<C�9A�1����3�\n �@:\rx�^�p|\"Ʌ�\0x�� ���C@�:�t��� 5�������|9��^*�^�7�p������7�x�*cx�0�4ܳ1�[����`-.�J�hf\$�T���b�%J'>� � ���,J�:2��3:9�l58Y�j�猨� cx�\$(�{�L���B\r���#p��I.]^(��F6��\"�xZbë�ӭ�\n9W�%=b,X3����\r��)��(��q\n1����:0�H��0��0�R\0�|��'�:��%0�B���������5�k�@B��&P8�������X� �M��Ow� �����:v�܌y\r迹��S�80�h�� Q㤅Ih@P�6�|`��}>_����eKC���È^��������:`(6&#�AH9 Ma�3\$>M��yT\n��#D�IY-�N�C*�>�x0�V:���An���2�Ε��9`��`�\n�e�o�4A�g!�.И�B�Y\nԉ SP�+,��\r!�8�Pq��耨a����¤�PKf��:`�C�� �X;�\"�Ȁ aL)`\\�E���6�2RP��A�:��^\\�C݂J,:�V�� '�<����I#`�ρ\rD\$��'��<7����L�oB�ek-���\n�\"ƌ��2�X96QJ����=��JpMQ��/\"Ila��̔�������'DJ��� 1�k��V��[�q�Uκe �]��6/�D�|^����КɄ\rR�(��p���0��.T�}G��Lb�A aA�������� ɬ1LD�)�(@�(��M���X���'„C`l\$��)�Y�a �:%~�C4��*�+R��j�PsT� ��V�]�`s3�R\"W��P\n��t���UQ2(d��(!�^LI�vp����S@���@J�V'@�=@Ú4�\r�'b��Q\\�-4d-4\$0���0 ��,�� F�i���>QX�cHi�d��0�a\"��%(�A �;p���\$��9�/��-�.sӉ6 D ^��P���(Ց�ğr� ���T�O�i5�95� �j�,>e̓�q^c�+w\0007�%\\&Js�{U�� M1��:6�d7[@@p0iTDv����H���TЪ��d(!0��\0;��\0R��J2�?��0T��y��9��b�\r��%�z�Gj?3X�;�P[�\n���I �uS�k#�Ӑ cj��2�2wo�Fi�'Jg>��[q� ǵ�6Ãl0�\$��v\r�Pt��Їy��.j牒f�(,�I�΂#D���կP�\n�)��^K��/����SE`��D��L�x��ƔZY�)��C oX����[��|0�d+��� �uSRCQP\$��j� d�7����|ke\r�� fe�̞����C\\�0ID(�k`&�Ҕ��LW����ٟm��Q��<w��I�?������\\�c������H�8�\$V���x��+ptn�(����K�2�lX��1N����{ka�����>)x��F�m�\"�HR.2U6�\0�V�4��9#SP[[r�&*�&C��x�eH�\$��\\_P !P*�ƶ%�ݎ��=EBo�T��:�>H�5�y�2�\$όy�BA�vc'�M�^\$��u{\$[-����kې�5�=#����W��a�a����?k�/j2q?�#���2|��&Iw����,��K;�|��B�%�0����W��л�;i��|-�j񳮻�&� �+�z�=��� �/��gPG��XZ����5�_X���.�#oZ��<ؑ�(��/MXg�����L�Cv�� =��d\0ĭ�2���aI�5H\$(�M\0@�P�L�\"JF�K�0c�� ��;�Te��aC�#�R����>�pBJf\$�|��*&�:BD�ې@@h8�\r�(0mB��0H� �F�w.K���Pt߰���0y��ۂ��̞um�6L��F�ƶ�!6Ʉ�\"�<&ԠD8*\$\n^8CN��\rEx9&�ʬ�A��4�`\n��(�|����w �L�缳�PG���h��\r�2 F˧4\$�\n� ~�;Pk�/���ǬЈyQ���懰{�Zp�`�S10��W �o�N\ng�Ak0��MM�z�{��� uq�����\r�쵮fb�{�Y���Of�o�o��h�1�`i� /z�fX�bX��� ��1��M�HhLX��`�1��9���.. J�qo�LŲ 1�Y�]\n��C*ጠ:.dT �o��()B�\$�\$DV�D�tc�-e�Ab%��F@�%�8�p�\$X<�l��Z?%2����jPl)G�@E�D� ���\"� 0� �G'�F�Fώ�5�A���>��������QI�Sm�F:�,k-p�=��\n���&7.\r�d��i�Q%rؾ\r .x�(� dE�13� .�����S %�0y�䍳2;�JJrf�%��=C�8�� �@/1�\$ǀʧ�d�.�1��AmD(�Q��S�Ni7�}���.�\0֖ҴcIS9\0�T��}��:�;2�:��d ���u%�2\"hj�_-r 8�\rs�4��),�>�=r�8��2�?�;�3��@�G��\"s�8QA1�\"��7-��#C<ӽ@�̂.C*tApMCC��m r�BN5D-�\"s�D�.�P�.y�\\'�D �0{ g�|bGASA�CN�Hb���D��Gn�c�S�� )�e�u\"�7Q�{C;&D� �H3t����E��D(SF21ª�L��4p7M4������3o�0�t���c1�MK��+� �L�/\"e������!�%N��L@�`�*�>���sJ\$��Ð)ú),X1,R���(��\$�6)B�/���t\n���ZmP�%!����.��� �W��W����t��-0h]WƸu%:��@�e,# ��#��b�~&/B�N��T'I\$45�P\$���SӊrD.;��sH!ET��XX�\"5_ k3MR?��k#�=�:9��C�߂��2 @ޏBc�+b����Z�/�cV%X�0(�h�62��GM\" v#R�p�aY2�f#R���,ct�#�n��YVaȪ~%|S��\rp�T����V�.Pcne�G thʼc �x��O�n(/�2��M��k��0�����pH�3��Q*�-�bɘ�T��H�d�C� S1DӶ�3�6i�in�?\"�R���-@�{\0��@�%�";break;case"pt":$f="T2�D��r:OF�(J.��0Q9��7�j���s9�էc)�@e7�&��2f4��SI��. &� ��6��'�I�2d��fsX�l@%9��jT�l 7E�&Z!�8���h5\r��Q��z4��F��i7M�ZԞ� � &))��8&�̆���X\n\$��py��1~4נ\"���^�� &��a�V#' ��ٞ2��H���d0�vf�����β�����K\$�Sy��x��`�\\[\rOZ��x���N�-�&�����gM�[�<��7�ES�<�n5���st��I��ܰl0�)\r�T:\"m�<�#�0�;��\"p(.�\0��C#�&���/�K\$a��R����`@5(L�4�cȚ )�ҏ6Q�`7\r*Cd8\$�����jC��Cj��P��r!/\n�\nN��㌯���%r�2���\\��B��C3R�k�\$� ���1-�[�\r@�Ą� �T���T\$A#�2J�D'ҽ@PҀ��J�0�������2t� ��j���|�A���A�ƃ\$:�C;�#�~:ְ�A\nC X� �Ό��D4���9�Ax^;ہtmU\r�8\\� �zP���2��(��@� ˢx繡�^0���������S3�>�9M��b��ılk��+�� �&8J�9a�p�7��̺϶�P��HpΊ� @1(H����bcx�:�1�=�LNt���p����r2 ؏���k��2�c��-�ܿ���Lj��f�@ӱ�(��� xk8�cf�V\r�{���L��F�;b�9���U!)�v���kg9�Bƌ[ؓW�z&�\r�x7)\0�(��S�C;�����[AC��m(u8��9�o����]�r\"����Pe B��SZ4����( #l�8�(����V�׬(_u�%\"OO{߁L�I(j�3Fҥ�8�3 �]œ ���2i�*\r�zQ���؇0�Ձu.�Ie�(\0C8a/ ���E��((`����J\0C\naH#A@�P�YH��M���K׳V%����W�C�2�%��ps�W̛��N~\r��%�y]*��A�[Q2IV,�L��P@����ʗ��_�����MQ�aYh=\r!�ا5��4�CŌ�Щ~��u ,ŝ��Z�em�վ��\n�\\��s�蝗j�y����x��x I��7�ך H�؞���N �\$���BH@�R�9���d����XM��yG�s. !�;D(��4\n�ka�}Rq������jE��hF)̔ �@hD/M�O+B�H\n5��d\n\n�)\$�y���G�\$\r�����<�#�׆s�GU��7����3�u �IǑ�� � ) \$�(�3��Q�(% ��c�q#��\$TW1�HP� �6�N�!�ɦZ��\$M\"H(,���\\���ney\rb�D�?���������eB�<)�EyI��uu��3�g9V�] �ԅ��|��MA 4����ge�&9���:d�ESy��.aI@ލ��b.�y�!����p �Ru��\\Q^|���Ƣ�\"H�Y��\$�ɅVj\r�Qrf�;\0���\0U\n �@�k��D�0\"�e4a��g��� `�Rl��\\�xpm\r�ŵ��KM`�e�0�@�JV ���Y�#x��i qPY��s�Т����^�/=o�wF6���Z��\$Q����:yb�8�7h\n��3(D�̾#R\0PV �x��\0u&M�V���97K��e@'�\"�Z�F��� �F⨎39\r����c �ȠSR)}���0�� �).�k����4���(^�.%A�;�3��Y�'X��1� �7v&8��,Ю-qu���(���\\�Y�l�X�;D��)=��8*g* ��{��Cp)d�9�\$��ɏi�r+�ܗ&׃�\\7SD��D��,KR\nH�[P�BH\r̺���Q�py�@���2^kڲj�����2z\r�͗l�A�n�Jeq��HҲ�A��D 3&7^ �K9�[ �m\\/�~��[?nm�fEg\n!�XՒ�M��a8f�Ki*@�I��m��0���oV�f�j�������I�j<�prp����pk��)\$ա�1�,�����P��R�n}kɸ@Dd�(�&U �-q\\֗��Co=!���rS4~�M��DEA��co᠛���Bz�Eը��0c�)�V�O&n�hI��>���m�f\"�aWe|��N��/h=��c��ۘ�����\"W�n+�7ِd��K�tAF�/C���!6 ��܂LtZ�>~�O���9���S:E36oA^�n��:��U/�-�\n8��\r�ߥ������w�\"4�g Bb�7���&���_��ԫ�w���\"\$��o�,���/�w�h�x˟�>9�</{�q�7S�ݸ\\���܎����/�|�d�m�4+B5\r\0�fT*æ�.��o�5-������P(���a0�O��R9�v/+�Mb��+���6;�I��(�f��F�,/�jD�l�\$�� n\$gK�.^�ⶭ͜�� �P`J�M�A�\rG/�P���l�����r\n�� ���q\r �o�\r���Ϧgp%�(0C�Ԏ�����(��������\"[�L.MR��h�Dk�\"(�p�-��Tb2�)(�Ì��b(��0�-A��O��1D:�T��F�qvK\$lNR�j͊-EǮCQp;��G�n#�k\$2P���Q�aTh�W�&�q����_���p�J�0�� ��%b)\"�O���{qQ�g�\n.��Ѣ[\rr�Yc�[����O ��!r'\"g�iC��g^M��� �#D��'>yE\$2@�0��ɀދ�r�Jb��'�f���������pm�6O,�Ijf��e����/o<1�hX#7���N��x�h<@�j�\r&�HD���^B3����N�@���E�,\r�<A���b\n���qF�1fT�O��k0�(T�0��S\n��ޛ�#�xN�����\"%w ��1���v��!R3\$�ȭ��\rrE�� ���ūe��x�� �^<�(H̡tj⊽�����K ��c��� @��1���N6S�CB�'o�QC ~��6P<0�@j(�אJ{,�:D��;:�|5��z�\0��UR�B��<k!\r&�6&�L��x��D�����τ�'�p˞QЀ ��]#�#\$��:�M�\"�\"m�B����N/\$�1�4.�T�R�S�u �<��O�`����r7\0����* s��M:e (p&t@�:`";break;case"pt-br":$f="V7��j���m̧(1��? E�30��\n'0�f�\rR 8�g6��e6 �㱤�rG%����o��i��h�Xj���2L�SI�p� 6�N��Lv>%9��\$\\�n 7F��Z)�\r9���h5\r��Q��z4��F��i7M����� &)A��9\"�*R�Q\$�s��NXH��f��F[���\"��M�Q��'�S���f��s���!�\r4g฽�䧂�f���L�o7T��Y|�%�7RA\\�i�A��_f�������DIA��\$���QT�*��f�y�ܕM8䜈���;�Kn؎��v���9���Ȝ� �@35�����z7��ȃ2�k�\nں��R��4 Ȇ0��X\r) q����\$ Ct9����#%�څ�O\\ �(�v!0R�\nC,r�+��/�؈ϸ�򰘦��ڄ\\55��X漲�ȘϱH��> �ئ���K6�I% ��mp!A\$J\"+�+3b`޿��x䞍�Z #\"�P�Sp�A�@�A�ƅ\$oH@0Đ0�H�ꒀ:�0�G\n�C X���ь��D4���9�Ax^;�tqS�ar�3��X^8Bv ��J�|��n��3/����x�8�h�<:�ꒋ�����-�:�� ؃SZ�#xV�4�>'\r���Ҽ�Ю���J.��\0�<��NI�e\r�!��`��lj_1�2��� m�裂\r���j�ƽ=������2э���2�6fa��V]R�:ƴ��\r8DŽ2���!a\0؀�@P�b�L�s���S��Oj�F��\n\$���Ѓ�b:�ؔ�S{�9�i�oP*���&L[�>�c( �h[�HD�s�\\��9���2��Lv\"�|G�tM'�l)��6#���\$���(\"�7եɇƁU�C��\" �vw1}_��͵Mb^�\r�0�60+�0�I�ޠ���Bˎ��n9��^�M�;�� #?��qd��`PP�I9\n��5��@˜R˸;7�RAp RĴ����Y//&Ļ3��y�)�dƅ\$�\$o`Q�?F����8 T�p9,v�eʣiY&�f,���I0'H3�U�I�,���#�±ЂC����v� Q�����\0��c�b�B�X�ECF��Bʈ�=h�5�����|�\ro�ܸC�(N�At.��\r�&���8���\n%�������8���pf\"�+G��0S�k��2p`�������W��P��{% !�4��h��]�*�HO�tG'D��g�hFi� 0�Q�D�A5�@@PA�\nm���\nIQfFfH9�BI�b6:\n�1��rH\r��6̕X�����?�x��DR �p�p�AQC� 9\n'Rf/�P�!F�S\$�#�lޒ&����2L�7&�FIAH�y5h�� �,J��7��d6i�D;�s��6ֈ\$��\\��2�\0�¢�1JH��u(:V;/�%��Hq18m�S:Y �}44eL�7�~�b�V�t�=�O� �\r��[�b��LCs��@���'̔�+ -Oϝ7D���\\I�1�'�2*�v����xm�8P�T��@�-�# �\\��d��Oo�@��1E#�3|'���(�!�jf�NQJ<fc-�YQ��e��\r!�%ҏez�tK�\"P�,U(��տ�Hh�J��qY|�'�z��\"�!�ߗF�S�f�s���4��C\$�}�`#��[#�`H�n�਩G��ja)�8dh\nSO���r��J¤�Q���C\r 'F,Ƨ����0x0��Yꗕ%�3oU�+��C�9��2f�t�aC(wAXϖ,fcb;b4솕h�Xi%˹}���z�)�pNuL\\��}��;���À�I�} �09v�rΩ�/���O�j0�\n�z�2�7�t7�#� ;@\"��_�`�Ҥ\n�P �0�A}Ao~�*�aA�#����X/-,�ѱ�Nʙ.�O�������6>XYc��I�ɐf=�P\0�a���d�F(��݃��2D�{M���6F&�e8�����y9ep�c�7PJv�cۊᣠ�Z6����->�`�7~����~ֹ��̇ �jd�#DH����T���v�x�st\\t��3��V�+hH��HG\n�/�����R0�1b�� �\\)��B��ۺLqH;�,�04L�87�1(���0ř}h��Ƽ3�@LO������ऍ��'\r����=���,��S�1���ׅ�<fV@N�¸�\$��*{�z������18a�1�Y�d%2��r���EI�����\\��95��iÄ�\"�� ���aS����_b�Z�����q�� �����P�zQ���up\n Ud6�'ޫ�xԥ������~���?�?����{��=%�v�<����+����\"(&~�k����x?���u��͎��\"x2��ң\0���ۨ4N�4�n�N�ڰ�͒�P���7\r��I��� 6 �K8J�����L�K4�ȫ\0oh�J�l���V�bfco�����v���E\$\$�<.^�b� �z\r�G)J0�\\DO��\"TR�_Ϝ�e%��9�8�M�\r��E����p���F�p_�v�/\$�l�?��2Jsk���? �ʌ<�o�Pi� T�q3�v�k���\n�N��2�pR�\0�Q6��\0�X��B�/*�f̼:�4TB��^h*,!Zjm (�^��H#�L�\r���BP�6��֑���Q�q����\0�Pj�r�f'L\n2HM'XCq���,�Ѻ(�`��.�@o��/����&�\r���I��I!U�\roʰ\0�����W�o ��Gq,3\r��\n��?\"�C��g9p�f�,*fl�@��L�\"�J��Lm2��s\$�V��\"�!RJ�b��]%Rp3`� �mi&�@QHG,H�KJIuĭ%2�Ir41��K��!à��r��}&W�G\0S��\r���ƽ�1\"�,�fֹ�\"d�ʒc0oX2�V*CC(ڒ�/�.���m�.#�\r�V���m,\r��]�9�4\\�Q+���' ����C�1�ܴ���Z�h�\$�\r�����k�r���-��6b�-�0�<\$DN����j�V��\"GqV�\0�K��b/3C�*lZ|\r?C�2k�ݰ�\r�Xq�N7�,��4���Rc�J�5��\n�S��F(˺6���~�'7�/�1 �fgD��?��7��Й�\0006�q��Ǝ��`4 �4��*04��5�^;�\"?���*,pB�ƣ���D?<�,�?�\0Үf�B~�+��j�o�ĹF�v�k8O`�4s���V@�DF�D��3`�0,Z2� /��3d�3)\$�2���&%����'&`�q�\r�����Gn�J�6a� ���/��";break;case"ro":$f="S:���VBl� 9�L�S������BQp���� �@p:�\$\"��c���f���L�L�#��>e�L��1p(�/���i��i�L��I�@- Nd���e9�%� ��@n��h��|�X\n FC1��l7AFsy�o9B�&�\rن�7 F԰�82`u���Z:LFSa�zE2`xHx(�n9�̹�g��I�f;���=,��f� �o��NƜ��� :n� N,�h��2YY�N�;���΁� �A�f����2�r'-K��� �!�{��:<�ٸ�\nd& g-�(��0`P�ތ�P�7\rcp�;�)��'�#� -@2\r���1À�+C�*9���Ȟ�˨ބ��:�/a6����2�ā�J�E\nℛ,Jh���Pž�#Jh����V9 #���JA(0���\r,+���ѡ9P�\"����ڐ.����/q�) ���#��x�2��lҦ�i¤/��1G4=C�c,z�i�������2���t�̬Bp���\n��0�B�1 T\n��,�7��p8&j(�IH�(���i�/ �����㒵*���#��&��û446Vz?ģ���X4<�0z\r��8a�^���\\�)���/8_I��p��xD��j�/c2����x�!�� ���Έ2���P#���U�h�̥�C�� �`WY.N4�.�\"ɍ����\rb��AN�J+��r�3�h��DcC��c~5�BT0�����ق�:�\"a+��\nC?1L�2��0ح���L�Ӣ# #Z4�C;�\\�����K��70�A°�[��Ƶ;����3�\r������E� �\r��o�zä(��\0㹎C�ƌnG9��M�\r9SW�6�wy�z�cE9Vo��D!�8Ί~�����<�����t� ���\$��:\"�o+��oVn�L ���H��z�cB���H��A�#j�D`�)= \$����¾(��2%��1C\r���.E�\n�F(ŨC�@�@s\$�!�0��\0o\rjH�>BC���<(�f��E���k � f�1�z\r�)� -0��&k���W�0 ]\r�u� D��|K�ى�X�\r��!\$-R�q�\\�>+�3���]c&F#��I�MB��o�4L��JN<0�0�5Իr�^K�{/������\r��<#�w3|��ʧ�A�Q)���xb{a�5D*��,/�29P!�19�q�Q.We�8���V\r'p-�J`��3�I����# tM+b\rA���9���?ģ�a��}R��)�!)���+,چ�\$o�F d�){1��cࠩB�����Z�܆�v�[�)�%e�6䚡G)uR@�LW��DH<6��N�HX\$�&bhM�)G#�t���Z�\njh����VH�kR��E��b2@3�\\<�\$.ZZ�4.\"u�����-A�z,���\rB��#}\"J�a\rE (�'��e�h��Hv ˔O\$��r@�U�˜혢�^A��T���%�\\BҢ- �jIM\"v���MaJ��R��9��M��rn�`F\n�@�U�l�%�bO��9���^QR!�_���KQi�f'��0�x��(L%�������L>VV\r���MXő#����,}��oD� #C9ק���}OV[I ���`AS�I�?g�W<��h�Y{n0 2UZa/ �VDp��r�u��*��+ �_n~���\$bX�Z�X2��+#y�Q��@�X��4T�Բ�E�R�\"K�H��IDb��LU��9���Â5}�r�k���:I��d�H[�� a�����^��/gl�%l\"����DŽ��Ӹe�l��8P��K��0���7NJ�OQ{�z�ɐ�xpx��D^��|OS�&Sܙ��J��KX&*Ӹ��ٱy �X��Cv�L`��8�\"� M� ��dv\\\n)�.U�b�ɡSa-o-��HI�F��\r5eלu�*aԉ� �@�BHu���� V�b �!� �F/遬ť\0^7�=q������ύp\n\n.� �&2��䄻������]3< ��P��̏ *;��p���J�����YY\\��8��/���K���1@�~�>* vG+� J&D��8¶��i�v����%�e!��\0ʉS1+}1(�_\rH3�!͛yo��B��^u�A�9a��e42q�wi������\r���HԽ�v�G�VK��j�0��W�x� �r��d�y�=fo ���|t�Ȭ�S�f����gǚ5��A�&m�A��\0P�F'�y��q� o�(�Q��0팧��F�u۳\$�c�g,�%�%�n��/v?96��ʑɴ�����c�iRA��9�C��|U6J�6\rX�-E¾�{ٝ���C�_��eKN��Zg+�O��ք��r����I��*���n��Ǹ�/t���r���(�ob��g��q���,z��z�?*���f�´��X9��ʑ�n@Ex2��0h�dc�P*�J��|g�t+Px�P��Nt�-nA�d��50�5�)p�2ˀ�j\\ǫ�:�Z�cG�X�0�?p�y`p�Ӑ�=P?�f��z����i� �#�� P�*���>M��K�b h<<����,c��]#\\\r��c�;((�\r&���( [����nU �<��\0%�V�-&��8��1�3���f�sP��{&]pf�P]Q� ���Q��P�ͮel�,�p-�RG2 O��L0�q��E�0wo}��\$Bm�per�c��1�� B �𖎜\$��\$#� ��@�;'*'�2p��:��8n��gpp-� \$� �'\rp%\"��d�1\n,#��j��`�玙-� �eC��:J�@4��\$�5&g�&�kO�&��\$P�/&�AV�� ��Aw#��҉(�%)�#L'��c2�r�)q��{%}*��+\")Rp:��,�,ij'��\rL2���8�6���].�\$}�h��no�\0!K�d����S��Q���Hr�>S,\rS0EA/����VT�M���@ľ�ͷ0�3.3DT�K1O%\n\"z\n�F�D�4��'��B��̒D��J\nz�<� ���@P�?e��(K&* ��j�9�1s� T��6W�g�b2\"lj7�g\no�1���n:�i9�ө ��5�XP �j�w���p�mJ�\"&���1�H\$r\r��&�\0@\n���Z;i �\\i`䧦����nkB�M #�|�6��4#�<\$DC��Mq4F/�&hvD�ʤ|C�3G\n��#�N1b\\�sܐ(�sf&Ɋ8\"���A(�O,�vR�Nif��U�n)F�UBN�&��U�葡K�gO�2��h�O +O�L�±�Z�o\\g�:j�)�xt�M1�. 5�7�h6�&��\"M̸D��1De��X\$�f�c���D�KF�k��'5�6;�<���oBb:DDt @�&My>\$�Ũ��� ��QF_\"��c�j��.��\$n3��7� 4��\$-�#��:��I\"@��X&���(��+ �,͊o�;����mMsB \0�@� �t\n`�";break;case"ru":$f="�I4Qb�\r��h-Z(KA{���ᙘ@s4��\$h�X4m�E�F yAg ��� ��\nQBKW2)R�A@�apz\0]NKWRi�Ay-]�!�&�� ���p�CE#���yl��\n@N'R)��\0� Nd*;AEJ�K��� �F���\$�V�&�'AA�0�@\n FC1��l7c+�&\"I�Iз��>Ĺ���K,q��ϴ�.��u�9�꠆��L���,&��NsD�M�����e!_��Z��G*�r�;i��9X��p�d����'ˌ6ky�}�V��\n�P����ػN�3\0\$�,�:)�f�(nB>�\$e�\n��mz������!0<=�����S<��lP�*�E�i�䦖�;�(P1�W�j�t�E��B��5��x�7(�9\r㒎\" #��1 #�� �x�9�h苎���*�ㄺ9��Ⱥ�\nc�\n*J� \\�iT\$��S�[�����,��D;Hdn�*˒�R-e�:hBŪ��0�S<Y1i����f���8���E<��v�;�A�S�J\n�����sA<�xh����&�:±ÕlD�9��&�� =H�X� �9�cd����7[���q\\(�: �p�4��s�V�51qcE���!�x�-�0�X�2򨑉��_!���h��K�#*����P#fB�/�8���rZ����(�f��B�6�#t�0LS\$�4MS`@0�c�w��>w0K2ܻ/��H�4\r��0�p�8NA`@j@�2���D4���9�Ax^;�p×�2�]*��}��Z��2��\r�����Ҩ�,�px�!��Ȳ<}���Z�:T�l@&.# �xd���<!G5�YZDɡ���lMʿF�v��+�X�Y;�z4.`�0�Cvb3�(�էI��y �������Ľ����i~��Kʟ�!�ʇH#\$��)�e����E5V�r=;ԣ\$���YT{];��|�!4��8�) �>)b��q���{�j�F���D���礵IR�3Ω�Y\">��#\$>���e4���o��!�-�ejȗ˪|���Å���Y�=ٟ���Q ��ݞt H�%1%-���S�%B�Mչ�]�jAd��\"m�Q���3����w :�Ҟ,�v}'��� ln��q�=s��I*ʂ�x��xLFEi�N��\$fL��t���h�X�!N��cQ��@� c� #*�ƕ���rH��`�%\\Hϙ�X&� 8���*\"7�-���C���,(�+%���1�Ug���3HHq*�X�\$d��Jd�<\$����I�!� �0\\W�Q�J>�4O\$��DD���@����XN6����%MN�q;\n)\r��F�9�M�\\��3.}��?���&2�k�ɳA��álf�N:#9���(3�����(�ϞFƻs�G���@�4�b�˜R����#�C� ��Μ�\"rIHdx%H��(�W1��^�q@R�%P�1�e.��0I���h )-28��@hL��3 �Ճ�]ᑙ��@֚�^.@�&��q*�RФ5RO�-��O��.�+�\r�Q��{�M<=d �L�S�3\"�����E\\T;')����j����A������+gm-�¶��܃sr]k�w���Ɓ�;����sE,�>��0��թ�1�����(���\0� �����S����Ȉ���1���T�9(;O�q���/��0�AI\r��\$��~\r���̻+�s����`�`o �� ���Z_[��6�cu� !�9�S�yR9'Q�u�+c���)�&'f� ����B��33&:t��y�\r D?n�X ��p��Y�c�\r���Hv\r+x3�F��\"�L���ᴝ�21\r�gAW���Ϣ�wR�X0�)S2��^�����r�͂s�nL�C!�P�����ȉ���vԣք�Qʔ���J�D;�,C�����ȕ)���*�m6Lb/�h�d �Q,;D�(\"V,#m��e\r�[mET1r���[ɔv�,�5��FL�k��0����(�\"�m����2��*{�%�3�4DU�������\\��\0֛�����*�d<��B_=%�/&��H��q\nl��բg��2�]ے�w�o=��Q�cD���y\0F\n�A`vW����C�F߂����(l��T�&�U�;/t3�ft`�h��k�M���G�3�r2'��\"C�SǦ/ ��/a�߿ȟǏG @pܦ�H}NjQ�uZ��U�DP�����f;�~��G\\s1���;iT?�D܌����O�O݂�YR�x��.�Y ��6)YP�4�\$im�%Bz�*8O��K%�,���|��ɡ_n�\0����ߦ}(ާBH�7#� ܲr��q@߁ (UIm��ou�e�]�y�َt8o����Ǥ��\\#+�_M\"e)�����a��?i�v���#ZZ�\0H���h������Z�`����e�ahd���)G�輅w �Տ���L��uN�t�i�\$�P*zP.�H�'�ꇂ�/�t,�K>�BO\$�3�\"D�ʘ��Y\n'^Z/(� D�Dl���*�L��U�/H&-��dh�Z�L/F����.Xw%7\n���P<���*����#%(� &�2���1��J��J� A)4�HA\n��X�V,O���2��(a\"X��f�`�\n�� � ��G�8�� �J2�H�l\$�.�B�X�FP��� �\"G��y�T��@z\r�Aq��_g�%��ۧv�E�az��n|�0 ���0a�G��q|<q����+�����b�.'�E����܇O��!�،�nF�1�^�j�#��h�,h���{ N�(�-�\$I\$�:�j�=��\$�z��0��FF�ڭC�%�I&2 !Q�C�T����I�(2w\rRz��W hȆm\"@��A��\\& %�\\/����e%�(��\$(\"&\"YΈR���.�!�E!�fF�?���j2��R��R���-���I.�M,g�(�>C�+�vd{\\�. )��{�އ�O̸zJ�`P�!�'\0�>3�J�ChN�o@0o5*�.w�R�+�F�c5��eDP���u�.��bN�����X.��vUZ��Jc�/�.���9,v��*�����:'�:c{:������6b6����G��U%Z�S����~�^,��'�Ө\0t(�� �\"04b���C[@p�<�d�\$�Ϡa��b-8\$/��= �w����G�UM�C������D4��/ Ao �F*ro��l;�6t�bb�n�ɱ���d3*2(9'��td��iH��T@�f���Ft9�1��6EF�H�9�KI?I���KF6�c6aCL�a �L\0*�X��3�&��Hҿ&q28'6\$�&S|AԬ=t�\"t���F�EN/ =q�P��� ��7�SJɥP�I'�N�gN�Q͹R��'�j�EkF��S2%Sa|�����\r�.��XR�p*1�VB�V� �NƧ�wM��U�'��\r�qXԙ�@�\"�D�jBb��;H�.O���=�Ut���Z�\n�&&�g9Y���rGg�S\"F�/\n��\$�[�U\$k*),��1[+ c��:�P��;VdAVՋ\r�H�N~���\rGc9H/��G�,��W3s�G4I�SSRq&�d��eC]S�6%Z�ee.���mIԕV4��Iggc8�p��ZY��g�G6���Ki�we�_e�jV�8�kN��/4�f� 2�ZV�i6�I��<6�k�U<� ��|{�V(A\rn�BBЇO6�%i.�Q�'��SG/�O�\$��=f�s6wOpyqv�P��;W#9w&@w+ZV�GV�;2�� �S��P�d�I����v ;Hcv�A�qR�c�XT mc(���tU@AW�t83Q �\0�AUyi�{M�IC�L�Oy�u��7�=סzB�{�!KJ����W�R�7K4�u.�tW��ח}#�mV�#�zV��\"o~�h�׿my�݀?=�zu��<I0#�x��N�/tv�{v�w3_�p�3��(��W���\"��p�!u�~4;W�QxV-5�hۃ�'/�0�!xW�1�xe,T�t�%iLm���u:�W�Z�;��� �[e�N��7�}x��W<������-,Pcu�x+�Eȓ4sz+sNx�rU)OW40a�UU����wv��S���Qyp9\n���<.��\$c�D�Q�� +H�� 0�4y:�]�� �]��]\$�P�YY�aUC�)����4ir\r�VR������ºޡ>�e>w���اоb�YJE�&R�\r[']^�AX���LS@�\n��0�*�]�q+��Q��(˝HM��/y�Z�\"&jD`y�`D;�9lx��r25�/�E\r(��\$���5��ciI�d|�7�pL�VO4��NZ+\nD0������.j����\\�\n�ٗ����A{��D��0��+(��\n�IPI6��s�e��Z�9r��*aX�:��_]*��}:P�ݥYJ�Y bh~cL.��c�;�� �E��=�z&���q�#c�s�����zC��;z��̮3������Z�z�=EY����y~�.//���q=3�9I=�=����@��\"+��_��\0���TC\n�Pz��>�t�k�GXvr&:�� �y��\0�0o�8�Z(��[{���b��� 2gde�d:4[������RA�6t����p�/�� X�;��B��}�̀������� &x8�w��<�SJ�_x�a�@";break;case"sk":$f="N0��FP�% ���(��]��(a�@n2�\r�C ��l7��&�����������P�\r�h���l2������5��rxdB\$r:�\rFQ\0��B���18���-9���H�0��cA��n8��)���D�&sL�b\nb�M&}0�a1g�̤�k0��2pQZ@�_bԷ���0 �_0��ɾ�h��\r�Y�83�Nb���p�/ƃN��b�a��aWw�M\r�+o;I���Cv��\0��!����F\"<�lb�Xj�v&�g��0��<���zn5������9\"iH�0��� �{T���ףC�8@Ø�H�\0oڞ>��d� �z�=\n�1�H�5�����*��j�+�P�2��`�2�����I��5�eKX<��b��6 P��+P�,�@�P�����)��`�2��h�:32�j�'�A�m˜�Nh��Cp�4���R- I��'\ncʳ\$��s���@P��HEl���P��\$��-��64�ba?����*NMM%4�-N���P�2\r���A0[Gp�' #~9��p��ה��)���:\r ��B�D.9 �`@\"� �3��:����x�w���r�Ar&3���_l���^)��ډ���̉�c�\0007�x�%\"��)9U�*Џ���<3`�5������Cs��\r ���V�#n�(�'9 �4ݍr�����R���5�N�� ���h:Z;!á�](�\n�`%�)�BP�\"�քLV9 �(�+\\c�6A�p� bC�(�ë�1֢ϴ ����%���CX����z�P�d\\22@P��+C��&%֜����Y>9�׾J���65���9�c܇\n\"e���������<�m�xɽYk�����Rc�J�vE�b]��T�^��/]�ۭ�p����1�J�H��b(��>~�~���e� U �!{~���C����7\"gJI)��3`خ�HO ��P��&y!=a�<���V1�a���@]��M�t0�p�]A0h�ͱ�PP�I) �e*Bt/Ma�' �!�0��p �GX��2��Ðmm��Fr`�T�UZ��CeT��;-��f��)\n������J�V���-�X��K�\"��.%���\"�\$�����XyQ�L-��w�\n�V1l���h��U�ᄔ��*E��h%\\8�ІV��m�s��ֻWxw^*�]/U�Cr� �?���_Pp'\r�D�䚖�� ����\n���k�)dHȾ�I�J�I�� �Q �7')&5���XR� Iմ(���jh!�3\")<#���-%�k'1M@�1�v�^�b22�쾙�xOhd�\0'\"�H���� ��b���dB'!� 1zt�pz���0@\n\nt9A\r@���!�[d4��2����\rY�A�Ն��a�<@�nI�jH�\na#��!wn��Ɯq\0���^L`�f�HL�N(J��!h� �;���C�8���L�5 ����*h-̬�\0̀�s��!�2@��BB��\r;�xI�I ((���/�����hK��'J*���Hڿ)(�30�qDhe\rU�2�k�\n��A���� E�7ka��L1DX#@�pCsA%ϲ���k�?Ĥ!�P���k'�B��&r �ɢ`('��@B�D!P\"�K�(L��ӐC�Tv8�`t(IfA%s��ХP��E��RDx�üx�Cf����[FĄ�\n<rn̢[1��9�AB����T( g>�M�Js �d�\n�9�2x���=@���:ɧ�B�>Z�z�t��l\$��bLi��X����@P ]\0R�CD��N�j�JU��Ps6r �+�U&�3�vJ�*`apiI�>�j���7D��!��`ɱ�J��\$�=��'P!��)��\\Ԑop��B��n�WI�L����Ƴ �\0005S4\\O�f��xt�;��u�װF��<�HrIʏb͟�T��vMz�'tci1Y5�(#0�����%dI8*��’�~.���M��� *V�P*���H.WłeH�a���0_�Yh ��4s2�C[L30�q�.PZ�<n����#*��o'X��vh�!�(`\\y�=��1UnS� k)<� � ����mP��;�I�7>����rCѪ�(�<�+�R^ha�|��=A�f�V� �����i,@h�'�s~ې`i�}���ջGp�ᠦ��{:���&1�+���\r ��R����E:�!�/���\$�l�2B��#*E9vz�D���\n@4���J��F�D- b�b���20�F5z\n iY� �\$�����M�H�#w*a�/�9a�𦲃�Y��&�d<��]��V¸�*gr�w�U\$���3��ˎɻ�b�5hm^��,#l������\\(�����mZ�����\0�r��~��I� 7�\r���媼�-�~I��@\0�F\" \nBqk.9jB�H\$r��\r�� � ��7@�f@��\$I���:航d��(�I�b� �f@��&� j^ �A\0SgJ@g�yP�P��% G� p\0��J�B`ǐ� ��D\"�p�0� �\r'�Q��\0M- �\nm= �\r����{����=#�cCm� �E �&Ĩ.�Z����F�戬��o�t\$��q*&.����.�n��Ι\r�q%�J1R����o\n��^``켍��+�C����l������q���1��ZE1��]\r�|�e�`�\rFjIB,�lj`�G�����*�fI�6&j���&f��}�s,�̂�j\\�ˆqkj�m���Y�6wP�IQ �B,�q�F²��O��ٍ|Sj'[\0�r�,�Æ*+1�j�R�f�v���&�L�rjeRb����z�\\�Rx:��(B�\r�q\0��ݣ�)��g2����q�`��9〼Ҟ(c&z��(��*Lj /�@��keEƮ bL�!�R�T�Bu�:JHmqeQI)M+'0%/�#����0��1��mh8Ho`�fS\"�3l���2gO2��~go3/0|�Ji�LI`�Q��'�W� � �E�\\u�1ҵsl'3q*QYǚy�S7�_3r�9d5�}4��)p�&�� Q�7J[(�x�U4#�-�.m�&�)��U��Wq������̟1�2�����;�]>�\"J�*��� �R�.'��6Q�@�!}rg;M�Ht�@�z4�\"m�1\"�1(r�zI�1�ڃ��-�h�X��F>P2�ӔP@���5�J�/ F-�o b@�ch�~\r��Q��D�+E�2\$^��B9 �'�G �M��`ց���έ!Z8‚[�@\"m8:D~Dn�2BRˣ�\n�0����Z�Eb6<�ت˶Xp�Q|��El�O�%\"q{��EbCPƞ�.���0~�**�B#�>����& �� Ĝ\n�T�FI�^�2R��J)#dh�CP~��2\$G\".wU#�#� ��h&m�J�|/��j2s\$�4JdJ��gsR�������7\$�Ȣ�6p\r�ʋ�\r���+���06n�Y\"u���cP\$բp5c@'�܈`�W-C5�\$�X��aT`�&+\"�S��D�:�V\n�5* P�#bR ��\n6W#T5�t�FX���|u��(q\0�&pie#\ndTM��9#|uT1��[B�Uu���] kuXp��Ug�[-���6��5�D�gf\n�vC��ĸ!�� \0t ��@�\n`";break;case"sl":$f="S:D��ib#L&�H�% ���(�6�����l7�WƓ��@d0�\r�Y�]0���XI�� ��\r&�y��'��̲��%9���J �nn��S鉆^  #!��j6� �!��n7��F�9�<l�I����/*�L��QZ�v���c���c��M�Q��3���g#N\0�e3�Nb P��p�@s��Nn�b���f��.������Pl5MB�z 67Q�����fn�_�T9�n3��'�Q�������(�p�]/�Sq��w�NG(�.St0��FC~k#?9��)���9���ȗ�`�4��c<��Mʨ ��2\$�R����%Jp@�*��^�;��1!��ֹ\r#��b� ,0�J`�:�����B�0�H`&���#��x�2���!�*���L�4A�+R��< #t7�MS��\r�{J��h�_!�\\L��LT�A(\$iz�F�(қ0��*5�R<��l|h ��J�.�����?H�~0�c5��8@��/��� ���h�\0�C\$&�`�3��:����x�a�͵\$������{�9�^)�2���246�#L��|��k�(��âZ\nx�0�I0�3�� Ĵ�h �%�O\0�ˌ�%�~.K�촉�|3}R2`+�eB����Ę��N*b�R�b��Ӑc���%C`�2�`P��B\\��c�����-�< �2��Z����6'��:�W+Ծë�1�sд2C��:N��\rj0�'N%44�+#l����&A \$h\"\r�e�E�����hz��63��(1�n��ފb��� �89��v���6.=_*�\r��*��\r��s�';nd������;\r�+��D�\0��`�����bM}ƃK���ZFl�1��3 �Ҡ���%�>Yp��[�p��LC�;O��8@�-�&�c \"�6��\$:�!@��z�BA�����b���p ]�\\�B���mh�\0r��Y���(BnC�+:�x��CyL�3ʁQ)��PcL����hcH*�Z����G�*�\\ �3b�@�,\r�Z d�Q�-ش(e�� / �Ā�՞�U�_E��\0��m �ڽW�a�u��Kr�YK07,����m�`�\$���e��t�`�/\$��С�[��3��Y�Bh0�s�Q��&ሒd��;m�f��F�*dU���Ȁz�BKB��3ER(����|.�ES�a�%�\0�^��i#�̗�\"\noO��CX�?�&�i�\r!�\n̦#`H\n\0��RGI2�v�7����\n��:�Fc0P���lҟuF��xw�Ԝ�B�d�i.&Ț� uє�2G�q�b5� RA}\"D��,E'�\$��\n���\"a�Œp҅��\r���\nZa>���MR�!��*x�=O񙂏؝ɠ��z&�@'�0�\0B��\rG^�@�CBIG]S\\��f{G��#�)M�6�D�!h,�eF� ` q!2��B` �F\n�l��D<��?��)C\"f��\$���V���hhI胮�慍C|��s�T�pl�u�L�88C�/O�Ƶ�V�i!N����Pn�\08&a@���y�4�f��\\*\\�>6&�O�&�&)f�FJ�J.�Γó��Ϻ����L��Ɇ�b��˔\r�;.�d���;�������4�B�ޥM��Rd1�H���}�\0Od�x���%\r�C\n�˜G���<v~ �)�fX@XZ1���y�c�[�[�H����ꐡ� ��vI�\0_0��F�&���^捑ng!��24��\rNM}�[lLL�0ܐ�'l�\"q/��ۑB �bq]���G�[��Ӑ\0�c�r�\\�PF[d����]��!�<�ٔx���3��8��C \0��4�����}������xD�{�6 ��0��2MFIZ��0��2�I�t��b�:HA�4(bn� �\rA��C����Z�Õ`�uֳT�� �X6�֜י{_�������j��c���#����;\\m\r�u�@��Ol��K���֛�f��g�g����6����u9�Dd�:�z�M�L�;��r�<���Cݧ�o��A��n�T��7qL����Ӽ[�q�%���\nJ��or\"��8�'�<?��%�6J��E�&�~{� �,:P�A}VO� ׿�#��,���{r�rp'm̦�2�#��L*s�\$bvc0\"�����\\�)R6�\\�.�޼H��2D{K�l�‘�5k�R�������+=.�uCa����&T�'���#�b��Yv�\$\n�+�U�:���~l;��v��Zri��d� �\0�WTh�\$�-\"���Hr�5�霓�э~_�\$���.��]��z\n����\\y��9������Zq�4 \rՕ�9�}�##�������������� ��b�\0�Pb�/k\0��ڍ���Vx\r��a|��~u\r��`��N�p��(��t���'G9 ��\0< �e`��-�Qm��-H��FذL PP��U�]��.n\0�@�ېk��0Ub��<��/-H���pN��t����ɦ��ԋ7l���,F����k!/V��\"e̥ p��D��tv�\$�hj�p6L�eFX�#�6h�C �D06BJ �.bl\$�5��9�j�̔������6�A�f�ͅn=DI�]\$W\r0���\"n��Ɇ��wfXƥ����d(�P�p�]��\0�1�S �Bb� ˭���l��}\r���q��hA�T��‡gpB��NLDg�Xf.�e�<��V��\ra\rc\r�\"HE�q���� � N��Y r� � K�߂L|&�Pg2�QS��v��\"@�j����� 0�NO� .#F`à�&`�p���ш�U%�=!�����%d&�\r\r�d`p�(ri\$ �P�u%��e�Q� R�&�3!��3�a#R�l�^,�'n� ���p޽,�N1� ��=��,��*2�*m},c�*�F���;���yq�#\$O-B�+ě,�/��'�|NcZN�\nޑ� LD'��6\"�!RF���/���TM1�氨(��=�c�S\0b)A4C5�K�o4+�3P�&e3��+ʼ��%�FL�\$�`��7f+3�w8� �B�d�ے �5��m�9�5�&/Q 9�� �pa��aI�I��k+����h�\0�7�&%����\"�IL8�@\n���Z�)�T\"�vO9M�n-@Q�z��@�Q6`�Aݐ�Ք�G*��p�#\"�0#E���1dOKb/`� \nB�S�l�=��<dN��|gN��� :-�����=C %��\r��Z��=��H��:\$�p�D ��F��.��,��Όr���\"�\"&*���J��`k~ߪL-�'��̯^wM�T#M�.3c2���\$����KCh_�nk�Bg��%@�\rt����x�C����Q��=l�9�I����+���S��G\0 ��n#�m �-�7������Z0�K��\"b�I6D2k\0�'S2k|��Ms�(RvOB��Uz̢8Gc� n";break;case"sr":$f="�J4��4P-Ak @�� 6�\r��h/`��P�\\33`��� h���E����C� �\\f�LJⰦ��e_ ���D�eh��RƂ���hQ� ��jQ����*�1a1�CV�9��%9��P u6cc�U�P��/�A�B�P�b2��a��s\$_��T���I0�.\"u�Z�H��-�0ՃAcYXZ�5�V\$Q�4�Y�iq���c9m:��M�Q��v2�\r����i;M�S9�� :q�!���:\r<��˵ɫ�x�b���x�>D�q�M��|];ٴRT�R�Ҕ=�q0�!/kV֠�N�)\nS�)��H�3��<��Ӛ�ƨ2E�H�2 ��׊�p���p@2�C��9(B#�� #��2\r�s�7���8Fr��c�f2-d⚓�E��D��N��+1�������\"��&,�n� kBր����4 �;XM���`�& �p��I�u2Q�ȧ�sֲ>�k%;+\ry�H�S�I6!�,��,R�ն �ƌ#Lq�NSF�l�\$��d�@�0��\0P���X@��^7V�\rq]W(��Ø�7ثZ�+-���7���X�NH�*Ъ��_>\rR�)Jt@�.-�:�*�d�2� !?W�35PhLS��N���T# � Fy8r�!ȡ\0�1�nu� �Xn1G.�4�-܂0��D�9 �`@c�@�2���D4���9�Ax^;�p�`�f3��(��㜓%���\r��� ј��X�px�!�D�3���L]Kjh�{#4T�M\0����\\��QR���Y�r����{38�'�q��6�]}ܢ��9\rАΑ��\"ϼ�`���,�����\"��ֺN�*�\$�E��Z32�Ɓ ���j{W�\n��=&P0��d�; #`�2º�����#ʍO�2n�?�����*������+زu���(&����?o;���Y0���M�C>W�J<�==�M���� �����?���(gbJI�T[����\\�ًkH,0��O4�u����V�\n'���rp�ɓqr����T�������6d<j��|f� �t����o¢ ��4c �]M�.� �3�����S��1/`�A��D\$r\rb&��@DD�\")��d�C�C\0)�#rn�S'W!�3�\0Z��[Vt*���py�b�VÃ3��7�t\$�tR(0�p„��r��7S�\n�)-e��uN��HC\naH#A�� �#b.�ո����yR!\"�R�\r�>5�l���m�T7Ȩ���\"�xg �R#D�B� ���N�Z0s@�+��⚛U-o� 2xk�pE��82�IŃ\"u�x�Ա=�)��&���5� Cd�<\0���c#d���2�\\��4�ٜ�` ��=g� b,e��Z8I\r����|'�>V�>�1�tAO\rm-## M�k�e�V\$�(E�Y1nS9����AB\n�,�M�pX\\�Y\0�������kSgC5HR=�I�%\$�.b�d�U�Di� tb���z�Y�C�23D����\$�A�u/��- R���dB�\0��������*�]\r�gz,^� ��)0c��B�c�r�`eq�9C�v�����;۩VL�r\r&���ExZ��nvEU,�X6����3��8�\"{��O*CD�5\rge�� R�Q�� �P)X�l���Iy��4��\nH��?;G=��~�fFA�m�VvY�������sn��NIADY��¥�����\$�KR��\n�p! �,Ec��ݽ�%j���]�5T*[:y�d�z��J`Z�n�QNT��x�\n.:rQ���f������0T�9E��f�X� �A�#��p��z��L'�2N�ܭC����Td�3� �8P�T��P2%{�٪K��\r٣�J��)Z @�.�њ9�(�Ŋ�\"/L�i��b��ǥ\0�6���T.+�aV�e&�L�ڐ&&\0���?\"05����kĴ�]�\"W��A��v���ɭ\rtY,i[G/)��̿�p���b�Jq}�pD,A�ҡ�T&�֭^8��_��8��0�#�XW����1y�b}�r�#��U��.���*�o�WP��Q9���\"`�� 4��M��?ho�N��Z�Ϲ.�Ħ��I��&O�9E�Y���}��n�0����r��0�r핺��]B!�nզ�S�d���C�0����8�C�����A#@�H��r7�Te;���Z�H)����1Gl��D3��Jw�<th�ߍ��'�C\$��;��D�f�ЅI��#B\"\\V�F��u�Sc�2�=�r��V\0E�;�Ķ�O�v萨BH�#�po�����~j��ާ��6�:�x ������d�45p/h��۪C���)0��e3UJ�\"r���Н�?B���O���.��1���/���q�j������?k̽p��nO�\0锈CfІ�{���#n�����,1�6-\"���S\rҎ����kVŰ:\"��0B\"H�p�0zL� �p�@����Ix.�Z�bu �>���\n0�.(.� �@����F@�\$bJ��Ȗ����Mj[œ�\$P �bP?��,�M��m��bRb�D�WFN\"d*�1E����J��eG�\$�.%�]��Ԍ8��zϲ|\$0l�\"͔1nW��,��}d�_D��Y�8B�L���l �ob���i\n-�D��7=Nf���@�����������N�xjPm�!E��Ι �Ѡ4ѵ���&H{+��\r\0�Ѹۥ�5�\nΐl3����}�W#�֤��B�EdF@�b9 \r�J��R#r5lE��RN�I\"/�([��4���[�f.Fs��)m��~����.�0���la����'h��LG(j�\r� �C ���x�-؞ѝ��}���҉M�*�kO��7�GR��&o�(��-���2Ⱥ�*���*�m,QC�������\"�0:m��3 ���\$�&[*0� �1�\r2\n�0�o(�pU2� #��'��l�\"�-\r�(b35e\\{0���6Q�\r�kr�ί)6U+\nK�����آ�9�&\"��oG\$�?\n��P�% FD�d39�:\$����v'+;Y\$By.%�Sl��]�& ¯<�}+2-���bk��!3��s�7�5����>f�>���Qv@m\"��3��ل���5����)C(S7���TA\"D6��T��D�nܥ�5BG�\0�D�iD�n�n��9.��7���P�W.���j>+�G�l��^���I�mI�� �ȘDoF?����81k0#쌪�>��KQ6�/f~����KBH�S#M�y/�N�B+��E��N��&���͊}h†t��B��m��ӎ=�P��y�'\"1Hx�u�R?.�,����\"A~�(�G\r򵋏Up ��%E�^)��H4OP/�H�J4a#]W�F'�Y��S���f�Q5QX�����t���/<��4O[B\$�oC��շ\\T�IqIS(>\"�\\�\0\$�[S�'B��\\5�8o9Htj���u�U�-tND����7�NJ�D5�+5�\$�J�s�1��M��F�)����/��mT ����j��J�n- k�:�U3G)e�+� =�dKEBMo�J�m6'��v�g^R��.�3�\0O�b�@��3Q3*��6�f�֮4��i4\r�V��=�PLv.��*�:t�(@�ˠ����E��\n���pWi���'sIDvr�Fʼ֡p�'fJ�v��3J<�PҶ����JK���eJJS�\0 �޿��/,%��C���!�a\r�QC�K����Jp,q#�%5�1A˪&*���sx1�@��1 wCH{O,e�T�n>Ava�3�ma��{Q�'P&��ܙb�4�u|��&R��� w����(UZ���~��~ru����w�w�@�V��8�3YL���v��t4 �\$��Q�xQ�~�j�7��������%��փ>�Ї+ҫNu�`\n���\r�A48 t���ÎL��l�1 /{�G\$S G�w�w�\n%�\"s��-'ҿ��zD�4���_����.�5�2_�:.`";break;case"ta":$f="�W* �i��F�\\Hd_ �����+�BQp�� 9���t\\U�����@�W�� (<�\\��@1 |�@(:�\r�� �S.WA��ht�]�R&����\\�����I`�D�J�\$��:��TϠX��`�*���rj1k�,�Յz@%9���5|�Ud�ߠj䦸�� C��f4����~�L��g�����p:E5�e&���@.�����qu����W[��\"�+@�m��\0��,-��һ[�׋&��a;D�x��r4��&�)��s<�!���:\r?����8\nRl�������[zR.�<���\n��8N\"��0���AN�*�Åq`�� �&�B��%0dB���Bʳ�(B�ֶnK��*���9Q�āB��4��:�����Nr\$��Ţ��)2��0�\n*��[�;��\0�9Cx����0�o�7���:\$\n�5O��9��P��EȊ����R����Zĩ�\0�Bnz��A����J<>�p�4��r��K)T��B�|%(D��FF��\r,t�]T�jr��� ��D���:=KW-D4:\0��ȩ]_�4�b��-�,�W�B�G \r�z��6�O&�r̤ʲp���Պ�I��G��=��:2��F6Jr� Z�{<���CM,�s|�8�7��-��B#��=���5L�v8�S�<2�-ERTN6��iJ��͂\n��\nq?bb��9��m���Ţ�L��\r�\ns;�9hyz�Z��I���+�&aX�JRR�Bٳ��� �ۙ��Et��It��&E���[j��ndF��ĩ@ ��l�3����O��>�1�����p�8<C��������O��2�\0yӍ��3��:����x�߅�/7L�t�3��P_?t�L\0|6�O�3MCk��x�P�F׷0�S`T�n���z��1\"�pP�R���U�q~�}^�TC�}��.�RN��|�!i@bt� ��~0I����R��@�4�/��WS\rA��J#�p���W\n�9��% ��}� ��,`&���ᛁ������u:!BB!���p��9�+�>�6��r'��0�P؞�a\r��2�󄽟J�)J5�`��te�����DW2�B`� �p��;�T�3ô��sH\\m��j��g��fGe�u��Gi0 5�dIZ�e\\�(I� I�N,���S�\"ލ��6FHa\r�(�‘'��:[��3�#%r��DB\"��xG�(�I�B� ��5��\\�ح��]�2Mt�6��Q��V J�N�T���\\��gĢ%�y\\�6tC��)gq]��`.d\r,d������� ��<ݔ�a���\$�6�3�(\"Y���I�O�*MxG�J�0M��4C�i՝��x��=�T7��i7���Js�uM�1CX7�&�0 ���rGl�����0f\r�,��~�<\n����AorN]̆h�\ngI�ֱw+ R@ �0��S�\n�)+� )� �R\r���s�u+�4Z((@��d���HsV�ʷ�!��7Y�b(�gWjt��`Gy���E^Ze�.Q�i#\n���\$�C��O��U��p@�gu��R�0��y�vN��0D��\"�I%��S��T-J�iY%�ˆ�!)�MV��b[�e����3�c�c��6���@S���o1�:���ivJ\r�; ��]��wn�߇w��\\Zkx�\$7<�R��+�zT��fT.�>c����Hf|�`a\roY>�z͉����(�Ɣ�A3`*N �ز�Y �\r/��������r��R�E-\0b<A�3�&+ �f�I�<��-k�ytG������ ��p������eH�P�C���H��O&y�1��\0�1�l�n]0�(Y�L�\\���hs����\nj��G^|O)�='���Xf�Ðt>�;:ihþ�XQ���S��{R�(�E+�x����0FG��?kNGCL\"O��k ��lh5[Q\$3'f��r#&��]&��0�tn��K��J!>��f���Ȇ�_|WLm;U��s�;����I#���8�� ܁ eX��dc#@�4�ۏ�%�?,�9�4�u�~=�m��6��͊��\0�¢��a���4fm�7��pO썥\$�6�6F�o���l�>~������0i ��9H\$�0Pe�LJC�;U���S��2��Q\\�b�@�)��7��t�*i u �M\"�5�<q�)ă�O��*�}*t�T�}�I��r�0O ��*�\0�B�E^h@�/�n��!�'ЃΥ�F��������kW��(��� 3�L���J���JM���=d���)�&��2���Y���M�E�n����0���\n�w�~���)�_�3X*B�)I&J�6r���C {��5�x�\r|���!�§*\\�����4��0�O��͢E���d�\0��/�m���\$<|�⩍�}���08G���UxR���������I����~�)�-�\$��F P\n�X���=� ND&�%0�,�i����\"6>��-�1�LV?\$���\r\0@�� ��TTl�0�KkĽ�z��\r�&HHL1�\nGfv@�\r��x&�.\"+�K�%˜��\r �F4�����=����WO���F�p��\$t�j����~X �*��\0�\r�«hf\n`��Ǵ�K�>�����f=@��K��4+�Ʌ\\���QD}j�P�k��/��ј�T\rѢ�z�f�a�1Ħ��JN̷q��o����:����K�����N��~�b,�G+�� •�Z���f���`�q���:3ʝ1F��r+�,k��%��~Dz>ƆR�,��T�dm!p� �}f�ќ�7���Fj����e⮑�d8�@\n��`�1���jO ���Pr(SpRA��Q�^1�%/t9�6�j+�cq��f煪��&p`F�S���~�GO�� ��a��/�Z����k���(�p,~K(�-�102��Ol�/hAB\"ݳ,fK�/����^��\"��!)�/-��\" s2pR��0) !����r��I�H�+�.�+�'�&��.)a2�����3\r�6-�/�+,� -Ӎҷ2R��9��S�3s�2��\\�p��䲀 �t`@M �V�G�+�m�z�ˆ(ϩ>��C\n4��+v��?Š#FGJZȰ'30+<L�GH�y5����!�\"�HJn�\"�^FB׊���۳PR�@T^�K8*e�;~���A�)\nJ��cF���'Gb�p0l�3r�o�QCG�Bh�7�DRg�0��Cf꠆=�XhcZS��7��8joϹ���%�n0��)2�w3�ತ�'�5Hs;��� NS�Ik�8\ngPhR�����5 N�G�2.������<4�<e���.��\rSs����:U'S�t�\n^��|��8���U<��AU5,�/h��!B\0�<.�n}�xW�/@��L�P�`̋��쭟@f�@�bc\$�<#R8,�A.�+ջ0Tr�H�g\\��ǥs<���5�E��-�a�ADc^�71� ���<95S��_ P�Ȗ'�e\0@\n��ː���[,��'��'j|��W�Y&���cu1N5iB�YB6\n���s�CQ�6=EK4�`R�e5 d[dP=f+P�T�RU�W/�9VX���f�30�9V֑�V�q9J\n��P���g�WV��J,��<�t�Dv�k��T� lh#l�;A��Jt�`6�g6�eV�^�+�Me2Rдp�h#Ig^��od1C/u�3��\0003D�1�f�H���6�·���OiV�����[q5Q,�wj�!rT?-Sy5�����)si�C}u�\rD�����vVKm�MoV�S�i%�:�T�;l#UW�vכ1��)�VWSh�WgmTn��tI��C]a ��0��c[ir� �I_�QZM�T�H+Wx�UgN_ 2 Q@�L�Tsf���� p�M��A��2�9K��x��~&�|N_|��}7��b\"߬�\" %(51|��b�HR�&�]5���f� )Y�@6 ��ЗIX\"��&�0����w�ם5s<o]Tm��%0yn���xY�]}rU�1�AH A/�j�V��W�z�)c7��R�����s%wV2�h��T8�U��=d�'����E� b#%�&&���\r��������h��yIS��]X�z���(�񹋈{��z�%�۔u��y+�����cBy7{�%%����f��~yO��S`����Y%\"�mm7я�HRO��� v1\\��Ђ�%&��xn8oD�X�W��ӝi*ZC�K�Q�3j�t8����7����|ApY�i�/j7�l.���q�����6�S�܎ �L��?�;98in����-�I�Z*�̫�I�ұ��%\"ak�ij��9��V�D�2�J�Cꇦ��7��Un�:y}G���y�d���{v7�.�?DݖQ�]^�e���3�:��z� �e���ya`P56%x�5o:j�=aG˭�\" �������@�oe%N����v���:�9mW�Yq�I�.������8ߨ� Q�x{+�:\r��i#�����+�����#���K�I\r�5�[A�{7�T/��͵ZS��V^��cy}^ف�pwT�rF�W%�E�-�]��:�;�%[��歺n���fe�Z�]\r�1#�cRӡ�ѯ���up ����p��WF�4¥��\r��M��\r�9#��D��:�]������e�瓷=��-u�rs^��|�|��#/'w��^���K�K�Y�B���(q���Ò��ԉ��K8v����nّ�\"\$ڇ�s�:�QO��&\\3����Y�/ �e�\r�V j� `� �t�Z��Pŀ��\0̭F+���\0�\n���J�L��\n���pd+���8S?�[>�\n7(8H���Y���M.[�P���{St�!ϵ�����H�s���\r����8�j����ςy�}] ��8�4 ��Iƭ@n��� ��t�B�_F!@��ЬAD,J\"�&�8A�?�b�qog�<�W#L�v��;\"\naF}��pU���q��=���ds���B���ډV����Ky��:�*���}��ϑ�w6�ӫ8J)ٽ���/zYޗ2��5ޣok���5��y[i=��5��p�>iB���ꛩ+��=�9�9�[��{_W\0�dc�;��� ���5�V�m��vq�\$�(��gGVY~��>e�������.[�Xye�LI'����t����[��ꨴM�@�d����}h[Ј `����8��J\"~ �\\qQbf�\\Jǣ@S�aݰ�-�}C �=Ǒ�dWB��'��~\n����lh}��a�6C���+��O��/���D�M��?A�jw����z>��ً��f�v�A���D�E�DN \0�@� �t\n`�";break;case"th":$f="�\\! �M��@�0tD\0�� \nX:&\0��*�\n8�\0� E�30�/\0ZB� (^\0�A�K� 2\0���&��b�8�KG� n���� I�?J\\�)��b�.��) �\\�S��\"��s\0C�WJ��_6\\+eV�6r�Jé5k���]�8��@%9��9��4��fv2�  #!��j6�5��:�i\\�(� zʳy�W e�j�\0MLrS��{q\0�ק�|\\Iq �n�[�R�|��馛��7;Z��4 =j����.����Y7�D� �� 7����i6L�S�������0��x�4\r/��0�O�ڶ�p��\0@�-�p�BP�,�JQpXD1���jCb�2�α;�󤅗\$3��\$\r�6��мJ���+��.�6��Q󄟨1���`P���#pά����P.�JV�!��\0�0@P�7\ro��7(�9\r㒰\"@�`�9�� ��>x�p�8���9����i�؃+��¿�)ä�6MJԟ�1lY\$�O*U�@���,�����8n�x\\5�T(�6/\n5��8�� ��BN�H\\I1rl�H��Ô�Y;r�|��ՌIM�&��3I �h��_�Q�B1��,�nm1,��;�,�d��E�;��&i�d��(UZ�b����!N��P����|N3h݌��F89cc(��Ø�7�0{�R�I�F���\$!-_H�[�����+�q���\r���sЅf�L�X\\5��_��6�bw��v��� ;���M� �ֈg���n��l+�ɛ�N �*��� ��l�7������A�S��1�o�U+:�S��;�0;��>t=9 �`@rC@�2���D4���9�Ax^;��pþ���3��(��ÝE�\r���*�ӈ�ecpx�!�}������W��;u��2*�\n��Y�h���̳c1�M���!qLS�?�~�2v�s�8,�ӣ����9�Y'n.Ap�ΰ\n\n�9�Ù! ���!�\\�!�K(p��A�K���f\$�sѹka������jN6ϕ�,�����'hp��F,�u\r��;�C+K&!���O �X� \\��T�'�`P��lJ�_+|�\"c�F�����쬇�\r�Blȴ������ʥ+&>�9\n� �.��d��0V�IqB+T�������]S�vIP��a�d\n\0001���Qj���0�ڲ*�ex��*���.����WK\nLoue=�_/��v��,�yH+�+*���3�aJA�h<�S\$D�.oqY�ɦJ%���� I�ܘ�Z�}�*�s�5�〰:��8���E��\")�7f�/�ohD���Aꂇ�7�`����)�(�\0͐ѹ\n���<��A\0ue!��8���\0l\r�*�7D�( !�0�PAO�,o��:�PP�Kב,>�[�\0C\naH#Aê\\j/;f�@�S<��keA0��[��*�sѧ���Dm�9օ��0Y��Cؚ��d��džp@�*ntA��2���!�t��0D���]�R��s�U5=��z�H%{6\"�T�%NV�o'�ű���?\r��E���tv�J�MN��<��hx�Ө�F�l��u���;'hݳ�\rɸ;�z��3(eL��p�C��\r��:Y�|��[��g�<����*n�ױgח�sV�*/���.�[hYe}�D1ٶX�l�!����`�\\ !��(\nX�^/�4ʚ&�0��� a���\0�so`i����[�s��`U��jN��c!�h�J�W��:N�^\n (\0PbJ�B�%X�w����`���U�PCe�o�s�|���?�2��� O�+ ��P}b{Ŏ��*�����<�T�,v�f)�V����XT�Y*���]�����杹7k`M�R)u�i\$.-�+\$�����CLp��_4]8q��?�d�l=�p�b�d�1NrP��<����r�p��wτ[J�]'�WM���i��!J���,��������Y!B Q�.{l���l�܉�\n�U�i:�V�J�*����J�\r2v�D �a�pL�5���0Tɲ�\r��С)�����9��*5EzX�ͱ�\\#�i�1�(�@PO ��*�\0�B�E�<�\"P�z (hu6�jxF��7Jh���匭:�i�E�Vȕ1��T�]i9v�X�.!|4��&Ӷ�b�d9SJ5��ר�w���CQ~;me�3Ma�K����Wv~|��?֝��T���b������H5+�V�q@���s�j�Y���i�+�����������/d�jI����K��[�\\5Wr֜d��b'��C���nR ���Gi�H��b��!�5m1��C�Z�iQG1^��m��������7&�V�grbջ��k���d�փc� ��^ d��Io�%�.b`����eF�D<'�C��+�&8�v,c</(��(�ʞ��r2'����ԥf&h�TV\\M����+\$(S�|�#��gBh?�� ����DS�Œ��c���;�������E�8�B�d^�\"�a�v8\"��p ���&��}�lB,�Nj��\0� � \0@�D�\r\$��l���P���\r�6��� �{��X�� @�1DJI�[&�'e�\\D&q��F��VU#�0�6�m ܅\"����ϭL��@�P����1�mKlE�:��&+,�Bߣ���X��5���E�[f�8DF�k����2��2;�9 ��\"�9C( ��H��q�c&XqT����QО�W#A�:��vg���\$ ��OJp(cO���pid%q�XhX���m!e�[�v�b�[�6[�~G#����6b\0�m#�x9�?�;��%&it�P�D��dP��ة�f�b��I�V~�v� VA�x�G�Q��e���~�%�D����S��D�*!NA�n��8CQ(�6|' ���|���7\r��r�|��:�I,�\"�kt����0:����\$jɄX���#Ј'o]@�N\0�W�~+2L��B�:��F+g�S-�2��9 r�#R֒3.�m3e�1C[nR:Ix8�}D#03g-��Q��/^�09NPE��E�L�μ�o�\"�R�Dp�\r\nmO\n���DE(��/E��,BF�5>��r�.\r�� <s�\r�`�!3�.��i��3\n���,sy+��1�;�<�z\no��ILz�4\r@��s�~��6�0~��>sz��S)���V0­�+RT����0QL%�P����)/L|���A�h�I�Jag� +�yEB�鴀8Ԅ~�Q�g��?45A�C�mG�QG:�}I�?㊍�~͢�e\"�\n�>�P��8\"g8�fC�L�\n�<%�LD%���������Ƒ.�<Q Vh�r�� �s����g�L<\$Y �R}�DHHTb�M�M%KJ�I.YKsnQ-��5tڏ�&��E�ݭMS'�Se3��;��J�u>��6��G�F��;S�/Iu�.4H�fH�gWg� �c ��\rP�(r�Xh_ �\"��՛B�JG�W�Z�Z��[U�=2�Cu�>�>����[�����[P�Y�_���ƄV�g1��:#h�–im[ja�2���A��1�aaљ`�`<%Z@�sf�Bq�H��d�L�vQ;���]5�ZJ��O^4Ru�f4�fu���@���̦Y6T/?n>d�q���O`5'hjUh�OY֦>��i֠�2�\$�[�)N�'��1� c�7+A֊=��[��m��m�_K��g�� ��q��D��Bӿf��ov�n�p�i5�p��JV�n��gT�,�%��[��n/3ev�Mv–ԉgt�C�VO-r�^�lV�=wV��7�tX���\n�� 6�X��wNw��p5�hmq�L��vp)o7K^�;g�p�4� �u��zח Q�~��_��(\" ��kD1�0��zWh0�m7�˷=^Tv��}T[}�V �\r�\n�M|�N���.�+*��Ȭ��b�z�V>�2�B�p_\n�~�0gD�h4��'P괐xи4a��2��\rH�n�4s\"��Fʢ�\0�`ƣ\0�\rm�\$��/��&�|��+\0��ڰ��Š~M��\n���pc� �/QR8�iq#�+�[:�Y}�d-N��Ÿ�mN�� TL�\"� �ߋ\0�.P��fVp9�� �a����]�� u1�e-8��㝈*�J�~�P)pU�0v�B*+\0�\r�y'NrdY6v�/\"%2}ojMяV���k�_&TU3����t̜��@�ʩ.�UU�TLT8б�6�q.�l</A0�<�k�R���s��@�d�=����ؠ� 6o�\n���]t�fթ��a杌d�+����7��9�Q��\r��8I.��y��y���E�;��QY�%�C/���4��X�\"�\n���\r���9!�:�,|[�zՉ�2�f���h;�8;���1��gl�⍖<<��H\\J�C��<���b�:.SA\"�<68An�|��Хv+��_�́�\\;�Sl䔇�)` \0�@� �t\n`�";break;case"tr":$f="E6�M� �i=�BQp�� 9������ 3����!��i6`'�y�\\\nb,P!�= 2�̑H���o<�N�X�bn���)̅'��b��)��:GX���@\n FC1��l7ASv*|%4��F`(�a1\r� !���^�2Q�|%�O3���v��K��s��fSd��kXjya��t5��XlF�:�ډi��x���\\�F�a6�3���]7��F �Ӻ��AE=�� 4�\\�K�K:�L&�QT�k7��8��KH0� F��fe9�<8S���p��NÙ�J2\$�(@:�N��\r�\n�����l4��0@5�0J��� �/�����㢐� �S��B��:/�B��l-�P�45�\n6�iA`Ѝ�H �`P�2��`��H�Ƶ�J�\r҂���p�<C�r ��i8�'C�{�9ãk�:�ê��B��} P�\r�H+%�����4 4��Jb�J�=#\"7#ʈ��>C{��?�\n0�l��\r�8@���S���H�4\r�.�����2�\0x����3��:����x�c��\r�#�rJ3��_X?��^(��ڒ��̒ǃ�����x�\$��>� ��,�#�|��,�m4#�2492+�ڼ6ʝO�N���'�����} �E�R*��\\鄣\"l��N3��-H�<�+t[w����'��K�4�\r4��pT�zB� ?|�wiN�փ\$��h%�̢D�fC43E8�.��:�+f� ���1�-H�ϥ�p�����F��Թ c�i�(�����C\r�5��M���м/�`xi�O\$X��B\0WƄ���������ꔥm��s�5�H�|��JW���-�:iu���� ��q�����d�d:����'^O��.=\$�J|5��AÄ0�=A<�v9eU76Ԃ��.���!v=��&`��n ����[��I�4D�#���A�(aL)`RQ�8!���i�����N���=n�����Z1'ĝF��\"�C�*d�陓6K�\ra���:G��\n�]�Ҋ���bIJ��������~��ܹW<|o�9���qɘl ��Z���2C���H��C \r*��C2�8�.��t�# c��6'2��[�Cj\$�!DEx���X�d,�\\I�z�\r�E.�&��s��8ƛb�>Bi��E�BnH��`F���[ ��\$ͨO�ej`�9�\r��50�Ɂ�ƺ��b,a1Rҽ�\nw���d|D]��N�I �#�ɺ� Iª\r�z�R\$|#Y!R (��r'��E���0PQ`{P3mMu�œTQUHa��9p,K�C�R�3��� ��M E.B c�\$��f|G�B\r3\r� ��2CI't����\$��^��kQ�%FYf��23ƒ��Q�hIN�4I�Q��EPB՘�<�^�p�JS�{N1� D�����\r�U��R�K��\n<)�CZG�2��A����Z�iQ\"��F��F��%T:��Λ�8�9¡cS�\0T��6X���}qA�\0)��\$R��p�\$�Lf�oϪm)�4��\\q�p:��'�UW�)���\0�\0�A,0�� ��\0U\n �@�@H9��5�sLa\0D �\nq[��\n@Uϼ!&[�v.� �t]�\$��8�2ކF\\��n�ݹ��t�߁�I�Ά��Iԁ�:f(� �P��� !�㢰�rR��ns_��f��4t��(V��{�b� �\$9Lq��s��3�6���`�f^`@�W����O����B\$�!g�>��xA�WV�\nz�|3:�q�&NȠ�'2�p}�)�r�^�\n�7-�\\֜�n+f'&��\$�����7�I Rh\rJ]<\$�4����Bp ��*��&-��n_�Ը��}Wf%:�9Ϸ���J�:������A��>���\0000�nl�K].#1�d\$�^�r��W�D'a��i�,��qqBz �.h��Q�����gN�@��A�V?�Yc<I�\$�aMg�T�KNc༫��\0��YF}�o���X�\$^o�����e�[c[���{�g�19��vn2y3f|�B����J' 5�:��a��gμ\"�)�&�م.��?�-�ft%����q��\nߞߜ���3���A�<���s�s*uC�j�!�jFH�?\"Hj����-+�\r��)��ݻ���1�Sϭ�\"΋�����}NA#x���RyQȇ0��=�c7*�_�\n /�QEX�ls��\"뉛�4Fb��2�K_`薎O(Ӎ���p�u;\$w�d(����.x :��Z晳g5%3�@��V��^� h͕��B#_>a�����w����S����R4&��:d,*�xOȴ��I?�& �L:ޅ�\\&;ƞsc��'�h�B�%���ŧ<�Ͷ;)\0�\0���&}Z�P&�K:w�0/f�� (�:m�Vcp�nx*f,~�Nb#\n����`�7. N@��`�N�f��j��6�Ѐփ�����\r(� 0���B�N�K&7�лb� \0b�F'ńX��\"#�\"G�:V���F� ���t�l;\$�\r�7�ЦA�X��C �)��GZբm�<�L�a��8)�9M.�/���c�҈��0*�\"Ұ���2��>ȍ�0P���>�P��N1J|���-�(q(a�_#��(�㸻H\0Gdz-�x�cp\"�`|�N�m�6����q0\n�06\$�;�*\\d��#I��1�f�:1\nPID�D�]`�B�����ì%qR�D��1������\n��8��d��/h���o) �y\"��\r}!�^�q[#r3!�#\0Җqn��z�� Q�;�^��,��\n�X�K/K&abN��n���B�&��@]R�4+�-�t!f4`l����N~~.��2mbD8R�N����\"��e���3Ң��߮��f�2��p{OH����d 2�l3�6^R\0@d�\r�V���b*��j\n���Z� �l+:�Ni-K��ַ ��N��R��S8��1l^� z&\n�\"R�t�|H\"��#�\"���^O�k/I&S^6f6*d,���(ha%��~���\"�X�C�+V�Q���{džd�\"7(P����,��xһ<\0001�����1��a+�vͯu �c>h�C���Q\"B#�&��Ӱ�7�O�_3���X�� �,\$��/���>#��BCd�a>m&̉������8�TO@�� \"�\0�5'�#@�_���E �&7�E�\r�`x�w6s�O�����z�-�@ds�ORL��\r`�d��\nmL*i�\"@";break;case"uk":$f="�I4�ɠ�h-`��&�K�BQp�� 9�� �r�h-� �-}[��Z����H`R������db��rb�h�d��Z��G��H�����\r�Ms6@Se+ȃE6�J�Td�Jsh\$g�\$�G��f�j >���C��f4����j��SdR�B�\rh��SE�6\rV�G!TI��V�����{Z�L����ʔi%Q�B���vUXh���Z <,�΢A��e�����v4� �s)�@t�NC Ӑt4z�C ��kK�4 \\L+U0\\F�>�kC�5�A��2@�\$M��4�TA��J\\G�OR���� �.�%\nK���B��4��;\\��\r �'��T��SX5���5�C�� ���7�I���� �{���0��8HC�� �Y\"Ֆ�:�F\n*X�#.h2�B�ِ)�7)�䦩��Q\$��D&j��,Úֶ�Kz��%˻J���A�Q\$�B22;`ՠс� ��N��R�4J2l��2R�?\n7���TE/d���&�\$��A+��\"<O+�>��p7W�B�`�V\0�<;�p�4��r�P��� ����7*��Ҙ�4}@��d*5jU�]\\�T�8�Ҍ��욲�(�b4H��J��w1�Q����^��x�)�a��dҺ�P�2\r�rH�;�%rd� #����I�H���K��IC �(�c��0����9 �0z\r��8a�^��h\\0��{ �x�7��)J�xD���lx�D4x6�����|��*�c�\r�b��JA/� N�M5�\0ը¡��pj��`��Y�m�w�Sn ش #f�⭫�����cG( P�0�Ct@3�!(Ȃ4 ^�݂s�v�|�W\r�ev)�\"@�������j�%��s���(�y{�f�N]��_3����z�:��P�0�����[��5~!�Ѯ��5�5U!~�����!nh!,��Z݅��R+�)ShaɱB!���:�M�&I��*w>�JH�3�8�884��A�î�H�c !����I[�DhY)�xbQ:�%'��C���LAvĭ;V� �q�͈&�\nGa8�&�3EG\0004b���1��B'v�|�#@O�\nIc�n�ur�c�����g��[]�)� �4�Ƌ�v.�3F��� B\\�͢�d����O�9\0��p�A�\r�3�4��\n��嶀�A\0uY�Փ2���\0l\r�4��� !�0�\0A1��\r�����\nKY�7ja6�G@S\nA��� �!��u<b�a`]�p��BP\$L�\n<�\"W���L�&����a%E�<\n��f̲C�) ���̤r�C�Yᑍ�ӈ�_`�\$U�[lm�M�3s#�2\$�.�QtKF�.��M�lԚs���)����T)�d���xR�Y-i�3�p�ih TQf~�ZEh�%�����ڈnG ��5f���j�Z-y����mj�ґ�\\���;\0���ȓ�̮�t���.~�QS!������\\4)�P �r- Z ����\\�@pG4�:���RK��n[��u/�1<^ˑ��\\�\0c�u�4���fc*to�x٪�F���))�[�\0��-?�\r<\\W���Ag)�w��o�˂(v8G/TD}0{'�I��\\I�CZ5�1�U^�i�:'L2������<I!�������!��L�u�CıKn�N�s�S�Z�1 ��9\nÈ!D����,Cc1�r% ީ9�ݰ� Z�4B؅���-)b��ԼJ��CStD�ПI�I\"���1�����j���f�_PsIA���XX��j��]\$;i�ҁ�=\r�D&��B���`�� ��� �L*@y!q�G���b��ʡ3�{!=\0004-�F5[/�ݮ�\np��ˬ �ɹ%@����s��a�7;R�2��hXS���3_�@t�F\n�A��^k{#fZ�.� �q��\rs���X� Q�*�o1�!RVA��\nѰha0AI>��pC0��A��Dh �����0�A�B�٣A��z)]\$���E�x�� P�\nv���� ]��M�A}�� ��:��%G���*A�}}�=E�H�!�r3 E����i͌Ơ�5>\n����X����>�\\M�&G�a\"u�5�cF�\\��G��?:K�\"��zi�8gJ@{���=>��=sn}Ѻi��[��g}�Ⴆ��к���h\"ڊl���?n�k����ڌ�r�!���]��1��0�t����|� �K�Y��0��aQ��9����:�C�#r� G�L\\ɢ�qІ��4]V�Gr�y E?}�׊�Aj��u�F�6C(�e�(�5۩)�s�g=�\"L�ƍ�At�������/�*����4�[��}�:x#E�.�B^A��!Ϛ��^�!D�p���v(�\\l �n��f�L����^DV �\n��`� ��D��,I`��J��[��\$��LJP�B \"g^��v�r���Gr7x2�q�vn�Tw�=(r��p��BCJpڂ�O\n��*��h8\$�tppxo`\\0�tp���V����\$���C(�.0� g\$Q* �Z� ��͂O\r �٢?\n��{�u����|�I*�����w�\$\$��)���xv��%P�\r0�CP���I�Lp�\\��*=�}'uh��4xq9��� �P5���\r�G`�#0���&6\$��`�FA��%� \0o�E��\n�@��h��j= �]\" ]%b-��m<�e�E…����)�T*Q�c�5e��ΨL�m�\"񭸛Ș�.w�VZ��*�CB44g�b��a<�j���44�@���#�.j41 Lnu ,� d�#��tQ\$�8t�X�c\$��B��I �A% �\$Bb��?&�p�������h8��n�ot�bK��h�)lߣn��rspjW\"�І A�v2H8Ahp�<Ce//�� G`�O�\$ۢ��nJ�\"��K'�QIIJ2�^�E/�\"q0�,g��h�)/�����ry�)Q@��.s��9DT!�4i� `�J�\0R�s%� (���# �G2��5��\\�^Z�67�4��+6SV�sZ�h�5�*� �(%�\\�5Ңѐ��sd�OJ��o'‹&�':n�(��8��%�;H�;��%sdn-�\$��6���Ž�L��U\0� ����2L1E RO9�%9�ܨ���s܌���&��>�O? �,�_?��6�' A �)#A ،�1�p���\$£��)4-@M�!m�\n�� �*�#:�I'� /�����f�B�G#�Gm�F/��3�!��G.�3��%�s�\0��r�*��%rKC� �j`+�~�\nCl\"B�>�\$&0�.����f�C�1��s�L��_� �R��4�2 H���� �d�M��.�\n�\"�t�FSFG\"�/��C޲�(���H��ֹG�*s:A�@�G\"���<�X���p�F�sG�=]US;ҫ:)�����jrq��wE)/65W���5S2��N�Xs�t�;�eS��t�Y';I��W��Y��T��E�)I_A�]�@1b����PuN��W\$�,�N{N�!�#]�\rD0+�`䒁��A��p�5rSB��X�_��a3�ZUv�ӑ 1��~(��;ZϪQ��b0չ�!cn'c����L�2�a�d�, 븝�!M���DP�8���4n@Pk�`5�b�N.����.�L���TT�<�S��H֟YtWb�@���j��EM�i�9[��P�i� ��j��VSdx��V��W5Wk� K�e��K��D�>��m�<D�E]kVb�p/�+ԗb��`�0�v�q�l�P? �U��6TՃY-�]P.�HT��set�%YuU�a�b�\\��vV�W-r�JA��N�5`�AfnS�\0_)���vB_v9шUǽ 4!6 (4C6B��^��wVF��C�?��^��_��z��x� �xB�Q���zM5/]��gk�N6dbW�btUqqe9{wπ�k��/%��@�e%U�)TK#�p�)�\r�V��ml�>bS1�L�p=Xkє���l\r�IK@��n\n���Z�� �uq+��4n�V�uJh�EQQЁ΁�e0#����{@P��1\r����z�Ui�-\"d�(� ��2(o�  �߇��\$F7BS!C�D�~�G�_�CV`���K� ���) >ʉU��x ��զ�hX<���us8��x�\0��Dk\n�#ꉬVa��Qx��T߁c 2Cf��\r�r��� 7,bTs'�J4�Uo�x�q�i�Ӛ��op�!(R���xQ�@?t�����+)�s��(�UN�4T)�OT���3�!�@���.������0� �Ns4be2 ,��*3�\"��%2\n�J��\r��K�7�L���zP���E��C��`QS�Aq�S�#�+S�18�\n��3]x0�eÞf��������Q�iV�E�>w��N�҂�]L,�wDo\0";break;case"vi":$f="Bp��&������ *�(J.��0Q,��Z���)v��@Tf�\n�pj�p�*�V���C`�]��rY<�#\$b\$L2��@%9���I�����Γ���4˅����d3\rF�q��t9N1�Q�E3ڡ�h�j [�J;���o��\n�(�Ub� �da���I¾Ri��D�\0\0�A)�X�8@q:�g!�C�_#y�̸�6:��� �ڋ�.���K;�.���}F��ͼ S0��6�������\\��v����N5��n5���x!��r7���C ��1 #�����(�͍�&:����;�#\"\\!�%:8!K�H�+�ڜ0R�7���wC(\$F]���]�+��0��Ҏ9�jjP��e�Fd��c@��J*�#�ӊX�\n\npE�ɚ44�K\n�d����@3��&�!\0��3Z���0�9ʤ�H�Ln1\r��?!\0�7?� wBTX�<�8�4���0�(�T4BB��-Kd�P�ɒpS��Z�&��;�q �&�%l��%Kr!��\n&�F/c,6J;rb!�åh��,��Vej�E�-@]��8�LB�6�o� AP�AÔ0�c\rI������ ;�(��:��\"9�p�X��9 �0z\r��8a�^���\\0�w+����}�x(�2��\r�������҃px�!�\\, ���˳4튂 h K)Ft�� @���a�V\r�K��-��B��9\r��Ί�\"�<�!@�� ��N�Đ��I�`�0֪��J��h��lp6AC��6�(�1BT��Jv7oL2pJ���Gg����5�%���V�]�3ɆQ7,tW�ëg� }��6�C��(,� P\$�������L�Ѭ�(��S;��F�B��q�bR��\"��&C�z\r�� 4 36�J���\"|�?�<�� �g�*�@�y�Ͷ���GKK��\0��j�٬����s³IB�J�Ť� �����&Ķ5z�с�2�\0����S�\r��w�PY_����0��2�\r������([y� i�a�R&I t(�����iފ�K/\0��Z�ȸ�L�t�E���e`M��*IrlHN��3�Z\n�\nA'����S2YZ�~3�\$� ��#B�:�君W��AA�x��Zf*4:�B6��\$CL1�P�3  -�����dE Ѝ3vrK��h\r*��\n�v�i;H ����yoFn HAB�ՠ�V�=��U1�\nw���0�Ø�b�Y�1�9(O�.d �72% ���)ef�aBL��m������\n�8���`4!t[�\$/SM0FkP���/�� ��M���كfR*5u����\r��4E�GI�F�x���P���R�Ш�:.��nX��A�3��[����4t&h� xN2�%! ����v�8 �v�g�� �t��a�>t|��9��lP���Fe���-@*�,蘐\\D�HA�V��F���9w��7&cD�b-E\0���E�I�?���\"H �\$�\$� ��\$��76b;[�a�@�(3��(�1h��U\$�kQ��k̒<Q `/\n<)�H�w��9��\"@O���۹3#�4��Q��'a�e�Eڡ3��\\鞎�Y����2O�H�5� ���`�TN|̐g>\0�e|rV\r�X�5\$8��v�q�嵬��b�%���\ni6�,I\$��U\$�\n�H@���LK!��a�X�!\n�]�֪��I�8K=\$���A V,-\n���b>A�9-dl2^D�wqT �� ���5�@�`��.G�� ~o�9�����sSy_�f�|L����Е\"/��̻Ő���\n*}QQ�D7)4Q��X\n\n����b8����(�M����Sx�³��\"^Lo5&�䆹�Z�[�8��.#�xP⫙��/h�O��X�굝���[Q6w���w�G�MB8�0׹w�Qy�Lx䪀�����~#a�φ�px�u��h��-�M��]�j � ]L�L�����(�%H�I��D�M�Y���N�*@��DX�+��5؃�!�&��*]�����5�@C�9�2I��-�bN�̒U���g��vJ��F�dF�9h��1Y?I��򭡂]�7)|�a�Ȼ�&d��V���\r+���E�\08��\$�T��\\���8�����pm?j��kE/z��ʠ�xh����=~�'�p*˱O�%�\$�������+σ�+u�*i� ��X*^��m̲8H&�DJ1\"���@�ڹ~�������]����������\n\r�w�6�]�@V�������e]������TɄ�������~�˫h�� �b[?�� ���7�:ń8�IV�F�Z/�Fa�/@�/�M���o��6���Ͱ'\r�C \\���Ljm������Į����\$���.Ō��d�*�D�G��h���~d �h̨�fg�`�(d��}������\\�dI�jT�(?\0\\�#�l\"�lΎ��������g �� �!\"�C�5�\\\"м�\$泐\r0 ��\0��6<�\"'lt�H\rP��\0 �di�N`�X��,�C�����\0� g똅�j:bd�q�\"�*��\r�ʋM�/�6GT����}c�ŤJ�&�j����\rf�M���� �����\"�vK1{�Ծ�<ᩩm�L� hp�\n�w�'� �\r-�(q��r���o���aN7 ��#�id�d���� f �(�aY�y\nNqY�I E�Q�!��� �1QV��p��N\$��R#�b�Ma\0�|�l����9�VO���PI�!Pb2 ��Ph���%\"�!�(Vb-R8�)�L�e ���%�(�(�qđT<�XX�{)e�������d Rfڲ���(�+ҵ��̄�*2�,�}e\\\$��\\���x�����e+f�<�0V�Ѓ/�!/ΐMd�g���/'4Ȇ�%P�X0��'s\"5f��J&:���� ���; ��),sD!��*�밭!� �:�bУ t�~҄�\0�Jo�A&�z�Ү\$�C\0k�/O�4��W\"\n���Zh�/���g)���qD4��\$�v���h�0�b��#_%\n/�t]M�8Pk6E�8�6�vg���1,�m�SfNe��J�D�\n��z�j\rm��D��~�bU1Df�\n��î��n��Jz@�˭H���M�� t)4@�ϨL\"H7:�#�7�l~sѺ8S�;��D�SD�W�}\n�}#x������mV��h ��\"i2��SH0�l�j� sR�-�'8�`@}O�*��I����K�ǁ^0���j����Ŗ\$�v �N��)�44i�ɨ!O��I�H!4I%vL-��*���8�c:[e�-�q���F* ";break;case"zh":$f="�^��s�\\�r����|% ��:�\$\nr.���2�r/d�Ȼ[8� S�8�r�!T �\\�s���I4�b�r��ЀJs!Kd�u�e�V���D�X, #!��j6� �:�t\nr���U:.Z�Pˑ.�\rVWd^%� 䌵�r�T�Լ�*�s#U�`Qd�u 'c(��oF����e3�Nb�`�p2N�S��ӣ:LY�ta~��&6ۊ��r�s���k��{��6�������c(��2��f�q�ЈP:S*@S�^�t*���ΔT���^\\�nNG#y�j\"5M��9�� ��2�x�m8���c�9����ڼź\0�>A~L���6s%I�X��ˊ�:��M(�bx���d�*�b�K��aL��K#�s��X�g)<��<v��q>s��K���tFC���D�!zH�\$��C�*r�e��^�@P�׶L��ѿ���:��8A<��(�ՍØ�7Э��K����Y�n\n�)�QBr�4t�\"�\$j�W��9@@��;��D��L�%�*ݜ�asՓ}^ ��k��4��ph��PX�1�m �\r{\0�P*;�-kc30�*9 �`@Y�@�2���D4���9�Ax^;�p�\\�o��3��(��C�) ��\r��*� ����P�px�!�jt�I�E�2k�%��|s��ӂI�����1(\\�9\r6�FU�.�Q`r�e�5S�B��9\r���9�� A�RYE��D�&eA�C�O)U�QPr�D��G�W �:��X�0����b��13����M������ZN)9vs�zF���\\���u�<J��,��qXsc�t��ì��#l�cI>A��7;\"��r�(�v�D���^=nSx�9YNW��G-S�w�E.^l�����7o�xFHSGAMR���S��:��g�R�~����?���H��Lkf�s��3\r��j9�����*�0��py�B�U���3d�7�s���tP(0�p�w �]��j�@s/�¤�S\nAqH9�H�*�LF�Fn#ċ&��r��*�� H�tE � ��4l\$9@�������o5��\"�\\Eq�V�>@��:4&�M�SYL5��d<!ґ K��[��|�lG.�5����W��?!�8�ƅ��ጫ�t.�ػ��w^K�7�\\����PJC(���Hm|6�����w�k4cK,�k`�D�@�]c��h��B��B.�@�d\$W���K\"��X�a-@����*J֌C4�A�9d��\"頤? P֚@�eC�a���1��\\[@s���\"DL� yq�XJ\n�b��� \n ( ���X�������CI�j\"N�8ڳ%��3�x�V����5�%cMp��4,0�!���Nc@��ܗd`I�7'\"�a\\-X�_*�e� �(�� \$L<�p�Z2�A��[�F�Ëjh,3��d�5��zAD ;�Z4*(R5�Hp�HP �L*P�Lb����H��^�\0���>Y�\n�3�vB��� ������f�\0�b�Su��3R@@gVpF\n�5մ`�*��!�����#(�@�� Îa@��x�A<'\0� A\n���P�B`E�e�V�z�-T�h� �]��%E��ͱ��k�tΩt�<�\"0.Qw�E�\"�)���v��J������:F�|�;��Lcm~8U>G�_�R]�E���9Dx�k�E�\0��8��pV\"�./d5=�:��\n����39\" |L����Ķߎ[�yY�S\r!�ѹU �\\r3�z��\nyH��\0J�מc\$\$���\"4c:C��e�� (����{�fm�Qf�Z.��dl�Pw�p�0�I\"(Pv%;-�`H��ミ0��qC�6.�0�\"L_a`�۶|X��<��\$0�q�����4F4H�*�@��@ �'�4��~ej�¥Ė��Jy�k�Be��\0^6-�׺�W�\$H)�Q�b�JǨF6���X�Q&#Q���vJL�W��Q���d��퀍E�Kk)LD�C�����(&Z���wh�̔�B(\nQ=)�Ã�a���r2����F����= ���)m\r��1C�B�r��Ġ�J��r�89�k}b�1�C��0�-9���9���<e��Ԅ��g��^aϜ��b�t�]���:=XW#���z��9���.���C�|�֜DA ��@�b9� �0M� ��9������e�1�4���/�������; �͙��y1x%R:I��.����.�5-�����/� �0��)�U��G�ih���/O�2~VyGؼ�w������X9��� ���t|Y���5���sona�~���_��s����/����X�B3��A�f\$�I\"P>�.O�'OG̴��*aP��|���>����E�pO,Mc~#!(� ��k�\$�7�r� t�������\"�k��i� ��fe�^M���,����PTft�fsd����MH)����z%��P�%\"��0�;��MJs�p-��dg�Ra^y!\\�as� �t70t���@��f*��O�/� O�qc�'�n#����0����L��ƒ��&a<��6��qeo�P �V�Q�Q1��g1%\0���� qg1?1*�O -�S�:�MЍ\rX�Q\\S1B�-бi����0�Qz>.VJ� -�c��Ao���.��@i� �� ����{B�A>�M�:�\$Žk��+r)��-\n\"l\"��������0�af�zۭ��H4\r�V g� `�O��Y��m#X��ު�́E�6������Ƴ�?\0�\n���pOH���6���,�0P�#B8�c���j �\r2Af��.!�C�裒�c�(#��m*��:QK&/1��\r�8`��5#bߒ�\$C���j�\$⧢�H�\nA<Lβ�\"��i�����X�N�%��I��oq��.�O�F2C)#\n�\r����tˤ0���c\0EA�o,�z\"����,L ���,����8�\rN1R�J���\nŎ��\r�0���,�FJ�!�r���P&%<� -c�. �K�n�X����.+��=k��rSE\0b��d�@� \0t ��@�\n`";break;case"zh-tw":$f="�^��%ӕ\\�r�����|% ��u:H�B(\\�4��p�r��neRQ̡D8� S�\n�t*.t�I&�G�N��AʤS�V�: t%9��Sy:\"<�r�ST�, #!��j6�1uL\0�����U:.��I9���B��K&]\nD�X�[� �}-,�r����������&��a;D�x��r4��&�)��s3�S���t�\r�A��b� ��E�E1��ԣ�g:�x�]#0,'}üb1Q�\\y\0�V��E<���g��S� )ЪOLP\0��Δ�MƼ��� 2��F��׶��� �{N͍�@9�����;��#ttn�z�>��D�ql����@g1&Z%�)�T'9jB\nC\"�%)n�j�\"����d�Co{@�IBO���s�Ā���*�O���t�ě��\$d���lY�\nr�%�\0J�B#h۴��P�?t��)�>���`7cH�B7P�.��˪��Vs�e�dX���t�*ʬr���L��)^C kE�4�V��%�\\R�e�pr\$)�X�`P�2\r���@�;9A��9AC�1��+� 6\$\0001@L��4�L���BP��2�\0yj���3��:����x�{��\r�a?�����p_�p�*�J@|6��Ӽ3?�k_C\r��^0����@�QU� T�W��!u2���q�J)!Dtĵ�eن@�/�3�O%tM��P�0�Cs�3�hx� C�`aK�K�R\\��&%��S�o1U�Y+�ɌT�u�#����:��9�%�9{(6C����ℷ��vs�|�s��)�GT��*� UA�\\z�x� �P�@�GI*[�%2[� �#m�cS=�c�7;b��r�%���I'.-�+x�gys���nt�U�fQ�y%�O �~�k��~�\$sŷ�����z���}zr��)]%����z��o�U�\"��K��elm��1�xr2FQj.���0lXF�]�'��y�bA�<�\0���Z!��\0��9�k�:(:C8a;���V��CpujmV\n��\" �4aL)cR�[/�`E��#N�������%�r7�E �*��ё\n�\\��� ��� ��_Ã�C�P��a�s,��c `� T�[c�)�(вcb9+��\"tP0�|B�S\"P�� �.3��i]HYs.��Wz�^k�{�u��q����0'P�T*�a (\$���ik�'`A0V�O5S0Ęh���RC(y/�H��Q\n��%b���A��,�5��lv����� O !�M �B�,\$vО�u�l�L�Aa�`�\0�(�inA���V�Qz1Ff0��.�{/�G�H�@PEH�B��`��!  ��\"�<� ri̳>hM� �=e�CPmB͝A�;Ӻ���Dt\n�\\J�0�I\"G�`L�\n@¸Z�ȜQ �r���x��LJLB�U\0��\0y���4����� �6f�u��Pf?a�6K�l�\r����\"i��P �L*�)!@/�|M�*��D�� �\$V��Z�4A&\"����T ��wG��Bu���i�aM�\0�NA�Z�*��xi��>g��^��?��R a�/�0��ԥ�BP�(O ��*�\0�B�EW�@�-�j�2�Q ����ɑ:�Z݅�A����C�v�:\"��� ��ȸ�g����+ ��2/�D���&E!���y�?W�\"�*���H*�P\"ܲ�b�E7�.\"�\0����q\" ��!�i>�\"�\"����҄�0���]d2�Ȣy�0b%^�k�x5�f�L4���L%�:n��S:vxp��#k ڬ�\0^�ؒ��Ш%��y� �ܥ��f�_�w*ÜZ\n!�/��e�;Fh� {.��B@��D^&^����(��k�v��_Hr��L��@��bd^jҬ9���I\"\0Q���/����^9{��ӗ��ꋱm�T~��� �Ԍ:B�\n�P �0�+�}@� �Wu�Oj1K�t\n�E�x�/��Xlx i�<���nc�6�ݢ�'��\r�}�D\"�X��>/�sx]�K����G��*G/\"1��N�x�G��F\0��r�� ?aݦ���G��Ф㛒E\"G8�sro8����ÑM)�l��P�=1M��:*9�O�;���f�.��KC��aZ(�h�I\"��2nýI�5&F\r�!\nX�I8�����(�\"\rF�����t��{\nH��&š��C��q�dtkO�h���t��1\0/�C�H�\$�E��^�I�U�Te���<J��ȅ\0��h��C��?<.\0F�f������'��%1� j;��SF�C#�}�JI�!ER�T�Ц���H���0�;���H�#�\r��_��mLQhw��oOh���7��<�D�A�ͦ���\"��OZy�\0�~-j�^��bGo� ��n�� ð�\rJ�벻p�J��P���W�j20L�B|D�C���PU�p��\\�*���+@�F��¨(e�zQBt���J*D�P�\r 8b<�hH�����B� �~��L�\r;\nB��MB�c��@�\$��df�l/�\raI-�\\��oF����f�D�-�١m'��1��(��i�2��^ڭ��D�`eg���^r� ��B|�yDy��͓F`*!!\0���}pToLl�ar�m����ģ���#}�Zd�\$P�����bD����t1���1�<��\0�.���a�����-dՅ=mUQ���h���y�� m]�b�mj�IJKd�K�!������ r,H�3�H�.I\" ���\"�^r–̀}'�L(��N\0�?i�`P4�R�ɺFA���Hc�F�.z%�b�E.�~����4�!D!1>��^���`Ƃ@�\rd�>�n&�6(4\r�� �:[�tˀ\r���a��\n���Z�*�;��G⒮�o���8�h ݤ�\0�-��-�D�8�0�69n�L-z{�M\" �޶���\\6�]4�<�\"���C�6\"�,r.g��d������O,z,8�H�dv�.�(a�(��9„c�W��OcP2�3.�\r�����.�pu�*���\np�Z�l�X��� �ο��>B�8N��,��\nŜ��\r�f\0g�φ|�8fNV�N�|.�WB�<ӎ�d>1\n� lSCl\$<ӡ:Q�ra%p���[!�K�� \0t ��@�\n`";break;}$qi=array();foreach(explode("\n",lzw_decompress($f))as$X)$qi[]=(strpos($X,"\t")?explode("\t",$X):$X);return$qi;}if(!$qi){$qi=get_translations($ca);$_SESSION["translations"]=$qi;}if(extension_loaded('pdo')){class -Min_PDO -extends -PDO{var$_result,$server_info,$affected_rows,$errno,$error;function -__construct(){global$b;$bg=array_search("SQL",$b->operators);if($bg!==false)unset($b->operators[$bg]);}function -dsn($kc,$V,$F,$vf=array()){try{parent::__construct($kc,$V,$F,$vf);}catch(Exception$Bc){auth_error(h($Bc->getMessage()));}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=@$this->getAttribute(4);}function -query($G,$_i=false){$H=parent::query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->errorInfo();if(!$this->error)$this->error=lang(21);return -false;}$this->store_result($H);return$H;}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result($H=null){if(!$H){$H=$this->_result;if(!$H)return -false;}if($H->columnCount()){$H->num_rows=$H->rowCount();return$H;}$this->affected_rows=$H->rowCount();return -true;}function -next_result(){if(!$this->_result)return -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function -result($G,$o=0){$H=$this->query($G);if(!$H)return -false;$J=$H->fetch();return$J[$o];}}class -Min_PDOStatement -extends -PDOStatement{var$_offset=0,$num_rows;function -fetch_assoc(){return$this->fetch(2);}function -fetch_row(){return$this->fetch(3);}function -fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=(in_array("blob",(array)$J->flags)?63:0);return$J;}}}$fc=array();class -Min_SQL{var$_conn;function -__construct($g){$this->_conn=$g;}function -select($R,$L,$Z,$od,$xf=array(),$z=1,$E=0,$jg=false){global$b,$x;$Xd=(count($od)<count($L));$G=$b->selectQueryBuild($L,$Z,$od,$xf,$z,$E);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$z!=""&&$od&&$Xd&&$x=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($od&&$Xd?"\nGROUP BY ".implode(", ",$od):"").($xf?"\nORDER BY ".implode(", ",$xf):""),($z!=""?+$z:null),($E?$z*$E:0),"\n");$_h=microtime(true);$I=$this->_conn->query($G);if($jg)echo$b->selectQuery($G,$_h,!$I);return$I;}function -delete($R,$tg,$z=0){$G="FROM ".table($R);return -queries("DELETE".($z?limit1($R,$G,$tg):" $G$tg"));}function -update($R,$O,$tg,$z=0,$M="\n"){$Ri=array();foreach($O -as$y=>$X)$Ri[]="$y = $X";$G=table($R)." SET$M".implode(",$M",$Ri);return -queries("UPDATE".($z?limit1($R,$G,$tg,$M):" $G$tg"));}function -insert($R,$O){return -queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES"));}function -insertUpdate($R,$K,$hg){return -false;}function -begin(){return -queries("BEGIN");}function -commit(){return -queries("COMMIT");}function -rollback(){return -queries("ROLLBACK");}function -slowQuery($G,$bi){}function -convertSearch($u,$X,$o){return$u;}function -value($X,$o){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$o):(is_resource($X)?stream_get_contents($X):$X));}function -quoteBinary($Vg){return -q($Vg);}function -warnings(){return'';}function -tableHelp($C){}}$fc["sqlite"]="SQLite 3";$fc["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){$eg=array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite");define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class -Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function -__construct($Vc){$this->_link=new -SQLite3($Vc);$Ui=$this->_link->version();$this->server_info=$Ui["versionString"];}function -query($G){$H=@$this->_link->query($G);$this->error="";if(!$H){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return -false;}elseif($H->numColumns())return -new -Min_Result($H);$this->affected_rows=$this->_link->changes();return -true;}function -quote($Q){return(is_utf8($Q)?"'".$this->_link->escapeString($Q)."'":"x'".reset(unpack('H*',$Q))."'");}function -store_result(){return$this->_result;}function -result($G,$o=0){$H=$this->query($G);if(!is_object($H))return -false;$J=$H->_result->fetchArray();return$J[$o];}}class -Min_Result{var$_result,$_offset=0,$num_rows;function -__construct($H){$this->_result=$H;}function -fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function -fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function -fetch_field(){$d=$this->_offset++;$U=$this->_result->columnType($d);return(object)array("name"=>$this->_result->columnName($d),"type"=>$U,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function -__desctruct(){return$this->_result->finalize();}}}else{class -Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function -__construct($Vc){$this->server_info=sqlite_libversion();$this->_link=new -SQLiteDatabase($Vc);}function -query($G,$_i=false){$Qe=($_i?"unbufferedQuery":"query");$H=@$this->_link->$Qe($G,SQLITE_BOTH,$n);$this->error="";if(!$H){$this->error=$n;return -false;}elseif($H===true){$this->affected_rows=$this->changes();return -true;}return -new -Min_Result($H);}function -quote($Q){return"'".sqlite_escape_string($Q)."'";}function -store_result(){return$this->_result;}function -result($G,$o=0){$H=$this->query($G);if(!is_object($H))return -false;$J=$H->_result->fetch();return$J[$o];}}class -Min_Result{var$_result,$_offset=0,$num_rows;function -__construct($H){$this->_result=$H;if(method_exists($H,'numRows'))$this->num_rows=$H->numRows();}function -fetch_assoc(){$J=$this->_result->fetch(SQLITE_ASSOC);if(!$J)return -false;$I=array();foreach($J -as$y=>$X)$I[($y[0]=='"'?idf_unescape($y):$y)]=$X;return$I;}function -fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function -fetch_field(){$C=$this->_result->fieldName($this->_offset++);$Xf='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($Xf\\.)?$Xf\$~",$C,$B)){$R=($B[3]!=""?$B[3]:idf_unescape($B[2]));$C=($B[5]!=""?$B[5]:idf_unescape($B[4]));}return(object)array("name"=>$C,"orgname"=>$C,"orgtable"=>$R,);}}}}elseif(extension_loaded("pdo_sqlite")){class -Min_SQLite -extends -Min_PDO{var$extension="PDO_SQLite";function -__construct($Vc){$this->dsn(DRIVER.":$Vc","","");}}}if(class_exists("Min_SQLite")){class -Min_DB -extends -Min_SQLite{function -__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function -select_db($Vc){if(is_readable($Vc)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$Vc)?$Vc:dirname($_SERVER["SCRIPT_FILENAME"])."/$Vc")." AS a")){parent::__construct($Vc);$this->query("PRAGMA foreign_keys = 1");return -true;}return -false;}function -multi_query($G){return$this->_result=$this->query($G);}function -next_result(){return -false;}}}class -Min_Driver -extends -Min_SQL{function -insertUpdate($R,$K,$hg){$Ri=array();foreach($K -as$O)$Ri[]="(".implode(", ",$O).")";return -queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$Ri));}function -tableHelp($C){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -connect(){global$b;list(,,$F)=$b->credentials();if($F!="")return -lang(22);return -new -Min_DB;}function -get_databases(){return -array();}function -limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z".($D?" OFFSET $D":""):"");}function -limit1($R,$G,$Z,$M="\n"){global$g;return(preg_match('~^INTO~',$G)||$g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($G,$Z,1,0,$M):" $G WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$M."LIMIT 1)");}function -db_collation($l,$qb){global$g;return$g->result("PRAGMA encoding");}function -engines(){return -array();}function -logged_user(){return -get_current_user();}function -tables_list(){return -get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function -count_tables($k){return -array();}function -table_status($C=""){global$g;$I=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$J){$J["Rows"]=$g->result("SELECT COUNT(*) FROM ".idf_escape($J["Name"]));$I[$J["Name"]]=$J;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$J)$I[$J["name"]]["Auto_increment"]=$J["seq"];return($C!=""?$I[$C]:$I);}function -is_view($S){return$S["Engine"]=="view";}function -fk_support($S){global$g;return!$g->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function -fields($R){global$g;$I=array();$hg="";foreach(get_rows("PRAGMA table_info(".table($R).")")as$J){$C=$J["name"];$U=strtolower($J["type"]);$Tb=$J["dflt_value"];$I[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~'(.*)'~",$Tb,$B)?str_replace("''","'",$B[1]):($Tb=="NULL"?null:$Tb)),"null"=>!$J["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$J["pk"],);if($J["pk"]){if($hg!="")$I[$hg]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$I[$C]["auto_increment"]=true;$hg=$C;}}$vh=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$vh,$Ce,PREG_SET_ORDER);foreach($Ce -as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($I[$C])$I[$C]["collation"]=trim($B[3],"'");}return$I;}function -indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$vh=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$vh,$B)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$Ce,PREG_SET_ORDER);foreach($Ce -as$B){$I[""]["columns"][]=idf_unescape($B[2]).$B[4];$I[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$I){foreach(fields($R)as$C=>$o){if($o["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$yh=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$h);foreach(get_rows("PRAGMA index_list(".table($R).")",$h)as$J){$C=$J["name"];$v=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$h)as$Ug){$v["columns"][]=$Ug["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$yh[$C],$Eg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Eg[2],$Ce);foreach($Ce[2]as$y=>$X){if($X)$v["descs"][$y]='1';}}if(!$I[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$I[""]["columns"]||$v["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$C))$I[$C]=$v;}return$I;}function -foreign_keys($R){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$J){$q=&$I[$J["id"]];if(!$q)$q=$J;$q["source"][]=$J["from"];$q["target"][]=$J["to"];}return$I;}function -view($C){global$g;return -array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($C))));}function -collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function -information_schema($l){return -false;}function -error(){global$g;return -h($g->error);}function -check_sqlite_name($C){global$g;$Lc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Lc)\$~",$C)){$g->error=lang(23,str_replace("|",", ",$Lc));return -false;}return -true;}function -create_database($l,$pb){global$g;if(file_exists($l)){$g->error=lang(24);return -false;}if(!check_sqlite_name($l))return -false;try{$_=new -Min_SQLite($l);}catch(Exception$Bc){$g->error=$Bc->getMessage();return -false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return -true;}function -drop_databases($k){global$g;$g->__construct(":memory:");foreach($k -as$l){if(!@unlink($l)){$g->error=lang(24);return -false;}}return -true;}function -rename_database($C,$pb){global$g;if(!check_sqlite_name($C))return -false;$g->__construct(":memory:");$g->error=lang(24);return@rename(DB,$C);}function -auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){$Li=($R==""||$dd);foreach($p -as$o){if($o[0]!=""||!$o[1]||$o[2]){$Li=true;break;}}$c=array();$Ff=array();foreach($p -as$o){if($o[1]){$c[]=($Li?$o[1]:"ADD ".implode($o[1]));if($o[0]!="")$Ff[$o[0]]=$o[1][0];}}if(!$Li){foreach($c -as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return -false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return -false;}elseif(!recreate_table($R,$C,$c,$Ff,$dd))return -false;if($Ma)queries("UPDATE sqlite_sequence SET seq = $Ma WHERE name = ".q($C));return -true;}function -recreate_table($R,$C,$p,$Ff,$dd,$w=array()){if($R!=""){if(!$p){foreach(fields($R)as$y=>$o){if($w)$o["auto_increment"]=0;$p[]=process_field($o,$o);$Ff[$y]=idf_escape($y);}}$ig=false;foreach($p -as$o){if($o[6])$ig=true;}$ic=array();foreach($w -as$y=>$X){if($X[2]=="DROP"){$ic[$X[1]]=true;unset($w[$y]);}}foreach(indexes($R)as$fe=>$v){$e=array();foreach($v["columns"]as$y=>$d){if(!$Ff[$d])continue -2;$e[]=$Ff[$d].($v["descs"][$y]?" DESC":"");}if(!$ic[$fe]){if($v["type"]!="PRIMARY"||!$ig)$w[]=array($v["type"],$fe,$e);}}foreach($w -as$y=>$X){if($X[0]=="PRIMARY"){unset($w[$y]);$dd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$fe=>$q){foreach($q["source"]as$y=>$d){if(!$Ff[$d])continue -2;$q["source"][$y]=idf_unescape($Ff[$d]);}if(!isset($dd[" $fe"]))$dd[]=" ".format_foreign_key($q);}queries("BEGIN");}foreach($p -as$y=>$o)$p[$y]=" ".implode($o);$p=array_merge($p,array_filter($dd));if(!queries("CREATE TABLE ".table($R!=""?"adminer_$C":$C)." (\n".implode(",\n",$p)."\n)"))return -false;if($R!=""){if($Ff&&!queries("INSERT INTO ".table("adminer_$C")." (".implode(", ",$Ff).") SELECT ".implode(", ",array_map('idf_escape',array_keys($Ff)))." FROM ".table($R)))return -false;$wi=array();foreach(triggers($R)as$ui=>$ci){$ti=trigger($ui);$wi[]="CREATE TRIGGER ".idf_escape($ui)." ".implode(" ",$ci)." ON ".table($C)."\n$ti[Statement]";}if(!queries("DROP TABLE ".table($R)))return -false;queries("ALTER TABLE ".table("adminer_$C")." RENAME TO ".table($C));if(!alter_indexes($C,$w))return -false;foreach($wi -as$ti){if(!queries($ti))return -false;}queries("COMMIT");}return -true;}function -index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $e";}function -alter_indexes($R,$c){foreach($c -as$hg){if($hg[0]=="PRIMARY")return -recreate_table($R,$R,array(),array(),array(),$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return -false;}return -true;}function -truncate_tables($T){return -apply_queries("DELETE FROM",$T);}function -drop_views($Wi){return -apply_queries("DROP VIEW",$Wi);}function -drop_tables($T){return -apply_queries("DROP TABLE",$T);}function -move_tables($T,$Wi,$Th){return -false;}function -trigger($C){global$g;if($C=="")return -array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$vi=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$vi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$g->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$gf=$B[3];return -array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($gf?" OF":""),"Of"=>($gf[0]=='`'||$gf[0]=='"'?idf_unescape($gf):$gf),"Trigger"=>$C,"Statement"=>$B[4],);}function -triggers($R){$I=array();$vi=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$J){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$vi["Timing"]).')\s*(.*)\s+ON\b~iU',$J["sql"],$B);$I[$J["name"]]=array($B[1],$B[2]);}return$I;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function -begin(){return -queries("BEGIN");}function -last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function -explain($g,$G){return$g->query("EXPLAIN QUERY PLAN $G");}function -found_rows($S,$Z){}function -types(){return -array();}function -schemas(){return -array();}function -get_schema(){return"";}function -set_schema($Yg){return -true;}function -create_sql($R,$Ma,$Eh){global$g;$I=$g->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$I.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('idf_escape',$v['columns'])).")");}return$I;}function -truncate_sql($R){return"DELETE FROM ".table($R);}function -use_sql($j){}function -trigger_sql($R){return -implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function -show_variables(){global$g;$I=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$y)$I[$y]=$g->result("PRAGMA $y");return$I;}function -show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$uf){list($y,$X)=explode("=",$uf,2);$I[$y]=$X;}return$I;}function -convert_field($o){}function -unconvert_field($o,$I){return$I;}function -support($Qc){return -preg_match('~^(columns|database|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Qc);}$x="sqlite";$zi=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$Dh=array_keys($zi);$Fi=array();$sf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");$ld=array("hex","length","lower","round","unixepoch","upper");$rd=array("avg","count","count distinct","group_concat","max","min","sum");$nc=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}$fc["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){$eg=array("PgSQL","PDO_PgSQL");define("DRIVER","pgsql");if(extension_loaded("pgsql")){class -Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error,$timeout;function -_error($yc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function -connect($N,$V,$F){global$b;$l=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$l!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Ui=pg_version($this->_link);$this->server_info=$Ui["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function -quote($Q){return"'".pg_escape_string($this->_link,$Q)."'";}function -value($X,$o){return($o["type"]=="bytea"?pg_unescape_bytea($X):$X);}function -quoteBinary($Q){return"'".pg_escape_bytea($this->_link,$Q)."'";}function -select_db($j){global$b;if($j==$b->database())return$this->_database;$I=@pg_connect("$this->_string dbname='".addcslashes($j,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->_link=$I;return$I;}function -close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function -query($G,$_i=false){$H=@pg_query($this->_link,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->_link);$I=false;}elseif(!pg_num_fields($H)){$this->affected_rows=pg_affected_rows($H);$I=true;}else$I=new -Min_Result($H);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result(){return$this->_result;}function -next_result(){return -false;}function -result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return -false;return -pg_fetch_result($H->_result,0,$o);}function -warnings(){return -h(pg_last_notice($this->_link));}}class -Min_Result{var$_result,$_offset=0,$num_rows;function -__construct($H){$this->_result=$H;$this->num_rows=pg_num_rows($H);}function -fetch_assoc(){return -pg_fetch_assoc($this->_result);}function -fetch_row(){return -pg_fetch_row($this->_result);}function -fetch_field(){$d=$this->_offset++;$I=new -stdClass;if(function_exists('pg_field_table'))$I->orgtable=pg_field_table($this->_result,$d);$I->name=pg_field_name($this->_result,$d);$I->orgname=$I->name;$I->type=pg_field_type($this->_result,$d);$I->charsetnr=($I->type=="bytea"?63:0);return$I;}function -__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class -Min_DB -extends -Min_PDO{var$extension="PDO_PgSQL",$timeout;function -connect($N,$V,$F){global$b;$l=$b->database();$Q="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' options='-c client_encoding=utf8'";$this->dsn("$Q dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",$V,$F);return -true;}function -select_db($j){global$b;return($b->database()==$j);}function -quoteBinary($Vg){return -q($Vg);}function -query($G,$_i=false){$I=parent::query($G,$_i);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}function -warnings(){return'';}function -close(){}}}class -Min_Driver -extends -Min_SQL{function -insertUpdate($R,$K,$hg){global$g;foreach($K -as$O){$Gi=array();$Z=array();foreach($O -as$y=>$X){$Gi[]="$y = $X";if(isset($hg[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Gi)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return -false;}return -true;}function -slowQuery($G,$bi){$this->_conn->query("SET statement_timeout = ".(1000*$bi));$this->_conn->timeout=1000*$bi;return$G;}function -convertSearch($u,$X,$o){return(preg_match('~char|text'.(!preg_match('~LIKE~',$X["op"])?'|date|time(stamp)?|boolean|uuid|'.number_type():'').'~',$o["type"])?$u:"CAST($u AS text)");}function -quoteBinary($Vg){return$this->_conn->quoteBinary($Vg);}function -warnings(){return$this->_conn->warnings();}function -tableHelp($C){$we=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$_=$we[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -connect(){global$b,$zi,$Dh;$g=new -Min_DB;$Hb=$b->credentials();if($g->connect($Hb[0],$Hb[1],$Hb[2])){if(min_version(9,0,$g)){$g->query("SET application_name = 'Adminer'");if(min_version(9.2,0,$g)){$Dh[lang(25)][]="json";$zi["json"]=4294967295;if(min_version(9.4,0,$g)){$Dh[lang(25)][]="jsonb";$zi["jsonb"]=4294967295;}}}return$g;}return$g->error;}function -get_databases(){return -get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");}function -limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z".($D?" OFFSET $D":""):"");}function -limit1($R,$G,$Z,$M="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$M):" $G".(is_view(table_status1($R))?$Z:" WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$M."LIMIT 1)"));}function -db_collation($l,$qb){global$g;return$g->result("SHOW LC_COLLATE");}function -engines(){return -array();}function -logged_user(){global$g;return$g->result("SELECT user");}function -tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support('materializedview'))$G.=" -UNION ALL -SELECT matviewname, 'MATERIALIZED VIEW' -FROM pg_matviews -WHERE schemaname = current_schema()";$G.=" -ORDER BY 1";return -get_key_vals($G);}function -count_tables($k){return -array();}function -table_status($C=""){$I=array();foreach(get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", CASE WHEN c.relhasoids THEN 'oid' ELSE '' END AS \"Oid\", c.reltuples as \"Rows\", n.nspname -FROM pg_class c -JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace) -WHERE relkind IN ('r', 'm', 'v', 'f') -".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return($C!=""?$I[$C]:$I);}function -is_view($S){return -in_array($S["Engine"],array("view","materialized view"));}function -fk_support($S){return -true;}function -fields($R){$I=array();$Da=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment -FROM pg_class c -JOIN pg_namespace n ON c.relnamespace = n.oid -JOIN pg_attribute a ON c.oid = a.attrelid -LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum -WHERE c.relname = ".q($R)." -AND n.nspname = current_schema() -AND NOT a.attisdropped -AND a.attnum > 0 -ORDER BY a.attnum")as$J){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$J["full_type"],$B);list(,$U,$te,$J["length"],$xa,$Ga)=$B;$J["length"].=$Ga;$eb=$U.$xa;if(isset($Da[$eb])){$J["type"]=$Da[$eb];$J["full_type"]=$J["type"].$te.$Ga;}else{$J["type"]=$U;$J["full_type"]=$J["type"].$te.$xa.$Ga;}$J["null"]=!$J["attnotnull"];$J["auto_increment"]=preg_match('~^nextval\(~i',$J["default"]);$J["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~(.+)::[^)]+(.*)~',$J["default"],$B))$J["default"]=($B[1]=="NULL"?null:(($B[1][0]=="'"?idf_unescape($B[1]):$B[1]).$B[2]));$I[$J["field"]]=$J;}return$I;}function -indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Mh=$h->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R));$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Mh AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $Mh AND ci.oid = i.indexrelid",$h)as$J){$Fg=$J["relname"];$I[$Fg]["type"]=($J["indispartial"]?"INDEX":($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX")));$I[$Fg]["columns"]=array();foreach(explode(" ",$J["indkey"])as$Md)$I[$Fg]["columns"][]=$e[$Md];$I[$Fg]["descs"]=array();foreach(explode(" ",$J["indoption"])as$Nd)$I[$Fg]["descs"][]=($Nd&1?'1':null);$I[$Fg]["lengths"]=array();}return$I;}function -foreign_keys($R){global$nf;$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition -FROM pg_constraint -WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema()) -AND contype = 'f'::char -ORDER BY conkey, conname")as$J){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$B)){$J['source']=array_map('trim',explode(',',$B[1]));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$Be)){$J['ns']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Be[2]));$J['table']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Be[4]));}$J['target']=array_map('trim',explode(',',$B[3]));$J['on_delete']=(preg_match("~ON DELETE ($nf)~",$B[4],$Be)?$Be[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE ($nf)~",$B[4],$Be)?$Be[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function -view($C){global$g;return -array("select"=>trim($g->result("SELECT view_definition -FROM information_schema.views -WHERE table_schema = current_schema() AND table_name = ".q($C))));}function -collations(){return -array();}function -information_schema($l){return($l=="information_schema");}function -error(){global$g;$I=h($g->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$B))$I=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\1<b>\2</b>',$B[2]).$B[4];return -nl_br($I);}function -create_database($l,$pb){return -queries("CREATE DATABASE ".idf_escape($l).($pb?" ENCODING ".idf_escape($pb):""));}function -drop_databases($k){global$g;$g->close();return -apply_queries("DROP DATABASE",$k,'idf_escape');}function -rename_database($C,$pb){return -queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function -auto_increment(){return"";}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){$c=array();$sg=array();foreach($p -as$o){$d=idf_escape($o[0]);$X=$o[1];if(!$X)$c[]="DROP $d";else{$Qi=$X[5];unset($X[5]);if(isset($X[6])&&$o[0]=="")$X[1]=($X[1]=="bigint"?" big":" ")."serial";if($o[0]=="")$c[]=($R!=""?"ADD ":" ").implode($X);else{if($d!=$X[0])$sg[]="ALTER TABLE ".table($R)." RENAME $d TO $X[0]";$c[]="ALTER $d TYPE$X[1]";if(!$X[6]){$c[]="ALTER $d ".($X[3]?"SET$X[3]":"DROP DEFAULT");$c[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($o[0]!=""||$Qi!="")$sg[]="COMMENT ON COLUMN ".table($R).".$X[0] IS ".($Qi!=""?substr($Qi,9):"''");}}$c=array_merge($c,$dd);if($R=="")array_unshift($sg,"CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($sg,"ALTER TABLE ".table($R)."\n".implode(",\n",$c));if($R!=""&&$R!=$C)$sg[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);if($R!=""||$vb!="")$sg[]="COMMENT ON TABLE ".table($C)." IS ".q($vb);if($Ma!=""){}foreach($sg -as$G){if(!queries($G))return -false;}return -true;}function -alter_indexes($R,$c){$i=array();$gc=array();$sg=array();foreach($c -as$X){if($X[0]!="INDEX")$i[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$gc[]=idf_escape($X[1]);else$sg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($i)array_unshift($sg,"ALTER TABLE ".table($R).implode(",",$i));if($gc)array_unshift($sg,"DROP INDEX ".implode(", ",$gc));foreach($sg -as$G){if(!queries($G))return -false;}return -true;}function -truncate_tables($T){return -queries("TRUNCATE ".implode(", ",array_map('table',$T)));return -true;}function -drop_views($Wi){return -drop_tables($Wi);}function -drop_tables($T){foreach($T -as$R){$P=table_status($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return -false;}return -true;}function -move_tables($T,$Wi,$Th){foreach(array_merge($T,$Wi)as$R){$P=table_status($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Th)))return -false;}return -true;}function -trigger($C,$R=null){if($C=="")return -array("Statement"=>"EXECUTE PROCEDURE ()");if($R===null)$R=$_GET['trigger'];$K=get_rows('SELECT t.trigger_name AS "Trigger", t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') FROM information_schema.triggers WHERE event_object_table = t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS "Type", t.action_statement AS "Statement" FROM information_schema.triggers t WHERE t.event_object_table = '.q($R).' AND t.trigger_name = '.q($C));return -reset($K);}function -triggers($R){$I=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".q($R))as$J)$I[$J["trigger_name"]]=array($J["action_timing"],$J["event_manipulation"]);return$I;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function -routine($C,$U){$K=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, * -FROM information_schema.routines -WHERE routine_schema = current_schema() AND specific_name = '.q($C));$I=$K[0];$I["returns"]=array("type"=>$I["type_udt_name"]);$I["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout -FROM information_schema.parameters -WHERE specific_schema = current_schema() AND specific_name = '.q($C).' -ORDER BY ordinal_position');return$I;}function -routines(){return -get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER" -FROM information_schema.routines -WHERE routine_schema = current_schema() -ORDER BY SPECIFIC_NAME');}function -routine_languages(){return -get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function -routine_id($C,$J){$I=array();foreach($J["fields"]as$o)$I[]=$o["type"];return -idf_escape($C)."(".implode(", ",$I).")";}function -last_id(){return -0;}function -explain($g,$G){return$g->query("EXPLAIN $G");}function -found_rows($S,$Z){global$g;if(preg_match("~ rows=([0-9]+)~",$g->result("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Eg))return$Eg[1];return -false;}function -types(){return -get_vals("SELECT typname -FROM pg_type -WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) -AND typtype IN ('b','d','e') -AND typelem = 0");}function -schemas(){return -get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function -get_schema(){global$g;return$g->result("SELECT current_schema()");}function -set_schema($Xg){global$g,$zi,$Dh;$I=$g->query("SET search_path TO ".idf_escape($Xg));foreach(types()as$U){if(!isset($zi[$U])){$zi[$U]=0;$Dh[lang(26)][]=$U;}}return$I;}function -create_sql($R,$Ma,$Eh){global$g;$I='';$Ng=array();$hh=array();$P=table_status($R);$p=fields($R);$w=indexes($R);ksort($w);$ad=foreign_keys($R);ksort($ad);if(!$P||empty($p))return -false;$I="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($p -as$Sc=>$o){$Of=idf_escape($o['field']).' '.$o['full_type'].default_value($o).($o['attnotnull']?" NOT NULL":"");$Ng[]=$Of;if(preg_match('~nextval\(\'([^\']+)\'\)~',$o['default'],$Ce)){$gh=$Ce[1];$uh=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($gh):"SELECT * FROM $gh"));$hh[]=($Eh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $gh;\n":"")."CREATE SEQUENCE $gh INCREMENT $uh[increment_by] MINVALUE $uh[min_value] MAXVALUE $uh[max_value] START ".($Ma?$uh['last_value']:1)." CACHE $uh[cache_value];";}}if(!empty($hh))$I=implode("\n\n",$hh)."\n\n$I";foreach($w -as$Hd=>$v){switch($v['type']){case'UNIQUE':$Ng[]="CONSTRAINT ".idf_escape($Hd)." UNIQUE (".implode(', ',array_map('idf_escape',$v['columns'])).")";break;case'PRIMARY':$Ng[]="CONSTRAINT ".idf_escape($Hd)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$v['columns'])).")";break;}}foreach($ad -as$Zc=>$Yc)$Ng[]="CONSTRAINT ".idf_escape($Zc)." $Yc[definition] ".($Yc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE');$I.=implode(",\n ",$Ng)."\n) WITH (oids = ".($P['Oid']?'true':'false').");";foreach($w -as$Hd=>$v){if($v['type']=='INDEX')$I.="\n\nCREATE INDEX ".idf_escape($Hd)." ON ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." USING btree (".implode(', ',array_map('idf_escape',$v['columns'])).");";}if($P['Comment'])$I.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($p -as$Sc=>$o){if($o['comment'])$I.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Sc)." IS ".q($o['comment']).";";}return -rtrim($I,';');}function -truncate_sql($R){return"TRUNCATE ".table($R);}function -trigger_sql($R){$P=table_status($R);$I="";foreach(triggers($R)as$si=>$ri){$ti=trigger($si,$P['Name']);$I.="\nCREATE TRIGGER ".idf_escape($ti['Trigger'])." $ti[Timing] $ti[Events] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $ti[Type] $ti[Statement];;\n";}return$I;}function -use_sql($j){return"\connect ".idf_escape($j);}function -show_variables(){return -get_key_vals("SHOW ALL");}function -process_list(){return -get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function -show_status(){}function -convert_field($o){}function -unconvert_field($o,$I){return$I;}function -support($Qc){return -preg_match('~^(database|table|columns|sql|indexes|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~',$Qc);}function -kill_process($X){return -queries("SELECT pg_terminate_backend(".number($X).")");}function -connection_id(){return"SELECT pg_backend_pid()";}function -max_connections(){global$g;return$g->result("SHOW max_connections");}$x="pgsql";$zi=array();$Dh=array();foreach(array(lang(27)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(28)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),lang(25)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(29)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(30)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),lang(31)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$y=>$X){$zi+=$X;$Dh[$y]=array_keys($X);}$Fi=array();$sf=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$ld=array("char_length","lower","round","to_hex","to_timestamp","upper");$rd=array("avg","count","count distinct","max","min","sum");$nc=array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}$fc["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){$eg=array("OCI8","PDO_OCI");define("DRIVER","oracle");if(extension_loaded("oci8")){class -Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$errno,$error;function -_error($yc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function -connect($N,$V,$F){$this->_link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return -true;}$n=oci_error();$this->error=$n["message"];return -false;}function -quote($Q){return"'".str_replace("'","''",$Q)."'";}function -select_db($j){return -true;}function -query($G,$_i=false){$H=oci_parse($this->_link,$G);$this->error="";if(!$H){$n=oci_error($this->_link);$this->errno=$n["code"];$this->error=$n["message"];return -false;}set_error_handler(array($this,'_error'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return -new -Min_Result($H);$this->affected_rows=oci_num_rows($H);}return$I;}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result(){return$this->_result;}function -next_result(){return -false;}function -result($G,$o=1){$H=$this->query($G);if(!is_object($H)||!oci_fetch($H->_result))return -false;return -oci_result($H->_result,$o);}}class -Min_Result{var$_result,$_offset=1,$num_rows;function -__construct($H){$this->_result=$H;}function -_convert($J){foreach((array)$J -as$y=>$X){if(is_a($X,'OCI-Lob'))$J[$y]=$X->load();}return$J;}function -fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function -fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function -fetch_field(){$d=$this->_offset++;$I=new -stdClass;$I->name=oci_field_name($this->_result,$d);$I->orgname=$I->name;$I->type=oci_field_type($this->_result,$d);$I->charsetnr=(preg_match("~raw|blob|bfile~",$I->type)?63:0);return$I;}function -__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class -Min_DB -extends -Min_PDO{var$extension="PDO_OCI";function -connect($N,$V,$F){$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);return -true;}function -select_db($j){return -true;}}}class -Min_Driver -extends -Min_SQL{function -begin(){return -true;}}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -connect(){global$b;$g=new -Min_DB;$Hb=$b->credentials();if($g->connect($Hb[0],$Hb[1],$Hb[2]))return$g;return$g->error;}function -get_databases(){return -get_vals("SELECT tablespace_name FROM user_tablespaces");}function -limit($G,$Z,$z,$D=0,$M=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($z+$D).") WHERE rnum > $D":($z!==null?" * FROM (SELECT $G$Z) WHERE rownum <= ".($z+$D):" $G$Z"));}function -limit1($R,$G,$Z,$M="\n"){return" $G$Z";}function -db_collation($l,$qb){global$g;return$g->result("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function -engines(){return -array();}function -logged_user(){global$g;return$g->result("SELECT USER FROM DUAL");}function -tables_list(){return -get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)." -UNION SELECT view_name, 'view' FROM user_views -ORDER BY 1");}function -count_tables($k){return -array();}function -table_status($C=""){$I=array();$Zg=q($C);foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q(DB).($C!=""?" AND table_name = $Zg":"")." -UNION SELECT view_name, 'view', 0, 0 FROM user_views".($C!=""?" WHERE view_name = $Zg":"")." -ORDER BY 1")as$J){if($C!="")return$J;$I[$J["Name"]]=$J;}return$I;}function -is_view($S){return$S["Engine"]=="view";}function -fk_support($S){return -true;}function -fields($R){$I=array();foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)." ORDER BY column_id")as$J){$U=$J["DATA_TYPE"];$te="$J[DATA_PRECISION],$J[DATA_SCALE]";if($te==",")$te=$J["DATA_LENGTH"];$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$U.($te?"($te)":""),"type"=>strtolower($U),"length"=>$te,"default"=>$J["DATA_DEFAULT"],"null"=>($J["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$I;}function -indexes($R,$h=null){$I=array();foreach(get_rows("SELECT uic.*, uc.constraint_type -FROM user_ind_columns uic -LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name -WHERE uic.table_name = ".q($R)." -ORDER BY uc.constraint_type, uic.column_position",$h)as$J){$Hd=$J["INDEX_NAME"];$I[$Hd]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Hd]["columns"][]=$J["COLUMN_NAME"];$I[$Hd]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Hd]["descs"][]=($J["DESCEND"]?'1':null);}return$I;}function -view($C){$K=get_rows('SELECT text "select" FROM user_views WHERE view_name = '.q($C));return -reset($K);}function -collations(){return -array();}function -information_schema($l){return -false;}function -error(){global$g;return -h($g->error);}function -explain($g,$G){$g->query("EXPLAIN PLAN FOR $G");return$g->query("SELECT * FROM plan_table");}function -found_rows($S,$Z){}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){$c=$gc=array();foreach($p -as$o){$X=$o[1];if($X&&$o[0]!=""&&idf_escape($o[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($o[0])." TO $X[0]");if($X)$c[]=($R!=""?($o[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$gc[]=idf_escape($o[0]);}if($R=="")return -queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($R)."\n".implode("\n",$c)))&&(!$gc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$gc).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function -foreign_keys($R){$I=array();$G="SELECT c_list.CONSTRAINT_NAME as NAME, -c_src.COLUMN_NAME as SRC_COLUMN, -c_dest.OWNER as DEST_DB, -c_dest.TABLE_NAME as DEST_TABLE, -c_dest.COLUMN_NAME as DEST_COLUMN, -c_list.DELETE_RULE as ON_DELETE -FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest -WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME -AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME -AND c_list.CONSTRAINT_TYPE = 'R' -AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($G)as$J)$I[$J['NAME']]=array("db"=>$J['DEST_DB'],"table"=>$J['DEST_TABLE'],"source"=>array($J['SRC_COLUMN']),"target"=>array($J['DEST_COLUMN']),"on_delete"=>$J['ON_DELETE'],"on_update"=>null,);return$I;}function -truncate_tables($T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views($Wi){return -apply_queries("DROP VIEW",$Wi);}function -drop_tables($T){return -apply_queries("DROP TABLE",$T);}function -last_id(){return -0;}function -schemas(){return -get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))");}function -get_schema(){global$g;return$g->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function -set_schema($Yg){global$g;return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Yg));}function -show_variables(){return -get_key_vals('SELECT name, display_value FROM v$parameter');}function -process_list(){return -get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port" -FROM v$session sess LEFT OUTER JOIN v$sql sql -ON sql.sql_id = sess.sql_id -WHERE sess.type = \'USER\' -ORDER BY PROCESS -');}function -show_status(){$K=get_rows('SELECT * FROM v$instance');return -reset($K);}function -convert_field($o){}function -unconvert_field($o,$I){return$I;}function -support($Qc){return -preg_match('~^(columns|database|drop_col|indexes|processlist|scheme|sql|status|table|variables|view|view_trigger)$~',$Qc);}$x="oracle";$zi=array();$Dh=array();foreach(array(lang(27)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(28)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(25)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(29)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$y=>$X){$zi+=$X;$Dh[$y]=array_keys($X);}$Fi=array();$sf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$ld=array("length","lower","round","upper");$rd=array("avg","count","count distinct","max","min","sum");$nc=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));}$fc["mssql"]="MS SQL (beta)";if(isset($_GET["mssql"])){$eg=array("SQLSRV","MSSQL","PDO_DBLIB");define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class -Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$errno,$error;function -_get_error(){$this->error="";foreach(sqlsrv_errors()as$n){$this->errno=$n["code"];$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function -connect($N,$V,$F){$this->_link=@sqlsrv_connect(preg_replace('~:~',',',$N),array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8"));if($this->_link){$Od=sqlsrv_server_info($this->_link);$this->server_info=$Od['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function -quote($Q){return"'".str_replace("'","''",$Q)."'";}function -select_db($j){return$this->query("USE ".idf_escape($j));}function -query($G,$_i=false){$H=sqlsrv_query($this->_link,$G);$this->error="";if(!$H){$this->_get_error();return -false;}return$this->store_result($H);}function -multi_query($G){$this->_result=sqlsrv_query($this->_link,$G);$this->error="";if(!$this->_result){$this->_get_error();return -false;}return -true;}function -store_result($H=null){if(!$H)$H=$this->_result;if(!$H)return -false;if(sqlsrv_field_metadata($H))return -new -Min_Result($H);$this->affected_rows=sqlsrv_rows_affected($H);return -true;}function -next_result(){return$this->_result?sqlsrv_next_result($this->_result):null;}function -result($G,$o=0){$H=$this->query($G);if(!is_object($H))return -false;$J=$H->fetch_row();return$J[$o];}}class -Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function -__construct($H){$this->_result=$H;}function -_convert($J){foreach((array)$J -as$y=>$X){if(is_a($X,'DateTime'))$J[$y]=$X->format("Y-m-d H:i:s");}return$J;}function -fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function -fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function -fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$o=$this->_fields[$this->_offset++];$I=new -stdClass;$I->name=$o["Name"];$I->orgname=$o["Name"];$I->type=($o["Type"]==1?254:0);return$I;}function -seek($D){for($s=0;$s<$D;$s++)sqlsrv_fetch($this->_result);}function -__destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class -Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function -connect($N,$V,$F){$this->_link=@mssql_connect($N,$V,$F);if($this->_link){$H=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");if($H){$J=$H->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$J[0]] $J[1]";}}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function -quote($Q){return"'".str_replace("'","''",$Q)."'";}function -select_db($j){return -mssql_select_db($j);}function -query($G,$_i=false){$H=@mssql_query($G,$this->_link);$this->error="";if(!$H){$this->error=mssql_get_last_message();return -false;}if($H===true){$this->affected_rows=mssql_rows_affected($this->_link);return -true;}return -new -Min_Result($H);}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result(){return$this->_result;}function -next_result(){return -mssql_next_result($this->_result->_result);}function -result($G,$o=0){$H=$this->query($G);if(!is_object($H))return -false;return -mssql_result($H->_result,0,$o);}}class -Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function -__construct($H){$this->_result=$H;$this->num_rows=mssql_num_rows($H);}function -fetch_assoc(){return -mssql_fetch_assoc($this->_result);}function -fetch_row(){return -mssql_fetch_row($this->_result);}function -num_rows(){return -mssql_num_rows($this->_result);}function -fetch_field(){$I=mssql_fetch_field($this->_result);$I->orgtable=$I->table;$I->orgname=$I->name;return$I;}function -seek($D){mssql_data_seek($this->_result,$D);}function -__destruct(){mssql_free_result($this->_result);}}}elseif(extension_loaded("pdo_dblib")){class -Min_DB -extends -Min_PDO{var$extension="PDO_DBLIB";function -connect($N,$V,$F){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);return -true;}function -select_db($j){return$this->query("USE ".idf_escape($j));}}}class -Min_Driver -extends -Min_SQL{function -insertUpdate($R,$K,$hg){foreach($K -as$O){$Gi=array();$Z=array();foreach($O -as$y=>$X){$Gi[]="$y = $X";if(isset($hg[idf_unescape($y)]))$Z[]="$y = $X";}if(!queries("MERGE ".table($R)." USING (VALUES(".implode(", ",$O).")) AS source (c".implode(", c",range(1,count($O))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$Gi)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).");"))return -false;}return -true;}function -begin(){return -queries("BEGIN TRANSACTION");}}function -idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function -table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function -connect(){global$b;$g=new -Min_DB;$Hb=$b->credentials();if($g->connect($Hb[0],$Hb[1],$Hb[2]))return$g;return$g->error;}function -get_databases(){return -get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function -limit($G,$Z,$z,$D=0,$M=" "){return($z!==null?" TOP (".($z+$D).")":"")." $G$Z";}function -limit1($R,$G,$Z,$M="\n"){return -limit($G,$Z,1,0,$M);}function -db_collation($l,$qb){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($l));}function -engines(){return -array();}function -logged_user(){global$g;return$g->result("SELECT SUSER_NAME()");}function -tables_list(){return -get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function -count_tables($k){global$g;$I=array();foreach($k -as$l){$g->select_db($l);$I[$l]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function -table_status($C=""){$I=array();foreach(get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$J){if($C!="")return$J;$I[$J["Name"]]=$J;}return$I;}function -is_view($S){return$S["Engine"]=="VIEW";}function -fk_support($S){return -true;}function -fields($R){$I=array();foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default] -FROM sys.all_columns c -JOIN sys.all_objects o ON c.object_id = o.object_id -JOIN sys.types t ON c.user_type_id = t.user_type_id -LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id -WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN ('S', 'U', 'V') AND o.name = ".q($R))as$J){$U=$J["type"];$te=(preg_match("~char|binary~",$U)?$J["max_length"]:($U=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$U.($te?"($te)":""),"type"=>$U,"length"=>$te,"default"=>$J["default"],"null"=>$J["is_nullable"],"auto_increment"=>$J["is_identity"],"collation"=>$J["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$J["is_identity"],);}return$I;}function -indexes($R,$h=null){$I=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key -FROM sys.indexes i -INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id -INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id -WHERE OBJECT_NAME(i.object_id) = ".q($R),$h)as$J){$C=$J["name"];$I[$C]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$C]["lengths"]=array();$I[$C]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$C]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?'1':null);}return$I;}function -view($C){global$g;return -array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',$g->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function -collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$pb)$I[preg_replace('~_.*~','',$pb)][]=$pb;return$I;}function -information_schema($l){return -false;}function -error(){global$g;return -nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$g->error)));}function -create_database($l,$pb){return -queries("CREATE DATABASE ".idf_escape($l).(preg_match('~^[a-z0-9_]+$~i',$pb)?" COLLATE $pb":""));}function -drop_databases($k){return -queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$k)));}function -rename_database($C,$pb){if(preg_match('~^[a-z0-9_]+$~i',$pb))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $pb");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return -true;}function -auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){$c=array();foreach($p -as$o){$d=idf_escape($o[0]);$X=$o[1];if(!$X)$c["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);if($o[0]=="")$c["ADD"][]="\n ".implode("",$X).($R==""?substr($dd[$X[0]],16+strlen($X[0])):"");else{unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$X)][]="";}}}if($R=="")return -queries("CREATE TABLE ".table($C)." (".implode(",",(array)$c["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($dd)$c[""]=$dd;foreach($c -as$y=>$X){if(!queries("ALTER TABLE ".idf_escape($C)." $y".implode(",",$X)))return -false;}return -true;}function -alter_indexes($R,$c){$v=array();$gc=array();foreach($c -as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$gc[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return -false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$gc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$gc)));}function -last_id(){global$g;return$g->result("SELECT SCOPE_IDENTITY()");}function -explain($g,$G){$g->query("SET SHOWPLAN_ALL ON");$I=$g->query($G);$g->query("SET SHOWPLAN_ALL OFF");return$I;}function -found_rows($S,$Z){}function -foreign_keys($R){$I=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R))as$J){$q=&$I[$J["FK_NAME"]];$q["table"]=$J["PKTABLE_NAME"];$q["source"][]=$J["FKCOLUMN_NAME"];$q["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function -truncate_tables($T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views($Wi){return -queries("DROP VIEW ".implode(", ",array_map('table',$Wi)));}function -drop_tables($T){return -queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function -move_tables($T,$Wi,$Th){return -apply_queries("ALTER SCHEMA ".idf_escape($Th)." TRANSFER",array_merge($T,$Wi));}function -trigger($C){if($C=="")return -array();$K=get_rows("SELECT s.name [Trigger], -CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event], -CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing], -c.text -FROM sysobjects s -JOIN syscomments c ON s.id = c.id -WHERE s.xtype = 'TR' AND s.name = ".q($C));$I=reset($K);if($I)$I["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$I["text"]);return$I;}function -triggers($R){$I=array();foreach(get_rows("SELECT sys1.name, -CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event], -CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing] -FROM sysobjects sys1 -JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id -WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$J)$I[$J["name"]]=array($J["Timing"],$J["Event"]);return$I;}function -trigger_options(){return -array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function -schemas(){return -get_vals("SELECT name FROM sys.schemas");}function -get_schema(){global$g;if($_GET["ns"]!="")return$_GET["ns"];return$g->result("SELECT SCHEMA_NAME()");}function -set_schema($Xg){return -true;}function -use_sql($j){return"USE ".idf_escape($j);}function -show_variables(){return -array();}function -show_status(){return -array();}function -convert_field($o){}function -unconvert_field($o,$I){return$I;}function -support($Qc){return -preg_match('~^(columns|database|drop_col|indexes|scheme|sql|table|trigger|view|view_trigger)$~',$Qc);}$x="mssql";$zi=array();$Dh=array();foreach(array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(28)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(25)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(29)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$y=>$X){$zi+=$X;$Dh[$y]=array_keys($X);}$Fi=array();$sf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$ld=array("len","lower","round","upper");$rd=array("avg","count","count distinct","max","min","sum");$nc=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));}$fc['firebird']='Firebird (alpha)';if(isset($_GET["firebird"])){$eg=array("interbase");define("DRIVER","firebird");if(extension_loaded("interbase")){class -Min_DB{var$extension="Firebird",$server_info,$affected_rows,$errno,$error,$_link,$_result;function -connect($N,$V,$F){$this->_link=ibase_connect($N,$V,$F);if($this->_link){$Ji=explode(':',$N);$this->service_link=ibase_service_attach($Ji[0],$V,$F);$this->server_info=ibase_server_info($this->service_link,IBASE_SVC_SERVER_VERSION);}else{$this->errno=ibase_errcode();$this->error=ibase_errmsg();}return(bool)$this->_link;}function -quote($Q){return"'".str_replace("'","''",$Q)."'";}function -select_db($j){return($j=="domain");}function -query($G,$_i=false){$H=ibase_query($G,$this->_link);if(!$H){$this->errno=ibase_errcode();$this->error=ibase_errmsg();return -false;}$this->error="";if($H===true){$this->affected_rows=ibase_affected_rows($this->_link);return -true;}return -new -Min_Result($H);}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result(){return$this->_result;}function -next_result(){return -false;}function -result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return -false;$J=$H->fetch_row();return$J[$o];}}class -Min_Result{var$num_rows,$_result,$_offset=0;function -__construct($H){$this->_result=$H;}function -fetch_assoc(){return -ibase_fetch_assoc($this->_result);}function -fetch_row(){return -ibase_fetch_row($this->_result);}function -fetch_field(){$o=ibase_field_info($this->_result,$this->_offset++);return(object)array('name'=>$o['name'],'orgname'=>$o['name'],'type'=>$o['type'],'charsetnr'=>$o['length'],);}function -__destruct(){ibase_free_result($this->_result);}}}class -Min_Driver -extends -Min_SQL{}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -connect(){global$b;$g=new -Min_DB;$Hb=$b->credentials();if($g->connect($Hb[0],$Hb[1],$Hb[2]))return$g;return$g->error;}function -get_databases($bd){return -array("domain");}function -limit($G,$Z,$z,$D=0,$M=" "){$I='';$I.=($z!==null?$M."FIRST $z".($D?" SKIP $D":""):"");$I.=" $G$Z";return$I;}function -limit1($R,$G,$Z,$M="\n"){return -limit($G,$Z,1,0,$M);}function -db_collation($l,$qb){}function -engines(){return -array();}function -logged_user(){global$b;$Hb=$b->credentials();return$Hb[1];}function -tables_list(){global$g;$G='SELECT RDB$RELATION_NAME FROM rdb$relations WHERE rdb$system_flag = 0';$H=ibase_query($g->_link,$G);$I=array();while($J=ibase_fetch_assoc($H))$I[$J['RDB$RELATION_NAME']]='table';ksort($I);return$I;}function -count_tables($k){return -array();}function -table_status($C="",$Pc=false){global$g;$I=array();$Mb=tables_list();foreach($Mb -as$v=>$X){$v=trim($v);$I[$v]=array('Name'=>$v,'Engine'=>'standard',);if($C==$v)return$I[$v];}return$I;}function -is_view($S){return -false;}function -fk_support($S){return -preg_match('~InnoDB|IBMDB2I~i',$S["Engine"]);}function -fields($R){global$g;$I=array();$G='SELECT r.RDB$FIELD_NAME AS field_name, -r.RDB$DESCRIPTION AS field_description, -r.RDB$DEFAULT_VALUE AS field_default_value, -r.RDB$NULL_FLAG AS field_not_null_constraint, -f.RDB$FIELD_LENGTH AS field_length, -f.RDB$FIELD_PRECISION AS field_precision, -f.RDB$FIELD_SCALE AS field_scale, -CASE f.RDB$FIELD_TYPE -WHEN 261 THEN \'BLOB\' -WHEN 14 THEN \'CHAR\' -WHEN 40 THEN \'CSTRING\' -WHEN 11 THEN \'D_FLOAT\' -WHEN 27 THEN \'DOUBLE\' -WHEN 10 THEN \'FLOAT\' -WHEN 16 THEN \'INT64\' -WHEN 8 THEN \'INTEGER\' -WHEN 9 THEN \'QUAD\' -WHEN 7 THEN \'SMALLINT\' -WHEN 12 THEN \'DATE\' -WHEN 13 THEN \'TIME\' -WHEN 35 THEN \'TIMESTAMP\' -WHEN 37 THEN \'VARCHAR\' -ELSE \'UNKNOWN\' -END AS field_type, -f.RDB$FIELD_SUB_TYPE AS field_subtype, -coll.RDB$COLLATION_NAME AS field_collation, -cset.RDB$CHARACTER_SET_NAME AS field_charset -FROM RDB$RELATION_FIELDS r -LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME -LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID -LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID -WHERE r.RDB$RELATION_NAME = '.q($R).' -ORDER BY r.RDB$FIELD_POSITION';$H=ibase_query($g->_link,$G);while($J=ibase_fetch_assoc($H))$I[trim($J['FIELD_NAME'])]=array("field"=>trim($J["FIELD_NAME"]),"full_type"=>trim($J["FIELD_TYPE"]),"type"=>trim($J["FIELD_SUB_TYPE"]),"default"=>trim($J['FIELD_DEFAULT_VALUE']),"null"=>(trim($J["FIELD_NOT_NULL_CONSTRAINT"])=="YES"),"auto_increment"=>'0',"collation"=>trim($J["FIELD_COLLATION"]),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"comment"=>trim($J["FIELD_DESCRIPTION"]),);return$I;}function -indexes($R,$h=null){$I=array();return$I;}function -foreign_keys($R){return -array();}function -collations(){return -array();}function -information_schema($l){return -false;}function -error(){global$g;return -h($g->error);}function -types(){return -array();}function -schemas(){return -array();}function -get_schema(){return"";}function -set_schema($Xg){return -true;}function -support($Qc){return -preg_match("~^(columns|sql|status|table)$~",$Qc);}$x="firebird";$sf=array("=");$ld=array();$rd=array();$nc=array();}$fc["simpledb"]="SimpleDB";if(isset($_GET["simpledb"])){$eg=array("SimpleXML + allow_url_fopen");define("DRIVER","simpledb");if(class_exists('SimpleXMLElement')&&ini_bool('allow_url_fopen')){class -Min_DB{var$extension="SimpleXML",$server_info='2009-04-15',$error,$timeout,$next,$affected_rows,$_result;function -select_db($j){return($j=="domain");}function -query($G,$_i=false){$Lf=array('SelectExpression'=>$G,'ConsistentRead'=>'true');if($this->next)$Lf['NextToken']=$this->next;$H=sdb_request_all('Select','Item',$Lf,$this->timeout);$this->timeout=0;if($H===false)return$H;if(preg_match('~^\s*SELECT\s+COUNT\(~i',$G)){$Hh=0;foreach($H -as$ae)$Hh+=$ae->Attribute->Value;$H=array((object)array('Attribute'=>array((object)array('Name'=>'Count','Value'=>$Hh,))));}return -new -Min_Result($H);}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result(){return$this->_result;}function -next_result(){return -false;}function -quote($Q){return"'".str_replace("'","''",$Q)."'";}}class -Min_Result{var$num_rows,$_rows=array(),$_offset=0;function -__construct($H){foreach($H -as$ae){$J=array();if($ae->Name!='')$J['itemName()']=(string)$ae->Name;foreach($ae->Attribute -as$Ja){$C=$this->_processValue($Ja->Name);$Y=$this->_processValue($Ja->Value);if(isset($J[$C])){$J[$C]=(array)$J[$C];$J[$C][]=$Y;}else$J[$C]=$Y;}$this->_rows[]=$J;foreach($J -as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=count($this->_rows);}function -_processValue($qc){return(is_object($qc)&&$qc['encoding']=='base64'?base64_decode($qc):(string)$qc);}function -fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$y=>$X)$I[$y]=$J[$y];next($this->_rows);return$I;}function -fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return -array_values($I);}function -fetch_field(){$ge=array_keys($this->_rows[0]);return(object)array('name'=>$ge[$this->_offset++]);}}}class -Min_Driver -extends -Min_SQL{public$hg="itemName()";function -_chunkRequest($Ed,$wa,$Lf,$Fc=array()){global$g;foreach(array_chunk($Ed,25)as$ib){$Mf=$Lf;foreach($ib -as$s=>$t){$Mf["Item.$s.ItemName"]=$t;foreach($Fc -as$y=>$X)$Mf["Item.$s.$y"]=$X;}if(!sdb_request($wa,$Mf))return -false;}$g->affected_rows=count($Ed);return -true;}function -_extractIds($R,$tg,$z){$I=array();if(preg_match_all("~itemName\(\) = (('[^']*+')+)~",$tg,$Ce))$I=array_map('idf_unescape',$Ce[1]);else{foreach(sdb_request_all('Select','Item',array('SelectExpression'=>'SELECT itemName() FROM '.table($R).$tg.($z?" LIMIT 1":"")))as$ae)$I[]=$ae->Name;}return$I;}function -select($R,$L,$Z,$od,$xf=array(),$z=1,$E=0,$jg=false){global$g;$g->next=$_GET["next"];$I=parent::select($R,$L,$Z,$od,$xf,$z,$E,$jg);$g->next=0;return$I;}function -delete($R,$tg,$z=0){return$this->_chunkRequest($this->_extractIds($R,$tg,$z),'BatchDeleteAttributes',array('DomainName'=>$R));}function -update($R,$O,$tg,$z=0,$M="\n"){$Vb=array();$Sd=array();$s=0;$Ed=$this->_extractIds($R,$tg,$z);$t=idf_unescape($O["`itemName()`"]);unset($O["`itemName()`"]);foreach($O -as$y=>$X){$y=idf_unescape($y);if($X=="NULL"||($t!=""&&array($t)!=$Ed))$Vb["Attribute.".count($Vb).".Name"]=$y;if($X!="NULL"){foreach((array)$X -as$ce=>$W){$Sd["Attribute.$s.Name"]=$y;$Sd["Attribute.$s.Value"]=(is_array($X)?$W:idf_unescape($W));if(!$ce)$Sd["Attribute.$s.Replace"]="true";$s++;}}}$Lf=array('DomainName'=>$R);return(!$Sd||$this->_chunkRequest(($t!=""?array($t):$Ed),'BatchPutAttributes',$Lf,$Sd))&&(!$Vb||$this->_chunkRequest($Ed,'BatchDeleteAttributes',$Lf,$Vb));}function -insert($R,$O){$Lf=array("DomainName"=>$R);$s=0;foreach($O -as$C=>$Y){if($Y!="NULL"){$C=idf_unescape($C);if($C=="itemName()")$Lf["ItemName"]=idf_unescape($Y);else{foreach((array)$Y -as$X){$Lf["Attribute.$s.Name"]=$C;$Lf["Attribute.$s.Value"]=(is_array($Y)?$X:idf_unescape($Y));$s++;}}}}return -sdb_request('PutAttributes',$Lf);}function -insertUpdate($R,$K,$hg){foreach($K -as$O){if(!$this->update($R,$O,"WHERE `itemName()` = ".q($O["`itemName()`"])))return -false;}return -true;}function -begin(){return -false;}function -commit(){return -false;}function -rollback(){return -false;}function -slowQuery($G,$bi){$this->_conn->timeout=$bi;return$G;}}function -connect(){global$b;list(,,$F)=$b->credentials();if($F!="")return -lang(22);return -new -Min_DB;}function -support($Qc){return -preg_match('~sql~',$Qc);}function -logged_user(){global$b;$Hb=$b->credentials();return$Hb[1];}function -get_databases(){return -array("domain");}function -collations(){return -array();}function -db_collation($l,$qb){}function -tables_list(){global$g;$I=array();foreach(sdb_request_all('ListDomains','DomainName')as$R)$I[(string)$R]='table';if($g->error&&defined("PAGE_HEADER"))echo"<p class='error'>".error()."\n";return$I;}function -table_status($C="",$Pc=false){$I=array();foreach(($C!=""?array($C=>true):tables_list())as$R=>$U){$J=array("Name"=>$R,"Auto_increment"=>"");if(!$Pc){$Pe=sdb_request('DomainMetadata',array('DomainName'=>$R));if($Pe){foreach(array("Rows"=>"ItemCount","Data_length"=>"ItemNamesSizeBytes","Index_length"=>"AttributeValuesSizeBytes","Data_free"=>"AttributeNamesSizeBytes",)as$y=>$X)$J[$y]=(string)$Pe->$X;}}if($C!="")return$J;$I[$R]=$J;}return$I;}function -explain($g,$G){}function -error(){global$g;return -h($g->error);}function -information_schema(){}function -is_view($S){}function -indexes($R,$h=null){return -array(array("type"=>"PRIMARY","columns"=>array("itemName()")),);}function -fields($R){return -fields_from_edit();}function -foreign_keys($R){return -array();}function -table($u){return -idf_escape($u);}function -idf_escape($u){return"`".str_replace("`","``",$u)."`";}function -limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z":"");}function -unconvert_field($o,$I){return$I;}function -fk_support($S){}function -engines(){return -array();}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){return($R==""&&sdb_request('CreateDomain',array('DomainName'=>$C)));}function -drop_tables($T){foreach($T -as$R){if(!sdb_request('DeleteDomain',array('DomainName'=>$R)))return -false;}return -true;}function -count_tables($k){foreach($k -as$l)return -array($l=>count(tables_list()));}function -found_rows($S,$Z){return($Z?null:$S["Rows"]);}function -last_id(){}function -hmac($Ca,$Mb,$y,$xg=false){$Va=64;if(strlen($y)>$Va)$y=pack("H*",$Ca($y));$y=str_pad($y,$Va,"\0");$de=$y^str_repeat("\x36",$Va);$ee=$y^str_repeat("\x5C",$Va);$I=$Ca($ee.pack("H*",$Ca($de.$Mb)));if($xg)$I=pack("H*",$I);return$I;}function -sdb_request($wa,$Lf=array()){global$b,$g;list($Bd,$Lf['AWSAccessKeyId'],$ah)=$b->credentials();$Lf['Action']=$wa;$Lf['Timestamp']=gmdate('Y-m-d\TH:i:s+00:00');$Lf['Version']='2009-04-15';$Lf['SignatureVersion']=2;$Lf['SignatureMethod']='HmacSHA1';ksort($Lf);$G='';foreach($Lf -as$y=>$X)$G.='&'.rawurlencode($y).'='.rawurlencode($X);$G=str_replace('%7E','~',substr($G,1));$G.="&Signature=".urlencode(base64_encode(hmac('sha1',"POST\n".preg_replace('~^https?://~','',$Bd)."\n/\n$G",$ah,true)));@ini_set('track_errors',1);$Uc=@file_get_contents((preg_match('~^https?://~',$Bd)?$Bd:"http://$Bd"),false,stream_context_create(array('http'=>array('method'=>'POST','content'=>$G,'ignore_errors'=>1,))));if(!$Uc){$g->error=$php_errormsg;return -false;}libxml_use_internal_errors(true);$jj=simplexml_load_string($Uc);if(!$jj){$n=libxml_get_last_error();$g->error=$n->message;return -false;}if($jj->Errors){$n=$jj->Errors->Error;$g->error="$n->Message ($n->Code)";return -false;}$g->error='';$Sh=$wa."Result";return($jj->$Sh?$jj->$Sh:true);}function -sdb_request_all($wa,$Sh,$Lf=array(),$bi=0){$I=array();$_h=($bi?microtime(true):0);$z=(preg_match('~LIMIT\s+(\d+)\s*$~i',$Lf['SelectExpression'],$B)?$B[1]:0);do{$jj=sdb_request($wa,$Lf);if(!$jj)break;foreach($jj->$Sh -as$qc)$I[]=$qc;if($z&&count($I)>=$z){$_GET["next"]=$jj->NextToken;break;}if($bi&µtime(true)-$_h>$bi)return -false;$Lf['NextToken']=$jj->NextToken;if($z)$Lf['SelectExpression']=preg_replace('~\d+\s*$~',$z-count($I),$Lf['SelectExpression']);}while($jj->NextToken);return$I;}$x="simpledb";$sf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","IS NOT NULL");$ld=array();$rd=array("count");$nc=array(array("json"));}$fc["mongo"]="MongoDB";if(isset($_GET["mongo"])){$eg=array("mongo","mongodb");define("DRIVER","mongo");if(class_exists('MongoDB')){class -Min_DB{var$extension="Mongo",$server_info=MongoClient::VERSION,$error,$last_id,$_link,$_db;function -connect($Hi,$vf){return@new -MongoClient($Hi,$vf);}function -query($G){return -false;}function -select_db($j){try{$this->_db=$this->_link->selectDB($j);return -true;}catch(Exception$Bc){$this->error=$Bc->getMessage();return -false;}}function -quote($Q){return$Q;}}class -Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function -__construct($H){foreach($H -as$ae){$J=array();foreach($ae -as$y=>$X){if(is_a($X,'MongoBinData'))$this->_charset[$y]=63;$J[$y]=(is_a($X,'MongoId')?'ObjectId("'.strval($X).'")':(is_a($X,'MongoDate')?gmdate("Y-m-d H:i:s",$X->sec)." GMT":(is_a($X,'MongoBinData')?$X->bin:(is_a($X,'MongoRegex')?strval($X):(is_object($X)?get_class($X):$X)))));}$this->_rows[]=$J;foreach($J -as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=count($this->_rows);}function -fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$y=>$X)$I[$y]=$J[$y];next($this->_rows);return$I;}function -fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return -array_values($I);}function -fetch_field(){$ge=array_keys($this->_rows[0]);$C=$ge[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class -Min_Driver -extends -Min_SQL{public$hg="_id";function -select($R,$L,$Z,$od,$xf=array(),$z=1,$E=0,$jg=false){$L=($L==array("*")?array():array_fill_keys($L,true));$rh=array();foreach($xf -as$X){$X=preg_replace('~ DESC$~','',$X,1,$Eb);$rh[$X]=($Eb?-1:1);}return -new -Min_Result($this->_conn->_db->selectCollection($R)->find(array(),$L)->sort($rh)->limit($z!=""?+$z:0)->skip($E*$z));}function -insert($R,$O){try{$I=$this->_conn->_db->selectCollection($R)->insert($O);$this->_conn->errno=$I['code'];$this->_conn->error=$I['err'];$this->_conn->last_id=$O['_id'];return!$I['err'];}catch(Exception$Bc){$this->_conn->error=$Bc->getMessage();return -false;}}}function -get_databases($bd){global$g;$I=array();$Rb=$g->_link->listDBs();foreach($Rb['databases']as$l)$I[]=$l['name'];return$I;}function -count_tables($k){global$g;$I=array();foreach($k -as$l)$I[$l]=count($g->_link->selectDB($l)->getCollectionNames(true));return$I;}function -tables_list(){global$g;return -array_fill_keys($g->_db->getCollectionNames(true),'table');}function -drop_databases($k){global$g;foreach($k -as$l){$Jg=$g->_link->selectDB($l)->drop();if(!$Jg['ok'])return -false;}return -true;}function -indexes($R,$h=null){global$g;$I=array();foreach($g->_db->selectCollection($R)->getIndexInfo()as$v){$Yb=array();foreach($v["key"]as$d=>$U)$Yb[]=($U==-1?'1':null);$I[$v["name"]]=array("type"=>($v["name"]=="_id_"?"PRIMARY":($v["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($v["key"]),"lengths"=>array(),"descs"=>$Yb,);}return$I;}function -fields($R){return -fields_from_edit();}function -found_rows($S,$Z){global$g;return$g->_db->selectCollection($_GET["select"])->count($Z);}$sf=array("=");}elseif(class_exists('MongoDB\Driver\Manager')){class -Min_DB{var$extension="MongoDB",$server_info=MONGODB_VERSION,$error,$last_id;var$_link;var$_db,$_db_name;function -connect($Hi,$vf){$kb='MongoDB\Driver\Manager';return -new$kb($Hi,$vf);}function -query($G){return -false;}function -select_db($j){$this->_db_name=$j;return -true;}function -quote($Q){return$Q;}}class -Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function -__construct($H){foreach($H -as$ae){$J=array();foreach($ae -as$y=>$X){if(is_a($X,'MongoDB\BSON\Binary'))$this->_charset[$y]=63;$J[$y]=(is_a($X,'MongoDB\BSON\ObjectID')?'MongoDB\BSON\ObjectID("'.strval($X).'")':(is_a($X,'MongoDB\BSON\UTCDatetime')?$X->toDateTime()->format('Y-m-d H:i:s'):(is_a($X,'MongoDB\BSON\Binary')?$X->bin:(is_a($X,'MongoDB\BSON\Regex')?strval($X):(is_object($X)?json_encode($X,256):$X)))));}$this->_rows[]=$J;foreach($J -as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=$H->count;}function -fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$y=>$X)$I[$y]=$J[$y];next($this->_rows);return$I;}function -fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return -array_values($I);}function -fetch_field(){$ge=array_keys($this->_rows[0]);$C=$ge[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class -Min_Driver -extends -Min_SQL{public$hg="_id";function -select($R,$L,$Z,$od,$xf=array(),$z=1,$E=0,$jg=false){global$g;$L=($L==array("*")?array():array_fill_keys($L,1));if(count($L)&&!isset($L['_id']))$L['_id']=0;$Z=where_to_query($Z);$rh=array();foreach($xf -as$X){$X=preg_replace('~ DESC$~','',$X,1,$Eb);$rh[$X]=($Eb?-1:1);}if(isset($_GET['limit'])&&is_numeric($_GET['limit'])&&$_GET['limit']>0)$z=$_GET['limit'];$z=min(200,max(1,(int)$z));$oh=$E*$z;$kb='MongoDB\Driver\Query';$G=new$kb($Z,array('projection'=>$L,'limit'=>$z,'skip'=>$oh,'sort'=>$rh));$Mg=$g->_link->executeQuery("$g->_db_name.$R",$G);return -new -Min_Result($Mg);}function -update($R,$O,$tg,$z=0,$M="\n"){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($tg);$kb='MongoDB\Driver\BulkWrite';$Za=new$kb(array());if(isset($O['_id']))unset($O['_id']);$Gg=array();foreach($O -as$y=>$Y){if($Y=='NULL'){$Gg[$y]=1;unset($O[$y]);}}$Gi=array('$set'=>$O);if(count($Gg))$Gi['$unset']=$Gg;$Za->update($Z,$Gi,array('upsert'=>false));$Mg=$g->_link->executeBulkWrite("$l.$R",$Za);$g->affected_rows=$Mg->getModifiedCount();return -true;}function -delete($R,$tg,$z=0){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($tg);$kb='MongoDB\Driver\BulkWrite';$Za=new$kb(array());$Za->delete($Z,array('limit'=>$z));$Mg=$g->_link->executeBulkWrite("$l.$R",$Za);$g->affected_rows=$Mg->getDeletedCount();return -true;}function -insert($R,$O){global$g;$l=$g->_db_name;$kb='MongoDB\Driver\BulkWrite';$Za=new$kb(array());if(isset($O['_id'])&&empty($O['_id']))unset($O['_id']);$Za->insert($O);$Mg=$g->_link->executeBulkWrite("$l.$R",$Za);$g->affected_rows=$Mg->getInsertedCount();return -true;}}function -get_databases($bd){global$g;$I=array();$kb='MongoDB\Driver\Command';$tb=new$kb(array('listDatabases'=>1));$Mg=$g->_link->executeCommand('admin',$tb);foreach($Mg -as$Rb){foreach($Rb->databases -as$l)$I[]=$l->name;}return$I;}function -count_tables($k){$I=array();return$I;}function -tables_list(){global$g;$kb='MongoDB\Driver\Command';$tb=new$kb(array('listCollections'=>1));$Mg=$g->_link->executeCommand($g->_db_name,$tb);$rb=array();foreach($Mg -as$H)$rb[$H->name]='table';return$rb;}function -drop_databases($k){return -false;}function -indexes($R,$h=null){global$g;$I=array();$kb='MongoDB\Driver\Command';$tb=new$kb(array('listIndexes'=>$R));$Mg=$g->_link->executeCommand($g->_db_name,$tb);foreach($Mg -as$v){$Yb=array();$e=array();foreach(get_object_vars($v->key)as$d=>$U){$Yb[]=($U==-1?'1':null);$e[]=$d;}$I[$v->name]=array("type"=>($v->name=="_id_"?"PRIMARY":(isset($v->unique)?"UNIQUE":"INDEX")),"columns"=>$e,"lengths"=>array(),"descs"=>$Yb,);}return$I;}function -fields($R){$p=fields_from_edit();if(!count($p)){global$m;$H=$m->select($R,array("*"),null,null,array(),10);while($J=$H->fetch_assoc()){foreach($J -as$y=>$X){$J[$y]=null;$p[$y]=array("field"=>$y,"type"=>"string","null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}return$p;}function -found_rows($S,$Z){global$g;$Z=where_to_query($Z);$kb='MongoDB\Driver\Command';$tb=new$kb(array('count'=>$S['Name'],'query'=>$Z));$Mg=$g->_link->executeCommand($g->_db_name,$tb);$ji=$Mg->toArray();return$ji[0]->n;}function -sql_query_where_parser($tg){$tg=trim(preg_replace('/WHERE[\s]?[(]?\(?/','',$tg));$tg=preg_replace('/\)\)\)$/',')',$tg);$gj=explode(' AND ',$tg);$hj=explode(') OR (',$tg);$Z=array();foreach($gj -as$ej)$Z[]=trim($ej);if(count($hj)==1)$hj=array();elseif(count($hj)>1)$Z=array();return -where_to_query($Z,$hj);}function -where_to_query($cj=array(),$dj=array()){global$b;$Mb=array();foreach(array('and'=>$cj,'or'=>$dj)as$U=>$Z){if(is_array($Z)){foreach($Z -as$Ic){list($nb,$qf,$X)=explode(" ",$Ic,3);if($nb=="_id"){$X=str_replace('MongoDB\BSON\ObjectID("',"",$X);$X=str_replace('")',"",$X);$kb='MongoDB\BSON\ObjectID';$X=new$kb($X);}if(!in_array($qf,$b->operators))continue;if(preg_match('~^\(f\)(.+)~',$qf,$B)){$X=(float)$X;$qf=$B[1];}elseif(preg_match('~^\(date\)(.+)~',$qf,$B)){$Ob=new -DateTime($X);$kb='MongoDB\BSON\UTCDatetime';$X=new$kb($Ob->getTimestamp()*1000);$qf=$B[1];}switch($qf){case'=':$qf='$eq';break;case'!=':$qf='$ne';break;case'>':$qf='$gt';break;case'<':$qf='$lt';break;case'>=':$qf='$gte';break;case'<=':$qf='$lte';break;case'regex':$qf='$regex';break;default:continue;}if($U=='and')$Mb['$and'][]=array($nb=>array($qf=>$X));elseif($U=='or')$Mb['$or'][]=array($nb=>array($qf=>$X));}}}return$Mb;}$sf=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);}function -table($u){return$u;}function -idf_escape($u){return$u;}function -table_status($C="",$Pc=false){$I=array();foreach(tables_list()as$R=>$U){$I[$R]=array("Name"=>$R);if($C==$R)return$I[$R];}return$I;}function -create_database($l,$pb){return -true;}function -last_id(){global$g;return$g->last_id;}function -error(){global$g;return -h($g->error);}function -collations(){return -array();}function -logged_user(){global$b;$Hb=$b->credentials();return$Hb[1];}function -connect(){global$b;$g=new -Min_DB;list($N,$V,$F)=$b->credentials();$vf=array();if($V.$F!=""){$vf["username"]=$V;$vf["password"]=$F;}$l=$b->database();if($l!="")$vf["db"]=$l;try{$g->_link=$g->connect("mongodb://$N",$vf);if($F!=""){$vf["password"]="";try{$g->connect("mongodb://$N",$vf);return -lang(22);}catch(Exception$Bc){}}return$g;}catch(Exception$Bc){return$Bc->getMessage();}}function -alter_indexes($R,$c){global$g;foreach($c -as$X){list($U,$C,$O)=$X;if($O=="DROP")$I=$g->_db->command(array("deleteIndexes"=>$R,"index"=>$C));else{$e=array();foreach($O -as$d){$d=preg_replace('~ DESC$~','',$d,1,$Eb);$e[$d]=($Eb?-1:1);}$I=$g->_db->selectCollection($R)->ensureIndex($e,array("unique"=>($U=="UNIQUE"),"name"=>$C,));}if($I['errmsg']){$g->error=$I['errmsg'];return -false;}}return -true;}function -support($Qc){return -preg_match("~database|indexes~",$Qc);}function -db_collation($l,$qb){}function -information_schema(){}function -is_view($S){}function -convert_field($o){}function -unconvert_field($o,$I){return$I;}function -foreign_keys($R){return -array();}function -fk_support($S){}function -engines(){return -array();}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){global$g;if($R==""){$g->_db->createCollection($C);return -true;}}function -drop_tables($T){global$g;foreach($T -as$R){$Jg=$g->_db->selectCollection($R)->drop();if(!$Jg['ok'])return -false;}return -true;}function -truncate_tables($T){global$g;foreach($T -as$R){$Jg=$g->_db->selectCollection($R)->remove();if(!$Jg['ok'])return -false;}return -true;}$x="mongo";$ld=array();$rd=array();$nc=array(array("json"));}$fc["elastic"]="Elasticsearch (beta)";if(isset($_GET["elastic"])){$eg=array("json + allow_url_fopen");define("DRIVER","elastic");if(function_exists('json_decode')&&ini_bool('allow_url_fopen')){class -Min_DB{var$extension="JSON",$server_info,$errno,$error,$_url;function -rootQuery($Vf,$_b=array(),$Qe='GET'){@ini_set('track_errors',1);$Uc=@file_get_contents("$this->_url/".ltrim($Vf,'/'),false,stream_context_create(array('http'=>array('method'=>$Qe,'content'=>$_b===null?$_b:json_encode($_b),'header'=>'Content-Type: application/json','ignore_errors'=>1,))));if(!$Uc){$this->error=$php_errormsg;return$Uc;}if(!preg_match('~^HTTP/[0-9.]+ 2~i',$http_response_header[0])){$this->error=$Uc;return -false;}$I=json_decode($Uc,true);if($I===null){$this->errno=json_last_error();if(function_exists('json_last_error_msg'))$this->error=json_last_error_msg();else{$zb=get_defined_constants(true);foreach($zb['json']as$C=>$Y){if($Y==$this->errno&&preg_match('~^JSON_ERROR_~',$C)){$this->error=$C;break;}}}}return$I;}function -query($Vf,$_b=array(),$Qe='GET'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($Vf,'/'),$_b,$Qe);}function -connect($N,$V,$F){preg_match('~^(https?://)?(.*)~',$N,$B);$this->_url=($B[1]?$B[1]:"http://")."$V:$F@$B[2]";$I=$this->query('');if($I)$this->server_info=$I['version']['number'];return(bool)$I;}function -select_db($j){$this->_db=$j;return -true;}function -quote($Q){return$Q;}}class -Min_Result{var$num_rows,$_rows;function -__construct($K){$this->num_rows=count($this->_rows);$this->_rows=$K;reset($this->_rows);}function -fetch_assoc(){$I=current($this->_rows);next($this->_rows);return$I;}function -fetch_row(){return -array_values($this->fetch_assoc());}}}class -Min_Driver -extends -Min_SQL{function -select($R,$L,$Z,$od,$xf=array(),$z=1,$E=0,$jg=false){global$b;$Mb=array();$G="$R/_search";if($L!=array("*"))$Mb["fields"]=$L;if($xf){$rh=array();foreach($xf -as$nb){$nb=preg_replace('~ DESC$~','',$nb,1,$Eb);$rh[]=($Eb?array($nb=>"desc"):$nb);}$Mb["sort"]=$rh;}if($z){$Mb["size"]=+$z;if($E)$Mb["from"]=($E*$z);}foreach($Z -as$X){list($nb,$qf,$X)=explode(" ",$X,3);if($nb=="_id")$Mb["query"]["ids"]["values"][]=$X;elseif($nb.$X!=""){$Wh=array("term"=>array(($nb!=""?$nb:"_all")=>$X));if($qf=="=")$Mb["query"]["filtered"]["filter"]["and"][]=$Wh;else$Mb["query"]["filtered"]["query"]["bool"]["must"][]=$Wh;}}if($Mb["query"]&&!$Mb["query"]["filtered"]["query"]&&!$Mb["query"]["ids"])$Mb["query"]["filtered"]["query"]=array("match_all"=>array());$_h=microtime(true);$Zg=$this->_conn->query($G,$Mb);if($jg)echo$b->selectQuery("$G: ".print_r($Mb,true),$_h,!$Zg);if(!$Zg)return -false;$I=array();foreach($Zg['hits']['hits']as$Ad){$J=array();if($L==array("*"))$J["_id"]=$Ad["_id"];$p=$Ad['_source'];if($L!=array("*")){$p=array();foreach($L -as$y)$p[$y]=$Ad['fields'][$y];}foreach($p -as$y=>$X){if($Mb["fields"])$X=$X[0];$J[$y]=(is_array($X)?json_encode($X):$X);}$I[]=$J;}return -new -Min_Result($I);}function -update($U,$yg,$tg,$z=0,$M="\n"){$Tf=preg_split('~ *= *~',$tg);if(count($Tf)==2){$t=trim($Tf[1]);$G="$U/$t";return$this->_conn->query($G,$yg,'POST');}return -false;}function -insert($U,$yg){$t="";$G="$U/$t";$Jg=$this->_conn->query($G,$yg,'POST');$this->_conn->last_id=$Jg['_id'];return$Jg['created'];}function -delete($U,$tg,$z=0){$Ed=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Ed[]=$_GET["where"]["_id"];if(is_array($_POST['check'])){foreach($_POST['check']as$db){$Tf=preg_split('~ *= *~',$db);if(count($Tf)==2)$Ed[]=trim($Tf[1]);}}$this->_conn->affected_rows=0;foreach($Ed -as$t){$G="{$U}/{$t}";$Jg=$this->_conn->query($G,'{}','DELETE');if(is_array($Jg)&&$Jg['found']==true)$this->_conn->affected_rows++;}return$this->_conn->affected_rows;}}function -connect(){global$b;$g=new -Min_DB;list($N,$V,$F)=$b->credentials();if($F!=""&&$g->connect($N,$V,""))return -lang(22);if($g->connect($N,$V,$F))return$g;return$g->error;}function -support($Qc){return -preg_match("~database|table|columns~",$Qc);}function -logged_user(){global$b;$Hb=$b->credentials();return$Hb[1];}function -get_databases(){global$g;$I=$g->rootQuery('_aliases');if($I){$I=array_keys($I);sort($I,SORT_STRING);}return$I;}function -collations(){return -array();}function -db_collation($l,$qb){}function -engines(){return -array();}function -count_tables($k){global$g;$I=array();$H=$g->query('_stats');if($H&&$H['indices']){$Ld=$H['indices'];foreach($Ld -as$Kd=>$Ah){$Jd=$Ah['total']['indexing'];$I[$Kd]=$Jd['index_total'];}}return$I;}function -tables_list(){global$g;$I=$g->query('_mapping');if($I)$I=array_fill_keys(array_keys($I[$g->_db]["mappings"]),'table');return$I;}function -table_status($C="",$Pc=false){global$g;$Zg=$g->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$I=array();if($Zg){$T=$Zg["aggregations"]["count_by_type"]["buckets"];foreach($T -as$R){$I[$R["key"]]=array("Name"=>$R["key"],"Engine"=>"table","Rows"=>$R["doc_count"],);if($C!=""&&$C==$R["key"])return$I[$C];}}return$I;}function -error(){global$g;return -h($g->error);}function -information_schema(){}function -is_view($S){}function -indexes($R,$h=null){return -array(array("type"=>"PRIMARY","columns"=>array("_id")),);}function -fields($R){global$g;$H=$g->query("$R/_mapping");$I=array();if($H){$ze=$H[$R]['properties'];if(!$ze)$ze=$H[$g->_db]['mappings'][$R]['properties'];if($ze){foreach($ze -as$C=>$o){$I[$C]=array("field"=>$C,"full_type"=>$o["type"],"type"=>$o["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($o["properties"]){unset($I[$C]["privileges"]["insert"]);unset($I[$C]["privileges"]["update"]);}}}}return$I;}function -foreign_keys($R){return -array();}function -table($u){return$u;}function -idf_escape($u){return$u;}function -convert_field($o){}function -unconvert_field($o,$I){return$I;}function -fk_support($S){}function -found_rows($S,$Z){return -null;}function -create_database($l){global$g;return$g->rootQuery(urlencode($l),null,'PUT');}function -drop_databases($k){global$g;return$g->rootQuery(urlencode(implode(',',$k)),array(),'DELETE');}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){global$g;$pg=array();foreach($p -as$Nc){$Sc=trim($Nc[1][0]);$Tc=trim($Nc[1][1]?$Nc[1][1]:"text");$pg[$Sc]=array('type'=>$Tc);}if(!empty($pg))$pg=array('properties'=>$pg);return$g->query("_mapping/{$C}",$pg,'PUT');}function -drop_tables($T){global$g;$I=true;foreach($T -as$R)$I=$I&&$g->query(urlencode($R),array(),'DELETE');return$I;}function -last_id(){global$g;return$g->last_id;}$x="elastic";$sf=array("=","query");$ld=array();$rd=array();$nc=array(array("json"));$zi=array();$Dh=array();foreach(array(lang(27)=>array("long"=>3,"integer"=>5,"short"=>8,"byte"=>10,"double"=>20,"float"=>66,"half_float"=>12,"scaled_float"=>21),lang(28)=>array("date"=>10),lang(25)=>array("string"=>65535,"text"=>65535),lang(29)=>array("binary"=>255),)as$y=>$X){$zi+=$X;$Dh[$y]=array_keys($X);}}$fc=array("server"=>"MySQL")+$fc;if(!defined("DRIVER")){$eg=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class -Min_DB -extends -MySQLi{var$extension="MySQLi";function -__construct(){parent::init();}function -connect($N="",$V="",$F="",$j=null,$ag=null,$qh=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Bd,$ag)=explode(":",$N,2);$zh=$b->connectSsl();if($zh)$this->ssl_set($zh['key'],$zh['cert'],$zh['ca'],'','');$I=@$this->real_connect(($N!=""?$Bd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$j,(is_numeric($ag)?$ag:ini_get("mysqli.default_port")),(!is_numeric($ag)?$ag:$qh),($zh?64:0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function -set_charset($cb){if(parent::set_charset($cb))return -true;parent::set_charset('utf8');return$this->query("SET NAMES $cb");}function -result($G,$o=0){$H=$this->query($G);if(!$H)return -false;$J=$H->fetch_array();return$J[$o];}function -quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class -Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function -connect($N,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(32,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return -false;}$this->_link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function -set_charset($cb){if(function_exists('mysql_set_charset')){if(mysql_set_charset($cb,$this->_link))return -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $cb");}function -quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function -select_db($j){return -mysql_select_db($j,$this->_link);}function -query($G,$_i=false){$H=@($_i?mysql_unbuffered_query($G,$this->_link):mysql_query($G,$this->_link));$this->error="";if(!$H){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return -false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return -true;}return -new -Min_Result($H);}function -multi_query($G){return$this->_result=$this->query($G);}function -store_result(){return$this->_result;}function -next_result(){return -false;}function -result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return -false;return -mysql_result($H->_result,0,$o);}}class -Min_Result{var$num_rows,$_result,$_offset=0;function -__construct($H){$this->_result=$H;$this->num_rows=mysql_num_rows($H);}function -fetch_assoc(){return -mysql_fetch_assoc($this->_result);}function -fetch_row(){return -mysql_fetch_row($this->_result);}function -fetch_field(){$I=mysql_fetch_field($this->_result,$this->_offset++);$I->orgtable=$I->table;$I->orgname=$I->name;$I->charsetnr=($I->blob?63:0);return$I;}function -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class -Min_DB -extends -Min_PDO{var$extension="PDO_MySQL";function -connect($N,$V,$F){global$b;$vf=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$zh=$b->connectSsl();if($zh)$vf+=array(PDO::MYSQL_ATTR_SSL_KEY=>$zh['key'],PDO::MYSQL_ATTR_SSL_CERT=>$zh['cert'],PDO::MYSQL_ATTR_SSL_CA=>$zh['ca'],);$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$vf);return -true;}function -set_charset($cb){$this->query("SET NAMES $cb");}function -select_db($j){return$this->query("USE ".idf_escape($j));}function -query($G,$_i=false){$this->setAttribute(1000,!$_i);return -parent::query($G,$_i);}}}class -Min_Driver -extends -Min_SQL{function -insert($R,$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function -insertUpdate($R,$K,$hg){$e=array_keys(reset($K));$fg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ri=array();foreach($e -as$y)$Ri[$y]="$y = VALUES($y)";$Gh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ri);$Ri=array();$te=0;foreach($K -as$O){$Y="(".implode(", ",$O).")";if($Ri&&(strlen($fg)+$te+strlen($Y)+strlen($Gh)>1e6)){if(!queries($fg.implode(",\n",$Ri).$Gh))return -false;$Ri=array();$te=0;}$Ri[]=$Y;$te+=strlen($Y)+2;}return -queries($fg.implode(",\n",$Ri).$Gh);}function -slowQuery($G,$bi){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$bi FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($bi*1000).") */ $B[2]";}}function -convertSearch($u,$X,$o){return(preg_match('~char|text|enum|set~',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->_conn).")":$u);}function -warnings(){$H=$this->_conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return -ob_get_clean();}}function -tableHelp($C){$_e=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return -strtolower(($_e?"information-schema-$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($_e?"mysql$C-table/":"system-database.html");}}function -idf_escape($u){return"`".str_replace("`","``",$u)."`";}function -table($u){return -idf_escape($u);}function -connect(){global$b,$zi,$Dh;$g=new -Min_DB;$Hb=$b->credentials();if($g->connect($Hb[0],$Hb[1],$Hb[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version('5.7.8',10.2,$g)){$Dh[lang(25)][]="json";$zi["json"]=4294967295;}return$g;}$I=$g->error;if(function_exists('iconv')&&!is_utf8($I)&&strlen($Vg=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$Vg;return$I;}function -get_databases($bd){$I=get_session("dbs");if($I===null){$G=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$I=($bd?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function -limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z".($D?" OFFSET $D":""):"");}function -limit1($R,$G,$Z,$M="\n"){return -limit($G,$Z,1,0,$M);}function -db_collation($l,$qb){global$g;$I=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$B))$I=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$B))$I=$qb[$B[1]][-1];return$I;}function -engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function -logged_user(){global$g;return$g->result("SELECT USER()");}function -tables_list(){return -get_key_vals(min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function -count_tables($k){$I=array();foreach($k -as$l)$I[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$I;}function -table_status($C="",$Pc=false){$I=array();foreach(get_rows($Pc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($C!="")return$J;$I[$J["Name"]]=$J;}return$I;}function -is_view($S){return$S["Engine"]===null;}function -fk_support($S){return -preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function -fields($R){$I=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$J){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$J["Type"],$B);$I[$J["Field"]]=array("field"=>$J["Field"],"full_type"=>$J["Type"],"type"=>$B[1],"length"=>$B[2],"unsigned"=>ltrim($B[3].$B[4]),"default"=>($J["Default"]!=""||preg_match("~char|set~",$B[1])?$J["Default"]:null),"null"=>($J["Null"]=="YES"),"auto_increment"=>($J["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$J["Extra"],$B)?$B[1]:""),"collation"=>$J["Collation"],"privileges"=>array_flip(preg_split('~, *~',$J["Privileges"])),"comment"=>$J["Comment"],"primary"=>($J["Key"]=="PRI"),);}return$I;}function -indexes($R,$h=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$J){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;}return$I;}function -foreign_keys($R){global$g,$nf;static$Xf='`(?:[^`]|``)+`';$I=array();$Fb=$g->result("SHOW CREATE TABLE ".table($R),1);if($Fb){preg_match_all("~CONSTRAINT ($Xf) FOREIGN KEY ?\\(((?:$Xf,? ?)+)\\) REFERENCES ($Xf)(?:\\.($Xf))? \\(((?:$Xf,? ?)+)\\)(?: ON DELETE ($nf))?(?: ON UPDATE ($nf))?~",$Fb,$Ce,PREG_SET_ORDER);foreach($Ce -as$B){preg_match_all("~$Xf~",$B[2],$sh);preg_match_all("~$Xf~",$B[5],$Th);$I[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('idf_unescape',$sh[0]),"target"=>array_map('idf_unescape',$Th[0]),"on_delete"=>($B[6]?$B[6]:"RESTRICT"),"on_update"=>($B[7]?$B[7]:"RESTRICT"),);}}return$I;}function -view($C){global$g;return -array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("SHOW CREATE VIEW ".table($C),1)));}function -collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I -as$y=>$X)asort($I[$y]);return$I;}function -information_schema($l){return(min_version(5)&&$l=="information_schema")||(min_version(5.5)&&$l=="performance_schema");}function -error(){global$g;return -h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function -create_database($l,$pb){return -queries("CREATE DATABASE ".idf_escape($l).($pb?" COLLATE ".q($pb):""));}function -drop_databases($k){$I=apply_queries("DROP DATABASE",$k,'idf_escape');restart_session();set_session("dbs",null);return$I;}function -rename_database($C,$pb){$I=false;if(create_database($C,$pb)){$Hg=array();foreach(tables_list()as$R=>$U)$Hg[]=table($R)." TO ".idf_escape($C).".".table($R);$I=(!$Hg||queries("RENAME TABLE ".implode(", ",$Hg)));if($I)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$I;}function -auto_increment(){$Na=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Na="";break;}if($v["type"]=="PRIMARY")$Na=" UNIQUE";}}return" AUTO_INCREMENT$Na";}function -alter_table($R,$C,$p,$dd,$vb,$vc,$pb,$Ma,$Rf){$c=array();foreach($p -as$o)$c[]=($o[1]?($R!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($R!=""?$o[2]:""):"DROP ".idf_escape($o[0]));$c=array_merge($c,$dd);$P=($vb!==null?" COMMENT=".q($vb):"").($vc?" ENGINE=".q($vc):"").($pb?" COLLATE ".q($pb):"").($Ma!=""?" AUTO_INCREMENT=$Ma":"");if($R=="")return -queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$P$Rf");if($R!=$C)$c[]="RENAME TO ".table($C);if($P)$c[]=ltrim($P);return($c||$Rf?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$Rf):true);}function -alter_indexes($R,$c){foreach($c -as$y=>$X)$c[$y]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return -queries("ALTER TABLE ".table($R).implode(",",$c));}function -truncate_tables($T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views($Wi){return -queries("DROP VIEW ".implode(", ",array_map('table',$Wi)));}function -drop_tables($T){return -queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function -move_tables($T,$Wi,$Th){$Hg=array();foreach(array_merge($T,$Wi)as$R)$Hg[]=table($R)." TO ".idf_escape($Th).".".table($R);return -queries("RENAME TABLE ".implode(", ",$Hg));}function -copy_tables($T,$Wi,$Th){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T -as$R){$C=($Th==DB?table("copy_$R"):idf_escape($Th).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $C")||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return -false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){$ti=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Th==DB?idf_escape("copy_$ti"):idf_escape($Th).".".idf_escape($ti))." $J[Timing] $J[Event] ON $C FOR EACH ROW\n$J[Statement];"))return -false;}}foreach($Wi -as$R){$C=($Th==DB?table("copy_$R"):idf_escape($Th).".".table($R));$Vi=view($R);if(!queries("DROP VIEW IF EXISTS $C")||!queries("CREATE VIEW $C AS $Vi[select]"))return -false;}return -true;}function -trigger($C){if($C=="")return -array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return -reset($K);}function -triggers($R){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function -routine($C,$U){global$g,$xc,$Qd,$zi;$Da=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$th="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$yi="((".implode("|",array_merge(array_keys($zi),$Da)).")\\b(?:\\s*\\(((?:[^'\")]|$xc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Xf="$th*(".($U=="FUNCTION"?"":$Qd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$yi";$i=$g->result("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$Xf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$yi\\s+":"")."(.*)~is",$i,$B);$p=array();preg_match_all("~$Xf\\s*,?~is",$B[1],$Ce,PREG_SET_ORDER);foreach($Ce -as$Kf){$C=str_replace("``","`",$Kf[2]).$Kf[3];$p[]=array("field"=>$C,"type"=>strtolower($Kf[5]),"length"=>preg_replace_callback("~$xc~s",'normalize_enum',$Kf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Kf[8] $Kf[7]"))),"null"=>1,"full_type"=>$Kf[4],"inout"=>strtoupper($Kf[1]),"collation"=>strtolower($Kf[9]),);}if($U!="FUNCTION")return -array("fields"=>$p,"definition"=>$B[11]);return -array("fields"=>$p,"returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",);}function -routines(){return -get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function -routine_languages(){return -array();}function -routine_id($C,$J){return -idf_escape($C);}function -last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function -explain($g,$G){return$g->query("EXPLAIN ".(min_version(5.1)?"PARTITIONS ":"").$G);}function -found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function -types(){return -array();}function -schemas(){return -array();}function -get_schema(){return"";}function -set_schema($Xg){return -true;}function -create_sql($R,$Ma,$Eh){global$g;$I=$g->result("SHOW CREATE TABLE ".table($R),1);if(!$Ma)$I=preg_replace('~ AUTO_INCREMENT=\d+~','',$I);return$I;}function -truncate_sql($R){return"TRUNCATE ".table($R);}function -use_sql($j){return"USE ".idf_escape($j);}function -trigger_sql($R){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function -show_variables(){return -get_key_vals("SHOW VARIABLES");}function -process_list(){return -get_rows("SHOW FULL PROCESSLIST");}function -show_status(){return -get_key_vals("SHOW STATUS");}function -convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function -unconvert_field($o,$I){if(preg_match("~binary~",$o["type"]))$I="UNHEX($I)";if($o["type"]=="bit")$I="CONV($I, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))$I=(min_version(8)?"ST_":"")."GeomFromText($I)";return$I;}function -support($Qc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view"))."~",$Qc);}function -kill_process($X){return -queries("KILL ".number($X));}function -connection_id(){return"SELECT CONNECTION_ID()";}function -max_connections(){global$g;return$g->result("SELECT @@max_connections");}$x="sql";$zi=array();$Dh=array();foreach(array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(28)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(25)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(33)=>array("enum"=>65535,"set"=>64),lang(29)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(31)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$y=>$X){$zi+=$X;$Dh[$y]=array_keys($X);}$Fi=array("unsigned","zerofill","unsigned zerofill");$sf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$ld=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");$rd=array("avg","count","count distinct","group_concat","max","min","sum");$nc=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ia="4.6.3";class -Adminer{var$operators;function -name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'>Adminer</a>";}function -credentials(){return -array(SERVER,$_GET["username"],get_password());}function -connectSsl(){}function -permanentLogin($i=false){return -password_file($i);}function -bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function -serverName($N){return -h($N);}function -database(){return -DB;}function -databases($bd=true){return -get_databases($bd);}function -schemas(){return -schemas();}function -queryTimeout(){return -2;}function -headers(){}function -csp(){return -csp();}function -head(){return -true;}function -css(){$I=array();$Vc="adminer.css";if(file_exists($Vc))$I[]=$Vc;return$I;}function -loginForm(){global$fc;echo"<table cellspacing='0'>\n",$this->loginFormField('driver','<tr><th>'.lang(34).'<td>',html_select("auth[driver]",$fc,DRIVER)."\n"),$this->loginFormField('server','<tr><th>'.lang(35).'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'."\n"),$this->loginFormField('username','<tr><th>'.lang(36).'<td>','<input name="auth[username]" id="username" value="'.h($_GET["username"]).'" autocapitalize="off">'.script("focus(qs('#username'));")),$this->loginFormField('password','<tr><th>'.lang(37).'<td>','<input type="password" name="auth[password]">'."\n"),$this->loginFormField('db','<tr><th>'.lang(38).'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'."\n"),"</table>\n","<p><input type='submit' value='".lang(39)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(40))."\n";}function -loginFormField($C,$yd,$Y){return$yd.$Y;}function -login($xe,$F){if($F=="")return -lang(41,target_blank());return -true;}function -tableName($Kh){return -h($Kh["Name"]);}function -fieldName($o,$xf=0){return'<span title="'.h($o["full_type"]).'">'.h($o["field"]).'</span>';}function -selectLinks($Kh,$O=""){global$x,$m;echo'<p class="links">';$we=array("select"=>lang(42));if(support("table")||support("indexes"))$we["table"]=lang(43);if(support("table")){if(is_view($Kh))$we["view"]=lang(44);else$we["create"]=lang(45);}if($O!==null)$we["edit"]=lang(46);$C=$Kh["Name"];foreach($we -as$y=>$X)echo" <a href='".h(ME)."$y=".urlencode($C).($y=="edit"?$O:"")."'".bold(isset($_GET[$y])).">$X</a>";echo -doc_link(array($x=>$m->tableHelp($C)),"?"),"\n";}function -foreignKeys($R){return -foreign_keys($R);}function -backwardKeys($R,$Jh){return -array();}function -backwardKeysPrint($Pa,$J){}function -selectQuery($G,$_h,$Oc=false){global$x,$m;$I="</p>\n";if(!$Oc&&($Zi=$m->warnings())){$t="warnings";$I=", <a href='#$t'>".lang(47)."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$I<div id='$t' class='hidden'>\n$Zi</div>\n";}return"<p><code class='jush-$x'>".h(str_replace("\n"," ",$G))."</code> <span class='time'>(".format_time($_h).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($G)."'>".lang(10)."</a>":"").$I;}function -sqlCommandQuery($G){return -shorten_utf8(trim($G),1000);}function -rowDescription($R){return"";}function -rowDescriptions($K,$ed){return$K;}function -selectLink($X,$o){}function -selectVal($X,$_,$o,$Ef){$I=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$o["type"])&&!preg_match("~var~",$o["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$o["type"])&&!is_utf8($X))$I="<i>".lang(48,strlen($Ef))."</i>";if(preg_match('~json~',$o["type"]))$I="<code class='jush-js'>$I</code>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$I</a>":$I);}function -editVal($X,$o){return$X;}function -tableStructurePrint($p){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr><th>".lang(49)."<td>".lang(50).(support("comment")?"<td>".lang(51):"")."</thead>\n";foreach($p -as$o){echo"<tr".odd()."><th>".h($o["field"]),"<td><span title='".h($o["collation"])."'>".h($o["full_type"])."</span>",($o["null"]?" <i>NULL</i>":""),($o["auto_increment"]?" <i>".lang(52)."</i>":""),(isset($o["default"])?" <span title='".lang(53)."'>[<b>".h($o["default"])."</b>]</span>":""),(support("comment")?"<td>".h($o["comment"]):""),"\n";}echo"</table>\n";}function -tableIndexesPrint($w){echo"<table cellspacing='0'>\n";foreach($w -as$C=>$v){ksort($v["columns"]);$jg=array();foreach($v["columns"]as$y=>$X)$jg[]="<i>".h($X)."</i>".($v["lengths"][$y]?"(".$v["lengths"][$y].")":"").($v["descs"][$y]?" DESC":"");echo"<tr title='".h($C)."'><th>$v[type]<td>".implode(", ",$jg)."\n";}echo"</table>\n";}function -selectColumnsPrint($L,$e){global$ld,$rd;print_fieldset("select",lang(54),$L);$s=0;$L[""]=array();foreach($L -as$y=>$X){$X=$_GET["columns"][$y];$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($y!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($ld||$rd?"<select name='columns[$s][fun]'>".optionlist(array(-1=>"")+array_filter(array(lang(55)=>$ld,lang(56)=>$rd)),$X["fun"])."</select>".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($y!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$s++;}echo"</div></fieldset>\n";}function -selectSearchPrint($Z,$e,$w){print_fieldset("search",lang(57),$Z);foreach($w -as$s=>$v){if($v["type"]=="FULLTEXT"){echo"<div>(<i>".implode("</i>, <i>",array_map('h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h($_GET["fulltext"][$s])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"</div>\n";}}$bb="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(58).")"),html_select("where[$s][op]",$this->operators,$X["op"],$bb),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $bb }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}}echo"</div></fieldset>\n";}function -selectOrderPrint($xf,$e,$w){print_fieldset("sort",lang(59),$xf);$s=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$y]),lang(60))."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",1,false,lang(60))."</div>\n","</div></fieldset>\n";}function -selectLimitPrint($z){echo"<fieldset><legend>".lang(61)."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function -selectLengthPrint($Zh){if($Zh!==null){echo"<fieldset><legend>".lang(62)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Zh)."'>","</div></fieldset>\n";}}function -selectActionPrint($w){echo"<fieldset><legend>".lang(63)."</legend><div>","<input type='submit' value='".lang(54)."'>"," <span id='noindex' title='".lang(64)."'></span>","<script".nonce().">\n","var indexColumns = ";$e=array();foreach($w -as$v){$Lb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Lb)$e[$Lb]=1;}$e[""]=1;foreach($e -as$y=>$X)json_row($y);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function -selectCommandPrint(){return!information_schema(DB);}function -selectImportPrint(){return!information_schema(DB);}function -selectEmailPrint($sc,$e){}function -selectColumnsProcess($e,$w){global$ld,$rd;$L=array();$od=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$ld)||in_array($X["fun"],$rd)))){$L[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$rd))$od[]=$L[$y];}}return -array($L,$od);}function -selectSearchProcess($p,$w){global$g,$m;$I=array();foreach($w -as$s=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$s]!="")$I[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$fg="";$xb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Gd=process_length($X["val"]);$xb.=" ".($Gd!=""?$Gd:"(NULL)");}elseif($X["op"]=="SQL")$xb=" $X[val]";elseif($X["op"]=="LIKE %%")$xb=" LIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$xb=" ILIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$fg="$X[op](".q($X["val"]).", ";$xb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$xb.=" ".$this->processInput($p[$X["col"]],$X["val"]);if($X["col"]!="")$I[]=$fg.$m->convertSearch(idf_escape($X["col"]),$X,$p[$X["col"]]).$xb;else{$sb=array();foreach($p -as$C=>$o){if((preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$o["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$o["type"])))$sb[]=$fg.$m->convertSearch(idf_escape($C),$X,$o).$xb;}$I[]=($sb?"(".implode(" OR ",$sb).")":"1 = 0");}}}return$I;}function -selectOrderProcess($p,$w){$I=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$I;}function -selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function -selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function -selectEmailProcess($Z,$ed){return -false;}function -selectQueryBuild($L,$Z,$od,$xf,$z,$E){return"";}function -messageQuery($G,$ai,$Oc=false){global$x,$m;restart_session();$zd=&get_session("queries");if(!$zd[$_GET["db"]])$zd[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n...";$zd[$_GET["db"]][]=array($G,time(),$ai);$xh="sql-".count($zd[$_GET["db"]]);$I="<a href='#$xh' class='toggle'>".lang(65)."</a>\n";if(!$Oc&&($Zi=$m->warnings())){$t="warnings-".count($zd[$_GET["db"]]);$I="<a href='#$t' class='toggle'>".lang(47)."</a>, $I<div id='$t' class='hidden'>\n$Zi</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $I<div id='$xh' class='hidden'><pre><code class='jush-$x'>".shorten_utf8($G,1000)."</code></pre>".($ai?" <span class='time'>($ai)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($zd[$_GET["db"]])-1)).'">'.lang(10).'</a>':'').'</div>';}function -editFunctions($o){global$nc;$I=($o["null"]?"NULL/":"");foreach($nc -as$y=>$ld){if(!$y||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($ld -as$Xf=>$X){if(!$Xf||preg_match("~$Xf~",$o["type"]))$I.="/$X";}if($y&&!preg_match('~set|blob|bytea|raw|file~',$o["type"]))$I.="/SQL";}}if($o["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$I=lang(52);return -explode("/",$I);}function -editInput($R,$o,$Ka,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$Ka value='-1' checked><i>".lang(8)."</i></label> ":"").($o["null"]?"<label><input type='radio'$Ka value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$Ka,$o,$Y,0);return"";}function -editHint($R,$o,$Y){return"";}function -processInput($o,$Y,$r=""){if($r=="SQL")return$Y;$C=$o["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$I="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$I=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$I=idf_escape($C)." $r $I";elseif(preg_match('~^[+-] interval$~',$r))$I=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$I="$r(".idf_escape($C).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$I="$r($I)";return -unconvert_field($o,$I);}function -dumpOutput(){$I=array('text'=>lang(66),'file'=>lang(67));if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function -dumpFormat(){return -array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function -dumpDatabase($l){}function -dumpTable($R,$Eh,$Zd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Eh)dump_csv(array_keys(fields($R)));}else{if($Zd==2){$p=array();foreach(fields($R)as$C=>$o)$p[]=idf_escape($C)." $o[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$p).")";}else$i=create_sql($R,$_POST["auto_increment"],$Eh);set_utf8mb4($i);if($Eh&&$i){if($Eh=="DROP+CREATE"||$Zd==1)echo"DROP ".($Zd==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Zd==1)$i=remove_definer($i);echo"$i;\n\n";}}}function -dumpData($R,$Eh,$G){global$g,$x;$Ee=($x=="sqlite"?0:1048576);if($Eh){if($_POST["format"]=="sql"){if($Eh=="TRUNCATE+INSERT")echo -truncate_sql($R).";\n";$p=fields($R);}$H=$g->query($G,1);if($H){$Sd="";$Ya="";$ge=array();$Gh="";$Rc=($R!=''?'fetch_assoc':'fetch_row');while($J=$H->$Rc()){if(!$ge){$Ri=array();foreach($J -as$X){$o=$H->fetch_field();$ge[]=$o->name;$y=idf_escape($o->name);$Ri[]="$y = VALUES($y)";}$Gh=($Eh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ri):"").";\n";}if($_POST["format"]!="sql"){if($Eh=="table"){dump_csv($ge);$Eh="INSERT";}dump_csv($J);}else{if(!$Sd)$Sd="INSERT INTO ".table($R)." (".implode(", ",array_map('idf_escape',$ge)).") VALUES";foreach($J -as$y=>$X){$o=$p[$y];$J[$y]=($X!==null?unconvert_field($o,preg_match(number_type(),$o["type"])&&$X!=''?$X:q(($X===false?0:$X))):"NULL");}$Vg=($Ee?"\n":" ")."(".implode(",\t",$J).")";if(!$Ya)$Ya=$Sd.$Vg;elseif(strlen($Ya)+4+strlen($Vg)+strlen($Gh)<$Ee)$Ya.=",$Vg";else{echo$Ya.$Gh;$Ya=$Sd.$Vg;}}}if($Ya)echo$Ya.$Gh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function -dumpFilename($Dd){return -friendly_url($Dd!=""?$Dd:(SERVER!=""?SERVER:"localhost"));}function -dumpHeaders($Dd,$Te=false){$Hf=$_POST["output"];$Jc=(preg_match('~sql~',$_POST["format"])?"sql":($Te?"tar":"csv"));header("Content-Type: ".($Hf=="gz"?"application/x-gzip":($Jc=="tar"?"application/x-tar":($Jc=="sql"||$Hf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Hf=="gz")ob_start('ob_gzencode',1e6);return$Jc;}function -importServerPath(){return"adminer.sql";}function -homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.lang(68)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(69):lang(70))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(71)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(72)."</a>\n":"");return -true;}function -navigation($Se){global$ia,$x,$fc,$g;echo'<h1> -',$this->name(),' <span class="version">',$ia,'</span> -<a href="https://www.adminer.org/#download"',target_blank(),' id="version">',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a> -</h1> -';if($Se=="auth"){$Xc=true;foreach((array)$_SESSION["pwds"]as$Ti=>$jh){foreach($jh -as$N=>$Oi){foreach($Oi -as$V=>$F){if($F!==null){if($Xc){echo"<p id='logins'>".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");$Xc=false;}$Rb=$_SESSION["db"][$Ti][$N][$V];foreach(($Rb?array_keys($Rb):array(""))as$l)echo"<a href='".h(auth_url($Ti,$N,$V,$l))."'>($fc[$Ti]) ".h($V.($N!=""?"@".$this->serverName($N):"").($l!=""?" - $l":""))."</a><br>\n";}}}}}else{if($_GET["ns"]!==""&&!$Se&&DB!=""){$g->select_db(DB);$T=table_status('',true);}echo -script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.6.3");if(support("sql")){echo'<script',nonce(),'> -';if($T){$we=array();foreach($T -as$R=>$U)$we[]=preg_quote($R,'/');echo"var jushLinks = { $x: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$we).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$x;\n";}$ih=$g->server_info;echo'bodyLoad(\'',(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$ih):""),'\'',(preg_match('~MariaDB~',$ih)?", true":""),'); -</script> -';}$this->databasesPrint($Se);if(DB==""||!$Se){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(65)."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(73)."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(74)."</a>\n";}if($_GET["ns"]!==""&&!$Se&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(75)."</a>\n";if(!$T)echo"<p class='message'>".lang(9)."\n";else$this->tablesPrint($T);}}}function -databasesPrint($Se){global$b,$g;$k=$this->databases();if($k&&!in_array(DB,$k))array_unshift($k,DB);echo'<form action=""> -<p id="dbs"> -';hidden_fields_get();$Pb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title='".lang(76)."'>".lang(77)."</span>: ".($k?"<select name='db'>".optionlist(array(""=>"")+$k,DB)."</select>$Pb":"<input name='db' value='".h(DB)."' autocapitalize='off'>\n"),"<input type='submit' value='".lang(20)."'".($k?" class='hidden'":"").">\n";if($Se!="db"&&DB!=""&&$g->select_db(DB)){if(support("scheme")){echo"<br>".lang(78).": <select name='ns'>".optionlist(array(""=>"")+$b->schemas(),$_GET["ns"])."</select>$Pb";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type='hidden' name='$X' value=''>";break;}}echo"</p></form>\n";}function -tablesPrint($T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T -as$R=>$P){$C=$this->tableName($P);if($C!=""){echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select").">".lang(79)."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($P)?"view":"structure"))." title='".lang(43)."'>$C</a>":"<span>$C</span>")."\n";}}echo"</ul>\n";}}$b=(function_exists('adminer_object')?adminer_object():new -Adminer);if($b->operators===null)$b->operators=$sf;function -page_header($di,$n="",$Xa=array(),$ei=""){global$ca,$ia,$b,$fc,$x;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$fi=$di.($ei!=""?": $ei":"");$gi=strip_tags($fi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> -<html lang="',$ca,'" dir="',lang(80),'"> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<meta name="robots" content="noindex"> -<title>',$gi,' - -',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.6.3");if($b->head()){echo' - -';foreach($b->css()as$Jb){echo' -';}}echo' - -';$Vc=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($Vc)&&filemtime($Vc)+86400>time()){$Ui=unserialize(file_get_contents($Vc));$qg="-----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK -RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs -DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8 -h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO -jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B -nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ -fQIDAQAB ------END PUBLIC KEY----- -";if(openssl_verify($Ui["version"],base64_decode($Ui["signature"]),$qg)==1)$_COOKIE["adminer_version"]=$Ui["version"];}echo' -mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')");?>}); -document.body.className = document.body.className.replace(/ nojs/, ' js'); -var offlineMessage = ' - - -',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),' -
                    -';if($Xa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

                    $fi

                    \n","\n";restart_session();page_messages($n);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define("PAGE_HEADER",1);}function -page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Ib){$xd=array();foreach($Ib -as$y=>$X)$xd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$xd));}$b->headers();}function -csp(){return -array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function -get_nonce(){static$cf;if(!$cf)$cf=base64_encode(rand_string());return$cf;}function -page_messages($n){$Hi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Oe=$_SESSION["messages"][$Hi];if($Oe){echo"
                    ".implode("
                    \n
                    ",$Oe)."
                    ".script("messagesPrint();");unset($_SESSION["messages"][$Hi]);}if($n)echo"
                    $n
                    \n";}function -page_footer($Se=""){global$b,$ki;echo'
                    - -';switch_lang();if($Se!="auth"){echo'
                    -

                    - - -

                    -
                    -';}echo' -',script("setupSubmitHighlight(document);");}function -int32($Ve){while($Ve>=2147483648)$Ve-=4294967296;while($Ve<=-2147483649)$Ve+=4294967296;return(int)$Ve;}function -long2str($W,$Yi){$Vg='';foreach($W -as$X)$Vg.=pack('V',$X);if($Yi)return -substr($Vg,0,end($W));return$Vg;}function -str2long($Vg,$Yi){$W=array_values(unpack('V*',str_pad($Vg,4*ceil(strlen($Vg)/4),"\0")));if($Yi)$W[]=strlen($Vg);return$W;}function -xxtea_mx($lj,$kj,$Hh,$ce){return -int32((($lj>>5&0x7FFFFFF)^$kj<<2)+(($kj>>3&0x1FFFFFFF)^$lj<<4))^int32(($Hh^$kj)+($ce^$lj));}function -encrypt_string($Ch,$y){if($Ch=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Ch,true);$Ve=count($W)-1;$lj=$W[$Ve];$kj=$W[0];$rg=floor(6+52/($Ve+1));$Hh=0;while($rg-->0){$Hh=int32($Hh+0x9E3779B9);$mc=$Hh>>2&3;for($If=0;$If<$Ve;$If++){$kj=$W[$If+1];$Ue=xxtea_mx($lj,$kj,$Hh,$y[$If&3^$mc]);$lj=int32($W[$If]+$Ue);$W[$If]=$lj;}$kj=$W[0];$Ue=xxtea_mx($lj,$kj,$Hh,$y[$If&3^$mc]);$lj=int32($W[$Ve]+$Ue);$W[$Ve]=$lj;}return -long2str($W,false);}function -decrypt_string($Ch,$y){if($Ch=="")return"";if(!$y)return -false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Ch,false);$Ve=count($W)-1;$lj=$W[$Ve];$kj=$W[0];$rg=floor(6+52/($Ve+1));$Hh=int32($rg*0x9E3779B9);while($Hh){$mc=$Hh>>2&3;for($If=$Ve;$If>0;$If--){$lj=$W[$If-1];$Ue=xxtea_mx($lj,$kj,$Hh,$y[$If&3^$mc]);$kj=int32($W[$If]-$Ue);$W[$If]=$kj;}$lj=$W[$Ve];$Ue=xxtea_mx($lj,$kj,$Hh,$y[$If&3^$mc]);$kj=int32($W[0]-$Ue);$W[0]=$kj;$Hh=int32($Hh-0x9E3779B9);}return -long2str($W,true);}$g='';$wd=$_SESSION["token"];if(!$wd)$_SESSION["token"]=rand(1,1e6);$ki=get_token();$Yf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Yf[$y]=$X;}}function -add_invalid_login(){global$b;$jd=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$jd)return;$Vd=unserialize(stream_get_contents($jd));$ai=time();if($Vd){foreach($Vd -as$Wd=>$X){if($X[0]<$ai)unset($Vd[$Wd]);}}$Ud=&$Vd[$b->bruteForceKey()];if(!$Ud)$Ud=array($ai+30*60,0);$Ud[1]++;file_write_unlock($jd,serialize($Vd));}function -check_invalid_login(){global$b;$Vd=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Ud=$Vd[$b->bruteForceKey()];$bf=($Ud[1]>29?$Ud[0]-time():0);if($bf>0)auth_error(lang(83,ceil($bf/60)));}$La=$_POST["auth"];if($La){session_regenerate_id();$Ti=$La["driver"];$N=$La["server"];$V=$La["username"];$F=(string)$La["password"];$l=$La["db"];set_password($Ti,$N,$V,$F);$_SESSION["db"][$Ti][$N][$V][$l]=true;if($La["permanent"]){$y=base64_encode($Ti)."-".base64_encode($N)."-".base64_encode($V)."-".base64_encode($l);$kg=$b->permanentLogin(true);$Yf[$y]="$y:".base64_encode($kg?encrypt_string($F,$kg):"");cookie("adminer_permanent",implode(" ",$Yf));}if(count($_POST)==1||DRIVER!=$Ti||SERVER!=$N||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($Ti,$N,$V,$l));}elseif($_POST["logout"]){if($wd&&!verify_token()){page_header(lang(82),lang(84));page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(85).' '.lang(86,'https://sourceforge.net/donate/kod_index.php?group_id=264133'));}}elseif($Yf&&!$_SESSION["pwds"]){session_regenerate_id();$kg=$b->permanentLogin();foreach($Yf -as$y=>$X){list(,$jb)=explode(":",$X);list($Ti,$N,$V,$l)=array_map('base64_decode',explode("-",$y));set_password($Ti,$N,$V,decrypt_string(base64_decode($jb),$kg));$_SESSION["db"][$Ti][$N][$V][$l]=true;}}function -unset_permanent(){global$Yf;foreach($Yf -as$y=>$X){list($Ti,$N,$V,$l)=array_map('base64_decode',explode("-",$y));if($Ti==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$l==DB)unset($Yf[$y]);}cookie("adminer_permanent",implode(" ",$Yf));}function -auth_error($n){global$b,$wd;$kh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$kh]||$_GET[$kh])&&!$wd)$n=lang(87);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$n.='
                    '.lang(88,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$kh]&&$_GET[$kh]&&ini_bool("session.use_only_cookies"))$n=lang(89);$Lf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$Lf["lifetime"]);page_header(lang(39),$n,null);echo"
                    \n","
                    ";if(hidden_fields($_POST,array("auth")))echo"

                    ".lang(90)."\n";echo"

                    \n";$b->loginForm();echo"
                    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(91),lang(92,implode(", ",$eg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])){list($Bd,$ag)=explode(":",SERVER,2);if(is_numeric($ag)&&$ag<1024)auth_error(lang(93));check_invalid_login();$g=connect();$m=new -Min_Driver($g);}$xe=null;if(!is_object($g)||($xe=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($g)?h($g):(is_string($xe)?$xe:lang(94))));if($La&&$_POST["token"])$_POST["token"]=$ki;$n='';if($_POST){if(!verify_token()){$Pd="max_input_vars";$Ie=ini_get($Pd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$Ie||$X<$Ie)){$Pd=$y;$Ie=$X;}}}$n=(!$_POST["token"]&&$Ie?lang(95,"'$Pd'"):lang(84).' '.lang(96));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=lang(97,"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.lang(98);}function -select($H,$h=null,$_f=array(),$z=0){global$x;$we=array();$w=array();$e=array();$Ua=array();$zi=array();$I=array();odd('');for($s=0;(!$z||$s<$z)&&($J=$H->fetch_row());$s++){if(!$s){echo"\n","";for($be=0;$befetch_field();$C=$o->name;$zf=$o->orgtable;$yf=$o->orgname;$I[$o->table]=$zf;if($_f&&$x=="sql")$we[$be]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($zf!=""){if(!isset($w[$zf])){$w[$zf]=array();foreach(indexes($zf,$h)as$v){if($v["type"]=="PRIMARY"){$w[$zf]=array_flip($v["columns"]);break;}}$e[$zf]=$w[$zf];}if(isset($e[$zf][$yf])){unset($e[$zf][$yf]);$w[$zf][$yf]=$be;$we[$be]=$zf;}}if($o->charsetnr==63)$Ua[$be]=true;$zi[$be]=$o->type;echo"name!=$yf?" title='".h(($zf!=""?"$zf.":"").$yf)."'":"").">".h($C).($_f?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($J -as$y=>$X){if($X===null)$X="NULL";elseif($Ua[$y]&&!is_utf8($X))$X="".lang(48,strlen($X))."";else{$X=h($X);if($zi[$y]==254)$X="$X";}if(isset($we[$y])&&!$e[$we[$y]]){if($_f&&$x=="sql"){$R=$J[array_search("table=",$we)];$_=$we[$y].urlencode($_f[$R]!=""?$_f[$R]:$R);}else{$_="edit=".urlencode($we[$y]);foreach($w[$we[$y]]as$nb=>$be)$_.="&where".urlencode("[".bracket_escape($nb)."]")."=".urlencode($J[$be]);}$X="$X";}echo"
                    $X";}}echo($s?"
                    ":"

                    ".lang(12))."\n";return$I;}function -referencable_primary($eh){$I=array();foreach(table_status('',true)as$Lh=>$R){if($Lh!=$eh&&fk_support($R)){foreach(fields($Lh)as$o){if($o["primary"]){if($I[$Lh]){unset($I[$Lh]);break;}$I[$Lh]=$o;}}}}return$I;}function -textarea($C,$Y,$K=10,$sb=80){global$x;echo"";}function -edit_type($y,$o,$qb,$fd=array(),$Mc=array()){global$Dh,$zi,$Fi,$nf;$U=$o["type"];echo' -',on_help("getTarget(event).value",1),script("mixin(qsl('select'), {onfocus: function () { lastType = selectValue(this); }, onchange: editingTypeChange});",""),'',script("mixin(qsl('input'), {onfocus: editingLengthFocus, oninput: editingLengthChange});",""),'',"',($Fi?"':''),(isset($o['on_update'])?"':''),($fd?" ":" ");}function -process_length($te){global$xc;return(preg_match("~^\\s*\\(?\\s*$xc(?:\\s*,\\s*$xc)*+\\s*\\)?\\s*\$~",$te)&&preg_match_all("~$xc~",$te,$Ce)?"(".implode(",",$Ce[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$te)));}function -process_type($o,$ob="COLLATE"){global$Fi;return" $o[type]".process_length($o["length"]).(preg_match(number_type(),$o["type"])&&in_array($o["unsigned"],$Fi)?" $o[unsigned]":"").(preg_match('~char|text|enum|set~',$o["type"])&&$o["collation"]?" $ob ".q($o["collation"]):"");}function -process_field($o,$xi){return -array(idf_escape(trim($o["field"])),process_type($xi),($o["null"]?" NULL":" NOT NULL"),default_value($o),(preg_match('~timestamp|datetime~',$o["type"])&&$o["on_update"]?" ON UPDATE $o[on_update]":""),(support("comment")&&$o["comment"]!=""?" COMMENT ".q($o["comment"]):""),($o["auto_increment"]?auto_increment():null),);}function -default_value($o){$Tb=$o["default"];return($Tb===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$o["type"])||preg_match('~^(?![a-z])~i',$Tb)?q($Tb):$Tb));}function -type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$U))return" class='$y'";}}function -edit_fields($p,$qb,$U="TABLE",$fd=array(),$wb=false){global$Qd;$p=array_values($p);echo' -';if($U=="PROCEDURE"){echo'';}echo'',($U=="TABLE"?lang(103):lang(104)),'',lang(50),'',script("qs('#enum-edit').onblur = editingLengthBlur;"),'',lang(105),'',lang(106);if($U=="TABLE"){echo'NULL -AI',doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'',lang(53),(support("comment")?"".lang(51):"");}echo'',"".script("row_count = ".count($p).";"),' - -',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($p -as$s=>$o){$s++;$Af=$o[($_POST?"orig":"field")];$bc=(isset($_POST["add"][$s-1])||(isset($o["field"])&&!$_POST["drop_col"][$s]))&&(support("drop_col")||$Af=="");echo' -',($U=="PROCEDURE"?"".html_select("fields[$s][inout]",explode("|",$Qd),$o["inout"]):""),'';if($bc){echo'',script("qsl('input').oninput = function () { editingNameChange.call(this);".($o["field"]!=""||count($p)>1?"":" editingAddRow.call(this);")." };","");}echo' -';edit_type("fields[$s]",$o,$qb,$fd);if($U=="TABLE"){echo'',checkbox("fields[$s][null]",1,$o["null"],"","","block","label-null"),'',checkbox("fields[$s][has_default]",1,$o["has_default"],"","","","label-default"),'',(support("comment")?"

                    ".lang(118,$fc[DRIVER],"".h($g->server_info)."","$g->extension")."\n","

                    ".lang(119,"".h(logged_user())."")."\n";$k=$b->databases();if($k){$Yg=support("scheme");$qb=collations();echo"

                    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$k=($_GET["dbsize"]?count_tables($k):array_flip($k));foreach($k -as$l=>$T){$Qg=h(ME)."db=".urlencode($l);$t=h("Db-".$l);echo"".(support("database")?"
                    ":"")."".lang(38)." - ".lang(120).""."".lang(121)."".lang(122)."".lang(123)." - ".lang(124)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
                    ".checkbox("db[]",$l,in_array($l,(array)$_POST["db"]),"","","",$t):""),"".h($l)."";$pb=h(db_collation($l,$qb));echo"".(support("database")?"$pb":$pb),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($l):"?"),"\n";}echo"
                    \n",(support("database")?"\n":""),"\n","
                    \n",script("tableCheck();");}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$g->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}if(support("scheme")&&DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(78).": ".h($_GET["ns"]),lang(127),true);page_footer("ns");exit;}}$nf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class -TmpFile{var$handler;var$size;function -__construct(){$this->handler=tmpfile();}function -write($Ab){$this->size+=strlen($Ab);fwrite($this->handler,$Ab);}function -send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$xc="'(?:''|[^'\\\\]|\\\\.)*'";$Qd="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$p=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$m->select($a,$L,array(where($_GET,$p)),$L);$J=($H?$H->fetch_row():array());echo$m->value($J[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$S=table_status1($a,true);$C=$b->tableName($S);page_header(($p&&is_view($S)?$S['Engine']=='materialized view'?lang(128):lang(129):lang(130)).": ".($C!=""?$C:h($a)),$n);$b->selectLinks($S);$vb=$S["Comment"];if($vb!="")echo"

                    ".lang(51).": ".h($vb)."\n";if($p)$b->tableStructurePrint($p);if(!is_view($S)){if(support("indexes")){echo"

                    ".lang(131)."

                    \n";$w=indexes($a);if($w)$b->tableIndexesPrint($w);echo'

                    ".lang(99)."

                    \n";$fd=foreign_keys($a);if($fd){echo"\n","\n";foreach($fd -as$C=>$q){echo"","
                    ".lang(133)."".lang(134)."".lang(102)."".lang(101)."
                    ".implode(", ",array_map('h',$q["source"]))."","".($q["db"]!=""?"".h($q["db"]).".":"").($q["ns"]!=""?"".h($q["ns"]).".":"").h($q["table"])."","(".implode(", ",array_map('h',$q["target"])).")","".h($q["on_delete"])."\n","".h($q["on_update"])."\n",''.lang(135).'';}echo"
                    \n";}echo'

                    ".lang(137)."

                    \n";$wi=triggers($a);if($wi){echo"\n";foreach($wi -as$y=>$X)echo"
                    ".h($X[0])."".h($X[1])."".h($y)."".lang(135)."\n";echo"
                    \n";}echo'
                    - -qs(\'#schema\').onselectstart = function () { return false; }; -var tablePos = {',implode(",",$Oh)."\n",'}; -var em = qs(\'#schema\').offsetHeight / ',$li,'; -document.onmousemove = schemaMousemove; -document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); - -';foreach($Xg -as$C=>$R){echo"
                    ",''.h($C)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$o){$X=''.h($o["field"]).'';echo"
                    ".($o["primary"]?"$X":$X);}foreach((array)$R["references"]as$Uh=>$Dg){foreach($Dg -as$pe=>$_g){$qe=$pe-$Nh[$C][1];$s=0;foreach($_g[0]as$sh)echo"\n
                    ";}}foreach((array)$Cg[$C]as$Uh=>$Dg){foreach($Dg -as$pe=>$e){$qe=$pe-$Nh[$C][1];$s=0;foreach($e -as$Th)echo"\n
                    ";}}echo"\n
                    \n";}foreach($Xg -as$C=>$R){foreach((array)$R["references"]as$Uh=>$Dg){foreach($Dg -as$pe=>$_g){$Re=$li;$Ge=-10;foreach($_g[0]as$y=>$sh){$cg=$R["pos"][0]+$R["fields"][$sh]["pos"];$dg=$Xg[$Uh]["pos"][0]+$Xg[$Uh]["fields"][$_g[1][$y]]["pos"];$Re=min($Re,$cg,$dg);$Ge=max($Ge,$cg,$dg);}echo"
                    \n";}}}echo'
                    -
                    - -';$Qb=array('','USE','DROP+CREATE','CREATE');$Ph=array('','DROP+CREATE','CREATE');$Nb=array('','TRUNCATE+INSERT','INSERT');if($x=="sql")$Nb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$J);if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($J["events"])){$J["routines"]=$J["events"]=($_GET["dump"]=="");$J["triggers"]=$J["table_style"];}echo"
                    ".lang(140)."".html_select("output",$b->dumpOutput(),$J["output"],0)."\n";echo"
                    ".lang(141)."".html_select("format",$b->dumpFormat(),$J["format"],0)."\n";echo($x=="sqlite"?"":"
                    ".lang(38)."".html_select('db_style',$Qb,$J["db_style"]).(support("routine")?checkbox("routines",1,$J["routines"],lang(142)):"").(support("event")?checkbox("events",1,$J["events"],lang(143)):"")),"
                    ".lang(122)."".html_select('table_style',$Ph,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(52)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(137)):""),"
                    ".lang(144)."".html_select('data_style',$Nb,$J["data_style"]),'
                    -

                    - - - -',script("qsl('table').onclick = dumpClick;");$gg=array();if(DB!=""){$fb=($a!=""?"":" checked");echo"","\n";$Wi="";$Qh=tables_list();foreach($Qh -as$C=>$U){$fg=preg_replace('~_.*~','',$C);$fb=($a==""||$a==(substr($a,-1)=="%"?"$fg%":$C));$jg="\n";$k=$b->databases();if($k){foreach($k -as$l){if(!information_schema($l)){$fg=preg_replace('~_.*~','',$l);echo"
                    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
                    ".checkbox("tables[]",$C,$fb,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$Wi.="$jg\n";else -echo"$jg\n";$gg[$fg]++;}echo$Wi;if($Qh)echo -script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
                    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
                    ".checkbox("databases[]",$l,$a==""||$a=="$fg%",$l,"","block")."\n";$gg[$fg]++;}}}else -echo"
                    ";}echo'
                    -

                    -';$Xc=true;foreach($gg -as$y=>$X){if($y!=""&&$X>1){echo($Xc?"

                    ":" ")."".h($y)."";$Xc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(72));echo'

                    \n";hidden_fields_get();echo"\n",($md?"":"\n"),"\n","\n";while($J=$H->fetch_assoc())echo'
                    ".lang(36)."".lang(35)."
                    '.h($J["User"])."".h($J["Host"]).''.lang(10)."\n";if(!$md||DB!="")echo"\n";echo"
                    \n","

                    \n";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$_d=&get_session("queries");$zd=&$_d[DB];if(!$n&&$_POST["clear"]){$zd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(73):lang(65)),$n);if(!$n&&$_POST){$jd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$wh=$b->importServerPath();$jd=@fopen((file_exists($wh)?$wh:"compress.zlib://$wh.gz"),"rb");$G=($jd?fread($jd,1e6):false);}else$G=get_file("sql_file",true);if(is_string($G)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$rg=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$zd||reset(end($zd))!=$rg){restart_session();$zd[]=array($rg,time());set_session("queries",$_d);stop_session();}}$th="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Wb=";";$D=0;$uc=true;$h=connect();if(is_object($h)&&DB!="")$h->select_db(DB);$ub=0;$zc=array();$Nf='[\'"'.($x=="sql"?'`#':($x=="sqlite"?'`[':($x=="mssql"?'[':''))).']|/\*|-- |$'.($x=="pgsql"?'|\$[^$]*\$':'');$mi=microtime(true);parse_str($_COOKIE["adminer_export"],$ya);$lc=$b->dumpFormat();unset($lc["sql"]);while($G!=""){if(!$D&&preg_match("~^$th*+DELIMITER\\s+(\\S+)~i",$G,$B)){$Wb=$B[1];$G=substr($G,strlen($B[0]));}else{preg_match('('.preg_quote($Wb)."\\s*|$Nf)",$G,$B,PREG_OFFSET_CAPTURE,$D);list($hd,$bg)=$B[0];if(!$hd&&$jd&&!feof($jd))$G.=fread($jd,1e5);else{if(!$hd&&rtrim($G)=="")break;$D=$bg+strlen($hd);if($hd&&rtrim($hd)!=$Wb){while(preg_match('('.($hd=='/*'?'\*/':($hd=='['?']':(preg_match('~^-- |^#~',$hd)?"\n":preg_quote($hd)."|\\\\."))).'|$)s',$G,$B,PREG_OFFSET_CAPTURE,$D)){$Vg=$B[0][0];if(!$Vg&&$jd&&!feof($jd))$G.=fread($jd,1e5);else{$D=$B[0][1]+strlen($Vg);if($Vg[0]!="\\")break;}}}else{$uc=false;$rg=substr($G,0,$bg);$ub++;$jg="
                    ".$b->sqlCommandQuery($rg)."
                    \n";if($x=="sqlite"&&preg_match("~^$th*+ATTACH\\b~i",$rg,$B)){echo$jg,"

                    ".lang(146)."\n";$zc[]=" $ub";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$jg;ob_flush();flush();}$_h=microtime(true);if($g->multi_query($rg)&&is_object($h)&&preg_match("~^$th*+USE\\b~i",$rg))$h->query($rg);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$jg:""),"

                    ".lang(147).($g->errno?" ($g->errno)":"").": ".error()."\n";$zc[]=" $ub";if($_POST["error_stops"])break -2;}else{$ai=" (".format_time($_h).")".(strlen($rg)<1000?" ".lang(10)."":"");$_a=$g->affected_rows;$Zi=($_POST["only_errors"]?"":$m->warnings());$aj="warnings-$ub";if($Zi)$ai.=", ".lang(47)."".script("qsl('a').onclick = partial(toggle, '$aj');","");$Gc=null;$Hc="explain-$ub";if(is_object($H)){$z=$_POST["limit"];$_f=select($H,$h,array(),$z);if(!$_POST["only_errors"]){echo"

                    \n";$df=$H->num_rows;echo"

                    ".($df?($z&&$df>$z?lang(148,$z):"").lang(149,$df):""),$ai;if($h&&preg_match("~^($th|\\()*+SELECT\\b~i",$rg)&&($Gc=explain($h,$rg)))echo", Explain".script("qsl('a').onclick = partial(toggle, '$Hc');","");$t="export-$ub";echo", ".lang(74)."".script("qsl('a').onclick = partial(toggle, '$t');","")."\n"."

                    \n";}}else{if(preg_match("~^$th*+(CREATE|DROP|ALTER)$th++(DATABASE|SCHEMA)\\b~i",$rg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

                    ".lang(150,$_a)."$ai\n";}echo($Zi?"

                    \n":"");if($Gc){echo"\n";}}$_h=microtime(true);}while($g->next_result());}$G=substr($G,$D);$D=0;}}}}if($uc)echo"

                    ".lang(151)."\n";elseif($_POST["only_errors"]){echo"

                    ".lang(152,$ub-count($zc))," (".format_time($mi).")\n";}elseif($zc&&$ub>1)echo"

                    ".lang(147).": ".implode("",$zc)."\n";}else -echo"

                    ".upload_error($G)."\n";}echo' -

                    -';$Dc="";if(!isset($_GET["import"])){$rg=$_GET["sql"];if($_POST)$rg=$_POST["query"];elseif($_GET["history"]=="all")$rg=$zd;elseif($_GET["history"]!="")$rg=$zd[$_GET["history"]][0];echo"

                    ";textarea("query",$rg,20);echo($_POST?"":script("qs('textarea').focus();")),"

                    $Dc\n",lang(154).": \n";}else{echo"

                    ".lang(155)."
                    ";$sd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$sd (< ".ini_get("upload_max_filesize")."B): \n$Dc":lang(156)),"
                    \n","
                    ".lang(157)."
                    ",lang(158,"".h($b->importServerPath())."$sd"),' ',"
                    \n","

                    ";}echo -checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),lang(160))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),lang(161))."\n","\n";if(!isset($_GET["import"])&&$zd){print_fieldset("history",lang(162),$_GET["history"]!="");for($X=end($zd);$X;$X=prev($zd)){$y=key($zd);list($rg,$ai,$pc)=$X;echo''.lang(10).""." ".@date("H:i:s",$ai).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$rg)))),80,"").($pc?" ($pc)":"")."
                    \n";}echo"\n","".lang(164)."\n","\n";}echo'

                    -';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Gi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p -as$C=>$o){if(!isset($o["privileges"][$Gi?"update":"insert"])||$b->fieldName($o)=="")unset($p[$C]);}if($_POST&&!$n&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($Gi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$Bi=unique_array($_GET["where"],$w);$ug="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,lang(165),$m->delete($a,$ug,!$Bi));else{$O=array();foreach($p -as$C=>$o){$X=process_input($o);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Gi){if(!$O)redirect($A);queries_redirect($A,lang(166),$m->update($a,$O,$ug,!$Bi));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$H=$m->insert($a,$O);$oe=($H?last_id():0);queries_redirect($A,lang(167,($oe?" $oe":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($p -as$C=>$o){if(isset($o["privileges"]["select"])){$Ha=convert_field($o);if($_POST["clone"]&&$o["auto_increment"])$Ha="''";if($x=="sql"&&preg_match("~enum|set~",$o["type"]))$Ha="1*".idf_escape($C);$L[]=($Ha?"$Ha AS ":"").idf_escape($C);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$m->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$n=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$p){if(!$Z){$H=$m->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($m->primary=>"");}if($J){foreach($J -as$y=>$X){if(!$Z)$J[$y]=null;$p[$y]=array("field"=>$y,"null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary));}}}edit_form($a,$p,$J,$Gi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Pf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$Pf[$y]=$y;$Bg=referencable_primary($a);$fd=array();foreach($Bg -as$Lh=>$o)$fd[str_replace("`","``",$Lh)."`".str_replace("`","``",$o["field"])]=$Lh;$Cf=array();$S=array();if($a!=""){$Cf=fields($a);$S=table_status($a);if(!$S)$n=lang(9);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($J["fields"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(168),drop_tables(array($a)));else{$p=array();$Ea=array();$Li=false;$dd=array();$Bf=reset($Cf);$Ba=" FIRST";foreach($J["fields"]as$y=>$o){$q=$fd[$o["type"]];$xi=($q!==null?$Bg[$q]:$o);if($o["field"]!=""){if(!$o["has_default"])$o["default"]=null;if($y==$J["auto_increment_col"])$o["auto_increment"]=true;$og=process_field($o,$xi);$Ea[]=array($o["orig"],$og,$Ba);if($og!=process_field($Bf,$Bf)){$p[]=array($o["orig"],$og,$Ba);if($o["orig"]!=""||$Ba)$Li=true;}if($q!==null)$dd[idf_escape($o["field"])]=($a!=""&&$x!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$fd[$o["type"]],'source'=>array($o["field"]),'target'=>array($xi["field"]),'on_delete'=>$o["on_delete"],));$Ba=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Li=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$Bf=next($Cf);if(!$Bf)$Ba="";}}$Rf="";if($Pf[$J["partition_by"]]){$Sf=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$y=>$X){$Y=$J["partition_values"][$y];$Sf[]="\n PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Rf.="\nPARTITION BY $J[partition_by]($J[partition])".($Sf?" (".implode(",",$Sf)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$S["Create_options"]))$Rf.="\nREMOVE PARTITIONING";$Ke=lang(169);if($a==""){cookie("adminer_engine",$J["Engine"]);$Ke=lang(170);}$C=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Ke,alter_table($a,$C,($x=="sqlite"&&($Li||$dd)?$Ea:$p),$dd,($J["Comment"]!=$S["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Rf));}}page_header(($a!=""?lang(45):lang(75)),$n,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($zi["int"])?"int":(isset($zi["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Cf -as$o){$o["has_default"]=isset($o["default"]);$J["fields"][]=$o;}if(support("partitioning")){$kd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$H=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $kd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$Sf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $kd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$Sf[""]="";$J["partition_names"]=array_keys($Sf);$J["partition_values"]=array_values($Sf);}}}$qb=collations();$wc=engines();foreach($wc -as$vc){if(!strcasecmp($vc,$J["Engine"])){$J["Engine"]=$vc;break;}}echo' -
                    -

                    -';if(support("columns")||$a==""){echo -lang(171),': -';if($a==""&&!$_POST)echo -script("focus(qs('#form')['name']);");echo($wc?"".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($qb&&!preg_match("~sqlite|mssql~",$x)?html_select("Collation",array(""=>"(".lang(100).")")+$qb,$J["Collation"]):""),' -';}echo' -';if(support("columns")){echo' -';$wb=($_POST?$_POST["comments"]:$J["Comment"]!="");if(!$_POST&&!$wb){foreach($J["fields"]as$o){if($o["comment"]!=""){$wb=true;break;}}}edit_fields($J["fields"],$qb,"TABLE",$fd,$wb);echo'
                    -

                    -',lang(52),': -',checkbox("defaults",1,!$_POST||$_POST["defaults"],lang(173),"columnShow(this.checked, 5)","jsonly"),($_POST?"":script("editingHideDefaults();")),(support("comment")?"".script("qsl('input').onclick = partial(editingCommentsClick, true);").' ':''),'

                    - -';}echo' -';if($a!=""){echo'',confirm(lang(174,$a));}if(support("partitioning")){$Qf=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(175),$J["partition_by"]);echo'

                    -',"".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'() -',lang(176),': - - -';foreach($J["partition_names"]as$y=>$X){echo'',' - -';}echo' -

                    -',script("qs('#form')['defaults'].onclick();".(support("comment")?" editingCommentsClick.call(qs('#form')['comments']);":""));}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Id=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Id[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Id[]="SPATIAL";$w=indexes($a);$hg=array();if($x=="mongo"){$hg=$w["_id_"];unset($Id[0]);unset($w["_id_"]);}$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$Id)){$e=array();$ue=array();$Yb=array();$O=array();ksort($v["columns"]);foreach($v["columns"]as$y=>$d){if($d!=""){$te=$v["lengths"][$y];$Xb=$v["descs"][$y];$O[]=idf_escape($d).($te?"(".(+$te).")":"").($Xb?" DESC":"");$e[]=$d;$ue[]=($te?$te:null);$Yb[]=$Xb;}}if($e){$Ec=$w[$C];if($Ec){ksort($Ec["columns"]);ksort($Ec["lengths"]);ksort($Ec["descs"]);if($v["type"]==$Ec["type"]&&array_values($Ec["columns"])===$e&&(!$Ec["lengths"]||array_values($Ec["lengths"])===$ue)&&array_values($Ec["descs"])===$Yb){unset($w[$C]);continue;}}$c[]=array($v["type"],$C,$O);}}}foreach($w -as$C=>$Ec)$c[]=array($Ec["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(179),alter_indexes($a,$c));}page_header(lang(131),$n,array("table"=>$a),h($a));$p=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$y=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$y]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w -as$y=>$v){$w[$y]["name"]=$y;$w[$y]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}echo' -
                    - - - -';if($hg){echo"
                    ',lang(180),'',lang(181),'',lang(182),' -
                    PRIMARY";foreach($hg["columns"]as$y=>$d){echo -select_input(" disabled",$p,$d)," ";}echo"\n";}$be=1;foreach($J["indexes"]as$v){if(!$_POST["drop_col"]||$be!=key($_POST["drop_col"])){echo"
                    ".html_select("indexes[$be][type]",array(-1=>"")+$Id,$v["type"],($be==count($J["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"";ksort($v["columns"]);$s=1;foreach($v["columns"]as$y=>$d){echo"".select_input(" name='indexes[$be][columns][$s]' title='".lang(49)."'",($p?array_combine($p,$p):$p),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape($x=="sql"?"":$_GET["indexes"]."_")."')"),($x=="sql"||$x=="mssql"?"":""),($x!="sql"?checkbox("indexes[$be][descs][$s]",1,$v["descs"][$y],lang(60)):"")," ";$s++;}echo"\n","".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$be++;}echo'
                    -

                    - - -

                    -';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(183),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(184),rename_database($C,$J["collation"]));}else{$k=explode("\n",str_replace("\r","",$C));$Fh=true;$ne="";foreach($k -as$l){if(count($k)==1||$l!=""){if(!create_database($l,$J["collation"]))$Fh=false;$ne=$l;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($ne),lang(185),$Fh);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(186));}}page_header(DB!=""?lang(68):lang(114),$n,array(),h(DB));$qb=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$qb);elseif($x=="sql"){foreach(get_vals("SHOW GRANTS")as$md){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$md,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo' -
                    -

                    -',($_POST["add_x"]||strpos($C,"\n")?'
                    ':'')."\n".($qb?html_select("collation",array(""=>"(".lang(100).")")+$qb,$J["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"ms187963.aspx",)):""),script("focus(qs('#name'));"),' -';if(DB!="")echo"".confirm(lang(174,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"\n";echo' -

                    -';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$n){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(187));else{$C=trim($J["name"]);$_.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,lang(188));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,lang(189));else -redirect($_);}}page_header($_GET["ns"]!=""?lang(69):lang(70),$n);if(!$J)$J["name"]=$_GET["ns"];echo' -
                    -

                    -',script("focus(qs('#name'));"),' -';if($_GET["ns"]!="")echo"".confirm(lang(174,$_GET["ns"]))."\n";echo' -

                    -';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(190).": ".h($da),$n);$Rg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Gd=array();$Gf=array();foreach($Rg["fields"]as$s=>$o){if(substr($o["inout"],-3)=="OUT")$Gf[$s]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$Gd[]=$s;}if(!$n&&$_POST){$ab=array();foreach($Rg["fields"]as$y=>$o){if(in_array($y,$Gd)){$X=process_input($o);if($X===false)$X="''";if(isset($Gf[$y]))$g->query("SET @".idf_escape($o["field"])." = $X");}$ab[]=(isset($Gf[$y])?"@".idf_escape($o["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$ab).")";$_h=microtime(true);$H=$g->multi_query($G);$_a=$g->affected_rows;echo$b->selectQuery($G,$_h,!$H);if(!$H)echo"

                    ".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$H=$g->store_result();if(is_object($H))select($H,$h);else -echo"

                    ".lang(191,$_a)."\n";}while($g->next_result());if($Gf)select($g->query("SELECT ".implode(", ",$Gf)));}}echo' -

                    -';if($Gd){echo"\n";foreach($Gd -as$y){$o=$Rg["fields"][$y];$C=$o["field"];echo"
                    ".$b->fieldName($o);$Y=$_POST["fields"][$C];if($Y!=""){if($o["type"]=="enum")$Y=+$Y;if($o["type"]=="set")$Y=array_sum($Y);}input($o,$Y,(string)$_POST["function"][$C]);echo"\n";}echo"
                    \n";}echo'

                    - - -

                    -';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Ke=($_POST["drop"]?lang(192):($C!=""?lang(193):lang(194)));$A=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Th=array();foreach($J["source"]as$y=>$X)$Th[$y]=$J["target"][$y];$J["target"]=$Th;}if($x=="sqlite")queries_redirect($A,$Ke,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$gc="\nDROP ".($x=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$gc,$A,$Ke);else{query_redirect($c.($C!=""?"$gc,":"")."\nADD".format_foreign_key($J),$A,$Ke);$n=lang(195)."
                    $n";}}}page_header(lang(196),$n,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($C!=""){$fd=foreign_keys($a);$J=$fd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}$sh=array_keys(fields($a));$Th=($a===$J["table"]?$sh:array_keys(fields($J["table"])));$Ag=array_keys(array_filter(table_status('',true),'fk_support'));echo' -
                    -

                    -';if($J["db"]==""&&$J["ns"]==""){echo -lang(197),': -',html_select("table",$Ag,$J["table"],"this.form['change-js'].value = '1'; this.form.submit();"),' -

                    - - -';$be=0;foreach($J["source"]as$y=>$X){echo"","
                    ',lang(133),'',lang(134),'
                    ".html_select("source[".(+$y)."]",array(-1=>"")+$sh,$X,($be==count($J["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"".html_select("target[".(+$y)."]",$Th,$J["target"][$y],1,"label-target");$be++;}echo'
                    -

                    -',lang(102),': ',html_select("on_delete",array(-1=>"")+explode("|",$nf),$J["on_delete"]),' ',lang(101),': ',html_select("on_update",array(-1=>"")+explode("|",$nf),$J["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'

                    - -

                    -';}if($C!=""){echo'',confirm(lang(174,$C));}echo' -

                    -';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Df="VIEW";if($x=="pgsql"&&$a!=""){$P=table_status($a);$Df=strtoupper($P["Engine"]);}if($_POST&&!$n){$C=trim($J["name"]);$Ha=" AS\n$J[select]";$A=ME."table=".urlencode($C);$Ke=lang(200);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&$x!="sqlite"&&$U=="VIEW"&&$Df=="VIEW")query_redirect(($x=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ha,$A,$Ke);else{$Vh=$C."_adminer_".uniqid();drop_create("DROP $Df ".table($a),"CREATE $U ".table($C).$Ha,"DROP $U ".table($C),"CREATE $U ".table($Vh).$Ha,"DROP $U ".table($Vh),($_POST["drop"]?substr(ME,0,-1):$A),lang(201),$Ke,lang(202),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Df!="VIEW");if(!$n)$n=error();}page_header(($a!=""?lang(44):lang(203)),$n,array("table"=>$a),h($a));echo' -
                    -

                    ',lang(182),': -',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(128)):""),'

                    ';textarea("select",$J["select"]);echo'

                    - -';if($a!=""){echo'',confirm(lang(174,$a));}echo' -

                    -';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Td=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Bh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(204));elseif(in_array($J["INTERVAL_FIELD"],$Td)&&isset($Bh[$J["STATUS"]])){$Wg="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(205):lang(206)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Wg.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$Wg)."\n".$Bh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(207).": ".h($aa):lang(208)),$n);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo' -
                    - -
                    ',lang(182),' -
                    ',lang(209),' -
                    ',lang(210),' -
                    ',lang(211),' ',html_select("INTERVAL_FIELD",$Td,$J["INTERVAL_FIELD"]),'
                    ',lang(117),'',html_select("STATUS",$Bh,$J["STATUS"]),'
                    ',lang(51),' -
                    ',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(212)),'
                    -

                    ';textarea("EVENT_DEFINITION",$J["EVENT_DEFINITION"]);echo'

                    - -';if($aa!=""){echo'',confirm(lang(174,$aa));}echo' -

                    -';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Rg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$n){$Af=routine($_GET["procedure"],$Rg);$Vh="$J[name]_adminer_".uniqid();drop_create("DROP $Rg ".routine_id($da,$Af),create_routine($Rg,$J),"DROP $Rg ".routine_id($J["name"],$J),create_routine($Rg,array("name"=>$Vh)+$J),"DROP $Rg ".routine_id($Vh,$J),substr(ME,0,-1),lang(213),lang(214),lang(215),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(216):lang(217)).": ".h($da):(isset($_GET["function"])?lang(218):lang(219))),$n);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Rg);$J["name"]=$da;}$qb=get_vals("SHOW CHARACTER SET");sort($qb);$Sg=routine_languages();echo' -
                    -

                    ',lang(182),': -',($Sg?lang(19).": ".html_select("language",$Sg,$J["language"])."\n":""),' - -';edit_fields($J["fields"],$qb,$Rg);if(isset($_GET["function"])){echo"
                    ".lang(220);edit_type("returns",$J["returns"],$qb,array(),($x=="pgsql"?array("void","trigger"):array()));}echo'
                    -

                    ';textarea("definition",$J["definition"]);echo'

                    - -';if($da!=""){echo'',confirm(lang(174,$da));}echo' -

                    -';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,lang(221));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(222));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$_,lang(223));else -redirect($_);}page_header($fa!=""?lang(224).": ".h($fa):lang(225),$n);if(!$J)$J["name"]=$fa;echo' -
                    -

                    - -';if($fa!="")echo"".confirm(lang(174,$fa))."\n";echo' -

                    -';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,lang(226));else -query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$_,lang(227));}page_header($ga!=""?lang(228).": ".h($ga):lang(229),$n);if(!$J)$J["as"]="AS ";echo' -
                    -

                    -';if($ga!="")echo"".confirm(lang(174,$ga))."\n";else{echo"\n";textarea("as",$J["as"]);echo"

                    \n";}echo' -

                    -';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$vi=trigger_options();$J=(array)trigger($C)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$vi["Timing"])&&in_array($_POST["Event"],$vi["Event"])&&in_array($_POST["Type"],$vi["Type"])){$mf=" ON ".table($a);$gc="DROP TRIGGER ".idf_escape($C).($x=="pgsql"?$mf:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($gc,$A,lang(230));else{if($C!="")queries($gc);queries_redirect($A,($C!=""?lang(231):lang(232)),queries(create_trigger($mf,$_POST)));if($C!="")queries(create_trigger($mf,$J+array("Type"=>reset($vi["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(233).": ".h($C):lang(234)),$n,array("table"=>$a));echo' -
                    - -
                    ',lang(235),'',html_select("Timing",$vi["Timing"],$J["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
                    ',lang(236),'',html_select("Event",$vi["Event"],$J["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$vi["Event"])?" ":""),'
                    ',lang(50),'',html_select("Type",$vi["Type"],$J["Type"]),'
                    -

                    ',lang(182),': -',script("qs('#form')['Timing'].onchange();"),'

                    ';textarea("Statement",$J["Statement"]);echo'

                    - -';if($C!=""){echo'',confirm(lang(174,$C));}echo' -

                    -';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$mg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Bb)$mg[$Bb][$J["Privilege"]]=$J["Comment"];}$mg["Server Admin"]+=$mg["File access on server"];$mg["Databases"]["Create routine"]=$mg["Procedures"]["Create routine"];unset($mg["Procedures"]["Create routine"]);$mg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$mg["Columns"][$X]=$mg["Tables"][$X];unset($mg["Server Admin"]["Usage"]);foreach($mg["Tables"]as$y=>$X)unset($mg["Databases"][$y]);$Xe=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Xe[$X]=(array)$Xe[$X]+(array)$_POST["grants"][$y];}$nd=array();$kf="";if(isset($_GET["host"])&&($H=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$Ce,PREG_SET_ORDER)){foreach($Ce -as$X){if($X[1]!="USAGE")$nd["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$nd["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$B))$kf=$B[1];}}if($_POST&&!$n){$lf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $lf",ME."privileges=",lang(237));else{$Ze=q($_POST["user"])."@".q($_POST["host"]);$Uf=$_POST["pass"];if($Uf!=''&&!$_POST["hashed"]){$Uf=$g->result("SELECT PASSWORD(".q($Uf).")");$n=!$Uf;}$Gb=false;if(!$n){if($lf!=$Ze){$Gb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Ze IDENTIFIED BY PASSWORD ".q($Uf));$n=!$Gb;}elseif($Uf!=$kf)queries("SET PASSWORD FOR $Ze = ".q($Uf));}if(!$n){$Og=array();foreach($Xe -as$ff=>$md){if(isset($_GET["grant"]))$md=array_filter($md);$md=array_keys($md);if(isset($_GET["grant"]))$Og=array_diff(array_keys(array_filter($Xe[$ff],'strlen')),$md);elseif($lf==$Ze){$if=array_keys((array)$nd[$ff]);$Og=array_diff($if,$md);$md=array_diff($md,$if);unset($nd[$ff]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$ff,$B)&&(!grant("REVOKE",$Og,$B[2]," ON $B[1] FROM $Ze")||!grant("GRANT",$md,$B[2]," ON $B[1] TO $Ze"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($lf!=$Ze)queries("DROP USER $lf");elseif(!isset($_GET["grant"])){foreach($nd -as$ff=>$Og){if(preg_match('~^(.+)(\(.*\))?$~U',$ff,$B))grant("REVOKE",array_keys($Og),$B[2]," ON $B[1] FROM $Ze");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(238):lang(239)),!$n);if($Gb)$g->query("DROP USER $Ze");}}page_header((isset($_GET["host"])?lang(36).": ".h("$ha@$_GET[host]"):lang(145)),$n,array("privileges"=>array('',lang(72))));if($_POST){$J=$_POST;$nd=$Xe;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$kf;if($kf!="")$J["hashed"]=true;$nd[(DB==""||$nd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
                    - -
                    ',lang(35),' -
                    ',lang(36),' -
                    ',lang(37),' -';if(!$J["hashed"])echo -script("typePassword(qs('#pass'));");echo -checkbox("hashed",1,$J["hashed"],lang(240),"typePassword(this.form['pass'], this.checked);"),'
                    - -';echo"\n","\n";foreach(array(""=>"","Server Admin"=>lang(35),"Databases"=>lang(38),"Tables"=>lang(130),"Columns"=>lang(49),"Procedures"=>lang(241),)as$Bb=>$Xb){foreach((array)$mg[$Bb]as$lg=>$vb){echo"$Xb'.h($lg);$s=0;foreach($nd -as$ff=>$md){$C="'grants[$s][".h(strtoupper($lg))."]'";$Y=$md[strtoupper($lg)];if($Bb=="Server Admin"&&$ff!=(isset($nd["*.*"])?"*.*":".*"))echo"
                    ".lang(72).doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($nd -as$ff=>$md){echo''.($ff!="*.*"?"":"*.*");$s++;}echo"
                    ";elseif(isset($_GET["grant"]))echo"";else{echo"";}$s++;}}}echo"
                    \n",'

                    - -';if(isset($_GET["host"])){echo'',confirm(lang(174,"$ha@$_GET[host]"));}echo' -

                    -';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$n){$ie=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ie++;}queries_redirect(ME."processlist=",lang(244,$ie),$ie||!$_POST["kill"]);}page_header(lang(115),$n);echo' -
                    - -',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$s=-1;foreach(process_list()as$s=>$J){if(!$s){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
                    ":"");foreach($J -as$y=>$X)echo"$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"
                    ".checkbox("kill[]",$J[$x=="sql"?"Id":"pid"],0):"");foreach($J -as$y=>$X)echo"".(($x=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$J["Command"])&&$X!="")||($x=="pgsql"&&$y=="current_query"&&$X!="")||($x=="oracle"&&$y=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(245).'':h($X));echo"\n";}echo'
                    -

                    -';if(support("kill")){echo($s+1)."/".lang(246,max_connections()),"

                    \n";}echo' -

                    -',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$p=fields($a);$fd=column_foreign_keys($a);$hf=$S["Oid"];parse_str($_COOKIE["adminer_import"],$za);$Pg=array();$e=array();$Zh=null;foreach($p -as$y=>$o){$C=$b->fieldName($o);if(isset($o["privileges"]["select"])&&$C!=""){$e[$y]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($o))$Zh=$b->selectLengthProcess();}$Pg+=$o["privileges"];}list($L,$od)=$b->selectColumnsProcess($e,$w);$Xd=count($od)selectSearchProcess($p,$w);$xf=$b->selectOrderProcess($p,$w);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Ci=>$J){$Ha=convert_field($p[key($J)]);$L=array($Ha?$Ha:idf_escape(key($J)));$Z[]=where_check($Ci,$p);$I=$m->select($a,$L,$Z,$L);if($I)echo -reset($I->fetch_row());}exit;}$hg=$Ei=null;foreach($w -as$v){if($v["type"]=="PRIMARY"){$hg=array_flip($v["columns"]);$Ei=($L?$hg:array());foreach($Ei -as$y=>$X){if(in_array(idf_escape($y),$L))unset($Ei[$y]);}break;}}if($hf&&!$hg){$hg=$Ei=array($hf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($hf));}if($_POST&&!$n){$fj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$gb=array();foreach($_POST["check"]as$db)$gb[]=where_check($db,$p);$fj[]="((".implode(") OR (",$gb)."))";}$fj=($fj?"\nWHERE ".implode(" AND ",$fj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$kd=($L?implode(", ",$L):"*").convert_fields($e,$p,$L)."\nFROM ".table($a);$qd=($od&&$Xd?"\nGROUP BY ".implode(", ",$od):"").($xf?"\nORDER BY ".implode(", ",$xf):"");if(!is_array($_POST["check"])||$hg)$G="SELECT $kd$fj$qd";else{$Ai=array();foreach($_POST["check"]as$X)$Ai[]="(SELECT".limit($kd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$qd,1).")";$G=implode(" UNION ALL ",$Ai);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$fd)){if($_POST["save"]||$_POST["delete"]){$H=true;$_a=0;$O=array();if(!$_POST["delete"]){foreach($e -as$C=>$X){$X=process_input($p[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($hg&&is_array($_POST["check"]))||$Xd){$H=($_POST["delete"]?$m->delete($a,$fj):($_POST["clone"]?queries("INSERT $G$fj"):$m->update($a,$O,$fj)));$_a=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$bj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$H=($_POST["delete"]?$m->delete($a,$bj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$bj)):$m->update($a,$O,$bj,1)));if(!$H)break;$_a+=$g->affected_rows;}}}$Ke=lang(248,$_a);if($_POST["clone"]&&$H&&$_a==1){$oe=last_id();if($oe)$Ke=lang(167," $oe");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Ke,$H);if(!$_POST["delete"]){edit_form($a,$p,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n=lang(249);else{$H=true;$_a=0;foreach($_POST["val"]as$Ci=>$J){$O=array();foreach($J -as$y=>$X){$y=bracket_escape($y,1);$O[idf_escape($y)]=(preg_match('~char|text~',$p[$y]["type"])||$X!=""?$b->processInput($p[$y],$X):"NULL");}$H=$m->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Ci,$p),!$Xd&&!$hg," ");if(!$H)break;$_a+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(248,$_a),$H);}}elseif(!is_string($Uc=get_file("csv_file",true)))$n=upload_error($Uc);elseif(!preg_match('~~u',$Uc))$n=lang(250);else{cookie("adminer_import","output=".urlencode($za["output"])."&format=".urlencode($_POST["separator"]));$H=true;$sb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Uc,$Ce);$_a=count($Ce[0]);$m->begin();$M=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($Ce[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$M]*)$M~",$X.$M,$De);if(!$y&&!array_diff($De[1],$sb)){$sb=$De[1];$_a--;}else{$O=array();foreach($De[1]as$s=>$nb)$O[idf_escape($sb[$s])]=($nb==""&&$p[$sb[$s]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$nb))));$K[]=$O;}}$H=(!$K||$m->insertUpdate($a,$K,$hg));if($H)$H=$m->commit();queries_redirect(remove_from_uri("page"),lang(251,$_a),$H);$m->rollback();}}}$Lh=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else -page_header(lang(54).": $Lh",$n);$O=null;if(isset($Pg["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){if($fd[$X["col"]]&&count($fd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$O.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$O);if(!$e&&support("table"))echo"

                    ".lang(252).($p?".":": ".error())."\n";else{echo"

                    \n","
                    ";hidden_fields_get();echo(DB!=""?''.(isset($_GET["ns"])?'':""):"");echo'',"
                    \n";$b->selectColumnsPrint($L,$e);$b->selectSearchPrint($Z,$e,$w);$b->selectOrderPrint($xf,$e,$w);$b->selectLimitPrint($z);$b->selectLengthPrint($Zh);$b->selectActionPrint($w);echo"
                    \n";$E=$_GET["page"];if($E=="last"){$id=$g->result(count_rows($a,$Z,$Xd,$od));$E=floor(max(0,$id-1)/$z);}$bh=$L;$pd=$od;if(!$bh){$bh[]="*";$Cb=convert_fields($e,$p,$L);if($Cb)$bh[]=substr($Cb,2);}foreach($L -as$y=>$X){$o=$p[idf_unescape($X)];if($o&&($Ha=convert_field($o)))$bh[$y]="$Ha AS $X";}if(!$Xd&&$Ei){foreach($Ei -as$y=>$X){$bh[]=idf_escape($y);if($pd)$pd[]=idf_escape($y);}}$H=$m->select($a,$bh,$Z,$pd,$xf,$z,$E,true);if(!$H)echo"

                    ".error()."\n";else{if($x=="mssql"&&$E)$H->seek($z*$E);$tc=array();echo"

                    \n";$K=array();while($J=$H->fetch_assoc()){if($E&&$x=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["page"]!="last"&&$z!=""&&$od&&$Xd&&$x=="sql")$id=$g->result(" SELECT FOUND_ROWS()");if(!$K)echo"

                    ".lang(12)."\n";else{$Qa=$b->backwardKeys($a,$Lh);echo"",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$od&&$L?"":"\n";if(is_ajax()){if($z%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($K,$fd)as$Ve=>$J){$Bi=unique_array($K[$Ve],$w);if(!$Bi){$Bi=array();foreach($K[$Ve]as$y=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$y))$Bi[$y]=$X;}}$Ci="";foreach($Bi -as$y=>$X){if(($x=="sql"||$x=="pgsql")&&preg_match('~char|text|enum|set~',$p[$y]["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".($x!='sql'||preg_match("~^utf8~",$p[$y]["collation"])?$y:"CONVERT($y USING ".charset($g).")").")";$X=md5($X);}$Ci.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X):"null%5B%5D=".urlencode($y));}echo"".(!$od&&$L?"":"";}}}if($Qa)echo"\n";}if(is_ajax())exit;echo"
                    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(253)."");$We=array();$ld=array();reset($L);$wg=1;foreach($K[0]as$y=>$X){if(!isset($Ei[$y])){$X=$_GET["columns"][key($L)];$o=$p[$L?($X?$X["col"]:current($L)):$y];$C=($o?$b->fieldName($o,$wg):($X["fun"]?"*":$y));if($C!=""){$wg++;$We[$y]=$C;$d=idf_escape($y);$Cd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$Xb="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'';echo -apply_sql_function($X["fun"],$C)."";echo"";}$ld[$y]=$X["fun"];next($L);}}$ue=array();if($_GET["modify"]){foreach($K -as$J){foreach($J -as$y=>$X)$ue[$y]=max($ue[$y],min(40,strlen(utf8_decode($X))));}}echo($Qa?"".lang(254):"")."
                    ".checkbox("check[]",substr($Ci,1),in_array(substr($Ci,1),(array)$_POST["check"])).($Xd||information_schema(DB)?"":" ".lang(255).""));foreach($J -as$y=>$X){if(isset($We[$y])){$o=$p[$y];$X=$m->value($X,$o);if($X!=""&&(!isset($tc[$y])||$tc[$y]!=""))$tc[$y]=(is_mail($X)?$We[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$o["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$Ci;if(!$_&&$X!==null){foreach((array)$fd[$y]as$q){if(count($fd[$y])==1||end($q["source"])==$y){$_="";foreach($q["source"]as$s=>$sh)$_.=where_link($s,$q["target"][$s],$K[$Ve][$sh]);$_=($q["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($q["db"]),ME):ME).'select='.urlencode($q["table"]).$_;if($q["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($q["ns"]),$_);if(count($q["source"])==1)break;}}}if($y=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Bi))$_.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Bi -as$ce=>$W)$_.=where_link($s++,$ce,$W);}$X=select_value($X,$_,$o,$Zh);$t=h("val[$Ci][".bracket_escape($y)."]");$Y=$_POST["val"][$Ci][bracket_escape($y)];$oc=!is_array($J[$y])&&is_utf8($X)&&$K[$Ve][$y]==$J[$y]&&!$ld[$y];$Yh=preg_match('~text|lob~',$o["type"]);if(($_GET["modify"]&&$oc)||$Y!==null){$td=h($Y!==null?$Y:$J[$y]);echo"".($Yh?"":"");}else{$ye=strpos($X,"...");echo"$X";$b->backwardKeysPrint($Qa,$K[$Ve]);echo"
                    \n";}if(!is_ajax()){if($K||$E){$Cc=true;if($_GET["page"]!="last"){if($z==""||(count($K)<$z&&($K||!$E)))$id=($E?$E*$z:0)+count($K);elseif($x!="sql"||!$Xd){$id=($Xd?false:found_rows($S,$Z));if($id$z||$E));if($Jf){echo(($id===false?count($K)+1:$id-$E*$z)>$z?'

                    '.lang(257).''.script("qsl('a').onclick = partial(selectLoadMore, ".(+$z).", '".lang(258)."...');",""):''),"\n";}}echo"

                    \n";if($b->selectImportPrint()){echo"
                    ","".lang(73)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"","
                    ";}echo"\n","
                    \n",(!$od&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(117):lang(116));$Si=($P?show_status():show_variables());if(!$Si)echo"

                    ".lang(12)."\n";else{echo"\n";foreach($Si -as$y=>$X){echo"","
                    ".h($y)."","".h($X);}echo"
                    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Ih=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$y)json_row("$y-$C",h($S[$y]));foreach($Ih+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);json_row("$y-$C",($y=="Rows"&&$X&&$S["Engine"]==($vh=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Ih[$y]))$Ih[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$C");}}}foreach($Ih -as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$l=>$X){json_row("tables-$l",$X);json_row("size-$l",db_size($l));}json_row("");}exit;}else{$Rh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Rh&&!$n&&!$_POST["search"]){$H=true;$Ke="";if($x=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$Ke=lang(262);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ke=lang(263);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ke=lang(264);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Ke=lang(265);}elseif($x!="sql"){$H=($x=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Ke=lang(266);}elseif(!$_POST["tables"])$Ke=lang(9);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$Ke.="".h($J["Table"]).": ".h($J["Msg_text"])."
                    ";}queries_redirect(substr(ME,0,-1),$Ke,$H);}page_header(($_GET["ns"]==""?lang(38).": ".h(DB):lang(78).": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"

                    ".lang(267)."

                    \n";$Qh=tables_list();if(!$Qh)echo"

                    ".lang(9)."\n";else{echo"

                    \n";if(support("table")){echo"
                    ".lang(268)."
                    ","",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
                    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]="LIKE %%";search_tables();}}$dc=doc_link(array('sql'=>'show-table-status.html'));echo"\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($Qh -as$C=>$U){$Vi=($U!==null&&!preg_match('~table~i',$U));$t=h("Table-".$C);echo'
                    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(130),''.lang(269).doc_link(array('sql'=>'storage-engines.html')),''.lang(121).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(270).$dc,''.lang(271).$dc,''.lang(272).$dc,''.lang(52).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(273).$dc,(support("comment")?''.lang(51).$dc:''),"
                    '.checkbox(($Vi?"views[]":"tables[]"),$C,in_array($C,$Rh,true),"","","",$t),''.(support("table")||support("indexes")?"".h($C).'':h($C));if($Vi){echo''.(preg_match('~materialized~i',$U)?lang(128):lang(129)).'','?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(45)),"Index_length"=>array("indexes",lang(132)),"Data_free"=>array("edit",lang(46)),"Auto_increment"=>array("auto_increment=1&create",lang(45)),"Rows"=>array("select",lang(42)),)as$y=>$_){$t=" id='$y-".h($C)."'";echo($_?"".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":"");}echo"
                    ".lang(246,count($Qh)),"".h($x=="sql"?$g->result("SELECT @@storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"";echo"
                    \n";if(!information_schema(DB)){echo"\n";}echo"
                    \n",script("tableCheck();");}echo'

                    ".lang(142)."

                    \n";$Tg=routines();if($Tg){echo"\n",'\n";odd('');foreach($Tg -as$J){$C=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'','
                    '.lang(182).''.lang(50).''.lang(220)."
                    '.h($J["ROUTINE_NAME"]).'',''.h($J["ROUTINE_TYPE"]),''.h($J["DTD_IDENTIFIER"]),''.lang(135)."";}echo"
                    \n";}echo'

                    ".lang(283)."

                    \n";$hh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($hh){echo"\n","\n";odd('');foreach($hh -as$X)echo"
                    ".lang(182)."
                    ".h($X)."\n";echo"
                    \n";}echo"

                    ".lang(26)."

                    \n";$Ni=types();if($Ni){echo"\n","\n";odd('');foreach($Ni -as$X)echo"
                    ".lang(182)."
                    ".h($X)."\n";echo"
                    \n";}echo"

                    ".lang(143)."

                    \n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","\n";foreach($K -as$J){echo"","
                    ".lang(182)."".lang(284)."".lang(209)."".lang(210)."
                    ".h($J["Name"]),"".($J["Execute at"]?lang(285)."".$J["Execute at"]:lang(211)." ".$J["Interval value"]." ".$J["Interval field"]."$J[Starts]"),"$J[Ends]",''.lang(135).'';}echo"
                    \n";$Ac=$g->result("SELECT @@event_scheduler");if($Ac&&$Ac!="ON")echo"

                    event_scheduler: ".h($Ac)."\n";}echo'

                    '.LNG('imageExif.Config.missLib').'
                    ', - ); - } - } - public function regiest(){ - $this->hookRegiest(array( - 'user.commonJs.insert' => 'imageExifPlugin.echoJs', - 'share.image' => 'imageExifPlugin.imageCheck', - 'explorer.image' => 'imageExifPlugin.imageCheck', - )); - } - public function echoJs($st,$act){ - if( !function_exists('exif_read_data')){ - return; - } - //$this->echoFile('static/main.js'); - } - public function getExif(){ - $path = _DIR($this->in['path']); - $exif = @exif_read_data($path); - show_json($exif,!!$exif); - } - - //根据Orientation 自动旋转图片 - //http://blog.csdn.net/ouyangtianhan/article/details/29825885 - //https://gxnotes.com/article/126807.html - //https://zhuanlan.zhihu.com/p/25216999 - public function imageCheck(){ - if( !function_exists('exif_read_data')){ - return; - } - $path = _DIR($this->in['path']); - $exif = @exif_read_data($path); - if(!file_exists($path) || !$exif || !isset($exif['Orientation'])) return; - if( $exif['Orientation']< 3) return; - - $img = ImageThumb::image($path); - if(!$img) return; - $ort = $exif['Orientation']; - if($ort == 5 || $ort == 6){ - $img = imagerotate($img, 270, null); - } - if($ort == 3 || $ort == 4){ - $img = imagerotate($img, 180, null); - } - if($ort == 7 || $ort == 8){ - $img = imagerotate($img, 90, null); - } - if($ort == 4 || $ort == 5 || $ort == 7){ - imageflip($img,IMG_FLIP_HORIZONTAL); - } - $ext = get_path_ext($path); - $imagefun = 'image'.($ext=='jpg'?'jpeg':$ext); - $res = $imagefun($img, $path); - imagedestroy($img); - //show_json($exif,$res); - } -} diff --git a/plugin/document/kod/plugins/imageExif/i18n/en.php b/plugin/document/kod/plugins/imageExif/i18n/en.php deleted file mode 100644 index d0d1f5ea6..000000000 --- a/plugin/document/kod/plugins/imageExif/i18n/en.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Image EXIF', - 'imageExif.meta.title' => 'Image EXIF Get', - 'imageExif.meta.desc' => 'Picture EXIF access; camera phone to take pictures automatically correct direction', - 'imageExif.Config.missLib' => "Lack php exif extensions, try again after installation" -); \ No newline at end of file diff --git a/plugin/document/kod/plugins/imageExif/i18n/zh-CN.php b/plugin/document/kod/plugins/imageExif/i18n/zh-CN.php deleted file mode 100644 index b4041dbf7..000000000 --- a/plugin/document/kod/plugins/imageExif/i18n/zh-CN.php +++ /dev/null @@ -1,7 +0,0 @@ - '图片EXIF', - 'imageExif.meta.title' => '图片EXIF获取', - 'imageExif.meta.desc' => '图片EXIF获取;手机拍摄图片方向自动校正', - 'imageExif.Config.missLib' => "缺少php扩展exif,请安装后再试", -); \ No newline at end of file diff --git a/plugin/document/kod/plugins/imageExif/package.json b/plugin/document/kod/plugins/imageExif/package.json deleted file mode 100644 index 6eb553671..000000000 --- a/plugin/document/kod/plugins/imageExif/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "id":"imageExif", - "name":"{{LNG.imageExif.meta.name}}", - "title":"{{LNG.imageExif.meta.title}}", - "version":"1.2", - "category":"media", - "source":{ - "className":"font-icon icon-info bg-blue-7" - }, - "description":"{{LNG.imageExif.meta.desc}}", - - "auther":{ - "copyright":"kodcloud", - "homePage":"http://kodcloud.com" - }, - "configItem":{ - "formStyle":{"className":"form-box-title-right"}, - "pluginAuth":{ - "type":"userSelect", - "value":"all:1", - "display":"{{LNG.Plugin.config.auth}}", - "desc":"{{LNG.Plugin.config.authDesc}}", - "require":1 - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/plugins/imageExif/static/main.js b/plugin/document/kod/plugins/imageExif/static/main.js deleted file mode 100644 index 1aa9b5687..000000000 --- a/plugin/document/kod/plugins/imageExif/static/main.js +++ /dev/null @@ -1,52 +0,0 @@ -// fileHistoryPlugin -kodReady.push(function(){ - var menuOpt = { - 'image-exif':{ - name:LNG['imageExif.meta.name'], - className:"image-exif", - icon:" icon-info", - callback:function(action,option){ - if(option.selector == '.menu-tree-file'){ - var param = ui.tree.makeParam(); - }else{ - var param = ui.path.makeParam(); - } - var request = '{{pluginApi}}getExif&path='+urlEncode(param.path); - console.log(param.path); - - $.ajax({ - url:request, - dataType:'json', - beforeSend: function(){ - Tips.loading(LNG.loading); - }, - error:core.ajaxError, - success:function(data){ - Tips.close(data); - if(data.code){ - console.log(data.data); - } - } - }); - } - } - } - $.contextMenu.menuAdd(menuOpt,'.menu-file',false,'.info'); - $.contextMenu.menuAdd(menuOpt,'.menu-tree-file',false,'.info'); - - //显示隐藏 [ 只在自己的目录;自己所在的群组目录文件有历史记录权限] - Hook.bind('rightMenu.show.menu-file',function($menuAt,$theMenu){ - if($('.context-menu-active').hasClass('menu-tree-file') ){ - var param = ui.tree.makeParam(); - }else{ - var param = ui.path.makeParam(); - } - var ext = core.pathExt(param.path); - var hideClass = 'hidden';//'disabled' hideClass - if (inArray(['jpg','jpeg','png','bmp'],ext)){ - $theMenu.find('.image-exif').removeClass(hideClass); - }else{ - $theMenu.find('.image-exif').addClass(hideClass); - } - }); -}); \ No newline at end of file diff --git a/plugin/document/kod/plugins/jPlayer/app.php b/plugin/document/kod/plugins/jPlayer/app.php deleted file mode 100644 index 3b2472e45..000000000 --- a/plugin/document/kod/plugins/jPlayer/app.php +++ /dev/null @@ -1,17 +0,0 @@ -hookRegiest(array( - 'user.commonJs.insert' => 'jPlayerPlugin.echoJs', - )); - } - public function echoJs($st,$act){ - if($this->isFileExtence($st,$act)){ - $this->echoFile('static/main.js'); - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/plugins/jPlayer/package.json b/plugin/document/kod/plugins/jPlayer/package.json deleted file mode 100644 index 636d36ec2..000000000 --- a/plugin/document/kod/plugins/jPlayer/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "id":"jPlayer", - "name":"jPlayer", - "title":"jPlayer", - "version":"1.35", - "source":{ - "icon":"{{pluginHost}}static/images/icon.png", - "screenshoot":[ - "https://raw.githubusercontent.com/kalcaddle/static/master/images/kod/file-player.png" - ] - }, - "category":"media,file", - "description":"jPlayer mediafile player;", - "keywords":"", - "auther":{ - "copyright":"kodcloud.", - "homePage":"http://www.kodcloud.com", - }, - "configItem":{ - "pluginAuth":{ - "type":"userSelect", - "value":"all:1", - "display":"{{LNG.Plugin.config.auth}}", - "desc":"{{LNG.Plugin.config.authDesc}}", - "require":1 - }, - - "fileExt":{ - "type":"tags", - "display":"{{LNG.Plugin.Config.fileExt}}", - "desc":"{{LNG.Plugin.Config.fileExtDesc}}", - "value":"mp3,wav,m4a,aac,oga,ogg,webma,mp4,m4v,flv,mov,f4v,ogv,webm,webmv,m3u8a,m3ua,flac,fla,rtmp,rtmpa", - }, - "fileSort":{ - "type":"number", - "display":"{{LNG.Plugin.Config.fileSort}}", - "desc":"{{LNG.Plugin.Config.fileSortDesc}}", - "value":10, - } - } -} diff --git a/plugin/document/kod/plugins/jPlayer/static/images/icon.png b/plugin/document/kod/plugins/jPlayer/static/images/icon.png deleted file mode 100644 index 4dbf0e498..000000000 Binary files a/plugin/document/kod/plugins/jPlayer/static/images/icon.png and /dev/null differ diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/jquery.jplayer.min.js b/plugin/document/kod/plugins/jPlayer/static/jPlayer/jquery.jplayer.min.js deleted file mode 100644 index 99f64d71c..000000000 --- a/plugin/document/kod/plugins/jPlayer/static/jPlayer/jquery.jplayer.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! jPlayer 2.9.2 for jQuery ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ -!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b("object"==typeof exports?require("jquery"):a.jQuery?a.jQuery:a.Zepto)}(this,function(a,b){a.fn.jPlayer=function(c){var d="jPlayer",e="string"==typeof c,f=Array.prototype.slice.call(arguments,1),g=this;return c=!e&&f.length?a.extend.apply(null,[!0,c].concat(f)):c,e&&"_"===c.charAt(0)?g:(this.each(e?function(){var e=a(this).data(d),h=e&&a.isFunction(e[c])?e[c].apply(e,f):e;return h!==e&&h!==b?(g=h,!1):void 0}:function(){var b=a(this).data(d);b?b.option(c||{}):a(this).data(d,new a.jPlayer(c,this))}),g)},a.jPlayer=function(b,c){if(arguments.length){this.element=a(c),this.options=a.extend(!0,{},this.options,b);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()}),this._init()}},"function"!=typeof a.fn.stop&&(a.fn.stop=function(){}),a.jPlayer.emulateMethods="load play pause",a.jPlayer.emulateStatus="src readyState networkState currentTime duration paused ended playbackRate",a.jPlayer.emulateOptions="muted volume",a.jPlayer.reservedEvent="ready flashreset resize repeat error warning",a.jPlayer.event={},a.each(["ready","setmedia","flashreset","resize","repeat","click","error","warning","loadstart","progress","suspend","abort","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],function(){a.jPlayer.event[this]="jPlayer_"+this}),a.jPlayer.htmlEvent=["loadstart","abort","emptied","stalled","loadedmetadata","canplay","canplaythrough"],a.jPlayer.pause=function(){a.jPlayer.prototype.destroyRemoved(),a.each(a.jPlayer.prototype.instances,function(a,b){b.data("jPlayer").status.srcSet&&b.jPlayer("pause")})},a.jPlayer.timeFormat={showHour:!1,showMin:!0,showSec:!0,padHour:!1,padMin:!0,padSec:!0,sepHour:":",sepMin:":",sepSec:""};var c=function(){this.init()};c.prototype={init:function(){this.options={timeFormat:a.jPlayer.timeFormat}},time:function(a){a=a&&"number"==typeof a?a:0;var b=new Date(1e3*a),c=b.getUTCHours(),d=this.options.timeFormat.showHour?b.getUTCMinutes():b.getUTCMinutes()+60*c,e=this.options.timeFormat.showMin?b.getUTCSeconds():b.getUTCSeconds()+60*d,f=this.options.timeFormat.padHour&&10>c?"0"+c:c,g=this.options.timeFormat.padMin&&10>d?"0"+d:d,h=this.options.timeFormat.padSec&&10>e?"0"+e:e,i="";return i+=this.options.timeFormat.showHour?f+this.options.timeFormat.sepHour:"",i+=this.options.timeFormat.showMin?g+this.options.timeFormat.sepMin:"",i+=this.options.timeFormat.showSec?h+this.options.timeFormat.sepSec:""}};var d=new c;a.jPlayer.convertTime=function(a){return d.time(a)},a.jPlayer.uaBrowser=function(a){var b=a.toLowerCase(),c=/(webkit)[ \/]([\w.]+)/,d=/(opera)(?:.*version)?[ \/]([\w.]+)/,e=/(msie) ([\w.]+)/,f=/(mozilla)(?:.*? rv:([\w.]+))?/,g=c.exec(b)||d.exec(b)||e.exec(b)||b.indexOf("compatible")<0&&f.exec(b)||[];return{browser:g[1]||"",version:g[2]||"0"}},a.jPlayer.uaPlatform=function(a){var b=a.toLowerCase(),c=/(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/,d=/(ipad|playbook)/,e=/(android)/,f=/(mobile)/,g=c.exec(b)||[],h=d.exec(b)||!f.exec(b)&&e.exec(b)||[];return g[1]&&(g[1]=g[1].replace(/\s/g,"_")),{platform:g[1]||"",tablet:h[1]||""}},a.jPlayer.browser={},a.jPlayer.platform={};var e=a.jPlayer.uaBrowser(navigator.userAgent);e.browser&&(a.jPlayer.browser[e.browser]=!0,a.jPlayer.browser.version=e.version);var f=a.jPlayer.uaPlatform(navigator.userAgent);f.platform&&(a.jPlayer.platform[f.platform]=!0,a.jPlayer.platform.mobile=!f.tablet,a.jPlayer.platform.tablet=!!f.tablet),a.jPlayer.getDocMode=function(){var b;return a.jPlayer.browser.msie&&(document.documentMode?b=document.documentMode:(b=5,document.compatMode&&"CSS1Compat"===document.compatMode&&(b=7))),b},a.jPlayer.browser.documentMode=a.jPlayer.getDocMode(),a.jPlayer.nativeFeatures={init:function(){var a,b,c,d=document,e=d.createElement("video"),f={w3c:["fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror"],moz:["mozFullScreenEnabled","mozFullScreenElement","mozRequestFullScreen","mozCancelFullScreen","mozfullscreenchange","mozfullscreenerror"],webkit:["","webkitCurrentFullScreenElement","webkitRequestFullScreen","webkitCancelFullScreen","webkitfullscreenchange",""],webkitVideo:["webkitSupportsFullscreen","webkitDisplayingFullscreen","webkitEnterFullscreen","webkitExitFullscreen","",""],ms:["","msFullscreenElement","msRequestFullscreen","msExitFullscreen","MSFullscreenChange","MSFullscreenError"]},g=["w3c","moz","webkit","webkitVideo","ms"];for(this.fullscreen=a={support:{w3c:!!d[f.w3c[0]],moz:!!d[f.moz[0]],webkit:"function"==typeof d[f.webkit[3]],webkitVideo:"function"==typeof e[f.webkitVideo[2]],ms:"function"==typeof e[f.ms[2]]},used:{}},b=0,c=g.length;c>b;b++){var h=g[b];if(a.support[h]){a.spec=h,a.used[h]=!0;break}}if(a.spec){var i=f[a.spec];a.api={fullscreenEnabled:!0,fullscreenElement:function(a){return a=a?a:d,a[i[1]]},requestFullscreen:function(a){return a[i[2]]()},exitFullscreen:function(a){return a=a?a:d,a[i[3]]()}},a.event={fullscreenchange:i[4],fullscreenerror:i[5]}}else a.api={fullscreenEnabled:!1,fullscreenElement:function(){return null},requestFullscreen:function(){},exitFullscreen:function(){}},a.event={}}},a.jPlayer.nativeFeatures.init(),a.jPlayer.focus=null,a.jPlayer.keyIgnoreElementNames="A INPUT TEXTAREA SELECT BUTTON";var g=function(b){var c,d=a.jPlayer.focus;d&&(a.each(a.jPlayer.keyIgnoreElementNames.split(/\s+/g),function(a,d){return b.target.nodeName.toUpperCase()===d.toUpperCase()?(c=!0,!1):void 0}),c||a.each(d.options.keyBindings,function(c,e){return e&&a.isFunction(e.fn)&&("number"==typeof e.key&&b.which===e.key||"string"==typeof e.key&&b.key===e.key)?(b.preventDefault(),e.fn(d),!1):void 0}))};a.jPlayer.keys=function(b){var c="keydown.jPlayer";a(document.documentElement).unbind(c),b&&a(document.documentElement).bind(c,g)},a.jPlayer.keys(!0),a.jPlayer.prototype={count:0,version:{script:"2.9.2",needFlash:"2.9.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",supplied:"mp3",auroraFormats:"wav",preload:"metadata",volume:.8,muted:!1,remainingDuration:!1,toggleDuration:!1,captureDuration:!0,playbackRate:1,defaultPlaybackRate:1,minPlaybackRate:.5,maxPlaybackRate:4,wmode:"opaque",backgroundColor:"#000000",cssSelectorAncestor:"#jp_container_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",volumeMax:".jp-volume-max",playbackRateBar:".jp-playback-rate-bar",playbackRateBarValue:".jp-playback-rate-bar-value",currentTime:".jp-current-time",duration:".jp-duration",title:".jp-title",fullScreen:".jp-full-screen",restoreScreen:".jp-restore-screen",repeat:".jp-repeat",repeatOff:".jp-repeat-off",gui:".jp-gui",noSolution:".jp-no-solution"},stateClass:{playing:"jp-state-playing",seeking:"jp-state-seeking",muted:"jp-state-muted",looped:"jp-state-looped",fullScreen:"jp-state-full-screen",noVolume:"jp-state-no-volume"},useStateClassSkin:!1,autoBlur:!0,smoothPlayBar:!1,fullScreen:!1,fullWindow:!1,autohide:{restored:!1,full:!0,fadeIn:200,fadeOut:600,hold:1e3},loop:!1,repeat:function(b){b.jPlayer.options.loop?a(this).unbind(".jPlayerRepeat").bind(a.jPlayer.event.ended+".jPlayer.jPlayerRepeat",function(){a(this).jPlayer("play")}):a(this).unbind(".jPlayerRepeat")},nativeVideoControls:{},noFullWindow:{msie:/msie [0-6]\./,ipad:/ipad.*?os [0-4]\./,iphone:/iphone/,ipod:/ipod/,android_pad:/android [0-3]\.(?!.*?mobile)/,android_phone:/(?=.*android)(?!.*chrome)(?=.*mobile)/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/},noVolume:{ipad:/ipad/,iphone:/iphone/,ipod:/ipod/,android_pad:/android(?!.*?mobile)/,android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/,playbook:/playbook/},timeFormat:{},keyEnabled:!1,audioFullScreen:!1,keyBindings:{play:{key:80,fn:function(a){a.status.paused?a.play():a.pause()}},fullScreen:{key:70,fn:function(a){(a.status.video||a.options.audioFullScreen)&&a._setOption("fullScreen",!a.options.fullScreen)}},muted:{key:77,fn:function(a){a._muted(!a.options.muted)}},volumeUp:{key:190,fn:function(a){a.volume(a.options.volume+.1)}},volumeDown:{key:188,fn:function(a){a.volume(a.options.volume-.1)}},loop:{key:76,fn:function(a){a._loop(!a.options.loop)}}},verticalVolume:!1,verticalPlaybackRate:!1,globalVolume:!1,idPrefix:"jp",noConflict:"jQuery",emulateHtml:!1,consoleAlerts:!0,errorAlerts:!1,warningAlerts:!1},optionsAudio:{size:{width:"0px",height:"0px",cssClass:""},sizeFull:{width:"0px",height:"0px",cssClass:""}},optionsVideo:{size:{width:"480px",height:"270px",cssClass:"jp-video-270p"},sizeFull:{width:"100%",height:"100%",cssClass:"jp-video-full"}},instances:{},status:{src:"",media:{},paused:!0,format:{},formatType:"",waitForPlay:!0,waitForLoad:!0,srcSet:!1,video:!1,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0,remaining:0,videoWidth:0,videoHeight:0,readyState:0,networkState:0,playbackRate:1,ended:0},internal:{ready:!1},solution:{html:!0,aurora:!0,flash:!0},format:{mp3:{codec:"audio/mpeg",flashCanPlay:!0,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},m3u8a:{codec:'application/vnd.apple.mpegurl; codecs="mp4a.40.2"',flashCanPlay:!1,media:"audio"},m3ua:{codec:"audio/mpegurl",flashCanPlay:!1,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis, opus"',flashCanPlay:!1,media:"audio"},flac:{codec:"audio/x-flac",flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},rtmpa:{codec:'audio/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},m3u8v:{codec:'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!1,media:"video"},m3uv:{codec:"audio/mpegurl",flashCanPlay:!1,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"},rtmpv:{codec:'video/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"video"}},_init:function(){var c=this;if(this.element.empty(),this.status=a.extend({},this.status),this.internal=a.extend({},this.internal),this.options.timeFormat=a.extend({},a.jPlayer.timeFormat,this.options.timeFormat),this.internal.cmdsIgnored=a.jPlayer.platform.ipad||a.jPlayer.platform.iphone||a.jPlayer.platform.ipod,this.internal.domNode=this.element.get(0),this.options.keyEnabled&&!a.jPlayer.focus&&(a.jPlayer.focus=this),this.androidFix={setMedia:!1,play:!1,pause:!1,time:0/0},a.jPlayer.platform.android&&(this.options.preload="auto"!==this.options.preload?"metadata":"auto"),this.formats=[],this.solutions=[],this.require={},this.htmlElement={},this.html={},this.html.audio={},this.html.video={},this.aurora={},this.aurora.formats=[],this.aurora.properties=[],this.flash={},this.css={},this.css.cs={},this.css.jq={},this.ancestorJq=[],this.options.volume=this._limitValue(this.options.volume,0,1),a.each(this.options.supplied.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.format[e]){var f=!1;a.each(c.formats,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.formats.push(e)}}),a.each(this.options.solution.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.solution[e]){var f=!1;a.each(c.solutions,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.solutions.push(e)}}),a.each(this.options.auroraFormats.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.format[e]){var f=!1;a.each(c.aurora.formats,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.aurora.formats.push(e)}}),this.internal.instance="jp_"+this.count,this.instances[this.internal.instance]=this.element,this.element.attr("id")||this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count),this.internal.self=a.extend({},{id:this.element.attr("id"),jq:this.element}),this.internal.audio=a.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:b}),this.internal.video=a.extend({},{id:this.options.idPrefix+"_video_"+this.count,jq:b}),this.internal.flash=a.extend({},{id:this.options.idPrefix+"_flash_"+this.count,jq:b,swf:this.options.swfPath+(".swf"!==this.options.swfPath.toLowerCase().slice(-4)?(this.options.swfPath&&"/"!==this.options.swfPath.slice(-1)?"/":"")+"jquery.jplayer.swf":"")}),this.internal.poster=a.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:b}),a.each(a.jPlayer.event,function(a,d){c.options[a]!==b&&(c.element.bind(d+".jPlayer",c.options[a]),c.options[a]=b)}),this.require.audio=!1,this.require.video=!1,a.each(this.formats,function(a,b){c.require[c.format[b].media]=!0}),this.options=this.require.video?a.extend(!0,{},this.optionsVideo,this.options):a.extend(!0,{},this.optionsAudio,this.options),this._setSize(),this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls),this.status.noFullWindow=this._uaBlocklist(this.options.noFullWindow),this.status.noVolume=this._uaBlocklist(this.options.noVolume),a.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled&&this._fullscreenAddEventListeners(),this._restrictNativeVideoControls(),this.htmlElement.poster=document.createElement("img"),this.htmlElement.poster.id=this.internal.poster.id,this.htmlElement.poster.onload=function(){(!c.status.video||c.status.waitForPlay)&&c.internal.poster.jq.show()},this.element.append(this.htmlElement.poster),this.internal.poster.jq=a("#"+this.internal.poster.id),this.internal.poster.jq.css({width:this.status.width,height:this.status.height}),this.internal.poster.jq.hide(),this.internal.poster.jq.bind("click.jPlayer",function(){c._trigger(a.jPlayer.event.click)}),this.html.audio.available=!1,this.require.audio&&(this.htmlElement.audio=document.createElement("audio"),this.htmlElement.audio.id=this.internal.audio.id,this.html.audio.available=!!this.htmlElement.audio.canPlayType&&this._testCanPlayType(this.htmlElement.audio)),this.html.video.available=!1,this.require.video&&(this.htmlElement.video=document.createElement("video"),this.htmlElement.video.id=this.internal.video.id,this.html.video.available=!!this.htmlElement.video.canPlayType&&this._testCanPlayType(this.htmlElement.video)),this.flash.available=this._checkForFlash(10.1),this.html.canPlay={},this.aurora.canPlay={},this.flash.canPlay={},a.each(this.formats,function(b,d){c.html.canPlay[d]=c.html[c.format[d].media].available&&""!==c.htmlElement[c.format[d].media].canPlayType(c.format[d].codec),c.aurora.canPlay[d]=a.inArray(d,c.aurora.formats)>-1,c.flash.canPlay[d]=c.format[d].flashCanPlay&&c.flash.available}),this.html.desired=!1,this.aurora.desired=!1,this.flash.desired=!1,a.each(this.solutions,function(b,d){if(0===b)c[d].desired=!0;else{var e=!1,f=!1;a.each(c.formats,function(a,b){c[c.solutions[0]].canPlay[b]&&("video"===c.format[b].media?f=!0:e=!0)}),c[d].desired=c.require.audio&&!e||c.require.video&&!f}}),this.html.support={},this.aurora.support={},this.flash.support={},a.each(this.formats,function(a,b){c.html.support[b]=c.html.canPlay[b]&&c.html.desired,c.aurora.support[b]=c.aurora.canPlay[b]&&c.aurora.desired,c.flash.support[b]=c.flash.canPlay[b]&&c.flash.desired}),this.html.used=!1,this.aurora.used=!1,this.flash.used=!1,a.each(this.solutions,function(b,d){a.each(c.formats,function(a,b){return c[d].support[b]?(c[d].used=!0,!1):void 0})}),this._resetActive(),this._resetGate(),this._cssSelectorAncestor(this.options.cssSelectorAncestor),this.html.used||this.aurora.used||this.flash.used?this.css.jq.noSolution.length&&this.css.jq.noSolution.hide():(this._error({type:a.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+this.options.supplied+"'}",message:a.jPlayer.errorMsg.NO_SOLUTION,hint:a.jPlayer.errorHint.NO_SOLUTION}),this.css.jq.noSolution.length&&this.css.jq.noSolution.show()),this.flash.used){var d,e="jQuery="+encodeURI(this.options.noConflict)+"&id="+encodeURI(this.internal.self.id)+"&vol="+this.options.volume+"&muted="+this.options.muted;if(a.jPlayer.browser.msie&&(Number(a.jPlayer.browser.version)<9||a.jPlayer.browser.documentMode<9)){var f='',g=['','','','',''];d=document.createElement(f);for(var h=0;h0&&(d.internal.cmdsIgnored=!1),d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.progress))},!1),b.addEventListener("loadeddata",function(){c.gate&&(d.androidFix.setMedia=!1,d.androidFix.play&&(d.androidFix.play=!1,d.play(d.androidFix.time)),d.androidFix.pause&&(d.androidFix.pause=!1,d.pause(d.androidFix.time)),d._trigger(a.jPlayer.event.loadeddata))},!1),b.addEventListener("timeupdate",function(){c.gate&&(d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.timeupdate))},!1),b.addEventListener("durationchange",function(){c.gate&&(d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.durationchange))},!1),b.addEventListener("play",function(){c.gate&&(d._updateButtons(!0),d._html_checkWaitForPlay(),d._trigger(a.jPlayer.event.play))},!1),b.addEventListener("playing",function(){c.gate&&(d._updateButtons(!0),d._seeked(),d._trigger(a.jPlayer.event.playing))},!1),b.addEventListener("pause",function(){c.gate&&(d._updateButtons(!1),d._trigger(a.jPlayer.event.pause))},!1),b.addEventListener("waiting",function(){c.gate&&(d._seeking(),d._trigger(a.jPlayer.event.waiting))},!1),b.addEventListener("seeking",function(){c.gate&&(d._seeking(),d._trigger(a.jPlayer.event.seeking))},!1),b.addEventListener("seeked",function(){c.gate&&(d._seeked(),d._trigger(a.jPlayer.event.seeked))},!1),b.addEventListener("volumechange",function(){c.gate&&(d.options.volume=b.volume,d.options.muted=b.muted,d._updateMute(),d._updateVolume(),d._trigger(a.jPlayer.event.volumechange))},!1),b.addEventListener("ratechange",function(){c.gate&&(d.options.defaultPlaybackRate=b.defaultPlaybackRate,d.options.playbackRate=b.playbackRate,d._updatePlaybackRate(),d._trigger(a.jPlayer.event.ratechange))},!1),b.addEventListener("suspend",function(){c.gate&&(d._seeked(),d._trigger(a.jPlayer.event.suspend))},!1),b.addEventListener("ended",function(){c.gate&&(a.jPlayer.browser.webkit||(d.htmlElement.media.currentTime=0),d.htmlElement.media.pause(),d._updateButtons(!1),d._getHtmlStatus(b,!0),d._updateInterface(),d._trigger(a.jPlayer.event.ended))},!1),b.addEventListener("error",function(){c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet&&(clearTimeout(d.internal.htmlDlyCmdId),d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:a.jPlayer.error.URL,context:d.status.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL})))},!1),a.each(a.jPlayer.htmlEvent,function(e,f){b.addEventListener(this,function(){c.gate&&d._trigger(a.jPlayer.event[f])},!1)})},_addAuroraEventListeners:function(b,c){var d=this;b.volume=100*this.options.volume,b.on("progress",function(){c.gate&&(d.internal.cmdsIgnored&&this.readyState>0&&(d.internal.cmdsIgnored=!1),d._getAuroraStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.progress),b.duration>0&&d._trigger(a.jPlayer.event.timeupdate))},!1),b.on("ready",function(){c.gate&&d._trigger(a.jPlayer.event.loadeddata)},!1),b.on("duration",function(){c.gate&&(d._getAuroraStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.durationchange))},!1),b.on("end",function(){c.gate&&(d._updateButtons(!1),d._getAuroraStatus(b,!0),d._updateInterface(),d._trigger(a.jPlayer.event.ended))},!1),b.on("error",function(){c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet&&(d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:a.jPlayer.error.URL,context:d.status.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL})))},!1)},_getHtmlStatus:function(a,b){var c=0,d=0,e=0,f=0;isFinite(a.duration)&&(this.status.duration=a.duration),c=a.currentTime,d=this.status.duration>0?100*c/this.status.duration:0,"object"==typeof a.seekable&&a.seekable.length>0?(e=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100,f=this.status.duration>0?100*a.currentTime/a.seekable.end(a.seekable.length-1):0):(e=100,f=d),b&&(c=0,f=0,d=0),this.status.seekPercent=e,this.status.currentPercentRelative=f,this.status.currentPercentAbsolute=d,this.status.currentTime=c,this.status.remaining=this.status.duration-this.status.currentTime,this.status.videoWidth=a.videoWidth,this.status.videoHeight=a.videoHeight,this.status.readyState=a.readyState,this.status.networkState=a.networkState,this.status.playbackRate=a.playbackRate,this.status.ended=a.ended},_getAuroraStatus:function(a,b){var c=0,d=0,e=0,f=0;this.status.duration=a.duration/1e3,c=a.currentTime/1e3,d=this.status.duration>0?100*c/this.status.duration:0,a.buffered>0?(e=this.status.duration>0?a.buffered*this.status.duration/this.status.duration:100,f=this.status.duration>0?c/(a.buffered*this.status.duration):0):(e=100,f=d),b&&(c=0,f=0,d=0),this.status.seekPercent=e,this.status.currentPercentRelative=f,this.status.currentPercentAbsolute=d,this.status.currentTime=c,this.status.remaining=this.status.duration-this.status.currentTime,this.status.readyState=4,this.status.networkState=0,this.status.playbackRate=1,this.status.ended=!1},_resetStatus:function(){this.status=a.extend({},this.status,a.jPlayer.prototype.status)},_trigger:function(b,c,d){var e=a.Event(b);e.jPlayer={},e.jPlayer.version=a.extend({},this.version),e.jPlayer.options=a.extend(!0,{},this.options),e.jPlayer.status=a.extend(!0,{},this.status),e.jPlayer.html=a.extend(!0,{},this.html),e.jPlayer.aurora=a.extend(!0,{},this.aurora),e.jPlayer.flash=a.extend(!0,{},this.flash),c&&(e.jPlayer.error=a.extend({},c)),d&&(e.jPlayer.warning=a.extend({},d)),this.element.trigger(e)},jPlayerFlashEvent:function(b,c){if(b===a.jPlayer.event.ready)if(this.internal.ready){if(this.flash.gate){if(this.status.srcSet){var d=this.status.currentTime,e=this.status.paused;this.setMedia(this.status.media),this.volumeWorker(this.options.volume),d>0&&(e?this.pause(d):this.play(d))}this._trigger(a.jPlayer.event.flashreset)}}else this.internal.ready=!0,this.internal.flash.jq.css({width:"0px",height:"0px"}),this.version.flash=c.version,this.version.needFlash!==this.version.flash&&this._error({type:a.jPlayer.error.VERSION,context:this.version.flash,message:a.jPlayer.errorMsg.VERSION+this.version.flash,hint:a.jPlayer.errorHint.VERSION}),this._trigger(a.jPlayer.event.repeat),this._trigger(b);if(this.flash.gate)switch(b){case a.jPlayer.event.progress:this._getFlashStatus(c),this._updateInterface(),this._trigger(b);break;case a.jPlayer.event.timeupdate:this._getFlashStatus(c),this._updateInterface(),this._trigger(b);break;case a.jPlayer.event.play:this._seeked(),this._updateButtons(!0),this._trigger(b);break;case a.jPlayer.event.pause:this._updateButtons(!1),this._trigger(b);break;case a.jPlayer.event.ended:this._updateButtons(!1),this._trigger(b);break;case a.jPlayer.event.click:this._trigger(b);break;case a.jPlayer.event.error:this.status.waitForLoad=!0,this.status.waitForPlay=!0,this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"}),this._validString(this.status.media.poster)&&this.internal.poster.jq.show(),this.css.jq.videoPlay.length&&this.status.video&&this.css.jq.videoPlay.show(),this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media),this._updateButtons(!1),this._error({type:a.jPlayer.error.URL,context:c.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL});break;case a.jPlayer.event.seeking:this._seeking(),this._trigger(b);break;case a.jPlayer.event.seeked:this._seeked(),this._trigger(b);break;case a.jPlayer.event.ready:break;default:this._trigger(b)}return!1},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent,this.status.currentPercentRelative=a.currentPercentRelative,this.status.currentPercentAbsolute=a.currentPercentAbsolute,this.status.currentTime=a.currentTime,this.status.duration=a.duration,this.status.remaining=a.duration-a.currentTime,this.status.videoWidth=a.videoWidth,this.status.videoHeight=a.videoHeight,this.status.readyState=4,this.status.networkState=0,this.status.playbackRate=1,this.status.ended=!1},_updateButtons:function(a){a===b?a=!this.status.paused:this.status.paused=!a,a?this.addStateClass("playing"):this.removeStateClass("playing"),!this.status.noFullWindow&&this.options.fullWindow?this.addStateClass("fullScreen"):this.removeStateClass("fullScreen"),this.options.loop?this.addStateClass("looped"):this.removeStateClass("looped"),this.css.jq.play.length&&this.css.jq.pause.length&&(a?(this.css.jq.play.hide(),this.css.jq.pause.show()):(this.css.jq.play.show(),this.css.jq.pause.hide())),this.css.jq.restoreScreen.length&&this.css.jq.fullScreen.length&&(this.status.noFullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.hide()):this.options.fullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.show()):(this.css.jq.fullScreen.show(),this.css.jq.restoreScreen.hide())),this.css.jq.repeat.length&&this.css.jq.repeatOff.length&&(this.options.loop?(this.css.jq.repeat.hide(),this.css.jq.repeatOff.show()):(this.css.jq.repeat.show(),this.css.jq.repeatOff.hide()))},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%"),this.css.jq.playBar.length&&(this.options.smoothPlayBar?this.css.jq.playBar.stop().animate({width:this.status.currentPercentAbsolute+"%"},250,"linear"):this.css.jq.playBar.width(this.status.currentPercentRelative+"%"));var a="";this.css.jq.currentTime.length&&(a=this._convertTime(this.status.currentTime),a!==this.css.jq.currentTime.text()&&this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)));var b="",c=this.status.duration,d=this.status.remaining;this.css.jq.duration.length&&("string"==typeof this.status.media.duration?b=this.status.media.duration:("number"==typeof this.status.media.duration&&(c=this.status.media.duration,d=c-this.status.currentTime),b=this.options.remainingDuration?(d>0?"-":"")+this._convertTime(d):this._convertTime(c)),b!==this.css.jq.duration.text()&&this.css.jq.duration.text(b))},_convertTime:c.prototype.time,_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg"),this.addStateClass("seeking")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg"),this.removeStateClass("seeking")},_resetGate:function(){this.html.audio.gate=!1,this.html.video.gate=!1,this.aurora.gate=!1,this.flash.gate=!1},_resetActive:function(){this.html.active=!1,this.aurora.active=!1,this.flash.active=!1},_escapeHtml:function(a){return a.split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""")},_qualifyURL:function(a){var b=document.createElement("div"); -return b.innerHTML='x',b.firstChild.href},_absoluteMediaUrls:function(b){var c=this;return a.each(b,function(a,d){d&&c.format[a]&&"data:"!==d.substr(0,5)&&(b[a]=c._qualifyURL(d))}),b},addStateClass:function(a){this.ancestorJq.length&&this.ancestorJq.addClass(this.options.stateClass[a])},removeStateClass:function(a){this.ancestorJq.length&&this.ancestorJq.removeClass(this.options.stateClass[a])},setMedia:function(b){var c=this,d=!1,e=this.status.media.poster!==b.poster;this._resetMedia(),this._resetGate(),this._resetActive(),this.androidFix.setMedia=!1,this.androidFix.play=!1,this.androidFix.pause=!1,b=this._absoluteMediaUrls(b),a.each(this.formats,function(e,f){var g="video"===c.format[f].media;return a.each(c.solutions,function(e,h){if(c[h].support[f]&&c._validString(b[f])){var i="html"===h,j="aurora"===h;return g?(i?(c.html.video.gate=!0,c._html_setVideo(b),c.html.active=!0):(c.flash.gate=!0,c._flash_setVideo(b),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.show(),c.status.video=!0):(i?(c.html.audio.gate=!0,c._html_setAudio(b),c.html.active=!0,a.jPlayer.platform.android&&(c.androidFix.setMedia=!0)):j?(c.aurora.gate=!0,c._aurora_setAudio(b),c.aurora.active=!0):(c.flash.gate=!0,c._flash_setAudio(b),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.hide(),c.status.video=!1),d=!0,!1}}),d?!1:void 0}),d?(this.status.nativeVideoControls&&this.html.video.gate||this._validString(b.poster)&&(e?this.htmlElement.poster.src=b.poster:this.internal.poster.jq.show()),"string"==typeof b.title&&(this.css.jq.title.length&&this.css.jq.title.html(b.title),this.htmlElement.audio&&this.htmlElement.audio.setAttribute("title",b.title),this.htmlElement.video&&this.htmlElement.video.setAttribute("title",b.title)),this.status.srcSet=!0,this.status.media=a.extend({},b),this._updateButtons(!1),this._updateInterface(),this._trigger(a.jPlayer.event.setmedia)):this._error({type:a.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:a.jPlayer.errorMsg.NO_SUPPORT,hint:a.jPlayer.errorHint.NO_SUPPORT})},_resetMedia:function(){this._resetStatus(),this._updateButtons(!1),this._updateInterface(),this._seeked(),this.internal.poster.jq.hide(),clearTimeout(this.internal.htmlDlyCmdId),this.html.active?this._html_resetMedia():this.aurora.active?this._aurora_resetMedia():this.flash.active&&this._flash_resetMedia()},clearMedia:function(){this._resetMedia(),this.html.active?this._html_clearMedia():this.aurora.active?this._aurora_clearMedia():this.flash.active&&this._flash_clearMedia(),this._resetGate(),this._resetActive()},load:function(){this.status.srcSet?this.html.active?this._html_load():this.aurora.active?this._aurora_load():this.flash.active&&this._flash_load():this._urlNotSetError("load")},focus:function(){this.options.keyEnabled&&(a.jPlayer.focus=this)},play:function(a){var b="object"==typeof a;b&&this.options.useStateClassSkin&&!this.status.paused?this.pause(a):(a="number"==typeof a?a:0/0,this.status.srcSet?(this.focus(),this.html.active?this._html_play(a):this.aurora.active?this._aurora_play(a):this.flash.active&&this._flash_play(a)):this._urlNotSetError("play"))},videoPlay:function(){this.play()},pause:function(a){a="number"==typeof a?a:0/0,this.status.srcSet?this.html.active?this._html_pause(a):this.aurora.active?this._aurora_pause(a):this.flash.active&&this._flash_pause(a):this._urlNotSetError("pause")},tellOthers:function(b,c){var d=this,e="function"==typeof c,f=Array.prototype.slice.call(arguments);"string"==typeof b&&(e&&f.splice(1,1),a.jPlayer.prototype.destroyRemoved(),a.each(this.instances,function(){d.element!==this&&(!e||c.call(this.data("jPlayer"),d))&&this.jPlayer.apply(this,f)}))},pauseOthers:function(a){this.tellOthers("pause",function(){return this.status.srcSet},a)},stop:function(){this.status.srcSet?this.html.active?this._html_pause(0):this.aurora.active?this._aurora_pause(0):this.flash.active&&this._flash_pause(0):this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100),this.status.srcSet?this.html.active?this._html_playHead(a):this.aurora.active?this._aurora_playHead(a):this.flash.active&&this._flash_playHead(a):this._urlNotSetError("playHead")},_muted:function(a){this.mutedWorker(a),this.options.globalVolume&&this.tellOthers("mutedWorker",function(){return this.options.globalVolume},a)},mutedWorker:function(b){this.options.muted=b,this.html.used&&this._html_setProperty("muted",b),this.aurora.used&&this._aurora_mute(b),this.flash.used&&this._flash_mute(b),this.html.video.gate||this.html.audio.gate||(this._updateMute(b),this._updateVolume(this.options.volume),this._trigger(a.jPlayer.event.volumechange))},mute:function(a){var c="object"==typeof a;c&&this.options.useStateClassSkin&&this.options.muted?this._muted(!1):(a=a===b?!0:!!a,this._muted(a))},unmute:function(a){a=a===b?!0:!!a,this._muted(!a)},_updateMute:function(a){a===b&&(a=this.options.muted),a?this.addStateClass("muted"):this.removeStateClass("muted"),this.css.jq.mute.length&&this.css.jq.unmute.length&&(this.status.noVolume?(this.css.jq.mute.hide(),this.css.jq.unmute.hide()):a?(this.css.jq.mute.hide(),this.css.jq.unmute.show()):(this.css.jq.mute.show(),this.css.jq.unmute.hide()))},volume:function(a){this.volumeWorker(a),this.options.globalVolume&&this.tellOthers("volumeWorker",function(){return this.options.globalVolume},a)},volumeWorker:function(b){b=this._limitValue(b,0,1),this.options.volume=b,this.html.used&&this._html_setProperty("volume",b),this.aurora.used&&this._aurora_volume(b),this.flash.used&&this._flash_volume(b),this.html.video.gate||this.html.audio.gate||(this._updateVolume(b),this._trigger(a.jPlayer.event.volumechange))},volumeBar:function(b){if(this.css.jq.volumeBar.length){var c=a(b.currentTarget),d=c.offset(),e=b.pageX-d.left,f=c.width(),g=c.height()-b.pageY+d.top,h=c.height();this.volume(this.options.verticalVolume?g/h:e/f)}this.options.muted&&this._muted(!1)},_updateVolume:function(a){a===b&&(a=this.options.volume),a=this.options.muted?0:a,this.status.noVolume?(this.addStateClass("noVolume"),this.css.jq.volumeBar.length&&this.css.jq.volumeBar.hide(),this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.hide(),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.hide()):(this.removeStateClass("noVolume"),this.css.jq.volumeBar.length&&this.css.jq.volumeBar.show(),this.css.jq.volumeBarValue.length&&(this.css.jq.volumeBarValue.show(),this.css.jq.volumeBarValue[this.options.verticalVolume?"height":"width"](100*a+"%")),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.show())},volumeMax:function(){this.volume(1),this.options.muted&&this._muted(!1)},_cssSelectorAncestor:function(b){var c=this;this.options.cssSelectorAncestor=b,this._removeUiClass(),this.ancestorJq=b?a(b):[],b&&1!==this.ancestorJq.length&&this._warning({type:a.jPlayer.warning.CSS_SELECTOR_COUNT,context:b,message:a.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.ancestorJq.length+" found for cssSelectorAncestor.",hint:a.jPlayer.warningHint.CSS_SELECTOR_COUNT}),this._addUiClass(),a.each(this.options.cssSelector,function(a,b){c._cssSelector(a,b)}),this._updateInterface(),this._updateButtons(),this._updateAutohide(),this._updateVolume(),this._updateMute()},_cssSelector:function(b,c){var d=this;if("string"==typeof c)if(a.jPlayer.prototype.options.cssSelector[b]){if(this.css.jq[b]&&this.css.jq[b].length&&this.css.jq[b].unbind(".jPlayer"),this.options.cssSelector[b]=c,this.css.cs[b]=this.options.cssSelectorAncestor+" "+c,this.css.jq[b]=c?a(this.css.cs[b]):[],this.css.jq[b].length&&this[b]){var e=function(c){c.preventDefault(),d[b](c),d.options.autoBlur?a(this).blur():a(this).focus()};this.css.jq[b].bind("click.jPlayer",e)}c&&1!==this.css.jq[b].length&&this._warning({type:a.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[b],message:a.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[b].length+" found for "+b+" method.",hint:a.jPlayer.warningHint.CSS_SELECTOR_COUNT})}else this._warning({type:a.jPlayer.warning.CSS_SELECTOR_METHOD,context:b,message:a.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:a.jPlayer.warningHint.CSS_SELECTOR_METHOD});else this._warning({type:a.jPlayer.warning.CSS_SELECTOR_STRING,context:c,message:a.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:a.jPlayer.warningHint.CSS_SELECTOR_STRING})},duration:function(a){this.options.toggleDuration&&(this.options.captureDuration&&a.stopPropagation(),this._setOption("remainingDuration",!this.options.remainingDuration))},seekBar:function(b){if(this.css.jq.seekBar.length){var c=a(b.currentTarget),d=c.offset(),e=b.pageX-d.left,f=c.width(),g=100*e/f;this.playHead(g)}},playbackRate:function(a){this._setOption("playbackRate",a)},playbackRateBar:function(b){if(this.css.jq.playbackRateBar.length){var c,d,e=a(b.currentTarget),f=e.offset(),g=b.pageX-f.left,h=e.width(),i=e.height()-b.pageY+f.top,j=e.height();c=this.options.verticalPlaybackRate?i/j:g/h,d=c*(this.options.maxPlaybackRate-this.options.minPlaybackRate)+this.options.minPlaybackRate,this.playbackRate(d)}},_updatePlaybackRate:function(){var a=this.options.playbackRate,b=(a-this.options.minPlaybackRate)/(this.options.maxPlaybackRate-this.options.minPlaybackRate);this.status.playbackRateEnabled?(this.css.jq.playbackRateBar.length&&this.css.jq.playbackRateBar.show(),this.css.jq.playbackRateBarValue.length&&(this.css.jq.playbackRateBarValue.show(),this.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate?"height":"width"](100*b+"%"))):(this.css.jq.playbackRateBar.length&&this.css.jq.playbackRateBar.hide(),this.css.jq.playbackRateBarValue.length&&this.css.jq.playbackRateBarValue.hide())},repeat:function(a){var b="object"==typeof a;this._loop(b&&this.options.useStateClassSkin&&this.options.loop?!1:!0)},repeatOff:function(){this._loop(!1)},_loop:function(b){this.options.loop!==b&&(this.options.loop=b,this._updateButtons(),this._trigger(a.jPlayer.event.repeat))},option:function(c,d){var e=c;if(0===arguments.length)return a.extend(!0,{},this.options);if("string"==typeof c){var f=c.split(".");if(d===b){for(var g=a.extend(!0,{},this.options),h=0;h0||Math.floor(d)>0):e=!0,a.internal.mouse={x:b.pageX,y:b.pageY},e&&a.css.jq.gui.fadeIn(a.options.autohide.fadeIn,function(){clearTimeout(a.internal.autohideId),a.internal.autohideId=setTimeout(function(){a.css.jq.gui.fadeOut(a.options.autohide.fadeOut)},a.options.autohide.hold)})};this.css.jq.gui.length&&(this.css.jq.gui.stop(!0,!0),clearTimeout(this.internal.autohideId),delete this.internal.mouse,this.element.unbind(c),this.css.jq.gui.unbind(c),this.status.nativeVideoControls?this.css.jq.gui.hide():this.options.fullWindow&&this.options.autohide.full||!this.options.fullWindow&&this.options.autohide.restored?(this.element.bind(d,e),this.css.jq.gui.bind(d,e),this.css.jq.gui.hide()):this.css.jq.gui.show())},fullScreen:function(a){var b="object"==typeof a;b&&this.options.useStateClassSkin&&this.options.fullScreen?this._setOption("fullScreen",!1):this._setOption("fullScreen",!0)},restoreScreen:function(){this._setOption("fullScreen",!1)},_fullscreenAddEventListeners:function(){var b=this,c=a.jPlayer.nativeFeatures.fullscreen;c.api.fullscreenEnabled&&c.event.fullscreenchange&&("function"!=typeof this.internal.fullscreenchangeHandler&&(this.internal.fullscreenchangeHandler=function(){b._fullscreenchange()}),document.addEventListener(c.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1))},_fullscreenRemoveEventListeners:function(){var b=a.jPlayer.nativeFeatures.fullscreen;this.internal.fullscreenchangeHandler&&document.removeEventListener(b.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1)},_fullscreenchange:function(){this.options.fullScreen&&!a.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()&&this._setOption("fullScreen",!1)},_requestFullscreen:function(){var b=this.ancestorJq.length?this.ancestorJq[0]:this.element[0],c=a.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(b=this.htmlElement.video),c.api.fullscreenEnabled&&c.api.requestFullscreen(b)},_exitFullscreen:function(){var b,c=a.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(b=this.htmlElement.video),c.api.fullscreenEnabled&&c.api.exitFullscreen(b)},_html_initMedia:function(b){var c=a(this.htmlElement.media).empty();a.each(b.track||[],function(a,b){var d=document.createElement("track");d.setAttribute("kind",b.kind?b.kind:""),d.setAttribute("src",b.src?b.src:""),d.setAttribute("srclang",b.srclang?b.srclang:""),d.setAttribute("label",b.label?b.label:""),b.def&&d.setAttribute("default",b.def),c.append(d)}),this.htmlElement.media.src=this.status.src,"none"!==this.options.preload&&this._html_load(),this._trigger(a.jPlayer.event.timeupdate)},_html_setFormat:function(b){var c=this;a.each(this.formats,function(a,d){return c.html.support[d]&&b[d]?(c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1):void 0})},_html_setAudio:function(a){this._html_setFormat(a),this.htmlElement.media=this.htmlElement.audio,this._html_initMedia(a)},_html_setVideo:function(a){this._html_setFormat(a),this.status.nativeVideoControls&&(this.htmlElement.video.poster=this._validString(a.poster)?a.poster:""),this.htmlElement.media=this.htmlElement.video,this._html_initMedia(a)},_html_resetMedia:function(){this.htmlElement.media&&(this.htmlElement.media.id!==this.internal.video.id||this.status.nativeVideoControls||this.internal.video.jq.css({width:"0px",height:"0px"}),this.htmlElement.media.pause())},_html_clearMedia:function(){this.htmlElement.media&&(this.htmlElement.media.src="about:blank",this.htmlElement.media.load())},_html_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.htmlElement.media.load()),clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this,c=this.htmlElement.media;if(this.androidFix.pause=!1,this._html_load(),this.androidFix.setMedia)this.androidFix.play=!0,this.androidFix.time=a;else if(isNaN(a))c.play();else{this.internal.cmdsIgnored&&c.play();try{if(c.seekable&&!("object"==typeof c.seekable&&c.seekable.length>0))throw 1;c.currentTime=a,c.play()}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},250))}}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this,c=this.htmlElement.media;if(this.androidFix.play=!1,a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId),c.pause(),this.androidFix.setMedia)this.androidFix.pause=!0,this.androidFix.time=a;else if(!isNaN(a))try{if(c.seekable&&!("object"==typeof c.seekable&&c.seekable.length>0))throw 1;c.currentTime=a}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},250))}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this,c=this.htmlElement.media;this._html_load();try{if("object"==typeof c.seekable&&c.seekable.length>0)c.currentTime=a*c.seekable.end(c.seekable.length-1)/100;else{if(!(c.duration>0)||isNaN(c.duration))throw"e";c.currentTime=a*c.duration/100}}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},250))}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height})))},_html_setProperty:function(a,b){this.html.audio.available&&(this.htmlElement.audio[a]=b),this.html.video.available&&(this.htmlElement.video[a]=b)},_aurora_setAudio:function(b){var c=this;a.each(this.formats,function(a,d){return c.aurora.support[d]&&b[d]?(c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1):void 0}),this.aurora.player=new AV.Player.fromURL(this.status.src),this._addAuroraEventListeners(this.aurora.player,this.aurora),"auto"===this.options.preload&&(this._aurora_load(),this.status.waitForLoad=!1)},_aurora_resetMedia:function(){this.aurora.player&&this.aurora.player.stop()},_aurora_clearMedia:function(){},_aurora_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.aurora.player.preload())},_aurora_play:function(b){this.status.waitForLoad||isNaN(b)||this.aurora.player.seek(b),this.aurora.player.playing||this.aurora.player.play(),this.status.waitForLoad=!1,this._aurora_checkWaitForPlay(),this._updateButtons(!0),this._trigger(a.jPlayer.event.play)},_aurora_pause:function(b){isNaN(b)||this.aurora.player.seek(1e3*b),this.aurora.player.pause(),b>0&&this._aurora_checkWaitForPlay(),this._updateButtons(!1),this._trigger(a.jPlayer.event.pause)},_aurora_playHead:function(a){this.aurora.player.duration>0&&this.aurora.player.seek(a*this.aurora.player.duration/100),this.status.waitForLoad||this._aurora_checkWaitForPlay()},_aurora_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1)},_aurora_volume:function(a){this.aurora.player.volume=100*a},_aurora_mute:function(a){a?(this.aurora.properties.lastvolume=this.aurora.player.volume,this.aurora.player.volume=0):this.aurora.player.volume=this.aurora.properties.lastvolume,this.aurora.properties.muted=a},_flash_setAudio:function(b){var c=this;try{a.each(this.formats,function(a,d){if(c.flash.support[d]&&b[d]){switch(d){case"m4a":case"fla":c._getMovie().fl_setAudio_m4a(b[d]);break;case"mp3":c._getMovie().fl_setAudio_mp3(b[d]);break;case"rtmpa":c._getMovie().fl_setAudio_rtmp(b[d])}return c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_setVideo:function(b){var c=this;try{a.each(this.formats,function(a,d){if(c.flash.support[d]&&b[d]){switch(d){case"m4v":case"flv":c._getMovie().fl_setVideo_m4v(b[d]);break;case"rtmpv":c._getMovie().fl_setVideo_rtmp(b[d])}return c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_resetMedia:function(){this.internal.flash.jq.css({width:"0px",height:"0px"}),this._flash_pause(0/0)},_flash_clearMedia:function(){try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=!1},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=!1,this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}a>0&&(this.status.waitForLoad=!1,this._flash_checkWaitForPlay())},_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.flash.jq.css({width:this.status.width,height:this.status.height})))},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_getFlashPluginVersion:function(){var a,b=0;if(window.ActiveXObject)try{if(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")){var c=a.GetVariable("$version");c&&(c=c.split(" ")[1].split(","),b=parseInt(c[0],10)+"."+parseInt(c[1],10))}}catch(d){}else navigator.plugins&&navigator.mimeTypes.length>0&&(a=navigator.plugins["Shockwave Flash"],a&&(b=navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")));return 1*b},_checkForFlash:function(a){var b=!1;return this._getFlashPluginVersion()>=a&&(b=!0),b},_validString:function(a){return a&&"string"==typeof a},_limitValue:function(a,b,c){return b>a?b:a>c?c:a},_urlNotSetError:function(b){this._error({type:a.jPlayer.error.URL_NOT_SET,context:b,message:a.jPlayer.errorMsg.URL_NOT_SET,hint:a.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(b){var c;c=this.internal.ready?"FLASH_DISABLED":"FLASH",this._error({type:a.jPlayer.error[c],context:this.internal.flash.swf,message:a.jPlayer.errorMsg[c]+b.message,hint:a.jPlayer.errorHint[c]}),this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(b){this._trigger(a.jPlayer.event.error,b),this.options.errorAlerts&&this._alert("Error!"+(b.message?"\n"+b.message:"")+(b.hint?"\n"+b.hint:"")+"\nContext: "+b.context)},_warning:function(c){this._trigger(a.jPlayer.event.warning,b,c),this.options.warningAlerts&&this._alert("Warning!"+(c.message?"\n"+c.message:"")+(c.hint?"\n"+c.hint:"")+"\nContext: "+c.context)},_alert:function(a){var b="jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a;this.options.consoleAlerts?window.console&&window.console.log&&window.console.log(b):alert(b)},_emulateHtmlBridge:function(){var b=this;a.each(a.jPlayer.emulateMethods.split(/\s+/g),function(a,c){b.internal.domNode[c]=function(a){b[c](a)}}),a.each(a.jPlayer.event,function(c,d){var e=!0;a.each(a.jPlayer.reservedEvent.split(/\s+/g),function(a,b){return b===c?(e=!1,!1):void 0}),e&&b.element.bind(d+".jPlayer.jPlayerHtml",function(){b._emulateHtmlUpdate();var a=document.createEvent("Event");a.initEvent(c,!1,!0),b.internal.domNode.dispatchEvent(a)})})},_emulateHtmlUpdate:function(){var b=this;a.each(a.jPlayer.emulateStatus.split(/\s+/g),function(a,c){b.internal.domNode[c]=b.status[c]}),a.each(a.jPlayer.emulateOptions.split(/\s+/g),function(a,c){b.internal.domNode[c]=b.options[c]})},_destroyHtmlBridge:function(){var b=this;this.element.unbind(".jPlayerHtml");var c=a.jPlayer.emulateMethods+" "+a.jPlayer.emulateStatus+" "+a.jPlayer.emulateOptions;a.each(c.split(/\s+/g),function(a,c){delete b.internal.domNode[c]})}},a.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"},a.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+a.jPlayer.prototype.version.script+" needs Jplayer.swf version "+a.jPlayer.prototype.version.needFlash+" but found "},a.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."},a.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"},a.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."},a.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}}); \ No newline at end of file diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/jquery.jplayer.swf b/plugin/document/kod/plugins/jPlayer/static/jPlayer/jquery.jplayer.swf deleted file mode 100644 index 340f7f98d..000000000 Binary files a/plugin/document/kod/plugins/jPlayer/static/jPlayer/jquery.jplayer.swf and /dev/null differ diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/control.js b/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/control.js deleted file mode 100644 index a1b47b529..000000000 --- a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/control.js +++ /dev/null @@ -1,223 +0,0 @@ -var jPlayerConfigInit = function($player,config){ - var playerConfig = { - supplied: "flv,webma,webmv,oga,ogv,m4v,mp3,wav,rtmpa,rtmpv", - solution: "html,flash", - wmode:"transparent", - volume:0.8, - autoBlur: true, - autohide:{ - restored:true,// false true autohide - full:true, - fadeIn:400, - fadeOut:1000, - hold:2500 - }, - smoothPlayBar: false, - keyEnabled: true, - remainingDuration: false, - toggleDuration: false, - errorAlerts: false, - warningAlerts: false, - size: { - width: "100%", - height: "auto" - }, - cssSelectorAncestor: "#"+$($player).attr('id'), - cssSelector: { - videoPlay: ".video-play", - play: ".play", - pause: ".pause", - seekBar: ".seekBar", - playBar: ".playBar", - mute: ".right-volume .mute", - unmute: ".right-volume .unmute", - volumeBar: ".volume-control", - volumeBarValue: ".volume-control .volume-value", - currentTime: ".timer.current", - duration: ".timer.duration", - fullScreen: ".fullscreen", - restoreScreen: ".smallscreen", - gui: ".controls", - noSolution: ".noSolution" - }, - ready: function(current) { - $($player).find(".controls .progress-block").css({margin: "0 10px 0 45px"}); - var media = $(this).data('jPlayer').option.media; - if(media){ - $(this).jPlayer('setMedia',media); - } - }, - loadedmetadata:function(){//载入后重置窗口大小 - try{ - $player.data('player_resize','0'); - setTimeout(function(){ - jPlayerResizeVedio($player); - },200); - }catch(e){}; - }, - error: function(current) { - if( current.jPlayer.error.type == 'e_no_solution' && - current.jPlayer.error.context.indexOf("solution:'flash'") === 1){ - $(".jPlayer-container").css({"text-align": "center"}); - $(".jPlayer-container").html('Flash插件被屏蔽,请在运行后播放'); - return; - } - if(current.jPlayer.error.type != $.jPlayer.error.FLASH){ - //Tips.tips(LNG.unknow_file_tips+'('+current.jPlayer.error.type+')',false); - } - var $that = $(this); - var $jPlayer = $($player).find(".jPlayer-container"); - if($that.data('errorNum') == undefined){ - $that.data('errorNum',1); - } - //flash未加载完成 - if( current.jPlayer.error.type == $.jPlayer.error.FLASH && - $jPlayer.data('jPlayer') && - $that.data('errorNum') < 100 && - $jPlayer.data('jPlayer').status){ - setTimeout(function(){ - $that.data('errorNum',$that.data('errorNum')+1); - var data = $jPlayer.data('jPlayer'); - if(data && data.status){ - $jPlayer.jPlayer('setMedia',data.status.media).jPlayer('play'); - } - },200); - } - if(current.jPlayer.error.type === $.jPlayer.error.URL_NOT_SET){ - } - }, - waiting:function(){ - $($player).find('.video-play-loading').show(); - }, - playing:function(){ - $($player).find('.video-play-loading').hide(); - if($player.data('player_resize') != '1'){ - $player.data('player_resize','1'); - jPlayerResizeVedio($($player)); - } - }, - play: function() { - $($player).find('.video-play').stop(true, true).fadeOut(150); - }, - pause: function() { - $($player).find('.video-play').stop(true, true).fadeIn(150); - }, - ended: function() { - var $next = $($player).find('.play-forward'); - if($next.length ==1){ - $next.click(); - } - } - }; - - $.extend(playerConfig,config); - return playerConfig; -} - -var jPlayerResizeVedio = function($player){ - var name = $player.parents('.dialog-simple').find('.aui-title-bar').attr('id'); - var dialog = $.artDialog.list[name]; - var $vedio = $player.find('video'); - if(name != 'movie-player-dialog' || $vedio.length == 0){ - return; - } - var vWidth = $vedio.width(), - vHeight = $vedio.height(), - winWidth = $(window).width(), - winHeight = $(window).height(), - r = vWidth/vHeight; - - if(vHeight >= winHeight*0.8){ - vHeight = winHeight*0.8; - vWidth = vHeight*r; - } - if(vWidth >= winWidth*0.8){ - vWidth = winWidth*0.8; - vHeight = vWidth/r; - } - dialog.size(vWidth,vHeight); -} - -var jPlayerBindControl = function($player){ - var $jPlayer = $player.find(".jPlayer-container"); - $player.find('.playerScreen').unbind('dblclick').dblclick(function(event) { - if(!$player.hasClass('jp-state-full-screen')){ - $player.find('.fullscreen').click(); - }else{//退出全屏 - $player.find('.smallscreen').click(); - } - }).unbind('click').click(function(event) { - var $buttonPlay = $player.find('.video-play'); - if($buttonPlay.css('display') == "none"){ - $jPlayer.jPlayer("pause"); - $buttonPlay.stop(true, true).fadeIn(150); - }else{ - $jPlayer.jPlayer("play"); - $buttonPlay.stop(true, true).fadeOut(350); - } - stopPP(event); - return false; - }).unbind('mousemove').mousemove(function(event) { - var $gui = $player.find('.controls'); - $gui.fadeIn(100, function() { - clearTimeout($gui.data('auto_timer')); - var timer = setTimeout( function() { - $gui.fadeOut(300); - },2000); - $gui.data('auto_timer',timer); - }); - }); - - $player.find(".volumeblock").unbind('mousedown').mousedown(function() { - var $that = $(this); - var isDrag = true; - $that.mousemove(function(e) { - if(!isDrag) return; - var percent = (e.pageX - $that.offset().left-5) / $that.find(".volume-control").width(); - percent = percent <= 0 ? 0 : percent; - percent = percent >= 1 ? 1 : percent; - - $that.find(".volume-value").css('width',(percent*100)+'%'); - $player.find(".jPlayer-container").jPlayer("option", "muted", false); - $player.find(".jPlayer-container").jPlayer("option", "volume",percent); - return false; - }).mouseup(function(e){ - isDrag = false; - }); - return false; - }); - $player.find(".progress").unbind('mousedown').mousedown(function() { - var $that = $(this); - var isDrag = true; - var resetHead = function(e){ - var width = $that.find(".seekBar").width(); - var percent = (e.pageX - $that.offset().left) / width * 100; - $that.find(".playBar").css({ - width: percent + "%" - }); - $player.find(".jPlayer-container").jPlayer("playHead",percent); - $player.find(".jPlayer-container").jPlayer('play'); - }; - $(this).mousemove(function(e) { - if(!isDrag) return; - resetHead(e); - return false; - }).mouseup(function(e){ - resetHead(e); - isDrag = false; - }); - return false; - }).unbind('mouseenter').bind('mouseenter',function(){ - $player.find('.current-time-tips').fadeIn(); - }).unbind('mouseleave').bind('mouseleave',function(){ - $player.find('.current-time-tips').fadeOut(); - }).unbind('mousemove').bind('mousemove',function(e){ - var playerData = $player.find(".jPlayer-container").data('jPlayer'); - if(!playerData) return; - var $that = $(this); - var percent = (e.pageX - $that.offset().left) / $that.width(); - var display = $.jPlayer.convertTime(playerData.status.duration * percent); - var left = e.pageX - $($player).offset().left; - $player.find('.current-time-tips').css('left',left).text(display); - }); -} diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/images/music-playing.gif b/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/images/music-playing.gif deleted file mode 100644 index 3b7a3395b..000000000 Binary files a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/images/music-playing.gif and /dev/null differ diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/images/sound-playing.gif b/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/images/sound-playing.gif deleted file mode 100644 index 555cdd118..000000000 Binary files a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/images/sound-playing.gif and /dev/null differ diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/style.css b/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/style.css deleted file mode 100644 index 65afea8d1..000000000 --- a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/style.css +++ /dev/null @@ -1,713 +0,0 @@ - -.dialog-simple.movie-player-dialog, -.dialog-simple.movie-player-dialog .aui-outer, -.dialog-simple.movie-player-dialog .aui-border {overflow: visible;} -div.dialog-simple.my-jPlayer.movie-player-dialog .aui-header{} -div.dialog-simple.my-jPlayer.movie-player-dialog .aui-title{ - background:#666;filter: alpha(opacity=50);opacity:0.5; - border-radius: 0;opacity:1; -} - -/*div.dialog-simple.my-jPlayer.movie-player-dialog .aui-header {top: -31px;background:#444;background:rgba(0,0,0,0.01);}*/ -/*div.dialog-simple.my-jPlayer.movie-player-dialog.dialog-max .aui-header {top:0px;background:transparent;}*/ -/*div.dialog-simple.my-jPlayer.movie-player-dialog .jPlayer-movie .controls{bottom: -33px;}*/ - -div.dialog-simple.my-jPlayer.movie-player-dialog .aui-header {top:0px;background:#000;background:rgba(0,0,0,0.01);} -div.dialog-simple.my-jPlayer.movie-player-dialog.dialog-max .aui-header {top:0px;background:transparent;} -div.dialog-simple.my-jPlayer.movie-player-dialog .aui-title{background:#000;filter: alpha(opacity=50);opacity:0.5;} -div.dialog-simple.my-jPlayer.movie-player-dialog .jPlayer-movie .controls{bottom:0px;} - - -/*div.dialog-simple.my-jPlayer.movie-player-dialog .dialog-mouse-in .jPlayer-movie .controls{display:block !important;}*/ -.jPlayer-movie { - display:block; - /*overflow:hidden;*/ - color:#f9f9f9; - box-shadow: 0 2px 30px rgba(50,50,50,0.5); - margin:0; - height: 100%;width: 100%; - background: #000; - position: relative; -} -.jPlayer-movie a { - color:#f9f9f9; - text-decoration:none; - outline-style:none; - outline-width:0 -} -.jPlayer-movie * { - box-sizing:content-box; - -moz-box-sizing:content-box; - -webkit-box-sizing:content-box -} -.jPlayer-movie.flashPlayer .jPlayer-container, -.jPlayer-movie.flashPlayer .jPlayer-container object{ - width:100% !important; - height:100% !important; -} -.jPlayer-movie a.smooth { - transition:all 0.1s linear; - -webkit-transition:all 0.1s linear; - -moz-transition:all 0.1s linear; - -o-transition:all 0.1s linear -} -.jPlayer-movie .jPlayer-container { - margin:0; - padding:0; - line-height:0; -} -.jPlayer-movie .jPlayerMask, -.jPlayer-movie.jp-video-full .jPlayerMask{ - position: absolute; - top: 0;bottom:0px;left: 0px;right: 0px; - cursor:pointer; - z-index: 99; - z-index:999\9; - background:#000; - filter: alpha(opacity=1);opacity:0.01; -} - - -.jPlayer-movie object{width:100%;height:100%;} - -.jPlayer-movie.jp-video-full,.dialog-max .jPlayer{ - width:100% !important; - height:100% !important; -} -.jPlayer-movie.jp-video-full>.controls { - position:absolute; - left:0; - right:0; - bottom:0; - z-index:1000 -} -.jPlayer-movie.jp-video-full, .jPlayer-movie.jp-video-full object, .jPlayer-movie.jp-video-full video { - position:fixed; - top:0; - left:0; - right:0; - bottom:0; - display:block; - border-width:0px; - z-index:999 -} -.jPlayer-movie.jp-video-full .playerScreen { - position:static; -} -.jPlayer-movie.jp-video-full .playerScreen .video-play { - z-index:1000 -} -.jPlayer-movie .playerScreen { - cursor:pointer; - position:relative; - width: 100%; - height: 100%; - z-index: 1; - - display: flex;display: -webkit-flex; - align-items: center;-webkit-align-items: center; - justify-content: center;-webkit-justify-content: center; - - position: absolute;overflow: hidden; -} -.jPlayer-movie .current-time-tips{ - display: none; - position: absolute; - bottom: 35px; - border-radius: 4px; - font-size: 12px; - width: 40px; - margin-left: -20px; - height: 25px; - background-color: #444; - color: #fff; - z-index: 99; - text-align: center; - line-height: 25px; - background-color: rgba(50,50,50,0.7); -} -.jPlayer-movie .playerScreen .video-play{ - display:block; - position:absolute; - z-index:100; - width:100%; - top:0; - left:0; - right:0; - bottom:0; - background:rgba(0, 0, 0, 0.4); -} -.jPlayer-movie .playerScreen .video-play-loading{ - display: none; - position: absolute; - z-index: 100; - top: 50%; - left: 50%; - background: none; - opacity: 0.6; -} -.jPlayer-movie .playerScreen .video-play-loading .play-icon{ - display: block; - left: 0; - top: 50%; - width:100px; - height:100px; - font-size:80px; - text-align:center; - line-height:100px; - color: #fff; - margin:-50px 0 0 -50px; -} -.jPlayer-movie .playerScreen .video-play .play-icon{ - position:absolute; - top:50%; - left:50%; - color: #fff; - color: rgba(255,255,255,0.7); - margin:-60px 0 0 -60px; - display:block; - width:120px; - height:120px; - font-size:6em; - text-align:center; - line-height:140px; -} -.jPlayer-movie .controls { - position: absolute; - width: 100%; - bottom: 0px; - font-size:12px; - height:32px; - line-height:32px !important; - background:#232323; - border-top: 1px solid #333; - - z-index:10; - background-color:rgba(30,30,30,0.5); - border-color:rgba(0,0,0,0.1); - opacity: 0.9; - padding:0; - margin:0; -} -.jPlayer-movie .controls .progress-block { - display:block; - width:auto; - margin:0 185px 0 45px !important; -} -.jPlayer-movie .controls .progress-block .timer { - text-align:center -} -.jPlayer-movie .controls .progress-block .timer.current { - float:left; - width:40px -} -.jPlayer-movie .controls .progress-block .timer.duration { - float:right; - width:40px -} -.jPlayer-movie .controls .progress-block .progress { - display:block; - width:auto; - margin:0 45px 0 45px; - background: none;filter: none; - overflow: visible; - position: relative; - height:6px; - padding:13px 0; - z-index:9 -} -.jPlayer-movie .controls .progress-block .progress .fullBar { - width: 100%; - background: #2f2f2f; - background: rgba(150,150,150,0.3); - height: 100%; - position: absolute; - left: 0px; - height: 6px; - border-radius:6px; - -webkit-border-radius:6px; - z-index: -1; -} -.jPlayer-movie .controls .progress-block .progress .seekBar { - position:relative; - display:block; - cursor:pointer; - padding:0; - margin:0; - height:100%; - background:#3d3d3d; - background-color: rgba(170,170,170,0.55); - border-radius:6px; - -webkit-border-radius:6px; -} - -.jPlayer-movie .controls .progress-block .progress .seekBar .playBar { - display:block; - position:relative; - height:100%; - padding:0; - background:#0082B2; - border-radius:2px; - -webkit-border-radius:2px; - overflow: visible !important; -} -.jPlayer-movie .controls .progress-block .progress .seekBar .playBar:after, -.jPlayer-movie .controls .volumeblock .volume-control .volume-value:after{ - content: " "; - width: 16px; - height: 16px; - position: absolute; - background: #03A9F4; - border-radius: 50%; - right: -8px; - top: -5px; - transition: box-shadow 0.2s; -} - -.jPlayer-movie .controls .progress-block .progress .seekBar:hover .playBar:after, -.jPlayer-movie .controls .volumeblock .volume-control:hover .volume-value:after{ - box-shadow: 0 0 0 5px rgba(81, 201, 255, 0.32); - background: #90ddff; - transition: box-shadow 0.2s; -} -.jPlayer-movie .controls .volumeblock { - display:block; - position:absolute; - right:40px; - top:0; - width:80px; - margin:0 10px; - height:32px; - font-size:0 -} -.jPlayer-movie .controls .volumeblock .volume-control { - display:inline-block; - height:5px; - width:100%; - cursor:pointer; - background:#3d3d3d; - background-color: rgba(150,150,150,0.5); - border-radius:6px; - -webkit-border-radius:6px; - vertical-align:middle; -} -.jPlayer-movie .controls .volumeblock .volume-control .volume-value { - display:block; - width:20%; - height:100%; - background:#0082B2; - border-radius:6px; - position: relative; - -webkit-border-radius:6px; -} -.jPlayer-movie .controls .controlset { - display:block; - position:absolute; - text-align:center; - top:0 -} -.jPlayer-movie .controls .controlset.left {left:0;} -.jPlayer-movie .controls .controlset.right {right:0;} -.jPlayer-movie .controls .controlset.right-volume {right:140px} -.jPlayer-movie .controls .controlset .play, .jPlayer-movie .controls .controlset .pause, .jPlayer-movie .controls .controlset .fullscreen, .jPlayer-movie .controls .controlset .smallscreen, .jPlayer-movie .controls .controlset .mute, .jPlayer-movie .controls .controlset .unmute { - display:inline-block; - width:38px; - height:32px; - font-size:1.4444444444em; - background:transparent -} -.jPlayer-movie .controls .controlset .play:hover, .jPlayer-movie .controls .controlset .pause:hover, .jPlayer-movie .controls .controlset .fullscreen:hover, .jPlayer-movie .controls .controlset .smallscreen:hover, .jPlayer-movie .controls .controlset .mute:hover, .jPlayer-movie .controls .controlset .unmute:hover { - background:#3d3d3d; - background: rgba(255,255,255,0.4); -} -.jPlayer-movie.audioPlayer .playerScreen .video-play { - display:none !important -} -.jPlayer-movie.audioPlayer .controls .controlset.right { - display:none -} -.jPlayer-movie.audioPlayer .controls .controlset.right-volume { - right:100px -} -.jPlayer-movie.audioPlayer .controls .progress-block { - margin:0 140px 0 40px; -} -.jPlayer-movie.audioPlayer .controls .volumeblock { - right:5px -} -.jPlayer-movie.light { - color:#000 -} -.jPlayer-movie.light a { - color:#000 -} -.jPlayer-movie.light .playerScreen .video-play { - background:rgba(204, 204, 204, 0.4) -} -.jPlayer-movie.light .controls { - background:#F4F4F4; - border:1px solid #e7e7e7 -} -.jPlayer-movie.light .controls .play:hover, .jPlayer-movie.light .controls .pause:hover, .jPlayer-movie.light .controls .fullscreen:hover, .jPlayer-movie.light .controls .smallscreen:hover, .jPlayer-movie.light .controls .mute:hover, .jPlayer-movie.light .controls .unmute:hover { - background:#dbdbdb -} -.jPlayer-movie.light .controls .volumeblock .volume-control, .jPlayer-movie.light .controls .progress-block .progress .seekBar { - background:#dbdbdb -} -.jPlayer-movie.light .controls .volumeblock .volume-control .volume-value, .jPlayer-movie.light .controls .progress-block .progress .seekBar .playBar { - background:#0082B2 -} -@media (max-width: 480px) { - .jPlayer-movie .controls .progress-block { - margin:0 40px 0 40px !important; - } - .jPlayer-movie.audioPlayer .controls .progress-block { - margin:0 5px 0 40px !important; - } - .jPlayer-movie .controls .volumeblock { - display:none - } - .jPlayer-movie .controls .controlset.right-volume { - display:none - } - .jPlayer-movie .playerScreen .video-play .play-icon { - font-size:3.5em; - margin:-35px 0 0 -35px; - width:70px; - height:70px; - line-height:70px - } -} - -/*=========================*/ - -div.dialog-simple.my-jPlayer .aui-header{ - position: absolute; - left: 0px;right: 0px; - width: 100%;height: 40px; -} -div.dialog-simple.my-jPlayer .aui-title-bar{z-index: 100;} -div.dialog-simple.my-jPlayer .aui-title{background:none;opacity: 0;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-min, -body div.dialog-simple.my-jPlayer .aui-outer .aui-max, -body div.dialog-simple.my-jPlayer .aui-outer .aui-close{ - border-radius: 50%; - background-image: none; - background: rgba(255, 255, 255, 0.3); - width: 18px; - height: 18px; - font-size: 12px; - line-height: 18px; -} -body div.dialog-simple.my-jPlayer .aui-outer .aui-min:hover{background: #ffeb3b;color: #8e810d;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-max:hover{background: #4CAF50;color: #19581c;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-close:hover{background:#f30;color:#751717;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-close{right:6px;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-max{right: 28px;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-min{right: 50px;} -body div.dialog-simple.my-jPlayer .aui-outer .aui-close:before{content: "\f00d";} -body div.dialog-simple.my-jPlayer .aui-outer .aui-max:before{content: "\f065";} -body div.dialog-simple.my-jPlayer .aui-outer .aui-min:before{content: "\f068";} - -div.dialog-simple.music-player-dialog.my-jPlayer .aui-header{ - opacity: 1 !important;filter: alpha(opacity=100) !important;overflow: hidden; -} -div.dialog-simple.music-player-dialog.my-jPlayer .aui-title-bar{width:100%;height:80%;overflow: hidden;} -div.dialog-simple.music-player-dialog.my-jPlayer .aui-title{ - font-size:0px;height:100%;width:100%;padding:0; - background:#1a9aff;opacity: 0.01 !important;filter: alpha(opacity=1) !important; -} -div.dialog-simple.music-player-dialog.my-jPlayer .aui-main{min-height: 400px;} -.jPlayer-music{ - width: 100%;height: 100%; - min-width: 280px; - min-height: 400px; - box-shadow: 0 0 30px rgba(0,0,0,.35); - color: #fff;text-shadow: 0 0 1px #fff; -} -.jPlayer-music .player-bg{ - position:absolute; - border-radius: 4px; - opacity: 0.9; - top:0;left:0;right:0;bottom:0; - transition: all .3s ease;-webkit-transition: all .3s ease; - - background: #1a9aff; - background-image: -webkit-linear-gradient(160deg, #3f2536, #bc6e07); - background-image: -moz-linear-gradient(160deg, #3f2536, #bc6e07); - background-image: -o-linear-gradient(160deg, #3f2536, #bc6e07); - background-image: -ms-linear-gradient(160deg, #3f2536, #bc6e07); - background-image: linear-gradient(160deg, #5fa716, #2196F3); -} - -.jPlayer-music .playerScreen{width:0px;height:0px;} -.jPlayer-music .video-play{display:none !important;} -.jPlayer-music .top-banner { - position: relative; - padding: 15px 15px 5px 15px; - background:#03a9f4; - background: rgba(3, 169, 244, 0.4); - background: rgba(0, 0, 0, 0.25); -} -.jPlayer-music .top-banner .item-title{ - position: absolute;width: 70%;margin-top: -8px; - overflow: hidden;white-space: nowrap;text-overflow: ellipsis; -} - -.jPlayer-music .current-time-tips{ - position: absolute; - display: none; - background: #2984cc; - background: rgba(200, 200, 200, 0.2); - border-radius: 3px; - padding: 2px 5px; - margin-top: -7px; - margin-left: -20px; -} - -.jPlayer-music .play-tools{ - padding: 0px 0 6px; - position: absolute; - right: 0px;left: 0px; - background: #03a9f4; - background: rgba(0, 0, 0, 0.25); -} -.jPlayer-music .play-tools .time{float: left;margin-left: 15px;} -.jPlayer-music .play-tools .right{float: right;margin-right: 10px;} -.jPlayer-music .play-tools .right span{ - padding-left: 10px; - cursor: pointer; -} - - -.jPlayer-music .play-tools span.show-list, -.jPlayer-music .play-tools span.change-loop, -.jPlayer-music .right-volume a{ - display:inline-block; - width:20px; - text-align: right; -} -.jPlayer-music .right-volume a{text-align: center;} -.jPlayer-music .play-tools span.show-list:hover, -.jPlayer-music .play-tools span.change-loop:hover, -.jPlayer-music .right-volume a:hover { - text-shadow: 0 0 2px #fff,0 0 5px #fff,0 0 20px #fff; -} -.jPlayer-music .play-tools i.loop-one:after { - content: "1"; - position: absolute; - font-size: 12px; - font-weight: 800; - font-family: monospace; - margin-left: 0px; - margin-top: 3px; -} -.jPlayer-music .right-volume{ - position: absolute; - right: 15px; - width: 90px; - height: 20px; - top:60px; -} -.jPlayer-music .right-volume a{ - color: #fff; - font-size: 15px; - line-height: 15px; - text-decoration: none; -} -.jPlayer-music .top-banner .progress { - width: auto; - margin: 0; - margin-top:8px; - background: none;filter: none; - overflow: visible; - position: relative; - box-shadow: none; - cursor: pointer; - height: auto; - height:20px; - padding: 0; - z-index: 9; -} -.jPlayer-music .top-banner .progress .fullBar { - width: 100%; - background: #28bcff; - background: rgba(255,255,255,0.2); - position: absolute; - left: 0px; - top: 10px; - height:2px; - border-radius: 6px; - -webkit-border-radius: 6px; - z-index: -1; -} - -.jPlayer-music .top-banner .volumeblock { - position: absolute; - right: 0; - top: 7px; - width:65px; - font-size: 0; -} - -.jPlayer-music .top-banner .progress .seekBar .playBar, -.jPlayer-music .top-banner .volumeblock .volume-control .volume-value { - display:block; - width:20%; - height:100%; - background: #fff; - background:rgba(255, 255, 255, 0.8); - border-radius:6px; - position: relative; - -webkit-border-radius:6px; -} -.jPlayer-music .top-banner .progress .seekBar, -.jPlayer-music .top-banner .volumeblock .volume-control { - display:inline-block; - height:2px; - width:100%; - cursor:pointer; - background: #5db7ff; - background-color: rgba(255,255,255,0.2); - border-radius:6px; - -webkit-border-radius:6px; - vertical-align:middle; -} -.jPlayer-music .top-banner .progress .seekBar .playBar:after, -.jPlayer-music .top-banner .volumeblock .volume-control .volume-value:after{ - content:""; - width: 12px; - height: 12px; - position: absolute; - background: #bce1ff; - background: rgba(255, 255, 255, 0.95); - border-radius: 50%; - right: -10px; - top: -5px; -} - -.jPlayer-music .progress i.video-play-loading { - position: absolute; - margin-top: -5px; - width: 12px; - height: 12px; - text-align: center; - font-size: 12px; - right: -10px; - color: rgba(33, 33, 33, 0.4); - z-index: 10; -} - -.jPlayer-music .top-banner .progress .seekBar:hover .playBar:after, -.jPlayer-music .top-banner .volumeblock .volume-control:hover .volume-value:after{ - box-shadow: 0 0 0 5px rgba(192, 236, 255, 0.32); -} - -.jPlayer-music .control-actions{padding-top: 10px;padding-top: 28px;} -.jPlayer-music .control-actions a{ - width: 50px;height: 50px;line-height: 50px; - text-decoration: none; - text-align: center; - float: left; - margin-right: 5px; - display: inline-block; - - border:2px solid rgba(255,255,255,0.7); - border-radius: 50%; - font-size: 20px; - opacity: .8; - cursor: pointer; - text-shadow: 0 1px 1px rgba(0,0,0,.2); - box-shadow: 0 1px 1px rgba(0,0,0,.2); - background: rgba(0,0,0,.2); - -webkit-transition: all .1s ease; - transition: all .1s ease; - color: #fff; -} -.jPlayer-music .control-actions a:hover{ - color:#fff; background: rgba(255,255,255,0.3); -} -.jPlayer-music .control-actions a i.icon-backward{margin-left:-5px;} -.jPlayer-music .control-actions a i.icon-play{margin-left: 4px;} -.jPlayer-music .control-actions a i.icon-play{margin-left: 4px;} -.jPlayer-music .control-actions a i.icon-forward{margin-left:3px;} -.jPlayer-music .control-actions a.play-backward, -.jPlayer-music .control-actions a.play-forward{ - height: 30px;margin-top:10px; - width: 30px; - line-height: 30px; - font-size: 14px; -} - - -/*播放列表*/ -.jPlayer-music .play-list{ - overflow-y: auto; - height: auto; - top: 154px; - bottom: 0px; - position: absolute; - width: 100%; - background: #3b94dc; - background: rgba(100, 100, 100, 0.3); -} -.jPlayer-music .play-list ul{list-style: none; padding: 0;} -.jPlayer-music .play-list .item{ - display: block; - cursor: pointer; - height:35px; - line-height: 35px; - padding-left:10px; - border-color: 1px solid #237cc1; - border-bottom: 1px solid rgba(160, 160, 160, 0.1); - transition: background-color .2s ease; - -webkit-transition: background-color .2s ease; - overflow: hidden; -} - -.jPlayer-music .play-list .item .name{ - padding-left: 10px;border-left: 4px solid transparent; - display: inline-block;width: 80%; - white-space: nowrap;text-overflow: ellipsis; overflow: hidden; - height: 25px;line-height: 25px;margin-top: 5px; -} -.jPlayer-music .play-list .item:hover, -.jPlayer-music .play-list .item.this{ - background: #237cc1; - background: rgba(202, 200, 200, 0.2); - border-color:transparent; -} -.jPlayer-music.jp-state-playing .play-list .item.this:hover{background-image: none;} -.jPlayer-music .play-list .item.this .name{ - border-left: 4px solid rgba(255,255,255,0.6); -} -.jPlayer-music .play-list .item .action-right { - float: right;display:none; - transition: all .2s ease;-webkit-transition: all .2s ease; - position: absolute;right: 0;margin-top: -43px; -} -.jPlayer-music .play-list .item:hover .action-right{display:block;} -.jPlayer-music .play-list .item .action-right .download, -.jPlayer-music .play-list .item .action-right .remove{ - display: inline-block;text-align: center; - transition: all .2s ease;-webkit-transition: all .2s ease; - width: 36px;height: 36px;background: rgba(255,255,255,0.1);margin-left: -4px; -} -.jPlayer-music .play-list .item .action-right .download:hover, -.jPlayer-music .play-list .item .action-right .remove:hover{ - background: rgba(255, 255, 255, 0.3); - transition: all .2s ease;-webkit-transition: all .2s ease; -} - - -/*播放中 列表*/ -.jPlayer-music.jp-state-playing .play-list .item.this{ - background-image: url(images/sound-playing.gif); - background-repeat: no-repeat; - background-position: 95% 13px; -} -/*隐藏列表*/ -.hide-play-list .aui-main{height:155px !important;} -.hide-play-list .jPlayer-music{min-height:inherit;} -.hide-play-list .jPlayer-music .play-list{display:none;} - diff --git a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/template.js b/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/template.js deleted file mode 100644 index e9d520101..000000000 --- a/plugin/document/kod/plugins/jPlayer/static/jPlayer/kod.flat/template.js +++ /dev/null @@ -1,92 +0,0 @@ -var jplayerTemplateMovie = -'
                    \ -
                    \ -
                    \ -
                    \ - \ - \ -
                    \ -
                    00:00
                    \ -
                    \ -
                    \ - \ - \ -
                    \ -
                    \ - \ - \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ - \ - \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    '; - -var jplayerTemplateMusic = -'
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    --
                    \ -
                    \ - \ - \ - \ - \ -
                    \ -
                    \ -
                    00:00
                    \ - \ -
                    \ - \ - \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ - \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ -
                    \ - \ -
                    \ - \ - / \ - \ - \ - \ - \ - \ -
                    \ -
                    \ -
                    \ -
                      \ -
                      \ -
                      \ -
                      '; diff --git a/plugin/document/kod/plugins/jPlayer/static/main.js b/plugin/document/kod/plugins/jPlayer/static/main.js deleted file mode 100644 index 560c37531..000000000 --- a/plugin/document/kod/plugins/jPlayer/static/main.js +++ /dev/null @@ -1,138 +0,0 @@ -kodReady.push(function(){ - var playerSupport = function(){ - var support = { - wap:{//移动端 - music:['mp3','m4a','aac'], - movie:['mp4','m4v','mov'] - }, - ie:{ - music:['mp3','m4a','aac'], - movie:['mp4','m4v','mov' , 'flv','f4v'] - }, - chrome:{//default chrome,firefox,edge - music:['mp3','wav','aac', 'm4a','oga','ogg','webma','flac'], - movie:['mp4','m4v','mov', 'f4v','flv','ogv','webm','webmv'] - } - //safari 已经禁用了flash - }; - var res = support.chrome; - if(isWap()){ - res = support.wap; - }else if(!!window.ActiveXObject || "ActiveXObject" in window){ - res = support.ie; - } - return res.music.join(',') + ',' + res.movie.join(','); - } - //'mp3,wav,m4a,aac,oga,ogg,webma,mp4,m4v,flv,mov,f4v,ogv,webm,webmv' - - var myPlayer; - var loadMyPlayer = function(callback){ - var appStatic = "{{pluginHost}}static/"; - var appStaticDefault = "{{pluginHostDefault}}static/"; - if(myPlayer){ - callback(myPlayer); - }else{ - var top = ShareData.frameTop(); - top.require.async(appStatic+'page.js',function(app){ - if(!myPlayer){ - myPlayer = app; - myPlayer.init(appStatic,appStaticDefault); - } - callback(myPlayer); - }); - } - }; - - kodApp.add({ - name:"jPlayer", - title:LNG['Plugin.default.jPlayer'], - ext:playerSupport(), - //ext:"{{config.fileExt}}", - sort:"{{config.fileSort}}", - icon:'{{pluginHost}}static/images/icon.png', - callback:function(path,ext){ - var music = ['mp3','wav','aac','m4a','oga','ogg','webma','m3u8a','m3ua','flac']; - if(isWap() && $.inArray(ext, music) == -1 && G.ACT != 'file' ){ //移动端,非视频文件分享页面用跳转方式打开 - return window.open(core.path2url(path)); - } - var list = [{ - url:core.path2url(path), - name:urlDecode(core.pathThis(path)),//zip内文件播放 - ext:ext - }]; - - if(isWap() && !window.jplayerInit){ - window.jplayerInit = true; - $(".jPlayer-music .play-list .remove").trigger("click"); - $.addStyle('.music-player-dialog{visibility:visible;}'); - } - loadMyPlayer(function(player){ - player.play(list); - }); - } - }); - - // 移动端安卓首次打开播放器不自动播放问题处理; - if(isWap()){ - $.addStyle('.music-player-dialog{visibility:hidden;}'); - // loadMyPlayer(function(player){ - // player.play([{url:"",name:"",ext:"mp3"}]); - // }); - } - - //音效播放绑定 - Hook.bind('playSound',function(url){ - loadMyPlayer(function(player){ - player.playSound(url); - }); - }); - - - //多选含有音乐右键菜单 - var menuOpt = { - 'play-media':{ - name:LNG.add_to_play, - className:"play-media hidden", - icon:"x-item-file x-mp3", - accesskey: "p", - callback:function(action,option){ - if (ui.fileLight.fileListSelect().length <1) return; - var list = [];//选中单个&多个都可以播放 - ui.fileLight.fileListSelect().each(function(index){ - var ext = ui.fileLight.type($(this)); - if ( kodApp.appSupportCheck('jPlayer',ext) ) { - var path = ui.fileLight.path($(this)); - var url = core.path2url(path,false); - list.push({ - url:url, - name:core.pathThis(path), - ext:ext - }); - } - }); - loadMyPlayer(function(player){ - player.play(list); - }); - } - } - } - $.contextMenu.menuAdd(menuOpt,'.menu-more',false,'.clone'); - - - //多选含有音乐检测;添加到音乐列表 - Hook.bind('rightMenu.show.menu-more',function($menuAt,$theMenu){ - var needMenu = 0; - var hideClass = 'hidden'; - ui.fileLight.fileListSelect().each(function(){ - var ext = core.pathExt(ui.fileLight.name($(this))); - if ( kodApp.appSupportCheck('jPlayer',ext) ){ - needMenu +=1; - } - }); - if(needMenu == 0){ - $theMenu.find('.play-media').addClass(hideClass); - }else{ - $theMenu.find('.play-media').removeClass(hideClass); - } - }); -}); diff --git a/plugin/document/kod/plugins/jPlayer/static/page.js b/plugin/document/kod/plugins/jPlayer/static/page.js deleted file mode 100644 index 775e0749a..000000000 --- a/plugin/document/kod/plugins/jPlayer/static/page.js +++ /dev/null @@ -1,384 +0,0 @@ -define(function(require, exports) { - var movieTemplate = ''; - var musicTemplate = ''; - var MUSIC = 'music-player'; - var MOVIE = 'movie-player'; - var appStatic,appStaticDefault; - - var create = function(playerType){ - var ico = playerType == MUSIC?'mp3':'mp4'; - var selector = '.'+playerType+'-dialog'; - var template = movieTemplate; - var size = {width:'70%',height:'60%'}; - if(playerType == MUSIC){ - template = musicTemplate; - size = {width:'320px',height:'420px'}; - } - var dialog = $.dialog({ - id:playerType+'-dialog', - simple:true, - ico:core.icon(ico), - title:'player', - // top:'25%', - disableTab:true, - width:size.width, - height:size.height, - content:template, - resize:true, - padding:0, - fixed:true, - close:function(){ - var player = getPlayer(playerType); - player.jPlayer("destroy");//.jPlayer("pause"); - } - }); - dialog.DOM.wrap.addClass('my-jPlayer'); - return $(selector).find(".jPlayer-container"); - }; - - var getPlayerType = function(ext){ - if (ext =='music' ) return MUSIC; - if (ext == undefined) ext = 'mp3'; - if (inArray(['mp3','wav','aac', 'm4a','oga','ogg','webma','m3u8a','m3ua','flac'],ext)) { - return MUSIC; - }else { - return MOVIE; - } - }; - var getPlayer = function(playerType){ - var selector = '.'+playerType+'-dialog'; - var dialog = $(selector); - if(dialog.length == 0){ - return false; - } - return dialog.find(".jPlayer-container"); - } - - /* - html5:mp3,webma,oga,ogg,wav | webmv,ogv,m4v,mp4,mov - flash:mp3,m4a,m4v,mov,mp4,flv - - Safari:mp3,m4a | mp4,m4v,mov - Chrome,Firefox: mp3,m4a,webma,oga,wav | webmv,ogv,m4v,mp4,mov - - IE9:mp3,m4a | m4v,mp4 - */ - - var getMedia = function(item){ - var typeArr = { - 'mp4' : 'm4v', - 'm4v' : 'm4v', - 'mov' : 'm4v', - 'ogv' : 'ogv', - 'webm': 'webmv', - 'webmv':'webmv', - 'flv' : 'flv', - 'fla' : 'flv', - 'f4v' : 'flv', - - 'f4a' : 'flv', - 'mp3' : 'mp3', - 'wav' : 'wav', - 'm4a' : 'mp3', - 'aac' : 'mp3', - 'ogg' : 'oga', - 'oga' : 'oga', - 'webma':'webma' - }; - var ext = item['ext']; - var key = typeArr[ext]; - var media = { - 'extType':key, - 'title':item['name'], - 'url':item['url'], - 'solution' : (ext=='flv' || ext == 'f4v') ? "flash" : "html,flash" - } - media[key] = item['url']; - return media; - } - - var playStart = function(player,media){ - if(!media) return; - var $playerBox = player.parents('.jPlayer'); - var config = { - solution:media.solution, - //solution:'flash', - swfPath: appStatic+"jPlayer/jquery.jplayer.swf" - } - - $playerBox.attr('id',UUID()); - player.jPlayer("destroy"); - player.find(".jPlayer-container").children().remove(); - player.jPlayer(jPlayerConfigInit($playerBox,config)); - if(player.find('object').length > 0){ - $playerBox.addClass('flashPlayer'); - }else{ - $playerBox.removeClass('flashPlayer'); - } - - //delay start play; - player.jPlayer("setMedia",media).jPlayer("play");; - jPlayerBindControl($playerBox); - setTimeout(function(){ - var name = $playerBox.parents('.dialog-simple').find('.aui-title-bar').attr('id'); - var dialog = $.dialog.list[name]; - if(dialog){ - dialog.title(media.title); - } - },100); - } - - var play = function(list){ - var ext = list[0]['ext']; - var playerType = getPlayerType(ext); - var player = getPlayer(playerType); - var media = getMedia(list[0]); - if(!player){ - player = create(playerType); - if(playerType == MUSIC){ - musicPlayer.init(); - } - } - if(playerType == MUSIC){ - media = musicPlayer.insert(player,list,ext); - } - playStart(player,media); - try{ - $.dialog.list[playerType+'-dialog'].display(true); - }catch(e){}; - } - - var musicPlayer = (function(){ - var playList = []; - var playCurrent = 0; - var player = null; - var loopType = 'circle';//circle,rand - - var insert = function(thePlayer,list){ - player = thePlayer; - var oldLength = playList.length; - for (var i = 0; i < list.length; i++) {//插入后默认播放列表的最后一个 - var exists = false; - var find = 0; - for (find = 0; find < playList.length; find++) { - if(playList[find]['url'] == list[i]['url']){ - exists = true; - break; - } - } - - // 已存在则不插入 - // 插入后默认播放列表的最后一个;最后一个已存在则不做处理 - if(exists){ - if(i == list.length - 1){ - if(playCurrent != find){ - playIndex(find); - } - } - continue; - } - playList.push( getMedia(list[i])); - } - if(playList.length == oldLength){ - return false;//有重复对应处理 - } - playCurrent = playList.length-1; - updateView(true); - return playList[playCurrent]; - } - var playIndex = function(index){ - index = index <= 0 ? 0 : index; - index = index >= playList.length-1 ? playList.length-1 : index; - playCurrent = index; - var media = playList[index]; - playStart(player,media); - updateView(false); - } - var playAt = function(type){ - switch(loopType){ - case 'circle': - if(type == 'next'){ - if(playCurrent < playList.length-1){ - playIndex(playCurrent+1); - }else{ - playIndex(0); - } - }else{//prev - if(playCurrent-1 < 0){ - playIndex(playList.length-1); - }else{ - playIndex(playCurrent-1); - } - } - break; - case 'rand':playIndex(roundFromTo(0,playList.length)-1);break; - case 'one':playIndex(playCurrent);break; - default:break; - } - } - var remove = function(index){ - playList.splice(index,1); - playIndex(index); - updateView(true); - } - var download = function(index){ - var media = playList[index]; - var url = media.url+'&download=1'; - kodApp.download(url); - } - var init = function(player){ - playCurrent = 0; - playList = []; - loopType = 'circle'; - var $playBox = $('.jPlayer-music'); - var arr = [ - {icon:"icon-retweet",loop:'circle'}, - {icon:"icon-random",loop:'rand'}, - {icon:"icon-refresh loop-one",loop:'one'}, - ]; - $playBox.find('.change-loop').unbind('click').bind('click',function(){ - var index = parseInt($(this).attr('data-loop')) + 1; - index = index < 0 ? 0 : index; - index = index >= arr.length ? 0 : index; - var cell = arr[index]; - $(this).attr('data-loop',index).find('i').attr('class',cell.icon); - loopType = cell.loop; - }); - $playBox.find('.play-backward').unbind('click').bind('click',function(){ - playAt('prev'); - }); - $playBox.find('.play-forward').unbind('click').bind('click',function(){ - playAt('next'); - }); - $playBox.find('.show-list').unbind('click').bind('click',function(e){ - $playBox.parents('.music-player-dialog').toggleClass('hide-play-list'); - stopPP(e); - }); - $playBox.find('.play-list .item').die('click').live('click',function(e){ - var index = $(this).index(); - playIndex(index); - stopPP(e); - }); - - $playBox.find('.play-list .remove').die('click').live('click',function(e){ - var $item = $(this).parents('.item'); - var index = $item.index(); - $item.remove(); - remove(index); - stopPP(e); - return false; - }); - $playBox.find('.play-list .download').die('click').live('click',function(e){ - var index = $(this).parents('.item').index(); - download(index); - stopPP(e); - return false; - }); - } - var updateView = function(resetList){ - var $playBox = $(player).parents('.jPlayer'); - if(resetList){ - var html = ''; - $.each(playList,function(i,val){ - html += - '
                    • \ - '+val.title+'\ -
                      \ - \ - \ -
                      \ -
                    • '; - }); - $playBox.find('.play-list .content').html(html); - } - if(playList.length == 0 || !playList[playCurrent]){ - playCurrent = 0; - $playBox.find('.item-title').html("  "); - player.jPlayer("destroy"); - player.find(".jPlayer-container").children().remove(); - return; - } - $playBox.find('.item-title').html(playList[playCurrent].title); - $playBox.find('.item').removeClass('this'); - $playBox.find('.item:eq('+playCurrent+')').addClass('this'); - colorful($playBox.find('.player-bg')); - } - var colorful = function($dom){ - var from = randomColor(); - var to = randomColor(); - var rotate = '160deg'; - var css = - "background-image: -webkit-linear-gradient("+rotate+", "+from+", "+to+");\ - background-image: -moz-linear-gradient("+rotate+", "+from+", "+to+");\ - background-image: -o-linear-gradient("+rotate+", "+from+", "+to+");\ - background-image: -ms-linear-gradient("+rotate+", "+from+", "+to+");\ - background-image: linear-gradient("+rotate+", "+from+", "+to+");" - $dom.attr('style',css); - } - var randomColor = function(r,g,b){ - return '#'+(Math.random()*0xffffff<<0).toString(16); - } - return { - insert:insert, - init:init - }; - })(); - - var readyPlay = function(list){ - if( !$.isArray(list) || list.length == 0){ - Tips.tips(LNG.error,false); - } - var playerType = getPlayerType(list[0]['ext']); - if(playerType == MOVIE){ - require.async([ - appStatic+'jPlayer/kod.flat/template.js', - appStatic+'jPlayer/jquery.jplayer.min.js', - appStatic+'jPlayer/kod.flat/control.js', - appStatic+'jPlayer/kod.flat/style.css' - ],function(){ - movieTemplate = jplayerTemplateMovie; - play(list); - }); - }else{ - require.async([ - appStatic+'jPlayer/kod.flat/template.js', - appStatic+'jPlayer/jquery.jplayer.min.js', - appStatic+'jPlayer/kod.flat/control.js', - appStatic+'jPlayer/kod.flat/style.css' - ],function(a){ - musicTemplate = jplayerTemplateMusic; - play(list); - }); - } - } - - //后台播放声音; - var playSound = function(sound){//mp3 - var playerKey = 'x-play-sound'; - if($('.'+playerKey).length == 0){ - $('
                      ').appendTo('body'); - } - var $dom = $('.'+playerKey); - require.async(appStatic+'jPlayer/jquery.jplayer.min.js',function(a){ - var config = { - solution:'html',//'html,flash' - swfPath: appStatic+'jPlayer/jquery.jplayer.swf', - media:{title: "",mp3:sound}, - ready:function(){ - $dom.jPlayer("setMedia",config.media).jPlayer("play"); - } - } - $dom.jPlayer("destroy").children().remove(); - $dom.jPlayer(config); - }); - } - - return { - init:function(staticPath,staticDefault){ - appStatic = staticPath; - appStaticDefault = staticDefault; - }, - playSound:playSound, - play:readyPlay - }; -}); diff --git a/plugin/document/kod/plugins/officeLive/app.php b/plugin/document/kod/plugins/officeLive/app.php deleted file mode 100644 index e6e1533b8..000000000 --- a/plugin/document/kod/plugins/officeLive/app.php +++ /dev/null @@ -1,30 +0,0 @@ -hookRegiest(array( - 'user.commonJs.insert' => 'officeLivePlugin.echoJs' - )); - } - public function echoJs($st,$act){ - if($this->isFileExtence($st,$act)){ - $this->echoFile('static/main.js'); - } - } - public function index(){ - if(substr($this->in['path'],0,4) == 'http'){ - $path = $fileUrl = $this->in['path']; - }else{ - $path = _DIR($this->in['path']); - $fileUrl = _make_file_proxy($path); - if (!file_exists($path)) { - show_tips(LNG('not_exists')); - } - } - $config = $this->getConfig(); - header('Location:'.$config['apiServer'].rawurlencode($fileUrl)); - } -} \ No newline at end of file diff --git a/plugin/document/kod/plugins/officeLive/i18n/en.php b/plugin/document/kod/plugins/officeLive/i18n/en.php deleted file mode 100644 index a1d87f7ff..000000000 --- a/plugin/document/kod/plugins/officeLive/i18n/en.php +++ /dev/null @@ -1,15 +0,0 @@ - "Officelive Viewer", - "officeLive.meta.title" => "Officelive Viewer", - "officeLive.meta.desc" => "Officelive Viewer", - - "officeLive.Config.apiServer" => "Server Api", - "officeLive.Config.apiServerDesc" => "
                      - The address of the preview server must be accessible by the server where the server can access kods can use third party services, or Microsoft's official interface
                      (Kod server must be in the external network, and the need for domain name access) -
                      https://owa-box.vips100.com/op/view.aspx?src=
                      -
                      https://docview.mingdao.com/op/view.aspx?src=
                      -
                      https://preview.tita.com/op/view.aspx?src=
                      -
                      https://view.officeapps.live.com/op/view.aspx?src=
                      - Users can build their own; learn more
                      " -); \ No newline at end of file diff --git a/plugin/document/kod/plugins/officeLive/i18n/zh-CN.php b/plugin/document/kod/plugins/officeLive/i18n/zh-CN.php deleted file mode 100644 index 49216e43c..000000000 --- a/plugin/document/kod/plugins/officeLive/i18n/zh-CN.php +++ /dev/null @@ -1,15 +0,0 @@ - "Officelive预览", - "officeLive.meta.title" => "Officelive预览", - "officeLive.meta.desc" => "office系列文件在线预览", - - "officeLive.Config.apiServer" => "服务器接口", - "officeLive.Config.apiServerDesc" => "
                      - 预览服务器的地址,必须要office所在服务器能访问到kod
                      可以使用第三方的服务,或微软官方的接口
                      (kod服务器必须要在外网,且需要域名访问)

                      -
                      https://owa-box.vips100.com/op/view.aspx?src=
                      -
                      https://docview.mingdao.com/op/view.aspx?src=
                      -
                      https://preview.tita.com/op/view.aspx?src=
                      -
                      https://view.officeapps.live.com/op/view.aspx?src=

                      - 内网的用户,可以自己搭建;了解详情
                      " -); \ No newline at end of file diff --git a/plugin/document/kod/plugins/officeLive/package.json b/plugin/document/kod/plugins/officeLive/package.json deleted file mode 100644 index 67b10b5cc..000000000 --- a/plugin/document/kod/plugins/officeLive/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "id":"officeLive", - "name":"{{LNG.officeLive.meta.name}}", - "title":"{{LNG.officeLive.meta.title}}", - "version":"1.22", - "category":"file", - "source":{ - "icon":"{{pluginHost}}static/images/icon.png" - }, - "description":"{{LNG.officeLive.meta.desc}}", - "auther":{ - "copyright":"kodcloud", - "homePage":"http://kodcloud.com" - }, - "configItem":{ - "formStyle":{ - "className":"form-box-title-left", - "tabs":[ - { - "name":"{{LNG.Plugin.tab.basic}}", - "field":["pluginAuth","pluginAuthOpen","sep001","openWith","apiServer"] - } - ] - }, - "pluginAuth":{ - "type":"userSelect", - "value":"all:1", - "display":"{{LNG.Plugin.config.auth}}", - "desc":"{{LNG.Plugin.config.authDesc}}", - "require":1 - }, - "pluginAuthOpen":{ - "type":"switch", - "value":0, - "display":"{{LNG.Plugin.config.authOpen}}", - "desc":"{{LNG.Plugin.config.authOpenDesc}}", - "require":1 - }, - "sep001":"
                      ", - "openWith":{ - "type":"radio", - "value":"dialog", - "display":"{{LNG.Plugin.Config.openWith}}", - "info":[ - ["dialog","{{LNG.Plugin.Config.openWithDilog}}"], - ["window","{{LNG.Plugin.Config.openWithWindow}}"] - ] - }, - "apiServer":{ - "type":"input", - "value":"https://owa-box.vips100.com/op/view.aspx?src=", - "display":"{{LNG.officeLive.Config.apiServer}}", - "desc":"{{LNG.officeLive.Config.apiServerDesc}}", - "require":1 - }, - "fileExt":{ - "type":"tags", - "display":"{{LNG.Plugin.Config.fileExt}}", - "desc":"{{LNG.Plugin.Config.fileExtDesc}}", - "value":"doc,docx,docm,dot,dotx,dotm,rtf,xls,xlsx,xlt,xlsb,xlsm,csv,ppt,pptx,pps,ppsx,pptm,potm,ppam,potx,ppsm,odt,ods,odp,ott,ots,otp,wps,wpt", - }, - "fileSort":{ - "type":"number", - "display":"{{LNG.Plugin.Config.fileSort}}", - "desc":"{{LNG.Plugin.Config.fileSortDesc}}", - "value":5, - } - } -} diff --git a/plugin/document/kod/plugins/officeLive/static/images/icon.png b/plugin/document/kod/plugins/officeLive/static/images/icon.png deleted file mode 100644 index 59e7574b3..000000000 Binary files a/plugin/document/kod/plugins/officeLive/static/images/icon.png and /dev/null differ diff --git a/plugin/document/kod/plugins/officeLive/static/main.js b/plugin/document/kod/plugins/officeLive/static/main.js deleted file mode 100644 index a979e4092..000000000 --- a/plugin/document/kod/plugins/officeLive/static/main.js +++ /dev/null @@ -1,17 +0,0 @@ -kodReady.push(function(){ - kodApp.add({ - name:"officeLive", - title:"{{LNG.officeLive.meta.name}}", - icon:'{{pluginHost}}static/images/icon.png', - ext:"{{config.fileExt}}", - sort:"{{config.fileSort}}", - callback:function(path,ext){ - var url = '{{pluginApi}}&path='+core.pathCommon(path); - if('window' == "{{config.openWith}}" && !core.isFileView() ){ - window.open(url); - }else{ - core.openDialog(url,core.icon(ext),htmlEncode(core.pathThis(path))); - } - } - }); -}); diff --git a/plugin/document/kod/plugins/photoSwipe/app.php b/plugin/document/kod/plugins/photoSwipe/app.php deleted file mode 100644 index 82be55b6c..000000000 --- a/plugin/document/kod/plugins/photoSwipe/app.php +++ /dev/null @@ -1,17 +0,0 @@ -hookRegiest(array( - 'user.commonJs.insert' => 'photoSwipePlugin.echoJs', - )); - } - public function echoJs($st,$act){ - if($this->isFileExtence($st,$act)){ - $this->echoFile('static/main.js'); - } - } -} \ No newline at end of file diff --git a/plugin/document/kod/plugins/photoSwipe/package.json b/plugin/document/kod/plugins/photoSwipe/package.json deleted file mode 100644 index 3ee2b0079..000000000 --- a/plugin/document/kod/plugins/photoSwipe/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "id":"photoSwipe", - "name":"PhotoSwipe Image", - "title":"PhotoSwipe Image Viewer", - "version":"1.33", - "source":{ - "className":"x-item-file x-png", - "screenshoot":[ - "{{staticPath}}images/wall_page/6.jpg", - "{{staticPath}}images/wall_page/8.jpg" - ] - }, - "category":"media,file", - "description":"PhotoSwipe Image", - "keywords":"", - "auther":{ - "copyright":"kodcloud.", - "homePage":"http://www.kodcloud.com", - }, - "configItem":{ - "pluginAuth":{ - "type":"userSelect", - "value":"all:1", - "display":"{{LNG.Plugin.config.auth}}", - "desc":"{{LNG.Plugin.config.authDesc}}", - "require":1 - }, - "sep1001":"
                      ", - "fileExt":{ - "type":"tags", - "display":"{{LNG.Plugin.Config.fileExt}}", - "desc":"{{LNG.Plugin.Config.fileExtDesc}}", - "value":"jpg,jpeg,png,bmp,gif,ico,svg,cur,webp", - }, - "fileSort":{ - "type":"number", - "display":"{{LNG.Plugin.Config.fileSort}}", - "desc":"{{LNG.Plugin.Config.fileSortDesc}}", - "value":20 - } - } -} diff --git a/plugin/document/kod/plugins/photoSwipe/static/PhotoSwipe/default-skin/default-skin.css b/plugin/document/kod/plugins/photoSwipe/static/PhotoSwipe/default-skin/default-skin.css deleted file mode 100644 index f99db1be6..000000000 --- a/plugin/document/kod/plugins/photoSwipe/static/PhotoSwipe/default-skin/default-skin.css +++ /dev/null @@ -1,483 +0,0 @@ -/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */ -/* - - Contents: - - 1. Buttons - 2. Share modal and links - 3. Index indicator ("1 of X" counter) - 4. Caption - 5. Loading indicator - 6. Additional styles (root element, top bar, idle state, hidden state, etc.) - -*/ -/* - - 1. Buttons - - */ -/* - - - -
                      -
                      -
                      -
                      -
                      -
                      -
                      - - - - - - -
                      -
                      -
                      - - - diff --git a/plugin/document/kod/plugins/photoSwipe/static/PhotoSwipe/photoswipe-ui-default.min.js b/plugin/document/kod/plugins/photoSwipe/static/PhotoSwipe/photoswipe-ui-default.min.js deleted file mode 100644 index 64b19c3f3..000000000 --- a/plugin/document/kod/plugins/photoSwipe/static/PhotoSwipe/photoswipe-ui-default.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24 -* http://photoswipe.com -* Copyright (c) 2015 Dmitry Semenov; */ -!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.PhotoSwipeUI_Default=b()}(this,function(){"use strict";var a=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=this,w=!1,x=!0,y=!0,z={barsSize:{top:44,bottom:"auto"},closeElClasses:["item","caption","zoom-wrap","ui","top-bar"],timeToIdle:4e3,timeToIdleOutside:1e3,loadingIndicatorDelay:1e3,addCaptionHTMLFn:function(a,b){return a.title?(b.children[0].innerHTML=a.title,!0):(b.children[0].innerHTML="",!1)},closeEl:!0,captionEl:!0,fullscreenEl:!0,zoomEl:!0,shareEl:!0,counterEl:!0,arrowEl:!0,preloaderEl:!0,tapToClose:!1,tapToToggleControls:!0,clickToCloseNonZoomable:!0,shareButtons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}],getImageURLForShare:function(){return a.currItem.src||""},getPageURLForShare:function(){return window.location.href},getTextForShare:function(){return a.currItem.title||""},indexIndicatorSep:" / ",fitControlsWidth:1200},A=function(a){if(r)return!0;a=a||window.event,q.timeToIdle&&q.mouseUsed&&!k&&K();for(var c,d,e=a.target||a.srcElement,f=e.getAttribute("class")||"",g=0;g-1&&(c.onTap(),d=!0);if(d){a.stopPropagation&&a.stopPropagation(),r=!0;var h=b.features.isOldAndroid?600:30;s=setTimeout(function(){r=!1},h)}},B=function(){return!a.likelyTouchDevice||q.mouseUsed||screen.width>q.fitControlsWidth},C=function(a,c,d){b[(d?"add":"remove")+"Class"](a,"pswp__"+c)},D=function(){var a=1===q.getNumItemsFn();a!==p&&(C(d,"ui--one-slide",a),p=a)},E=function(){C(i,"share-modal--hidden",y)},F=function(){return y=!y,y?(b.removeClass(i,"pswp__share-modal--fade-in"),setTimeout(function(){y&&E()},300)):(E(),setTimeout(function(){y||b.addClass(i,"pswp__share-modal--fade-in")},30)),y||H(),!1},G=function(b){b=b||window.event;var c=b.target||b.srcElement;return a.shout("shareLinkClick",b,c),c.href?c.hasAttribute("download")?!0:(window.open(c.href,"pswp_share","scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left="+(window.screen?Math.round(screen.width/2-275):100)),y||F(),!1):!1},H=function(){for(var a,b,c,d,e,f="",g=0;g