├── screenshot.jpg ├── images ├── left-bg.jpg └── touxiang.png ├── page.php ├── js ├── functions.js ├── instantclick.min.js └── prism.js ├── README.md ├── footer.php ├── index.php ├── page-archives.php ├── archive.php ├── post.php ├── 404.php ├── functions.php ├── header.php ├── comments.php └── style.css /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siseboy/junichi/HEAD/screenshot.jpg -------------------------------------------------------------------------------- /images/left-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siseboy/junichi/HEAD/images/left-bg.jpg -------------------------------------------------------------------------------- /images/touxiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siseboy/junichi/HEAD/images/touxiang.png -------------------------------------------------------------------------------- /page.php: -------------------------------------------------------------------------------- 1 | 2 | need('header.php'); ?> 3 | 4 |
5 |
6 |
7 |

title() ?>

8 |
9 | content(); ?> 10 |
11 |
12 | need('comments.php'); ?> 13 |
14 | 15 | need('footer.php'); ?> -------------------------------------------------------------------------------- /js/functions.js: -------------------------------------------------------------------------------- 1 | var br = { 2 | addEL: function(e, type, fun) { 3 | if (e.addEventListener) { 4 | e.addEventListener(type, fun, false); 5 | } else if (e.attachEvent) { 6 | e.attachEvent('on' + type, fun); 7 | } else { 8 | e['on' + type] = fun; 9 | } 10 | }, 11 | 12 | show: function(e, cl) { 13 | var btn = document.getElementById(e), 14 | bd = document.body || document.getElementsByTagName('body')[0]; 15 | 16 | br.addEL(btn, 'click', function() { 17 | if (bd.className !== cl) { 18 | bd.className = cl; 19 | } else { 20 | bd.className = null; 21 | } 22 | }) 23 | } 24 | } 25 | 26 | br.show('search-toggle', 'search-show'); 27 | 28 | br.show('wechat-toggle', 'wechat-show'); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Junichi 是 Typecho 的一套主题模板,Junichi 这个主题的名字由来,是因为博主起名实在没天分,所以就用我宝贝儿子的英文名来命名。 2 | 3 | 主题从2016年11月14日开始制作,现在只是有形无神,正在进一步优化代码和适配功能。 4 | 5 | **下载地址** 6 | 7 | https://github.com/siseboy/junichi 8 | 9 | **主题预览** 10 | 11 | ![image](https://uefeng.com/usr/uploads/2016/11/2121536658.png) 12 | 13 | ## 主题特性 14 | 15 | - 无jQuery,无前端框架,轻量级 16 | - InstantClick实现PJAX无刷新操作 17 | - Prismjs代码高亮集成 18 | - 响应式设计 19 | - 支持图片CDN 20 | - 支持社交按钮 21 | 22 | ## 主题使用 23 | 24 | 下载后,重命名文件夹为junichi,然后放到typecho里的theme目录内,进入typecho后台,外观,启用即可。 25 | 26 | ## 外观设置 27 | 28 | 进入主题外观设置 29 | 30 | 依次是标语,开启Pjax和的社交链接 31 | 32 | 然后是图片CDN,推荐使用七牛云镜像 33 | 34 | 主题背景图和头像请直接替换images目录下的图片 35 | 36 | 缩略名命名为about,建立关于单页, 37 | 38 | 选择 Archives 的页面模板,缩略名命名为archives,建立归档页, 39 | 40 | 建立缩略名命名为 links 的友链页面。 41 | 42 | **最后一次更新(2019年11月1日)** 43 | 44 | 友链页面内容,可按照下面示例获得和我一样的友链效果。 45 | 46 | ```html 47 | 55 | ``` 56 | -------------------------------------------------------------------------------- /footer.php: -------------------------------------------------------------------------------- 1 | 4 |
5 | 6 | footer(); ?> 7 | 8 | 9 | options->search_form) && in_array('Pjax', $this->options->search_form)): ?> 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | need('header.php'); 13 | ?> 14 | 15 |
16 |
17 | next()): ?> 18 | 33 | 34 | 35 |
36 | need('footer.php'); ?> -------------------------------------------------------------------------------- /page-archives.php: -------------------------------------------------------------------------------- 1 | need('header.php'); ?> 9 | 10 |
11 |
12 |
13 |

title() ?>

14 |
15 | widget('Widget_Contents_Post_Recent', 'pageSize=10000')->to($archives); 16 | $year=0; $mon=0; $i=0; $j=0; 17 | while($archives->next()): 18 | $year_tmp = date('Y',$archives->created); 19 | $mon_tmp = date('m',$archives->created); 20 | $y=$year; $m=$mon; 21 | if ($mon != $mon_tmp && $mon > 0) $output .= ''; 22 | if ($year != $year_tmp && $year > 0) $output .= ''; 23 | if ($year != $year_tmp) { 24 | $year = $year_tmp; 25 | } 26 | if ($mon != $mon_tmp || ($mon == $mon_tmp && $y != $year_tmp)) { 27 | $mon = $mon_tmp; 28 | $output .= '

'. $year_tmp .' 年'. $mon_tmp .' 月

'; 29 | $output .= '
    '; 30 | } 31 | $output .= '
  • '. $archives->title .'    ('.date('M j, Y',$archives->created).')
  • '; 32 | endwhile; 33 | $output .= '
'; 34 | echo $output; 35 | ?> 36 | 37 |
38 |
39 |
40 | 41 | need('footer.php'); ?> 42 | -------------------------------------------------------------------------------- /archive.php: -------------------------------------------------------------------------------- 1 | need('header.php'); 4 | ?> 5 | 6 |
7 |
8 |

archiveTitle(array( 9 | 'category' => _t('分类 %s 下的文章'), 10 | 'search' => _t('包含关键字 %s 的文章'), 11 | 'tag' => _t('标签 %s 下的文章'), 12 | 'author' => _t('%s 的文章') 13 | ), '', ''); ?>

14 | next()): ?> 15 | 31 | 32 | 33 |
34 | 35 | need('footer.php'); ?> -------------------------------------------------------------------------------- /post.php: -------------------------------------------------------------------------------- 1 | 2 | need('header.php'); ?> 3 |
4 |
5 |
6 |
7 |
8 |
9 | 12 |
13 |

