├── .gitignore
├── README.md
├── README.txt
├── README_en.txt
├── css
├── jquery.css
└── termite.css
├── img
├── feature_divide.png
├── header_bg.jpg
├── main_bg.png
├── main_bg.png.bak
├── nav_bg.png
├── sprite.png
└── tabbg.png
├── index-en.html
├── index.html
├── js
├── bootstrap.js
├── jquery-1.js
├── jquery-lang.js
├── jquery.js
└── zh_cn.js
└── termite_img
├── feature01.png
├── feature02.png
├── feature03.png
├── feature04.png
├── feature05.png
└── feature06.png
/.gitignore:
--------------------------------------------------------------------------------
1 | <<<<<<< HEAD
2 | .DS_Store
3 | download/.DS_Store
4 | _site/
5 | =======
6 | _site/
7 | _drafts/
8 | .DS_Store
9 | >>>>>>> a69eb28787f880dad8e18669effd8bb44663584e
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | name : Termite 用法
3 | ---
4 |
5 | # Usage
6 |
7 | 1. 以服务模式启动一个agent服务。
8 |
9 | > $ ./agent -l 8888
10 |
11 | 2. 令管理端连接到agent并对agent进行管理。
12 |
13 | > $ ./admin -c 127.0.0.1 -p 8888
14 |
15 | 3. 此时,admin端会得到一个内置的shell, 输入help指令可以得到帮助信息。
16 |
17 | >> help
18 |
19 | 4. 通过show指令可以得到当前agent的拓扑情况。
20 |
21 | >> show
22 | 0M
23 | +-- 1M
24 | 由于当前拓扑中只有一个agent,所以展示结果只有 1M ,
25 | 其中1 为节点的ID号,
26 | M为MacOS系统的简写,Linux为L,Windows简写为W。
27 |
28 | 5. 将新agent加入当前拓扑
29 | > ./agent -c 127.0.0.1 -p 8888
30 |
31 | 6. 此时show指令将得到如下效果
32 | 0M
33 | +-- 1M
34 | | +-- 2M
35 | 这表明,当前拓扑中有两个节点,其中由于2节点需要通过1节点才能访问,所以下挂在1节点下方。
36 |
37 | 7. 在2节点开启socks代理,并绑定在本地端口
38 | >> goto 2
39 | 将当前被管理节点切换为 2 号节点。
40 | >> socks 1080
41 | 此时,本地1080 端口会启动个监听服务,而服务提供者为2号节点。
42 |
43 | 8. 在1号节点开启一个shell并绑定到本地端口
44 | >> goto 1
45 | >> shell 7777
46 | 此时,通过nc本地的 7777 端口,就可以得到一个 1 节点提供的 shell.
47 |
48 | 9. 将远程的文件下载至本地
49 | >> goto 1
50 | >> downfile 1.txt 2.txt
51 | 将1 节点,目录下的 1.txt 下载至本地,并命名为2.txt
52 |
53 | 10. 上传文件至远程节点
54 | >> goto 2
55 | >> upfile 2.txt 3.txt
56 | 将本地的 2.txt 上传至 2号节点的目录,并命名为3.txt
57 |
58 | 11. 端口转接
59 | >> goto 2
60 | >> lcxtran 3388 10.0.0.1 3389
61 | 以2号节点为跳板,将 10.0.0.1 的 3389 端口映射至本地的 3388 端口
62 |
63 |
64 | # 更多支持
65 | http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4
66 | http://rootkiter.com/toolvideo/toolmp4/2socks.mp4
67 | http://rootkiter.com/toolvideo/toolmp4/3lcxtran.mp4
68 | http://rootkiter.com/toolvideo/toolmp4/4shell.mp4
69 | http://rootkiter.com/toolvideo/toolmp4/5file.mp4
70 |
71 | # 联系作者
72 | rootkiter@rootkiter.com
73 |
--------------------------------------------------------------------------------
/README.txt:
--------------------------------------------------------------------------------
1 | ---
2 | name : Termite 用法
3 | ---
4 |
5 | # Usage
6 |
7 | 1. 以服务模式启动一个agent服务。
8 |
9 | > $ ./agent -l 8888
10 |
11 | 2. 令管理端连接到agent并对agent进行管理。
12 |
13 | > $ ./admin -c 127.0.0.1 -p 8888
14 |
15 | 3. 此时,admin端会得到一个内置的shell, 输入help指令可以得到帮助信息。
16 |
17 | >> help
18 |
19 | 4. 通过show指令可以得到当前agent的拓扑情况。
20 |
21 | >> show
22 | 0M
23 | +-- 1M
24 | 由于当前拓扑中只有一个agent,所以展示结果只有 1M ,
25 | 其中1 为节点的ID号,
26 | M为MacOS系统的简写,Linux为L,Windows简写为W。
27 |
28 | 5. 将新agent加入当前拓扑
29 | > ./agent -c 127.0.0.1 -p 8888
30 |
31 | 6. 此时show指令将得到如下效果
32 | 0M
33 | +-- 1M
34 | | +-- 2M
35 | 这表明,当前拓扑中有两个节点,其中由于2节点需要通过1节点才能访问,所以下挂在1节点下方。
36 |
37 | 7. 在2节点开启socks代理,并绑定在本地端口
38 | >> goto 2
39 | 将当前被管理节点切换为 2 号节点。
40 | >> socks 1080
41 | 此时,本地1080 端口会启动个监听服务,而服务提供者为2号节点。
42 |
43 | 8. 在1号节点开启一个shell并绑定到本地端口
44 | >> goto 1
45 | >> shell 7777
46 | 此时,通过nc本地的 7777 端口,就可以得到一个 1 节点提供的 shell.
47 |
48 | 9. 将远程的文件下载至本地
49 | >> goto 1
50 | >> downfile 1.txt 2.txt
51 | 将1 节点,目录下的 1.txt 下载至本地,并命名为2.txt
52 |
53 | 10. 上传文件至远程节点
54 | >> goto 2
55 | >> upfile 2.txt 3.txt
56 | 将本地的 2.txt 上传至 2号节点的目录,并命名为3.txt
57 |
58 | 11. 端口转接
59 | >> goto 2
60 | >> lcxtran 3388 10.0.0.1 3389
61 | 以2号节点为跳板,将 10.0.0.1 的 3389 端口映射至本地的 3388 端口
62 |
63 |
64 | # 更多支持
65 | http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4
66 | http://rootkiter.com/toolvideo/toolmp4/2socks.mp4
67 | http://rootkiter.com/toolvideo/toolmp4/3lcxtran.mp4
68 | http://rootkiter.com/toolvideo/toolmp4/4shell.mp4
69 | http://rootkiter.com/toolvideo/toolmp4/5file.mp4
70 |
71 | # 联系作者
72 | rootkiter@rootkiter.com
73 |
--------------------------------------------------------------------------------
/README_en.txt:
--------------------------------------------------------------------------------
1 | ---
2 | name : Termite
3 | ---
4 |
5 | # Usage
6 |
7 | 1. Node in service mode.
8 |
9 | > $ ./agent -l 8888
10 |
11 | 2. Use admin (client mode) to connect the node above.
12 |
13 | > $ ./admin -c 127.0.0.1 -p 8888
14 |
15 | 3. You will get a built-in shell and get help through the help command.
16 |
17 | >> help
18 |
19 | 4. Check current node topology.
20 |
21 | >> show
22 | 0M
23 | +-- 1M
24 |
25 | * There is currently only one node.
26 | * Its ID is 1.
27 | * M --> MacOS, L --> Linux, W --> Windows
28 |
29 | 5. Add a new node ( client mode ).
30 | > ./agent -c 127.0.0.1 -p 8888
31 |
32 | 6. Check current node topology.
33 | 0M
34 | +-- 1M
35 | | +-- 2M
36 |
37 | * Now there are two node, and the 2 node is located below the 1 node.
38 |
39 | 7. Binding a socks service for node 2 at the local port.
40 | >> goto 2
41 | Switch 2 node.
42 | >> socks 1080
43 | A 1080 port socks service will appear on the local machine, but the provider of the service is node 2.
44 | localhost:1080 -----> [@2-node] socks service.
45 |
46 | 8. Binding a shell services for node 1 at the local port.
47 | >> goto 1
48 | >> shell 7777
49 | nc 127.0.0.1 7777, you will catch it. And the provider of the service is node 1.
50 | localhost:7777 -----> [@1-node] shell console.
51 |
52 | 9. Download file from remote node.
53 | >> goto 1
54 | >> downfile 1.txt 2.txt
55 | [@1-node] 1.txt ------> [@localhost] 2.txt
56 |
57 | 10. Upload file from local machine.
58 | >> goto 2
59 | >> upfile 2.txt 3.txt
60 | [@localhost] 2.txt ------> [@2-node] 3.txt
61 |
62 | 11. Port forwarding
63 | >> goto 2
64 | >> lcxtran 3388 10.0.0.1 3389
65 | localhost:3388 -------> [@2-node] 10.0.0.1:3389
66 |
67 |
68 | # Videos [Chinese...]
69 | http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4
70 | http://rootkiter.com/toolvideo/toolmp4/2socks.mp4
71 | http://rootkiter.com/toolvideo/toolmp4/3lcxtran.mp4
72 | http://rootkiter.com/toolvideo/toolmp4/4shell.mp4
73 | http://rootkiter.com/toolvideo/toolmp4/5file.mp4
74 |
75 | # Author:
76 | rootkiter@rootkiter.com
77 |
--------------------------------------------------------------------------------
/css/jquery.css:
--------------------------------------------------------------------------------
1 | /*
2 | * FancyBox - jQuery Plugin
3 | * Simple and fancy lightbox alternative
4 | *
5 | * Examples and documentation at: http://fancybox.net
6 | *
7 | * Copyright (c) 2008 - 2010 Janis Skarnelis
8 | * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
9 | *
10 | * Version: 1.3.4 (11/11/2010)
11 | * Requires: jQuery v1.3+
12 | *
13 | * Dual licensed under the MIT and GPL licenses:
14 | * http://www.opensource.org/licenses/mit-license.php
15 | * http://www.gnu.org/licenses/gpl.html
16 | */
17 |
18 | #fancybox-loading {
19 | position: fixed;
20 | top: 50%;
21 | left: 50%;
22 | width: 40px;
23 | height: 40px;
24 | margin-top: -20px;
25 | margin-left: -20px;
26 | cursor: pointer;
27 | overflow: hidden;
28 | z-index: 1104;
29 | display: none;
30 | }
31 |
32 | #fancybox-loading div {
33 | position: absolute;
34 | top: 0;
35 | left: 0;
36 | width: 40px;
37 | height: 540px;
38 | background-image: url('../img/fancybox/fancybox.png');
39 | }
40 |
41 | #fancybox-overlay {
42 | position: absolute;
43 | top: 0;
44 | left: 0;
45 | width: 100%;
46 | z-index: 1100;
47 | display: none;
48 | }
49 |
50 | #fancybox-tmp {
51 | padding: 0;
52 | margin: 0;
53 | border: 0;
54 | overflow: auto;
55 | display: none;
56 | }
57 |
58 | #fancybox-wrap {
59 | position: absolute;
60 | top: 0;
61 | left: 0;
62 | padding: 20px;
63 | z-index: 1101;
64 | outline: none;
65 | display: none;
66 | }
67 |
68 | #fancybox-outer {
69 | position: relative;
70 | width: 100%;
71 | height: 100%;
72 | background: transparent;
73 | }
74 |
75 | #fancybox-content {
76 | width: 0;
77 | height: 0;
78 | padding: 0;
79 | outline: none;
80 | position: relative;
81 | overflow: hidden;
82 | z-index: 1102;
83 | border: 0px solid rgba(0,0,0,.6);
84 | border-radius: 5px;
85 | background:black;
86 | }
87 |
88 | #fancybox-hide-sel-frame {
89 | position: absolute;
90 | top: 0;
91 | left: 0;
92 | width: 100%;
93 | height: 100%;
94 | background: transparent;
95 | z-index: 1101;
96 | }
97 |
98 | #fancybox-close {
99 | position: absolute;
100 | top: -15px;
101 | left: -15px;
102 | width: 30px;
103 | height: 30px;
104 | background: transparent url('../img/fancybox/fancybox.png') -40px 0px;
105 | cursor: pointer;
106 | z-index: 1103;
107 | display: none;
108 | }
109 |
110 | #fancybox-error {
111 | color: #444;
112 | font: normal 12px/20px Arial;
113 | padding: 14px;
114 | margin: 0;
115 | }
116 |
117 | #fancybox-img {
118 | width: 100%;
119 | height: 100%;
120 | padding: 0;
121 | margin: 0;
122 | border: none;
123 | outline: none;
124 | line-height: 0;
125 | vertical-align: top;
126 | }
127 |
128 | #fancybox-frame {
129 | width: 100%;
130 | height: 100%;
131 | border: none;
132 | display: block;
133 | }
134 |
135 | #fancybox-left, #fancybox-right {
136 | position: absolute;
137 | bottom: 0px;
138 | height: 100%;
139 | width: 35%;
140 | cursor: pointer;
141 | outline: none;
142 | background: transparent url('../img/fancybox/blank.gif');
143 | z-index: 1102;
144 | display: none;
145 | }
146 |
147 | #fancybox-left {
148 | left: 0px;
149 | }
150 |
151 | #fancybox-right {
152 | right: 0px;
153 | }
154 |
155 | #fancybox-left-ico, #fancybox-right-ico {
156 | position: absolute;
157 | top: 50%;
158 | left: -9999px;
159 | width: 30px;
160 | height: 30px;
161 | margin-top: -15px;
162 | cursor: pointer;
163 | z-index: 1102;
164 | display: block;
165 | }
166 |
167 | #fancybox-left-ico {
168 | background-image: url('../img/fancybox/fancybox.png');
169 | background-position: -40px -30px;
170 | }
171 |
172 | #fancybox-right-ico {
173 | background-image: url('../img/fancybox/fancybox.png');
174 | background-position: -40px -60px;
175 | }
176 |
177 | #fancybox-left:hover, #fancybox-right:hover {
178 | visibility: visible; /* IE6 */
179 | }
180 |
181 | #fancybox-left:hover span {
182 | left: 20px;
183 | }
184 |
185 | #fancybox-right:hover span {
186 | left: auto;
187 | right: 20px;
188 | }
189 |
190 | .fancybox-bg {
191 | position: absolute;
192 | padding: 0;
193 | margin: 0;
194 | border: 0;
195 | width: 20px;
196 | height: 20px;
197 | z-index: 1001;
198 | }
199 |
200 | #fancybox-bg-n {
201 | top: -20px;
202 | left: 0;
203 | width: 100%;
204 | background-image: url('../img/fancybox/fancybox-x.png');
205 | }
206 |
207 | #fancybox-bg-ne {
208 | top: -20px;
209 | right: -20px;
210 | background-image: url('../img/fancybox/fancybox.png');
211 | background-position: -40px -162px;
212 | }
213 |
214 | #fancybox-bg-e {
215 | top: 0;
216 | right: -20px;
217 | height: 100%;
218 | background-image: url('../img/fancybox/fancybox-y.png');
219 | background-position: -20px 0px;
220 | }
221 |
222 | #fancybox-bg-se {
223 | bottom: -20px;
224 | right: -20px;
225 | background-image: url('../img/fancybox/fancybox.png');
226 | background-position: -40px -182px;
227 | }
228 |
229 | #fancybox-bg-s {
230 | bottom: -20px;
231 | left: 0;
232 | width: 100%;
233 | background-image: url('../img/fancybox/fancybox-x.png');
234 | background-position: 0px -20px;
235 | }
236 |
237 | #fancybox-bg-sw {
238 | bottom: -20px;
239 | left: -20px;
240 | background-image: url('../img/fancybox/fancybox.png');
241 | background-position: -40px -142px;
242 | }
243 |
244 | #fancybox-bg-w {
245 | top: 0;
246 | left: -20px;
247 | height: 100%;
248 | background-image: url('../img/fancybox/fancybox-y.png');
249 | }
250 |
251 | #fancybox-bg-nw {
252 | top: -20px;
253 | left: -20px;
254 | background-image: url('../img/fancybox/fancybox.png');
255 | background-position: -40px -122px;
256 | }
257 |
258 | #fancybox-title {
259 | font-family: Helvetica;
260 | font-size: 12px;
261 | z-index: 1102;
262 | }
263 |
264 | .fancybox-title-inside {
265 | padding-bottom: 10px;
266 | text-align: center;
267 | color: #333;
268 | background: #fff;
269 | position: relative;
270 | }
271 |
272 | .fancybox-title-outside {
273 | padding-top: 10px;
274 | color: #fff;
275 | }
276 |
277 | .fancybox-title-over {
278 | position: absolute;
279 | bottom: 0;
280 | left: 0;
281 | color: #FFF;
282 | text-align: left;
283 | }
284 |
285 | #fancybox-title-over {
286 | padding: 10px;
287 | background-image: url('../img/fancybox/fancy_title_over.png');
288 | display: block;
289 | }
290 |
291 | .fancybox-title-float {
292 | position: absolute;
293 | left: 0;
294 | bottom: -20px;
295 | height: 32px;
296 | }
297 |
298 | #fancybox-title-float-wrap {
299 | border: none;
300 | border-collapse: collapse;
301 | width: auto;
302 | }
303 |
304 | #fancybox-title-float-wrap td {
305 | border: none;
306 | white-space: nowrap;
307 | }
308 |
309 | #fancybox-title-float-left {
310 | padding: 0 0 0 15px;
311 | background: url('../img/fancybox/fancybox.png') -40px -90px no-repeat;
312 | }
313 |
314 | #fancybox-title-float-main {
315 | color: #FFF;
316 | line-height: 29px;
317 | font-weight: bold;
318 | padding: 0 0 3px 0;
319 | background: url('../img/fancybox/fancybox-x.png') 0px -40px;
320 | }
321 |
322 | #fancybox-title-float-right {
323 | padding: 0 0 0 15px;
324 | background: url('../img/fancybox/fancybox.png') -55px -90px no-repeat;
325 | }
326 |
327 | /* IE6 */
328 |
329 | .fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_close.png', sizingMethod='scale'); }
330 |
331 | .fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_nav_left.png', sizingMethod='scale'); }
332 | .fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_nav_right.png', sizingMethod='scale'); }
333 |
334 | .fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
335 | .fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_title_left.png', sizingMethod='scale'); }
336 | .fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_title_main.png', sizingMethod='scale'); }
337 | .fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_title_right.png', sizingMethod='scale'); }
338 |
339 | .fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
340 | height: expression(this.parentNode.clientHeight + "px");
341 | }
342 |
343 | #fancybox-loading.fancybox-ie6 {
344 | position: absolute; margin-top: 0;
345 | top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
346 | }
347 |
348 | #fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_loading.png', sizingMethod='scale'); }
349 |
350 | /* IE6, IE7, IE8 */
351 |
352 | .fancybox-ie .fancybox-bg { background: transparent !important; }
353 |
354 | .fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
355 | .fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
356 | .fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
357 | .fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
358 | .fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
359 | .fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
360 | .fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
361 | .fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
--------------------------------------------------------------------------------
/css/termite.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v2.0.2
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
11 | .clearfix:after{clear:both;}
12 | .hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
13 | .input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
14 | article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
15 | audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
16 | audio:not([controls]){display:none;}
17 | html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
18 | a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
19 | a:hover,a:active{outline:0;}
20 | sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
21 | sup{top:-0.5em;}
22 | sub{bottom:-0.25em;}
23 | img{height:auto;border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;}
24 | button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
25 | button,input{*overflow:visible;line-height:normal;}
26 | button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
27 | button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
28 | input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
29 | input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
30 | textarea{overflow:auto;vertical-align:top;}
31 | body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#ffffff;background:#1e1e1e;}
32 | a{color:#238bcd;text-decoration:none;}
33 | a:hover{color:#5aaee3;text-decoration:underline;}
34 | .container{margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
35 | .container:after{clear:both;}
36 | .container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
37 | .container-fluid:after{clear:both;}
38 | p{margin:0 0 11px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:22px;}p small{font-size:12px;color:#999999;}
39 | .lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
40 | h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
41 | h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
42 | h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
43 | h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
44 | h4,h5,h6{line-height:18px;}
45 | h4{font-size:14px;}h4 small{font-size:12px;}
46 | h5{font-size:12px;}
47 | h6{font-size:11px;color:#999999;text-transform:uppercase;}
48 | .page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
49 | .page-header h1{line-height:1;}
50 | ul,ol{padding:0;margin:0 0 9px 25px;}
51 | ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
52 | ul{list-style:disc;}
53 | ol{list-style:decimal;}
54 | li{line-height:20px;}
55 | ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
56 | dl{margin-bottom:18px;}
57 | dt,dd{line-height:18px;}
58 | dt{font-weight:bold;line-height:17px;}
59 | dd{margin-left:9px;}
60 | .dl-horizontal dt{float:left;clear:left;width:120px;text-align:right;}
61 | .dl-horizontal dd{margin-left:130px;}
62 | hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
63 | strong{font-weight:bold;}
64 | em{font-style:italic;}
65 | .muted{color:#999999;}
66 | abbr[title]{border-bottom:1px dotted #ddd;cursor:help;}
67 | abbr.initialism{font-size:90%;text-transform:uppercase;}
68 | blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
69 | blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
70 | blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
71 | q:before,q:after,blockquote:before,blockquote:after{content:"";}
72 | address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
73 | small{font-size:100%;}
74 | cite{font-style:normal;}
75 | code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
76 | code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
77 | pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;}pre.prettyprint{margin-bottom:18px;}
78 | pre code{padding:0;color:inherit;background-color:transparent;border:0;}
79 | .pre-scrollable{max-height:340px;overflow-y:scroll;}
80 | .label{padding:1px 4px 2px;font-size:10.998px;font-weight:bold;line-height:13px;color:#ffffff;vertical-align:middle;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
81 | .label:hover{color:#ffffff;text-decoration:none;}
82 | .label-important{background-color:#b94a48;}
83 | .label-important:hover{background-color:#953b39;}
84 | .label-warning{background-color:#f89406;}
85 | .label-warning:hover{background-color:#c67605;}
86 | .label-success{background-color:#468847;}
87 | .label-success:hover{background-color:#356635;}
88 | .label-info{background-color:#3a87ad;}
89 | .label-info:hover{background-color:#2d6987;}
90 | .label-inverse{background-color:#333333;}
91 | .label-inverse:hover{background-color:#1a1a1a;}
92 | .badge{padding:1px 9px 2px;font-size:12.025px;font-weight:bold;white-space:nowrap;color:#ffffff;background-color:#999999;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
93 | .badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}
94 | .badge-error{background-color:#b94a48;}
95 | .badge-error:hover{background-color:#953b39;}
96 | .badge-warning{background-color:#f89406;}
97 | .badge-warning:hover{background-color:#c67605;}
98 | .badge-success{background-color:#468847;}
99 | .badge-success:hover{background-color:#356635;}
100 | .badge-info{background-color:#3a87ad;}
101 | .badge-info:hover{background-color:#2d6987;}
102 | .badge-inverse{background-color:#333333;}
103 | .badge-inverse:hover{background-color:#1a1a1a;}
104 | table{max-width:100%;border-collapse:collapse;border-spacing:0;background-color:transparent;}
105 | .table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
106 | .table th{font-weight:bold;}
107 | .table thead th{vertical-align:bottom;}
108 | .table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
109 | .table tbody+tbody{border-top:2px solid #dddddd;}
110 | .table-condensed th,.table-condensed td{padding:4px 5px;}
111 | .table-bordered{border:1px solid #dddddd;border-left:0;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
112 | .table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
113 | .table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
114 | .table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
115 | .table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
116 | .table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
117 | .table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
118 | .table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;}
119 | table .span1{float:none;width:44px;margin-left:0;}
120 | table .span2{float:none;width:124px;margin-left:0;}
121 | table .span3{float:none;width:204px;margin-left:0;}
122 | table .span4{float:none;width:284px;margin-left:0;}
123 | table .span5{float:none;width:364px;margin-left:0;}
124 | table .span6{float:none;width:444px;margin-left:0;}
125 | table .span7{float:none;width:524px;margin-left:0;}
126 | table .span8{float:none;width:604px;margin-left:0;}
127 | table .span9{float:none;width:684px;margin-left:0;}
128 | table .span10{float:none;width:764px;margin-left:0;}
129 | table .span11{float:none;width:844px;margin-left:0;}
130 | table .span12{float:none;width:924px;margin-left:0;}
131 | table .span13{float:none;width:1004px;margin-left:0;}
132 | table .span14{float:none;width:1084px;margin-left:0;}
133 | table .span15{float:none;width:1164px;margin-left:0;}
134 | table .span16{float:none;width:1244px;margin-left:0;}
135 | table .span17{float:none;width:1324px;margin-left:0;}
136 | table .span18{float:none;width:1404px;margin-left:0;}
137 | table .span19{float:none;width:1484px;margin-left:0;}
138 | table .span20{float:none;width:1564px;margin-left:0;}
139 | table .span21{float:none;width:1644px;margin-left:0;}
140 | table .span22{float:none;width:1724px;margin-left:0;}
141 | table .span23{float:none;width:1804px;margin-left:0;}
142 | table .span24{float:none;width:1884px;margin-left:0;}
143 | form{margin:0 0 18px;}
144 | fieldset{padding:0;margin:0;border:0;}
145 | legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}legend small{font-size:13.5px;color:#999999;}
146 | label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px;}
147 | input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
148 | label{display:block;margin-bottom:5px;color:#333333;}
149 | input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
150 | .uneditable-textarea{width:auto;height:auto;}
151 | label input,label textarea,label select{display:block;}
152 | input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:0 \9;}
153 | input[type="image"]{border:0;}
154 | input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
155 | input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
156 | select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
157 | input[type="file"]{line-height:18px \9;}
158 | select{width:220px;background-color:#ffffff;}
159 | select[multiple],select[size]{height:auto;}
160 | input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
161 | textarea{height:auto;}
162 | input[type="hidden"]{display:none;}
163 | .radio,.checkbox{padding-left:18px;}
164 | .radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
165 | .controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
166 | .radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
167 | .radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
168 | input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
169 | input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
170 | input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
171 | .input-mini{width:60px;}
172 | .input-small{width:90px;}
173 | .input-medium{width:150px;}
174 | .input-large{width:210px;}
175 | .input-xlarge{width:270px;}
176 | .input-xxlarge{width:530px;}
177 | input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
178 | input,textarea,.uneditable-input{margin-left:0;}
179 | input.span12, textarea.span12, .uneditable-input.span12{width:930px;}
180 | input.span11, textarea.span11, .uneditable-input.span11{width:850px;}
181 | input.span10, textarea.span10, .uneditable-input.span10{width:770px;}
182 | input.span9, textarea.span9, .uneditable-input.span9{width:690px;}
183 | input.span8, textarea.span8, .uneditable-input.span8{width:610px;}
184 | input.span7, textarea.span7, .uneditable-input.span7{width:530px;}
185 | input.span6, textarea.span6, .uneditable-input.span6{width:450px;}
186 | input.span5, textarea.span5, .uneditable-input.span5{width:370px;}
187 | input.span4, textarea.span4, .uneditable-input.span4{width:290px;}
188 | input.span3, textarea.span3, .uneditable-input.span3{width:210px;}
189 | input.span2, textarea.span2, .uneditable-input.span2{width:130px;}
190 | input.span1, textarea.span1, .uneditable-input.span1{width:50px;}
191 | input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#eeeeee;border-color:#ddd;cursor:not-allowed;}
192 | .control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
193 | .control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
194 | .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
195 | .control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
196 | .control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
197 | .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
198 | .control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
199 | .control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
200 | .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
201 | input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
202 | .form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#eeeeee;border-top:1px solid #ddd;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";}
203 | .form-actions:after{clear:both;}
204 | .uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
205 | :-moz-placeholder{color:#999999;}
206 | ::-webkit-input-placeholder{color:#999999;}
207 | .help-block,.help-inline{color:#555555;}
208 | .help-block{display:block;margin-bottom:9px;}
209 | .help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
210 | .input-prepend,.input-append{margin-bottom:5px;}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{*margin-left:0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
211 | .input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
212 | .input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #ffffff;vertical-align:middle;background-color:#eeeeee;border:1px solid #ccc;}
213 | .input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
214 | .input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
215 | .input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
216 | .input-append input,.input-append select .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
217 | .input-append .uneditable-input{border-left-color:#eee;border-right-color:#ccc;}
218 | .input-append .add-on,.input-append .btn{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
219 | .input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
220 | .input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
221 | .input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
222 | .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
223 | .form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;margin-bottom:0;}
224 | .form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
225 | .form-search label,.form-inline label{display:inline-block;}
226 | .form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
227 | .form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
228 | .form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}
229 | .control-group{margin-bottom:9px;}
230 | legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
231 | .form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
232 | .form-horizontal .control-group:after{clear:both;}
233 | .form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right;}
234 | .form-horizontal .controls{margin-left:160px;*display:inline-block;*margin-left:0;*padding-left:20px;}
235 | .form-horizontal .help-block{margin-top:9px;margin-bottom:0;}
236 | .form-horizontal .form-actions{padding-left:160px;}
237 | .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-ms-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(top, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #cccccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;}
238 | .btn:active,.btn.active{background-color:#cccccc \9;}
239 | .btn:first-child{*margin-left:0;}
240 | .btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
241 | .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
242 | .btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0;}
243 | .btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
244 | .btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
245 | .btn-large [class^="icon-"]{margin-top:1px;}
246 | .btn-small{padding:5px 9px;font-size:11px;line-height:16px;}
247 | .btn-small [class^="icon-"]{margin-top:-1px;}
248 | .btn-mini{padding:2px 6px;font-size:11px;line-height:14px;}
249 | .btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
250 | .btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
251 | .btn-primary{background-color:#237acd;background-image:-moz-linear-gradient(top, #238bcd, #2360cd);background-image:-ms-linear-gradient(top, #238bcd, #2360cd);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#238bcd), to(#2360cd));background-image:-webkit-linear-gradient(top, #238bcd, #2360cd);background-image:-o-linear-gradient(top, #238bcd, #2360cd);background-image:linear-gradient(top, #238bcd, #2360cd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#238bcd', endColorstr='#2360cd', GradientType=0);border-color:#2360cd #2360cd #18428c;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#2360cd;}
252 | .btn-primary:active,.btn-primary.active{background-color:#1c4ca1 \9;}
253 | .btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
254 | .btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
255 | .btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
256 | .btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
257 | .btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
258 | .btn-success:active,.btn-success.active{background-color:#408140 \9;}
259 | .btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
260 | .btn-info:active,.btn-info.active{background-color:#24748c \9;}
261 | .btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top, #555555, #222222);background-image:-ms-linear-gradient(top, #555555, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));background-image:-webkit-linear-gradient(top, #555555, #222222);background-image:-o-linear-gradient(top, #555555, #222222);background-image:linear-gradient(top, #555555, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222222;}
262 | .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
263 | button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
264 | button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
265 | button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
266 | button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
267 | [class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url("../img/sprite.png");background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0;}
268 | .icon-play{ width: 17px; height: 17px; background-position:0 -230px;}
269 | .icon-question{ width: 22px; height: 22px; background-position: 0 -146px;}
270 | .icon-answer{ width: 22px; height: 22px; background-position: 0 -188px;}
271 | .icon-weibo{width: 32px; height: 32px; background-position: 0 -371px;}
272 | .icon-tencentweibo{width: 32px; height: 32px; background-position: 0 -319px;}
273 | .icon-mail{width: 32px; height: 32px; background-position: 0 -267px;}
274 | .icon-tencentweibo_small{width: 24px; height: 24px; background-position: 0 -425px;}
275 |
276 | .btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
277 | .btn-group:after{clear:both;}
278 | .btn-group:first-child{*margin-left:0;}
279 | .btn-group+.btn-group{margin-left:5px;}
280 | .btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
281 | .btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
282 | .btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
283 | .btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
284 | .btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
285 | .btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
286 | .btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
287 | .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
288 | .btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:3px;*padding-bottom:3px;}
289 | .btn-group .btn-mini.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:1px;*padding-bottom:1px;}
290 | .btn-group .btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px;}
291 | .btn-group .btn-large.dropdown-toggle{padding-left:12px;padding-right:12px;}
292 | .btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
293 | .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
294 | .btn .caret{margin-top:7px;margin-left:0;}
295 | .btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
296 | .btn-mini .caret{margin-top:5px;}
297 | .btn-small .caret{margin-top:6px;}
298 | .btn-large .caret{margin-top:6px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
299 | .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}
300 | .nav{margin-left:0;margin-bottom:18px;list-style:none;}
301 | .nav>li>a{display:block;}
302 | .nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}
303 | .nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
304 | .nav li+.nav-header{margin-top:9px;}
305 | .nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
306 | .nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
307 | .nav-list>li>a{padding:3px 15px;}
308 | .nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#238bcd;}
309 | .nav-list [class^="icon-"]{margin-right:2px;}
310 | .nav-list .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}
311 | .nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";}
312 | .nav-tabs:after,.nav-pills:after{clear:both;}
313 | .nav-tabs>li,.nav-pills>li{float:left;}
314 | .nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
315 | .nav-tabs{border-bottom:1px solid #ddd;}
316 | .nav-tabs>li{margin-bottom:-1px;}
317 | .nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}
318 | .nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
319 | .nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
320 | .nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#238bcd;}
321 | .nav-stacked>li{float:none;}
322 | .nav-stacked>li>a{margin-right:0;}
323 | .nav-tabs.nav-stacked{border-bottom:0;}
324 | .nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
325 | .nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
326 | .nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
327 | .nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}
328 | .nav-pills.nav-stacked>li>a{margin-bottom:3px;}
329 | .nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
330 | .nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;}
331 | .nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
332 | .nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#238bcd;border-bottom-color:#238bcd;margin-top:6px;}
333 | .nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#5aaee3;border-bottom-color:#5aaee3;}
334 | .nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;border-bottom-color:#333333;}
335 | .nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;}
336 | .nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}
337 | .nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
338 | .tabs-stacked .open>a:hover{border-color:#999999;}
339 | .tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";}
340 | .tabbable:after{clear:both;}
341 | .tab-content{display:table;width:100%;}
342 | .tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;}
343 | .tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
344 | .tab-content>.active,.pill-content>.active{display:block;}
345 | .tabs-below .nav-tabs{border-top:1px solid #ddd;}
346 | .tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;}
347 | .tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}
348 | .tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;}
349 | .tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;}
350 | .tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
351 | .tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
352 | .tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
353 | .tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
354 | .tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
355 | .tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
356 | .tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
357 | .tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
358 | .tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
359 | .navbar{*position:relative;*z-index:2;overflow:visible;margin-bottom:18px;}
360 | .navbar-inner{padding-left:20px;padding-right:20px;background-color:transparent;background-image: url(../img/nav_bg.png);background-repeat:repeat-x;}
361 | .navbar .container{width:auto;}
362 | .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;}
363 | .btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;}
364 | .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
365 | .btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
366 | .nav-collapse.collapse{height:auto;}
367 | .navbar{color:#ffffff;}.navbar .brand:hover{text-decoration:none;}
368 | .navbar .brand{float:left;display:block;padding:8px 20px 10px 0;/*margin-left:-20px;*/font-size:20px;font-weight:200;line-height:42px;color:#ffffff;}
369 | .navbar .navbar-text{margin-bottom:0;line-height:60px;}
370 | .navbar .btn,.navbar .btn-group{margin-top:15px;}
371 | .navbar .btn-group .btn{margin-top:0;}
372 | .navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";}
373 | .navbar-form:after{clear:both;}
374 | .navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:15px;}
375 | .navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0;}
376 | .navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
377 | .navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
378 | .navbar-search{position:relative;float:left;margin-top:16px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query:-moz-placeholder{color:#cccccc;}
379 | .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
380 | .navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
381 | .navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
382 | .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
383 | .navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;}
384 | .navbar-fixed-top{top:0;}
385 | .navbar-fixed-bottom{bottom:0;}
386 | .navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 120px;}
387 | .navbar .nav.pull-right{float:right;}
388 | .navbar .nav>li{display:block;float:left;}
389 | .navbar .nav>li>a{float:none;padding:10px 0 11px;line-height:43px;width: 140px;color:#ffffff;text-decoration:none;text-align: center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);outline: none; opacity: .8;-webkit-transition: font-size 0.2s ease-out;-moz-transition: font-size 0.2s ease-out;transition: font-size 0.2s ease-out;}
390 | .navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none; font-size: 20px; opacity: 1;}
391 | .navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:transparent; font-size: 20px;background-image: url(../img/tabbg.png); background-position: bottom; background-repeat:no-repeat; opacity: 1;}
392 | .navbar .divider-vertical{height:60px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;}
393 | .navbar .nav.pull-right{margin-left:10px;margin-right:0;}
394 | .navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
395 | .navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
396 | .navbar-fixed-bottom .dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
397 | .navbar-fixed-bottom .dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
398 | .navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
399 | .navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);}
400 | .navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;}
401 | .navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;}
402 | .navbar .nav.pull-right .dropdown-menu,.navbar .nav .dropdown-menu.pull-right{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before,.navbar .nav .dropdown-menu.pull-right:before{left:auto;right:12px;}
403 | .navbar .nav.pull-right .dropdown-menu:after,.navbar .nav .dropdown-menu.pull-right:after{left:auto;right:13px;}
404 | .thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";}
405 | .thumbnails:after{clear:both;}
406 | .thumbnails>li{float:left;margin:0 0 18px 20px;}
407 | .thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}
408 | a.thumbnail:hover{border-color:#238bcd;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
409 | .thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
410 | .thumbnail .caption{padding:9px;}
411 | .alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;}
412 | .alert-heading{color:inherit;}
413 | .alert .close{position:relative;top:-2px;right:-21px;line-height:18px;}
414 | .alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
415 | .alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
416 | .alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
417 | .alert-block{padding-top:14px;padding-bottom:14px;}
418 | .alert-block>p,.alert-block>ul{margin-bottom:0;}
419 | .alert-block p+p{margin-top:5px;}
420 | .hero-unit{padding:60px;margin-bottom:30px;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
421 | .hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit;}
422 | .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
423 | .well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
424 | .well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
425 | .close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;}
426 | .pull-right{float:right;}
427 | .pull-left{float:left;}
428 | .hide{display:none;}
429 | .show{display:block;}
430 | .invisible{visibility:hidden;}
431 | .fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
432 | .collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;}
433 | .hidden{display:none;visibility:hidden;}
434 | .visible-phone{display:none;}
435 | .visible-tablet{display:none;}
436 | .visible-desktop{display:block;}
437 | .hidden-phone{display:block;}
438 | .hidden-tablet{display:block;}
439 | .hidden-desktop{display:none;}
440 |
441 | /*
442 | * snip.css
443 | *
444 | */
445 | .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:960px;}
446 | a{
447 | -webkit-transition: all 0.15s ease-out;
448 | -moz-transition: all 0.15s ease-out;
449 | transition: all 0.15s ease-out;
450 | }
451 | .brand{width: 121px; height: 42px; outline: none; opacity: 0.9;
452 | -webkit-transition: all 0.15s ease-out;
453 | -moz-transition: all 0.15s ease-out;
454 | transition: all 0.15s ease-out;
455 | }
456 | .brand:hover{opacity: 1;}
457 | .brand:focus{outline: none;}
458 | .navbar .language{float: right; margin-top: 19px;}
459 | .language .btn{ padding: 3px 0; width: 55px; line-height: 12px; font-size: 11px; font-weight: normal; text-shadow: 0 -1px 0 rgba(0,0,0,0.6);}
460 |
461 | .main{height: 565px; background: #000 url(../img/header_bg.jpg) top center no-repeat; box-shadow: 0 5px 25px rgba(0,0,0,.5);}
462 | .main .container{ height: 100%; background: url(../img/main_bg.png) no-repeat 0 90%;}
463 |
464 | .description{ float: right; margin: 240px 0 0 0; display: block; width: 450px; line-height: 1.2; font-size: 46px; font-weight: normal; color: #fafafa; letter-spacing: 1px; text-shadow: 0 1px 2px rgba(0,0,0,.8); /*text-indent: -9999px; background: url(../img/h2_description.png);*/}
465 | .download{clear: right; float: right; margin: 28px 0 0; width: 423px;}
466 | .download li{float: left; margin-right: 28px; list-style: none;}
467 | .download li a{position:relative;display: block; height: 53px; text-indent: -9999px; background: url(../img/sprite.png) no-repeat; outline: none;
468 | -webkit-transition: box-shadow 0.15s ease-out;
469 | -moz-transition: box-shadow 0.15s ease-out;
470 | transition: box-shadow 0.15s ease-out;
471 | }
472 | .download li a:hover{box-shadow:0 0 25px rgba(255,255,255,.3)}
473 | .download .appstore a{width: 174px; background-position: 0 0;}
474 | .download .direct a{width: 168px; background-position: 0 -73px;}
475 | .ico_v2 {position:absolute;top:-16px;right:-14px;width:32px;height:32px;}
476 | .info{clear: right; float: right; margin: 23px 0 0; width: 445px; color: #fafafa; text-shadow: 0 1px 2px rgba(0,0,0,.8);}
477 | .info a{color: #fafafa;}
478 | .info a:hover{text-shadow:0 0 20px rgba(255,255,255,.2); text-decoration: none;}
479 | .info p [class^="icon-"], .info p [class*=" icon-"]{float: left; margin:0 2px 0 0;}
480 | .features{padding: 20px 0 20px; box-shadow: 0 -5px 40px rgba(0,0,0,.5) inset;}
481 | .feature{overflow: hidden; padding: 50px 0; background: url(../img/feature_divide.png) bottom no-repeat; text-shadow: 0 -1px 0 #000; }
482 | .feature h3{ margin-bottom: 25px; font-weight: normal; font-size: 30px;}
483 | .feature p{color: #c4c4c4;}
484 | .feature .figure{position:relative;float: left; padding: 0; margin: -2px 80px 0 0;}
485 | .feature .figure {box-shadow:0 5px 15px rgba(0,0,0,.4); opacity: .7;
486 | -webkit-transition: opacity 0.25s ease-out;
487 | -moz-transition: opacity 0.25s ease-out;
488 | transition: opacity 0.25s ease-out;
489 | }
490 | .feature .figure:hover{opacity: 1;}
491 | .feature figure{margin:0;}
492 | .features section:last-child .feature{background: none;}
493 | .features section:nth-child(odd) .feature .figure{float: right; margin: 0 0 0 80px;}
494 | .feature .icon-play{float: left;margin:2px 5px 0 0;}
495 | .figure_v2 {position:absolute;top:0;right:0;width:44px;height:45px;}
496 |
497 | .faq{padding-top: 30px; background: #333; box-shadow: 0 1px 0 rgba(255,255,255,.05) inset; text-shadow: 0 -1px 0 #000; }
498 | .faq-inner{background: #1e1e1e; text-shadow: 0 -1px 0 #000; box-shadow: 0 1px 0 #3c3c3c;}
499 |
500 | .faq h3{ margin: 20px 0 30px; text-align: center; font-weight: normal; font-size: 30px;}
501 | .faq-tabs{width: 300px; border: none !important; margin: 0 !important; background: #272727;}
502 |
503 |
504 | .faq-inner .faq-tabs > li{margin-bottom: 0; list-style: none;}
505 | .faq-inner .faq-tabs > li > a {display: block; margin-bottom: 0; margin-right: 0; border-top-color:#2b2b2b; border-bottom-color:#222; border-width: 1px 0; color: #b7b7b7; padding: 12px 18px; outline: none;}
506 | .faq-inner .faq-tabs li a:hover, .faq-inner .faq-tabs .active > a, .faq-inner .faq-tabs .active > a:hover { background: #1e1e1e; border-top-color:#1b1b1b; border-bottom-color:#222; border-width: 1px 0; border-radius: 0; margin-right: 0; color: #fff; text-decoration: none; box-shadow: 3px 0 2px #1b1b1b inset; }
507 | .faq-inner .faq-tabs li a:hover{background-color: #232323; box-shadow: none; border-top-color:#222; }
508 | .faq-contents{ width: auto; padding: 40px 50px;}
509 | .faq-question{margin-bottom: 20px;}
510 | .faq-question [class^="icon-"], .faq-question [class*=" icon-"]{float: left; margin:2px 15px 0 0;}
511 | .faq-question h4{font-size: 22px; font-weight: normal; line-height: 28px; margin-left: 35px;}
512 | .faq-answer [class^="icon-"], .faq-answer [class*=" icon-"]{float: left;}
513 | .faq-answer p{ margin:0 0 20px 35px; color: #c4c4c4;}
514 |
515 |
516 | .help {margin: 20px 0 30px;}
517 | .help p{text-align: center; color: #5a5a5a; text-shadow: 0 -1px 0 rgba(0,0,0,.6);}
518 | .help ul{overflow: hidden; width: 110px; margin: 10px auto;}
519 | .help ul li{float: left; margin-right: 10px; list-style: none;}
520 | .help ul li:last-child{margin-right: 0;}
521 | .help ul li [class^="icon-"], .help ul li [class*=" icon-"]{text-indent: -9999px; opacity: 0.4; display:block;
522 | -webkit-transition: opacity 0.15s ease-out;
523 | -moz-transition: opacity 0.15s ease-out;
524 | transition: opacity 0.15s ease-out;
525 | }
526 | .help ul li [class^="icon-"]:hover, .help ul li [class*=" icon-"]:hover{opacity: 1;}
527 |
528 | .footer{padding: 20px 0 150px;text-align: center; color: #464646; text-shadow: 0 -1px 0 #000; box-shadow: 0 10px 10px rgba(0,0,0,.1) inset;}
529 | .footer p{margin-bottom: 0;}
530 | .footer a {margin-right: 10px; color: #808080; }
531 | .footer a:last-child {margin-right: 0; }
532 | .footer a:hover {color: #ccc; }
533 | .copright{font-size: 11px;}
534 |
535 |
536 | .lang_en .download .direct a{background-position: -188px -73px;}
537 | .lang_en .description{font-size: 40px;}
538 |
539 | .lang-display-ctrl{display: none;}
540 | .lang_en .lang-display-ctrl-en{display: block;}
541 | .lang_zh_cn .lang-display-ctrl-zh_cn{display: block;}
542 |
543 | #page_plugin .features{padding-top: 90px; padding-bottom:40px; background: #272727; border-bottom: 1px solid rgba(255,255,255,.1); box-shadow:none; text-shadow: 0 -1px 0 #000; }
544 | #page_plugin .features .feature img{opacity:1;}
545 | #page_plugin .features .feature p, #page_plugin .features .feature li{color:#bbb;}
546 | #page_plugin .button-extension{display: block; margin:25px 0 35px; width:156px; height: 49px; text-indent: -9999px; background: url(../img/btn_download_plugin.png) no-repeat 0 0; outline: none; opacity:.9;
547 | -webkit-transition: opacity 0.15s ease-out;
548 | -moz-transition: opacity 0.15s ease-out;
549 | transition: opacity 0.15s ease-out;
550 | }
551 | #page_plugin .button-extension:hover{opacity:1; box-shadow:0 0 25px rgba(0,0,0,.3)}
552 |
553 | .lang_en .button-extension{background-position: 0px -50px !important;}
554 | .fromapp-show{display:none;}
555 | .fromapp .fromapp-hide{display:none;}
556 | .fromapp .fromapp-show{display:block;}
557 |
558 | @media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}
559 | @media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}
560 | @media (max-width:480px){.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:auto;}.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}
561 |
562 | @media (max-width:480px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:0;} .navbar .container{width:auto;padding:0;} .navbar .language{margin-right: 20px;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{clear:both;float:none;margin:0 0 9px;} .navbar .nav>li{float:none; border-bottom: 1px solid #2b2b2b;} .navbar .nav>li>a{margin-bottom:0; width: auto; text-align: left; line-height: 30px; font-size: 1em;} .navbar .nav>li>a:hover, .navbar .nav>li.active>a, .navbar .nav>li.active>a:hover{font-size: 1em; background-image: none;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#ffffff;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#ffffff;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}.main{height: auto; padding-bottom: 20px; background: none;} .main .container{background: none; text-align: center; } .description{margin: 30px 0 0; float: none; width: 100%; font-size: 2em;} .direct{display: none;} .download{clear: none; float: none; width: 100%; text-align: center; margin: 20px 0 0;}.download li{float: none; margin: 0;} .download li a{display: inline-block;}.info{float: none; width: auto;} .info p [class^="icon-"], .info p [class*=" icon-"]{float:none} .feature{padding: 30px 20px;} .feature figure, .feature:nth-child(odd) figure{float: none; margin: 0 0 30px;}.faq-answer p img{width: 90%;} .tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs{display: none;} .tab-content > .tab-pane, .pill-content > .pill-pane{display: block; margin-bottom: 30px;} .fade{opacity: 1;} .faq-inner {background: transparent;} .faq-contents{padding: 20px;} .help{padding: 0 20px;} footer{padding-bottom: 60px;}}
563 | /*@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;} .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {width: 750px;} .navbar .nav{margin-left: 0;} .description{width: auto; max-width: 250px; margin: 160px 0 0; font-size: 26px;} .download{width: 250px;} .download li {margin-bottom: 20px;}}*/
564 | @media (min-width:768px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:960px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .navbar .nav{margin-left:120px;} .description{width: 450px; max-width:450px; margin: 220px 0 0 0; font-size: 46px;} .download{width: 446px;} .download li {margin-bottom: 0;}}
565 |
566 | @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2){
567 | .brand {}
568 | .navbar .nav .active > a, .navbar .nav .active > a:hover {}
569 | /*.main {background-image:-webkit-image-set(url(../img/header_bg.jpg) 1x,url(../img/header_bg@2X.jpg) 2x);}*/
570 | .main .container {}
571 | [class^="icon-"], [class*=" icon-"], .download li a {}
572 |
573 | .feature img {opacity:0;}
574 | .feature01 .figure {background-image:-webkit-image-set(url(../img/feature01.jpg) 1x,url(../img/feature01@2X.jpg) 2x);}
575 | .feature02 .figure {background-image:-webkit-image-set(url(../img/feature02.jpg) 1x,url(../img/feature02@2X.jpg) 2x);}
576 | .feature03 .figure {background-image:-webkit-image-set(url(../img/feature03.jpg) 1x,url(../img/feature03@2X.jpg) 2x);}
577 | .feature04 .figure {background-image:-webkit-image-set(url(../img/feature04.jpg) 1x,url(../img/feature04@2X.jpg) 2x);}
578 | .feature05 .figure {background-image:-webkit-image-set(url(../img/feature05.jpg) 1x,url(../img/feature05@2X.jpg) 2x);}
579 | .feature06 .figure {background-image:-webkit-image-set(url(../img/feature06.jpg) 1x,url(../img/feature06@2X.jpg) 2x);}
580 |
581 | .ico_v2 {background-image:-webkit-image-set(url(../img/v2.0.png) 1x,url(../img/v2.0@2X.png) 2x);}
582 | .figure_v2 {background-image:-webkit-image-set(url(../img/v2.0star.png) 1x,url(../img/v2.0star@2X.png) 2x);}
583 | }
584 |
585 |
--------------------------------------------------------------------------------
/img/feature_divide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/feature_divide.png
--------------------------------------------------------------------------------
/img/header_bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/header_bg.jpg
--------------------------------------------------------------------------------
/img/main_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/main_bg.png
--------------------------------------------------------------------------------
/img/main_bg.png.bak:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/main_bg.png.bak
--------------------------------------------------------------------------------
/img/nav_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/nav_bg.png
--------------------------------------------------------------------------------
/img/sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/sprite.png
--------------------------------------------------------------------------------
/img/tabbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/img/tabbg.png
--------------------------------------------------------------------------------
/index-en.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Termite
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | A Stepping Stone Management Tool
58 |
59 |
64 |
65 |
66 | Last Version: Free 1.8.4
67 | Support System:Linux/MacOS/Windows
68 | Support CPU: x86/x64/arm/mips[el]/SH4/PowerPC/Sparc/M68k
69 | Last Update:2018-09-26
70 | Stopping:2019-03-09
71 |
72 | Update: It is unfortunate to learn that my tool has been abused by attackers. I have to stop updating the tools and shutdown the download as a precaution to prevent further possible misuse from happening. Also there are existing yara rules can be used to detect the tools. Please visit here ht tps://github.com/rootkiter/Binary-files for more details.
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
87 |
92 |
Multiple Support
93 |
Implementations for different mainstream CPU/operating systems are provided. More will be included in the future.
94 |
95 |
96 |
97 |
98 |
103 |
108 |
Convenient Stepping Stone Access
109 |
Stepping stone agents are connected and organized as a tree structure, with which user can conveniently access any nodes in the tree at any time.
110 |
111 |
112 |
113 |
114 |
119 |
124 |
Connection
125 |
Each agent can be either a server, a client or both through TCP interconnection.
126 |
127 |
128 |
129 |
130 |
135 |
140 |
Tiny and No Dependency
141 |
All implementations only use operating system built-in libraries and are in static compilation. The sizes of the programs are all as small as only around 200KB.
142 |
143 |
144 |
145 |
146 |
151 |
156 |
Built-in Management Shell
157 |
Administrator can manage agent nodes easily through built-in shell, including but not limited to file transfer/console command execution/socks proxy service/port forwarding, etc.
158 |
159 |
160 |
161 |
162 |
167 |
172 |
Regular Maintenance
173 |
More functionalities are under development. Bug report is welcome. The author will actively update the tool and grow up with it.
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
Q&A
182 |
183 |
208 |
209 |
210 |
211 |
212 |
Why is this name?
213 |
214 |
215 |
216 |
Ants are social animals, and the size of the ant colony determines the ability of the ant colony. This ability comes from collaboration and interconnection, which is very consistent with the characteristics of this tool.
217 |
218 |
219 |
231 |
232 |
233 |
234 |
How to report bugs?
235 |
236 |
237 |
238 |
E-mail: rootkiter@rootkiter.com
239 |
240 |
241 |
242 |
243 |
244 |
245 |
How to raise demand?
246 |
247 |
248 |
249 |
E-mail: rootkiter@rootkiter.com
250 |
251 |
252 |
253 |
254 |
255 |
Update too slow?
256 |
257 |
258 |
259 |
Inner peacer...
260 |
261 |
262 |
263 |
264 |
265 |
How to use it?
266 |
267 |
268 |
269 |
Here is a README_en.txt, help your self. http://rootkiter.com/Termite/README_en.txt
270 |
271 |
272 |
273 |
274 |
275 |
Updates history?
276 |
277 |
278 |
279 |
[20180302] ( Free 1.0 ) More platorm support. I/O code rewriting.
280 |
[20180630] ( Free 1.2 ) Tunnel creation bug, file transfer bug, interaction optimization.
281 |
[20180807] ( Free 1.6 ) Release of wild pointer in tunnel.
282 |
[20180814] ( Free 1.8 ) New command, {backtran} support(reverse-lcxtran), Access to local services in remote environment.
283 |
[20180906] ( Free 1.8.1 ) Reconnection bug.
284 |
[20180915] ( Free 1.8.2 ) Wild pointer bug in tunnels.
285 |
[20180921] ( Free 1.8.3 ) Fix on_close free bug.
286 |
[20180926] ( Free 1.8.4 ) Fix socks connect ip bug.
287 |
[20190309] No more updates and downloads.
288 |
289 |
290 |
291 |
292 |
293 |
E-mail: rootkiter@rootkiter.com
294 |
297 |
298 |
299 |
300 |
301 |
302 |
313 |
314 |
315 |
316 |
408 |
409 |
410 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Termite
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | 跳板机管理工具
59 |
60 |
65 |
66 |
67 | Last Version: Free 1.8.4
68 | Support System:Linux/MacOS/Windows
69 | Support CPU: x86/x64/arm/mips[el]/SH4/PowerPC/Sparc/M68k
70 | Last Update:2018-09-26
71 | Stopping:2019-03-09
72 | PS: 考虑到该工具影响很坏,这里将不再更新。如果你有更好的安全建议或规则,欢迎通过 https://github.com/rootkiter/Binary-files 提交。
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
87 |
92 |
多平台支持
93 |
工具在多种操作系统下均有Agent实现,由于代码为标准C实现,所以未来还将有更多的平台被支持。
94 |
95 |
96 |
97 |
98 |
103 |
108 |
跳板机互联
109 |
Agent节点可相互连接,进而形成一条树状管理拓扑,依赖该拓扑结构,使用者可实时管理拓扑中的任意主机节点。
110 |
111 |
112 |
113 |
114 |
115 |
120 |
125 |
正反向级联
126 |
任意Agent节点间均可随时正向或反向连接,只要两个节点间能够正常建立TCP会话,就可以将新主机节点纳入树状管理拓扑图。
127 |
128 |
129 |
130 |
131 |
136 |
141 |
小巧无依赖
142 |
工具在实现中,所有和系统有关的API调用,都选择为系统自带的基础库,无需额外修改或配置目标主机,就可直接使用工具中提供的所有功能。所有版本的Agent文件中,最大的版本也不到600k大小,大部分版本都在200k字节左右。
143 |
144 |
145 |
146 |
147 |
152 |
157 |
内置Shell令主机管理更方便
158 |
管理员可通过Admin程序,对拓扑中的任意节点进行管控,包括但不限于文件传输/控制台命令执行/开启远程 SOCKS5 代理服务/远程端口转发,等功能。
159 |
160 |
161 |
162 |
163 |
168 |
173 |
长期维护
174 |
开发者将尽其所能,利用闲暇时间,对工具进行升级维护。除天灾人祸或突然转行等不可抗力外,开发者都将同工具一起成长,直到它到达其应有的状态为止。
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
Q&A
183 |
184 |
207 |
208 |
209 |
210 |
211 |
好听名字有很多,为嘛叫这个?
212 |
213 |
214 |
215 |
蚂蚁是一种群居动物,分工明确且协作能力极强,其破坏力同社群的大小成正比,这些特性和当前工具都极为吻合。该提议,由一位小伙伴(syc4mor3)提供。与此同时,随着原部门小伙伴们各奔东西,该名字也被赋予了新的含义。希望我们这一群人,在未来的日子里,能越过越好,并永远记得:我们是群居动物,一个都不能少。
216 |
217 |
218 |
219 |
220 |
221 |
不是号称多平台支持么,为何目前只有这样几个平台?
222 |
223 |
224 |
225 |
原因有二: 一)更多的平台支持意味着更多的适配性测试,以及各基础API在不同平台下的属性测试,这些繁琐的工作要花费非常大量的时间,而开发者只有一人。 二)更多的平台支持,意味着手头要有足够多的实体测试设备支持,而目前本人条件艰苦。 综上所述,为了这一目标,本人会尽力的。
226 |
227 |
228 |
229 |
230 |
231 |
程序不够稳定,发现可复现问题,怎么办?
232 |
233 |
234 |
235 |
由于开发者对多线程下多网络会话的开发经验有待提高,会导致程序的稳定性欠佳,如发现可复现的问题,请一定要联系开发者,定位问题后,会尽可能在恰当的时间予以修正。在开发中成长也是本人开发本程序的初衷。
236 |
237 |
238 |
239 |
240 |
241 |
242 |
工具不够优秀,想提建议怎么办?
243 |
244 |
245 |
246 |
从第一版工具放出后,陆续收到过非常多的小伙伴的建议邮件,有的希望有文件传输,有的希望能断线重连,这些好建议都已经被加入了实现计划,会在后续更新中陆续实现,开发者将以工具的主要目标实现为主,由于时间有限; 支线建议,将在闲暇时,慢慢实现。
247 |
248 |
249 |
250 |
251 |
252 |
工具更新进度太慢,是否可以提高更新频率?
253 |
254 |
255 |
256 |
除工作,生活,学习睡觉外,剩余的闲暇时间确实不太充足,只能期盼大家多多包含呗。
257 |
258 |
259 |
260 |
261 |
262 |
不会用怎么办?
263 |
264 |
265 |
266 |
在这里有一个README,以供阅读。http://rootkiter.com/Termite/README.txt
267 |
268 |
269 |
270 |
271 |
272 |
更新情况
273 |
274 |
275 |
276 |
[20180302] ( Free 1.0 ) 支持更多的Iot设备,重制IO基础。
277 |
[20180630] ( Free 1.2 ) 修复隧道创建bug,修复文件上传bug,美化控制台交互,增加*unix的shell指令中的提示符。
278 |
[20180807] ( Free 1.6 ) 修复隧道关闭时释放资源的bug,该bug会导致socks代理中出现未知异常。
279 |
[20180814] ( Free 1.8 ) 增加反向隧道的功能(backtran指令,是lcxtran的镜像操作),将本地可达的一个地址端口,映射至agent的一个指定端口,在后渗透测试中可以用于构造反弹木马的上线隧道,或反向访问本地可达的任意TCP服务。
280 |
[20180906] ( Free 1.8.1 )修复管理节点断线重连后无法重构拓扑的bug。
281 |
[20180915] ( Free 1.8.2 )修复隧道关闭后空间为释放的的bug。
282 |
[20180921] ( Free 1.8.3 )修复on_close 双次释放bug。
283 |
[20180926] ( Free 1.8.4 )修复socks ip 模式bug。
284 |
[20190309] 不再更新,停止下载,保留该页面作为一个回忆。
285 |
286 |
287 |
288 |
289 |
290 |
若您在使用 Termite 中还遇到了其他问题,欢迎通过以下方式和本人联系:
291 |
rootkiter@rootkiter.com
292 |
293 |
294 |
295 |
296 |
297 |
308 |
309 |
310 |
311 |
403 |
404 |
405 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
--------------------------------------------------------------------------------
/js/bootstrap.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Bootstrap.js by @fat & @mdo
3 | * plugins: bootstrap-transition.js, bootstrap-modal.js, bootstrap-dropdown.js, bootstrap-scrollspy.js, bootstrap-tab.js, bootstrap-tooltip.js, bootstrap-popover.js, bootstrap-alert.js, bootstrap-button.js, bootstrap-collapse.js, bootstrap-carousel.js, bootstrap-typeahead.js
4 | * Copyright 2012 Twitter, Inc.
5 | * http://www.apache.org/licenses/LICENSE-2.0.txt
6 | */
7 | !function(a){a(function(){a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('
').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:60},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=(a||"").toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:''}}(window.jQuery),!function(a){var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:''})}(window.jQuery),!function(a){var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger("close").removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h]();if(e.hasClass("active"))return;return!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.$element.change(),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return""+b+" "})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},keypress:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'',item:' '},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery)
--------------------------------------------------------------------------------
/js/jquery-lang.js:
--------------------------------------------------------------------------------
1 | var IgeEventsLite = function () {}
2 |
3 | IgeEventsLite.prototype.on = function (evtName, fn) {
4 | if (evtName && fn) {
5 | this.eventList[evtName] = this.eventList[evtName] || [];
6 | this.eventList[evtName].push(fn);
7 | }
8 | }
9 |
10 | IgeEventsLite.prototype.emit = function (evtName) {
11 | if (evtName) {
12 | this.eventList = this.eventList || [];
13 | var args = [];
14 | for (var i = 1; i < arguments.length; i++) {
15 | args.push(arguments[i]);
16 | }
17 | if (evtName) {
18 | var fnList = this.eventList[evtName];
19 | for (var i in fnList) {
20 | if (typeof fnList[i] == 'function') {
21 | fnList[i].apply(this, args);
22 | }
23 | }
24 | }
25 | }
26 | }
27 |
28 | var jquery_lang_js = function () {
29 | this.events = new IgeEventsLite();
30 |
31 | this.on = this.events.on;
32 | this.emit = this.events.emit;
33 |
34 | return this;
35 | }
36 |
37 | jquery_lang_js.prototype.lang = {};
38 | jquery_lang_js.prototype.defaultLang = 'en';
39 | jquery_lang_js.prototype.currentLang = 'zh_cn';
40 |
41 | jquery_lang_js.prototype.run = function () {
42 | var langElems = $('[lang]');
43 | var elemsLength = langElems.length;
44 |
45 | while (elemsLength--) {
46 | var elem = langElems[elemsLength];
47 | var langElem = $(elem);
48 |
49 | if (langElem.attr('lang') == this.defaultLang) {
50 | if (langElem.is("input")) {
51 | // An input element
52 | switch (langElem.attr('type')) {
53 | case 'button':
54 | case 'submit':
55 | langElem.data('deftext', langElem.val());
56 | break;
57 |
58 | case 'text':
59 | // Check for a placeholder text value
60 | var plText = langElem.attr('placeholder');
61 | if (plText) {
62 | langElem.data('deftext', plText);
63 | }
64 | break;
65 | }
66 | } else {
67 | // Not an input element
68 | langElem.data('deftext', langElem.html());
69 | var attr = langElem.attr('title');
70 | if (typeof attr !== 'undefined' && attr !== false) {
71 | langElem.attr('title', langElem.data('deftext'));
72 | }
73 | }
74 | }
75 | }
76 |
77 | this.change(this.currentLang);
78 | }
79 |
80 | jquery_lang_js.prototype.loadPack = function (packPath) {
81 | $('').appendTo("head");
82 | }
83 |
84 | jquery_lang_js.prototype.change = function (lang) {
85 | //console.log('Changing language to ' + lang);
86 | if (this.currentLang != lang) { this.update(lang); }
87 | this.currentLang = lang;
88 |
89 | // Get the page HTML
90 | var langElems = $('[lang]');
91 |
92 | if (lang != this.defaultLang) {
93 | var elemsLength = langElems.length;
94 | while (elemsLength--) {
95 | var elem = langElems[elemsLength];
96 | var langElem = $(elem);
97 | if (langElem.data('deftext')) {
98 | if (langElem.is("input")) {
99 | // An input element
100 | switch (langElem.attr('type')) {
101 | case 'button':
102 | case 'submit':
103 | // A button or submit, change the value attribute
104 | var currentText = langElem.val();
105 | var defaultLangText = langElem.data('deftext');
106 |
107 | var newText = this.lang[lang][defaultLangText] || currentText;
108 | var newHtml = currentText.replace(currentText, newText);
109 | langElem.val(newHtml);
110 |
111 | if (currentText != newHtml) {
112 | langElem.attr('lang', lang);
113 | }
114 | break;
115 |
116 | case 'text':
117 | // Check for a placeholder text value
118 | var currentText = langElem.attr('placeholder');
119 | var defaultLangText = langElem.data('deftext');
120 |
121 | var newText = this.lang[lang][defaultLangText] || currentText;
122 | var newHtml = currentText.replace(currentText, newText);
123 | langElem.attr('placeholder', newHtml);
124 |
125 | if (currentText != newHtml) {
126 | langElem.attr('lang', lang);
127 | }
128 | break;
129 | }
130 | } else {
131 | // Not an input element
132 | var currentText = langElem.html();
133 | var defaultLangText = langElem.data('deftext');
134 |
135 | var newText = this.lang[lang][defaultLangText] || currentText;
136 | var newHtml = currentText.replace(currentText, newText);
137 | langElem.html(newHtml);
138 | var attr = langElem.attr('title');
139 | if (typeof attr !== 'undefined' && attr !== false) {
140 | langElem.attr('title', newText);
141 | }
142 | if (currentText != newHtml) {
143 | langElem.attr('lang', lang);
144 | }
145 | }
146 | } else {
147 | //console.log('No language data for element... have you executed .run() first?');
148 | }
149 | }
150 | } else {
151 | // Restore the deftext data
152 | langElems.each(function () {
153 | var langElem = $(this);
154 | if (langElem.data('deftext')) {
155 | if (langElem.is("input")) {
156 | // An input element
157 | switch (langElem.attr('type')) {
158 | case 'button':
159 | case 'submit':
160 | langElem.val(langElem.data('deftext'));
161 | break;
162 |
163 | case 'text':
164 | // Check for a placeholder text value
165 | langElem.attr('placeholder', langElem.data('deftext'));
166 | break;
167 | }
168 | } else {
169 | langElem.html(langElem.data('deftext'));
170 | var attr = langElem.attr('title');
171 | if (typeof attr !== 'undefined' && attr !== false) {
172 | langElem.attr('title', langElem.data('deftext'));
173 | }
174 |
175 | }
176 | }
177 | });
178 | }
179 | }
180 |
181 | jquery_lang_js.prototype.convert = function (text, lang) {
182 | if (lang) {
183 | if (lang != this.defaultLang) {
184 | return this.lang[lang][text];
185 | } else {
186 | return text;
187 | }
188 | } else {
189 | if (this.currentLang != this.defaultLang) {
190 | return this.lang[this.currentLang][text];
191 | } else {
192 | return text;
193 | }
194 | }
195 | }
196 |
197 | jquery_lang_js.prototype.update = function (lang) {
198 | this.emit('update', lang);
199 | }
--------------------------------------------------------------------------------
/js/jquery.js:
--------------------------------------------------------------------------------
1 | /*
2 | * FancyBox - jQuery Plugin
3 | * Simple and fancy lightbox alternative
4 | *
5 | * Examples and documentation at: http://fancybox.net
6 | *
7 | * Copyright (c) 2008 - 2010 Janis Skarnelis
8 | * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
9 | *
10 | * Version: 1.3.4 (11/11/2010)
11 | * Requires: jQuery v1.3+
12 | *
13 | * Dual licensed under the MIT and GPL licenses:
14 | * http://www.opensource.org/licenses/mit-license.php
15 | * http://www.gnu.org/licenses/gpl.html
16 | */
17 |
18 | ;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("
")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('The requested content cannot be loaded. Please try again later.
');
19 | F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)||
20 | c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=
21 | false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('
').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel",
22 | function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b(" ").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C=' ';P="";b.each(e.swf,function(x,H){C+=' ';P+=" "+x+'="'+H+'"'});C+=' ";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win==
24 | "function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('
');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor,
26 | opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length?
27 | d.titlePosition=="float"?'':''+s+"
":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding});
28 | y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height==
29 | i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents());
30 | f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode==
31 | 37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto");
32 | s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('').appendTo(j);
33 | f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c);
34 | j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type==
35 | "image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"),
36 | 10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)};
37 | b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k=
38 | 0,C=a.length;ko.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+
39 | 1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h=
40 | true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1;
41 | b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5-
42 | d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
'),t=b(''),u=b('
'),f=b('
'));D=b('
').append('
').appendTo(f);
43 | D.append(j=b('
'),E=b(' '),n=b('
'),z=b(' '),A=b(' '));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()});
44 | b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('').prependTo(D)}}};
45 | b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#000",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",
46 | easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);
--------------------------------------------------------------------------------
/js/zh_cn.js:
--------------------------------------------------------------------------------
1 | jquery_lang_js.prototype.lang.zh_cn = {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/termite_img/feature01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/termite_img/feature01.png
--------------------------------------------------------------------------------
/termite_img/feature02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/termite_img/feature02.png
--------------------------------------------------------------------------------
/termite_img/feature03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/termite_img/feature03.png
--------------------------------------------------------------------------------
/termite_img/feature04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/termite_img/feature04.png
--------------------------------------------------------------------------------
/termite_img/feature05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/termite_img/feature05.png
--------------------------------------------------------------------------------
/termite_img/feature06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rootkiter/Termite/e0c5b307182a085309ec488fa0e5cd20fc13ad87/termite_img/feature06.png
--------------------------------------------------------------------------------