├── .DS_Store
├── LICENSE
├── README.md
├── index.html
└── static
├── .DS_Store
├── css
├── bootstrap.min.css
├── github-dark-dimmed.min.css
└── style.css
├── font-awesome
├── css
│ └── font-awesome.min.css
└── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfont.woff2
├── images
├── avatar.png
├── chatgpt.png
├── favicon.ico
└── reward.png
└── js
├── bootstrap.min.js
├── custom.js
├── highlight.min.js
├── html2canvas.min.js
├── jquery-2.1.1.js
├── layer
├── layer.js
├── mobile
│ ├── layer.js
│ └── need
│ │ └── layer.css
└── skin
│ └── default
│ ├── icon-ext.png
│ ├── icon.png
│ ├── layer.css
│ ├── loading-0.gif
│ ├── loading-1.gif
│ └── loading-2.gif
├── marked.min.js
├── utils.js
└── web-storage-cache.min.js
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/.DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | - [OPEN AI 平台背景想法](#open-ai-%E5%B9%B3%E5%8F%B0%E8%83%8C%E6%99%AF%E6%83%B3%E6%B3%95)
3 | - [OPEN AI平台初衷](#open-ai%E5%B9%B3%E5%8F%B0%E5%88%9D%E8%A1%B7)
4 | - [OPEN AI平台能做什么](#open-ai%E5%B9%B3%E5%8F%B0%E8%83%BD%E5%81%9A%E4%BB%80%E4%B9%88)
5 | - [OPEN AI 目标](#open-ai-%E7%9B%AE%E6%A0%87)
6 | - [OPEN AI 开发者入口](#open-ai-%E5%BC%80%E5%8F%91%E8%80%85%E5%85%A5%E5%8F%A3)
7 | - [OPEN AI 发展历程来龙去脉](#open-ai-%E5%8F%91%E5%B1%95%E5%8E%86%E7%A8%8B%E6%9D%A5%E9%BE%99%E5%8E%BB%E8%84%89)
8 | - [OPEN AI 平台订阅与更新](#open-ai-%E5%B9%B3%E5%8F%B0%E8%AE%A2%E9%98%85%E4%B8%8E%E6%9B%B4%E6%96%B0)
9 | - [OPEN AI ChatGPT账号](#open-ai-chatgpt%E8%B4%A6%E5%8F%B7)
10 |
11 |
12 |
13 |
14 |
15 | ##### OPEN AI 平台背景想法
16 |
17 | 相信还是有很多伙伴不了解**「OPEN AI」**平台 ,这里在细说一下
18 |
19 | 大家知道**「ChatGPT」**, 或者**「百度文心一言」** 阿里**「通意千问」** 包括各种其他的AI 聊天或者画图,等应用层出不穷。
20 |
21 | 但是我们要自己实现自己 语言大模型,或者说是人工智能应用能不能。
22 |
23 | **「有实力当然可以!!!!!」**。
24 |
25 | > ❝
26 | >
27 | > 但是更多时候我们不需要自己造一个平台,一个ChatGPT 平台
28 | >
29 | > ❞
30 |
31 | 我们只需要站在巨人肩膀上,做自己应用想做事情就可以了。基于人家开放的接口,和算力 在自己的程序或者任何**「APP」** 接入智能AI 应用,从而实现自己的**「,私人AI」**
32 |
33 | 基于开发接口,这就是OPEN AI。开发的背景和初衷。
34 |
35 | 当然很多人也了解,**「ChatGpt」**如何对接接口啊,或者其他的AI平台如何对接。但是更多人是不了解,不知道怎么对接到自己程序。又想使用 ChatGPT的。
36 |
37 | 在加上国内一些原因,更加加距了此类平台使用限制,所以 **「OPEN AI」** 做了统一的底层接入,实现了**「基于接口的上层应用」**.
38 |
39 | 你只需要关心你的具体业务逻辑实现就可以了,像对接普通接口一样可以轻松对接基于OPEN AI平台,提供统一标准接口规范。
40 |
41 | 甚至你压根不了解任何ChatGPT 方面技术和应用,都可以。
42 |
43 |
44 | ##### OPEN AI平台初衷
45 |
46 | 现在「ChatGPT」 提供了「api」接口 可以让我自己对接去实现我们自己想要gpt应用,但是由于一些原因,国内也不开放接口,所以我就1:1 自己对接了官方所有接口。
47 |
48 | AI爆炸时代。你不用AI,别人就会用AI,当别人用AI,为自己给工作生活赋能时候。生活自在,工作高效,AI正在潜移默化改变我们生活
49 |
50 | 基于[「OPEN AI」](http://openai.soboys.cn/login "「OPEN AI」")平台 轻松让AI 为你的生活赋能.
51 |
52 | 总之我现在生活已经离不开AI,帮助了。
53 |
54 | 不管是工作上问题,生活上有问题。
55 |
56 | 我的第一方式,不在是去百度,谷歌搜索。而是先问AI,然后才会去谷歌和百度。
57 |
58 | 基于我自己受益与「AI和chatgpt」。所以我想让更多人,能够免费加入去使用,开发了这个一个「OPEN AI」 平台。
59 |
60 |
61 |
62 |
63 | ##### OPEN AI平台能做什么
64 | 你一定很好奇什么是 [「OPEN AI」](http://openai.soboys.cn/login "「OPEN AI」")快速开发平台」 顾名思义,开放的OPEN AI平台。基于这个平台你的上层应用,如 「APP,小程序,H5,WEB」,「公众号」,任何一切终端都可以轻松接入,AI智能应用。
65 |
66 | 基于我们OPEN AI 平台可以轻松实现AI应用,对话,画图,各种细分领域场景人工智能。
67 |
68 |
69 |
70 | ##### OPEN AI 目标
71 |
72 | ❝
73 |
74 | ALL OPEN AI 一切基于AI, 插件互联
75 |
76 | ❞
77 |
78 | 整合出现的所有AI,接口。提供统一标准的调用API, 基于我们 OPEN AI平台,你可以在需要AI 程序应用的任何地方去掉用,实现自己的,ChatGPT,AI画图等领域应用。
79 |
80 |
81 | ##### OPEN AI 开发者入口
82 |
83 | [开发者后台](http://openai.soboys.cn/login "开发者后台")
84 | 
85 |
86 | [接入案例在线演示](http://openchat.soboys.cn/ "接入案例在线演示")
87 | 
88 | 
89 |
90 |
91 | [接口文档](https://www.showdoc.com.cn/2275034687382811 "接口文档")
92 |
93 | 
94 |
95 | [开源项目案例地址](https://github.com/coder-amiao "开源项目案例地址")
96 |
97 |
98 | ##### OPEN AI 发展历程来龙去脉
99 |
100 | [玩转AI与ChatGPT工作学习创作](https://mp.weixin.qq.com/mp/homepage?__biz=Mzg4OTkwNjc2MQ==&hid=1&sn=278d93838867a8c6fe2f52643011c90c "玩转AI与ChatGPT工作学习创作")
101 |
102 | 
103 |
104 | ##### OPEN AI 平台订阅与更新
105 |
106 | 没有特殊情况
107 | 1周左右小版本,半个月左右大版本
108 | 关注公众号程序员三时 了解最新版本动态,平台动态第一时间更新至公众号
109 |
110 | 
111 |
112 | 开发计划
113 |
114 | 1. 支持三方应用接入如微信QQ飞书钉钉等
115 | 2. 支持联网,和必应GPT4搜索
116 | 3. 支持官方插件
117 | 4. 支持开发者开发插件
118 | 5. 官方PC聊天应用支持
119 | 6. 更多开放想法
120 |
121 | 需求和bug修复
122 |
123 | 1. 有使用问题先看接口文档
124 | 2. 群聊讨论或许他人遇到或者已经解决
125 | 3. 群聊反馈我看到消息会第一时间修复
126 | 4. 或者在github开源案例项目提issues
127 |
128 |
129 | ##### OPEN AI ChatGPT账号
130 | 需要GPT成品账号和4单独体验的可以私聊我
131 | 其他想法合作也可以私聊我,其他项目都可以
132 |
133 |
134 |
135 |
136 |
137 |
138 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ChatGPT-OPEN AI
13 |
14 |
15 |
16 |
17 |
18 |
19 |
OPEN AI开放平台
20 |
21 |
22 |
23 | 应用接入
24 |
25 |
26 | 会话状态
27 |
28 |
29 |
30 |
31 |
34 |
35 |
36 |
85 |
86 |
87 |
88 |
89 |
Go !
90 |
91 |
92 |
93 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
--------------------------------------------------------------------------------
/static/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/.DS_Store
--------------------------------------------------------------------------------
/static/css/github-dark-dimmed.min.css:
--------------------------------------------------------------------------------
1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
2 | Theme: GitHub Dark Dimmed
3 | Description: Dark dimmed theme as seen on github.com
4 | Author: github.com
5 | Maintainer: @Hirse
6 | Updated: 2021-05-15
7 |
8 | Colors taken from GitHub's CSS
9 | */.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-code,.hljs-comment,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}
--------------------------------------------------------------------------------
/static/css/style.css:
--------------------------------------------------------------------------------
1 | :root[bg-theme='light'] {
2 | --bg-color: white;
3 | }
4 |
5 | :root[bg-theme='gray'] {
6 | --bg-color: #42424670;
7 | }
8 |
9 | :root[bg-theme='light-red'] {
10 | --bg-color: #eda8a8;
11 | }
12 |
13 | :root[bg-theme='light-blue'] {
14 | --bg-color: #55609a;
15 | }
16 |
17 | :root[bg-theme='light-purple'] {
18 | --bg-color: #c09ff9;
19 | }
20 |
21 | :root[bg-theme='light-green'] {
22 | --bg-color: #91ecd1;
23 | }
24 |
25 | :root[bg-theme='light-yellow'] {
26 | --bg-color: #e9e097;
27 | }
28 |
29 | body {
30 | background-color: var(--bg-color);
31 | }
32 |
33 | @media screen and (max-width: 768px){
34 | .container {
35 | width: 100% !important;
36 | }
37 | .answer .others .common .settings-common span{
38 | font-size: 85%;
39 | }
40 | .foot p:first-child{
41 | font-size: 14px !important;
42 | }
43 | .foot p a{
44 | font-size: 13px !important;
45 | }
46 | }
47 |
48 | @media screen and (min-width: 1200px) {
49 | .container {
50 | width: 970px !important;
51 | }
52 | }
53 |
54 |
55 | @media screen and (min-width: 768px) {
56 | #chatWindow::-webkit-scrollbar {
57 | width: 3px;
58 | }
59 |
60 | #chatWindow::-webkit-scrollbar-track {
61 | background-color: #f1f1f1;
62 | }
63 |
64 | #chatWindow::-webkit-scrollbar-thumb {
65 | background-color: #888;
66 | border-radius: 4px;
67 | }
68 | }
69 |
70 | *{
71 | margin: 0;
72 | padding: 0;
73 | }
74 |
75 | html,body{
76 | height: 100%;
77 | width: 100%;
78 | }
79 |
80 | select,input{
81 | border-color: #1ab394 !important;
82 | opacity: .8;
83 | }
84 |
85 | pre{
86 | color: #adbac7 !important;
87 | background: #2b2a2a !important;
88 | }
89 |
90 |
91 | .title{
92 | width: 100%;
93 | }
94 | .title h2{
95 | margin-bottom: 20px;
96 | color: #4aa593;
97 | }
98 |
99 | .answer{
100 | width: 100%;
101 | position: relative;
102 | height: 75vh;
103 | }
104 |
105 | .answer .tips{
106 | width: 100%;
107 | display: flex;
108 | flex-direction: column;
109 | justify-content: center;
110 | align-items: center;
111 | }
112 |
113 | .answer .tips h4{
114 | color:red;
115 | }
116 |
117 | .answer .tips img{
118 | margin-top: 30px;
119 | border:1px solid #7eecd6;
120 | box-shadow: 0px 1px 10px 0px #7defd8;
121 | border-radius: 10px;
122 | width: 200px;
123 | }
124 |
125 | .answer .function{
126 | padding: 0 15px;
127 | width: 100%;
128 | position: absolute;
129 | bottom: 0px;
130 | }
131 | .answer .others{
132 | display: flex;
133 | justify-content:space-between;
134 | align-items: center;
135 | padding: 0 15px;
136 | height: 30px;
137 | margin-bottom: 10px;
138 | }
139 |
140 | .answer .others .left,.right{
141 | display: flex;
142 | }
143 |
144 | .answer .others .common{
145 | width: 30px;
146 | height: 30px;
147 | display: flex;
148 | }
149 |
150 | .answer .others .common .settings-common{
151 | display: flex;
152 | justify-content: space-between;
153 | align-items: center;
154 | padding: 10px 15px;
155 | background-color: #fff;
156 | border-bottom: 1px solid #ddd;
157 | }
158 |
159 | .answer .others .common .settings-common:hover{
160 | background-color: rgba(148,163,184,.2);
161 | }
162 |
163 | .answer .others .common .settings-common:last-child{
164 | border-bottom: 0;
165 | }
166 |
167 | .answer .others .common .settings-common .ipt-common{
168 | width: 60%;
169 | }
170 |
171 | .answer .others .common .settings-common span{
172 | color: #1ab394;
173 | cursor: default;
174 | }
175 | .answer .others .common .settings-common a{
176 | font-size: 14px;
177 | color: #1ab394;
178 | cursor: pointer;
179 | text-decoration: none;
180 | }
181 |
182 | /* 按钮样式 */
183 | .chck-btn{
184 | display: flex;
185 | justify-content: center;
186 | width: 60px;
187 | height: 34px;
188 | }
189 |
190 | /* Hide the input */
191 | input[type="checkbox"] {
192 | position: absolute;
193 | opacity: 0;
194 | z-index: -1;
195 | }
196 |
197 | .check-trail {
198 | display: flex;
199 | align-items: center;
200 | width: 100%;
201 | height: 100%;
202 | background: rgba(148,163,184,.4);
203 | border-radius: 15px;
204 | transition: all 0.5s ease;
205 | cursor: pointer;
206 | }
207 |
208 | .check-handler {
209 | display: flex;
210 | justify-content: center;
211 | align-items: center;
212 | width: 34px;
213 | height: 34px;
214 | background: rgb(148 163 184 / 85%);
215 | border-radius: 50%;
216 | transition: all 0.5s ease;
217 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
218 | }
219 |
220 | .check-handler:before {
221 | content: "×";
222 | color: white;
223 | font-weight: bold;
224 | }
225 |
226 | input[type="checkbox"]:checked + .check-trail {
227 | background: #1ab394a3;
228 | }
229 | input[type="checkbox"]:checked + .check-trail .check-handler {
230 | margin-left: 26px;
231 | background: #1ab394;
232 | }
233 | input[type="checkbox"]:checked + .check-trail .check-handler::before {
234 | content: "✔";
235 | }
236 |
237 |
238 | .answer .others .right .screenshot{
239 | margin-right: 10px;
240 | }
241 |
242 | .answer .others .icon-style{
243 | width:30px;
244 | height: 30px;
245 | line-height: 30px;
246 | text-align: center;
247 | color: #1ab394;
248 | cursor: pointer;
249 | }
250 |
251 | .answer .others .icon-style:hover{
252 | background-color: rgba(26, 179, 148,.1);
253 | }
254 |
255 | .answer .ipt{
256 | display:flex;
257 | align-items: center;
258 | padding-right: 15px;
259 | border-radius: 10px;
260 | height: 50px;
261 | border: 1px solid rgba(26, 179, 148, 0.8);
262 | box-shadow: 0px 0px 10px 0px rgba(26, 179, 148, 0.2);
263 | }
264 | .answer .ipt textarea {
265 | resize: none;
266 | overflow-y: auto;
267 | border: none;
268 | box-shadow:none;
269 | }
270 | .answer .ipt textarea:focus{
271 | border: none !important;
272 | box-shadow: none !important;
273 | }
274 |
275 | .answer #chatWindow {
276 | max-height: calc(75vh - 100px);
277 | height:auto;
278 | overflow-y: auto;
279 | }
280 |
281 | .message-bubble {
282 | padding: 10px;
283 | margin: 5px;
284 | display: flex;
285 | align-items: flex-start;
286 | border-bottom: 1px dashed #e7eaec;
287 | }
288 |
289 | .message-bubble .message-text{
290 | font-size: 18px;
291 | margin-left:15px;
292 | word-break: break-all;
293 | }
294 |
295 | .message-bubble .message-text p{
296 | white-space: pre-wrap;
297 | }
298 |
299 | .message-bubble .response ol,ul{
300 | padding-left: 2em;
301 | }
302 |
303 | /* 错误信息样式 */
304 | .message-bubble .message-text p.error{
305 | color:red;
306 | height:auto;
307 | display: block;
308 | white-space: normal;
309 | word-break: break-all;
310 | }
311 |
312 | .message-bubble .chat-icon {
313 | width: 30px;
314 | height: 30px;
315 | border-radius: 3px;
316 | }
317 |
318 | .ai-pic{
319 | width: 100%;
320 | height: 100%;
321 | border-radius: 3px;
322 | }
323 |
324 | .message-bubble .response .loading-icon{
325 | color: #1ab394;
326 | }
327 |
328 | .answer #chatBtn{
329 | background-color: #1ab394;
330 | border-color: #1ab394;
331 | }
332 |
333 | .foot p:first-child{
334 | margin-bottom: 10px;
335 | opacity: .9;
336 | }
337 |
338 | .foot p:nth-child(2){
339 | margin-bottom: 0;
340 | }
341 |
342 | .foot p a{
343 | margin-right: 10px;
344 | font-weight: 400;
345 | font-size: 14px;
346 | color:#1ab394;
347 | text-decoration:none;
348 | }
349 |
--------------------------------------------------------------------------------
/static/font-awesome/css/font-awesome.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
5 |
--------------------------------------------------------------------------------
/static/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/static/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/static/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/static/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/static/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/static/images/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/avatar.png
--------------------------------------------------------------------------------
/static/images/chatgpt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/chatgpt.png
--------------------------------------------------------------------------------
/static/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/favicon.ico
--------------------------------------------------------------------------------
/static/images/reward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/reward.png
--------------------------------------------------------------------------------
/static/js/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.6 (http://getbootstrap.com)
3 | * Copyright 2011-2015 Twitter, Inc.
4 | * Licensed under the MIT license
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
--------------------------------------------------------------------------------
/static/js/custom.js:
--------------------------------------------------------------------------------
1 | // 功能
2 |
3 |
4 | $(document).ready(function() {
5 |
6 | var chatBtn = $('#chatBtn');
7 | var chatInput = $('#chatInput');
8 | var chatWindow = $('#chatWindow');
9 |
10 | var ws = null;
11 | var wsCache = new WebStorageCache();
12 |
13 | //用户回话ID
14 | var replyId = localStorage.getItem('replyId');
15 | if(replyId==null){
16 | replyId=generateUUID();
17 | localStorage.setItem("replyId",replyId);
18 | }
19 |
20 | //模型 1 gpt3, 4 gpt4 2 画图
21 | var model=localStorage.getItem('model');
22 | //接口套餐标识
23 | var identification="";
24 | defaultSelModel(model);
25 |
26 | //连续对话
27 | var continuousDialogue = localStorage.getItem('continuousDialogue');
28 | showDelfualtContinuousDialogue();
29 |
30 | //是否存储回话记录
31 | var messages= saveHistoryMsg();
32 | var archiveSession= localStorage.getItem('archiveSession');
33 | showDelfualtArchiveSession();
34 | loadHistoryMsg();
35 |
36 | //token
37 | var token=wsCache.get('token');
38 |
39 | var params={};
40 | var wsApi='ws://api-openai.dtgarden.com'; //ws://api-openai.dtgarden.com //127.0.0.1:8080
41 | var api='http://api-openai.dtgarden.com';
42 | var roloeCode='gpt';
43 | var appId=localStorage.getItem('appId');
44 | var secret=localStorage.getItem('secret');
45 | defaultAccount()
46 |
47 | //判断当前浏览器是否支持WebSocket
48 | if ('WebSocket' in window) {
49 |
50 |
51 | //授权
52 | if(token==null){
53 | getToken();
54 | }
55 |
56 | params = {
57 | appId,
58 | token,
59 | model,
60 | roloeCode,
61 | continuousDialogue
62 |
63 | };
64 |
65 | let wsUrl=wsApi+'/ws/question/'+replyId+'?'+buildUrlParams(params)
66 | console.log(wsUrl)
67 | ws = new WebSocket(wsUrl);
68 | let timerId;
69 |
70 | //连接成功建立的回调方法
71 | ws.onopen = function () {
72 | console.log('WebSocket 连接已打开');
73 | $("#chatStatus span").text("在线")
74 | timerId = setTimeout(function() {
75 | ws.send('ping');
76 | }, 5000);
77 | };
78 |
79 | //接收到消息的回调方法
80 | ws.onmessage = function (event) {
81 |
82 | // 心跳机制保存连接
83 | if (event.data === 'ping') {
84 | ws.send('pong');
85 | } else if (event.data === 'pong') {
86 | console.log("💓")
87 | clearTimeout(timerId);
88 | timerId = setTimeout(function() {
89 | ws.send('ping');
90 | }, 5000);
91 | }else{
92 | analysisMsg(event)
93 | }
94 | };
95 |
96 | //连接关闭的回调方法
97 | ws.onclose = function () {
98 | alert("点击应用接入绑定自己OPEN AI账号在线体验。或者通过开放API集成到自己的APP")
99 | console.log('WebSocket 连接已关闭');
100 | $("#chatStatus span").text("离线")
101 | };
102 |
103 | //连接发生错误的回调方法
104 | ws.onerror = function () {
105 | console.log("WebSocket连接发生错误")
106 | $("#chatStatus span").text("离线")
107 | alert("会话连接异常已断开,请刷新重新连接")
108 |
109 | };
110 |
111 | //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,
112 | //防止连接还没断开就关闭窗口,server端会抛异常。
113 | window.onbeforeunload = function () {
114 | closeWebSocket();
115 | }
116 |
117 | }
118 | else {
119 | alert('当前浏览器 Not support websocket')
120 | }
121 |
122 | function reloadWebsocket(params){
123 |
124 | let wsUrl=wsApi+'/ws/question/'+replyId+'?'+buildUrlParams(params)
125 | console.log(wsUrl)
126 | ws = new WebSocket(wsUrl);
127 |
128 |
129 |
130 | //连接成功建立的回调方法
131 | ws.onopen = function () {
132 | console.log('WebSocket 连接已打开');
133 | $("#chatStatus span").text("在线")
134 | timerId = setTimeout(function() {
135 | ws.send('ping');
136 | }, 5000);
137 | };
138 |
139 | //接收到消息的回调方法
140 | ws.onmessage = function (event) {
141 |
142 | // 心跳机制保存连接
143 | if (event.data === 'ping') {
144 | ws.send('pong');
145 | } else if (event.data === 'pong') {
146 | console.log("💓")
147 | clearTimeout(timerId);
148 | timerId = setTimeout(function() {
149 | ws.send('ping');
150 | }, 5000);
151 | }else{
152 | analysisMsg(event)
153 | }
154 | };
155 |
156 | //连接关闭的回调方法
157 | ws.onclose = function () {
158 | console.log('WebSocket 连接已关闭');
159 | $("#chatStatus span").text("离线")
160 | };
161 |
162 | //连接发生错误的回调方法
163 | ws.onerror = function () {
164 | console.log("WebSocket连接发生错误")
165 | $("#chatStatus span").text("离线")
166 | alert("会话连接异常已断开,请刷新重新连接")
167 | };
168 | }
169 |
170 |
171 |
172 | //获取token
173 | function getToken(){
174 | let interface='/user/token';
175 | let param={
176 | appId,
177 | secret: CryptoJS.MD5(appId+secret).toString()
178 | }
179 | let url=api+interface+'?'+buildUrlParams(param)
180 |
181 | $.ajax({
182 | url: url,
183 | type: 'GET',
184 | async: false, // 将async设置为false即可实现同步请求
185 | success: function(data) {
186 | if(data.success){
187 | // 缓存字符串'wqteam' 到 'username' 中, 超时时间100秒
188 | token=data.data.token
189 | wsCache.set('token', data.data.token, {exp : data.data.expiration});
190 | }else{
191 | alert(data.message +"OPEN AI 账号无效授权失败请登录 http://openai.soboys.cn/login")
192 | return ;
193 | }
194 | },
195 | error: function(xhr, status, error) {
196 | console.error(error);
197 | return ;
198 | }
199 |
200 | });
201 |
202 | }
203 |
204 |
205 | //关闭WebSocket连接
206 | function closeWebSocket() {
207 | ws.close();
208 | console.log("关闭websocket连接")
209 | }
210 |
211 |
212 |
213 |
214 | // marked.js设置语法高亮
215 | marked.setOptions({
216 | highlight: function (code, language) {
217 | const validLanguage = hljs.getLanguage(language) ? language : 'javascript';
218 | return hljs.highlight(code, { language: validLanguage }).value;
219 | },
220 | });
221 |
222 | // 转义html代码(对应字符转移为html实体),防止在浏览器渲染
223 | function escapeHtml(html) {
224 | let text = document.createTextNode(html);
225 | let div = document.createElement('div');
226 | div.appendChild(text);
227 | return div.innerHTML;
228 | }
229 |
230 | // 添加请求消息到窗口
231 | function addRequestMessage(message) {
232 |
233 | chatInput.val('');
234 | let escapedMessage = escapeHtml(message); // 对请求message进行转义,防止输入的是html而被浏览器渲染https://images.soboys.cn/202305252344275.png
235 | let requestMessageElement = $('' + escapedMessage + '
');
236 | chatWindow.append(requestMessageElement);
237 | let responseMessageElement = $('');
238 | chatWindow.append(responseMessageElement);
239 | chatWindow.scrollTop(chatWindow.prop('scrollHeight'));
240 | }
241 |
242 |
243 | //添加添加请求消息和等待到消息窗口适合画图
244 | function addRequestLoadMessage(message) {
245 |
246 | chatInput.val('');
247 | let escapedMessage = escapeHtml(message); // 对请求message进行转义,防止输入的是html而被浏览器渲染https://images.soboys.cn/202305252344275.png
248 | let requestMessageElement = $('' + escapedMessage + '
');
249 | chatWindow.append(requestMessageElement);
250 |
251 | //画图加入额外的提示等待信息
252 | addResponseMessage("AI画图可能存在较慢情况请耐心等待2-3分钟切勿刷新重复点击")
253 |
254 | let responseMessageElement = $('');
255 | chatWindow.append(responseMessageElement);
256 | chatWindow.scrollTop(chatWindow.prop('scrollHeight'));
257 | }
258 |
259 |
260 | // 添加响应消息到窗口,流式响应此方法会执行多次
261 | function addResponseMessage(message) {
262 |
263 | let lastResponseElement = $(".message-bubble .response").last();
264 | lastResponseElement.empty();
265 | let escapedMessage;
266 | // 处理流式消息中的代码块
267 | let codeMarkCount = 0;
268 | let index = message.indexOf('```');
269 | while (index !== -1) {
270 | codeMarkCount ++ ;
271 | index = message.indexOf('```', index + 3);
272 | }
273 | if(codeMarkCount % 2 == 1 ){ // 有未闭合的 code
274 | escapedMessage = marked.parse(message + '\n\n```');
275 | }else if(codeMarkCount % 2 == 0 && codeMarkCount != 0){
276 | escapedMessage = marked.parse(message); // 响应消息markdown实时转换为html
277 | }else if(codeMarkCount == 0){
278 | // 输出的代码有可能不是markdown格式,所以只要没有markdown代码块的内容,都用escapeHtml处理后再转换
279 | escapedMessage = marked.parse(escapeHtml(message));
280 | }
281 | lastResponseElement.append(escapedMessage);
282 | chatWindow.scrollTop(chatWindow.prop('scrollHeight'));
283 | }
284 |
285 |
286 | //添加响应图片
287 | function addResponsPic(message){
288 | let lastResponseElement = $(".message-bubble .response").last();
289 | lastResponseElement.empty();
290 | lastResponseElement.append(message);
291 | chatWindow.scrollTop(chatWindow.prop('scrollHeight'));
292 |
293 |
294 |
295 | }
296 |
297 | // 添加失败信息到窗口
298 | function addFailMessage(message) {
299 | let lastResponseElement = $(".message-bubble .response").last();
300 | lastResponseElement.empty();
301 | lastResponseElement.append('' + message + '
');
302 | chatWindow.scrollTop(chatWindow.prop('scrollHeight'));
303 | messages.pop() // 失败就让用户输入信息从数组删除
304 | }
305 |
306 | //发送消息
307 | function send(message) {
308 | ws.send(message);
309 | }
310 |
311 | //画图
312 | function paint(message){
313 | let interface='/pic/GenImage';
314 | let param={
315 | desc:message,
316 | model
317 | }
318 | let headers= {
319 | "appId": appId,
320 | "token": token
321 | }
322 |
323 | let url=api+interface;
324 | $.ajax({
325 | url: url,
326 | type: 'POST',
327 | contentType: 'application/json',
328 | async: true, // 将async设置为false即可实现同步请求
329 | data: JSON.stringify(param),
330 | headers,
331 | success: function(data) {
332 | let pic="";
333 | if(data.success){
334 | if(model==2){
335 | pic=data.data.image.midjourneyImgEntry.image_url
336 | }else{
337 | pic=data.data.image.gptImgEntry.data[0].url
338 | }
339 |
340 | let html='
'
341 | addResponsPic(html);
342 | chatInput.val('');
343 | // 收到回复,让按钮可点击
344 | chatBtn.attr('disabled',false)
345 | // 重新绑定键盘事件
346 | chatInput.on("keydown",handleEnter);
347 |
348 | messages.push({"role": "assistant", "content": html,"model":2});
349 | // 判断是否本地存储历史会话
350 | if(archiveSession==1){
351 | localStorage.setItem("session",JSON.stringify(messages));
352 | }
353 | }else{
354 | chatInput.val('');
355 | // 收到回复,让按钮可点击
356 | chatBtn.attr('disabled',false)
357 | // 重新绑定键盘事件
358 | chatInput.on("keydown",handleEnter);
359 | addResponseMessage(data.message+"点击应用接入绑定OPEN AI账号 每天获取免费体验额度")
360 |
361 | return ;
362 | }
363 | },
364 | error: function(xhr, status, error) {
365 | console.error(error);
366 | return ;
367 | }
368 |
369 | });
370 | }
371 |
372 |
373 |
374 | let text='';
375 | function analysisMsg(message){
376 |
377 | let json_data = JSON.parse(message.data)
378 |
379 | if(json_data.code=='OK'){
380 | if (json_data.content == "[DONE]") {
381 | chatInput.val('');
382 | // 收到回复,让按钮可点击
383 | chatBtn.attr('disabled',false)
384 | // 重新绑定键盘事件
385 | chatInput.on("keydown",handleEnter);
386 | messages.push({"role": "assistant", "content": text});
387 | // 判断是否本地存储历史会话
388 | if(archiveSession==1){
389 | localStorage.setItem("session",JSON.stringify(messages));
390 | }
391 | text = '';
392 | return;
393 | }
394 | if (json_data.content == null || json_data.content == 'null') {
395 | return;
396 | }
397 | text = text + json_data.content;
398 | addResponseMessage(text);
399 |
400 | }else{
401 | //鉴权过期重新获取token
402 | if(json_data.code=='UNAUTHORIZED'){
403 | console.log(json_data.message)
404 | getToken();
405 | params = {
406 | appId,
407 | continuousDialogue,
408 | model,
409 | token
410 | };
411 | $("#chatStatus span").text("离线")
412 | alert("会话离线请刷新连接")
413 | //reloadWebsocket(params)
414 | return;
415 | }else if(json_data.code="ChatGptError"){
416 | chatInput.val('');
417 | // 收到回复,让按钮可点击
418 | chatBtn.attr('disabled',false)
419 | // 重新绑定键盘事件
420 | chatInput.on("keydown",handleEnter);
421 | addResponseMessage(json_data.content+"点击应用接入绑定OPEN AI账号 每天获取免费体验额度");
422 | }
423 | }
424 |
425 | }
426 |
427 | // 处理用户输入
428 | chatBtn.click(function() {
429 | // 解绑键盘事件
430 | chatInput.off("keydown",handleEnter);
431 |
432 | // 保存api key与对话数据
433 | let data;
434 |
435 |
436 | let message = chatInput.val();
437 | if (message.length == 0){
438 | // 重新绑定键盘事件
439 | chatInput.on("keydown",handleEnter);
440 | return
441 | }
442 |
443 | addRequestMessage(message);
444 | // 将用户消息保存到数组
445 | messages.push({"role": "user", "content": message})
446 | // 收到回复前让按钮不可点击
447 | chatBtn.attr('disabled',true)
448 | if(model=='2'||model=='3'){
449 | alert("AI绘画可能会存在较慢情况请耐心2-3分钟不要重复点击和刷新")
450 | paint(message)
451 | }else{
452 | send(message);
453 | }
454 | });
455 |
456 | // Enter键盘事件
457 | function handleEnter(e){
458 | if (e.keyCode==13){
459 | chatBtn.click();
460 | e.preventDefault(); //避免回车换行
461 | }
462 | }
463 |
464 | // 绑定Enter键盘事件
465 | chatInput.on("keydown",handleEnter);
466 |
467 |
468 | // 设置栏宽度自适应
469 | let width = $('.function .others').width();
470 | $('.function .settings .dropdown-menu').css('width', width);
471 |
472 | $(window).resize(function() {
473 | width = $('.function .others').width();
474 | $('.function .settings .dropdown-menu').css('width', width);
475 | });
476 |
477 |
478 | //保存用户回话记录
479 | $('#chck-1').click(function() {
480 | if ($(this).prop('checked')) {
481 | // 开启状态的操作
482 | archiveSession=1;
483 | localStorage.setItem('archiveSession', archiveSession);
484 | if(messages.length != 0){
485 | localStorage.setItem("session",JSON.stringify(messages));
486 | }
487 | } else {
488 | // 关闭状态的操作
489 | archiveSession=0;
490 | localStorage.setItem('archiveSession', archiveSession);
491 | localStorage.removeItem("session");
492 | }
493 | });
494 |
495 | // 加载历史保存会话
496 | function loadHistoryMsg(){
497 | if(archiveSession==1&&messages!=null&&messages!=''){
498 | $.each(messages, function(index, item) {
499 | if (item.role === 'user') {
500 | addRequestMessage(item.content)
501 | } else if (item.role === 'assistant') {
502 | if(item.model!=null&&item.model!='undefind'){
503 | addResponsPic(item.content)
504 | }else{
505 | addResponseMessage(item.content)
506 | }
507 | }
508 | });
509 |
510 | }
511 |
512 | }
513 |
514 | //模型选择按钮
515 | function defaultSelModel(value){
516 | if(value!=1&&value!=2&value!=4&value!=3){
517 | value=1;
518 | model=1;
519 | localStorage.setItem('model',model);
520 |
521 | }
522 | var all_options = document.getElementById("selModel").options;
523 | for (i=0; i应用ID: 秘钥ID: ',
646 | btn: ['确认', '取消'],
647 | yes: function(index, elem){
648 | // 点击确认后的回调函数
649 | appId = $('#appId').val().trim(); // 获取应用ID,去掉首尾空格
650 | secret = $('#appSecret').val().trim(); // 获取秘钥,去掉首尾空格
651 | wsCache.delete('token');
652 | localStorage.clear();
653 |
654 | localStorage.setItem('appId',appId);
655 | localStorage.setItem('secret',secret)
656 | window.location.reload();
657 | // 在这里可以对输入内容进行验证和处理
658 |
659 | // 关闭弹窗
660 | layer.close(index);
661 | }
662 | });
663 |
664 | })
665 | // 初始化默认平台账号
666 | function defaultAccount(){
667 | if(appId==null||appId==''||appId=='undefind'){
668 | appId='20230609051455A001';
669 | secret='K20c4e7741418be6cbd773416240492';
670 | }
671 | }
672 |
673 | //保存用户消息
674 | function saveHistoryMsg(){
675 | let messages=[];
676 | const messagesList = JSON.parse(localStorage.getItem("session"));
677 | if(messagesList){
678 | messages=messagesList
679 | }
680 |
681 | return messages;
682 | }
683 |
684 | });
--------------------------------------------------------------------------------
/static/js/layer/layer.js:
--------------------------------------------------------------------------------
1 | /*! layer-v3.0.2 Web弹层组件 MIT License http://layer.layui.com/ By 贤心 */
2 | ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.scripts,t=e[e.length-1],i=t.src;if(!t.getAttribute("merge"))return i.substring(0,i.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"]},r={v:"3.0.2",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):r.link("skin/"+e.extend),this):this},link:function(t,n,a){if(r.path){var o=i("head")[0],s=document.createElement("link");"string"==typeof n&&(a=n);var l=(a||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,i("#"+f)[0]||o.appendChild(s),"function"==typeof n&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(i("#"+f).css("width"))?n():setTimeout(u,100))}()}},ready:function(e){var t="skinlayercss",i="302";return a?layui.addcss("modules/layer/default/layer.css?v="+r.v+i,e,t):r.link("skin/default/layer.css?v="+r.v+i,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),r.ready(function(){document.body?t.creat():setTimeout(function(){t.creat()},50)})};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?''+(f?r.title[0]:r.title)+"
":"";return r.zIndex=s,t([r.shade?'
':"",''+(e&&2!=r.type?"":u)+'
'+(0==r.type&&r.icon!==-1?' ':"")+(1==r.type&&e?"":r.content||"")+'
'+function(){var e=c?' ':"";return r.closeBtn&&(e+=' '),e}()+" "+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t
'+r.btn[t]+"";return' '+e+"
"}():"")+(r.resize?' ':"")+" "],u,i('
')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+' ',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]&&e.layero.addClass(l.anim[t.anim]).data("anim",!0)}},s.pt.auto=function(e){function t(e){e=s.find(e),e.height(f[1]-c-u-2*(0|parseFloat(e.css("padding"))))}var a=this,o=a.config,s=i("#"+l[0]+e);""===o.area[0]&&o.maxWidth>0&&(r.ie&&r.ie<8&&o.btn&&s.width(s.innerWidth()),s.outerWidth()>o.maxWidth&&s.width(o.maxWidth));var f=[s.innerWidth(),s.innerHeight()],c=s.find(l[1]).outerHeight()||0,u=s.find("."+l[6]).outerHeight()||0;switch(o.type){case 2:t("iframe");break;default:""===o.area[1]?o.fixed&&f[1]>=n.height()&&(f[1]=n.height(),t("."+l[5])):t("."+l[5])}return a},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("anim")&&t.addClass(a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),setTimeout(function(){f()},r.ie&&r.ie<10||!t.data("anim")?0:200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return' '}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,n="";if(e>0)for(n=''+t[0].title+" ";i"+t[i].title+"";return n}(),content:''+function(){var e=t.length,i=1,n="";if(e>0)for(n=''+(t[0].content||"no content")+" ";i'+(t[i].content||"no content")+"";return n}()+" ",success:function(t){var a=t.find(".layui-layer-title").children(),o=t.find(".layui-layer-tabmain").children();a.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var n=i(this),a=n.index();n.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"),o.eq(a).show().siblings().hide(),"function"==typeof e.change&&e.change(a)}),"function"==typeof n&&n(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){u.length<=1||(f.start=s.imgIndex-1,r.close(s.index),setTimeout(function(){r.photos(t,!0,e)},200))},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0] ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常 是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.jquery),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);
--------------------------------------------------------------------------------
/static/js/layer/mobile/layer.js:
--------------------------------------------------------------------------------
1 | /*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */
2 | ;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?''+(e?n.title[0]:n.title)+" ":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+" ",2===t&&(e=''+n.btn[1]+" "+e),''+e+"
"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content=''+(n.content||"")+"
"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
':"")+'",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv {
240 | line-height: 22px;
241 | padding-top: 7px;
242 | margin-bottom: 20px;
243 | font-size: 14px
244 | }
245 |
246 | .layui-m-layerbtn {
247 | display: box;
248 | display: -moz-box;
249 | display: -webkit-box;
250 | width: 100%;
251 | height: 50px;
252 | line-height: 50px;
253 | font-size: 0;
254 | border-top: 1px solid #D0D0D0;
255 | background-color: #F2F2F2
256 | }
257 |
258 | .layui-m-layerbtn span {
259 | display: block;
260 | -moz-box-flex: 1;
261 | box-flex: 1;
262 | -webkit-box-flex: 1;
263 | font-size: 14px;
264 | cursor: pointer
265 | }
266 |
267 | .layui-m-layerbtn span[yes] {
268 | color: #40AFFE
269 | }
270 |
271 | .layui-m-layerbtn span[no] {
272 | border-right: 1px solid #D0D0D0;
273 | border-radius: 0 0 0 5px
274 | }
275 |
276 | .layui-m-layerbtn span:active {
277 | background-color: #F6F6F6
278 | }
279 |
280 | .layui-m-layerend {
281 | position: absolute;
282 | right: 7px;
283 | top: 10px;
284 | width: 30px;
285 | height: 30px;
286 | border: 0;
287 | font-weight: 400;
288 | background: 0 0;
289 | cursor: pointer;
290 | -webkit-appearance: none;
291 | font-size: 30px
292 | }
293 |
294 | .layui-m-layerend::after,
295 | .layui-m-layerend::before {
296 | position: absolute;
297 | left: 5px;
298 | top: 15px;
299 | content: '';
300 | width: 18px;
301 | height: 1px;
302 | background-color: #999;
303 | transform: rotate(45deg);
304 | -webkit-transform: rotate(45deg);
305 | border-radius: 3px
306 | }
307 |
308 | .layui-m-layerend::after {
309 | transform: rotate(-45deg);
310 | -webkit-transform: rotate(-45deg)
311 | }
312 |
313 | body .layui-m-layer .layui-m-layer-footer {
314 | position: fixed;
315 | width: 95%;
316 | max-width: 100%;
317 | margin: 0 auto;
318 | left: 0;
319 | right: 0;
320 | bottom: 10px;
321 | background: 0 0
322 | }
323 |
324 | .layui-m-layer-footer .layui-m-layercont {
325 | padding: 20px;
326 | border-radius: 5px 5px 0 0;
327 | background-color: rgba(255, 255, 255, .8)
328 | }
329 |
330 | .layui-m-layer-footer .layui-m-layerbtn {
331 | display: block;
332 | height: auto;
333 | background: 0 0;
334 | border-top: none
335 | }
336 |
337 | .layui-m-layer-footer .layui-m-layerbtn span {
338 | background-color: rgba(255, 255, 255, .8)
339 | }
340 |
341 | .layui-m-layer-footer .layui-m-layerbtn span[no] {
342 | color: #FD482C;
343 | border-top: 1px solid #c2c2c2;
344 | border-radius: 0 0 5px 5px
345 | }
346 |
347 | .layui-m-layer-footer .layui-m-layerbtn span[yes] {
348 | margin-top: 10px;
349 | border-radius: 5px
350 | }
351 |
352 | body .layui-m-layer .layui-m-layer-msg {
353 | width: auto;
354 | max-width: 90%;
355 | margin: 0 auto;
356 | bottom: -150px;
357 | background-color: rgba(0, 0, 0, .7);
358 | color: #fff
359 | }
360 |
361 | .layui-m-layer-msg .layui-m-layercont {
362 | padding: 10px 20px
363 | }
--------------------------------------------------------------------------------
/static/js/layer/skin/default/icon-ext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/icon-ext.png
--------------------------------------------------------------------------------
/static/js/layer/skin/default/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/icon.png
--------------------------------------------------------------------------------
/static/js/layer/skin/default/layer.css:
--------------------------------------------------------------------------------
1 | .layui-layer-imgbar,
2 | .layui-layer-imgtit a,
3 | .layui-layer-tab .layui-layer-title span,
4 | .layui-layer-title {
5 | text-overflow: ellipsis;
6 | white-space: nowrap
7 | }
8 |
9 | *html {
10 | background-image: url(about:blank);
11 | background-attachment: fixed
12 | }
13 |
14 | html #layuicss-skinlayercss {
15 | display: none;
16 | position: absolute;
17 | width: 1989px
18 | }
19 |
20 | .layui-layer,
21 | .layui-layer-shade {
22 | position: fixed;
23 | _position: absolute;
24 | pointer-events: auto
25 | }
26 |
27 | .layui-layer-shade {
28 | top: 0;
29 | left: 0;
30 | width: 100%;
31 | height: 100%;
32 | _height: expression(document.body.offsetHeight+"px")
33 | }
34 |
35 | .layui-layer {
36 | -webkit-overflow-scrolling: touch;
37 | top: 150px;
38 | left: 0;
39 | margin: 0;
40 | padding: 0;
41 | background-color: #fff;
42 | -webkit-background-clip: content;
43 | box-shadow: 1px 1px 50px rgba(0, 0, 0, .3)
44 | }
45 |
46 | .layui-layer-close {
47 | position: absolute
48 | }
49 |
50 | .layui-layer-content {
51 | position: relative
52 | }
53 |
54 | .layui-layer-border {
55 | border: 1px solid #B2B2B2;
56 | border: 1px solid rgba(0, 0, 0, .1);
57 | box-shadow: 1px 1px 5px rgba(0, 0, 0, .2)
58 | }
59 |
60 | .layui-layer-load {
61 | background: url(loading-1.gif) center center no-repeat #eee
62 | }
63 |
64 | .layui-layer-ico {
65 | background: url(icon.png) no-repeat
66 | }
67 |
68 | .layui-layer-btn a,
69 | .layui-layer-dialog .layui-layer-ico,
70 | .layui-layer-setwin a {
71 | display: inline-block;
72 | *display: inline;
73 | *zoom: 1;
74 | vertical-align: top
75 | }
76 |
77 | .layui-layer-move {
78 | display: none;
79 | position: fixed;
80 | *position: absolute;
81 | left: 0;
82 | top: 0;
83 | width: 100%;
84 | height: 100%;
85 | cursor: move;
86 | opacity: 0;
87 | filter: alpha(opacity=0);
88 | background-color: #fff;
89 | z-index: 2147483647
90 | }
91 |
92 | .layui-layer-resize {
93 | position: absolute;
94 | width: 15px;
95 | height: 15px;
96 | right: 0;
97 | bottom: 0;
98 | cursor: se-resize
99 | }
100 |
101 | .layui-layer {
102 | border-radius: 2px;
103 | -webkit-animation-fill-mode: both;
104 | animation-fill-mode: both;
105 | -webkit-animation-duration: .3s;
106 | animation-duration: .3s
107 | }
108 |
109 | @-webkit-keyframes layer-bounceIn {
110 | 0% {
111 | opacity: 0;
112 | -webkit-transform: scale(.5);
113 | transform: scale(.5)
114 | }
115 |
116 | 100% {
117 | opacity: 1;
118 | -webkit-transform: scale(1);
119 | transform: scale(1)
120 | }
121 | }
122 |
123 | @keyframes layer-bounceIn {
124 | 0% {
125 | opacity: 0;
126 | -webkit-transform: scale(.5);
127 | -ms-transform: scale(.5);
128 | transform: scale(.5)
129 | }
130 |
131 | 100% {
132 | opacity: 1;
133 | -webkit-transform: scale(1);
134 | -ms-transform: scale(1);
135 | transform: scale(1)
136 | }
137 | }
138 |
139 | .layer-anim {
140 | -webkit-animation-name: layer-bounceIn;
141 | animation-name: layer-bounceIn
142 | }
143 |
144 | @-webkit-keyframes layer-zoomInDown {
145 | 0% {
146 | opacity: 0;
147 | -webkit-transform: scale(.1) translateY(-2000px);
148 | transform: scale(.1) translateY(-2000px);
149 | -webkit-animation-timing-function: ease-in-out;
150 | animation-timing-function: ease-in-out
151 | }
152 |
153 | 60% {
154 | opacity: 1;
155 | -webkit-transform: scale(.475) translateY(60px);
156 | transform: scale(.475) translateY(60px);
157 | -webkit-animation-timing-function: ease-out;
158 | animation-timing-function: ease-out
159 | }
160 | }
161 |
162 | @keyframes layer-zoomInDown {
163 | 0% {
164 | opacity: 0;
165 | -webkit-transform: scale(.1) translateY(-2000px);
166 | -ms-transform: scale(.1) translateY(-2000px);
167 | transform: scale(.1) translateY(-2000px);
168 | -webkit-animation-timing-function: ease-in-out;
169 | animation-timing-function: ease-in-out
170 | }
171 |
172 | 60% {
173 | opacity: 1;
174 | -webkit-transform: scale(.475) translateY(60px);
175 | -ms-transform: scale(.475) translateY(60px);
176 | transform: scale(.475) translateY(60px);
177 | -webkit-animation-timing-function: ease-out;
178 | animation-timing-function: ease-out
179 | }
180 | }
181 |
182 | .layer-anim-01 {
183 | -webkit-animation-name: layer-zoomInDown;
184 | animation-name: layer-zoomInDown
185 | }
186 |
187 | @-webkit-keyframes layer-fadeInUpBig {
188 | 0% {
189 | opacity: 0;
190 | -webkit-transform: translateY(2000px);
191 | transform: translateY(2000px)
192 | }
193 |
194 | 100% {
195 | opacity: 1;
196 | -webkit-transform: translateY(0);
197 | transform: translateY(0)
198 | }
199 | }
200 |
201 | @keyframes layer-fadeInUpBig {
202 | 0% {
203 | opacity: 0;
204 | -webkit-transform: translateY(2000px);
205 | -ms-transform: translateY(2000px);
206 | transform: translateY(2000px)
207 | }
208 |
209 | 100% {
210 | opacity: 1;
211 | -webkit-transform: translateY(0);
212 | -ms-transform: translateY(0);
213 | transform: translateY(0)
214 | }
215 | }
216 |
217 | .layer-anim-02 {
218 | -webkit-animation-name: layer-fadeInUpBig;
219 | animation-name: layer-fadeInUpBig
220 | }
221 |
222 | @-webkit-keyframes layer-zoomInLeft {
223 | 0% {
224 | opacity: 0;
225 | -webkit-transform: scale(.1) translateX(-2000px);
226 | transform: scale(.1) translateX(-2000px);
227 | -webkit-animation-timing-function: ease-in-out;
228 | animation-timing-function: ease-in-out
229 | }
230 |
231 | 60% {
232 | opacity: 1;
233 | -webkit-transform: scale(.475) translateX(48px);
234 | transform: scale(.475) translateX(48px);
235 | -webkit-animation-timing-function: ease-out;
236 | animation-timing-function: ease-out
237 | }
238 | }
239 |
240 | @keyframes layer-zoomInLeft {
241 | 0% {
242 | opacity: 0;
243 | -webkit-transform: scale(.1) translateX(-2000px);
244 | -ms-transform: scale(.1) translateX(-2000px);
245 | transform: scale(.1) translateX(-2000px);
246 | -webkit-animation-timing-function: ease-in-out;
247 | animation-timing-function: ease-in-out
248 | }
249 |
250 | 60% {
251 | opacity: 1;
252 | -webkit-transform: scale(.475) translateX(48px);
253 | -ms-transform: scale(.475) translateX(48px);
254 | transform: scale(.475) translateX(48px);
255 | -webkit-animation-timing-function: ease-out;
256 | animation-timing-function: ease-out
257 | }
258 | }
259 |
260 | .layer-anim-03 {
261 | -webkit-animation-name: layer-zoomInLeft;
262 | animation-name: layer-zoomInLeft
263 | }
264 |
265 | @-webkit-keyframes layer-rollIn {
266 | 0% {
267 | opacity: 0;
268 | -webkit-transform: translateX(-100%) rotate(-120deg);
269 | transform: translateX(-100%) rotate(-120deg)
270 | }
271 |
272 | 100% {
273 | opacity: 1;
274 | -webkit-transform: translateX(0) rotate(0);
275 | transform: translateX(0) rotate(0)
276 | }
277 | }
278 |
279 | @keyframes layer-rollIn {
280 | 0% {
281 | opacity: 0;
282 | -webkit-transform: translateX(-100%) rotate(-120deg);
283 | -ms-transform: translateX(-100%) rotate(-120deg);
284 | transform: translateX(-100%) rotate(-120deg)
285 | }
286 |
287 | 100% {
288 | opacity: 1;
289 | -webkit-transform: translateX(0) rotate(0);
290 | -ms-transform: translateX(0) rotate(0);
291 | transform: translateX(0) rotate(0)
292 | }
293 | }
294 |
295 | .layer-anim-04 {
296 | -webkit-animation-name: layer-rollIn;
297 | animation-name: layer-rollIn
298 | }
299 |
300 | @keyframes layer-fadeIn {
301 | 0% {
302 | opacity: 0
303 | }
304 |
305 | 100% {
306 | opacity: 1
307 | }
308 | }
309 |
310 | .layer-anim-05 {
311 | -webkit-animation-name: layer-fadeIn;
312 | animation-name: layer-fadeIn
313 | }
314 |
315 | @-webkit-keyframes layer-shake {
316 |
317 | 0%,
318 | 100% {
319 | -webkit-transform: translateX(0);
320 | transform: translateX(0)
321 | }
322 |
323 | 10%,
324 | 30%,
325 | 50%,
326 | 70%,
327 | 90% {
328 | -webkit-transform: translateX(-10px);
329 | transform: translateX(-10px)
330 | }
331 |
332 | 20%,
333 | 40%,
334 | 60%,
335 | 80% {
336 | -webkit-transform: translateX(10px);
337 | transform: translateX(10px)
338 | }
339 | }
340 |
341 | @keyframes layer-shake {
342 |
343 | 0%,
344 | 100% {
345 | -webkit-transform: translateX(0);
346 | -ms-transform: translateX(0);
347 | transform: translateX(0)
348 | }
349 |
350 | 10%,
351 | 30%,
352 | 50%,
353 | 70%,
354 | 90% {
355 | -webkit-transform: translateX(-10px);
356 | -ms-transform: translateX(-10px);
357 | transform: translateX(-10px)
358 | }
359 |
360 | 20%,
361 | 40%,
362 | 60%,
363 | 80% {
364 | -webkit-transform: translateX(10px);
365 | -ms-transform: translateX(10px);
366 | transform: translateX(10px)
367 | }
368 | }
369 |
370 | .layer-anim-06 {
371 | -webkit-animation-name: layer-shake;
372 | animation-name: layer-shake
373 | }
374 |
375 | @-webkit-keyframes fadeIn {
376 | 0% {
377 | opacity: 0
378 | }
379 |
380 | 100% {
381 | opacity: 1
382 | }
383 | }
384 |
385 | .layui-layer-title {
386 | padding: 0 80px 0 20px;
387 | height: 42px;
388 | line-height: 42px;
389 | border-bottom: 1px solid #eee;
390 | font-size: 14px;
391 | color: #333;
392 | overflow: hidden;
393 | background-color: #F8F8F8;
394 | border-radius: 2px 2px 0 0
395 | }
396 |
397 | .layui-layer-setwin {
398 | position: absolute;
399 | right: 15px;
400 | *right: 0;
401 | top: 15px;
402 | font-size: 0;
403 | line-height: initial
404 | }
405 |
406 | .layui-layer-setwin a {
407 | position: relative;
408 | width: 16px;
409 | height: 16px;
410 | margin-left: 10px;
411 | font-size: 12px;
412 | _overflow: hidden
413 | }
414 |
415 | .layui-layer-setwin .layui-layer-min cite {
416 | position: absolute;
417 | width: 14px;
418 | height: 2px;
419 | left: 0;
420 | top: 50%;
421 | margin-top: -1px;
422 | background-color: #2E2D3C;
423 | cursor: pointer;
424 | _overflow: hidden
425 | }
426 |
427 | .layui-layer-setwin .layui-layer-min:hover cite {
428 | background-color: #2D93CA
429 | }
430 |
431 | .layui-layer-setwin .layui-layer-max {
432 | background-position: -32px -40px
433 | }
434 |
435 | .layui-layer-setwin .layui-layer-max:hover {
436 | background-position: -16px -40px
437 | }
438 |
439 | .layui-layer-setwin .layui-layer-maxmin {
440 | background-position: -65px -40px
441 | }
442 |
443 | .layui-layer-setwin .layui-layer-maxmin:hover {
444 | background-position: -49px -40px
445 | }
446 |
447 | .layui-layer-setwin .layui-layer-close1 {
448 | background-position: 1px -40px;
449 | cursor: pointer
450 | }
451 |
452 | .layui-layer-setwin .layui-layer-close1:hover {
453 | opacity: .7
454 | }
455 |
456 | .layui-layer-setwin .layui-layer-close2 {
457 | position: absolute;
458 | right: -28px;
459 | top: -28px;
460 | width: 30px;
461 | height: 30px;
462 | margin-left: 0;
463 | background-position: -149px -31px;
464 | *right: -18px;
465 | _display: none
466 | }
467 |
468 | .layui-layer-setwin .layui-layer-close2:hover {
469 | background-position: -180px -31px
470 | }
471 |
472 | .layui-layer-btn {
473 | text-align: right;
474 | padding: 0 10px 12px;
475 | pointer-events: auto;
476 | user-select: none;
477 | -webkit-user-select: none
478 | }
479 |
480 | .layui-layer-btn a {
481 | height: 28px;
482 | line-height: 28px;
483 | margin: 6px 6px 0;
484 | padding: 0 15px;
485 | border: 1px solid #dedede;
486 | background-color: #f1f1f1;
487 | color: #333;
488 | border-radius: 2px;
489 | font-weight: 400;
490 | cursor: pointer;
491 | text-decoration: none
492 | }
493 |
494 | .layui-layer-btn a:hover {
495 | opacity: .9;
496 | text-decoration: none
497 | }
498 |
499 | .layui-layer-btn a:active {
500 | opacity: .8
501 | }
502 |
503 | .layui-layer-btn .layui-layer-btn0 {
504 | /* border-color: #4898d5;
505 | background-color: #2e8ded; */
506 | background-color: #1ab394;
507 | border-color: #1ab394;
508 | color: #fff
509 | }
510 |
511 | .layui-layer-btn-l {
512 | text-align: left
513 | }
514 |
515 | .layui-layer-btn-c {
516 | text-align: center
517 | }
518 |
519 | .layui-layer-dialog {
520 | min-width: 260px
521 | }
522 |
523 | .layui-layer-dialog .layui-layer-content {
524 | position: relative;
525 | padding: 20px;
526 | line-height: 24px;
527 | word-break: break-all;
528 | overflow: hidden;
529 | font-size: 14px;
530 | overflow-x: hidden;
531 | overflow-y: auto
532 | }
533 |
534 | .layui-layer-dialog .layui-layer-content .layui-layer-ico {
535 | position: absolute;
536 | top: 16px;
537 | left: 15px;
538 | _left: -40px;
539 | width: 30px;
540 | height: 30px
541 | }
542 |
543 | .layui-layer-ico1 {
544 | background-position: -30px 0
545 | }
546 |
547 | .layui-layer-ico2 {
548 | background-position: -60px 0
549 | }
550 |
551 | .layui-layer-ico3 {
552 | background-position: -90px 0
553 | }
554 |
555 | .layui-layer-ico4 {
556 | background-position: -120px 0
557 | }
558 |
559 | .layui-layer-ico5 {
560 | background-position: -150px 0
561 | }
562 |
563 | .layui-layer-ico6 {
564 | background-position: -180px 0
565 | }
566 |
567 | .layui-layer-rim {
568 | border: 6px solid #8D8D8D;
569 | border: 6px solid rgba(0, 0, 0, .3);
570 | border-radius: 5px;
571 | box-shadow: none
572 | }
573 |
574 | .layui-layer-msg {
575 | min-width: 180px;
576 | border: 1px solid #D3D4D3;
577 | box-shadow: none
578 | }
579 |
580 | .layui-layer-hui {
581 | min-width: 100px;
582 | background-color: #000;
583 | filter: alpha(opacity=60);
584 | background-color: rgba(0, 0, 0, .6);
585 | color: #fff;
586 | border: none
587 | }
588 |
589 | .layui-layer-hui .layui-layer-content {
590 | padding: 12px 25px;
591 | text-align: center
592 | }
593 |
594 | .layui-layer-dialog .layui-layer-padding {
595 | padding: 20px 20px 20px 55px;
596 | text-align: left
597 | }
598 |
599 | .layui-layer-page .layui-layer-content {
600 | position: relative;
601 | overflow: auto
602 | }
603 |
604 | .layui-layer-iframe .layui-layer-btn,
605 | .layui-layer-page .layui-layer-btn {
606 | padding-top: 10px
607 | }
608 |
609 | .layui-layer-nobg {
610 | background: 0 0
611 | }
612 |
613 | .layui-layer-iframe iframe {
614 | display: block;
615 | width: 100%
616 | }
617 |
618 | .layui-layer-loading {
619 | border-radius: 100%;
620 | background: 0 0;
621 | box-shadow: none;
622 | border: none
623 | }
624 |
625 | .layui-layer-loading .layui-layer-content {
626 | width: 60px;
627 | height: 24px;
628 | background: url(loading-0.gif) no-repeat
629 | }
630 |
631 | .layui-layer-loading .layui-layer-loading1 {
632 | width: 37px;
633 | height: 37px;
634 | background: url(loading-1.gif) no-repeat
635 | }
636 |
637 | .layui-layer-ico16,
638 | .layui-layer-loading .layui-layer-loading2 {
639 | width: 32px;
640 | height: 32px;
641 | background: url(loading-2.gif) no-repeat
642 | }
643 |
644 | .layui-layer-tips {
645 | background: 0 0;
646 | box-shadow: none;
647 | border: none
648 | }
649 |
650 | .layui-layer-tips .layui-layer-content {
651 | position: relative;
652 | line-height: 22px;
653 | min-width: 12px;
654 | padding: 5px 10px;
655 | font-size: 12px;
656 | _float: left;
657 | border-radius: 2px;
658 | box-shadow: 1px 1px 3px rgba(0, 0, 0, .2);
659 | background-color: #000;
660 | color: #fff
661 | }
662 |
663 | .layui-layer-tips .layui-layer-close {
664 | right: -2px;
665 | top: -1px
666 | }
667 |
668 | .layui-layer-tips i.layui-layer-TipsG {
669 | position: absolute;
670 | width: 0;
671 | height: 0;
672 | border-width: 8px;
673 | border-color: transparent;
674 | border-style: dashed;
675 | *overflow: hidden
676 | }
677 |
678 | .layui-layer-tips i.layui-layer-TipsB,
679 | .layui-layer-tips i.layui-layer-TipsT {
680 | left: 5px;
681 | border-right-style: solid;
682 | border-right-color: #000
683 | }
684 |
685 | .layui-layer-tips i.layui-layer-TipsT {
686 | bottom: -8px
687 | }
688 |
689 | .layui-layer-tips i.layui-layer-TipsB {
690 | top: -8px
691 | }
692 |
693 | .layui-layer-tips i.layui-layer-TipsL,
694 | .layui-layer-tips i.layui-layer-TipsR {
695 | top: 1px;
696 | border-bottom-style: solid;
697 | border-bottom-color: #000
698 | }
699 |
700 | .layui-layer-tips i.layui-layer-TipsR {
701 | left: -8px
702 | }
703 |
704 | .layui-layer-tips i.layui-layer-TipsL {
705 | right: -8px
706 | }
707 |
708 | .layui-layer-lan[type=dialog] {
709 | min-width: 280px
710 | }
711 |
712 | .layui-layer-lan .layui-layer-title {
713 | background: #4476A7;
714 | color: #fff;
715 | border: none
716 | }
717 |
718 | .layui-layer-lan .layui-layer-btn {
719 | padding: 5px 10px 10px;
720 | text-align: right;
721 | border-top: 1px solid #E9E7E7
722 | }
723 |
724 | .layui-layer-lan .layui-layer-btn a {
725 | background: #BBB5B5;
726 | border: none
727 | }
728 |
729 | .layui-layer-lan .layui-layer-btn .layui-layer-btn1 {
730 | background: #C9C5C5
731 | }
732 |
733 | .layui-layer-molv .layui-layer-title {
734 | background: #009f95;
735 | color: #fff;
736 | border: none
737 | }
738 |
739 | .layui-layer-molv .layui-layer-btn a {
740 | background: #009f95
741 | }
742 |
743 | .layui-layer-molv .layui-layer-btn .layui-layer-btn1 {
744 | background: #92B8B1
745 | }
746 |
747 | .layui-layer-iconext {
748 | background: url(icon-ext.png) no-repeat
749 | }
750 |
751 | .layui-layer-prompt .layui-layer-input {
752 | display: block;
753 | width: 220px;
754 | height: 30px;
755 | margin: 0 auto;
756 | line-height: 30px;
757 | padding: 0 5px;
758 | border: 1px solid #ccc;
759 | box-shadow: 1px 1px 5px rgba(0, 0, 0, .1) inset;
760 | color: #333
761 | }
762 |
763 | .layui-layer-prompt textarea.layui-layer-input {
764 | width: 300px;
765 | height: 100px;
766 | line-height: 20px
767 | }
768 |
769 | .layui-layer-prompt .layui-layer-content {
770 | padding: 20px
771 | }
772 |
773 | .layui-layer-prompt .layui-layer-btn {
774 | padding-top: 0
775 | }
776 |
777 | .layui-layer-tab {
778 | box-shadow: 1px 1px 50px rgba(0, 0, 0, .4)
779 | }
780 |
781 | .layui-layer-tab .layui-layer-title {
782 | padding-left: 0;
783 | border-bottom: 1px solid #ccc;
784 | background-color: #eee;
785 | overflow: visible
786 | }
787 |
788 | .layui-layer-tab .layui-layer-title span {
789 | position: relative;
790 | float: left;
791 | min-width: 80px;
792 | max-width: 260px;
793 | padding: 0 20px;
794 | text-align: center;
795 | cursor: default;
796 | overflow: hidden
797 | }
798 |
799 | .layui-layer-tab .layui-layer-title span.layui-layer-tabnow {
800 | height: 43px;
801 | border-left: 1px solid #ccc;
802 | border-right: 1px solid #ccc;
803 | background-color: #fff;
804 | z-index: 10
805 | }
806 |
807 | .layui-layer-tab .layui-layer-title span:first-child {
808 | border-left: none
809 | }
810 |
811 | .layui-layer-tabmain {
812 | line-height: 24px;
813 | clear: both
814 | }
815 |
816 | .layui-layer-tabmain .layui-layer-tabli {
817 | display: none
818 | }
819 |
820 | .layui-layer-tabmain .layui-layer-tabli.xubox_tab_layer {
821 | display: block
822 | }
823 |
824 | .xubox_tabclose {
825 | position: absolute;
826 | right: 10px;
827 | top: 5px;
828 | cursor: pointer
829 | }
830 |
831 | .layui-layer-photos {
832 | -webkit-animation-duration: .8s;
833 | animation-duration: .8s
834 | }
835 |
836 | .layui-layer-photos .layui-layer-content {
837 | overflow: hidden;
838 | text-align: center
839 | }
840 |
841 | .layui-layer-photos .layui-layer-phimg img {
842 | position: relative;
843 | width: 100%;
844 | display: inline-block;
845 | *display: inline;
846 | *zoom: 1;
847 | vertical-align: top
848 | }
849 |
850 | .layui-layer-imgbar,
851 | .layui-layer-imguide {
852 | display: none
853 | }
854 |
855 | .layui-layer-imgnext,
856 | .layui-layer-imgprev {
857 | position: absolute;
858 | top: 50%;
859 | width: 27px;
860 | _width: 44px;
861 | height: 44px;
862 | margin-top: -22px;
863 | outline: 0;
864 | blr: expression(this.onFocus=this.blur())
865 | }
866 |
867 | .layui-layer-imgprev {
868 | left: 10px;
869 | background-position: -5px -5px;
870 | _background-position: -70px -5px
871 | }
872 |
873 | .layui-layer-imgprev:hover {
874 | background-position: -33px -5px;
875 | _background-position: -120px -5px
876 | }
877 |
878 | .layui-layer-imgnext {
879 | right: 10px;
880 | _right: 8px;
881 | background-position: -5px -50px;
882 | _background-position: -70px -50px
883 | }
884 |
885 | .layui-layer-imgnext:hover {
886 | background-position: -33px -50px;
887 | _background-position: -120px -50px
888 | }
889 |
890 | .layui-layer-imgbar {
891 | position: absolute;
892 | left: 0;
893 | bottom: 0;
894 | width: 100%;
895 | height: 32px;
896 | line-height: 32px;
897 | background-color: rgba(0, 0, 0, .8);
898 | background-color: #000\9;
899 | filter: Alpha(opacity=80);
900 | color: #fff;
901 | overflow: hidden;
902 | font-size: 0
903 | }
904 |
905 | .layui-layer-imgtit * {
906 | display: inline-block;
907 | *display: inline;
908 | *zoom: 1;
909 | vertical-align: top;
910 | font-size: 12px
911 | }
912 |
913 | .layui-layer-imgtit a {
914 | max-width: 65%;
915 | overflow: hidden;
916 | color: #fff
917 | }
918 |
919 | .layui-layer-imgtit a:hover {
920 | color: #fff;
921 | text-decoration: underline
922 | }
923 |
924 | .layui-layer-imgtit em {
925 | padding-left: 10px;
926 | font-style: normal
927 | }
928 |
929 | @-webkit-keyframes layer-bounceOut {
930 | 100% {
931 | opacity: 0;
932 | -webkit-transform: scale(.7);
933 | transform: scale(.7)
934 | }
935 |
936 | 30% {
937 | -webkit-transform: scale(1.05);
938 | transform: scale(1.05)
939 | }
940 |
941 | 0% {
942 | -webkit-transform: scale(1);
943 | transform: scale(1)
944 | }
945 | }
946 |
947 | @keyframes layer-bounceOut {
948 | 100% {
949 | opacity: 0;
950 | -webkit-transform: scale(.7);
951 | -ms-transform: scale(.7);
952 | transform: scale(.7)
953 | }
954 |
955 | 30% {
956 | -webkit-transform: scale(1.05);
957 | -ms-transform: scale(1.05);
958 | transform: scale(1.05)
959 | }
960 |
961 | 0% {
962 | -webkit-transform: scale(1);
963 | -ms-transform: scale(1);
964 | transform: scale(1)
965 | }
966 | }
967 |
968 | .layer-anim-close {
969 | -webkit-animation-name: layer-bounceOut;
970 | animation-name: layer-bounceOut;
971 | -webkit-animation-duration: .2s;
972 | animation-duration: .2s
973 | }
974 |
975 | @media screen and (max-width:1100px) {
976 | .layui-layer-iframe {
977 | overflow-y: auto;
978 | -webkit-overflow-scrolling: touch
979 | }
980 | }
--------------------------------------------------------------------------------
/static/js/layer/skin/default/loading-0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/loading-0.gif
--------------------------------------------------------------------------------
/static/js/layer/skin/default/loading-1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/loading-1.gif
--------------------------------------------------------------------------------
/static/js/layer/skin/default/loading-2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/loading-2.gif
--------------------------------------------------------------------------------
/static/js/marked.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * marked - a markdown parser
3 | * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
4 | * https://github.com/chjj/marked
5 | */
6 | (function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]||""});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&(cap[1]==="pre"||cap[1]==="script"||cap[1]==="style"),text:cap[0]});continue}if(!bq&&top&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else if(this.options.pedantic){this.rules=inline.pedantic}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}src=src.substring(cap[0].length);out+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(cap[0]):escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.text(escape(this.smartypants(cap[0])));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")};InlineLexer.prototype.mangle=function(text){if(!this.options.mangle)return text;var out="",l=text.length,i=0,ch;for(;i.5){ch="x"+ch.toString(16)}out+=""+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return""+(escaped?code:escape(code,true))+"\n
"}return''+(escaped?code:escape(code,true))+"\n
\n"};Renderer.prototype.blockquote=function(quote){return"\n"+quote+" \n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"\n"};Renderer.prototype.hr=function(){return this.options.xhtml?" \n":" \n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+""+type+">\n"};Renderer.prototype.listitem=function(text){return""+text+" \n"};Renderer.prototype.paragraph=function(text){return""+text+"
\n"};Renderer.prototype.table=function(header,body){return"\n"+"\n"+header+" \n"+"\n"+body+" \n"+"
\n"};Renderer.prototype.tablerow=function(content){return"\n"+content+" \n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+""+type+">\n"};Renderer.prototype.strong=function(text){return""+text+" "};Renderer.prototype.em=function(text){return""+text+" "};Renderer.prototype.codespan=function(text){return""+text+"
"};Renderer.prototype.br=function(){return this.options.xhtml?" ":" "};Renderer.prototype.del=function(text){return""+text+""};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='"+text+" ";return out};Renderer.prototype.image=function(href,title,text){var out=' ":">";return out};Renderer.prototype.text=function(text){return text};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":{return""}case"hr":{return this.renderer.hr()}case"heading":{return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text)}case"code":{return this.renderer.code(this.token.text,this.token.lang,this.token.escaped)}case"table":{var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i /g,">").replace(/"/g,""").replace(/'/g,"'")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon")return":";if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;iAn error occured:"+escape(e.message+"",true)+" "}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}());
--------------------------------------------------------------------------------
/static/js/utils.js:
--------------------------------------------------------------------------------
1 | function buildUrlParams(params) {
2 | let urlParams = '';
3 | for (const key in params) {
4 | if (params.hasOwnProperty(key)) {
5 | const value = encodeURIComponent(params[key]);
6 | urlParams += `${key}=${value}&`;
7 | }
8 | }
9 | // Remove the last '&' character
10 | return urlParams.slice(0, -1);
11 | }
12 |
13 | function generateUUID(){
14 | var d = new Date().getTime();
15 | var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
16 | var r = (d + Math.random()*16)%16 | 0;
17 | d = Math.floor(d/16);
18 | return (c=='x' ? r : (r&0x7|0x8)).toString(16);
19 | });
20 | return uuid;
21 | }
--------------------------------------------------------------------------------
/static/js/web-storage-cache.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | web-storage-cache -- Added `expires` attribute and serialize data with `JSON.parse` for the localStorage and sessionStorage.
3 | Version 1.0.3
4 | https://github.com/WQTeam/web-storage-cache
5 | (c) 2013-2016 WQTeam, MIT license
6 | */
7 | !function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.WebStorageCache=b()}(this,function(){"use strict";function a(a,b){for(var c in b)a[c]=b[c];return a}function b(a){var b=!1;if(a&&a.setItem){b=!0;var c="__"+Math.round(1e7*Math.random());try{a.setItem(c,c),a.removeItem(c)}catch(d){b=!1}}return b}function c(a){var b=typeof a;return"string"===b&&window[a]instanceof Storage?window[a]:a}function d(a){return"[object Date]"===Object.prototype.toString.call(a)&&!isNaN(a.getTime())}function e(a,b){if(b=b||new Date,"number"==typeof a?a=a===1/0?l:new Date(b.getTime()+1e3*a):"string"==typeof a&&(a=new Date(a)),a&&!d(a))throw new Error("`expires` parameter cannot be converted to a valid Date instance");return a}function f(a){var b=!1;if(a)if(a.code)switch(a.code){case 22:b=!0;break;case 1014:"NS_ERROR_DOM_QUOTA_REACHED"===a.name&&(b=!0)}else-2147024882===a.number&&(b=!0);return b}function g(a,b){this.c=(new Date).getTime(),b=b||m;var c=e(b);this.e=c.getTime(),this.v=a}function h(a){return"object"!=typeof a?!1:a&&"c"in a&&"e"in a&&"v"in a?!0:!1}function i(a){var b=(new Date).getTime();return bd;d++){var e=this.storage.key(d),f=null;try{f=n.deserialize(this.storage.getItem(e))}catch(g){}if(null!==f&&void 0!==f.e){var h=(new Date).getTime();h>=f.e&&b.push(e)}}return b.forEach(function(a){c["delete"](a)}),b},clear:function(){this.storage.clear()},add:function(b,c,d){b=j(b),d=a({force:!0},d);try{var e=n.deserialize(this.storage.getItem(b));if(!h(e)||!i(e))return this.set(b,c,d),!0}catch(f){return this.set(b,c,d),!0}return!1},replace:function(a,b,c){a=j(a);var d=null;try{d=n.deserialize(this.storage.getItem(a))}catch(e){return!1}if(h(d)){if(i(d))return this.set(a,b,c),!0;this["delete"](a)}return!1},touch:function(a,b){a=j(a);var c=null;try{c=n.deserialize(this.storage.getItem(a))}catch(d){return!1}if(h(c)){if(i(c))return this.set(a,this.get(a),{exp:b}),!0;this["delete"](a)}return!1}};return k.prototype=p,k});
--------------------------------------------------------------------------------