title() ?>

14 |
15 | 16 | 19 | 22 |

23 | related(5)->to($relatedPosts); ?> 24 | stack)): ?> 25 |

相关文章

26 | 31 | 32 |

33 |
34 |
35 | 36 | need('comments.php'); ?> 37 |
38 |
39 | need('footer.php'); ?> -------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 请求的页面不存在 8 | 104 | 105 | 106 |
107 |
108 |
109 |
404 110 |
111 |
112 |
113 |
114 |

从前有座山,山里有座庙;

115 |

庙里有个页面,现在找不到…

116 |
返回首页 117 |
118 |
© options->title(); ?>
119 |
120 |
121 | 122 | 123 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | addInput($slogan); 7 | 8 | //图片设置 9 | $favicon = new Typecho_Widget_Helper_Form_Element_Text('favicon', NULL, NULL, _t('Favicon'), _t('在这里输入 Favicon 链接,带http:// ,不填则使用主题自带的图片')); 10 | $form->addInput($favicon); 11 | $touxiang = new Typecho_Widget_Helper_Form_Element_Text('touxiang', NULL, NULL, _t('头像'), _t('在这里输入头像链接,带http:// ,不填则使用主题自带的图片')); 12 | $form->addInput($touxiang); 13 | $iosicon = new Typecho_Widget_Helper_Form_Element_Text('iosicon', NULL, NULL, _t('左侧背景图'), _t('在这里输入背景图链接,带http:// ,不填则使用主题自带的图片')); 14 | $form->addInput($iosicon); 15 | 16 | //Pjax加速 17 | $search_form = new Typecho_Widget_Helper_Form_Element_Checkbox('search_form', 18 | array('Pjax' => _t('启用Pjax加速站点,勾上即可,为使原生评论生效需要到设置-评论,去掉开启垃圾评论过滤'),),array('ShowSearch'), _t('设置开启Pjax')); 19 | $form->addInput($search_form->multiMode()); 20 | 21 | //社交链接 22 | $socialweibo = new Typecho_Widget_Helper_Form_Element_Text('socialweibo', NULL, NULL, _t('输入微博链接'), _t('在这里输入微博链接,带http://')); 23 | $form->addInput($socialweibo); 24 | $socialgithub = new Typecho_Widget_Helper_Form_Element_Text('socialgithub', NULL, NULL, _t('输入GitHub链接'), _t('在这里输入GitHub链接,带http://')); 25 | $form->addInput($socialgithub); 26 | $socialtwitter = new Typecho_Widget_Helper_Form_Element_Text('socialtwitter', NULL, NULL, _t('输入Twitter链接'), _t('在这里输入twitter链接,带http://')); 27 | $form->addInput($socialtwitter); 28 | $socialgoogle = new Typecho_Widget_Helper_Form_Element_Text('socialgoogle', NULL, NULL, _t('输入Google +链接'), _t('在这里输入Google +链接,带http://')); 29 | $form->addInput($socialgoogle); 30 | $socialwechat = new Typecho_Widget_Helper_Form_Element_Text('socialwechat', NULL, NULL, _t('输入微信二维码链接'), _t('在这里输入微信二维码链接,带http://')); 31 | $form->addInput($socialwechat); 32 | $socialqq = new Typecho_Widget_Helper_Form_Element_Text('socialqq', NULL, NULL, _t('输入QQ号码'), _t('在这里输入QQ号码')); 33 | $form->addInput($socialqq); 34 | $socialmusic = new Typecho_Widget_Helper_Form_Element_Text('socialmusic', NULL, NULL, _t('输入音乐链接'), _t('在这里输入音乐链接,带http://')); 35 | $form->addInput($socialmusic); 36 | 37 | //附件源地址 38 | $src_address = new Typecho_Widget_Helper_Form_Element_Text('src_add', NULL, NULL, _t('替换前地址'), _t('即你的附件存放链接,如http://www.yourblog.com/usr/uploads/')); 39 | $form->addInput($src_address); 40 | //替换后地址 41 | $cdn_address = new Typecho_Widget_Helper_Form_Element_Text('cdn_add', NULL, NULL, _t('替换后'), _t('即你的七牛云存储域名,如http://yourblog.qiniudn.com/')); 42 | $form->addInput($cdn_address); 43 | 44 | } 45 | 46 | /** 47 | * 解析内容以实现附件加速 48 | * @access public 49 | * @param string $content 文章正文 50 | * @param Widget_Abstract_Contents $obj 51 | */ 52 | function parseContent($obj){ 53 | $options = Typecho_Widget::widget('Widget_Options'); 54 | if(!empty($options->src_add) && !empty($options->cdn_add)){ 55 | $obj->content = str_ireplace($options->src_add,$options->cdn_add,$obj->content); 56 | } 57 | echo trim($obj->content); 58 | } 59 | 60 | //阅读数 61 | function get_post_view($archive) 62 | { 63 | $cid = $archive->cid; 64 | $db = Typecho_Db::get(); 65 | $prefix = $db->getPrefix(); 66 | if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) { 67 | $db->query('ALTER TABLE `' . $prefix . 'contents` ADD `views` INT(10) DEFAULT 0;'); 68 | echo 0; 69 | return; 70 | } 71 | $row = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid)); 72 | if ($archive->is('single')) { 73 | $views = Typecho_Cookie::get('extend_contents_views'); 74 | if(empty($views)){ 75 | $views = array(); 76 | }else{ 77 | $views = explode(',', $views); 78 | } 79 | if(!in_array($cid,$views)){ 80 | $db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid)); 81 | array_push($views, $cid); 82 | $views = implode(',', $views); 83 | Typecho_Cookie::set('extend_contents_views', $views); //记录查看cookie 84 | } 85 | } 86 | echo $row['views']; 87 | } 88 | 89 | //获取评论的锚点链接 90 | function get_comment_at($coid) 91 | { 92 | $db = Typecho_Db::get(); 93 | $prow = $db->fetchRow($db->select('parent')->from('table.comments') 94 | ->where('coid = ? AND status = ?', $coid, 'approved')); 95 | $parent = $prow['parent']; 96 | if ($parent != "0") { 97 | $arow = $db->fetchRow($db->select('author')->from('table.comments') 98 | ->where('coid = ? AND status = ?', $parent, 'approved')); 99 | $author = $arow['author']; 100 | $href = '@' . $author . ''; 101 | echo $href; 102 | } else { 103 | echo ''; 104 | } 105 | } 106 | //输出评论内容 107 | function get_filtered_comment($coid){ 108 | $db = Typecho_Db::get(); 109 | $rs=$db->fetchRow($db->select('text')->from('table.comments') 110 | ->where('coid = ? AND status = ?', $coid, 'approved')); 111 | $content=$rs['text']; 112 | echo $content; 113 | } -------------------------------------------------------------------------------- /header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | header('keywords=&generator=&template=&pingback=&xmlrpc=&wlw=&commentReply=&rss1=&rss2=&atom='); ?> 13 | 17 | 18 | 19 | <?php $this->archiveTitle(array( 20 | 'category' => _t(' %s '), 21 | 'search' => _t(' %s '), 22 | 'tag' => _t(' %s '), 23 | 'author' => _t(' %s ') 24 | ), '', ' - '); ?><?php $this->options->title(); ?> 25 | 26 | 27 | 30 |
31 |
32 | 78 |
-------------------------------------------------------------------------------- /js/instantclick.min.js: -------------------------------------------------------------------------------- 1 | var InstantClick=function(d,r){var B=navigator.userAgent,E="createTouch" in d,C,e,l,c={},G,L=false,h=false,u=false,A=false,I={},a=false,o=false,g=[],x,F,v,y={fetch:[],receive:[],wait:[],change:[]};function t(R){var Q=R.indexOf("#");if(Q<0){return R}return R.substr(0,Q)}function f(Q){while(Q.nodeName!="A"){Q=Q.parentNode}return Q}function M(Q){do{if(!Q.hasAttribute){break}if(Q.hasAttribute("data-instant")){return false}if(Q.hasAttribute("data-no-instant")){return true}}while(Q=Q.parentNode);return false}function P(Q){do{if(!Q.hasAttribute){break}if(Q.hasAttribute("data-no-instant")){return false}if(Q.hasAttribute("data-instant")){return true}}while(Q=Q.parentNode);return false}function b(S,Q){for(var R=0;R-1&&d.getElementById(U.substr(S+1)),V=0;if(R){while(R.offsetParent){V+=R.offsetTop;R=R.offsetParent}}scrollTo(0,V);C=t(U)}else{scrollTo(0,T)}m();H.done();b("change",false)}function p(){a=false;o=false}function q(Q){n(f(Q.target).href)}function K(R){var Q=f(R.target);Q.addEventListener("mouseout",N);if(!v){n(Q.href)}else{e=Q.href;l=setTimeout(n,v)}}function O(R){var Q=f(R.target);if(F){Q.removeEventListener("mousedown",q)}else{Q.removeEventListener("mouseover",K)}n(Q.href)}function D(Q){if(Q.which>1||Q.metaKey||Q.ctrlKey){return}Q.preventDefault();w(f(Q.target).href)}function N(){if(l){clearTimeout(l);l=false;return}if(!a||o){return}G.abort();p()}function s(){if(G.readyState<4){return}if(G.status==0){return}I.ready=+new Date-I.start;b("receive");if(G.getResponseHeader("Content-Type").match(/\/(x|ht|xht)ml/)){var X=d.implementation.createHTMLDocument("");X.documentElement.innerHTML=G.responseText;h=X.title;A=X.body;var T=t(L);c[T]={body:A,title:h,scrollY:T in c?c[T].scrollY:0};var Q=X.head.children,W=0,U,V;for(var S=Q.length-1;S>=0;S--){U=Q[S];if(U.hasAttribute("data-instant-track")){V=U.getAttribute("href")||U.getAttribute("src")||U.innerHTML;for(var R=g.length-1;R>=0;R--){if(g[R]==V){W++}}}}if(W!=g.length){u=true}}else{u=true}if(o){o=false;w(L)}}function m(Z){var R=d.getElementsByTagName("a"),Y,U=r.protocol+"//"+r.host;for(var V=R.length-1;V>=0;V--){Y=R[V];if(Y.target||Y.hasAttribute("download")||Y.href.indexOf(U+"/")!=0||(Y.href.indexOf("#")>-1&&t(Y.href)==C)||(x?!P(Y):M(Y))){continue}Y.addEventListener("touchstart",O);if(F){Y.addEventListener("mousedown",q)}else{Y.addEventListener("mouseover",K)}Y.addEventListener("click",D)}if(!Z){var S=d.body.getElementsByTagName("script"),X,Q,W,T;for(V=0,j=S.length;V=98){Q=98}else{Y=setTimeout(T,500)}X()}function X(){U.style[aa]="translate("+Q+"%)";if(!d.getElementById(Z.id)){d.body.appendChild(Z)}}function W(){if(d.getElementById(Z.id)){clearTimeout(Y);Q=100;X();Z.style.opacity="0";return}R(Q==100?0:Q);setTimeout(W,0)}function S(){Z.style.left=pageXOffset+"px";Z.style.width=innerWidth+"px";Z.style.top=pageYOffset+"px";var ad="orientation" in window&&Math.abs(orientation)==90,ac=innerWidth/screen[ad?"height":"width"]*2;Z.style[aa]="scaleY("+ac+")"}return{init:ab,start:R,done:W}}();var i="pushState" in history&&(!B.match("Android")||B.match("Chrome/"))&&r.protocol!="file:";function J(){if(C){return}if(!i){b("change",true);return}for(var S=arguments.length-1;S>=0;S--){var Q=arguments[S];if(Q===true){x=true}else{if(Q=="mousedown"){F=true}else{if(typeof Q=="number"){v=Q}}}}C=t(r.href);c[C]={body:d.body,title:d.title,scrollY:pageYOffset};var R=d.head.children,T,U;for(var S=R.length-1;S>=0;S--){T=R[S];if(T.hasAttribute("data-instant-track")){U=T.getAttribute("href")||T.getAttribute("src")||T.innerHTML;g.push(U)}}G=new XMLHttpRequest();G.addEventListener("readystatechange",s);m(true);H.init();b("change",true);addEventListener("popstate",function(){var V=t(r.href);if(V==C){return}if(!(V in c)){r.href=r.href;return}c[C].scrollY=pageYOffset;C=V;k(c[V].title,c[V].body,false,c[V].scrollY)})}function z(Q,R){y[Q].push(R)}return{supported:i,init:J,on:z}}(document,location); -------------------------------------------------------------------------------- /comments.php: -------------------------------------------------------------------------------- 1 | options->CDNURL; 3 | function threadedComments($comments, $options) { 4 | $commentClass = ''; 5 | if ($comments->authorId) { 6 | if ($comments->authorId == $comments->ownerId) { 7 | $commentClass .= ' comment-by-author'; 8 | } else { 9 | $commentClass .= ' comment-by-user'; 10 | } 11 | } 12 | $commentLevelClass = $comments->levels > 0 ? ' comment-child' : ' comment-parent'; 13 | if ($comments->url) { 14 | $author = '' . $comments->author . ''; 15 | } else { 16 | $author = $comments->author; 17 | } 18 | ?> 19 | 20 |
  • 30 |
    31 | commentsAvatarRating; 36 | $hash = md5(strtolower($comments->mail)); 37 | $avatar = $host . $url . $hash . '?s=' . $size . '&r=' . $rating . '&d='; 38 | ?> 39 | 40 | <?php echo $comments->author; ?> 41 |
    42 |

    coid)?>

    43 | content(); ?> 44 |
    45 | 46 | 47 | reply(); ?> 48 |
    49 |
    50 |
    51 | 52 | 53 | children) { ?> 54 |
    55 | threadedComments($options); ?> 56 |
    57 | 58 | 59 |
  • 60 | 61 | 62 |
    63 | comments()->to($comments); ?> 64 | have()): ?> 65 | commentsNum(_t('暂无评论'), _t('仅有 1 条评论'), _t('已有 %d 条评论')); ?> 66 | 67 | listComments(); ?> 68 | 69 | pageNav('«', '»'); ?> 70 | 71 | 72 | 73 | allow('comment')): ?> 74 |
    75 |
    cancelReply(); ?>
    76 |
    77 | user->hasLogin()): ?> 78 |

    user->screenName(); ?>. »

    79 | 80 | remember('author',true) != "" && $this->remember('mail',true) != "") : ?> 81 | 82 |

    83 | remember('author'); ?> 84 | cancelReply(); ?> 85 |

    86 |
    102 |
    103 | 104 |

    此处评论已关闭

    105 | 106 | 175 | options->search_form) && in_array('Pjax', $this->options->search_form)): ?> 176 | 246 | 247 | 248 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0 4 | } 5 | 6 | body, 7 | html { 8 | height: 100% 9 | } 10 | 11 | body { 12 | background: #ddd; 13 | color: #505050; 14 | letter-spacing: .01em; 15 | font-size: 14px; 16 | font-family: Lato, Helvetica Neue, Arial, PingFang SC, Hiragino Sans GB, STHeiti, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif; 17 | -webkit-transition: -webkit-transform .2s cubic-bezier(.4, .01, .165, .99); 18 | transition: transform .2s cubic-bezier(.4, .01, .165, .99), -webkit-transform .2s cubic-bezier(.4, .01, .165, .99); 19 | -webkit-tap-highlight-color: transparent; 20 | -webkit-text-size-adjust: none 21 | } 22 | 23 | h1 { 24 | font-size: 2em 25 | } 26 | 27 | h2 { 28 | font-size: 1.6em 29 | } 30 | 31 | h3 { 32 | font-size: 1.3em 33 | } 34 | 35 | h4 { 36 | font-size: 1em 37 | } 38 | 39 | a { 40 | color: #2479cc; 41 | text-decoration: none 42 | } 43 | 44 | a:hover { 45 | text-decoration: underline 46 | } 47 | 48 | @font-face {font-family: "iconfont"; 49 | src: url('//at.alicdn.com/t/font_7xfbg1ri4tpgb9.eot?t=1484874598852'); /* IE9*/ 50 | src: url('//at.alicdn.com/t/font_7xfbg1ri4tpgb9.eot?t=1484874598852#iefix') format('embedded-opentype'), /* IE6-IE8 */ 51 | url('//at.alicdn.com/t/font_7xfbg1ri4tpgb9.woff?t=1484874598852') format('woff'), /* chrome, firefox */ 52 | url('//at.alicdn.com/t/font_7xfbg1ri4tpgb9.ttf?t=1484874598852') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ 53 | url('//at.alicdn.com/t/font_7xfbg1ri4tpgb9.svg?t=1484874598852#iconfont') format('svg'); /* iOS 4.1- */ 54 | } 55 | 56 | .iconfont { 57 | vertical-align: sub; 58 | font-style: normal; 59 | font-size: 24px; 60 | font-family: iconfont!important 61 | } 62 | 63 | .icon-wechat:before { content: "\e675"; } 64 | 65 | .icon-rss:before { content: "\e600"; } 66 | 67 | .icon-instagram:before { content: "\e616"; } 68 | 69 | .icon-facebook:before { content: "\e63c"; } 70 | 71 | .icon-linkedin:before { content: "\e64d"; } 72 | 73 | .icon-twitter:before { content: "\e6a4"; } 74 | 75 | .icon-aboutus:before { content: "\e601"; } 76 | 77 | .icon-zhihu:before { content: "\e609"; } 78 | 79 | .icon-weibo:before { content: "\e64c"; } 80 | 81 | .icon-google:before { content: "\e6b7"; } 82 | 83 | .icon-music:before { content: "\e612"; } 84 | 85 | .icon-collect:before { content: "\e603"; } 86 | 87 | .icon-home:before { content: "\e604"; } 88 | 89 | .icon-https:before { content: "\e6cb"; } 90 | 91 | .icon-liuyan:before { content: "\e693"; } 92 | 93 | .icon-sousuo:before { content: "\e605"; } 94 | 95 | .icon-links:before { content: "\e606"; } 96 | 97 | .icon-github:before { content: "\ee80"; } 98 | 99 | .icon-qq:before { content: "\e6f6"; } 100 | 101 | .left-col { 102 | position: fixed; 103 | width: 270px; 104 | height: 100%; 105 | background-color: #1fa4b5; 106 | background-size: cover; 107 | background-image: url(images/left-bg.jpg); 108 | text-align: center 109 | } 110 | 111 | .mid-col { 112 | position: absolute; 113 | right: 0; 114 | left: 0; 115 | margin-left: 270px; 116 | min-height: 100%; 117 | background: #fff 118 | } 119 | 120 | #header { 121 | padding: 30px 0; 122 | width: 100%; 123 | height: auto; 124 | border-bottom: none; 125 | color: #eee; 126 | line-height: 30px 127 | } 128 | 129 | #header a { 130 | color: #efefef; 131 | text-shadow: 0 1px #666; 132 | transition: color .3s 133 | } 134 | 135 | #header h1 { 136 | float: none; 137 | font-weight: 300; 138 | font-size: 30px 139 | } 140 | 141 | #header .subtitle { 142 | margin: 5px 0; 143 | color: #ccc 144 | } 145 | 146 | #header a:hover { 147 | color: #2479cc; 148 | text-decoration: none 149 | } 150 | 151 | #header .profilepic a { 152 | display: block; 153 | margin: 10px auto 30px; 154 | width: 9pc; 155 | height: 9pc; 156 | border-radius: 50%; 157 | background-size: 100% 100% 158 | } 159 | 160 | #search { 161 | position: relative; 162 | top: 10px; 163 | z-index: 9999; 164 | margin-left: 10px; 165 | width: 88%; 166 | height: 0; 167 | -webkit-transform: translate3d(-999px, 0, 0); 168 | transform: translate3d(-999px, 0, 0) 169 | } 170 | 171 | #search, 172 | #search input { 173 | transition: all .3s ease-out 174 | } 175 | 176 | #search input { 177 | padding: 0 2%; 178 | width: 100%; 179 | outline-style: none; 180 | border: 0; 181 | border-radius: 0; 182 | background: #fff; 183 | font-size: 20px 184 | } 185 | 186 | .search-show #search { 187 | height: 30px; 188 | -webkit-transform: translate3d(0, 0, 0); 189 | transform: translate3d(0, 0, 0) 190 | } 191 | 192 | .search-show #search input { 193 | height: 40px; 194 | border: 1px solid #ddd; 195 | border-radius: 4px; 196 | text-align: left 197 | } 198 | 199 | #wechat { 200 | position: relative; 201 | top: 10px; 202 | z-index: 9999; 203 | margin-left: 4%; 204 | width: 90%; 205 | height: 0; 206 | -webkit-transform: translate3d(-999px, 0, 0); 207 | transform: translate3d(-999px, 0, 0) 208 | } 209 | 210 | #wechat, 211 | #wechat img { 212 | transition: all .3s ease-out 213 | } 214 | #wechat img { 215 | width: 100%; 216 | } 217 | .wechat-show #wechat { 218 | height: 30px; 219 | -webkit-transform: translate3d(0, 0, 0); 220 | transform: translate3d(0, 0, 0) 221 | } 222 | 223 | 224 | #main-nav { 225 | margin-left: 0 226 | } 227 | 228 | #main-nav i { 229 | margin-right: .6rem 230 | } 231 | 232 | #main-nav, 233 | #sub-nav { 234 | float: none; 235 | margin-top: 15px 236 | } 237 | 238 | #sub-nav .iconfont { 239 | font-size: 30px 240 | } 241 | 242 | #sub-nav i { 243 | margin-right: .2rem 244 | } 245 | 246 | #main-nav ul li { 247 | position: relative; 248 | display: block; 249 | width: 100%; 250 | height: 40px; 251 | font-size: 1pc; 252 | line-height: 40px 253 | } 254 | 255 | #header .subtitle { 256 | color: #ccc 257 | } 258 | 259 | .container { 260 | position: relative; 261 | max-width: 100pc; 262 | min-height: 100% 263 | } 264 | 265 | .mid-col .mid-col-container { 266 | padding: 0 70px 0 40px 267 | } 268 | 269 | 270 | .icon-https { 271 | padding-right: 3px; 272 | color: #46ce4b; 273 | vertical-align: bottom; 274 | font-size: 17px; 275 | } 276 | 277 | article { 278 | position: relative; 279 | padding: 30px 0; 280 | border-top: 1px solid #fff; 281 | border-bottom: 1px solid #ddd 282 | } 283 | 284 | article .meta { 285 | position: relative; 286 | float: right; 287 | width: auto; 288 | color: #555; 289 | text-align: right; 290 | font-size: .9em; 291 | line-height: 2 292 | } 293 | 294 | article .meta a { 295 | color: #999 296 | } 297 | 298 | article h1.title { 299 | margin-bottom: 25px; 300 | color: #333; 301 | font-weight: 300; 302 | font-size: 2em; 303 | line-height: 35px 304 | } 305 | 306 | article h1.title a { 307 | color: #505050; 308 | transition: color .3s 309 | } 310 | 311 | article h1.title a:hover { 312 | color: #2479cc; 313 | text-decoration: none 314 | } 315 | 316 | article button, 317 | article input.runcode { 318 | margin-top: 10px; 319 | padding: .625em .5em; 320 | border: none; 321 | border-radius: 0; 322 | background: #12b0e6; 323 | box-shadow: inset 0 -5px 20px rgba(0, 0, 0, .1); 324 | color: #fff; 325 | font-size: 14px; 326 | line-height: 1; 327 | cursor: pointer; 328 | -webkit-appearance: none 329 | } 330 | 331 | article button { 332 | margin-top: 0 333 | } 334 | 335 | article button:active, 336 | article button:focus, 337 | article button:hover, 338 | article input.runcode:active, 339 | article input.runcode:focus, 340 | article input.runcode:hover { 341 | background: #f6ad08 342 | } 343 | 344 | article strong { 345 | font-weight: 700 346 | } 347 | 348 | article em { 349 | font-style: italic 350 | } 351 | 352 | article blockquote { 353 | overflow: hidden; 354 | margin-top: 10px; 355 | padding: 15px 20px; 356 | border: 2px solid #ddd; 357 | background-color: #f8f8f8 358 | } 359 | 360 | article code { 361 | margin: 0 2px; 362 | padding: 4px 5px; 363 | border-radius: 5px; 364 | background-color: #eee; 365 | vertical-align: middle; 366 | font-size: 80%; 367 | font-family: Consolas, Monaco, Andale Mono, monospace 368 | } 369 | 370 | article pre { 371 | position: relative; 372 | overflow: hidden; 373 | padding: .6em; 374 | border-left: 5px solid #ccc; 375 | background-color: #f8f8f8; 376 | color: #5d6a6a; 377 | white-space: pre-wrap; 378 | word-wrap: break-word; 379 | font-size: 14px; 380 | line-height: 1.6; 381 | word-break: break-word 382 | } 383 | 384 | article img { 385 | display: block; 386 | margin: 10px 0 5px; 387 | padding: 0; 388 | max-width: 100%; 389 | border: 1px solid #ccc 390 | } 391 | 392 | article table { 393 | border: 0; 394 | border-collapse: collapse; 395 | border-spacing: 0 396 | } 397 | 398 | article pre code { 399 | position: relative; 400 | display: block; 401 | margin: 0; 402 | padding: 0; 403 | border: 0; 404 | border-radius: 0; 405 | background-color: transparent; 406 | font-size: 100% 407 | } 408 | 409 | article table td, 410 | article table th { 411 | border: 0 412 | } 413 | 414 | article table th { 415 | padding: 6px 20px; 416 | border-bottom: 2px solid #848484; 417 | text-align: left 418 | } 419 | 420 | article table td { 421 | padding: 6px 20px; 422 | border-bottom: 1px solid #d0d0d0 423 | } 424 | 425 | article .copyright-info { 426 | font-size: 14px 427 | } 428 | 429 | article .expire-tips { 430 | padding: 5px 10px; 431 | border: 1px solid #e2e2e2; 432 | border-left: 5px solid #fff000; 433 | background-color: #ffffc0; 434 | color: #333; 435 | font-size: 15px 436 | } 437 | 438 | article .post-info { 439 | padding-top: 15px; 440 | font-size: 14px; 441 | border-top: 1px dotted #eee 442 | } 443 | 444 | article .entry-content { 445 | color: #5d686f; 446 | word-wrap: break-word; 447 | font-size: 1pc; 448 | line-height: 1.8; 449 | -webkit-font-smoothing: antialiased 450 | } 451 | 452 | article .entry-content h3 { 453 | padding: 3px 0 3px 8px; 454 | border-left: 5px solid #3c8cdd; 455 | background-color: #f9f9f9; 456 | font-size: 1.1em 457 | } 458 | 459 | article img.loaded { 460 | height: auto!important 461 | } 462 | 463 | article .entry-content blockquote, 464 | article .entry-content dl, 465 | article .entry-content h1, 466 | article .entry-content h2, 467 | article .entry-content h3, 468 | article .entry-content h4, 469 | article .entry-content h5, 470 | article .entry-content h6, 471 | article .entry-content iframe, 472 | article .entry-content ol, 473 | article .entry-content p, 474 | article .entry-content pre, 475 | article .entry-content table, 476 | article .entry-content ul { 477 | margin-top: 15px 478 | } 479 | 480 | article pre b.name { 481 | position: absolute; 482 | top: 10px; 483 | right: 10px; 484 | color: #eee; 485 | font-size: 60px; 486 | font-family: Consolas, Liberation Mono, Courier, monospace; 487 | line-height: 1; 488 | pointer-events: none 489 | } 490 | 491 | article .entry-content .date { 492 | color: #999; 493 | font-size: 14px 494 | } 495 | 496 | article .entry-content a:hover { 497 | text-decoration: underline 498 | } 499 | 500 | article .entry-content blockquote>p:first-of-type, 501 | article .entry-content dl dl, 502 | article .entry-content dl ol, 503 | article .entry-content dl ul, 504 | article .entry-content ol dl, 505 | article .entry-content ol ol, 506 | article .entry-content ol ul, 507 | article .entry-content ul dl, 508 | article .entry-content ul ol, 509 | article .entry-content ul ul { 510 | margin-top: 0 511 | } 512 | 513 | article.post-search { 514 | padding-bottom: 0 515 | } 516 | 517 | article .entry-content dl, 518 | article .entry-content ol, 519 | article .entry-content ul { 520 | margin-left: 25px 521 | } 522 | 523 | article .entry-content video { 524 | width: 100%; 525 | height: 100%; 526 | object-fit: fill 527 | } 528 | 529 | .page-navi { 530 | position: relative; 531 | overflow: hidden; 532 | padding: 20px 0; 533 | width: 100%; 534 | border-top: 1px solid #fff; 535 | border-bottom: 1px solid #ddd; 536 | line-height: 20px 537 | } 538 | 539 | .page-navi .prev { 540 | float: left 541 | } 542 | 543 | .page-navi .next { 544 | float: right 545 | } 546 | 547 | .page-navi .center { 548 | margin: auto; 549 | width: 5pc; 550 | text-align: center 551 | } 552 | 553 | .icon-https { 554 | padding-right: 3px; 555 | color: #46ce4b; 556 | vertical-align: bottom; 557 | font-size: 17px 558 | } 559 | 560 | #comments { 561 | margin-top: 15px 562 | } 563 | 564 | #comments .page-navigator { 565 | float: inherit; 566 | margin: 1rem 0 0; 567 | text-align: center 568 | } 569 | 570 | .page-navigator li { 571 | float: none; 572 | display: inline-block; 573 | margin: .4rem 574 | } 575 | 576 | .page-navigator a { 577 | display: block; 578 | padding: .4rem .6rem 579 | } 580 | 581 | .page-navigator .current { 582 | border: 1px solid #ccc; 583 | border-radius: 50%; 584 | background: #fff; 585 | background-color: #fff 586 | } 587 | 588 | .page-navigator .current:hover { 589 | border: 1px solid #2479cc 590 | } 591 | 592 | .entry-content .links { 593 | padding: 0 594 | } 595 | 596 | .entry-content .links li { 597 | overflow: hidden; 598 | padding: 10px 0; 599 | } 600 | 601 | .entry-content .links li span { 602 | padding: 0 0 0 30px; 603 | font-size: 10pt; 604 | color: #999; 605 | } 606 | 607 | .entry-content .links li a:hover { 608 | border-bottom: 1px solid 609 | } 610 | 611 | #comments a { 612 | color: #aaa 613 | } 614 | 615 | #comments a:hover { 616 | color: #2479cc; 617 | text-decoration: none 618 | } 619 | 620 | .comment-list { 621 | margin: 0; 622 | padding-left: 0; 623 | list-style-type: none 624 | } 625 | 626 | .comment-at { 627 | padding: 0 0 10px 0 628 | } 629 | 630 | .comment-close { 631 | margin: 0 auto; 632 | margin-top: 10px; 633 | width: 90%; 634 | text-align: center; 635 | padding: 30px; 636 | border: 1px dashed #eee; 637 | border-radius: 5px; 638 | color: #999 639 | } 640 | 641 | .avatar { 642 | float: left; 643 | display: block; 644 | margin: 1.4rem 1rem 0 0; 645 | width: 40px; 646 | height: 40px; 647 | border-radius: 50%; 648 | border: 1px solid #ddd 649 | } 650 | 651 | .response { 652 | font-size: .9rem 653 | } 654 | 655 | .comment-num, 656 | .response { 657 | color: #999; 658 | font-weight: 400 659 | } 660 | 661 | .comment-num { 662 | font-size: 1.3em 663 | } 664 | 665 | .comment-main { 666 | overflow: hidden; 667 | padding: 1rem 0; 668 | border-bottom: 1px dotted #e0e0e0 669 | } 670 | 671 | .comment-main p { 672 | margin: 0 673 | } 674 | 675 | .cancel-comment-reply, 676 | .comment-meta { 677 | margin-top: 1rem; 678 | color: #aaa; 679 | font-size: .8rem 680 | } 681 | 682 | .comment-meta .comment-reply, 683 | .comment-reply { 684 | float: right 685 | } 686 | 687 | .comment-main:hover .comment-reply { 688 | display: block 689 | } 690 | 691 | .cancel-reply { 692 | margin-left: 10px 693 | } 694 | 695 | .comment-author { 696 | padding: .1rem .25rem; 697 | border-radius: .25rem; 698 | background: #eee; 699 | font-size: .7rem 700 | } 701 | 702 | .comment-reply a:before, 703 | .comment-time:before { 704 | margin: 0 .5rem 705 | } 706 | 707 | .comment-parent>.comment-children { 708 | margin-left: 1rem; 709 | padding-left: 40px; 710 | border-left: 1px dotted #e0e0e0 711 | } 712 | 713 | .form-control { 714 | margin: 15px 0; 715 | padding: 6px 9pt; 716 | width: 100%; 717 | height: 34px; 718 | border: 1px solid #ccc; 719 | border-radius: 4px; 720 | background-color: #fff 721 | } 722 | 723 | .form-control, 724 | output { 725 | display: block; 726 | color: #555; 727 | font-size: 14px; 728 | line-height: 1.42857 729 | } 730 | 731 | .form-control:focus { 732 | outline: 0; 733 | border-color: #2479cc 734 | } 735 | 736 | textarea.form-control { 737 | height: 10rem; 738 | resize: none 739 | } 740 | 741 | .submit { 742 | display: block; 743 | margin: 0 auto; 744 | padding: 0 25px; 745 | height: 36px; 746 | border: 1px solid #ccc; 747 | border-radius: 4px; 748 | background-color: #fff; 749 | color: #999; 750 | text-align: center; 751 | line-height: 36px; 752 | cursor: pointer; 753 | -webkit-transition-duration: .4s; 754 | transition-duration: .4s 755 | } 756 | 757 | .submit:active, 758 | .submit:active:focus, 759 | .submit:focus, 760 | .submit:hover { 761 | outline-style: none; 762 | border-color: #2479cc; 763 | color: #2479cc 764 | } 765 | 766 | #footer { 767 | padding: 15px 70px 15px 40px; 768 | width: auto; 769 | border-top: 1px solid #fff; 770 | text-align: center; 771 | font-size: .9em; 772 | line-height: 2.2 773 | } 774 | 775 | @media screen and (max-width:1024px) { 776 | article { 777 | padding-bottom: 15px 778 | } 779 | .form-control { 780 | width: 95% 781 | } 782 | .left-col { 783 | width: 210px 784 | } 785 | .mid-col { 786 | margin-left: 210px 787 | } 788 | .mid-col .mid-col-container { 789 | padding: 0 20px 790 | } 791 | #footer { 792 | padding: 15px 20px 793 | } 794 | article .entry-content, 795 | article h1.title { 796 | margin-left: 0 797 | } 798 | } 799 | 800 | @media screen and (max-width:640px) { 801 | #header { 802 | margin-left: 0; 803 | padding: 20px 0; 804 | text-align: center 805 | } 806 | #header h1 { 807 | margin-top: 0 808 | } 809 | .form-control { 810 | width: 93% 811 | } 812 | #main-nav { 813 | margin-top: 10px 814 | } 815 | #main-nav ul li { 816 | display: inline; 817 | margin: 0 10px; 818 | text-align: center 819 | } 820 | #header .profilepic a, 821 | #main-nav ul li a i { 822 | display: none 823 | } 824 | #sub-nav .social, 825 | #sub-nav .social a { 826 | margin-bottom: 0 827 | } 828 | article { 829 | padding: 20px 0 830 | } 831 | .left-col { 832 | position: relative; 833 | width: 100%; 834 | height: 100%; 835 | background-color: #1fa4b5; 836 | background-size: cover; 837 | background-position: center -55% 838 | } 839 | #header .subtitle { 840 | margin: 5px 0; 841 | color: #fff 842 | } 843 | .mid-col { 844 | float: none; 845 | margin-left: 0; 846 | width: 100% 847 | } 848 | article .meta { 849 | position: static; 850 | margin-bottom: 10px; 851 | width: auto 852 | } 853 | .mid-col .mid-col-container { 854 | padding: 0 10px 855 | } 856 | .mid-col article .meta { 857 | float: none; 858 | overflow: hidden 859 | } 860 | article .meta .comment, 861 | article .meta .date, 862 | article .meta .tags { 863 | display: inline; 864 | margin-right: 5px; 865 | padding-left: 0 866 | } 867 | article .meta .date { 868 | margin-right: 30px 869 | } 870 | #footer { 871 | padding: 15px 10px 872 | } 873 | #sub-nav .social a { 874 | opacity: 1 875 | } 876 | } 877 | 878 | code[class*=language-], 879 | pre[class*=language-] { 880 | background: 0; 881 | color: #000; 882 | text-align: left; 883 | text-shadow: 0 1px #fff; 884 | word-spacing: normal; 885 | word-wrap: break-word; 886 | -moz-tab-size: 4; 887 | -o-tab-size: 4; 888 | tab-size: 4; 889 | font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace; 890 | line-height: 1.5; 891 | direction: ltr; 892 | word-break: break-word; 893 | -webkit-hyphens: none; 894 | -moz-hyphens: none; 895 | -ms-hyphens: none; 896 | hyphens: none 897 | } 898 | 899 | code[class*=language-]::-moz-selection, 900 | pre[class*=language-]::-moz-selection { 901 | background: #b3d4fc; 902 | text-shadow: none 903 | } 904 | 905 | code[class*=language-]::selection, 906 | pre[class*=language-]::selection { 907 | background: #b3d4fc; 908 | text-shadow: none 909 | } 910 | 911 | @media print { 912 | code[class*=language-], 913 | pre[class*=language-] { 914 | text-shadow: none 915 | } 916 | } 917 | 918 | pre[class*=language-] { 919 | overflow: auto; 920 | margin: .95em 0; 921 | padding: 1em 922 | } 923 | 924 | :not(pre)>code[class*=language-], 925 | pre[class*=language-] { 926 | background: #f8f8f8 927 | } 928 | 929 | :not(pre)>code[class*=language-] { 930 | padding: .1em; 931 | border-radius: .3em; 932 | white-space: normal 933 | } 934 | 935 | .token.cdata, 936 | .token.comment, 937 | .token.doctype, 938 | .token.prolog { 939 | color: #708090 940 | } 941 | 942 | .token.punctuation { 943 | color: #999 944 | } 945 | 946 | .namespace { 947 | opacity: .7 948 | } 949 | 950 | .token.boolean, 951 | .token.constant, 952 | .token.deleted, 953 | .token.number, 954 | .token.property, 955 | .token.symbol, 956 | .token.tag { 957 | color: #905 958 | } 959 | 960 | .token.attr-name, 961 | .token.builtin, 962 | .token.char, 963 | .token.inserted, 964 | .token.selector, 965 | .token.string { 966 | color: #690 967 | } 968 | 969 | .language-css .token.string, 970 | .style .token.string, 971 | .token.entity, 972 | .token.operator, 973 | .token.url { 974 | color: #a67f59 975 | } 976 | 977 | .token.atrule, 978 | .token.attr-value, 979 | .token.keyword { 980 | color: #07a 981 | } 982 | 983 | .token.function { 984 | color: #dd4a68 985 | } 986 | 987 | .token.important, 988 | .token.regex, 989 | .token.variable { 990 | color: #e90 991 | } 992 | 993 | .token.bold, 994 | .token.important { 995 | font-weight: 700 996 | } 997 | 998 | .token.italic { 999 | font-style: italic 1000 | } 1001 | 1002 | .token.entity { 1003 | cursor: help 1004 | } -------------------------------------------------------------------------------- /js/prism.js: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+php+vim */ 2 | var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(m instanceof a)){u.lastIndex=0;var v=u.exec(m),y=1;if(!v&&h&&p!=r.length-1){var b=r[p+1].matchedStr||r[p+1],k=m+b;if(p=m.length)continue;var _=v.index+v[0].length,P=m.length+b.length;y=3,P>=_&&(y=2,k=k.slice(0,P)),m=k}if(v){g&&(f=v[1].length);var w=v.index+f,v=v[0].slice(f),_=w+v.length,S=m.slice(0,w),O=m.slice(_),j=[p,y];S&&j.push(S);var A=new a(i,c?n.tokenize(v,c):v,d,v);j.push(A),O&&j.push(O),Array.prototype.splice.apply(r,j)}}}}}return r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,l=0;r=a[l++];)r(t)}}},a=n.Token=function(e,t,n,a){this.type=e,this.content=t,this.alias=n,this.matchedStr=a||null};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var l={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==l.type&&(l.attributes.spellcheck="true"),e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o="";for(var s in l.attributes)o+=(o?" ":"")+s+'="'+(l.attributes[s]||"")+'"';return"<"+l.tag+' class="'+l.classes.join(" ")+'" '+o+">"+l.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,l=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),l&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",n.highlightAll)),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); 3 | Prism.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=.$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; 4 | Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); 5 | Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; 6 | Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; 7 | Prism.languages.php=Prism.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),Prism.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),Prism.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(e){"php"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(a){return e.tokenStack.push(a),"{{{PHP"+e.tokenStack.length+"}}}"}))}),Prism.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),Prism.hooks.add("after-highlight",function(e){if("php"===e.language){for(var a,n=0;a=e.tokenStack[n];n++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(n+1)+"}}}",Prism.highlight(a,e.grammar,"php").replace(/\$/g,"$$$$"));e.element.innerHTML=e.highlightedCode}}),Prism.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),Prism.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:Prism.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})); 8 | Prism.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,"function":/\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}; --------------------------------------------------------------------------------