├── .gitignore
├── Changelog.md
├── LICENSE
├── README.md
├── README_en.md
├── _config.yml
├── _static_prefix.yml
├── fluid_mod_logo.jpg
├── languages
├── en.yml
├── ja.yml
└── zh-CN.yml
├── layout
├── 404.ejs
├── _partial
│ ├── analytics.ejs
│ ├── comments
│ │ ├── changyan.ejs
│ │ ├── disqus.ejs
│ │ ├── gitalk.ejs
│ │ ├── livere.ejs
│ │ ├── utterances.ejs
│ │ ├── valine.ejs
│ │ └── waline.ejs
│ ├── css.ejs
│ ├── footer.ejs
│ ├── head.ejs
│ ├── nav.ejs
│ ├── paginator.ejs
│ ├── plugins
│ │ ├── anchor.ejs
│ │ ├── busuanzi.ejs
│ │ ├── daovoice.ejs
│ │ ├── fancybox.ejs
│ │ ├── hitokoto.ejs
│ │ ├── local-search.ejs
│ │ ├── math.ejs
│ │ ├── mouse-click.ejs
│ │ ├── prettify.ejs
│ │ ├── random_img.ejs
│ │ ├── smooth_scroll.ejs
│ │ └── typed.ejs
│ ├── scripts.ejs
│ ├── search.ejs
│ ├── sidebar.ejs
│ └── toc.ejs
├── about.ejs
├── archive.ejs
├── categories.ejs
├── category.ejs
├── index.ejs
├── layout.ejs
├── links.ejs
├── page.ejs
├── post.ejs
├── tag.ejs
└── tags.ejs
├── pages
├── about.md
└── local-search.xml
├── scripts
├── helpers.js
├── lazyload.js
├── local-search.js
├── merge-configs.js
├── pages.js
└── utils
│ └── join-path.js
├── snipaste_fluid_mod.png
└── source
├── css
├── _custom
│ └── custom.styl
├── _functions
│ ├── base.styl
│ └── custom.styl
├── _mixins
│ ├── base.styl
│ └── custom.styl
├── _pages
│ ├── _about
│ │ └── about.styl
│ ├── _archive
│ │ └── archive.styl
│ ├── _base
│ │ └── base.styl
│ ├── _category
│ │ ├── categories.styl
│ │ └── category.styl
│ ├── _index
│ │ └── index.styl
│ ├── _post
│ │ └── post.styl
│ ├── _tag
│ │ ├── tag.styl
│ │ └── tags.styl
│ └── pages.styl
├── _variables
│ ├── base.styl
│ └── custom.styl
└── main.styl
├── img
├── apple-touch-icon.png
├── avatar.png
├── default.png
├── favicon.png
├── loading.gif
├── loading.svg
└── police_beian.png
├── js
├── lazyload.js
├── local-search.js
├── main.js
└── post.js
└── lib
├── anchor
└── anchor.min.js
├── backstretch
└── jquery.backstretch.min.js
├── bootstrap
├── css
│ └── bootstrap.min.css
└── js
│ └── bootstrap.min.js
├── fancybox
├── jquery.fancybox.min.css
└── jquery.fancybox.min.js
├── font-awesome
├── css
│ └── all.min.css
└── webfonts
│ ├── fa-brands-400.eot
│ ├── fa-brands-400.svg
│ ├── fa-brands-400.ttf
│ ├── fa-brands-400.woff
│ ├── fa-brands-400.woff2
│ ├── fa-regular-400.eot
│ ├── fa-regular-400.svg
│ ├── fa-regular-400.ttf
│ ├── fa-regular-400.woff
│ ├── fa-regular-400.woff2
│ ├── fa-solid-900.eot
│ ├── fa-solid-900.svg
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff
│ └── fa-solid-900.woff2
├── github-markdown
└── github-markdown.min.css
├── jquery
└── jquery.min.js
├── katex
└── katex.min.css
├── mathjax
└── MathJax.js
├── mdbootstrap
├── css
│ └── mdb.min.css
├── font
│ └── roboto
│ │ ├── Roboto-Bold.eot
│ │ ├── Roboto-Bold.ttf
│ │ ├── Roboto-Bold.woff
│ │ ├── Roboto-Bold.woff2
│ │ ├── Roboto-Light.eot
│ │ ├── Roboto-Light.ttf
│ │ ├── Roboto-Light.woff
│ │ ├── Roboto-Light.woff2
│ │ ├── Roboto-Medium.eot
│ │ ├── Roboto-Medium.ttf
│ │ ├── Roboto-Medium.woff
│ │ ├── Roboto-Medium.woff2
│ │ ├── Roboto-Regular.eot
│ │ ├── Roboto-Regular.ttf
│ │ ├── Roboto-Regular.woff
│ │ ├── Roboto-Regular.woff2
│ │ ├── Roboto-Thin.eot
│ │ ├── Roboto-Thin.ttf
│ │ ├── Roboto-Thin.woff
│ │ └── Roboto-Thin.woff2
└── js
│ └── mdb.min.js
├── popper
└── popper.min.js
├── prettify
├── github-v2.min.css
├── prettify.min.js
├── tomorrow-night-eighties.min.css
├── tomorrow-night.min.css
├── tomorrow.min.css
└── tranquil-heart.min.css
├── smooth-scroll
└── SmoothScroll.min.js
├── tocbot
└── tocbot.min.js
└── typed
└── typed.min.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .DS_Store
3 | *.log
4 | *.iml
5 | yarn.lock
6 | package-lock.json
7 | node_modules/
--------------------------------------------------------------------------------
/Changelog.md:
--------------------------------------------------------------------------------
1 | ### 2020/5/15
2 |
3 | - 更新 valine 版本
4 |
5 | ### 2020/4/15
6 |
7 | - 更新一言接口
8 |
9 | ### 2020/1/12
10 |
11 | - 增加内页友链
12 | - 关于页和友链页自定义开启
13 | - 关于页和友链页自定义开启评论
14 |
15 | ### 2020/1/11
16 |
17 | - 优化 SEO
18 |
19 | ### 2019/12/30
20 |
21 | - 增加 toc 标题自定义文本颜色
22 |
23 | ### 2019/12/26
24 |
25 | - 增加 toc 自定义文本颜色
26 |
27 | ### 2019/12/19
28 |
29 | - 同步原主题更新如下内容
30 | - 增加强制 HTTPS 功能
31 | - 修复搜索功能 BUG
32 |
33 | - 主题日语配置
34 | - 公安备案图标
35 |
36 | - 增加畅言评论插件
37 | - 增加来必力(Livere)评论插件
38 | - 增加 daovoice 在线聊天功能
39 | - 增加鼠标点击动效
40 |
41 | ### 2019/11/14
42 |
43 | - 修复侧边栏滚动样式
44 | - 允许博客侧边导航条滚动
45 |
46 | ### 2019/11/12
47 |
48 | - 修复部分资源引用链接为 full_url_for 和 url_for
49 | - 修复 local-search 相关 bug
50 |
51 | ### 2019/11/07
52 |
53 | - lazyload 可自定义图片
54 |
55 | ### 2019/11/03
56 |
57 | - 文章页前后文章按钮
58 | - 版权声明样式优化
59 |
60 | ### 2019/11/02
61 |
62 | - 随机背景图片
63 |
64 | ### 2019/10/31
65 |
66 | - 更多的主题颜色自定义
67 | - 更全面的网页统计
68 | - 侧边栏功能,显示基本信息和友链
69 | - 背景图可选全屏,背景飘雪效果
70 | - 首页文章列表可开关图片显示,可选显示随机图片
71 | - 文章显示字数统计,显示访问统计
72 | - 文章页图片灯箱效果
73 | - 分页按钮增加页码显示,分类页面、标签页面增加分页按钮
74 | - 页脚可选显示博客版权、运行时间、网站访问量、一言等
75 | - 关于页面增加评论框显示
76 | - 窗口监视效果
77 | - 优化 disqus 加载
78 |
79 | ### 2019/10/29
80 |
81 | - 增加 LaTeX 语法公式的支持
82 |
83 | ### 2019/10/26
84 |
85 | - 增加页面平滑滚动效果
86 | - 增加 PV 与 UV 统计
87 |
88 | ### 2019/10/20
89 |
90 | - 增加谷歌统计配置
91 | - 代码行号可以通过 Hexo 配置关闭
92 |
93 | ### 2019/10/14
94 |
95 | - 固定 Banner 在 iOS 和 Safari 环境下不再生效
96 | - 调整文章标题与日期的间隔
97 |
98 | ### 2019/9/17
99 |
100 | - 替换新的 favicon
101 |
102 | ### 2019/9/16
103 |
104 | - 新增图片懒加载功能
105 | - 优化首页摘要问题
106 |
107 | ### 2019/9/13
108 |
109 | - 修复 valine 加载问题
110 | - 移除顶部进度条
111 | - 统一默认 banner_img
112 | - 增加英文 README
113 |
114 | ### 2019/9/11
115 |
116 | - 增加 `_static_prefix.yml` 作为资源 URL 独立配置
117 | - 移除 `source_base_path` 配置项
118 | - 增加配置项 `about.md_path` 用于指定 about.md 的路径
119 |
120 | ### 2019/9/10
121 |
122 | - 增加向下滚屏与向顶部滚屏的按钮
123 | - 优化导航栏配置
124 |
125 | ### 2019/9/9
126 |
127 | - 更名为 Fluid 并迁移至 Fluid-dev organization
128 | - 增加一组配置项 `post_meta`,可配置首页一些元素的可见性
129 |
130 | ### 2019/9/3
131 |
132 | - 增加一个配置项 `source_base_path` ,可配置资源文件的父级路径
133 | - 增加覆盖配置功能,彻底解决升级时的配置冲突
134 | - zh_CN.yml 修改为 zh-CN.yml
135 | - 修复 about.md 路径引用问题
136 |
137 | ### 2019/8/30
138 |
139 | - 支持 i18n (zh-Hans,en)
140 | - 修复 #63
141 |
142 | ### 2019/8/22
143 |
144 | - 新增 Utterances、Gitalk 评论系统
145 |
146 | ### 2019/8/21
147 |
148 | - 新增本地搜索功能
149 |
150 | ### 2019/8/17
151 |
152 | - 新增页面右上角的加载进度条
153 | - 新增配置项用于调整主题颜色
154 | - 优化一些样式
155 |
156 | ### 2019/8/15
157 |
158 | - 使用 stylus 重构所有自定义 css
159 | - 新增标签归档、分类归档,重构归档页
160 |
161 | ### 2019/8/9
162 |
163 | - 移动端适配,调整文章和 TOC 左右边
164 |
165 | ### 2019/8/8
166 |
167 | - 文章图片增加阴影效果
168 | - 拆分 page 属性
169 | - 新增 404 页面
170 |
171 | ### 2019/8/2
172 |
173 | - 新增 about 页自定义功能
174 | - 调整 about 页 icon 的配置写法
175 | - 增加百度统计
176 | - 调整 slogan 和标题
177 | - 调整代码高亮样式的优先级
178 | - 移动端优化
179 |
180 | ### 2019/8/1
181 |
182 | - 新增 subtitle 打字机效果
183 | - 优化文章页中锚的效果
184 | - 文章页底部新增支持 HTML 的 custom 区域,可自定义展示赞赏码等内容
185 | - 优化配置文件和目录结构
186 | - package 升级并移至本地
187 |
188 | ### 2019/7/31
189 |
190 | 结合 @zkqiang 的优化建议:
191 |
192 | - 文章页样式更换为 Github 风格
193 | - 增加页脚备案信息
194 | - 优化配置文件结构
195 | - 页面细节优化
196 |
197 | ### 2019/6/6
198 |
199 | - 完善 archive 渲染逻辑
200 |
201 | ### 2019/3/15
202 |
203 | - 重新设计基本完成,特别感谢 @zhugaoqi 同学的设计指导;
204 | - 将所有第三方库、图片替换为 CDN 引用,极大精简仓库大小;
205 | - 重新设计 archive 渲染逻辑;
206 | - 统一文章页布局,新增文章版权声明;
207 | - 精简页面,配置项;
208 | - 老版本逐渐放弃维护,代码归档在 `v0.9` 分支;
209 |
210 | ### 2019/1/28
211 |
212 | 1. _config.yml结构大改,图片路径统一为相对于根目录
213 | 2. 可自定义index、archive、post、about页面的顶部图像高度(0 - 100)
214 | 3. 文章页顶部图像可统一设置,也可文章内单独设置。优先级:文章内banner_img属性 > 主题配置
215 | 4. 新增一种文章页布局,在配置文件中可选(post.layout)
216 | 5. 新增默认摘要功能,可配置是否开启、默认字数。优先级:文章内设置 > 主题配置
217 | 6. 可自定义首页文章date、tags是否显示 (@喜欢首页只罗列文章标题的同学)
218 | 7. 优化toc、字体尺寸,修复断行错误、图片超宽等问题
219 | 8. 优化渲染逻辑,去除冗余js
220 | 9. 新增多个bug
221 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Fluid-dev organization
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README_en.md:
--------------------------------------------------------------------------------
1 |
10 | <% var post_url = url_for(post.path) %>
11 | <% if(theme.index.post_img.enable) { %>
12 | <% if(post.index_img != null) { %>
13 |
18 | <% } else { %>
19 |
24 | <% } %>
25 |
26 | <% } else { %>
27 |
66 |
67 | <% }) %>
68 | <%- partial('_partial/paginator') %>
--------------------------------------------------------------------------------
/layout/layout.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%
4 | var subtitle = page.subtitle || page.title
5 | var banner_img = page.banner_img || theme.index.banner_img
6 | var banner_img_height = page.banner_img_height || theme.index.banner_img_height
7 | %>
8 | <%- partial('_partial/head', {banner_img: banner_img}) %>
9 |
10 |
11 | <%- partial('_partial/nav') %>
12 |
13 |
14 |
15 |
16 |
17 | <% if(theme.fun_features.typing.enable == false) { %>
18 | <%- subtitle %>
19 | <% } %>
20 |
21 | <% if(is_post()) { %>
22 |
23 |
24 |
25 | <%- full_date(page.date, theme.post.date_format) %> |
26 |
27 | <%= wordcount(page.content) %>字 |
28 |
29 | <%= min2read(page.content) %>分钟
30 | <% if(theme.post.pageview) { %>
31 |
32 | |
33 |
34 | 次
35 |
36 | <% } %>
37 |
38 | <% } %>
39 |
40 | <% if (theme.scroll_down_arrow.enable && theme.scroll_down_arrow.banner_height_limit <= banner_img_height) { %>
41 |
42 |
43 |
44 | <% } %>
45 |
46 |
47 |
48 |
49 |
50 | <% if(is_post() || page.layout == '404') { %>
51 | <%- body %>
52 | <% } else { %>
53 |
54 |
55 | <% if(page.layout == 'about') { %>
56 |
57 |
 %>)
60 |
61 | <% } %>
62 |
63 |
64 |
65 | <%- body %>
66 |
67 |
68 |
69 |
70 |
71 | <% } %>
72 |
73 | <%- partial('_partial/sidebar') %>
74 | <% if (theme.scroll_top_arrow.enable) { %>
75 |
76 |
77 |
78 | <% } %>
79 | <% if(theme.search.enable) { %>
80 | <%- partial('_partial/search') %>
81 | <% } %>
82 | <%- partial('_partial/footer', { data: { 'subtitle': subtitle } }) %>
83 | <% if(banner_img_height === 100 && theme.full_banner) { %>
84 |
89 | <% } %>
90 |
91 |
--------------------------------------------------------------------------------
/layout/links.ejs:
--------------------------------------------------------------------------------
1 | <%
2 | page.layout = "links"
3 | page.title = __('links.title')
4 | page.subtitle = theme.links.subtitle || __('links.subtitle')
5 | page.banner_img = theme.links.banner_img
6 | page.banner_img_height = theme.links.banner_img_height
7 | %>
8 |
9 | <% if(theme.links.enable) { %>
10 |
11 | <% for(const each in theme.links.items) { %>
12 |
22 | <% } %>
23 |
24 |
25 |
26 |
27 |
34 |
35 | <% } %>
--------------------------------------------------------------------------------
/layout/page.ejs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/layout/page.ejs
--------------------------------------------------------------------------------
/layout/post.ejs:
--------------------------------------------------------------------------------
1 | <%
2 | if (!page.banner_img) {
3 | page.banner_img = theme.post.banner_img
4 | }
5 | page.banner_img_height = theme.post.banner_img_height
6 | %>
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | <%- page.content %>
16 |
17 |
18 |
19 |
20 |
21 | <% if (page.categories.length != 0) { %>
22 |
23 |
24 | <% page.categories.each(function(cate) { %>
25 | <%= cate.name %>
26 |
27 | <% }) %>
28 |
29 | <% } %>
30 |
31 |
32 | <% page.tags.each(function(tag) { %>
33 | <%= tag.name %>
34 | <% }) %>
35 |
36 |
37 | <% if(theme.post.copyright.enable) { %>
38 |
39 |
40 |
41 |
版权声明:<%- theme.post.copyright.content %>
42 |
43 | <% } %>
44 | <% if (page.prev || page.next){ %>
45 |
61 | <% } %>
62 |
63 |
64 |
65 |
66 | <% if(theme.post.custom.enable) { %>
67 |
68 |
69 | <%- theme.post.custom.content %>
70 |
71 |
72 | <% } %>
73 |
74 |
75 |
76 |
83 |
84 |
85 |
86 |
87 |
88 | <%- partial('_partial/toc') %>
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/layout/tag.ejs:
--------------------------------------------------------------------------------
1 | <%
2 | page.layout = "tag"
3 | page.title = [__('tag.title'), page.tag].join(" - ")
4 | page.subtitle = [__('tag.subtitle'), page.tag].join(" - ")
5 | page.banner_img = theme.tag.banner_img
6 | page.banner_img_height = theme.tag.banner_img_height
7 |
8 | var date_cursor = 'xxx'
9 | %>
10 |
11 |
12 |
<%= __('pageTotal', page.posts.length) %>
13 |
14 | <% page.posts.each(function (post) { %>
15 | <% if(date(post.date, "YYYY") != date_cursor) { %>
16 | <% date_cursor = date(post.date, "YYYY") %>
17 |
<%= date_cursor %>
18 | <% } %>
19 |
20 | <%= post.title %>
21 | <%- date(post.date, "MM-DD") %>
22 |
23 | <% }) %>
24 |
25 | <%- partial('_partial/paginator') %>
--------------------------------------------------------------------------------
/layout/tags.ejs:
--------------------------------------------------------------------------------
1 | <%
2 | page.layout = "tags"
3 | page.title = __('tag.title')
4 | page.subtitle = __('tag.subtitle')
5 | page.banner_img = theme.tag.banner_img
6 | page.banner_img_height = theme.tag.banner_img_height
7 |
8 | var min_font = theme.tag.tagcloud.min_font || 15
9 | var max_font = theme.tag.tagcloud.max_font || 30
10 | var unit = theme.tag.tagcloud.unit || 'px'
11 | var start_color = theme.tag.tagcloud.start_color || '#BBBBEE'
12 | var end_color = theme.tag.tagcloud.end_color || '#337ab7'
13 | %>
14 |
15 |
16 | <%- tagcloud({
17 | min_font: min_font,
18 | max_font: max_font,
19 | amount: 999,
20 | unit: unit,
21 | color: true,
22 | start_color,
23 | end_color
24 | }) %>
25 |
--------------------------------------------------------------------------------
/pages/about.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/pages/about.md
--------------------------------------------------------------------------------
/pages/local-search.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% if posts %}
4 | {% for post in posts.toArray() %}
5 | {% if post.indexing == undefined or post.indexing %}
6 |
7 | {{ post.title }}
8 |
9 | {{ (url + post.path) | uriencode }}
10 | {% if content %}
11 |
12 | {% endif %}
13 | {% if post.categories and post.categories.length>0 %}
14 |
15 | {% for cate in post.categories.toArray() %}
16 | {{ cate.name }}
17 | {% endfor %}
18 |
19 | {% endif %}
20 | {% if post.tags and post.tags.length>0 %}
21 |
22 | {% for tag in post.tags.toArray() %}
23 | {{ tag.name }}
24 | {% endfor %}
25 |
26 | {% endif %}
27 |
28 | {% endif %}
29 | {% endfor %}
30 | {% endif %}
31 | {% if pages %}
32 | {% for page in pages.toArray() %}
33 | {% if post.indexing == undefined or post.indexing %}
34 |
35 | {{ page.title }}
36 |
37 | {{ (url + page.path) | uriencode }}
38 | {% if content %}
39 |
40 | {% endif %}
41 |
42 | {% endif %}
43 | {% endfor %}
44 | {% endif %}
45 |
--------------------------------------------------------------------------------
/scripts/helpers.js:
--------------------------------------------------------------------------------
1 | const joinPath = require('./utils/join-path');
2 |
3 | hexo.extend.helper.register('css_ex', function (base, relative, ex = "") {
4 | return '
';
5 | });
6 |
7 | hexo.extend.helper.register('js_ex', function (base, relative, ex = "") {
8 | return '';
9 | });
10 |
11 | hexo.extend.helper.register('js_async', function (base, relative, ex = "") {
12 | return '';
13 | });
--------------------------------------------------------------------------------
/scripts/lazyload.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports.lazyload = function (hexo) {
3 | var config = hexo.theme.config;
4 | var loadingImage = config.lazyload.loadingimg;
5 | if (!config.lazyload || !config.lazyload.enable) {
6 | return;
7 | }
8 | if (config.lazyload.onlypost) {
9 | hexo.extend.filter.register('after_post_render', function (data) {
10 | data.content = lazyProcess.call(this, data.content, loadingImage);
11 | return data;
12 | });
13 | } else {
14 | hexo.extend.filter.register('after_render:html', function (str, data) {
15 | return lazyProcess.call(this, str, loadingImage);
16 | });
17 | }
18 | };
19 |
20 | function lazyProcess(htmlContent, loadingImage) {
21 | return htmlContent.replace(/
![]()
/gi, (str, p1, p2) => {
22 | if (/srcset=/gi.test(str)) {
23 | return str;
24 | }
25 | return str.replace(p2, `${p2}" srcset="${loadingImage}`);
26 | });
27 | }
--------------------------------------------------------------------------------
/scripts/local-search.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | hexo.extend.generator.register('_hexo_generator_search', function (locals) {
3 | var config = this.theme.config;
4 | if (!config.search.enable) {
5 | return;
6 | }
7 |
8 | var nunjucks = require('nunjucks');
9 | var env = new nunjucks.Environment();
10 | var pathFn = require('path');
11 | var fs = require('fs');
12 |
13 | env.addFilter('uriencode', function (str) {
14 | return encodeURI(str);
15 | });
16 |
17 | env.addFilter('noControlChars', function (str) {
18 | return str && str.replace(/[\x00-\x1F\x7F]/g, '');
19 | });
20 |
21 | var searchTmplSrc = pathFn.join(__dirname, '../pages/local-search.xml');
22 | var searchTmpl = nunjucks.compile(fs.readFileSync(searchTmplSrc, 'utf8'), env);
23 |
24 | var searchConfig = config.search;
25 | var template = searchTmpl;
26 | var searchField = searchConfig.field;
27 | var content = searchConfig.content || true;
28 |
29 | var posts, pages;
30 |
31 | if (searchField.trim() != '') {
32 | searchField = searchField.trim();
33 | if (searchField == 'post') {
34 | posts = locals.posts.sort('-date');
35 | } else if (searchField == 'page') {
36 | pages = locals.pages;
37 | } else {
38 | posts = locals.posts.sort('-date');
39 | pages = locals.pages;
40 | }
41 | } else {
42 | posts = locals.posts.sort('-date');
43 | }
44 |
45 | var xml = template.render({
46 | config: config,
47 | posts: posts,
48 | pages: pages,
49 | content: content,
50 | url: hexo.config.root
51 | });
52 |
53 | return {
54 | path: searchConfig.generatePath,
55 | data: xml
56 | };
57 | });
--------------------------------------------------------------------------------
/scripts/merge-configs.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const yaml = require('js-yaml');
4 |
5 | hexo.on('generateBefore', function () {
6 | if (hexo.locals.get) {
7 | var data = hexo.locals.get('data');
8 | sourceConfig = {};
9 | if (data && data.fluid_config) {
10 | sourceConfig = data.fluid_config;
11 | }
12 | staticPrefix = {};
13 | if (data && data.fluid_static_prefix) {
14 | staticPrefix = data.fluid_static_prefix;
15 | }
16 | }
17 |
18 | /**
19 | * Merge configs in /source/_data/fluid_static_prefix.yml into hexo.theme.config.
20 | */
21 | const configPath = path.join(__dirname, '../_static_prefix.yml');
22 | const yamlDoc = yaml.safeLoad(fs.readFileSync(configPath, 'utf8'));
23 | hexo.theme.config.static_prefix = Object.assign({}, yamlDoc, staticPrefix);
24 | this.log.debug("Fluid: theme static_prefix config merged");
25 |
26 | /**
27 | * Merge configs in hexo.config.theme_config and /source/_data/fluid_config.yml into hexo.theme.config.
28 | */
29 | hexo.theme.config = Object.assign({}, hexo.theme.config, sourceConfig, hexo.config.theme_config);
30 | this.log.debug("Fluid: theme config merged");
31 |
32 | /**
33 | * Trigger action that requires configuration data.
34 | */
35 | require("./lazyload").lazyload(hexo);
36 | });
--------------------------------------------------------------------------------
/scripts/pages.js:
--------------------------------------------------------------------------------
1 | // generate 404 page
2 | hexo.extend.generator.register('_404', function (locals) {
3 | return {
4 | path: '404.html',
5 | data: locals.theme,
6 | layout: '404'
7 | };
8 | });
9 |
10 | // generate tags Page
11 | hexo.extend.generator.register('_tags', function (locals) {
12 | return {
13 | path: 'tags/index.html',
14 | data: locals.theme,
15 | layout: 'tags'
16 | };
17 | });
18 |
19 | // generate categories Page
20 | hexo.extend.generator.register('_categories', function (locals) {
21 | return {
22 | path: 'categories/index.html',
23 | data: locals.theme,
24 | layout: 'categories'
25 | };
26 | });
27 |
28 | // generate links page
29 | hexo.extend.generator.register('_links', function (locals) {
30 | return {
31 | path: 'links/index.html',
32 | data: locals.theme,
33 | layout: 'links'
34 | };
35 | });
36 |
37 | // generate about page
38 | hexo.extend.generator.register('_about', function (locals) {
39 | return {
40 | path: 'about/index.html',
41 | data: locals.theme,
42 | layout: 'about'
43 | };
44 | });
45 | const path = require('path');
46 | hexo.extend.helper.register('about_body', function () {
47 | var rootPath = path.join(__dirname, '../');
48 | var mdPath = path.join(rootPath, hexo.theme.config.about.md_path);
49 | return hexo.render.renderSync({ path: mdPath });
50 | });
51 |
--------------------------------------------------------------------------------
/scripts/utils/join-path.js:
--------------------------------------------------------------------------------
1 | const joinPath = function (base, relative) {
2 | return relative
3 | ? base.replace(/\/+$/, '') + '/' + relative.replace(/^\/+/, '')
4 | : base;
5 | };
6 |
7 | module.exports = joinPath;
8 |
--------------------------------------------------------------------------------
/snipaste_fluid_mod.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/snipaste_fluid_mod.png
--------------------------------------------------------------------------------
/source/css/_custom/custom.styl:
--------------------------------------------------------------------------------
1 | /* Custom styles */
--------------------------------------------------------------------------------
/source/css/_functions/base.styl:
--------------------------------------------------------------------------------
1 | theme-config(config, predef)
2 | unquote(hexo-config(config) ? hexo-config(config):predef)
3 |
4 | @import "custom"
--------------------------------------------------------------------------------
/source/css/_functions/custom.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_functions/custom.styl
--------------------------------------------------------------------------------
/source/css/_mixins/base.styl:
--------------------------------------------------------------------------------
1 | @import "custom"
--------------------------------------------------------------------------------
/source/css/_mixins/custom.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_mixins/custom.styl
--------------------------------------------------------------------------------
/source/css/_pages/_about/about.styl:
--------------------------------------------------------------------------------
1 | .about-avatar
2 | position relative
3 | margin -8rem auto 1rem
4 | max-width 10rem
5 | z-index 3
--------------------------------------------------------------------------------
/source/css/_pages/_archive/archive.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_pages/_archive/archive.styl
--------------------------------------------------------------------------------
/source/css/_pages/_base/base.styl:
--------------------------------------------------------------------------------
1 | html, body, header, .view
2 | height 100%
3 | overflow-wrap break-word
4 |
5 | body
6 | background-color $body-bg-color
7 | color $text-color
8 |
9 | a
10 | color $link-color
11 |
12 | &:hover
13 | color $link-hover-color
14 |
15 | .hover-with-bg
16 | display inline-block
17 | padding: .45rem
18 |
19 | &:hover
20 | background-color $link-hover-bg!important
21 |
22 | #board
23 | position relative
24 | margin-top -3rem
25 | background-color $board-bg-color
26 | border-radius 0.5rem
27 | z-index 3
28 |
29 | @media (max-width: 768px)
30 | header
31 | .h2
32 | font-size 1.5rem
33 |
34 | .nopadding-md
35 | padding-left 0 !important
36 | padding-right 0 !important
37 |
38 | .row
39 | padding-top 0.5rem
40 | padding-bottom 0.5rem
41 |
42 | #local-search-result
43 | .search-list-title
44 | border-left 3px solid #0d47a1
45 |
46 | .search-list-content
47 | padding 0 1.25rem
48 |
49 | /* Rewrite github-markdown.css */
50 |
51 | .markdown-body hr
52 | height .2em
53 | margin 2rem 0
54 |
55 | .markdown-body strong
56 | font-weight bold
57 |
58 | /* Rewrite mdb.css */
59 |
60 | .list-group-item
61 | border 0
62 |
63 | .page-link
64 | font-size 1.1rem
65 |
66 | /* Navbar */
67 |
68 | .navbar
69 | background-color transparent
70 | font-size 0.875rem
71 | color $navbar-text-color
72 |
73 | a
74 | color $navbar-text-color
75 |
76 | &:hover
77 | background-color rgba(0, 0, 0, 0.1)
78 |
79 | .navbar-custom
80 | color $navbar-text-color
81 |
82 | a
83 | color $navbar-text-color
84 |
85 | .top-nav-collapse
86 | background-color $navbar-bg-color
87 |
88 | .navbar-col-show
89 | background-color $navbar-bg-color
90 |
91 | @media (max-width: 768px)
92 | .navbar
93 | font-size 1rem
94 | line-height 2.5rem
95 |
96 | .scroll-down-bar
97 | position absolute
98 | width 100%
99 | font-size 2rem
100 | height 8rem
101 | text-align center
102 | cursor pointer
103 | bottom 0
104 |
105 | .scroll-down-arrow
106 | position absolute
107 | padding-top 2rem
108 | color #ff
109 | -webkit-transform: translateZ(0);
110 | -moz-transform: translateZ(0);
111 | -ms-transform: translateZ(0);
112 | -o-transform: translateZ(0);
113 | transform: translateZ(0);
114 | -webkit-animation scroll-down 1.5s infinite
115 | animation scroll-down 1.5s infinite
116 |
117 | #scroll-top-button
118 | position fixed
119 | background #fff
120 | border-radius 4px
121 | width 40px
122 | height 40px
123 | bottom -60px
124 | -webkit-transition bottom .3s ease
125 | -moz-transform bottom .3s ease
126 | -ms-transform bottom .3s ease
127 | -o-transform bottom .3s ease
128 | transition bottom .3s ease
129 | outline none
130 | display flex
131 | display -webkit-flex
132 | align-items center
133 |
134 | #scroll-top-button i
135 | -webkit-transform translateZ(0)
136 | -moz-transform translateZ(0)
137 | -ms-transform translateZ(0)
138 | -o-transform translateZ(0)
139 | transform translateZ(0)
140 |
141 | #scroll-top-button:hover i, #scroll-top-button:active i
142 | -webkit-animation-name scroll-top
143 | animation-name scroll-top
144 | -webkit-animation-duration 1s
145 | animation-duration 1s
146 | -webkit-animation-delay .1s
147 | animation-delay .1s
148 | -webkit-animation-timing-function ease-in-out
149 | animation-timing-function ease-in-out
150 | -webkit-animation-iteration-count infinite
151 | animation-iteration-count infinite
152 | -webkit-animation-fill-mode forwards
153 | animation-fill-mode forwards
154 | -webkit-animation-direction alternate
155 | animation-direction alternate
156 |
157 | .scroll-top-arrow
158 | margin auto
159 | font-size 24px
160 | color #8590AB
161 |
162 | .animated-icon
163 | width 30px
164 | height 20px
165 | position relative
166 | margin 0
167 | -webkit-transform rotate(0deg)
168 | -moz-transform rotate(0deg)
169 | -o-transform rotate(0deg)
170 | transform rotate(0deg)
171 | -webkit-transition .5s ease-in-out
172 | -moz-transition .5s ease-in-out
173 | -o-transition .5s ease-in-out
174 | transition .5s ease-in-out
175 | cursor pointer
176 |
177 | span
178 | display block
179 | position absolute
180 | height 3px
181 | width 100%
182 | border-radius 9px
183 | opacity 1
184 | left 0
185 | -webkit-transform rotate(0deg)
186 | -moz-transform rotate(0deg)
187 | -o-transform rotate(0deg)
188 | transform rotate(0deg)
189 | -webkit-transition .25s ease-in-out
190 | -moz-transition .25s ease-in-out
191 | -o-transition .25s ease-in-out
192 | transition .25s ease-in-out
193 | background #ffffff
194 |
195 | &:nth-child(1)
196 | top 0
197 |
198 | &:nth-child(2)
199 | top 10px
200 |
201 | &:nth-child(3)
202 | top 20px
203 |
204 | &.open
205 | span
206 | &:nth-child(1)
207 | top 11px
208 | -webkit-transform rotate(135deg)
209 | -moz-transform rotate(135deg)
210 | -o-transform rotate(135deg)
211 | transform rotate(135deg)
212 |
213 | &:nth-child(2)
214 | opacity 0
215 | left -60px
216 |
217 | &:nth-child(3)
218 | top 11px
219 | -webkit-transform rotate(-135deg)
220 | -moz-transform rotate(-135deg)
221 | -o-transform rotate(-135deg)
222 | transform rotate(-135deg)
223 |
224 |
225 | @keyframes scroll-down
226 | 0%
227 | opacity 0.8
228 | top 0
229 | 50%
230 | opacity 0.4
231 | top -1em
232 | 100%
233 | opacity 0.8
234 | top 0
235 |
236 | @keyframes scroll-top
237 | 0%
238 | -webkit-transform translateY(0)
239 | transform translateY(0)
240 | 50%
241 | -webkit-transform translateY(-0.35rem)
242 | transform translateY(-0.35rem)
243 | 100%
244 | -webkit-transform translateY(0)
245 | transform translateY(0)
246 |
247 |
248 | /* pagination */
249 | .pagination a, .pagination .current
250 | outline 0
251 | border 0
252 | background-color transparent
253 | font-size .9rem
254 | padding .5rem .75rem
255 | line-height 1.25
256 | -webkit-border-radius .125rem
257 | border-radius .125rem
258 | -webkit-transition all .3s linear
259 | -o-transition all .3s linear
260 | transition all .3s linear
261 |
262 | .pagination a:hover, .pagination .current
263 | background-color #eee
264 |
265 |
266 | /* Footer police 添加备案图标 */
267 | a.police-beian
268 | position relative
269 | overflow hidden
270 | display inline-flex
271 | align-items center
272 | justify-content center
273 |
274 | img
275 | margin 0 3px
276 | width 18px
277 | height 18px
278 |
279 | @media (max-width: 320px)
280 | a.police-beian
281 | span.police-beian-sep
282 | display none
283 |
284 |
285 | /* 友链页 */
286 | @media (max-width: 768px)
287 | .links
288 | margin-left .5em
289 | margin-right .5em
290 |
291 | .link-card
292 | box-shadow none
293 |
294 | &:hover
295 | box-shadow: 0 0 25px 0 rgba(0,0,0,0.16);
296 | z-index 1
297 |
298 | &-title
299 | overflow: hidden;
300 | text-overflow: ellipsis;
301 | white-space: nowrap;
302 |
303 | &-text
304 | height: 3em;
305 | display: -webkit-box;
306 | -webkit-box-orient: vertical;
307 | -webkit-line-clamp: 2;
308 | text-overflow: ellipsis;
309 | overflow: hidden;
310 |
311 |
312 | /* 雪花 */
313 | .snow
314 | position fixed
315 | z-index -1
316 | top 0
317 | left 0
318 |
319 |
320 | /* 侧边栏 */
321 | #sidebar
322 | position fixed
323 | top 0
324 | left 0
325 | z-index 1040
326 | overflow-y auto
327 | width 300px
328 | height 100%
329 | color $sidebar-text-color
330 | background-color $sidebar-background-color
331 | -webkit-transition all .2s ease-in-out
332 | -o-transition all .2s ease-in-out
333 | transition all .2s ease-in
334 | -webkit-box-shadow 0.25rem 0px 0.25rem 0px rgba(175, 175, 175, 0.6)
335 | box-shadow 0.25rem 0px 0.25rem 0px rgba(175, 175, 175, 0.6)
336 | overflow -moz-scrollbars-none
337 | scrollbar-width none
338 | -ms-overflow-style none
339 |
340 | #sidebar::-webkit-scrollbar
341 | display none
342 |
343 | .sidebar-hide
344 | margin-left -300px
345 | -webkit-box-shadow none !important
346 | box-shadow none !important
347 |
348 | .sidebar-button
349 | position fixed
350 | z-index 3
351 | /* 按钮背景 */
352 | padding .5rem .7rem .5rem .3rem
353 | margin 2rem 0 2rem 0
354 | border-radius 0 3rem 3rem 0
355 | background-color rgba(255, 255, 255, 0.4)
356 | /* padding 1rem */
357 | bottom 0
358 | color $sidebar-button-color
359 | cursor pointer
360 | -webkit-transition all .2s ease-in-out
361 | -o-transition all .2s ease-in-out
362 | transition all .2s ease-in-out
363 |
364 | .sidebar-button:hover
365 | color $link-hover-color
366 | -webkit-transition all .2s ease-in-out
367 | -o-transition all .2s ease-in-out
368 | transition all .2s ease-in-out
369 |
370 | .sidebar-button i
371 | transform rotateZ(180deg)
372 |
373 | .sidebar-button-shift
374 | left 0
375 | color $sidebar-button-shift-color
376 | text-shadow $sidebar-button-shift-shadow
377 |
378 | .sidebar-button-shift i
379 | transform rotateZ(0deg)
380 |
381 | .sidebar-overlay
382 | display none
383 | width 100%
384 | height 180px
385 | background-color #fe91b4
386 | position absolute
387 |
388 | .sidebar-intrude
389 | margin 60px auto 0 auto
390 | z-index 3
391 |
392 | .sidebar-avatar
393 | position relative
394 | border $sidebar-avatar-border
395 | border-radius 300px
396 | width 128px
397 | height 128px
398 | margin 0 auto
399 | position relative
400 | overflow hidden
401 | background-color #88acdb
402 | -webkit-transition all .2s ease-in
403 | display -webkit-box
404 | -webkit-box-pack center
405 | -webkit-box-align center
406 | text-align center;
407 |
408 | .sidebar-avatar img
409 | border 0
410 | vertical-align middle
411 | max-width 100%
412 |
413 | .sidebar-about a
414 | color $sidebar-about-link-color
415 |
416 | .sidebar-about a:hover
417 | color $sidebar-about-link-hover-color
418 |
419 | .sidebar-author
420 | margin .67em 0
421 | font-family Roboto,sans-serif
422 | font-size 30px
423 | transition .3s
424 |
425 | .sidebar-subtitle
426 | color $sidebar-subtitle-color
427 |
428 | .sidebar-label-left
429 | height 100%
430 | padding 0 7px 0 7px
431 | background-color $sidebar-about-link-color
432 | float left
433 |
434 | .sidebar-friend
435 | margin 40px auto
436 | padding 0
437 |
438 | .sidebar-friend-title
439 | max-width 120px
440 | margin 20px auto
441 | padding 0
442 | line-height 2rem
443 | color $sidebar-friend-title
444 | background-color $sidebar-friend-title-background
445 | text-align center
446 |
447 | .sidebar-friend a,a:hover
448 | -webkit-transition .1s !important
449 | -o-transition .1s !important
450 | transition .1s !important
451 |
452 | .sidebar-friend a
453 | color $sidebar-friend-link
454 |
455 | .sidebar-friend a:hover
456 | color $sidebar-friend-link-hover
457 |
458 | .sidebar-friend li
459 | width calc(100% - 5rem)
460 | margin 0 auto
461 | background none
462 | border-bottom $sidebar-friend-li-border
463 | -webkit-transition all .2s ease-in-out
464 | -o-transition all .2s ease-in-out
465 | transition all .2s ease-in-out
466 |
467 | .sidebar-friend li:hover
468 | background-color $sidebar-friend-li-hover
469 | -webkit-transition all .2s ease-in-out
470 | -o-transition all .2s ease-in-out
471 | transition all .2s ease-in-out
472 |
473 | .sidebar-friend i.fa-quote-left
474 | color $sidebar-friend-ico
475 |
476 |
477 | /* 底部文字样式修正 */
478 | footer
479 | color $footer-color
480 | text-shadow $footer-shadow
481 |
482 | footer a
483 | color $footer-a-color
484 |
485 | footer a:hover
486 | color $footer-a-hover-color
487 |
488 | footer .iconfont
489 | color $footer-icon-color
490 | text-shadow $footer-icon-shadow
491 |
492 | .footer-theme a
493 | color $footer-theme-a-color
494 | text-shadow $footer-theme-a-shadow
495 |
496 | .footer-hitokoto
497 | max-width 50rem
498 | margin 0 auto
499 | max-height 3rem
500 | overflow hidden
501 |
502 | @media (max-width: 992px)
503 | .footer-hitokoto
504 | max-width: 80%
505 |
506 |
507 | /* 博客运行时间样式 */
508 | #runtime, #busuanzi_value_site_pv, #busuanzi_value_site_uv
509 | cursor pointer
510 | -webkit-transition all .2s ease-in-out
511 | -o-transition all .2s ease-in-out
512 | transition all .2s ease-in-out
513 |
514 | #runtime:hover, #busuanzi_value_site_pv:hover, #busuanzi_value_site_uv:hover
515 | color $footer-a-hover-color
516 | text-shadow $footer-shadow
517 | -webkit-transition all .2s ease-in-out
518 | -o-transition all .2s ease-in-out
519 | transition all .2s ease-in-out
520 |
521 |
522 | /* 控制整个滚动条 */
523 | ::-webkit-scrollbar {
524 | background-color: $scrollbar-color;
525 | width: 10px;
526 | height: 10px;
527 | background-clip: padding-box;
528 | }
529 | /* 滚动条两端方向按钮 */
530 | ::-webkit-scrollbar-button {
531 | display: none;
532 | }
533 | /* 滚动条中间滑动部分 */
534 | ::-webkit-scrollbar-thumb {
535 | background-color: $scrollbar-thumb-color;
536 | border-radius: 5px;
537 | background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);
538 | }
539 | /* 滚动条右下角区域 */
540 | ::-webkit-scrollbar-corner {
541 | background-color: $scrollbar-thumb-color;
542 | }
--------------------------------------------------------------------------------
/source/css/_pages/_category/categories.styl:
--------------------------------------------------------------------------------
1 | .category-tree-list
2 | font-size s = 1rem
3 | list-style-type circle
4 |
5 | .category-tree-list-link
6 | display inline-block
7 | padding .1rem .55rem
8 | font-weight 350
9 |
10 | .category-tree-list-count
11 | padding-left .5rem
12 | color #99a9bf
13 | font-size s* (3 / 4)
14 |
15 | &::before
16 | content: "("
17 |
18 | &::after
19 | content: ")"
20 |
21 |
--------------------------------------------------------------------------------
/source/css/_pages/_category/category.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_pages/_category/category.styl
--------------------------------------------------------------------------------
/source/css/_pages/_index/index.styl:
--------------------------------------------------------------------------------
1 | .index-header
2 | font-weight 700
3 | white-space nowrap
4 | overflow hidden
5 | text-overflow ellipsis
6 |
7 | @media (max-width: 768px)
8 | .index-header
9 | font-size 1.25rem
10 | white-space normal
11 | overflow hidden
12 | margin-top 1.25rem
13 |
14 | .index-thumbnails
15 | display block
16 | width 100%
17 | height 10rem
18 | object-fit cover
19 |
20 | .index-excerpt
21 | margin 0.5rem 0 0.5rem 0
22 | height auto
23 | max-height 5rem
24 | line-height 1.25rem
25 | overflow hidden
26 |
27 | .index-text
28 | float right
29 | margin-left -0.25rem
30 | width 100%
31 | word-break break-word
32 |
33 | &::before
34 | float left
35 | width 0.25rem
36 | content ''
37 | height 2rem
38 |
39 | // .index-excerpt::after {
40 | // float: right;
41 | // content: "...";
42 | // height: 1rem;
43 | // line-height: 1rem;
44 | // !* 为三个省略号的宽度 *!
45 | // width: 3em;
46 | // !* 使盒子不占位置 *!
47 | // margin-left: -3em;
48 | // !* 移动省略号位置 *!
49 | // position: relative;
50 | // left: 100%;
51 | // top: -1rem;
52 | // padding-right: 0.25rem;
53 | // }
--------------------------------------------------------------------------------
/source/css/_pages/_post/post.styl:
--------------------------------------------------------------------------------
1 | .post-content
2 | box-sizing border-box
3 | padding-left 10%
4 | padding-right 10%
5 | max-width 64rem
6 |
7 | img
8 | max-width 90%
9 | margin 1.5rem auto
10 | display block
11 | box-shadow $img-shadow
12 |
13 | @media (max-width: 768px)
14 | .post-content
15 | padding-left 2rem
16 | padding-right 2rem
17 |
18 | @media (max-width: 425px)
19 | .post-content
20 | padding-left 1rem
21 | padding-right 1rem
22 |
23 | .post-content h1::before, h2::before, h3::before, h4::before, h5::before, h6::before
24 | display block
25 | content ""
26 | margin-top -50px
27 | height 50px
28 | width 1px
29 | visibility hidden
30 |
31 | // nav
32 |
33 | #post-note
34 | margin 1rem 0
35 | padding .5rem 0
36 | border-left 3px solid
37 | background-color #f9f9f9
38 | border-color #eeeeee
39 |
40 | #post-note div
41 | padding .2rem .5rem
42 |
43 | #post-nav
44 | padding 0
45 | width 100%
46 |
47 | #post-nav-prev
48 | text-align left
49 |
50 | #post-nav-next
51 | text-align right
52 |
53 | // toc
54 |
55 | #toc
56 | padding 3rem 0 0 0
57 | height calc(100% - 9rem)
58 |
59 | #toc p
60 | color $toc-title-p-color
61 |
62 | #tocbot
63 | max-height 100%
64 | overflow-y scroll
65 | overflow -moz-scrollbars-none
66 | scrollbar-width none
67 | -ms-overflow-style none
68 | &::-webkit-scrollbar
69 | display none
70 | ol
71 | list-style none
72 | padding-inline-start 1rem
73 |
74 | .tocbot-list
75 | ol
76 | list-style none
77 | padding-left 1rem
78 | a
79 | font-size: 15px
80 |
81 | .tocbot-link
82 | color $tocbot-link-color
83 | text-shadow $tocbot-link-shadow
84 |
85 | .tocbot-active-link
86 | font-weight 600
87 | color $tocbot-link-active-color
88 | text-shadow $tocbot-active-link-shadow
89 |
90 | .tocbot-is-collapsible
91 | max-height 1000px
92 | overflow hidden
93 | transition all 300ms ease-in-out
94 |
95 | .tocbot-is-collapsed
96 | max-height 0
97 |
98 | @media (max-width: 1024px)
99 | .toc-container
100 | padding-left 0
101 | padding-right 0
102 |
103 | .custom, .comments
104 | margin-left: 2rem
105 | margin-right: 2rem
106 |
107 | @media (max-width: 425px)
108 | .custom, .comments
109 | margin-left: 1rem
110 | margin-right: 1rem
111 |
112 | @media (min-width: 64rem)
113 | .custom, .comments
114 | max-width: 64rem
115 |
116 | .katex-block
117 | overflow-x auto
--------------------------------------------------------------------------------
/source/css/_pages/_tag/tag.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_pages/_tag/tag.styl
--------------------------------------------------------------------------------
/source/css/_pages/_tag/tags.styl:
--------------------------------------------------------------------------------
1 | .tagcloud
2 | a
3 | display inline-block
4 | padding .1rem .55rem
5 | font-weight 350
6 |
7 | &:hover
8 | color $link-hover-color!important
--------------------------------------------------------------------------------
/source/css/_pages/pages.styl:
--------------------------------------------------------------------------------
1 | @import "_base/base"
2 | @import "_index/index"
3 | @import "_post/post"
4 | @import "_archive/archive"
5 | @import "_about/about"
6 | @import "_category/*"
7 | @import "_tag/*"
--------------------------------------------------------------------------------
/source/css/_variables/base.styl:
--------------------------------------------------------------------------------
1 | // Colors
2 | // -----------------------
3 |
4 | // body
5 | $body-bg-color = theme-config("color.body_bg_color", "#eee")
6 |
7 | // global
8 | $text-color = theme-config("color.text_color", "#3c4858")
9 | $link-color = theme-config("color.link_color", $text-color)
10 | $link-hover-color = theme-config("color.link_hover_color", "#1abc9c")
11 | $link-hover-bg = #f8f9fa
12 |
13 | // navbar
14 | $navbar-bg-color = theme-config("color.navbar_bg_color", "#2f4154")
15 | $navbar-text-color = theme-config("color.navbar_text_color", $text-color)
16 |
17 | // board
18 | $board-bg-color = theme-config("color.board_color", "#fff")
19 |
20 | // Shadow
21 | // -----------------------
22 |
23 | $img-shadow = 0 5px 11px 0 rgba(0, 0, 0, .18), 0 4px 15px 0 rgba(0, 0, 0, .15) !important
24 |
25 | //toc
26 | $toc-title-p-color = theme-config("color.toc_title_p_color", "#3c4858")
27 | $tocbot-link-color = theme-config("color.tocbot_link_color", "#3c4858")
28 | $tocbot-link-active-color = theme-config("color.tocbot_link_active_color", "#1abc9c")
29 | $tocbot-link-shadow = theme-config("color.tocbot_link_shadow", "0.1em 0.1em 0.2em #ffffff")
30 | $tocbot-active-link-shadow = theme-config("color.tocbot_active_link_shadow", "0.1em 0.1em 0.2em #ffbcbc")
31 |
32 | //sidebar
33 | $sidebar-text-color = theme-config("color.sidebar_text_color", "#3c4858")
34 | $sidebar-background-color = theme-config("color.sidebar_background_color", "#f6f8fad1")
35 | $sidebar-button-color = theme-config("color.sidebar_button_color", "#99a9bf")
36 | $sidebar-button-shift-color = theme-config("color.sidebar_button_shift_color", "#ffffff")
37 | $sidebar-button-shift-shadow = theme-config("color.sidebar_button_shift_shadow", "0.1rem 0.1rem 0.5rem #3e3e3e")
38 | $sidebar-about-link-color = theme-config("color.sidebar_about_link_color", "#3c4858")
39 | $sidebar-about-link-hover-color = theme-config("color.sidebar_about_link_hover_color", "#fe4365")
40 | $sidebar-avatar-border = theme-config("color.sidebar_avatar_border", "5px solid #ffffff")
41 | $sidebar-subtitle-color = theme-config("color.sidebar_subtitle_color", "#999999")
42 | $sidebar-friend-title = theme-config("color.sidebar_friend_title", "#ffffff")
43 | $sidebar-friend-title-background = theme-config("color.sidebar_friend_title_background", "#fe91b4")
44 | $sidebar-friend-link = theme-config("color.sidebar_friend_link", "#3c4858")
45 | $sidebar-friend-link-hover = theme-config("color.sidebar_friend_link_hover", "#ffffff")
46 | $sidebar-friend-li-border = theme-config("color.sidebar_friend_li_border", "1px dashed #bdbdbd")
47 | $sidebar-friend-li-hover = theme-config("color.sidebar_friend_li_hover", "#fe91b4")
48 | $sidebar-friend-ico = theme-config("color.sidebar_friend_ico", "#bfbfbf")
49 |
50 | //footer
51 | $footer-color = theme-config("color.footer_color", "#ffffff")
52 | $footer-shadow = theme-config("color.footer_shadow", "0.1rem 0.1rem 0.5rem white")
53 | $footer-a-color = theme-config("color.footer_a_color", "#ffffff")
54 | $footer-a-hover-color = theme-config("color.footer_a_hover_color", "#fe4365")
55 | $footer-theme-a-color = theme-config("color.footer_theme_a_color", "#fc9d9a")
56 | $footer-theme-a-shadow = theme-config("color.footer_theme_a_shadow", "0.1rem 0.1rem 0.2rem #fe4365")
57 | $footer-icon-color = theme-config("color.footer_icon_color", "#fc9d9a")
58 | $footer-icon-shadow = theme-config("color.footer_icon_shadow", "0.1rem 0.1rem 0.5rem white")
59 |
60 | //scrollbar
61 | $scrollbar-color = theme-config("color.scrollbar_color", "#fec9c9")
62 | $scrollbar-thumb-color = theme-config("color.scrollbar_thumb_color", "#fe4365")
63 |
64 |
65 | // User custom
66 | // -----------------------
67 | @import "custom"
--------------------------------------------------------------------------------
/source/css/_variables/custom.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_variables/custom.styl
--------------------------------------------------------------------------------
/source/css/main.styl:
--------------------------------------------------------------------------------
1 | // --------------------------------------
2 | // Fluid
3 | // https://github.com/fluid-dev/hexo-theme-fluid
4 | // --------------------------------------
5 |
6 | @import "_variables/base"
7 |
8 | @import "_functions/base"
9 |
10 | @import "_mixins/base"
11 |
12 | @import "_pages/pages"
13 |
14 | @import "_custom/custom"
--------------------------------------------------------------------------------
/source/img/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/apple-touch-icon.png
--------------------------------------------------------------------------------
/source/img/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/avatar.png
--------------------------------------------------------------------------------
/source/img/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/default.png
--------------------------------------------------------------------------------
/source/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/favicon.png
--------------------------------------------------------------------------------
/source/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/loading.gif
--------------------------------------------------------------------------------
/source/img/loading.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/img/police_beian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/police_beian.png
--------------------------------------------------------------------------------
/source/js/lazyload.js:
--------------------------------------------------------------------------------
1 | (function (window) {
2 | var images = Array.prototype.slice.call(document.querySelectorAll('img[srcset]'));
3 |
4 | function elementInViewport(el) {
5 | var rect = el.getBoundingClientRect();
6 | var height = window.innerHeight || document.documentElement.clientHeight;
7 | return (
8 | rect.top >= 0
9 | && rect.left >= 0
10 | && rect.top <= height * 3
11 | );
12 | }
13 | function loadImage(el, fn) {
14 | var img = new Image(), src = el.getAttribute('src');
15 | img.onload = function () {
16 | el.srcset = src;
17 | fn ? fn() : null;
18 | };
19 | img.srcset = src;
20 | }
21 |
22 | function processImages() {
23 | for (var i = 0; i < images.length; i++) {
24 | if (elementInViewport(images[i])) {
25 | (function(index){
26 | var loadingImage = images[index];
27 | loadImage(loadingImage, function () {
28 | images = images.filter(function(t) {
29 | return loadingImage !== t;
30 | });
31 | });
32 | })(i);
33 | }
34 | }
35 | }
36 |
37 | function throttle(method, context) {
38 | clearTimeout(method.tId);
39 | method.tId = setTimeout(function () {
40 | method.call(context);
41 | }, 100);
42 | }
43 |
44 | processImages();
45 |
46 | window.addEventListener('scroll', function () {
47 | throttle(processImages, window);
48 | });
49 | })(this);
50 |
--------------------------------------------------------------------------------
/source/js/local-search.js:
--------------------------------------------------------------------------------
1 | // A local search script with the help of [hexo-generator-search](https://github.com/PaicHyperionDev/hexo-generator-search)
2 | // Copyright (C) 2017
3 | // Liam Huang
4 | // This library is free software; you can redistribute it and/or modify
5 | // it under the terms of the GNU Lesser General Public License as
6 | // published by the Free Software Foundation; either version 2.1 of the
7 | // License, or (at your option) any later version.
8 | //
9 | // This library is distributed in the hope that it will be useful, but
10 | // WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 | // Lesser General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU Lesser General Public
15 | // License along with this library; if not, write to the Free Software
16 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 | // 02110-1301 USA
18 | //
19 | // Updated by Rook1e
20 |
21 | var searchFunc = function (path, search_id, content_id) {
22 | // 0x00. environment initialization
23 | 'use strict';
24 | var $input = document.getElementById(search_id);
25 | var $resultContent = document.getElementById(content_id);
26 | $resultContent.innerHTML = "";
27 | $.ajax({
28 | // 0x01. load xml file
29 | url: path,
30 | dataType: "xml",
31 | success: function (xmlResponse) {
32 | // 0x02. parse xml file
33 | var dataList = $("entry", xmlResponse).map(function () {
34 | return {
35 | title: $("title", this).text(),
36 | content: $("content", this).text(),
37 | url: $("url", this).text()
38 | };
39 | }).get();
40 | $resultContent.innerHTML = "";
41 |
42 | $input.addEventListener('input', function () {
43 | // 0x03. parse query to keywords list
44 | var str = '';
45 | var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
46 | $resultContent.innerHTML = "";
47 | if (this.value.trim().length <= 0) {
48 | return;
49 | }
50 | // 0x04. perform local searching
51 | dataList.forEach(function (data) {
52 | var isMatch = true;
53 | var content_index = [];
54 | if (!data.title || data.title.trim() === '') {
55 | data.title = "Untitled";
56 | }
57 | var orig_data_title = data.title.trim();
58 | var data_title = orig_data_title.toLowerCase();
59 | var orig_data_content = data.content.trim().replace(/<[^>]+>/g, "");
60 | var data_content = orig_data_content.toLowerCase();
61 | var data_url = data.url;
62 | var index_title = -1;
63 | var index_content = -1;
64 | var first_occur = -1;
65 | // only match articles with not empty contents
66 | if (data_content !== '') {
67 | keywords.forEach(function (keyword, i) {
68 | index_title = data_title.indexOf(keyword);
69 | index_content = data_content.indexOf(keyword);
70 |
71 | if (index_title < 0 && index_content < 0) {
72 | isMatch = false;
73 | } else {
74 | if (index_content < 0) {
75 | index_content = 0;
76 | }
77 | if (i === 0) {
78 | first_occur = index_content;
79 | }
80 | //content_index.push({index_content:index_content, keyword_len:keyword_len});
81 | }
82 | });
83 | } else {
84 | isMatch = false;
85 | }
86 | // 0x05. show search results
87 | if (isMatch) {
88 | str += "" + orig_data_title + "";
89 | var content = orig_data_content;
90 | if (first_occur >= 0) {
91 | // cut out 100 characters
92 | var start = first_occur - 20;
93 | var end = first_occur + 80;
94 |
95 | if (start < 0) {
96 | start = 0;
97 | }
98 |
99 | if (start === 0) {
100 | end = 100;
101 | }
102 |
103 | if (end > content.length) {
104 | end = content.length;
105 | }
106 |
107 | var match_content = content.substring(start, end);
108 |
109 | // highlight all keywords
110 | keywords.forEach(function (keyword) {
111 | var regS = new RegExp(keyword, "gi");
112 | match_content = match_content.replace(regS, "" + keyword + "");
113 | });
114 |
115 | str += "" + match_content + "...
"
116 | }
117 | }
118 | });
119 | if (str.indexOf('list-group-item') === -1) {
120 | return $('#local-search-input').addClass("invalid").removeClass("valid");
121 | }
122 | $('#local-search-input').addClass("valid").removeClass("invalid");
123 | $resultContent.innerHTML = str;
124 | });
125 | }
126 | });
127 | $(document).on('click', '#local-search-close', function () {
128 | $('#local-search-input').val('').removeClass("invalid").removeClass("valid");
129 | $('#local-search-result').html('');
130 | });
131 | };
132 |
133 | var getSearchFile = function (path) {
134 | searchFunc(path, 'local-search-input', 'local-search-result');
135 | };
--------------------------------------------------------------------------------
/source/js/main.js:
--------------------------------------------------------------------------------
1 | function scrollToElement(target, offset) {
2 | var scroll_offset = $(target).offset();
3 | $("body,html").animate({
4 | scrollTop: scroll_offset.top + (offset || 0),
5 | easing: 'swing'
6 | })
7 | }
8 |
9 | function scrollToBoard() {
10 | scrollToElement('#board', -$("#navbar").height());
11 | }
12 |
13 |
14 | $(document).ready(function () {
15 | /* 顶部菜单的动效 */
16 | var navbar = $("#navbar");
17 | if (navbar.offset().top > 0) {
18 | navbar.addClass("navbar-custom");
19 | navbar.removeClass("navbar-dark");
20 | }
21 | $(window).scroll(function () {
22 | if (navbar.offset().top > 0) {
23 | navbar.addClass("navbar-custom");
24 | navbar.removeClass("navbar-dark");
25 | } else {
26 | navbar.addClass("navbar-dark");
27 | }
28 | });
29 | $('#navbar-toggler-btn').on('click', function () {
30 | $('.animated-icon').toggleClass('open');
31 | $('#navbar').toggleClass('navbar-col-show');
32 | });
33 |
34 |
35 | /* 向下滚动箭头的点击 */
36 | $(".scroll-down-bar").on("click", scrollToBoard);
37 |
38 | /* 向顶部滚动箭头 */
39 | var topArrow = $("#scroll-top-button");
40 | var posDisplay = false;
41 | var scrollDisplay = false;
42 | /* 位置 */
43 | var setTopArrowPos = function () {
44 | var boardRight = document.getElementById('board').getClientRects()[0].right;
45 | var bodyWidth = document.body.offsetWidth;
46 | var right = bodyWidth - boardRight;
47 | posDisplay = right >= 50;
48 | topArrow.css({
49 | "bottom": posDisplay && scrollDisplay ? "20px" : "-60px",
50 | "right": right - 64 + "px"
51 | });
52 | };
53 | setTopArrowPos();
54 | $(window).resize(setTopArrowPos);
55 | /* 显示 */
56 | var headerHeight = $("#board").offset().top;
57 | $(window).scroll(function () {
58 | var scrollHeight = document.body.scrollTop + document.documentElement.scrollTop;
59 | scrollDisplay = scrollHeight >= headerHeight;
60 | topArrow.css({
61 | "bottom": posDisplay && scrollDisplay ? "20px" : "-60px"
62 | });
63 | });
64 | /* 点击 */
65 | topArrow.on("click", function () {
66 | $("body,html").animate({
67 | scrollTop: 0,
68 | easing: 'swing'
69 | })
70 | });
71 | });
72 |
73 | /* Sidebar */
74 | var toggleSidebar = function(){
75 | $("#sidebar").toggleClass('sidebar-hide');
76 | $("#toggle-sidebar").toggleClass('sidebar-button-shift');
77 | }
78 | var hideSidebar = function(){
79 | $("#sidebar").addClass('sidebar-hide');
80 | $("#toggle-sidebar").addClass('sidebar-button-shift');
81 | }
82 | $("#toggle-sidebar").on("click",toggleSidebar);
83 | $("header").on("click",hideSidebar);
84 | $("#mainContent").on("click",hideSidebar);
85 | $("#footerContent").on("click",hideSidebar);
--------------------------------------------------------------------------------
/source/js/post.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function () {
2 | var navHeight = $("#navbar").height();
3 | var toc = $("#toc");
4 | var main = $("main");
5 | var tocT = navHeight + (toc.offset().top - main.offset().top);
6 | var tocLimMin = main.offset().top - navHeight;
7 | var tocLimMax = $("#comments").offset().top - navHeight;
8 | var loadToc = function () {
9 | var scroH = document.body.scrollTop + document.documentElement.scrollTop;
10 | if (tocLimMin <= scroH && scroH <= tocLimMax) {
11 | toc.css({
12 | "display": "block",
13 | "position": "fixed",
14 | "top": tocT
15 | })
16 | } else if (scroH <= tocLimMin) {
17 | toc.css({
18 | "position": "",
19 | "top": ''
20 | })
21 | } else if (scroH > tocLimMax) {
22 | /* 滚动到页面底部时隐藏侧边目录,有bug */
23 | /* toc.css("display", "none") */
24 | }
25 | }
26 | loadToc();
27 | $(window).scroll(loadToc);
28 | tocbot.init({
29 | tocSelector: '#tocbot',
30 | contentSelector: '.post-content',
31 | headingSelector: 'h1, h2, h3, h4, h5, h6',
32 | linkClass: 'tocbot-link',
33 | activeLinkClass: 'tocbot-active-link',
34 | listClass: 'tocbot-list',
35 | isCollapsedClass: 'tocbot-is-collapsed',
36 | collapsibleClass: 'tocbot-is-collapsible',
37 | scrollSmooth: true,
38 | });
39 | });
40 |
--------------------------------------------------------------------------------
/source/lib/anchor/anchor.min.js:
--------------------------------------------------------------------------------
1 | // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
2 | //
3 | // AnchorJS - v4.2.0 - 2019-01-01
4 | // https://github.com/bryanbraun/anchorjs
5 | // Copyright (c) 2019 Bryan Braun; Licensed MIT
6 | //
7 | // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
8 | !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
9 | // @license-end
--------------------------------------------------------------------------------
/source/lib/fancybox/jquery.fancybox.min.css:
--------------------------------------------------------------------------------
1 | body.compensate-for-scrollbar{overflow:hidden}.fancybox-active{height:auto}.fancybox-is-hidden{left:-9999px;margin:0;position:absolute!important;top:-9999px;visibility:hidden}.fancybox-container{-webkit-backface-visibility:hidden;height:100%;left:0;outline:none;position:fixed;-webkit-tap-highlight-color:transparent;top:0;-ms-touch-action:manipulation;touch-action:manipulation;transform:translateZ(0);width:100%;z-index:99992}.fancybox-container *{box-sizing:border-box}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{bottom:0;left:0;position:absolute;right:0;top:0}.fancybox-outer{-webkit-overflow-scrolling:touch;overflow-y:auto}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.9;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption,.fancybox-infobar,.fancybox-navigation .fancybox-button,.fancybox-toolbar{direction:ltr;opacity:0;position:absolute;transition:opacity .25s ease,visibility 0s ease .25s;visibility:hidden;z-index:99997}.fancybox-show-caption .fancybox-caption,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-nav .fancybox-navigation .fancybox-button,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;transition:opacity .25s ease 0s,visibility 0s ease 0s;visibility:visible}.fancybox-infobar{color:#ccc;font-size:13px;-webkit-font-smoothing:subpixel-antialiased;height:44px;left:0;line-height:44px;min-width:44px;mix-blend-mode:difference;padding:0 10px;pointer-events:none;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-toolbar{right:0;top:0}.fancybox-stage{direction:ltr;overflow:visible;transform:translateZ(0);z-index:99994}.fancybox-is-open .fancybox-stage{overflow:hidden}.fancybox-slide{-webkit-backface-visibility:hidden;display:none;height:100%;left:0;outline:none;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:absolute;text-align:center;top:0;transition-property:transform,opacity;white-space:normal;width:100%;z-index:99994}.fancybox-slide:before{content:"";display:inline-block;font-size:0;height:100%;vertical-align:middle;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:hidden;padding:44px 0}.fancybox-slide--image:before{display:none}.fancybox-slide--html{padding:6px}.fancybox-content{background:#fff;display:inline-block;margin:0;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:relative;text-align:left;vertical-align:middle}.fancybox-slide--image .fancybox-content{animation-timing-function:cubic-bezier(.5,0,.14,1);-webkit-backface-visibility:hidden;background:transparent;background-repeat:no-repeat;background-size:100% 100%;left:0;max-width:none;overflow:visible;padding:0;position:absolute;top:0;transform-origin:top left;transition-property:transform,opacity;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:99995}.fancybox-can-zoomOut .fancybox-content{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-content{cursor:zoom-in}.fancybox-can-pan .fancybox-content,.fancybox-can-swipe .fancybox-content{cursor:grab}.fancybox-is-grabbing .fancybox-content{cursor:grabbing}.fancybox-container [data-selectable=true]{cursor:text}.fancybox-image,.fancybox-spaceball{background:transparent;border:0;height:100%;left:0;margin:0;max-height:none;max-width:none;padding:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content,.fancybox-slide--map .fancybox-content,.fancybox-slide--pdf .fancybox-content,.fancybox-slide--video .fancybox-content{height:100%;overflow:visible;padding:0;width:100%}.fancybox-slide--video .fancybox-content{background:#000}.fancybox-slide--map .fancybox-content{background:#e5e3df}.fancybox-slide--iframe .fancybox-content{background:#fff}.fancybox-iframe,.fancybox-video{background:transparent;border:0;display:block;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.fancybox-iframe{left:0;position:absolute;top:0}.fancybox-error{background:#fff;cursor:default;max-width:400px;padding:40px;width:100%}.fancybox-error p{color:#444;font-size:16px;line-height:20px;margin:0;padding:0}.fancybox-button{background:rgba(30,30,30,.6);border:0;border-radius:0;box-shadow:none;cursor:pointer;display:inline-block;height:44px;margin:0;padding:10px;position:relative;transition:color .2s;vertical-align:top;visibility:inherit;width:44px}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:hover{color:#fff}.fancybox-button:focus{outline:none}.fancybox-button.fancybox-focus{outline:1px dotted}.fancybox-button[disabled],.fancybox-button[disabled]:hover{color:#888;cursor:default;outline:none}.fancybox-button div{height:100%}.fancybox-button svg{display:block;height:100%;overflow:visible;position:relative;width:100%}.fancybox-button svg path{fill:currentColor;stroke-width:0}.fancybox-button--fsenter svg:nth-child(2),.fancybox-button--fsexit svg:first-child,.fancybox-button--pause svg:first-child,.fancybox-button--play svg:nth-child(2){display:none}.fancybox-progress{background:#ff5268;height:2px;left:0;position:absolute;right:0;top:0;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;z-index:99998}.fancybox-close-small{background:transparent;border:0;border-radius:0;color:#ccc;cursor:pointer;opacity:.8;padding:8px;position:absolute;right:-12px;top:-44px;z-index:401}.fancybox-close-small:hover{color:#fff;opacity:1}.fancybox-slide--html .fancybox-close-small{color:currentColor;padding:10px;right:0;top:0}.fancybox-slide--image.fancybox-is-scaling .fancybox-content{overflow:hidden}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small{display:none}.fancybox-navigation .fancybox-button{background-clip:content-box;height:100px;opacity:0;position:absolute;top:calc(50% - 50px);width:70px}.fancybox-navigation .fancybox-button div{padding:7px}.fancybox-navigation .fancybox-button--arrow_left{left:0;left:env(safe-area-inset-left);padding:31px 26px 31px 6px}.fancybox-navigation .fancybox-button--arrow_right{padding:31px 6px 31px 26px;right:0;right:env(safe-area-inset-right)}.fancybox-caption{background:linear-gradient(0deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.15) 65%,rgba(0,0,0,.075) 75.5%,rgba(0,0,0,.037) 82.85%,rgba(0,0,0,.019) 88%,transparent);bottom:0;color:#eee;font-size:14px;font-weight:400;left:0;line-height:1.5;padding:75px 44px 25px;pointer-events:none;right:0;text-align:center;z-index:99996}@supports (padding:max(0px)){.fancybox-caption{padding:75px max(44px,env(safe-area-inset-right)) max(25px,env(safe-area-inset-bottom)) max(44px,env(safe-area-inset-left))}}.fancybox-caption--separate{margin-top:-50px}.fancybox-caption__body{max-height:50vh;overflow:auto;pointer-events:all}.fancybox-caption a,.fancybox-caption a:link,.fancybox-caption a:visited{color:#ccc;text-decoration:none}.fancybox-caption a:hover{color:#fff;text-decoration:underline}.fancybox-loading{animation:a 1s linear infinite;background:transparent;border:4px solid #888;border-bottom-color:#fff;border-radius:50%;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.7;padding:0;position:absolute;top:50%;width:50px;z-index:99999}@keyframes a{to{transform:rotate(1turn)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{opacity:0;transform:translate3d(-100%,0,0)}.fancybox-fx-slide.fancybox-slide--next{opacity:0;transform:translate3d(100%,0,0)}.fancybox-fx-slide.fancybox-slide--current{opacity:1;transform:translateZ(0)}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{opacity:0;transform:scale3d(1.5,1.5,1.5)}.fancybox-fx-zoom-in-out.fancybox-slide--next{opacity:0;transform:scale3d(.5,.5,.5)}.fancybox-fx-zoom-in-out.fancybox-slide--current{opacity:1;transform:scaleX(1)}.fancybox-fx-rotate.fancybox-slide--previous{opacity:0;transform:rotate(-1turn)}.fancybox-fx-rotate.fancybox-slide--next{opacity:0;transform:rotate(1turn)}.fancybox-fx-rotate.fancybox-slide--current{opacity:1;transform:rotate(0deg)}.fancybox-fx-circular.fancybox-slide--previous{opacity:0;transform:scale3d(0,0,0) translate3d(-100%,0,0)}.fancybox-fx-circular.fancybox-slide--next{opacity:0;transform:scale3d(0,0,0) translate3d(100%,0,0)}.fancybox-fx-circular.fancybox-slide--current{opacity:1;transform:scaleX(1) translateZ(0)}.fancybox-fx-tube.fancybox-slide--previous{transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{transform:translateZ(0) scale(1)}@media (max-height:576px){.fancybox-slide{padding-left:6px;padding-right:6px}.fancybox-slide--image{padding:6px 0}.fancybox-close-small{right:-6px}.fancybox-slide--image .fancybox-close-small{background:#4e4e4e;color:#f2f4f6;height:36px;opacity:1;padding:6px;right:0;top:0;width:36px}.fancybox-caption{padding-left:12px;padding-right:12px}@supports (padding:max(0px)){.fancybox-caption{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}}.fancybox-share{background:#f4f4f4;border-radius:3px;max-width:90%;padding:30px;text-align:center}.fancybox-share h1{color:#222;font-size:35px;font-weight:700;margin:0 0 20px}.fancybox-share p{margin:0;padding:0}.fancybox-share__button{border:0;border-radius:3px;display:inline-block;font-size:14px;font-weight:700;line-height:40px;margin:0 5px 10px;min-width:130px;padding:0 15px;text-decoration:none;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.fancybox-share__button:link,.fancybox-share__button:visited{color:#fff}.fancybox-share__button:hover{text-decoration:none}.fancybox-share__button--fb{background:#3b5998}.fancybox-share__button--fb:hover{background:#344e86}.fancybox-share__button--pt{background:#bd081d}.fancybox-share__button--pt:hover{background:#aa0719}.fancybox-share__button--tw{background:#1da1f2}.fancybox-share__button--tw:hover{background:#0d95e8}.fancybox-share__button svg{height:25px;margin-right:7px;position:relative;top:-1px;vertical-align:middle;width:25px}.fancybox-share__button svg path{fill:#fff}.fancybox-share__input{background:transparent;border:0;border-bottom:1px solid #d7d7d7;border-radius:0;color:#5d5b5b;font-size:14px;margin:10px 0 0;outline:none;padding:10px 15px;width:100%}.fancybox-thumbs{background:#ddd;bottom:0;display:none;margin:0;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;padding:2px 2px 4px;position:absolute;right:0;-webkit-tap-highlight-color:rgba(0,0,0,0);top:0;width:212px;z-index:99995}.fancybox-thumbs-x{overflow-x:auto;overflow-y:hidden}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs__list{font-size:0;height:100%;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;position:relative;white-space:nowrap;width:100%}.fancybox-thumbs-x .fancybox-thumbs__list{overflow:hidden}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar{width:7px}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs__list a{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,.1);background-position:50%;background-repeat:no-repeat;background-size:cover;cursor:pointer;float:left;height:75px;margin:2px;max-height:calc(100% - 8px);max-width:calc(50% - 4px);outline:none;overflow:hidden;padding:0;position:relative;-webkit-tap-highlight-color:transparent;width:100px}.fancybox-thumbs__list a:before{border:6px solid #ff5268;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:all .2s cubic-bezier(.25,.46,.45,.94);z-index:99991}.fancybox-thumbs__list a:focus:before{opacity:.5}.fancybox-thumbs__list a.fancybox-thumbs-active:before{opacity:1}@media (max-width:576px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs__list a{max-width:calc(100% - 10px)}}
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/source/lib/font-awesome/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/source/lib/github-markdown/github-markdown.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Minified by jsDelivr using clean-css v4.2.1.
3 | * Original file: /npm/github-markdown-css@3.0.1/github-markdown.css
4 | *
5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6 | */
7 | @font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff')}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{background-color:#b31d28;color:#fafbfc}.markdown-body .pl-c2{background-color:#d73a49;color:#fafbfc}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{color:#22863a;font-weight:700}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#005cc5;font-weight:700}.markdown-body .pl-mi{color:#24292e;font-style:italic}.markdown-body .pl-mb{color:#24292e;font-weight:700}.markdown-body .pl-md{background-color:#ffeef0;color:#b31d28}.markdown-body .pl-mi1{background-color:#f0fff4;color:#22863a}.markdown-body .pl-mc{background-color:#ffebda;color:#e36209}.markdown-body .pl-mi2{background-color:#005cc5;color:#f6f8fa}.markdown-body .pl-mdr{color:#6f42c1;font-weight:700}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{color:#032f62;text-decoration:underline}.markdown-body details{display:block}.markdown-body summary{display:list-item}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{background:0 0;border:0;border-bottom:1px solid #dfe2e5;height:0;margin:15px 0;overflow:hidden}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-collapse:collapse;border-spacing:0}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-bottom:0;margin-top:0}.markdown-body h1{font-size:32px}.markdown-body h1,.markdown-body h2{font-weight:600}.markdown-body h2{font-size:24px}.markdown-body h3{font-size:20px}.markdown-body h3,.markdown-body h4{font-weight:600}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h5,.markdown-body h6{font-weight:600}.markdown-body h6{font-size:12px}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .border{border:1px solid #e1e4e8!important}.markdown-body .border-0{border:0!important}.markdown-body .border-bottom{border-bottom:1px solid #e1e4e8!important}.markdown-body .rounded-1{border-radius:3px!important}.markdown-body .bg-white{background-color:#fff!important}.markdown-body .bg-gray-light{background-color:#fafbfc!important}.markdown-body .text-gray-light{color:#6a737d!important}.markdown-body .mb-0{margin-bottom:0!important}.markdown-body .my-2{margin-bottom:8px!important;margin-top:8px!important}.markdown-body .pl-0{padding-left:0!important}.markdown-body .py-0{padding-bottom:0!important;padding-top:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .py-2{padding-bottom:8px!important;padding-top:8px!important}.markdown-body .pl-3,.markdown-body .px-3{padding-left:16px!important}.markdown-body .px-3{padding-right:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .f6{font-size:12px!important}.markdown-body .lh-condensed{line-height:1.25!important}.markdown-body .text-bold{font-weight:600!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body hr{background-color:#e1e4e8;border:0;height:.25em;margin:24px 0;padding:0}.markdown-body blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{border-bottom:1px solid #eaecef;padding-bottom:.3em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{color:#6a737d;font-size:.85em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table{display:block;overflow:auto;width:100%}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{border:1px solid #dfe2e5;padding:6px 13px}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{background-color:#fff;box-sizing:content-box;max-width:100%}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{background-color:rgba(27,31,35,.05);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{background:0 0;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:#f6f8fa;border-radius:3px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal}.markdown-body .commit-tease-sha{color:#444d56;display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:90%}.markdown-body .blob-wrapper{border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow-x:auto;overflow-y:hidden}.markdown-body .blob-wrapper-embedded{max-height:240px;overflow-y:auto}.markdown-body .blob-num{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;color:rgba(27,31,35,.3);cursor:pointer;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;line-height:20px;min-width:50px;padding-left:10px;padding-right:10px;text-align:right;user-select:none;vertical-align:top;white-space:nowrap;width:1%}.markdown-body .blob-num:hover{color:rgba(27,31,35,.6)}.markdown-body .blob-num:before{content:attr(data-line-number)}.markdown-body .blob-code{line-height:20px;padding-left:10px;padding-right:10px;position:relative;vertical-align:top}.markdown-body .blob-code-inner{color:#24292e;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;overflow:visible;white-space:pre;word-wrap:normal}.markdown-body .pl-token.active,.markdown-body .pl-token:hover{background:#ffea7f;cursor:pointer}.markdown-body kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body :checked+.radio-label{border-color:#0366d6;position:relative;z-index:1}.markdown-body .tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.markdown-body .tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.markdown-body .tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.markdown-body .tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.markdown-body .tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.markdown-body .tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.markdown-body .tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.markdown-body .tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.markdown-body .tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.markdown-body .tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.markdown-body .tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.markdown-body .tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .pl-7{padding-left:48px!important}.markdown-body .pl-8{padding-left:64px!important}.markdown-body .pl-9{padding-left:80px!important}.markdown-body .pl-10{padding-left:96px!important}.markdown-body .pl-11{padding-left:112px!important}.markdown-body .pl-12{padding-left:128px!important}
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.eot
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff2
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Light.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.eot
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.ttf
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.woff
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.woff2
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Medium.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.eot
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff2
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.eot
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.ttf
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff2
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Thin.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.eot
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.ttf
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff
--------------------------------------------------------------------------------
/source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff2
--------------------------------------------------------------------------------
/source/lib/prettify/github-v2.min.css:
--------------------------------------------------------------------------------
1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */
2 | .prettyprint{background:#fafbfc!important;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#333}ol.linenums{margin-top:0;margin-bottom:0;color:#ccc}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fafbfc;list-style-type:decimal}@media screen{.str{color:#183691}.kwd{color:#a71d5d}.com{color:#969896}.typ{color:#0086b3}.lit{color:#0086b3}.pun{color:#333}.opn{color:#333}.clo{color:#333}.tag{color:navy}.atn{color:#795da3}.atv{color:#183691}.dec{color:#333}.var{color:teal}.fun{color:#900}}
--------------------------------------------------------------------------------
/source/lib/prettify/prettify.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Minified by jsDelivr using UglifyJS v3.0.24.
3 | * Original file: /npm/code-prettify@0.1.0/src/prettify.js
4 | *
5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6 | */
7 | var DecorationsT,JobT,SourceSpansT,IN_GLOBAL_SCOPE=!1,HACK_TO_FIX_JS_INCLUDE_PL,PR;window.PR_SHOULD_USE_CONTINUATION=!0;var prettyPrintOne,prettyPrint;!function(){function e(e){function n(e){var n=e.charCodeAt(0);if(92!==n)return n;var t=e.charAt(1);return(n=u[t])||("0"<=t&&t<="7"?parseInt(e.substring(1),8):"u"===t||"x"===t?parseInt(e.substring(2),16):e.charCodeAt(1))}function t(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);var n=String.fromCharCode(e);return"\\"===n||"-"===n||"]"===n||"^"===n?"\\"+n:n}function r(e){var r=e.substring(1,e.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g")),a=[],s="^"===r[0],l=["["];s&&l.push("^");for(var i=s?1:0,o=r.length;i122||(c<65||d>90||a.push([32|Math.max(65,d),32|Math.min(c,90)]),c<97||d>122||a.push([-33&Math.max(97,d),-33&Math.min(c,122)]))}}a.sort(function(e,n){return e[0]-n[0]||n[1]-e[1]});for(var p=[],f=[],i=0;ig[0]&&(g[1]+1>g[0]&&l.push("-"),l.push(t(g[1])))}return l.push("]"),l.join("")}for(var a=0,s=!1,l=!1,i=0,o=e.length;i=2&&"["===p?n[o]=r(d):"\\"!==p&&(n[o]=d.replace(/[a-zA-Z]/g,function(e){var n=e.charCodeAt(0);return"["+String.fromCharCode(-33&n,32|n)+"]"}))}return n.join("")}(d)+")")}return new RegExp(c.join("|"),l?"gi":"g")}function n(e,n){function t(e){var o=e.nodeType;if(1==o){if(r.test(e.className))return;for(var u=e.firstChild;u;u=u.nextSibling)t(u);var c=e.nodeName.toLowerCase();"br"!==c&&"li"!==c||(a[i]="\n",l[i<<1]=s++,l[i++<<1|1]=e)}else if(3==o||4==o){var d=e.nodeValue;d.length&&(d=n?d.replace(/\r\n?/g,"\n"):d.replace(/[ \t\r\n]+/g," "),a[i]=d,l[i<<1]=s,s+=d.length,l[i++<<1|1]=e)}}var r=/(?:^|\s)nocode(?:\s|$)/,a=[],s=0,l=[],i=0;return t(e),{sourceCode:a.join("").replace(/\n$/,""),spans:l}}function t(e,n,t,r,a){if(t){var s={sourceNode:e,pre:1,langExtension:null,numberLines:null,sourceCode:t,spans:null,basePos:n,decorations:null};r(s),a.push.apply(a,s.decorations)}}function r(e){for(var n=void 0,t=e.firstChild;t;t=t.nextSibling){var r=t.nodeType;n=1===r?n?e:t:3===r&&O.test(t.nodeValue)?e:n}return n===e?void 0:n}function a(n,r){var a,s={};!function(){for(var t=n.concat(r),l=[],i={},o=0,u=t.length;o=0;)s[d.charAt(p)]=c;var f=c[1],g=""+f;i.hasOwnProperty(g)||(l.push(f),i[g]=null)}l.push(/[\0-\uffff]/),a=e(l)}();var l=r.length,i=function(e){for(var n=e.sourceCode,o=e.basePos,c=e.sourceNode,d=[o,R],p=0,f=n.match(a)||[],g={},h=0,m=f.length;h=5&&"lang-"===b.substring(0,5))||x&&"string"==typeof x[1]||(v=!1,b=k),v||(g[y]=b)}var C=p;if(p+=y.length,v){var N=x[1],_=y.indexOf(N),P=_+N.length;x[2]&&(_=(P=y.length-x[2].length)-N.length);var E=b.substring(5);t(c,o+C,y.substring(0,_),i,d),t(c,o+C+_,N,u(E,N),d),t(c,o+C+P,y.substring(P),i,d)}else d.push(o+C,b)}e.decorations=d};return i}function s(e){var n=[],t=[];e.tripleQuotedStrings?n.push([_,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""]):e.multiLineStrings?n.push([_,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):n.push([_,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]),e.verbatimStrings&&t.push([_,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var r=e.hashComments;r&&(e.cStyleComments?(r>1?n.push([E,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):n.push([E,/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]),t.push([_,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])):n.push([E,/^#[^\r\n]*/,null,"#"])),e.cStyleComments&&(t.push([E,/^\/\/[^\r\n]*/,null]),t.push([E,/^\/\*[\s\S]*?(?:\*\/|$)/,null]));var s=e.regexLiterals;if(s){var l=s>1?"":"\n\r",i=l?".":"[\\S\\s]",o="/(?=[^/*"+l+"])(?:[^/\\x5B\\x5C"+l+"]|\\x5C"+i+"|\\x5B(?:[^\\x5C\\x5D"+l+"]|\\x5C"+i+")*(?:\\x5D|$))+/";t.push(["lang-regex",RegExp("^"+$+"("+o+")")])}var u=e.types;u&&t.push([L,u]);var c=(""+e.keywords).replace(/^ | $/g,"");c.length&&t.push([P,new RegExp("^(?:"+c.replace(/[\s,]+/g,"|")+")\\b"),null]),n.push([R,/^\s+/,null," \r\n\t "]);var d="^.[^\\s\\w.$@'\"`/\\\\]*";return e.regexLiterals&&(d+="(?!s*/)"),t.push([A,/^@[a-z_$][a-z_$@0-9]*/i,null],[L,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[R,/^[a-z_$][a-z_$@0-9]*/i,null],[A,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[R,/^\\[\s\S]?/,null],[T,new RegExp(d),null]),a(n,t)}function l(e,n,t){function r(e){var n=e.nodeType;if(1!=n||s.test(e.className)){if((3==n||4==n)&&t){var o=e.nodeValue,u=o.match(l);if(u){var c=o.substring(0,u.index);e.nodeValue=c;var d=o.substring(u.index+u[0].length);d&&e.parentNode.insertBefore(i.createTextNode(d),e.nextSibling),a(e),c||e.parentNode.removeChild(e)}}}else if("br"===e.nodeName)a(e),e.parentNode&&e.parentNode.removeChild(e);else for(var p=e.firstChild;p;p=p.nextSibling)r(p)}function a(e){function n(e,t){var r=t?e.cloneNode(!1):e,a=e.parentNode;if(a){var s=n(a,1),l=e.nextSibling;s.appendChild(r);for(var i=l;i;i=l)l=i.nextSibling,s.appendChild(i)}return r}for(;!e.nextSibling;)if(!(e=e.parentNode))return;for(var t,r=n(e.nextSibling,0);(t=r.parentNode)&&1===t.nodeType;)r=t;u.push(r)}for(var s=/(?:^|\s)nocode(?:\s|$)/,l=/\r\n?|\n/,i=e.ownerDocument,o=i.createElement("li");e.firstChild;)o.appendChild(e.firstChild);for(var u=[o],c=0;c=x&&(o+=2),s>=w&&(d+=2)}}finally{v&&(v.style.display=y)}}function o(e,n){for(var t=n.length;--t>=0;){var r=n[t];I.hasOwnProperty(r)?f.console&&console.warn("cannot override language handler %s",r):I[r]=e}}function u(e,n){return e&&I.hasOwnProperty(e)||(e=/^\s*"+e+"",s=s.firstChild,r&&l(s,r,!0),c({langExtension:a,numberLines:r,sourceNode:s,pre:1,sourceCode:null,basePos:null,spans:null,decorations:null}),s.innerHTML}function p(e,n){function t(e){return s.getElementsByTagName(e)}function a(){for(var n=f.PR_SHOULD_USE_CONTINUATION?h.now()+250:1/0;m|\\/=?|::?|<=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*",O=/\S/,I={};o(s({keywords:[m,y,v,b,x,w,S,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),["default-code"]),o(a([],[[R,/^[^]+/],["dec",/^]*(?:>|$)/],[E,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[T,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^
27 | <% var type = '_partial/comments/' + theme.post.comments.type %> 28 | <%- partial(type) %> 29 | <% } %> 30 |