├── .github └── intro.png ├── .gitignore ├── .husky └── pre-commit ├── LICENSE ├── README.md ├── api └── prompts.js ├── app.js ├── app.json ├── app.scss ├── assets ├── images │ ├── loading.gif │ ├── logo.png │ ├── prompt-default.svg │ └── prompt-translator.svg └── styles │ ├── iconfont.scss │ ├── index.scss │ └── tdesign-variables.scss ├── components ├── custom-loading │ ├── README.md │ ├── index.js │ ├── index.json │ ├── index.scss │ ├── index.wxml │ └── loading.js ├── message-item │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss └── prompt-item │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── config ├── development.js ├── env.js ├── index.js └── production.js ├── miniprogram-ci.js ├── package.json ├── pages ├── home │ ├── index.js │ ├── index.json │ ├── index.scss │ └── index.wxml ├── prompt │ ├── index.js │ ├── index.json │ ├── index.scss │ └── index.wxml └── settings │ ├── index.js │ ├── index.json │ ├── index.scss │ └── index.wxml ├── private.[example].key ├── project.config.json ├── project.private.config.json ├── sitemap.json ├── switch-env.js └── utils ├── lodash.fix.js ├── lodash.js ├── lodash.mini.js ├── request.js ├── router.js ├── util.js └── wxs.wxs /.github/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leon-fong/ChatGPT-miniprogram/59ae79088a7c6c2662aa498404713e4073ec790f/.github/intro.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vscode 3 | .DS_Store 4 | package-lock.json 5 | pnpm-lock.yaml 6 | yarn.lock 7 | node_modules/ 8 | miniprogram_npm/ -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | npx lint-staged 6 | npx lint-staged 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Leon Fong 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | ChatGPT Miniprogram 3 |
4 | 5 |

该小程序仅作为演示,如需部署请按照以下流程操作

6 | 7 | 8 |
9 | 10 | 11 | ## 功能 12 | - 🧹 清空屏幕内容 13 | - 🎉 回复等待动画 14 | - ❌ 取消当前对话请求 15 | - 📋 丰富的 Prompt 列表 (自定义) 16 | - 🤖 AI 内容保存(选择/一键复制) 17 | 18 | 19 | ## 安装 20 | 21 | 1. 克隆项目 22 | ```bash 23 | git clone https://github.com/leon-fong/chatgpt-miniprogram.git 24 | ``` 25 | 26 | 2. 进入项目目录 27 | ```bash 28 | cd chatgpt-miniprogram 29 | ``` 30 | 31 | 3. 安装依赖 (推荐使用 `yarn`) 32 | ```bash 33 | yarn install 34 | ``` 35 | 36 | 4. 打开微信开发者工具 - 工具 - 构建npm 37 | 38 | ## 配置 39 | 40 | 1. 设置根域名 `BaseUrl` 和 `APPID` 41 | 42 | 路径: 43 | - config/development.js [开发环境] 44 | - config/production.js [生产环境] 45 | 46 | > ⚠️ `BaseUrl` 可以设置反向代理的地址,具体教程参考:[使用 Cloudflare Workers 解决 OpenAI 和 ChatGPT 的 API 无法访问的问题](https://github.com/noobnooc/noobnooc/discussions/9) 47 | 48 | 49 | 50 | 2. 设置 `OPEN_API_KEY` 51 | 52 | 路径:config/index.js 53 | 54 | 55 | 56 | 3. 设置自动化小程序代码的上传、预览 【手动上传可忽略】 57 | - 微信公众平台-开发-开发设置"后下载代码上传密钥,替换根路径下的 `private.[example].key` 58 | - 配置 IP 白名单 59 | - 上传 `yarn build:prod` 60 | 61 | ## 自定义 Prompt 列表 62 | 可以本地配置或者接口请求 63 | - 路径:`api/prompts.js` 64 | 65 | 66 | ```json 67 | { 68 | "title": "translator", 69 | "name": "翻译助手", 70 | "content": "在以后的对话中,你来扮演我的翻译助理。你的工作是把我发给你的任何内容都翻译成中文,如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题,你也不要做任何回答,只需要翻译内容即可。整个过程无需我再次强调。", 71 | "description": "输入任何语言,我将翻译为易读、易理解的中文", 72 | "checked": false 73 | } 74 | ``` 75 | 76 | 77 | ## 常见问题 78 | 请查看 [issues](https://github.com/leon-fong/chatgpt-miniprogram/issues) 79 | 80 | ## 参与贡献 81 | - Fork 该项目 82 | - 创建一条分支 `git checkout -b feat/AmazingFeature` 83 | - 提交你的更改内容 `git commit -m 'Add some AmazingFeature'` 84 | - 推送到该分支 `git push origin feat/AmazingFeature` 85 | - 提交 PR 86 | 87 | 88 | ## License 89 | MIT © [Leon Fong](https://github.com/leon-fong/chatgpt-miniprogram/blob/2ff122dfe357659134cd7589a2e4520c48fbee18/LICENSE) 90 | -------------------------------------------------------------------------------- /api/prompts.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @method addPromptList Prompt 列表 3 | * @param {*} data 4 | */ 5 | export const addPromptList = () => { 6 | // 这里可以改为接口请求 7 | const list = [{ 8 | title: 'default', 9 | name: 'ChatGPT', 10 | content: '', 11 | description: '一个 AI 语言模型,可以回答问题的人工智能程序。', 12 | checked: true 13 | }, 14 | { 15 | title: 'translator', 16 | name: '翻译助手', 17 | content: '在以后的对话中,你来扮演我的翻译助理。你的工作是把我发给你的任何内容都翻译成中文,如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题,你也不要做任何回答,只需要翻译内容即可。整个过程无需我再次强调。', 18 | description: '输入任何语言,我将翻译为易读、易理解的中文', 19 | checked: false 20 | } 21 | ] 22 | return Promise.resolve(list); 23 | }; -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | // app.js 2 | import { Home } from './utils/router'; 3 | import { reLaunch } from './utils/util'; 4 | 5 | App({ 6 | onLaunch() { 7 | // 获取全局唯一的版本更新管理器,用于管理小程序更新 8 | const updateManager = wx.getUpdateManager(); 9 | // 监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调 10 | updateManager.onUpdateReady(function () { 11 | wx.showModal({ 12 | title: '更新提示', 13 | content: '新版本已经准备好,是否重启应用?', 14 | showCancel: false, 15 | success: () => { 16 | // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 17 | updateManager.applyUpdate(); 18 | }, 19 | }); 20 | }); 21 | }, 22 | 23 | /** 24 | * @method onPageNotFound 页面不存在监听函数 25 | */ 26 | onPageNotFound() { 27 | reLaunch({ 28 | url: Home.path, 29 | }); 30 | } 31 | }); 32 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "window": { 3 | "backgroundTextStyle": "light", 4 | "navigationBarBackgroundColor": "#f4f5f5", 5 | "navigationBarTitleText": "ChatGPT Miniprogram", 6 | "navigationBarTextStyle": "black" 7 | }, 8 | "lazyCodeLoading": "requiredComponents", 9 | "resolveAlias": { 10 | "~/*": "/*" 11 | }, 12 | "usingComponents": { 13 | "custom-loading": "/components/custom-loading/index" 14 | }, 15 | "sitemapLocation": "sitemap.json", 16 | "pages": [ 17 | "pages/home/index", 18 | "pages/prompt/index", 19 | "pages/settings/index" 20 | ] 21 | } -------------------------------------------------------------------------------- /app.scss: -------------------------------------------------------------------------------- 1 | /**app.wxss**/ 2 | @import '/assets/styles/index.wxss'; 3 | -------------------------------------------------------------------------------- /assets/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leon-fong/ChatGPT-miniprogram/59ae79088a7c6c2662aa498404713e4073ec790f/assets/images/loading.gif -------------------------------------------------------------------------------- /assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leon-fong/ChatGPT-miniprogram/59ae79088a7c6c2662aa498404713e4073ec790f/assets/images/logo.png -------------------------------------------------------------------------------- /assets/images/prompt-default.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/images/prompt-translator.svg: -------------------------------------------------------------------------------- 1 | Mahalia Jackson -------------------------------------------------------------------------------- /assets/styles/iconfont.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'iconfont'; /* Project id 3718153 */ 3 | src: url('//at.alicdn.com/t/c/font_3718153_0vtxp0q7aezj.woff2?t=1667092254173') format('woff2'), 4 | url('//at.alicdn.com/t/c/font_3718153_0vtxp0q7aezj.woff?t=1667092254173') format('woff'), 5 | url('//at.alicdn.com/t/c/font_3718153_0vtxp0q7aezj.ttf?t=1667092254173') format('truetype'); 6 | } 7 | 8 | .iconfont { 9 | font-family: 'iconfont' !important; 10 | font-size: 16px; 11 | font-style: normal; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | .icon-xiaochengxu:before { 17 | content: '\e646'; 18 | } 19 | 20 | .icon-pullright:before { 21 | content: '\e720'; 22 | } 23 | 24 | .icon-close:before { 25 | content: '\e747'; 26 | } 27 | 28 | .icon-leftarrow:before { 29 | content: '\e755'; 30 | } 31 | 32 | .icon-home:before { 33 | content: '\e7a7'; 34 | } 35 | 36 | .icon-search:before { 37 | content: '\e7b4'; 38 | } 39 | 40 | .icon-leftalignment:before { 41 | content: '\e7cf'; 42 | } 43 | -------------------------------------------------------------------------------- /assets/styles/index.scss: -------------------------------------------------------------------------------- 1 | 2 | @import '/assets/styles/tdesign-variables.wxss'; 3 | 4 | page { 5 | font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 6 | 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif; 7 | font-size: 28rpx; 8 | font-weight: 300; 9 | color: #031c24; 10 | background-color: #f4f5f5; 11 | } 12 | 13 | 14 | /* scroll-view滚动条样式 */ 15 | ::-webkit-scrollbar { 16 | display: none; 17 | } 18 | 19 | .safeAreaInsetBottom { 20 | padding-bottom: calc(env(safe-area-inset-bottom)); 21 | } 22 | 23 | 24 | .btn-clear { 25 | background-color: transparent; 26 | border: none; 27 | outline: none; 28 | cursor: pointer; 29 | font-size: inherit; 30 | font-weight: inherit; 31 | color: inherit; 32 | text-align: inherit; 33 | text-decoration: inherit; 34 | margin: 0; 35 | padding: 0; 36 | } 37 | 38 | .btn-clear::after, 39 | .btn-clear::before { 40 | border: none; 41 | } 42 | -------------------------------------------------------------------------------- /assets/styles/tdesign-variables.scss: -------------------------------------------------------------------------------- 1 | page { 2 | --primary-color:#ffd001; 3 | --primary-lite-color:#ffeb67; 4 | --td-button-primary-bg-color: var(--primary-color); 5 | --td-button-primary-border-color: var(--primary-color); 6 | --td-button-primary-active-bg-color: #ffeb67; 7 | --td-button-primary-active-border-color: #ffeb67; 8 | --td-cell-left-icon-color: #333; 9 | --td-button-primary-disabled-bg: #ffeb67; 10 | --td-button-primary-disabled-border-color: #ffeb67; 11 | } -------------------------------------------------------------------------------- /components/custom-loading/README.md: -------------------------------------------------------------------------------- 1 | # 介绍 2 | 3 | 通常用于页面请求是展示的 loading,覆盖整个页面,loading 时无法点击页面中任何元素(无法覆盖原生 tabbar), 可自行调整更换组件中的样式。 4 | 5 | ### Props 6 | 7 | | 参数 | 说明 | 类型 | 默认值 | 8 | | ------- | ------------ | ------- | ------ | 9 | | loading | 状态 | boolean | false | 10 | | zIndex | z-index 层级 | number | 1000 | 11 | -------------------------------------------------------------------------------- /components/custom-loading/index.js: -------------------------------------------------------------------------------- 1 | // components/custom-loading/custom-loading.js 2 | const { systemInfo } = getApp(); 3 | 4 | Component({ 5 | /** 6 | * 组件的属性列表 7 | */ 8 | properties: { 9 | loading: { 10 | // loading状态 11 | type: Boolean, 12 | value: false, 13 | }, 14 | zIndex: { 15 | type: Number, 16 | value: 1000, 17 | }, 18 | }, 19 | 20 | /** 21 | * 组件的初始数据 22 | */ 23 | data: { 24 | systemInfo, // 设备信息 25 | }, 26 | 27 | /** 28 | * 组件的方法列表 29 | */ 30 | methods: {}, 31 | pageLifetimes: { 32 | hide() { 33 | this.setData({ 34 | loading: false, 35 | }); 36 | }, 37 | }, 38 | }); 39 | -------------------------------------------------------------------------------- /components/custom-loading/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } 5 | -------------------------------------------------------------------------------- /components/custom-loading/index.scss: -------------------------------------------------------------------------------- 1 | /* components/custom-loading/index.wxss */ 2 | .loading-wrapper { 3 | display: flex; 4 | align-items: center; 5 | justify-content: center; 6 | position: fixed; 7 | left: 0; 8 | right: 0; 9 | top: 0; 10 | bottom: 0; 11 | 12 | .mask-wrapper { 13 | display: flex; 14 | flex-direction: column; 15 | justify-content: space-around; 16 | align-items: center; 17 | width: 240rpx; 18 | height: 240rpx; 19 | padding: 32rpx; 20 | box-sizing: border-box; 21 | background-color: rgba(3, 28, 36, 1); 22 | border-radius: 16rpx; 23 | 24 | .loading-text { 25 | color: #ffffff; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /components/custom-loading/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 加载中... 17 | 18 | 19 | -------------------------------------------------------------------------------- /components/custom-loading/loading.js: -------------------------------------------------------------------------------- 1 | const defaultOptions = { 2 | selector: '#custom-loading', 3 | }; 4 | 5 | function getContext() { 6 | var pages = getCurrentPages(); 7 | return pages[pages.length - 1]; 8 | } 9 | 10 | var Loading = (options = {}) => { 11 | options = Object.assign(Object.assign({}, defaultOptions), options); 12 | 13 | return new Promise(() => { 14 | const content = getContext(); 15 | if (content) { 16 | const loading = content.selectComponent(options.selector); 17 | delete options.selector; 18 | if (loading) { 19 | loading.setData(options); 20 | } else { 21 | console.warn('未找到 custom-loading 节点,请确认 selector 及 context 是否正确'); 22 | } 23 | } else { 24 | console.warn('未找到 custom-loading 节点所在的页面栈信息'); 25 | } 26 | }); 27 | }; 28 | 29 | Loading.show = function () { 30 | return Loading({ 31 | loading: true, 32 | }); 33 | }; 34 | 35 | Loading.clear = function () { 36 | return Loading({ 37 | loading: false, 38 | }); 39 | }; 40 | 41 | export { Loading }; 42 | -------------------------------------------------------------------------------- /components/message-item/index.js: -------------------------------------------------------------------------------- 1 | // components/message-item/index.js 2 | Component({ 3 | options:{ 4 | virtualHost:true 5 | }, 6 | /** 7 | * 组件的属性列表 8 | */ 9 | properties: { 10 | role: { 11 | type: String, 12 | default: 'assistant', 13 | }, 14 | content: { 15 | type: String, 16 | default: '', 17 | }, 18 | }, 19 | 20 | /** 21 | * 组件的初始数据 22 | */ 23 | data: { 24 | 25 | }, 26 | 27 | /** 28 | * 组件的方法列表 29 | */ 30 | methods: { 31 | } 32 | }) -------------------------------------------------------------------------------- /components/message-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "t-avatar": "tdesign-miniprogram/avatar/avatar", 5 | "t-icon": "tdesign-miniprogram/icon/icon" 6 | } 7 | } -------------------------------------------------------------------------------- /components/message-item/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{content}} 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /components/message-item/index.wxss: -------------------------------------------------------------------------------- 1 | /* components/message-item/index.wxss */ 2 | .message { 3 | padding: 20rpx; 4 | font-size: 30rpx; 5 | } 6 | 7 | .message__wrap { 8 | display: flex; 9 | gap: 18rpx; 10 | } 11 | 12 | .message__avatar { 13 | width: 84rpx; 14 | height: 84rpx; 15 | flex-shrink: 0; 16 | border-radius: 50%; 17 | } 18 | 19 | .message__box { 20 | overflow-wrap: break-word; 21 | color: #333; 22 | overflow: hidden; 23 | border-radius: 20rpx; 24 | padding: 18rpx 30rpx; 25 | } 26 | 27 | .message__box--text { 28 | vertical-align: middle; 29 | } 30 | 31 | .message__avatar--assistant { 32 | background-color: skyblue; 33 | } 34 | 35 | .message__avatar--user { 36 | background-color: #fff; 37 | border-radius: 50%; 38 | width: 84rpx; 39 | height: 84rpx; 40 | display: flex; 41 | justify-content: center; 42 | align-items: center; 43 | } 44 | 45 | .message__box--assistant { 46 | background-color: #fff; 47 | } 48 | 49 | .message__box--user { 50 | background-color: var(--primary-lite-color); 51 | } 52 | 53 | .message__layout--reverse { 54 | flex-direction: row-reverse; 55 | } -------------------------------------------------------------------------------- /components/prompt-item/index.js: -------------------------------------------------------------------------------- 1 | // components/prompt-item/index.js 2 | Component({ 3 | /** 4 | * 组件的属性列表 5 | */ 6 | properties: { 7 | prompt: { 8 | type: Object, 9 | default: {} 10 | }, 11 | checked: { 12 | type: String, 13 | default: '', 14 | }, 15 | }, 16 | 17 | /** 18 | * 组件的初始数据 19 | */ 20 | data: { 21 | 22 | }, 23 | 24 | /** 25 | * 组件的方法列表 26 | */ 27 | methods: { 28 | onTap: function () { 29 | this.triggerEvent('change', { 30 | checked: this.data.prompt 31 | }, {}) 32 | } 33 | } 34 | }) -------------------------------------------------------------------------------- /components/prompt-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /components/prompt-item/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{prompt.name}} 7 | 8 | {{prompt.description}} 9 | 10 | 11 | -------------------------------------------------------------------------------- /components/prompt-item/index.wxss: -------------------------------------------------------------------------------- 1 | /* components/prompt-item/index.wxss */ 2 | 3 | .role { 4 | border-radius: 30rpx; 5 | background-image: radial-gradient(circle farthest-corner at 10% 20%, rgba(255, 209, 67, 1) 0%, rgba(255, 145, 83, 1) 90%); 6 | width: 100%; 7 | height: 520rpx; 8 | position: relative; 9 | } 10 | 11 | .role__avatar { 12 | display: flex; 13 | justify-content: flex-end; 14 | padding: 70rpx; 15 | padding-bottom: 0; 16 | } 17 | 18 | .role__avatar image { 19 | width: 200rpx; 20 | height: 200rpx; 21 | border-radius: 50%; 22 | } 23 | 24 | .role__title { 25 | padding: 22rpx 30rpx; 26 | font-size: 52rpx; 27 | font-weight: bolder; 28 | color: #fff; 29 | } 30 | 31 | .role__footer { 32 | color: #fff; 33 | border-top: 1rpx solid rgba(255, 255, 255, .4); 34 | padding: 30rpx 24rpx; 35 | border-radius: 0 0 30rpx 30rpx; 36 | display: flex; 37 | align-items: center; 38 | } 39 | 40 | .role__footer--btn { 41 | flex-shrink: 0; 42 | width: 174rpx; 43 | border-radius: 48px; 44 | background-color: #fff; 45 | color: #333; 46 | font-size: 26rpx; 47 | } 48 | 49 | .role__footer--description { 50 | flex: auto; 51 | opacity: .7; 52 | font-size: 26rpx; 53 | padding-right: 40rpx; 54 | } 55 | 56 | .btn-gold { 57 | background-image: linear-gradient(109.6deg, rgba(255, 194, 48, 1) 11.2%, rgba(255, 124, 0, 1) 100.2%); 58 | color: #fff; 59 | } 60 | 61 | .checked { 62 | opacity: .5; 63 | color: #999; 64 | } 65 | 66 | .bg-default { 67 | background-image: linear-gradient(to right, rgb(182, 244, 146), rgb(51, 139, 147)); 68 | } 69 | 70 | .bg-translator { 71 | background-image: radial-gradient(circle farthest-corner at 10% 20%, rgba(3, 235, 255, 1) 0%, rgba(152, 70, 242, 1) 100.2%); 72 | } 73 | 74 | 75 | .scale-appear { 76 | animation: enlarge-appear .8s ease-out; 77 | } 78 | 79 | @keyframes enlarge-appear { 80 | 0% { 81 | opacity: 0; 82 | transform: scale(75%) rotate(-90deg); 83 | } 84 | 85 | 100% { 86 | opacity: 1; 87 | transform: scale(100%) rotate(0deg); 88 | } 89 | } -------------------------------------------------------------------------------- /config/development.js: -------------------------------------------------------------------------------- 1 | // 开发环境 2 | const env = 'development'; 3 | // 根域名 4 | const baseUrl = ''; 5 | // AppId 6 | const appId = ''; 7 | 8 | export default { 9 | env, 10 | baseUrl, 11 | appId, 12 | }; 13 | -------------------------------------------------------------------------------- /config/env.js: -------------------------------------------------------------------------------- 1 | import development from './development.js'; // 开发环境 2 | import production from './production.js'; // 生产环境 3 | 4 | const configInfo = { 5 | development, 6 | production 7 | }; 8 | 9 | const NODE_ENV = 'development'; 10 | // const NODE_ENV = 'production'; 11 | const config = configInfo[NODE_ENV]; 12 | 13 | export default config; -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | import config from './env.js'; // 测试环境 2 | /** 3 | * 环境 4 | */ 5 | export const env = config.env; 6 | /** 7 | * 日志状态, 生产环境禁止打印日志 8 | */ 9 | export const log = env === 'production' ? false : true; 10 | /** 11 | * 版本号 12 | */ 13 | export const version = '1.0.0'; 14 | /** 15 | * OpenAI 密钥 16 | */ 17 | export const OPEN_API_KEY = ''; 18 | /** 19 | * AppId 20 | */ 21 | export const appId = config.appId; 22 | /** 23 | * 根域名 24 | */ 25 | export const baseUrl = config.baseUrl; 26 | /** 27 | * 分享图片 28 | */ 29 | export const shareImage = config.shareImage; 30 | 31 | export default { 32 | env, 33 | log, 34 | version, 35 | appId, 36 | baseUrl, 37 | OPEN_API_KEY 38 | }; 39 | -------------------------------------------------------------------------------- /config/production.js: -------------------------------------------------------------------------------- 1 | // 生产环境 2 | const env = 'production'; 3 | // 根域名 4 | const baseUrl = ''; 5 | // AppId 6 | const appId = ''; 7 | // 分享图片 8 | const shareImage = ''; 9 | 10 | export default { 11 | env, 12 | baseUrl, 13 | appId, 14 | shareImage 15 | }; 16 | -------------------------------------------------------------------------------- /miniprogram-ci.js: -------------------------------------------------------------------------------- 1 | import dayjs from 'dayjs'; 2 | import ci from 'miniprogram-ci'; 3 | import { version, appId, env } from './config/index.js'; 4 | import path from 'path'; 5 | 6 | (async () => { 7 | const project = new ci.Project({ 8 | appid: appId, // 小程序AppID 9 | type: 'miniProgram', 10 | // projectPath: './', // 打包文件路径 11 | projectPath: path.resolve('./'), // 打包文件路径 12 | privateKeyPath: `private.${appId}.key`, // 秘钥路径,根据appId放置多个 13 | ignores: ['node_modules/**/*'], 14 | }); 15 | 16 | // 在有需要的时候构建npm 17 | const warning = await ci.packNpm(project, { 18 | ignores: [], 19 | reporter: (infos) => { 20 | console.log('========================👇 构建回调信息 👇========================\n\n', infos, '\n\n'); 21 | }, 22 | }); 23 | 24 | const uploadResult = await ci.upload({ 25 | // 项目对象 26 | project, 27 | // 版本号 28 | version, 29 | // 自定义备注 30 | desc: `体验版本更新于${dayjs().format('YYYY-MM-DD HH:mm:ss')}`, 31 | // #编译设置 32 | setting: { 33 | es6: true, 34 | es7: true, 35 | minify: true, 36 | minifyJS: true, 37 | minifyWXML: true, 38 | minifyWXSS: true, 39 | autoPrefixWXSS: true, 40 | }, 41 | // 进度更新监听函数 42 | onProgressUpdate: console.log, 43 | }); 44 | 45 | const previewResult = await ci.preview({ 46 | project, 47 | desc: `预览版本更新于${dayjs().format('YYYY-MM-DD HH:mm:ss')}`, // 此备注将显示在“小程序助手”开发版列表中 48 | setting: { 49 | es6: true, 50 | es7: true, 51 | minify: true, 52 | minifyJS: true, 53 | minifyWXML: true, 54 | minifyWXSS: true, 55 | autoPrefixWXSS: true, 56 | }, 57 | // qrcodeFormat: 'image', 58 | // qrcodeOutputDest: '/path/to/qrcode/file/destination.jpg', 59 | onProgressUpdate: console.log, 60 | // pagePath: 'pages/index/index', // 预览页面 61 | // searchQuery: 'a=1&b=2', // 预览参数 [注意!]这里的`&`字符在命令行中应写成转义字符`\&` 62 | }); 63 | console.log('========================👇 ci.packNpm 👇========================\n\n', warning, '\n\n'); 64 | console.log('========================👇 ci.upload 👇========================\n\n', uploadResult, '\n\n'); 65 | console.log('========================👇 ci.preview 👇========================\n\n', previewResult, '\n\n'); 66 | console.log('========================👇 Env 👇========================\n\n', env, '\n\n'); 67 | console.log('========================👇 AppId 👇========================\n\n', appId, '\n\n'); 68 | console.log('========================👇 Version 👇========================\n\n', version, '\n\n'); 69 | })(); 70 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "miniprogram-template", 3 | "version": "1.0.0", 4 | "author": "Leon", 5 | "main": "", 6 | "scripts": { 7 | "build:dev": "cross-env NODE_ENV=development run-s switch-env miniprogram-ci", 8 | "build:prod": "cross-env NODE_ENV=production run-s switch-env miniprogram-ci", 9 | "prepare": "husky install && npx husky add .husky/pre-commit 'npx lint-staged'", 10 | "prettier": "prettier --write", 11 | "prettier-lint": "prettier --write .", 12 | "eslint": "eslint --ext .ts,.js", 13 | "eslint-lint": "eslint --ext .ts,.js .", 14 | "switch-env": "node switch-env.js", 15 | "miniprogram-ci": "node miniprogram-ci.js" 16 | }, 17 | "dependencies": { 18 | "dayjs": "^1.11.5", 19 | "tdesign-miniprogram": "^1.0.3" 20 | }, 21 | "devDependencies": { 22 | "eslint": "^8.23.0", 23 | "husky": "^8.0.1", 24 | "lint-staged": "^13.0.3", 25 | "miniprogram-ci": "^1.8.35", 26 | "prettier": "^2.7.1", 27 | "cross-env": "^7.0.3", 28 | "npm-run-all": "^4.1.5" 29 | }, 30 | "husky": { 31 | "hooks": { 32 | "pre-commit": "lint-staged" 33 | } 34 | }, 35 | "lint-staged": { 36 | "*.js": [ 37 | "npm run eslint" 38 | ], 39 | "*.{js,wxs,wxml,wxss,json,scss}": [ 40 | "npm run prettier" 41 | ] 42 | }, 43 | "type": "module" 44 | } -------------------------------------------------------------------------------- /pages/home/index.js: -------------------------------------------------------------------------------- 1 | // pages/chat.js 2 | import { 3 | baseUrl, 4 | OPEN_API_KEY 5 | } from '~/config/index'; 6 | let requestTask = null 7 | let currentContent = '' 8 | const defaultPrompt = { 9 | title: 'default', 10 | name: 'ChatGPT', 11 | content: '', 12 | description: '一个 AI 语言模型,可以回答问题的人工智能程序。\n\n 【点击顶部可以切换不同角色哦~】', 13 | checked: true 14 | } 15 | Page({ 16 | /** 17 | * 页面的初始数据 18 | */ 19 | data: { 20 | inputValue: '', 21 | fixedTop: 34, 22 | contentHeight: 188, 23 | currentItem: 'bottom', 24 | messageList: [], 25 | loading: false, 26 | thinking: false, 27 | currentPrompt: defaultPrompt, 28 | }, 29 | handleSwitchRole() { 30 | wx.navigateTo({ 31 | url: '/pages/prompt/index', 32 | }) 33 | }, 34 | handleToSettings() { 35 | wx.navigateTo({ 36 | url: '/pages/settings/index', 37 | }) 38 | }, 39 | handleClear() { 40 | if (this.data.loading || this.data.thinking) return 41 | this.setData({ 42 | messageList: [], 43 | }) 44 | }, 45 | handleValueChange(e) { 46 | this.setData({ 47 | inputValue: e.detail.value 48 | }) 49 | }, 50 | handleKeyboardHeightChange(e) { 51 | const isExpand = e.detail.height > 0 52 | const query = wx.createSelectorQuery() 53 | query.select('#footer').boundingClientRect((rect) => { 54 | const fixedTop = e.detail.height > 0 ? e.detail.height : 34 55 | if (isExpand) { 56 | this.setData({ 57 | fixedTop, 58 | currentItem: 'bottom', 59 | contentHeight: rect.height + fixedTop + 104 60 | }) 61 | } else { 62 | this.setData({ 63 | fixedTop, 64 | contentHeight: rect.height + fixedTop + 104 65 | }) 66 | } 67 | 68 | }).exec() 69 | }, 70 | async handleSendClick() { 71 | const userInput = this.data.inputValue.trim() 72 | if (userInput.trim() === '') return 73 | const messageList = this.data.messageList 74 | const timestamp = Date.now(); 75 | const newMessage = { 76 | id: timestamp, 77 | role: 'user', 78 | content: userInput 79 | } 80 | this.setData({ 81 | messageList: messageList.concat(newMessage), 82 | inputValue: '', 83 | loading: true, 84 | thinking: true 85 | }) 86 | this.requestWithMessage(userInput) 87 | }, 88 | requestWithMessage(content) { 89 | let messages = [{ 90 | role: 'user', 91 | content 92 | }] 93 | const currentPrompt = this.data.currentPrompt 94 | if (currentPrompt.content) { 95 | messages.unshift({ 96 | role: 'system', 97 | content: currentPrompt.content 98 | }) 99 | } 100 | requestTask = wx.request({ 101 | url: `${baseUrl}/v1/chat/completions`, 102 | data: { 103 | model: "gpt-3.5-turbo", 104 | messages 105 | }, 106 | method: 'POST', 107 | responseType: 'text', 108 | header: { 109 | 'content-type': 'application/json', 110 | Authorization: `Bearer ${OPEN_API_KEY}`, 111 | }, 112 | success: async (res) => { 113 | const result = res.data?.choices[0].message.content || ""; 114 | if (result) { 115 | const timestamp = Date.now(); 116 | const index = this.data.messageList.length 117 | const newMessageList = `messageList[${index}]` 118 | const contentCharArr = result.trim().split("") 119 | const content_key = `messageList[${index}].content` 120 | const finished_key = `messageList[${index}].finished` 121 | this.setData({ 122 | thinking: false, 123 | [newMessageList]: { 124 | id: timestamp, 125 | role: 'assistant', 126 | finished: false 127 | } 128 | }) 129 | currentContent = '' 130 | this.show_text(0, content_key, finished_key, contentCharArr); 131 | } else { 132 | this.setData({ 133 | thinking: false, 134 | loading: false 135 | }) 136 | wx.showToast({ 137 | icon: 'none', 138 | title: '系统繁忙,请重试', 139 | }) 140 | } 141 | }, 142 | fail: (err) => { 143 | if (!baseUrl) { 144 | console.error('尚未配置有效的 baseUrl', baseUrl) 145 | } 146 | 147 | wx.showToast({ 148 | icon: 'none', 149 | title: `服务请求错误`, 150 | }) 151 | this.setData({ 152 | thinking: false, 153 | loading: false 154 | }) 155 | } 156 | }); 157 | 158 | }, 159 | show_text(key = 0, content_key, finished_key, value) { 160 | if (key >= value.length) { 161 | this.setData({ 162 | loading: false, 163 | [finished_key]: true 164 | }) 165 | wx.vibrateShort() 166 | return; 167 | } 168 | currentContent = currentContent + value[key] 169 | this.setData({ 170 | [content_key]: currentContent, 171 | }) 172 | setTimeout(() => { 173 | this.show_text(key + 1, content_key, finished_key, value); 174 | }, 50); 175 | }, 176 | handleCancel() { 177 | if (!requestTask) return 178 | requestTask.abort() 179 | wx.showToast({ 180 | icon: 'none', 181 | title: '已取消', 182 | }) 183 | }, 184 | onShow() { 185 | wx.hideHomeButton() 186 | const prompt = wx.getStorageSync('prompt') 187 | if (!Object.keys(prompt).length) return 188 | this.setData({ 189 | currentPrompt: prompt 190 | }) 191 | this.handleClear() 192 | } 193 | }) -------------------------------------------------------------------------------- /pages/home/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "disableScroll": true, 3 | "usingComponents": { 4 | "t-button": "tdesign-miniprogram/button/button", 5 | "t-textarea": "tdesign-miniprogram/textarea/textarea", 6 | "t-input": "tdesign-miniprogram/input/input", 7 | "t-icon": "tdesign-miniprogram/icon/icon", 8 | "t-tag": "tdesign-miniprogram/tag/tag", 9 | "t-popup": "tdesign-miniprogram/popup/popup", 10 | "message-item": "../../components/message-item", 11 | "t-navbar": "tdesign-miniprogram/navbar/navbar", 12 | "t-avatar": "tdesign-miniprogram/avatar/avatar", 13 | "t-overlay": "tdesign-miniprogram/overlay/overlay" 14 | }, 15 | "navigationStyle": "custom" 16 | } -------------------------------------------------------------------------------- /pages/home/index.scss: -------------------------------------------------------------------------------- 1 | /* pages/chat.wxss */ 2 | .chat { 3 | background-color: #EDEDED; 4 | height: 100vh; 5 | font-family: "PingFang SC", system-ui, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, Helvetica, Arial, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol; 6 | } 7 | 8 | .navbar__title { 9 | position: relative; 10 | display: flex; 11 | align-items: center; 12 | } 13 | 14 | .navbar__title text { 15 | font-weight: bold; 16 | padding-left: 16rpx; 17 | padding-right: 4rpx; 18 | font-size: 34rpx; 19 | } 20 | 21 | .content__gutter--top { 22 | width: 100%; 23 | height: 20rpx; 24 | } 25 | 26 | .content__gutter--bottom { 27 | height: 1rpx; 28 | width: 100%; 29 | } 30 | 31 | .footer { 32 | position: fixed; 33 | bottom: 0; 34 | width: 100%; 35 | background-color: #F6F6F6; 36 | box-sizing: border-box; 37 | padding: 16rpx; 38 | } 39 | 40 | .footer__content { 41 | display: flex; 42 | gap: 10rpx; 43 | } 44 | 45 | .footer__content--clear { 46 | width: 80rpx; 47 | display: flex; 48 | justify-content: center; 49 | align-items: center; 50 | } 51 | 52 | .footer__safe-area { 53 | position: fixed; 54 | bottom: 0; 55 | left: 0; 56 | right: 0; 57 | height: 68rpx; 58 | background-color: #F6F6F6; 59 | } 60 | 61 | .t-input-padding-class { 62 | padding: 20rpx 22rpx !important; 63 | border-radius: 12rpx; 64 | display: flex; 65 | align-items: center; 66 | justify-content: center; 67 | } 68 | 69 | 70 | .loading { 71 | text-align: center; 72 | color: #999999; 73 | grid-template-columns: auto; 74 | } 75 | 76 | 77 | @-webkit-keyframes fade_in_out { 78 | 0% { 79 | opacity: 1; 80 | } 81 | 82 | 50% { 83 | opacity: 0.25; 84 | } 85 | 86 | 100% { 87 | opacity: 1; 88 | } 89 | } 90 | 91 | @keyframes fade_in_out { 92 | 0% { 93 | opacity: 1; 94 | } 95 | 96 | 50% { 97 | opacity: 0.25; 98 | } 99 | 100 | 100% { 101 | opacity: 1; 102 | } 103 | } 104 | 105 | .bubble { 106 | display: flex; 107 | width: 100%; 108 | height: 100%; 109 | align-items: center; 110 | justify-content: space-around; 111 | gap: 10rpx; 112 | } 113 | 114 | .bubble__circle { 115 | width: 15rpx; 116 | height: 15rpx; 117 | border-radius: 100%; 118 | background-color: #bbb; 119 | -webkit-animation: fade_in_out 1.5s infinite; 120 | animation: fade_in_out 1.5s infinite; 121 | -webkit-animation-delay: 0.25s; 122 | animation-delay: 0.25s; 123 | } 124 | 125 | .bubble__circle:first-of-type { 126 | margin-left: 20.8333333333px; 127 | -webkit-animation-delay: 0s; 128 | animation-delay: 0s; 129 | } 130 | 131 | .bubble__circle:last-of-type { 132 | margin-right: 20.8333333333px; 133 | -webkit-animation-delay: 0.5s; 134 | animation-delay: 0.5s; 135 | } 136 | 137 | ::-webkit-scrollbar { 138 | width: 0; 139 | height: 0; 140 | } -------------------------------------------------------------------------------- /pages/home/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{currentPrompt.name}} 7 | 8 | 9 | 10 | 11 | 12 | 13 | {{currentPrompt.description}} 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 |
24 |
25 | 26 |
27 | 28 | 29 | 32 | 35 | 36 | 37 | 38 | 39 |
-------------------------------------------------------------------------------- /pages/prompt/index.js: -------------------------------------------------------------------------------- 1 | // pages/prompt/prompt.js 2 | import { 3 | addPromptList 4 | } from "~/api/prompts"; 5 | import { 6 | Loading 7 | } from "~/components/custom-loading/loading"; 8 | 9 | Page({ 10 | data: { 11 | checkedPrompt: "default", 12 | promptList: [], 13 | }, 14 | 15 | handleClick(e) { 16 | const { 17 | checked 18 | } = e.detail; 19 | if (!Object.keys(e.detail).length) return; 20 | if (checked.title === this.checkedPrompt) return; 21 | wx.setStorageSync("prompt", checked); 22 | this.setData({ 23 | checkedPrompt: checked.title, 24 | }); 25 | wx.navigateBack(); 26 | }, 27 | getPromptList() { 28 | return new Promise(async (resolve) => { 29 | try { 30 | const response = await addPromptList(); 31 | resolve(response); 32 | } catch (error) { 33 | Loading.clear(); 34 | console.error( 35 | "========================👇 请求错误 👇========================\n\n", 36 | error, 37 | "\n\n" 38 | ); 39 | } 40 | }); 41 | }, 42 | async initData() { 43 | Loading.show(); 44 | const promptList = await this.getPromptList(); 45 | this.setData({ 46 | promptList, 47 | }, 48 | () => { 49 | Loading.clear(); 50 | } 51 | ); 52 | }, 53 | onLoad(options) { 54 | this.initData(); 55 | }, 56 | onShow() { 57 | const prompt = wx.getStorageSync("prompt"); 58 | if (!prompt) return; 59 | this.setData({ 60 | checkedPrompt: prompt.title, 61 | }); 62 | }, 63 | }); -------------------------------------------------------------------------------- /pages/prompt/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "prompt-item": "../../components/prompt-item" 4 | } 5 | } -------------------------------------------------------------------------------- /pages/prompt/index.scss: -------------------------------------------------------------------------------- 1 | /* pages/prompt/prompt.wxss */ 2 | .prompt{ 3 | padding: 30rpx; 4 | padding-bottom: 44rpx; 5 | display: flex; 6 | flex-direction: column; 7 | gap: 30rpx; 8 | } -------------------------------------------------------------------------------- /pages/prompt/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /pages/settings/index.js: -------------------------------------------------------------------------------- 1 | // pages/settings/settings.js 2 | Page({ 3 | handleCellGroupClick(e) { 4 | const cell = e.target.dataset.cell 5 | switch (cell) { 6 | case 'feedback': 7 | wx.showToast({ 8 | icon: 'none', 9 | title: '你点击了“我要吐槽”', 10 | }) 11 | break; 12 | case 'reward': 13 | wx.showToast({ 14 | icon: 'none', 15 | title: '你点击了“打赏咖啡”', 16 | }) 17 | break; 18 | case 'github': 19 | wx.setClipboardData({ 20 | data: 'https://github.com/leon-fong/chatgpt-miniprogram', 21 | success() { 22 | wx.showToast({ 23 | title: '已复制', 24 | }) 25 | } 26 | }) 27 | break; 28 | } 29 | }, 30 | 31 | }) -------------------------------------------------------------------------------- /pages/settings/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "disableScroll": true, 3 | "usingComponents": { 4 | "t-cell": "tdesign-miniprogram/cell/cell", 5 | "t-cell-group": "tdesign-miniprogram/cell-group/cell-group" 6 | }, 7 | "navigationBarTitleText": " " 8 | } -------------------------------------------------------------------------------- /pages/settings/index.scss: -------------------------------------------------------------------------------- 1 | .settings__header { 2 | padding: 30rpx 0; 3 | display: flex; 4 | flex-direction: column; 5 | align-items: center; 6 | } 7 | 8 | .settings__header--logo { 9 | width: 200rpx; 10 | border-radius: 50; 11 | } 12 | 13 | .settings__header--title { 14 | margin-top: 30rpx; 15 | margin-bottom: 60rpx; 16 | font-size: 34rpx; 17 | font-weight: bold; 18 | color: #333; 19 | } 20 | .settings__more { 21 | padding: 30rpx; 22 | } 23 | 24 | .settings__footer { 25 | position: fixed; 26 | bottom: 44rpx; 27 | width: 100%; 28 | padding-bottom: 40rpx; 29 | } 30 | .settings__footer text { 31 | display: inline-block; 32 | width: 100%; 33 | text-align: center; 34 | font-size: 24rpx; 35 | color: #ccc; 36 | } 37 | 38 | .dialog-image { 39 | width: 622rpx; 40 | height: 600rpx; 41 | } 42 | -------------------------------------------------------------------------------- /pages/settings/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ChatGPT Miniprogram 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | v2.1.2 17 | 联系我:hey@leonfong.me 18 | 19 | -------------------------------------------------------------------------------- /private.[example].key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | 你的小程序代码上传密钥 3 | -----END RSA PRIVATE KEY----- 4 | -------------------------------------------------------------------------------- /project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目配置文件", 3 | "packOptions": { 4 | "ignore": [], 5 | "include": [] 6 | }, 7 | "setting": { 8 | "bundle": false, 9 | "userConfirmedBundleSwitch": false, 10 | "urlCheck": true, 11 | "scopeDataCheck": false, 12 | "coverView": true, 13 | "es6": true, 14 | "postcss": true, 15 | "compileHotReLoad": false, 16 | "lazyloadPlaceholderEnable": false, 17 | "preloadBackgroundData": false, 18 | "minified": true, 19 | "autoAudits": false, 20 | "newFeature": false, 21 | "uglifyFileName": false, 22 | "uploadWithSourceMap": true, 23 | "useIsolateContext": true, 24 | "nodeModules": false, 25 | "enhance": true, 26 | "useMultiFrameRuntime": true, 27 | "useApiHook": true, 28 | "useApiHostProcess": true, 29 | "showShadowRootInWxmlPanel": true, 30 | "packNpmManually": false, 31 | "enableEngineNative": false, 32 | "packNpmRelationList": [], 33 | "minifyWXSS": true, 34 | "showES6CompileOption": false, 35 | "minifyWXML": true, 36 | "babelSetting": { 37 | "ignore": [], 38 | "disablePlugins": [], 39 | "outputPath": "" 40 | }, 41 | "useCompilerPlugins": [ 42 | "sass" 43 | ], 44 | "condition": false 45 | }, 46 | "compileType": "miniprogram", 47 | "libVersion": "2.19.4", 48 | "appid": "Your APPID", 49 | "projectname": "miniprogram-template", 50 | "condition": {}, 51 | "editorSetting": { 52 | "tabIndent": "tab", 53 | "tabSize": 2 54 | } 55 | } -------------------------------------------------------------------------------- /project.private.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", 3 | "projectname": "awesome-chatgpt-miniprogram", 4 | "setting": { 5 | "compileHotReLoad": true, 6 | "urlCheck": false 7 | }, 8 | "libVersion": "2.27.2", 9 | "condition": { 10 | "miniprogram": { 11 | "list": [ 12 | { 13 | "name": "", 14 | "pathName": "pages/home/index", 15 | "query": "", 16 | "launchMode": "default", 17 | "scene": null 18 | }, 19 | { 20 | "name": "", 21 | "pathName": "pages/prompt/index", 22 | "query": "", 23 | "launchMode": "default", 24 | "scene": null 25 | }, 26 | { 27 | "name": "", 28 | "pathName": "pages/settings/index", 29 | "query": "", 30 | "launchMode": "default", 31 | "scene": null 32 | } 33 | ] 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", 3 | "rules": [{ 4 | "action": "allow", 5 | "page": "*" 6 | }] 7 | } -------------------------------------------------------------------------------- /switch-env.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path, { dirname } from 'path'; 3 | import { fileURLToPath } from 'url'; 4 | 5 | (() => { 6 | const __filename = fileURLToPath(import.meta.url); 7 | const __dirname = dirname(__filename); 8 | const envJs = path.join(__dirname, 'config/env.js'); 9 | const switchEnvJS = path.join(__dirname, 'switch-env.js'); 10 | const data = fs.readFileSync(envJs, { 11 | encoding: 'utf8', 12 | }); 13 | const editData = data 14 | .split(';') 15 | .map((item) => { 16 | return item.replace('[NODE_ENV]', `['${process.env.NODE_ENV}']`); 17 | }) 18 | .join(';'); 19 | fs.writeFileSync(envJs, editData, { encoding: 'utf8' }); 20 | fs.unlinkSync(switchEnvJS); 21 | })(); -------------------------------------------------------------------------------- /utils/lodash.fix.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 修复 微信小程序中lodash 的运行环境 3 | */ 4 | 5 | global.Object = Object; 6 | global.Array = Array; 7 | // global.Buffer = Buffer 8 | global.DataView = DataView; 9 | global.Date = Date; 10 | global.Error = Error; 11 | global.Float32Array = Float32Array; 12 | global.Float64Array = Float64Array; 13 | global.Function = Function; 14 | global.Int8Array = Int8Array; 15 | global.Int16Array = Int16Array; 16 | global.Int32Array = Int32Array; 17 | global.Map = Map; 18 | global.Math = Math; 19 | global.Promise = Promise; 20 | global.RegExp = RegExp; 21 | global.Set = Set; 22 | global.String = String; 23 | global.Symbol = Symbol; 24 | global.TypeError = TypeError; 25 | global.Uint8Array = Uint8Array; 26 | global.Uint8ClampedArray = Uint8ClampedArray; 27 | global.Uint16Array = Uint16Array; 28 | global.Uint32Array = Uint32Array; 29 | global.WeakMap = WeakMap; 30 | global.clearTimeout = clearTimeout; 31 | global.isFinite = isFinite; 32 | global.parseInt = parseInt; 33 | global.setTimeout = setTimeout; 34 | -------------------------------------------------------------------------------- /utils/lodash.js: -------------------------------------------------------------------------------- 1 | import '~/utils/lodash.fix'; 2 | import { chunk } from '~/utils/lodash.mini'; 3 | 4 | export default { 5 | chunk, 6 | }; 7 | -------------------------------------------------------------------------------- /utils/lodash.mini.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE 4 | */ 5 | (function () { 6 | function n(n, t, r) { 7 | switch (r.length) { 8 | case 0: 9 | return n.call(t); 10 | case 1: 11 | return n.call(t, r[0]); 12 | case 2: 13 | return n.call(t, r[0], r[1]); 14 | case 3: 15 | return n.call(t, r[0], r[1], r[2]); 16 | } 17 | return n.apply(t, r); 18 | } 19 | function t(n, t, r, e) { 20 | for (var u = -1, i = null == n ? 0 : n.length; ++u < i; ) { 21 | var o = n[u]; 22 | t(e, o, r(o), n); 23 | } 24 | return e; 25 | } 26 | function r(n, t) { 27 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e && false !== t(n[r], r, n); ); 28 | return n; 29 | } 30 | function e(n, t) { 31 | for (var r = null == n ? 0 : n.length; r-- && false !== t(n[r], r, n); ); 32 | return n; 33 | } 34 | function u(n, t) { 35 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e; ) if (!t(n[r], r, n)) return false; 36 | return true; 37 | } 38 | function i(n, t) { 39 | for (var r = -1, e = null == n ? 0 : n.length, u = 0, i = []; ++r < e; ) { 40 | var o = n[r]; 41 | t(o, r, n) && (i[u++] = o); 42 | } 43 | return i; 44 | } 45 | function o(n, t) { 46 | return !(null == n || !n.length) && -1 < v(n, t, 0); 47 | } 48 | function f(n, t, r) { 49 | for (var e = -1, u = null == n ? 0 : n.length; ++e < u; ) if (r(t, n[e])) return true; 50 | return false; 51 | } 52 | function c(n, t) { 53 | for (var r = -1, e = null == n ? 0 : n.length, u = Array(e); ++r < e; ) u[r] = t(n[r], r, n); 54 | return u; 55 | } 56 | function a(n, t) { 57 | for (var r = -1, e = t.length, u = n.length; ++r < e; ) n[u + r] = t[r]; 58 | return n; 59 | } 60 | function l(n, t, r, e) { 61 | var u = -1, 62 | i = null == n ? 0 : n.length; 63 | for (e && i && (r = n[++u]); ++u < i; ) r = t(r, n[u], u, n); 64 | return r; 65 | } 66 | function s(n, t, r, e) { 67 | var u = null == n ? 0 : n.length; 68 | for (e && u && (r = n[--u]); u--; ) r = t(r, n[u], u, n); 69 | return r; 70 | } 71 | function h(n, t) { 72 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e; ) if (t(n[r], r, n)) return true; 73 | return false; 74 | } 75 | function p(n, t, r) { 76 | var e; 77 | return ( 78 | r(n, function (n, r, u) { 79 | if (t(n, r, u)) return (e = r), false; 80 | }), 81 | e 82 | ); 83 | } 84 | function _(n, t, r, e) { 85 | var u = n.length; 86 | for (r += e ? 1 : -1; e ? r-- : ++r < u; ) if (t(n[r], r, n)) return r; 87 | return -1; 88 | } 89 | function v(n, t, r) { 90 | if (t === t) 91 | n: { 92 | --r; 93 | for (var e = n.length; ++r < e; ) 94 | if (n[r] === t) { 95 | n = r; 96 | break n; 97 | } 98 | n = -1; 99 | } 100 | else n = _(n, d, r); 101 | return n; 102 | } 103 | function g(n, t, r, e) { 104 | --r; 105 | for (var u = n.length; ++r < u; ) if (e(n[r], t)) return r; 106 | return -1; 107 | } 108 | function d(n) { 109 | return n !== n; 110 | } 111 | function y(n, t) { 112 | var r = null == n ? 0 : n.length; 113 | return r ? m(n, t) / r : F; 114 | } 115 | function b(n) { 116 | return function (t) { 117 | return null == t ? T : t[n]; 118 | }; 119 | } 120 | function x(n) { 121 | return function (t) { 122 | return null == n ? T : n[t]; 123 | }; 124 | } 125 | function j(n, t, r, e, u) { 126 | return ( 127 | u(n, function (n, u, i) { 128 | r = e ? ((e = false), n) : t(r, n, u, i); 129 | }), 130 | r 131 | ); 132 | } 133 | function w(n, t) { 134 | var r = n.length; 135 | for (n.sort(t); r--; ) n[r] = n[r].c; 136 | return n; 137 | } 138 | function m(n, t) { 139 | for (var r, e = -1, u = n.length; ++e < u; ) { 140 | var i = t(n[e]); 141 | i !== T && (r = r === T ? i : r + i); 142 | } 143 | return r; 144 | } 145 | function A(n, t) { 146 | for (var r = -1, e = Array(n); ++r < n; ) e[r] = t(r); 147 | return e; 148 | } 149 | function E(n, t) { 150 | return c(t, function (t) { 151 | return [t, n[t]]; 152 | }); 153 | } 154 | function k(n) { 155 | return function (t) { 156 | return n(t); 157 | }; 158 | } 159 | function S(n, t) { 160 | return c(t, function (t) { 161 | return n[t]; 162 | }); 163 | } 164 | function O(n, t) { 165 | return n.has(t); 166 | } 167 | function I(n, t) { 168 | for (var r = -1, e = n.length; ++r < e && -1 < v(t, n[r], 0); ); 169 | return r; 170 | } 171 | function R(n, t) { 172 | for (var r = n.length; r-- && -1 < v(t, n[r], 0); ); 173 | return r; 174 | } 175 | function z(n) { 176 | return '\\' + Un[n]; 177 | } 178 | function W(n) { 179 | var t = -1, 180 | r = Array(n.size); 181 | return ( 182 | n.forEach(function (n, e) { 183 | r[++t] = [e, n]; 184 | }), 185 | r 186 | ); 187 | } 188 | function B(n, t) { 189 | return function (r) { 190 | return n(t(r)); 191 | }; 192 | } 193 | function L(n, t) { 194 | for (var r = -1, e = n.length, u = 0, i = []; ++r < e; ) { 195 | var o = n[r]; 196 | (o !== t && '__lodash_placeholder__' !== o) || ((n[r] = '__lodash_placeholder__'), (i[u++] = r)); 197 | } 198 | return i; 199 | } 200 | function U(n) { 201 | var t = -1, 202 | r = Array(n.size); 203 | return ( 204 | n.forEach(function (n) { 205 | r[++t] = n; 206 | }), 207 | r 208 | ); 209 | } 210 | function C(n) { 211 | var t = -1, 212 | r = Array(n.size); 213 | return ( 214 | n.forEach(function (n) { 215 | r[++t] = [n, n]; 216 | }), 217 | r 218 | ); 219 | } 220 | function D(n) { 221 | if (Rn.test(n)) { 222 | for (var t = (On.lastIndex = 0); On.test(n); ) ++t; 223 | n = t; 224 | } else n = Qn(n); 225 | return n; 226 | } 227 | function M(n) { 228 | return Rn.test(n) ? n.match(On) || [] : n.split(''); 229 | } 230 | var T, 231 | $ = 1 / 0, 232 | F = NaN, 233 | N = [ 234 | ['ary', 128], 235 | ['bind', 1], 236 | ['bindKey', 2], 237 | ['curry', 8], 238 | ['curryRight', 16], 239 | ['flip', 512], 240 | ['partial', 32], 241 | ['partialRight', 64], 242 | ['rearg', 256], 243 | ], 244 | P = /\b__p\+='';/g, 245 | Z = /\b(__p\+=)''\+/g, 246 | q = /(__e\(.*?\)|\b__t\))\+'';/g, 247 | V = /&(?:amp|lt|gt|quot|#39);/g, 248 | K = /[&<>"']/g, 249 | G = RegExp(V.source), 250 | H = RegExp(K.source), 251 | J = /<%-([\s\S]+?)%>/g, 252 | Y = /<%([\s\S]+?)%>/g, 253 | Q = /<%=([\s\S]+?)%>/g, 254 | X = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 255 | nn = /^\w*$/, 256 | tn = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, 257 | rn = /[\\^$.*+?()[\]{}|]/g, 258 | en = RegExp(rn.source), 259 | un = /^\s+|\s+$/g, 260 | on = /^\s+/, 261 | fn = /\s+$/, 262 | cn = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, 263 | an = /\{\n\/\* \[wrapped with (.+)\] \*/, 264 | ln = /,? & /, 265 | sn = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, 266 | hn = /\\(\\)?/g, 267 | pn = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, 268 | _n = /\w*$/, 269 | vn = /^[-+]0x[0-9a-f]+$/i, 270 | gn = /^0b[01]+$/i, 271 | dn = /^\[object .+?Constructor\]$/, 272 | yn = /^0o[0-7]+$/i, 273 | bn = /^(?:0|[1-9]\d*)$/, 274 | xn = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, 275 | jn = /($^)/, 276 | wn = /['\n\r\u2028\u2029\\]/g, 277 | mn = 278 | '[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*', 279 | An = '(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])' + mn, 280 | En = 281 | '(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])', 282 | kn = RegExp("['\u2019]", 'g'), 283 | Sn = RegExp('[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]', 'g'), 284 | On = RegExp('\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|' + En + mn, 'g'), 285 | In = RegExp( 286 | [ 287 | "[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+", 288 | An, 289 | ].join('|'), 290 | 'g' 291 | ), 292 | Rn = RegExp('[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]'), 293 | zn = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, 294 | Wn = 295 | 'Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout'.split( 296 | ' ' 297 | ), 298 | Bn = {}; 299 | (Bn['[object Float32Array]'] = 300 | Bn['[object Float64Array]'] = 301 | Bn['[object Int8Array]'] = 302 | Bn['[object Int16Array]'] = 303 | Bn['[object Int32Array]'] = 304 | Bn['[object Uint8Array]'] = 305 | Bn['[object Uint8ClampedArray]'] = 306 | Bn['[object Uint16Array]'] = 307 | Bn['[object Uint32Array]'] = 308 | true), 309 | (Bn['[object Arguments]'] = 310 | Bn['[object Array]'] = 311 | Bn['[object ArrayBuffer]'] = 312 | Bn['[object Boolean]'] = 313 | Bn['[object DataView]'] = 314 | Bn['[object Date]'] = 315 | Bn['[object Error]'] = 316 | Bn['[object Function]'] = 317 | Bn['[object Map]'] = 318 | Bn['[object Number]'] = 319 | Bn['[object Object]'] = 320 | Bn['[object RegExp]'] = 321 | Bn['[object Set]'] = 322 | Bn['[object String]'] = 323 | Bn['[object WeakMap]'] = 324 | false); 325 | var Ln = {}; 326 | (Ln['[object Arguments]'] = 327 | Ln['[object Array]'] = 328 | Ln['[object ArrayBuffer]'] = 329 | Ln['[object DataView]'] = 330 | Ln['[object Boolean]'] = 331 | Ln['[object Date]'] = 332 | Ln['[object Float32Array]'] = 333 | Ln['[object Float64Array]'] = 334 | Ln['[object Int8Array]'] = 335 | Ln['[object Int16Array]'] = 336 | Ln['[object Int32Array]'] = 337 | Ln['[object Map]'] = 338 | Ln['[object Number]'] = 339 | Ln['[object Object]'] = 340 | Ln['[object RegExp]'] = 341 | Ln['[object Set]'] = 342 | Ln['[object String]'] = 343 | Ln['[object Symbol]'] = 344 | Ln['[object Uint8Array]'] = 345 | Ln['[object Uint8ClampedArray]'] = 346 | Ln['[object Uint16Array]'] = 347 | Ln['[object Uint32Array]'] = 348 | true), 349 | (Ln['[object Error]'] = Ln['[object Function]'] = Ln['[object WeakMap]'] = false); 350 | var Un = { '\\': '\\', "'": "'", '\n': 'n', '\r': 'r', '\u2028': 'u2028', '\u2029': 'u2029' }, 351 | Cn = parseFloat, 352 | Dn = parseInt, 353 | Mn = typeof global == 'object' && global && global.Object === Object && global, 354 | Tn = typeof self == 'object' && self && self.Object === Object && self, 355 | $n = Mn || Tn || Function('return this')(), 356 | Fn = typeof exports == 'object' && exports && !exports.nodeType && exports, 357 | Nn = Fn && typeof module == 'object' && module && !module.nodeType && module, 358 | Pn = Nn && Nn.exports === Fn, 359 | Zn = Pn && Mn.process, 360 | qn = (function () { 361 | try { 362 | var n = Nn && Nn.f && Nn.f('util').types; 363 | return n ? n : Zn && Zn.binding && Zn.binding('util'); 364 | } catch (n) {} 365 | })(), 366 | Vn = qn && qn.isArrayBuffer, 367 | Kn = qn && qn.isDate, 368 | Gn = qn && qn.isMap, 369 | Hn = qn && qn.isRegExp, 370 | Jn = qn && qn.isSet, 371 | Yn = qn && qn.isTypedArray, 372 | Qn = b('length'), 373 | Xn = x({ 374 | '\xc0': 'A', 375 | '\xc1': 'A', 376 | '\xc2': 'A', 377 | '\xc3': 'A', 378 | '\xc4': 'A', 379 | '\xc5': 'A', 380 | '\xe0': 'a', 381 | '\xe1': 'a', 382 | '\xe2': 'a', 383 | '\xe3': 'a', 384 | '\xe4': 'a', 385 | '\xe5': 'a', 386 | '\xc7': 'C', 387 | '\xe7': 'c', 388 | '\xd0': 'D', 389 | '\xf0': 'd', 390 | '\xc8': 'E', 391 | '\xc9': 'E', 392 | '\xca': 'E', 393 | '\xcb': 'E', 394 | '\xe8': 'e', 395 | '\xe9': 'e', 396 | '\xea': 'e', 397 | '\xeb': 'e', 398 | '\xcc': 'I', 399 | '\xcd': 'I', 400 | '\xce': 'I', 401 | '\xcf': 'I', 402 | '\xec': 'i', 403 | '\xed': 'i', 404 | '\xee': 'i', 405 | '\xef': 'i', 406 | '\xd1': 'N', 407 | '\xf1': 'n', 408 | '\xd2': 'O', 409 | '\xd3': 'O', 410 | '\xd4': 'O', 411 | '\xd5': 'O', 412 | '\xd6': 'O', 413 | '\xd8': 'O', 414 | '\xf2': 'o', 415 | '\xf3': 'o', 416 | '\xf4': 'o', 417 | '\xf5': 'o', 418 | '\xf6': 'o', 419 | '\xf8': 'o', 420 | '\xd9': 'U', 421 | '\xda': 'U', 422 | '\xdb': 'U', 423 | '\xdc': 'U', 424 | '\xf9': 'u', 425 | '\xfa': 'u', 426 | '\xfb': 'u', 427 | '\xfc': 'u', 428 | '\xdd': 'Y', 429 | '\xfd': 'y', 430 | '\xff': 'y', 431 | '\xc6': 'Ae', 432 | '\xe6': 'ae', 433 | '\xde': 'Th', 434 | '\xfe': 'th', 435 | '\xdf': 'ss', 436 | '\u0100': 'A', 437 | '\u0102': 'A', 438 | '\u0104': 'A', 439 | '\u0101': 'a', 440 | '\u0103': 'a', 441 | '\u0105': 'a', 442 | '\u0106': 'C', 443 | '\u0108': 'C', 444 | '\u010a': 'C', 445 | '\u010c': 'C', 446 | '\u0107': 'c', 447 | '\u0109': 'c', 448 | '\u010b': 'c', 449 | '\u010d': 'c', 450 | '\u010e': 'D', 451 | '\u0110': 'D', 452 | '\u010f': 'd', 453 | '\u0111': 'd', 454 | '\u0112': 'E', 455 | '\u0114': 'E', 456 | '\u0116': 'E', 457 | '\u0118': 'E', 458 | '\u011a': 'E', 459 | '\u0113': 'e', 460 | '\u0115': 'e', 461 | '\u0117': 'e', 462 | '\u0119': 'e', 463 | '\u011b': 'e', 464 | '\u011c': 'G', 465 | '\u011e': 'G', 466 | '\u0120': 'G', 467 | '\u0122': 'G', 468 | '\u011d': 'g', 469 | '\u011f': 'g', 470 | '\u0121': 'g', 471 | '\u0123': 'g', 472 | '\u0124': 'H', 473 | '\u0126': 'H', 474 | '\u0125': 'h', 475 | '\u0127': 'h', 476 | '\u0128': 'I', 477 | '\u012a': 'I', 478 | '\u012c': 'I', 479 | '\u012e': 'I', 480 | '\u0130': 'I', 481 | '\u0129': 'i', 482 | '\u012b': 'i', 483 | '\u012d': 'i', 484 | '\u012f': 'i', 485 | '\u0131': 'i', 486 | '\u0134': 'J', 487 | '\u0135': 'j', 488 | '\u0136': 'K', 489 | '\u0137': 'k', 490 | '\u0138': 'k', 491 | '\u0139': 'L', 492 | '\u013b': 'L', 493 | '\u013d': 'L', 494 | '\u013f': 'L', 495 | '\u0141': 'L', 496 | '\u013a': 'l', 497 | '\u013c': 'l', 498 | '\u013e': 'l', 499 | '\u0140': 'l', 500 | '\u0142': 'l', 501 | '\u0143': 'N', 502 | '\u0145': 'N', 503 | '\u0147': 'N', 504 | '\u014a': 'N', 505 | '\u0144': 'n', 506 | '\u0146': 'n', 507 | '\u0148': 'n', 508 | '\u014b': 'n', 509 | '\u014c': 'O', 510 | '\u014e': 'O', 511 | '\u0150': 'O', 512 | '\u014d': 'o', 513 | '\u014f': 'o', 514 | '\u0151': 'o', 515 | '\u0154': 'R', 516 | '\u0156': 'R', 517 | '\u0158': 'R', 518 | '\u0155': 'r', 519 | '\u0157': 'r', 520 | '\u0159': 'r', 521 | '\u015a': 'S', 522 | '\u015c': 'S', 523 | '\u015e': 'S', 524 | '\u0160': 'S', 525 | '\u015b': 's', 526 | '\u015d': 's', 527 | '\u015f': 's', 528 | '\u0161': 's', 529 | '\u0162': 'T', 530 | '\u0164': 'T', 531 | '\u0166': 'T', 532 | '\u0163': 't', 533 | '\u0165': 't', 534 | '\u0167': 't', 535 | '\u0168': 'U', 536 | '\u016a': 'U', 537 | '\u016c': 'U', 538 | '\u016e': 'U', 539 | '\u0170': 'U', 540 | '\u0172': 'U', 541 | '\u0169': 'u', 542 | '\u016b': 'u', 543 | '\u016d': 'u', 544 | '\u016f': 'u', 545 | '\u0171': 'u', 546 | '\u0173': 'u', 547 | '\u0174': 'W', 548 | '\u0175': 'w', 549 | '\u0176': 'Y', 550 | '\u0177': 'y', 551 | '\u0178': 'Y', 552 | '\u0179': 'Z', 553 | '\u017b': 'Z', 554 | '\u017d': 'Z', 555 | '\u017a': 'z', 556 | '\u017c': 'z', 557 | '\u017e': 'z', 558 | '\u0132': 'IJ', 559 | '\u0133': 'ij', 560 | '\u0152': 'Oe', 561 | '\u0153': 'oe', 562 | '\u0149': "'n", 563 | '\u017f': 's', 564 | }), 565 | nt = x({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }), 566 | tt = x({ '&': '&', '<': '<', '>': '>', '"': '"', ''': "'" }), 567 | rt = (function x(mn) { 568 | function An(n) { 569 | if (yu(n) && !ff(n) && !(n instanceof Un)) { 570 | if (n instanceof On) return n; 571 | if (oi.call(n, '__wrapped__')) return Fe(n); 572 | } 573 | return new On(n); 574 | } 575 | function En() {} 576 | function On(n, t) { 577 | (this.__wrapped__ = n), 578 | (this.__actions__ = []), 579 | (this.__chain__ = !!t), 580 | (this.__index__ = 0), 581 | (this.__values__ = T); 582 | } 583 | function Un(n) { 584 | (this.__wrapped__ = n), 585 | (this.__actions__ = []), 586 | (this.__dir__ = 1), 587 | (this.__filtered__ = false), 588 | (this.__iteratees__ = []), 589 | (this.__takeCount__ = 4294967295), 590 | (this.__views__ = []); 591 | } 592 | function Mn(n) { 593 | var t = -1, 594 | r = null == n ? 0 : n.length; 595 | for (this.clear(); ++t < r; ) { 596 | var e = n[t]; 597 | this.set(e[0], e[1]); 598 | } 599 | } 600 | function Tn(n) { 601 | var t = -1, 602 | r = null == n ? 0 : n.length; 603 | for (this.clear(); ++t < r; ) { 604 | var e = n[t]; 605 | this.set(e[0], e[1]); 606 | } 607 | } 608 | function Fn(n) { 609 | var t = -1, 610 | r = null == n ? 0 : n.length; 611 | for (this.clear(); ++t < r; ) { 612 | var e = n[t]; 613 | this.set(e[0], e[1]); 614 | } 615 | } 616 | function Nn(n) { 617 | var t = -1, 618 | r = null == n ? 0 : n.length; 619 | for (this.__data__ = new Fn(); ++t < r; ) this.add(n[t]); 620 | } 621 | function Zn(n) { 622 | this.size = (this.__data__ = new Tn(n)).size; 623 | } 624 | function qn(n, t) { 625 | var r, 626 | e = ff(n), 627 | u = !e && of(n), 628 | i = !e && !u && af(n), 629 | o = !e && !u && !i && _f(n), 630 | u = (e = e || u || i || o) ? A(n.length, ni) : [], 631 | f = u.length; 632 | for (r in n) 633 | (!t && !oi.call(n, r)) || 634 | (e && 635 | ('length' == r || 636 | (i && ('offset' == r || 'parent' == r)) || 637 | (o && ('buffer' == r || 'byteLength' == r || 'byteOffset' == r)) || 638 | Se(r, f))) || 639 | u.push(r); 640 | return u; 641 | } 642 | function Qn(n) { 643 | var t = n.length; 644 | return t ? n[ir(0, t - 1)] : T; 645 | } 646 | function et(n, t) { 647 | return De(Ur(n), pt(t, 0, n.length)); 648 | } 649 | function ut(n) { 650 | return De(Ur(n)); 651 | } 652 | function it(n, t, r) { 653 | ((r === T || lu(n[t], r)) && (r !== T || t in n)) || st(n, t, r); 654 | } 655 | function ot(n, t, r) { 656 | var e = n[t]; 657 | (oi.call(n, t) && lu(e, r) && (r !== T || t in n)) || st(n, t, r); 658 | } 659 | function ft(n, t) { 660 | for (var r = n.length; r--; ) if (lu(n[r][0], t)) return r; 661 | return -1; 662 | } 663 | function ct(n, t, r, e) { 664 | return ( 665 | uo(n, function (n, u, i) { 666 | t(e, n, r(n), i); 667 | }), 668 | e 669 | ); 670 | } 671 | function at(n, t) { 672 | return n && Cr(t, Wu(t), n); 673 | } 674 | function lt(n, t) { 675 | return n && Cr(t, Bu(t), n); 676 | } 677 | function st(n, t, r) { 678 | '__proto__' == t && Ai 679 | ? Ai(n, t, { configurable: true, enumerable: true, value: r, writable: true }) 680 | : (n[t] = r); 681 | } 682 | function ht(n, t) { 683 | for (var r = -1, e = t.length, u = Ku(e), i = null == n; ++r < e; ) u[r] = i ? T : Ru(n, t[r]); 684 | return u; 685 | } 686 | function pt(n, t, r) { 687 | return n === n && (r !== T && (n = n <= r ? n : r), t !== T && (n = n >= t ? n : t)), n; 688 | } 689 | function _t(n, t, e, u, i, o) { 690 | var f, 691 | c = 1 & t, 692 | a = 2 & t, 693 | l = 4 & t; 694 | if ((e && (f = i ? e(n, u, i, o) : e(n)), f !== T)) return f; 695 | if (!du(n)) return n; 696 | if ((u = ff(n))) { 697 | if (((f = me(n)), !c)) return Ur(n, f); 698 | } else { 699 | var s = vo(n), 700 | h = '[object Function]' == s || '[object GeneratorFunction]' == s; 701 | if (af(n)) return Ir(n, c); 702 | if ('[object Object]' == s || '[object Arguments]' == s || (h && !i)) { 703 | if (((f = a || h ? {} : Ae(n)), !c)) return a ? Mr(n, lt(f, n)) : Dr(n, at(f, n)); 704 | } else { 705 | if (!Ln[s]) return i ? n : {}; 706 | f = Ee(n, s, c); 707 | } 708 | } 709 | if ((o || (o = new Zn()), (i = o.get(n)))) return i; 710 | o.set(n, f), 711 | pf(n) 712 | ? n.forEach(function (r) { 713 | f.add(_t(r, t, e, r, n, o)); 714 | }) 715 | : sf(n) && 716 | n.forEach(function (r, u) { 717 | f.set(u, _t(r, t, e, u, n, o)); 718 | }); 719 | var a = l ? (a ? ve : _e) : a ? Bu : Wu, 720 | p = u ? T : a(n); 721 | return ( 722 | r(p || n, function (r, u) { 723 | p && ((u = r), (r = n[u])), ot(f, u, _t(r, t, e, u, n, o)); 724 | }), 725 | f 726 | ); 727 | } 728 | function vt(n) { 729 | var t = Wu(n); 730 | return function (r) { 731 | return gt(r, n, t); 732 | }; 733 | } 734 | function gt(n, t, r) { 735 | var e = r.length; 736 | if (null == n) return !e; 737 | for (n = Qu(n); e--; ) { 738 | var u = r[e], 739 | i = t[u], 740 | o = n[u]; 741 | if ((o === T && !(u in n)) || !i(o)) return false; 742 | } 743 | return true; 744 | } 745 | function dt(n, t, r) { 746 | if (typeof n != 'function') throw new ti('Expected a function'); 747 | return bo(function () { 748 | n.apply(T, r); 749 | }, t); 750 | } 751 | function yt(n, t, r, e) { 752 | var u = -1, 753 | i = o, 754 | a = true, 755 | l = n.length, 756 | s = [], 757 | h = t.length; 758 | if (!l) return s; 759 | r && (t = c(t, k(r))), e ? ((i = f), (a = false)) : 200 <= t.length && ((i = O), (a = false), (t = new Nn(t))); 760 | n: for (; ++u < l; ) { 761 | var p = n[u], 762 | _ = null == r ? p : r(p), 763 | p = e || 0 !== p ? p : 0; 764 | if (a && _ === _) { 765 | for (var v = h; v--; ) if (t[v] === _) continue n; 766 | s.push(p); 767 | } else i(t, _, e) || s.push(p); 768 | } 769 | return s; 770 | } 771 | function bt(n, t) { 772 | var r = true; 773 | return ( 774 | uo(n, function (n, e, u) { 775 | return (r = !!t(n, e, u)); 776 | }), 777 | r 778 | ); 779 | } 780 | function xt(n, t, r) { 781 | for (var e = -1, u = n.length; ++e < u; ) { 782 | var i = n[e], 783 | o = t(i); 784 | if (null != o && (f === T ? o === o && !wu(o) : r(o, f))) 785 | var f = o, 786 | c = i; 787 | } 788 | return c; 789 | } 790 | function jt(n, t) { 791 | var r = []; 792 | return ( 793 | uo(n, function (n, e, u) { 794 | t(n, e, u) && r.push(n); 795 | }), 796 | r 797 | ); 798 | } 799 | function wt(n, t, r, e, u) { 800 | var i = -1, 801 | o = n.length; 802 | for (r || (r = ke), u || (u = []); ++i < o; ) { 803 | var f = n[i]; 804 | 0 < t && r(f) ? (1 < t ? wt(f, t - 1, r, e, u) : a(u, f)) : e || (u[u.length] = f); 805 | } 806 | return u; 807 | } 808 | function mt(n, t) { 809 | return n && oo(n, t, Wu); 810 | } 811 | function At(n, t) { 812 | return n && fo(n, t, Wu); 813 | } 814 | function Et(n, t) { 815 | return i(t, function (t) { 816 | return _u(n[t]); 817 | }); 818 | } 819 | function kt(n, t) { 820 | t = Sr(t, n); 821 | for (var r = 0, e = t.length; null != n && r < e; ) n = n[Me(t[r++])]; 822 | return r && r == e ? n : T; 823 | } 824 | function St(n, t, r) { 825 | return (t = t(n)), ff(n) ? t : a(t, r(n)); 826 | } 827 | function Ot(n) { 828 | if (null == n) n = n === T ? '[object Undefined]' : '[object Null]'; 829 | else if (mi && mi in Qu(n)) { 830 | var t = oi.call(n, mi), 831 | r = n[mi]; 832 | try { 833 | n[mi] = T; 834 | var e = true; 835 | } catch (n) {} 836 | var u = ai.call(n); 837 | e && (t ? (n[mi] = r) : delete n[mi]), (n = u); 838 | } else n = ai.call(n); 839 | return n; 840 | } 841 | function It(n, t) { 842 | return n > t; 843 | } 844 | function Rt(n, t) { 845 | return null != n && oi.call(n, t); 846 | } 847 | function zt(n, t) { 848 | return null != n && t in Qu(n); 849 | } 850 | function Wt(n, t, r) { 851 | for (var e = r ? f : o, u = n[0].length, i = n.length, a = i, l = Ku(i), s = 1 / 0, h = []; a--; ) { 852 | var p = n[a]; 853 | a && t && (p = c(p, k(t))), 854 | (s = Ci(p.length, s)), 855 | (l[a] = !r && (t || (120 <= u && 120 <= p.length)) ? new Nn(a && p) : T); 856 | } 857 | var p = n[0], 858 | _ = -1, 859 | v = l[0]; 860 | n: for (; ++_ < u && h.length < s; ) { 861 | var g = p[_], 862 | d = t ? t(g) : g, 863 | g = r || 0 !== g ? g : 0; 864 | if (v ? !O(v, d) : !e(h, d, r)) { 865 | for (a = i; --a; ) { 866 | var y = l[a]; 867 | if (y ? !O(y, d) : !e(n[a], d, r)) continue n; 868 | } 869 | v && v.push(d), h.push(g); 870 | } 871 | } 872 | return h; 873 | } 874 | function Bt(n, t, r) { 875 | var e = {}; 876 | return ( 877 | mt(n, function (n, u, i) { 878 | t(e, r(n), u, i); 879 | }), 880 | e 881 | ); 882 | } 883 | function Lt(t, r, e) { 884 | return ( 885 | (r = Sr(r, t)), 886 | (t = 2 > r.length ? t : kt(t, hr(r, 0, -1))), 887 | (r = null == t ? t : t[Me(Ve(r))]), 888 | null == r ? T : n(r, t, e) 889 | ); 890 | } 891 | function Ut(n) { 892 | return yu(n) && '[object Arguments]' == Ot(n); 893 | } 894 | function Ct(n) { 895 | return yu(n) && '[object ArrayBuffer]' == Ot(n); 896 | } 897 | function Dt(n) { 898 | return yu(n) && '[object Date]' == Ot(n); 899 | } 900 | function Mt(n, t, r, e, u) { 901 | if (n === t) t = true; 902 | else if (null == n || null == t || (!yu(n) && !yu(t))) t = n !== n && t !== t; 903 | else 904 | n: { 905 | var i = ff(n), 906 | o = ff(t), 907 | f = i ? '[object Array]' : vo(n), 908 | c = o ? '[object Array]' : vo(t), 909 | f = '[object Arguments]' == f ? '[object Object]' : f, 910 | c = '[object Arguments]' == c ? '[object Object]' : c, 911 | a = '[object Object]' == f, 912 | o = '[object Object]' == c; 913 | if ((c = f == c) && af(n)) { 914 | if (!af(t)) { 915 | t = false; 916 | break n; 917 | } 918 | (i = true), (a = false); 919 | } 920 | if (c && !a) u || (u = new Zn()), (t = i || _f(n) ? se(n, t, r, e, Mt, u) : he(n, t, f, r, e, Mt, u)); 921 | else { 922 | if (!(1 & r) && ((i = a && oi.call(n, '__wrapped__')), (f = o && oi.call(t, '__wrapped__')), i || f)) { 923 | (n = i ? n.value() : n), (t = f ? t.value() : t), u || (u = new Zn()), (t = Mt(n, t, r, e, u)); 924 | break n; 925 | } 926 | if (c) 927 | t: if ( 928 | (u || (u = new Zn()), (i = 1 & r), (f = _e(n)), (o = f.length), (c = _e(t).length), o == c || i) 929 | ) { 930 | for (a = o; a--; ) { 931 | var l = f[a]; 932 | if (!(i ? l in t : oi.call(t, l))) { 933 | t = false; 934 | break t; 935 | } 936 | } 937 | if ((c = u.get(n)) && u.get(t)) t = c == t; 938 | else { 939 | (c = true), u.set(n, t), u.set(t, n); 940 | for (var s = i; ++a < o; ) { 941 | var l = f[a], 942 | h = n[l], 943 | p = t[l]; 944 | if (e) var _ = i ? e(p, h, l, t, n, u) : e(h, p, l, n, t, u); 945 | if (_ === T ? h !== p && !Mt(h, p, r, e, u) : !_) { 946 | c = false; 947 | break; 948 | } 949 | s || (s = 'constructor' == l); 950 | } 951 | c && 952 | !s && 953 | ((r = n.constructor), 954 | (e = t.constructor), 955 | r != e && 956 | 'constructor' in n && 957 | 'constructor' in t && 958 | !(typeof r == 'function' && r instanceof r && typeof e == 'function' && e instanceof e) && 959 | (c = false)), 960 | u.delete(n), 961 | u.delete(t), 962 | (t = c); 963 | } 964 | } else t = false; 965 | else t = false; 966 | } 967 | } 968 | return t; 969 | } 970 | function Tt(n) { 971 | return yu(n) && '[object Map]' == vo(n); 972 | } 973 | function $t(n, t, r, e) { 974 | var u = r.length, 975 | i = u, 976 | o = !e; 977 | if (null == n) return !i; 978 | for (n = Qu(n); u--; ) { 979 | var f = r[u]; 980 | if (o && f[2] ? f[1] !== n[f[0]] : !(f[0] in n)) return false; 981 | } 982 | for (; ++u < i; ) { 983 | var f = r[u], 984 | c = f[0], 985 | a = n[c], 986 | l = f[1]; 987 | if (o && f[2]) { 988 | if (a === T && !(c in n)) return false; 989 | } else { 990 | if (((f = new Zn()), e)) var s = e(a, l, c, n, t, f); 991 | if (s === T ? !Mt(l, a, 3, e, f) : !s) return false; 992 | } 993 | } 994 | return true; 995 | } 996 | function Ft(n) { 997 | return !(!du(n) || (ci && ci in n)) && (_u(n) ? hi : dn).test(Te(n)); 998 | } 999 | function Nt(n) { 1000 | return yu(n) && '[object RegExp]' == Ot(n); 1001 | } 1002 | function Pt(n) { 1003 | return yu(n) && '[object Set]' == vo(n); 1004 | } 1005 | function Zt(n) { 1006 | return yu(n) && gu(n.length) && !!Bn[Ot(n)]; 1007 | } 1008 | function qt(n) { 1009 | return typeof n == 'function' 1010 | ? n 1011 | : null == n 1012 | ? $u 1013 | : typeof n == 'object' 1014 | ? ff(n) 1015 | ? Jt(n[0], n[1]) 1016 | : Ht(n) 1017 | : Zu(n); 1018 | } 1019 | function Vt(n) { 1020 | if (!ze(n)) return Li(n); 1021 | var t, 1022 | r = []; 1023 | for (t in Qu(n)) oi.call(n, t) && 'constructor' != t && r.push(t); 1024 | return r; 1025 | } 1026 | function Kt(n, t) { 1027 | return n < t; 1028 | } 1029 | function Gt(n, t) { 1030 | var r = -1, 1031 | e = su(n) ? Ku(n.length) : []; 1032 | return ( 1033 | uo(n, function (n, u, i) { 1034 | e[++r] = t(n, u, i); 1035 | }), 1036 | e 1037 | ); 1038 | } 1039 | function Ht(n) { 1040 | var t = xe(n); 1041 | return 1 == t.length && t[0][2] 1042 | ? We(t[0][0], t[0][1]) 1043 | : function (r) { 1044 | return r === n || $t(r, n, t); 1045 | }; 1046 | } 1047 | function Jt(n, t) { 1048 | return Ie(n) && t === t && !du(t) 1049 | ? We(Me(n), t) 1050 | : function (r) { 1051 | var e = Ru(r, n); 1052 | return e === T && e === t ? zu(r, n) : Mt(t, e, 3); 1053 | }; 1054 | } 1055 | function Yt(n, t, r, e, u) { 1056 | n !== t && 1057 | oo( 1058 | t, 1059 | function (i, o) { 1060 | if ((u || (u = new Zn()), du(i))) { 1061 | var f = u, 1062 | c = Le(n, o), 1063 | a = Le(t, o), 1064 | l = f.get(a); 1065 | if (l) it(n, o, l); 1066 | else { 1067 | var l = e ? e(c, a, o + '', n, t, f) : T, 1068 | s = l === T; 1069 | if (s) { 1070 | var h = ff(a), 1071 | p = !h && af(a), 1072 | _ = !h && !p && _f(a), 1073 | l = a; 1074 | h || p || _ 1075 | ? ff(c) 1076 | ? (l = c) 1077 | : hu(c) 1078 | ? (l = Ur(c)) 1079 | : p 1080 | ? ((s = false), (l = Ir(a, true))) 1081 | : _ 1082 | ? ((s = false), (l = zr(a, true))) 1083 | : (l = []) 1084 | : xu(a) || of(a) 1085 | ? ((l = c), of(c) ? (l = Ou(c)) : (du(c) && !_u(c)) || (l = Ae(a))) 1086 | : (s = false); 1087 | } 1088 | s && (f.set(a, l), Yt(l, a, r, e, f), f.delete(a)), it(n, o, l); 1089 | } 1090 | } else (f = e ? e(Le(n, o), i, o + '', n, t, u) : T), f === T && (f = i), it(n, o, f); 1091 | }, 1092 | Bu 1093 | ); 1094 | } 1095 | function Qt(n, t) { 1096 | var r = n.length; 1097 | if (r) return (t += 0 > t ? r : 0), Se(t, r) ? n[t] : T; 1098 | } 1099 | function Xt(n, t, r) { 1100 | var e = -1; 1101 | return ( 1102 | (t = c(t.length ? t : [$u], k(ye()))), 1103 | (n = Gt(n, function (n) { 1104 | return { 1105 | a: c(t, function (t) { 1106 | return t(n); 1107 | }), 1108 | b: ++e, 1109 | c: n, 1110 | }; 1111 | })), 1112 | w(n, function (n, t) { 1113 | var e; 1114 | n: { 1115 | e = -1; 1116 | for (var u = n.a, i = t.a, o = u.length, f = r.length; ++e < o; ) { 1117 | var c = Wr(u[e], i[e]); 1118 | if (c) { 1119 | e = e >= f ? c : c * ('desc' == r[e] ? -1 : 1); 1120 | break n; 1121 | } 1122 | } 1123 | e = n.b - t.b; 1124 | } 1125 | return e; 1126 | }) 1127 | ); 1128 | } 1129 | function nr(n, t) { 1130 | return tr(n, t, function (t, r) { 1131 | return zu(n, r); 1132 | }); 1133 | } 1134 | function tr(n, t, r) { 1135 | for (var e = -1, u = t.length, i = {}; ++e < u; ) { 1136 | var o = t[e], 1137 | f = kt(n, o); 1138 | r(f, o) && lr(i, Sr(o, n), f); 1139 | } 1140 | return i; 1141 | } 1142 | function rr(n) { 1143 | return function (t) { 1144 | return kt(t, n); 1145 | }; 1146 | } 1147 | function er(n, t, r, e) { 1148 | var u = e ? g : v, 1149 | i = -1, 1150 | o = t.length, 1151 | f = n; 1152 | for (n === t && (t = Ur(t)), r && (f = c(n, k(r))); ++i < o; ) 1153 | for (var a = 0, l = t[i], l = r ? r(l) : l; -1 < (a = u(f, l, a, e)); ) 1154 | f !== n && xi.call(f, a, 1), xi.call(n, a, 1); 1155 | return n; 1156 | } 1157 | function ur(n, t) { 1158 | for (var r = n ? t.length : 0, e = r - 1; r--; ) { 1159 | var u = t[r]; 1160 | if (r == e || u !== i) { 1161 | var i = u; 1162 | Se(u) ? xi.call(n, u, 1) : xr(n, u); 1163 | } 1164 | } 1165 | } 1166 | function ir(n, t) { 1167 | return n + Ii(Ti() * (t - n + 1)); 1168 | } 1169 | function or(n, t) { 1170 | var r = ''; 1171 | if (!n || 1 > t || 9007199254740991 < t) return r; 1172 | do t % 2 && (r += n), (t = Ii(t / 2)) && (n += n); 1173 | while (t); 1174 | return r; 1175 | } 1176 | function fr(n, t) { 1177 | return xo(Be(n, t, $u), n + ''); 1178 | } 1179 | function cr(n) { 1180 | return Qn(Uu(n)); 1181 | } 1182 | function ar(n, t) { 1183 | var r = Uu(n); 1184 | return De(r, pt(t, 0, r.length)); 1185 | } 1186 | function lr(n, t, r, e) { 1187 | if (!du(n)) return n; 1188 | t = Sr(t, n); 1189 | for (var u = -1, i = t.length, o = i - 1, f = n; null != f && ++u < i; ) { 1190 | var c = Me(t[u]), 1191 | a = r; 1192 | if (u != o) { 1193 | var l = f[c], 1194 | a = e ? e(l, c, f) : T; 1195 | a === T && (a = du(l) ? l : Se(t[u + 1]) ? [] : {}); 1196 | } 1197 | ot(f, c, a), (f = f[c]); 1198 | } 1199 | return n; 1200 | } 1201 | function sr(n) { 1202 | return De(Uu(n)); 1203 | } 1204 | function hr(n, t, r) { 1205 | var e = -1, 1206 | u = n.length; 1207 | for ( 1208 | 0 > t && (t = -t > u ? 0 : u + t), 1209 | r = r > u ? u : r, 1210 | 0 > r && (r += u), 1211 | u = t > r ? 0 : (r - t) >>> 0, 1212 | t >>>= 0, 1213 | r = Ku(u); 1214 | ++e < u; 1215 | 1216 | ) 1217 | r[e] = n[e + t]; 1218 | return r; 1219 | } 1220 | function pr(n, t) { 1221 | var r; 1222 | return ( 1223 | uo(n, function (n, e, u) { 1224 | return (r = t(n, e, u)), !r; 1225 | }), 1226 | !!r 1227 | ); 1228 | } 1229 | function _r(n, t, r) { 1230 | var e = 0, 1231 | u = null == n ? e : n.length; 1232 | if (typeof t == 'number' && t === t && 2147483647 >= u) { 1233 | for (; e < u; ) { 1234 | var i = (e + u) >>> 1, 1235 | o = n[i]; 1236 | null !== o && !wu(o) && (r ? o <= t : o < t) ? (e = i + 1) : (u = i); 1237 | } 1238 | return u; 1239 | } 1240 | return vr(n, t, $u, r); 1241 | } 1242 | function vr(n, t, r, e) { 1243 | t = r(t); 1244 | for (var u = 0, i = null == n ? 0 : n.length, o = t !== t, f = null === t, c = wu(t), a = t === T; u < i; ) { 1245 | var l = Ii((u + i) / 2), 1246 | s = r(n[l]), 1247 | h = s !== T, 1248 | p = null === s, 1249 | _ = s === s, 1250 | v = wu(s); 1251 | ( 1252 | o 1253 | ? e || _ 1254 | : a 1255 | ? _ && (e || h) 1256 | : f 1257 | ? _ && h && (e || !p) 1258 | : c 1259 | ? _ && h && !p && (e || !v) 1260 | : p || v 1261 | ? 0 1262 | : e 1263 | ? s <= t 1264 | : s < t 1265 | ) 1266 | ? (u = l + 1) 1267 | : (i = l); 1268 | } 1269 | return Ci(i, 4294967294); 1270 | } 1271 | function gr(n, t) { 1272 | for (var r = -1, e = n.length, u = 0, i = []; ++r < e; ) { 1273 | var o = n[r], 1274 | f = t ? t(o) : o; 1275 | if (!r || !lu(f, c)) { 1276 | var c = f; 1277 | i[u++] = 0 === o ? 0 : o; 1278 | } 1279 | } 1280 | return i; 1281 | } 1282 | function dr(n) { 1283 | return typeof n == 'number' ? n : wu(n) ? F : +n; 1284 | } 1285 | function yr(n) { 1286 | if (typeof n == 'string') return n; 1287 | if (ff(n)) return c(n, yr) + ''; 1288 | if (wu(n)) return ro ? ro.call(n) : ''; 1289 | var t = n + ''; 1290 | return '0' == t && 1 / n == -$ ? '-0' : t; 1291 | } 1292 | function br(n, t, r) { 1293 | var e = -1, 1294 | u = o, 1295 | i = n.length, 1296 | c = true, 1297 | a = [], 1298 | l = a; 1299 | if (r) (c = false), (u = f); 1300 | else if (200 <= i) { 1301 | if ((u = t ? null : so(n))) return U(u); 1302 | (c = false), (u = O), (l = new Nn()); 1303 | } else l = t ? [] : a; 1304 | n: for (; ++e < i; ) { 1305 | var s = n[e], 1306 | h = t ? t(s) : s, 1307 | s = r || 0 !== s ? s : 0; 1308 | if (c && h === h) { 1309 | for (var p = l.length; p--; ) if (l[p] === h) continue n; 1310 | t && l.push(h), a.push(s); 1311 | } else u(l, h, r) || (l !== a && l.push(h), a.push(s)); 1312 | } 1313 | return a; 1314 | } 1315 | function xr(n, t) { 1316 | return (t = Sr(t, n)), (n = 2 > t.length ? n : kt(n, hr(t, 0, -1))), null == n || delete n[Me(Ve(t))]; 1317 | } 1318 | function jr(n, t, r, e) { 1319 | for (var u = n.length, i = e ? u : -1; (e ? i-- : ++i < u) && t(n[i], i, n); ); 1320 | return r ? hr(n, e ? 0 : i, e ? i + 1 : u) : hr(n, e ? i + 1 : 0, e ? u : i); 1321 | } 1322 | function wr(n, t) { 1323 | var r = n; 1324 | return ( 1325 | r instanceof Un && (r = r.value()), 1326 | l( 1327 | t, 1328 | function (n, t) { 1329 | return t.func.apply(t.thisArg, a([n], t.args)); 1330 | }, 1331 | r 1332 | ) 1333 | ); 1334 | } 1335 | function mr(n, t, r) { 1336 | var e = n.length; 1337 | if (2 > e) return e ? br(n[0]) : []; 1338 | for (var u = -1, i = Ku(e); ++u < e; ) 1339 | for (var o = n[u], f = -1; ++f < e; ) f != u && (i[u] = yt(i[u] || o, n[f], t, r)); 1340 | return br(wt(i, 1), t, r); 1341 | } 1342 | function Ar(n, t, r) { 1343 | for (var e = -1, u = n.length, i = t.length, o = {}; ++e < u; ) r(o, n[e], e < i ? t[e] : T); 1344 | return o; 1345 | } 1346 | function Er(n) { 1347 | return hu(n) ? n : []; 1348 | } 1349 | function kr(n) { 1350 | return typeof n == 'function' ? n : $u; 1351 | } 1352 | function Sr(n, t) { 1353 | return ff(n) ? n : Ie(n, t) ? [n] : jo(Iu(n)); 1354 | } 1355 | function Or(n, t, r) { 1356 | var e = n.length; 1357 | return (r = r === T ? e : r), !t && r >= e ? n : hr(n, t, r); 1358 | } 1359 | function Ir(n, t) { 1360 | if (t) return n.slice(); 1361 | var r = n.length, 1362 | r = gi ? gi(r) : new n.constructor(r); 1363 | return n.copy(r), r; 1364 | } 1365 | function Rr(n) { 1366 | var t = new n.constructor(n.byteLength); 1367 | return new vi(t).set(new vi(n)), t; 1368 | } 1369 | function zr(n, t) { 1370 | return new n.constructor(t ? Rr(n.buffer) : n.buffer, n.byteOffset, n.length); 1371 | } 1372 | function Wr(n, t) { 1373 | if (n !== t) { 1374 | var r = n !== T, 1375 | e = null === n, 1376 | u = n === n, 1377 | i = wu(n), 1378 | o = t !== T, 1379 | f = null === t, 1380 | c = t === t, 1381 | a = wu(t); 1382 | if ((!f && !a && !i && n > t) || (i && o && c && !f && !a) || (e && o && c) || (!r && c) || !u) return 1; 1383 | if ((!e && !i && !a && n < t) || (a && r && u && !e && !i) || (f && r && u) || (!o && u) || !c) return -1; 1384 | } 1385 | return 0; 1386 | } 1387 | function Br(n, t, r, e) { 1388 | var u = -1, 1389 | i = n.length, 1390 | o = r.length, 1391 | f = -1, 1392 | c = t.length, 1393 | a = Ui(i - o, 0), 1394 | l = Ku(c + a); 1395 | for (e = !e; ++f < c; ) l[f] = t[f]; 1396 | for (; ++u < o; ) (e || u < i) && (l[r[u]] = n[u]); 1397 | for (; a--; ) l[f++] = n[u++]; 1398 | return l; 1399 | } 1400 | function Lr(n, t, r, e) { 1401 | var u = -1, 1402 | i = n.length, 1403 | o = -1, 1404 | f = r.length, 1405 | c = -1, 1406 | a = t.length, 1407 | l = Ui(i - f, 0), 1408 | s = Ku(l + a); 1409 | for (e = !e; ++u < l; ) s[u] = n[u]; 1410 | for (l = u; ++c < a; ) s[l + c] = t[c]; 1411 | for (; ++o < f; ) (e || u < i) && (s[l + r[o]] = n[u++]); 1412 | return s; 1413 | } 1414 | function Ur(n, t) { 1415 | var r = -1, 1416 | e = n.length; 1417 | for (t || (t = Ku(e)); ++r < e; ) t[r] = n[r]; 1418 | return t; 1419 | } 1420 | function Cr(n, t, r, e) { 1421 | var u = !r; 1422 | r || (r = {}); 1423 | for (var i = -1, o = t.length; ++i < o; ) { 1424 | var f = t[i], 1425 | c = e ? e(r[f], n[f], f, r, n) : T; 1426 | c === T && (c = n[f]), u ? st(r, f, c) : ot(r, f, c); 1427 | } 1428 | return r; 1429 | } 1430 | function Dr(n, t) { 1431 | return Cr(n, po(n), t); 1432 | } 1433 | function Mr(n, t) { 1434 | return Cr(n, _o(n), t); 1435 | } 1436 | function Tr(n, r) { 1437 | return function (e, u) { 1438 | var i = ff(e) ? t : ct, 1439 | o = r ? r() : {}; 1440 | return i(e, n, ye(u, 2), o); 1441 | }; 1442 | } 1443 | function $r(n) { 1444 | return fr(function (t, r) { 1445 | var e = -1, 1446 | u = r.length, 1447 | i = 1 < u ? r[u - 1] : T, 1448 | o = 2 < u ? r[2] : T, 1449 | i = 3 < n.length && typeof i == 'function' ? (u--, i) : T; 1450 | for (o && Oe(r[0], r[1], o) && ((i = 3 > u ? T : i), (u = 1)), t = Qu(t); ++e < u; ) 1451 | (o = r[e]) && n(t, o, e, i); 1452 | return t; 1453 | }); 1454 | } 1455 | function Fr(n, t) { 1456 | return function (r, e) { 1457 | if (null == r) return r; 1458 | if (!su(r)) return n(r, e); 1459 | for (var u = r.length, i = t ? u : -1, o = Qu(r); (t ? i-- : ++i < u) && false !== e(o[i], i, o); ); 1460 | return r; 1461 | }; 1462 | } 1463 | function Nr(n) { 1464 | return function (t, r, e) { 1465 | var u = -1, 1466 | i = Qu(t); 1467 | e = e(t); 1468 | for (var o = e.length; o--; ) { 1469 | var f = e[n ? o : ++u]; 1470 | if (false === r(i[f], f, i)) break; 1471 | } 1472 | return t; 1473 | }; 1474 | } 1475 | function Pr(n, t, r) { 1476 | function e() { 1477 | return (this && this !== $n && this instanceof e ? i : n).apply(u ? r : this, arguments); 1478 | } 1479 | var u = 1 & t, 1480 | i = Vr(n); 1481 | return e; 1482 | } 1483 | function Zr(n) { 1484 | return function (t) { 1485 | t = Iu(t); 1486 | var r = Rn.test(t) ? M(t) : T, 1487 | e = r ? r[0] : t.charAt(0); 1488 | return (t = r ? Or(r, 1).join('') : t.slice(1)), e[n]() + t; 1489 | }; 1490 | } 1491 | function qr(n) { 1492 | return function (t) { 1493 | return l(Mu(Du(t).replace(kn, '')), n, ''); 1494 | }; 1495 | } 1496 | function Vr(n) { 1497 | return function () { 1498 | var t = arguments; 1499 | switch (t.length) { 1500 | case 0: 1501 | return new n(); 1502 | case 1: 1503 | return new n(t[0]); 1504 | case 2: 1505 | return new n(t[0], t[1]); 1506 | case 3: 1507 | return new n(t[0], t[1], t[2]); 1508 | case 4: 1509 | return new n(t[0], t[1], t[2], t[3]); 1510 | case 5: 1511 | return new n(t[0], t[1], t[2], t[3], t[4]); 1512 | case 6: 1513 | return new n(t[0], t[1], t[2], t[3], t[4], t[5]); 1514 | case 7: 1515 | return new n(t[0], t[1], t[2], t[3], t[4], t[5], t[6]); 1516 | } 1517 | var r = eo(n.prototype), 1518 | t = n.apply(r, t); 1519 | return du(t) ? t : r; 1520 | }; 1521 | } 1522 | function Kr(t, r, e) { 1523 | function u() { 1524 | for (var o = arguments.length, f = Ku(o), c = o, a = de(u); c--; ) f[c] = arguments[c]; 1525 | return ( 1526 | (c = 3 > o && f[0] !== a && f[o - 1] !== a ? [] : L(f, a)), 1527 | (o -= c.length), 1528 | o < e 1529 | ? ue(t, r, Jr, u.placeholder, T, f, c, T, T, e - o) 1530 | : n(this && this !== $n && this instanceof u ? i : t, this, f) 1531 | ); 1532 | } 1533 | var i = Vr(t); 1534 | return u; 1535 | } 1536 | function Gr(n) { 1537 | return function (t, r, e) { 1538 | var u = Qu(t); 1539 | if (!su(t)) { 1540 | var i = ye(r, 3); 1541 | (t = Wu(t)), 1542 | (r = function (n) { 1543 | return i(u[n], n, u); 1544 | }); 1545 | } 1546 | return (r = n(t, r, e)), -1 < r ? u[i ? t[r] : r] : T; 1547 | }; 1548 | } 1549 | function Hr(n) { 1550 | return pe(function (t) { 1551 | var r = t.length, 1552 | e = r, 1553 | u = On.prototype.thru; 1554 | for (n && t.reverse(); e--; ) { 1555 | var i = t[e]; 1556 | if (typeof i != 'function') throw new ti('Expected a function'); 1557 | if (u && !o && 'wrapper' == ge(i)) var o = new On([], true); 1558 | } 1559 | for (e = o ? e : r; ++e < r; ) 1560 | var i = t[e], 1561 | u = ge(i), 1562 | f = 'wrapper' == u ? ho(i) : T, 1563 | o = 1564 | f && Re(f[0]) && 424 == f[1] && !f[4].length && 1 == f[9] 1565 | ? o[ge(f[0])].apply(o, f[3]) 1566 | : 1 == i.length && Re(i) 1567 | ? o[u]() 1568 | : o.thru(i); 1569 | return function () { 1570 | var n = arguments, 1571 | e = n[0]; 1572 | if (o && 1 == n.length && ff(e)) return o.plant(e).value(); 1573 | for (var u = 0, n = r ? t[u].apply(this, n) : e; ++u < r; ) n = t[u].call(this, n); 1574 | return n; 1575 | }; 1576 | }); 1577 | } 1578 | function Jr(n, t, r, e, u, i, o, f, c, a) { 1579 | function l() { 1580 | for (var d = arguments.length, y = Ku(d), b = d; b--; ) y[b] = arguments[b]; 1581 | if (_) { 1582 | var x, 1583 | j = de(l), 1584 | b = y.length; 1585 | for (x = 0; b--; ) y[b] === j && ++x; 1586 | } 1587 | if ((e && (y = Br(y, e, u, _)), i && (y = Lr(y, i, o, _)), (d -= x), _ && d < a)) 1588 | return (j = L(y, j)), ue(n, t, Jr, l.placeholder, r, y, j, f, c, a - d); 1589 | if (((j = h ? r : this), (b = p ? j[n] : n), (d = y.length), f)) { 1590 | x = y.length; 1591 | for (var w = Ci(f.length, x), m = Ur(y); w--; ) { 1592 | var A = f[w]; 1593 | y[w] = Se(A, x) ? m[A] : T; 1594 | } 1595 | } else v && 1 < d && y.reverse(); 1596 | return ( 1597 | s && c < d && (y.length = c), this && this !== $n && this instanceof l && (b = g || Vr(b)), b.apply(j, y) 1598 | ); 1599 | } 1600 | var s = 128 & t, 1601 | h = 1 & t, 1602 | p = 2 & t, 1603 | _ = 24 & t, 1604 | v = 512 & t, 1605 | g = p ? T : Vr(n); 1606 | return l; 1607 | } 1608 | function Yr(n, t) { 1609 | return function (r, e) { 1610 | return Bt(r, n, t(e)); 1611 | }; 1612 | } 1613 | function Qr(n, t) { 1614 | return function (r, e) { 1615 | var u; 1616 | if (r === T && e === T) return t; 1617 | if ((r !== T && (u = r), e !== T)) { 1618 | if (u === T) return e; 1619 | typeof r == 'string' || typeof e == 'string' ? ((r = yr(r)), (e = yr(e))) : ((r = dr(r)), (e = dr(e))), 1620 | (u = n(r, e)); 1621 | } 1622 | return u; 1623 | }; 1624 | } 1625 | function Xr(t) { 1626 | return pe(function (r) { 1627 | return ( 1628 | (r = c(r, k(ye()))), 1629 | fr(function (e) { 1630 | var u = this; 1631 | return t(r, function (t) { 1632 | return n(t, u, e); 1633 | }); 1634 | }) 1635 | ); 1636 | }); 1637 | } 1638 | function ne(n, t) { 1639 | t = t === T ? ' ' : yr(t); 1640 | var r = t.length; 1641 | return 2 > r 1642 | ? r 1643 | ? or(t, n) 1644 | : t 1645 | : ((r = or(t, Oi(n / D(t)))), Rn.test(t) ? Or(M(r), 0, n).join('') : r.slice(0, n)); 1646 | } 1647 | function te(t, r, e, u) { 1648 | function i() { 1649 | for ( 1650 | var r = -1, 1651 | c = arguments.length, 1652 | a = -1, 1653 | l = u.length, 1654 | s = Ku(l + c), 1655 | h = this && this !== $n && this instanceof i ? f : t; 1656 | ++a < l; 1657 | 1658 | ) 1659 | s[a] = u[a]; 1660 | for (; c--; ) s[a++] = arguments[++r]; 1661 | return n(h, o ? e : this, s); 1662 | } 1663 | var o = 1 & r, 1664 | f = Vr(t); 1665 | return i; 1666 | } 1667 | function re(n) { 1668 | return function (t, r, e) { 1669 | e && typeof e != 'number' && Oe(t, r, e) && (r = e = T), 1670 | (t = Au(t)), 1671 | r === T ? ((r = t), (t = 0)) : (r = Au(r)), 1672 | (e = e === T ? (t < r ? 1 : -1) : Au(e)); 1673 | var u = -1; 1674 | r = Ui(Oi((r - t) / (e || 1)), 0); 1675 | for (var i = Ku(r); r--; ) (i[n ? r : ++u] = t), (t += e); 1676 | return i; 1677 | }; 1678 | } 1679 | function ee(n) { 1680 | return function (t, r) { 1681 | return (typeof t == 'string' && typeof r == 'string') || ((t = Su(t)), (r = Su(r))), n(t, r); 1682 | }; 1683 | } 1684 | function ue(n, t, r, e, u, i, o, f, c, a) { 1685 | var l = 8 & t, 1686 | s = l ? o : T; 1687 | o = l ? T : o; 1688 | var h = l ? i : T; 1689 | return ( 1690 | (i = l ? T : i), 1691 | (t = (t | (l ? 32 : 64)) & ~(l ? 64 : 32)), 1692 | 4 & t || (t &= -4), 1693 | (u = [n, t, u, h, s, i, o, f, c, a]), 1694 | (r = r.apply(T, u)), 1695 | Re(n) && yo(r, u), 1696 | (r.placeholder = e), 1697 | Ue(r, n, t) 1698 | ); 1699 | } 1700 | function ie(n) { 1701 | var t = Yu[n]; 1702 | return function (n, r) { 1703 | if (((n = Su(n)), (r = null == r ? 0 : Ci(Eu(r), 292)) && Wi(n))) { 1704 | var e = (Iu(n) + 'e').split('e'), 1705 | e = t(e[0] + 'e' + (+e[1] + r)), 1706 | e = (Iu(e) + 'e').split('e'); 1707 | return +(e[0] + 'e' + (+e[1] - r)); 1708 | } 1709 | return t(n); 1710 | }; 1711 | } 1712 | function oe(n) { 1713 | return function (t) { 1714 | var r = vo(t); 1715 | return '[object Map]' == r ? W(t) : '[object Set]' == r ? C(t) : E(t, n(t)); 1716 | }; 1717 | } 1718 | function fe(n, t, r, e, u, i, o, f) { 1719 | var c = 2 & t; 1720 | if (!c && typeof n != 'function') throw new ti('Expected a function'); 1721 | var a = e ? e.length : 0; 1722 | if ( 1723 | (a || ((t &= -97), (e = u = T)), 1724 | (o = o === T ? o : Ui(Eu(o), 0)), 1725 | (f = f === T ? f : Eu(f)), 1726 | (a -= u ? u.length : 0), 1727 | 64 & t) 1728 | ) { 1729 | var l = e, 1730 | s = u; 1731 | e = u = T; 1732 | } 1733 | var h = c ? T : ho(n); 1734 | return ( 1735 | (i = [n, t, r, e, u, l, s, i, o, f]), 1736 | h && 1737 | ((r = i[1]), 1738 | (n = h[1]), 1739 | (t = r | n), 1740 | (e = 1741 | (128 == n && 8 == r) || 1742 | (128 == n && 256 == r && i[7].length <= h[8]) || 1743 | (384 == n && h[7].length <= h[8] && 8 == r)), 1744 | 131 > t || e) && 1745 | (1 & n && ((i[2] = h[2]), (t |= 1 & r ? 0 : 4)), 1746 | (r = h[3]) && 1747 | ((e = i[3]), (i[3] = e ? Br(e, r, h[4]) : r), (i[4] = e ? L(i[3], '__lodash_placeholder__') : h[4])), 1748 | (r = h[5]) && 1749 | ((e = i[5]), (i[5] = e ? Lr(e, r, h[6]) : r), (i[6] = e ? L(i[5], '__lodash_placeholder__') : h[6])), 1750 | (r = h[7]) && (i[7] = r), 1751 | 128 & n && (i[8] = null == i[8] ? h[8] : Ci(i[8], h[8])), 1752 | null == i[9] && (i[9] = h[9]), 1753 | (i[0] = h[0]), 1754 | (i[1] = t)), 1755 | (n = i[0]), 1756 | (t = i[1]), 1757 | (r = i[2]), 1758 | (e = i[3]), 1759 | (u = i[4]), 1760 | (f = i[9] = i[9] === T ? (c ? 0 : n.length) : Ui(i[9] - a, 0)), 1761 | !f && 24 & t && (t &= -25), 1762 | Ue( 1763 | (h ? co : yo)( 1764 | t && 1 != t 1765 | ? 8 == t || 16 == t 1766 | ? Kr(n, t, f) 1767 | : (32 != t && 33 != t) || u.length 1768 | ? Jr.apply(T, i) 1769 | : te(n, t, r, e) 1770 | : Pr(n, t, r), 1771 | i 1772 | ), 1773 | n, 1774 | t 1775 | ) 1776 | ); 1777 | } 1778 | function ce(n, t, r, e) { 1779 | return n === T || (lu(n, ei[r]) && !oi.call(e, r)) ? t : n; 1780 | } 1781 | function ae(n, t, r, e, u, i) { 1782 | return du(n) && du(t) && (i.set(t, n), Yt(n, t, T, ae, i), i.delete(t)), n; 1783 | } 1784 | function le(n) { 1785 | return xu(n) ? T : n; 1786 | } 1787 | function se(n, t, r, e, u, i) { 1788 | var o = 1 & r, 1789 | f = n.length, 1790 | c = t.length; 1791 | if (f != c && !(o && c > f)) return false; 1792 | if ((c = i.get(n)) && i.get(t)) return c == t; 1793 | var c = -1, 1794 | a = true, 1795 | l = 2 & r ? new Nn() : T; 1796 | for (i.set(n, t), i.set(t, n); ++c < f; ) { 1797 | var s = n[c], 1798 | p = t[c]; 1799 | if (e) var _ = o ? e(p, s, c, t, n, i) : e(s, p, c, n, t, i); 1800 | if (_ !== T) { 1801 | if (_) continue; 1802 | a = false; 1803 | break; 1804 | } 1805 | if (l) { 1806 | if ( 1807 | !h(t, function (n, t) { 1808 | if (!O(l, t) && (s === n || u(s, n, r, e, i))) return l.push(t); 1809 | }) 1810 | ) { 1811 | a = false; 1812 | break; 1813 | } 1814 | } else if (s !== p && !u(s, p, r, e, i)) { 1815 | a = false; 1816 | break; 1817 | } 1818 | } 1819 | return i.delete(n), i.delete(t), a; 1820 | } 1821 | function he(n, t, r, e, u, i, o) { 1822 | switch (r) { 1823 | case '[object DataView]': 1824 | if (n.byteLength != t.byteLength || n.byteOffset != t.byteOffset) break; 1825 | (n = n.buffer), (t = t.buffer); 1826 | case '[object ArrayBuffer]': 1827 | if (n.byteLength != t.byteLength || !i(new vi(n), new vi(t))) break; 1828 | return true; 1829 | case '[object Boolean]': 1830 | case '[object Date]': 1831 | case '[object Number]': 1832 | return lu(+n, +t); 1833 | case '[object Error]': 1834 | return n.name == t.name && n.message == t.message; 1835 | case '[object RegExp]': 1836 | case '[object String]': 1837 | return n == t + ''; 1838 | case '[object Map]': 1839 | var f = W; 1840 | case '[object Set]': 1841 | if ((f || (f = U), n.size != t.size && !(1 & e))) break; 1842 | return (r = o.get(n)) ? r == t : ((e |= 2), o.set(n, t), (t = se(f(n), f(t), e, u, i, o)), o.delete(n), t); 1843 | case '[object Symbol]': 1844 | if (to) return to.call(n) == to.call(t); 1845 | } 1846 | return false; 1847 | } 1848 | function pe(n) { 1849 | return xo(Be(n, T, Ze), n + ''); 1850 | } 1851 | function _e(n) { 1852 | return St(n, Wu, po); 1853 | } 1854 | function ve(n) { 1855 | return St(n, Bu, _o); 1856 | } 1857 | function ge(n) { 1858 | for (var t = n.name + '', r = Gi[t], e = oi.call(Gi, t) ? r.length : 0; e--; ) { 1859 | var u = r[e], 1860 | i = u.func; 1861 | if (null == i || i == n) return u.name; 1862 | } 1863 | return t; 1864 | } 1865 | function de(n) { 1866 | return (oi.call(An, 'placeholder') ? An : n).placeholder; 1867 | } 1868 | function ye() { 1869 | var n = An.iteratee || Fu, 1870 | n = n === Fu ? qt : n; 1871 | return arguments.length ? n(arguments[0], arguments[1]) : n; 1872 | } 1873 | function be(n, t) { 1874 | var r = n.__data__, 1875 | e = typeof t; 1876 | return ('string' == e || 'number' == e || 'symbol' == e || 'boolean' == e ? '__proto__' !== t : null === t) 1877 | ? r[typeof t == 'string' ? 'string' : 'hash'] 1878 | : r.map; 1879 | } 1880 | function xe(n) { 1881 | for (var t = Wu(n), r = t.length; r--; ) { 1882 | var e = t[r], 1883 | u = n[e]; 1884 | t[r] = [e, u, u === u && !du(u)]; 1885 | } 1886 | return t; 1887 | } 1888 | function je(n, t) { 1889 | var r = null == n ? T : n[t]; 1890 | return Ft(r) ? r : T; 1891 | } 1892 | function we(n, t, r) { 1893 | t = Sr(t, n); 1894 | for (var e = -1, u = t.length, i = false; ++e < u; ) { 1895 | var o = Me(t[e]); 1896 | if (!(i = null != n && r(n, o))) break; 1897 | n = n[o]; 1898 | } 1899 | return i || ++e != u ? i : ((u = null == n ? 0 : n.length), !!u && gu(u) && Se(o, u) && (ff(n) || of(n))); 1900 | } 1901 | function me(n) { 1902 | var t = n.length, 1903 | r = new n.constructor(t); 1904 | return t && 'string' == typeof n[0] && oi.call(n, 'index') && ((r.index = n.index), (r.input = n.input)), r; 1905 | } 1906 | function Ae(n) { 1907 | return typeof n.constructor != 'function' || ze(n) ? {} : eo(di(n)); 1908 | } 1909 | function Ee(n, t, r) { 1910 | var e = n.constructor; 1911 | switch (t) { 1912 | case '[object ArrayBuffer]': 1913 | return Rr(n); 1914 | case '[object Boolean]': 1915 | case '[object Date]': 1916 | return new e(+n); 1917 | case '[object DataView]': 1918 | return (t = r ? Rr(n.buffer) : n.buffer), new n.constructor(t, n.byteOffset, n.byteLength); 1919 | case '[object Float32Array]': 1920 | case '[object Float64Array]': 1921 | case '[object Int8Array]': 1922 | case '[object Int16Array]': 1923 | case '[object Int32Array]': 1924 | case '[object Uint8Array]': 1925 | case '[object Uint8ClampedArray]': 1926 | case '[object Uint16Array]': 1927 | case '[object Uint32Array]': 1928 | return zr(n, r); 1929 | case '[object Map]': 1930 | return new e(); 1931 | case '[object Number]': 1932 | case '[object String]': 1933 | return new e(n); 1934 | case '[object RegExp]': 1935 | return (t = new n.constructor(n.source, _n.exec(n))), (t.lastIndex = n.lastIndex), t; 1936 | case '[object Set]': 1937 | return new e(); 1938 | case '[object Symbol]': 1939 | return to ? Qu(to.call(n)) : {}; 1940 | } 1941 | } 1942 | function ke(n) { 1943 | return ff(n) || of(n) || !!(ji && n && n[ji]); 1944 | } 1945 | function Se(n, t) { 1946 | var r = typeof n; 1947 | return ( 1948 | (t = null == t ? 9007199254740991 : t), 1949 | !!t && ('number' == r || ('symbol' != r && bn.test(n))) && -1 < n && 0 == n % 1 && n < t 1950 | ); 1951 | } 1952 | function Oe(n, t, r) { 1953 | if (!du(r)) return false; 1954 | var e = typeof t; 1955 | return !!('number' == e ? su(r) && Se(t, r.length) : 'string' == e && t in r) && lu(r[t], n); 1956 | } 1957 | function Ie(n, t) { 1958 | if (ff(n)) return false; 1959 | var r = typeof n; 1960 | return ( 1961 | !('number' != r && 'symbol' != r && 'boolean' != r && null != n && !wu(n)) || 1962 | nn.test(n) || 1963 | !X.test(n) || 1964 | (null != t && n in Qu(t)) 1965 | ); 1966 | } 1967 | function Re(n) { 1968 | var t = ge(n), 1969 | r = An[t]; 1970 | return typeof r == 'function' && t in Un.prototype && (n === r || ((t = ho(r)), !!t && n === t[0])); 1971 | } 1972 | function ze(n) { 1973 | var t = n && n.constructor; 1974 | return n === ((typeof t == 'function' && t.prototype) || ei); 1975 | } 1976 | function We(n, t) { 1977 | return function (r) { 1978 | return null != r && r[n] === t && (t !== T || n in Qu(r)); 1979 | }; 1980 | } 1981 | function Be(t, r, e) { 1982 | return ( 1983 | (r = Ui(r === T ? t.length - 1 : r, 0)), 1984 | function () { 1985 | for (var u = arguments, i = -1, o = Ui(u.length - r, 0), f = Ku(o); ++i < o; ) f[i] = u[r + i]; 1986 | for (i = -1, o = Ku(r + 1); ++i < r; ) o[i] = u[i]; 1987 | return (o[r] = e(f)), n(t, this, o); 1988 | } 1989 | ); 1990 | } 1991 | function Le(n, t) { 1992 | if (('constructor' !== t || 'function' != typeof n[t]) && '__proto__' != t) return n[t]; 1993 | } 1994 | function Ue(n, t, r) { 1995 | var e = t + ''; 1996 | t = xo; 1997 | var u, 1998 | i = $e; 1999 | return ( 2000 | (u = (u = e.match(an)) ? u[1].split(ln) : []), 2001 | (r = i(u, r)), 2002 | (i = r.length) && 2003 | ((u = i - 1), 2004 | (r[u] = (1 < i ? '& ' : '') + r[u]), 2005 | (r = r.join(2 < i ? ', ' : ' ')), 2006 | (e = e.replace(cn, '{\n/* [wrapped with ' + r + '] */\n'))), 2007 | t(n, e) 2008 | ); 2009 | } 2010 | function Ce(n) { 2011 | var t = 0, 2012 | r = 0; 2013 | return function () { 2014 | var e = Di(), 2015 | u = 16 - (e - r); 2016 | if (((r = e), 0 < u)) { 2017 | if (800 <= ++t) return arguments[0]; 2018 | } else t = 0; 2019 | return n.apply(T, arguments); 2020 | }; 2021 | } 2022 | function De(n, t) { 2023 | var r = -1, 2024 | e = n.length, 2025 | u = e - 1; 2026 | for (t = t === T ? e : t; ++r < t; ) { 2027 | var e = ir(r, u), 2028 | i = n[e]; 2029 | (n[e] = n[r]), (n[r] = i); 2030 | } 2031 | return (n.length = t), n; 2032 | } 2033 | function Me(n) { 2034 | if (typeof n == 'string' || wu(n)) return n; 2035 | var t = n + ''; 2036 | return '0' == t && 1 / n == -$ ? '-0' : t; 2037 | } 2038 | function Te(n) { 2039 | if (null != n) { 2040 | try { 2041 | return ii.call(n); 2042 | } catch (n) {} 2043 | return n + ''; 2044 | } 2045 | return ''; 2046 | } 2047 | function $e(n, t) { 2048 | return ( 2049 | r(N, function (r) { 2050 | var e = '_.' + r[0]; 2051 | t & r[1] && !o(n, e) && n.push(e); 2052 | }), 2053 | n.sort() 2054 | ); 2055 | } 2056 | function Fe(n) { 2057 | if (n instanceof Un) return n.clone(); 2058 | var t = new On(n.__wrapped__, n.__chain__); 2059 | return (t.__actions__ = Ur(n.__actions__)), (t.__index__ = n.__index__), (t.__values__ = n.__values__), t; 2060 | } 2061 | function Ne(n, t, r) { 2062 | var e = null == n ? 0 : n.length; 2063 | return e ? ((r = null == r ? 0 : Eu(r)), 0 > r && (r = Ui(e + r, 0)), _(n, ye(t, 3), r)) : -1; 2064 | } 2065 | function Pe(n, t, r) { 2066 | var e = null == n ? 0 : n.length; 2067 | if (!e) return -1; 2068 | var u = e - 1; 2069 | return r !== T && ((u = Eu(r)), (u = 0 > r ? Ui(e + u, 0) : Ci(u, e - 1))), _(n, ye(t, 3), u, true); 2070 | } 2071 | function Ze(n) { 2072 | return (null == n ? 0 : n.length) ? wt(n, 1) : []; 2073 | } 2074 | function qe(n) { 2075 | return n && n.length ? n[0] : T; 2076 | } 2077 | function Ve(n) { 2078 | var t = null == n ? 0 : n.length; 2079 | return t ? n[t - 1] : T; 2080 | } 2081 | function Ke(n, t) { 2082 | return n && n.length && t && t.length ? er(n, t) : n; 2083 | } 2084 | function Ge(n) { 2085 | return null == n ? n : $i.call(n); 2086 | } 2087 | function He(n) { 2088 | if (!n || !n.length) return []; 2089 | var t = 0; 2090 | return ( 2091 | (n = i(n, function (n) { 2092 | if (hu(n)) return (t = Ui(n.length, t)), true; 2093 | })), 2094 | A(t, function (t) { 2095 | return c(n, b(t)); 2096 | }) 2097 | ); 2098 | } 2099 | function Je(t, r) { 2100 | if (!t || !t.length) return []; 2101 | var e = He(t); 2102 | return null == r 2103 | ? e 2104 | : c(e, function (t) { 2105 | return n(r, T, t); 2106 | }); 2107 | } 2108 | function Ye(n) { 2109 | return (n = An(n)), (n.__chain__ = true), n; 2110 | } 2111 | function Qe(n, t) { 2112 | return t(n); 2113 | } 2114 | function Xe() { 2115 | return this; 2116 | } 2117 | function nu(n, t) { 2118 | return (ff(n) ? r : uo)(n, ye(t, 3)); 2119 | } 2120 | function tu(n, t) { 2121 | return (ff(n) ? e : io)(n, ye(t, 3)); 2122 | } 2123 | function ru(n, t) { 2124 | return (ff(n) ? c : Gt)(n, ye(t, 3)); 2125 | } 2126 | function eu(n, t, r) { 2127 | return (t = r ? T : t), (t = n && null == t ? n.length : t), fe(n, 128, T, T, T, T, t); 2128 | } 2129 | function uu(n, t) { 2130 | var r; 2131 | if (typeof t != 'function') throw new ti('Expected a function'); 2132 | return ( 2133 | (n = Eu(n)), 2134 | function () { 2135 | return 0 < --n && (r = t.apply(this, arguments)), 1 >= n && (t = T), r; 2136 | } 2137 | ); 2138 | } 2139 | function iu(n, t, r) { 2140 | return (t = r ? T : t), (n = fe(n, 8, T, T, T, T, T, t)), (n.placeholder = iu.placeholder), n; 2141 | } 2142 | function ou(n, t, r) { 2143 | return (t = r ? T : t), (n = fe(n, 16, T, T, T, T, T, t)), (n.placeholder = ou.placeholder), n; 2144 | } 2145 | function fu(n, t, r) { 2146 | function e(t) { 2147 | var r = c, 2148 | e = a; 2149 | return (c = a = T), (_ = t), (s = n.apply(e, r)); 2150 | } 2151 | function u(n) { 2152 | var r = n - p; 2153 | return (n -= _), p === T || r >= t || 0 > r || (g && n >= l); 2154 | } 2155 | function i() { 2156 | var n = Go(); 2157 | if (u(n)) return o(n); 2158 | var r, 2159 | e = bo; 2160 | (r = n - _), (n = t - (n - p)), (r = g ? Ci(n, l - r) : n), (h = e(i, r)); 2161 | } 2162 | function o(n) { 2163 | return (h = T), d && c ? e(n) : ((c = a = T), s); 2164 | } 2165 | function f() { 2166 | var n = Go(), 2167 | r = u(n); 2168 | if (((c = arguments), (a = this), (p = n), r)) { 2169 | if (h === T) return (_ = n = p), (h = bo(i, t)), v ? e(n) : s; 2170 | if (g) return lo(h), (h = bo(i, t)), e(p); 2171 | } 2172 | return h === T && (h = bo(i, t)), s; 2173 | } 2174 | var c, 2175 | a, 2176 | l, 2177 | s, 2178 | h, 2179 | p, 2180 | _ = 0, 2181 | v = false, 2182 | g = false, 2183 | d = true; 2184 | if (typeof n != 'function') throw new ti('Expected a function'); 2185 | return ( 2186 | (t = Su(t) || 0), 2187 | du(r) && 2188 | ((v = !!r.leading), 2189 | (l = (g = 'maxWait' in r) ? Ui(Su(r.maxWait) || 0, t) : l), 2190 | (d = 'trailing' in r ? !!r.trailing : d)), 2191 | (f.cancel = function () { 2192 | h !== T && lo(h), (_ = 0), (c = p = a = h = T); 2193 | }), 2194 | (f.flush = function () { 2195 | return h === T ? s : o(Go()); 2196 | }), 2197 | f 2198 | ); 2199 | } 2200 | function cu(n, t) { 2201 | function r() { 2202 | var e = arguments, 2203 | u = t ? t.apply(this, e) : e[0], 2204 | i = r.cache; 2205 | return i.has(u) ? i.get(u) : ((e = n.apply(this, e)), (r.cache = i.set(u, e) || i), e); 2206 | } 2207 | if (typeof n != 'function' || (null != t && typeof t != 'function')) throw new ti('Expected a function'); 2208 | return (r.cache = new (cu.Cache || Fn)()), r; 2209 | } 2210 | function au(n) { 2211 | if (typeof n != 'function') throw new ti('Expected a function'); 2212 | return function () { 2213 | var t = arguments; 2214 | switch (t.length) { 2215 | case 0: 2216 | return !n.call(this); 2217 | case 1: 2218 | return !n.call(this, t[0]); 2219 | case 2: 2220 | return !n.call(this, t[0], t[1]); 2221 | case 3: 2222 | return !n.call(this, t[0], t[1], t[2]); 2223 | } 2224 | return !n.apply(this, t); 2225 | }; 2226 | } 2227 | function lu(n, t) { 2228 | return n === t || (n !== n && t !== t); 2229 | } 2230 | function su(n) { 2231 | return null != n && gu(n.length) && !_u(n); 2232 | } 2233 | function hu(n) { 2234 | return yu(n) && su(n); 2235 | } 2236 | function pu(n) { 2237 | if (!yu(n)) return false; 2238 | var t = Ot(n); 2239 | return ( 2240 | '[object Error]' == t || 2241 | '[object DOMException]' == t || 2242 | (typeof n.message == 'string' && typeof n.name == 'string' && !xu(n)) 2243 | ); 2244 | } 2245 | function _u(n) { 2246 | return ( 2247 | !!du(n) && 2248 | ((n = Ot(n)), 2249 | '[object Function]' == n || 2250 | '[object GeneratorFunction]' == n || 2251 | '[object AsyncFunction]' == n || 2252 | '[object Proxy]' == n) 2253 | ); 2254 | } 2255 | function vu(n) { 2256 | return typeof n == 'number' && n == Eu(n); 2257 | } 2258 | function gu(n) { 2259 | return typeof n == 'number' && -1 < n && 0 == n % 1 && 9007199254740991 >= n; 2260 | } 2261 | function du(n) { 2262 | var t = typeof n; 2263 | return null != n && ('object' == t || 'function' == t); 2264 | } 2265 | function yu(n) { 2266 | return null != n && typeof n == 'object'; 2267 | } 2268 | function bu(n) { 2269 | return typeof n == 'number' || (yu(n) && '[object Number]' == Ot(n)); 2270 | } 2271 | function xu(n) { 2272 | return ( 2273 | !(!yu(n) || '[object Object]' != Ot(n)) && 2274 | ((n = di(n)), 2275 | null === n || 2276 | ((n = oi.call(n, 'constructor') && n.constructor), 2277 | typeof n == 'function' && n instanceof n && ii.call(n) == li)) 2278 | ); 2279 | } 2280 | function ju(n) { 2281 | return typeof n == 'string' || (!ff(n) && yu(n) && '[object String]' == Ot(n)); 2282 | } 2283 | function wu(n) { 2284 | return typeof n == 'symbol' || (yu(n) && '[object Symbol]' == Ot(n)); 2285 | } 2286 | function mu(n) { 2287 | if (!n) return []; 2288 | if (su(n)) return ju(n) ? M(n) : Ur(n); 2289 | if (wi && n[wi]) { 2290 | n = n[wi](); 2291 | for (var t, r = []; !(t = n.next()).done; ) r.push(t.value); 2292 | return r; 2293 | } 2294 | return (t = vo(n)), ('[object Map]' == t ? W : '[object Set]' == t ? U : Uu)(n); 2295 | } 2296 | function Au(n) { 2297 | return n 2298 | ? ((n = Su(n)), n === $ || n === -$ ? 1.7976931348623157e308 * (0 > n ? -1 : 1) : n === n ? n : 0) 2299 | : 0 === n 2300 | ? n 2301 | : 0; 2302 | } 2303 | function Eu(n) { 2304 | n = Au(n); 2305 | var t = n % 1; 2306 | return n === n ? (t ? n - t : n) : 0; 2307 | } 2308 | function ku(n) { 2309 | return n ? pt(Eu(n), 0, 4294967295) : 0; 2310 | } 2311 | function Su(n) { 2312 | if (typeof n == 'number') return n; 2313 | if (wu(n)) return F; 2314 | if ( 2315 | (du(n) && ((n = typeof n.valueOf == 'function' ? n.valueOf() : n), (n = du(n) ? n + '' : n)), 2316 | typeof n != 'string') 2317 | ) 2318 | return 0 === n ? n : +n; 2319 | n = n.replace(un, ''); 2320 | var t = gn.test(n); 2321 | return t || yn.test(n) ? Dn(n.slice(2), t ? 2 : 8) : vn.test(n) ? F : +n; 2322 | } 2323 | function Ou(n) { 2324 | return Cr(n, Bu(n)); 2325 | } 2326 | function Iu(n) { 2327 | return null == n ? '' : yr(n); 2328 | } 2329 | function Ru(n, t, r) { 2330 | return (n = null == n ? T : kt(n, t)), n === T ? r : n; 2331 | } 2332 | function zu(n, t) { 2333 | return null != n && we(n, t, zt); 2334 | } 2335 | function Wu(n) { 2336 | return su(n) ? qn(n) : Vt(n); 2337 | } 2338 | function Bu(n) { 2339 | if (su(n)) n = qn(n, true); 2340 | else if (du(n)) { 2341 | var t, 2342 | r = ze(n), 2343 | e = []; 2344 | for (t in n) ('constructor' != t || (!r && oi.call(n, t))) && e.push(t); 2345 | n = e; 2346 | } else { 2347 | if (((t = []), null != n)) for (r in Qu(n)) t.push(r); 2348 | n = t; 2349 | } 2350 | return n; 2351 | } 2352 | function Lu(n, t) { 2353 | if (null == n) return {}; 2354 | var r = c(ve(n), function (n) { 2355 | return [n]; 2356 | }); 2357 | return ( 2358 | (t = ye(t)), 2359 | tr(n, r, function (n, r) { 2360 | return t(n, r[0]); 2361 | }) 2362 | ); 2363 | } 2364 | function Uu(n) { 2365 | return null == n ? [] : S(n, Wu(n)); 2366 | } 2367 | function Cu(n) { 2368 | return $f(Iu(n).toLowerCase()); 2369 | } 2370 | function Du(n) { 2371 | return (n = Iu(n)) && n.replace(xn, Xn).replace(Sn, ''); 2372 | } 2373 | function Mu(n, t, r) { 2374 | return ( 2375 | (n = Iu(n)), 2376 | (t = r ? T : t), 2377 | t === T ? (zn.test(n) ? n.match(In) || [] : n.match(sn) || []) : n.match(t) || [] 2378 | ); 2379 | } 2380 | function Tu(n) { 2381 | return function () { 2382 | return n; 2383 | }; 2384 | } 2385 | function $u(n) { 2386 | return n; 2387 | } 2388 | function Fu(n) { 2389 | return qt(typeof n == 'function' ? n : _t(n, 1)); 2390 | } 2391 | function Nu(n, t, e) { 2392 | var u = Wu(t), 2393 | i = Et(t, u); 2394 | null != e || (du(t) && (i.length || !u.length)) || ((e = t), (t = n), (n = this), (i = Et(t, Wu(t)))); 2395 | var o = !(du(e) && 'chain' in e && !e.chain), 2396 | f = _u(n); 2397 | return ( 2398 | r(i, function (r) { 2399 | var e = t[r]; 2400 | (n[r] = e), 2401 | f && 2402 | (n.prototype[r] = function () { 2403 | var t = this.__chain__; 2404 | if (o || t) { 2405 | var r = n(this.__wrapped__); 2406 | return ( 2407 | (r.__actions__ = Ur(this.__actions__)).push({ func: e, args: arguments, thisArg: n }), 2408 | (r.__chain__ = t), 2409 | r 2410 | ); 2411 | } 2412 | return e.apply(n, a([this.value()], arguments)); 2413 | }); 2414 | }), 2415 | n 2416 | ); 2417 | } 2418 | function Pu() {} 2419 | function Zu(n) { 2420 | return Ie(n) ? b(Me(n)) : rr(n); 2421 | } 2422 | function qu() { 2423 | return []; 2424 | } 2425 | function Vu() { 2426 | return false; 2427 | } 2428 | mn = null == mn ? $n : rt.defaults($n.Object(), mn, rt.pick($n, Wn)); 2429 | var Ku = mn.Array, 2430 | Gu = mn.Date, 2431 | Hu = mn.Error, 2432 | Ju = mn.Function, 2433 | Yu = mn.Math, 2434 | Qu = mn.Object, 2435 | Xu = mn.RegExp, 2436 | ni = mn.String, 2437 | ti = mn.TypeError, 2438 | ri = Ku.prototype, 2439 | ei = Qu.prototype, 2440 | ui = mn['__core-js_shared__'], 2441 | ii = Ju.prototype.toString, 2442 | oi = ei.hasOwnProperty, 2443 | fi = 0, 2444 | ci = (function () { 2445 | var n = /[^.]+$/.exec((ui && ui.keys && ui.keys.IE_PROTO) || ''); 2446 | return n ? 'Symbol(src)_1.' + n : ''; 2447 | })(), 2448 | ai = ei.toString, 2449 | li = ii.call(Qu), 2450 | si = $n._, 2451 | hi = Xu( 2452 | '^' + 2453 | ii 2454 | .call(oi) 2455 | .replace(rn, '\\$&') 2456 | .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + 2457 | '$' 2458 | ), 2459 | pi = Pn ? mn.Buffer : T, 2460 | _i = mn.Symbol, 2461 | vi = mn.Uint8Array, 2462 | gi = pi ? pi.g : T, 2463 | di = B(Qu.getPrototypeOf, Qu), 2464 | yi = Qu.create, 2465 | bi = ei.propertyIsEnumerable, 2466 | xi = ri.splice, 2467 | ji = _i ? _i.isConcatSpreadable : T, 2468 | wi = _i ? _i.iterator : T, 2469 | mi = _i ? _i.toStringTag : T, 2470 | Ai = (function () { 2471 | try { 2472 | var n = je(Qu, 'defineProperty'); 2473 | return n({}, '', {}), n; 2474 | } catch (n) {} 2475 | })(), 2476 | Ei = mn.clearTimeout !== $n.clearTimeout && mn.clearTimeout, 2477 | ki = Gu && Gu.now !== $n.Date.now && Gu.now, 2478 | Si = mn.setTimeout !== $n.setTimeout && mn.setTimeout, 2479 | Oi = Yu.ceil, 2480 | Ii = Yu.floor, 2481 | Ri = Qu.getOwnPropertySymbols, 2482 | zi = pi ? pi.isBuffer : T, 2483 | Wi = mn.isFinite, 2484 | Bi = ri.join, 2485 | Li = B(Qu.keys, Qu), 2486 | Ui = Yu.max, 2487 | Ci = Yu.min, 2488 | Di = Gu.now, 2489 | Mi = mn.parseInt, 2490 | Ti = Yu.random, 2491 | $i = ri.reverse, 2492 | Fi = je(mn, 'DataView'), 2493 | Ni = je(mn, 'Map'), 2494 | Pi = je(mn, 'Promise'), 2495 | Zi = je(mn, 'Set'), 2496 | qi = je(mn, 'WeakMap'), 2497 | Vi = je(Qu, 'create'), 2498 | Ki = qi && new qi(), 2499 | Gi = {}, 2500 | Hi = Te(Fi), 2501 | Ji = Te(Ni), 2502 | Yi = Te(Pi), 2503 | Qi = Te(Zi), 2504 | Xi = Te(qi), 2505 | no = _i ? _i.prototype : T, 2506 | to = no ? no.valueOf : T, 2507 | ro = no ? no.toString : T, 2508 | eo = (function () { 2509 | function n() {} 2510 | return function (t) { 2511 | return du(t) ? (yi ? yi(t) : ((n.prototype = t), (t = new n()), (n.prototype = T), t)) : {}; 2512 | }; 2513 | })(); 2514 | (An.templateSettings = { escape: J, evaluate: Y, interpolate: Q, variable: '', imports: { _: An } }), 2515 | (An.prototype = En.prototype), 2516 | (An.prototype.constructor = An), 2517 | (On.prototype = eo(En.prototype)), 2518 | (On.prototype.constructor = On), 2519 | (Un.prototype = eo(En.prototype)), 2520 | (Un.prototype.constructor = Un), 2521 | (Mn.prototype.clear = function () { 2522 | (this.__data__ = Vi ? Vi(null) : {}), (this.size = 0); 2523 | }), 2524 | (Mn.prototype.delete = function (n) { 2525 | return (n = this.has(n) && delete this.__data__[n]), (this.size -= n ? 1 : 0), n; 2526 | }), 2527 | (Mn.prototype.get = function (n) { 2528 | var t = this.__data__; 2529 | return Vi ? ((n = t[n]), '__lodash_hash_undefined__' === n ? T : n) : oi.call(t, n) ? t[n] : T; 2530 | }), 2531 | (Mn.prototype.has = function (n) { 2532 | var t = this.__data__; 2533 | return Vi ? t[n] !== T : oi.call(t, n); 2534 | }), 2535 | (Mn.prototype.set = function (n, t) { 2536 | var r = this.__data__; 2537 | return (this.size += this.has(n) ? 0 : 1), (r[n] = Vi && t === T ? '__lodash_hash_undefined__' : t), this; 2538 | }), 2539 | (Tn.prototype.clear = function () { 2540 | (this.__data__ = []), (this.size = 0); 2541 | }), 2542 | (Tn.prototype.delete = function (n) { 2543 | var t = this.__data__; 2544 | return (n = ft(t, n)), !(0 > n) && (n == t.length - 1 ? t.pop() : xi.call(t, n, 1), --this.size, true); 2545 | }), 2546 | (Tn.prototype.get = function (n) { 2547 | var t = this.__data__; 2548 | return (n = ft(t, n)), 0 > n ? T : t[n][1]; 2549 | }), 2550 | (Tn.prototype.has = function (n) { 2551 | return -1 < ft(this.__data__, n); 2552 | }), 2553 | (Tn.prototype.set = function (n, t) { 2554 | var r = this.__data__, 2555 | e = ft(r, n); 2556 | return 0 > e ? (++this.size, r.push([n, t])) : (r[e][1] = t), this; 2557 | }), 2558 | (Fn.prototype.clear = function () { 2559 | (this.size = 0), (this.__data__ = { hash: new Mn(), map: new (Ni || Tn)(), string: new Mn() }); 2560 | }), 2561 | (Fn.prototype.delete = function (n) { 2562 | return (n = be(this, n).delete(n)), (this.size -= n ? 1 : 0), n; 2563 | }), 2564 | (Fn.prototype.get = function (n) { 2565 | return be(this, n).get(n); 2566 | }), 2567 | (Fn.prototype.has = function (n) { 2568 | return be(this, n).has(n); 2569 | }), 2570 | (Fn.prototype.set = function (n, t) { 2571 | var r = be(this, n), 2572 | e = r.size; 2573 | return r.set(n, t), (this.size += r.size == e ? 0 : 1), this; 2574 | }), 2575 | (Nn.prototype.add = Nn.prototype.push = 2576 | function (n) { 2577 | return this.__data__.set(n, '__lodash_hash_undefined__'), this; 2578 | }), 2579 | (Nn.prototype.has = function (n) { 2580 | return this.__data__.has(n); 2581 | }), 2582 | (Zn.prototype.clear = function () { 2583 | (this.__data__ = new Tn()), (this.size = 0); 2584 | }), 2585 | (Zn.prototype.delete = function (n) { 2586 | var t = this.__data__; 2587 | return (n = t.delete(n)), (this.size = t.size), n; 2588 | }), 2589 | (Zn.prototype.get = function (n) { 2590 | return this.__data__.get(n); 2591 | }), 2592 | (Zn.prototype.has = function (n) { 2593 | return this.__data__.has(n); 2594 | }), 2595 | (Zn.prototype.set = function (n, t) { 2596 | var r = this.__data__; 2597 | if (r instanceof Tn) { 2598 | var e = r.__data__; 2599 | if (!Ni || 199 > e.length) return e.push([n, t]), (this.size = ++r.size), this; 2600 | r = this.__data__ = new Fn(e); 2601 | } 2602 | return r.set(n, t), (this.size = r.size), this; 2603 | }); 2604 | var uo = Fr(mt), 2605 | io = Fr(At, true), 2606 | oo = Nr(), 2607 | fo = Nr(true), 2608 | co = Ki 2609 | ? function (n, t) { 2610 | return Ki.set(n, t), n; 2611 | } 2612 | : $u, 2613 | ao = Ai 2614 | ? function (n, t) { 2615 | return Ai(n, 'toString', { configurable: true, enumerable: false, value: Tu(t), writable: true }); 2616 | } 2617 | : $u, 2618 | lo = 2619 | Ei || 2620 | function (n) { 2621 | return $n.clearTimeout(n); 2622 | }, 2623 | so = 2624 | Zi && 1 / U(new Zi([, -0]))[1] == $ 2625 | ? function (n) { 2626 | return new Zi(n); 2627 | } 2628 | : Pu, 2629 | ho = Ki 2630 | ? function (n) { 2631 | return Ki.get(n); 2632 | } 2633 | : Pu, 2634 | po = Ri 2635 | ? function (n) { 2636 | return null == n 2637 | ? [] 2638 | : ((n = Qu(n)), 2639 | i(Ri(n), function (t) { 2640 | return bi.call(n, t); 2641 | })); 2642 | } 2643 | : qu, 2644 | _o = Ri 2645 | ? function (n) { 2646 | for (var t = []; n; ) a(t, po(n)), (n = di(n)); 2647 | return t; 2648 | } 2649 | : qu, 2650 | vo = Ot; 2651 | ((Fi && '[object DataView]' != vo(new Fi(new ArrayBuffer(1)))) || 2652 | (Ni && '[object Map]' != vo(new Ni())) || 2653 | (Pi && '[object Promise]' != vo(Pi.resolve())) || 2654 | (Zi && '[object Set]' != vo(new Zi())) || 2655 | (qi && '[object WeakMap]' != vo(new qi()))) && 2656 | (vo = function (n) { 2657 | var t = Ot(n); 2658 | if ((n = (n = '[object Object]' == t ? n.constructor : T) ? Te(n) : '')) 2659 | switch (n) { 2660 | case Hi: 2661 | return '[object DataView]'; 2662 | case Ji: 2663 | return '[object Map]'; 2664 | case Yi: 2665 | return '[object Promise]'; 2666 | case Qi: 2667 | return '[object Set]'; 2668 | case Xi: 2669 | return '[object WeakMap]'; 2670 | } 2671 | return t; 2672 | }); 2673 | var go = ui ? _u : Vu, 2674 | yo = Ce(co), 2675 | bo = 2676 | Si || 2677 | function (n, t) { 2678 | return $n.setTimeout(n, t); 2679 | }, 2680 | xo = Ce(ao), 2681 | jo = (function (n) { 2682 | n = cu(n, function (n) { 2683 | return 500 === t.size && t.clear(), n; 2684 | }); 2685 | var t = n.cache; 2686 | return n; 2687 | })(function (n) { 2688 | var t = []; 2689 | return ( 2690 | 46 === n.charCodeAt(0) && t.push(''), 2691 | n.replace(tn, function (n, r, e, u) { 2692 | t.push(e ? u.replace(hn, '$1') : r || n); 2693 | }), 2694 | t 2695 | ); 2696 | }), 2697 | wo = fr(function (n, t) { 2698 | return hu(n) ? yt(n, wt(t, 1, hu, true)) : []; 2699 | }), 2700 | mo = fr(function (n, t) { 2701 | var r = Ve(t); 2702 | return hu(r) && (r = T), hu(n) ? yt(n, wt(t, 1, hu, true), ye(r, 2)) : []; 2703 | }), 2704 | Ao = fr(function (n, t) { 2705 | var r = Ve(t); 2706 | return hu(r) && (r = T), hu(n) ? yt(n, wt(t, 1, hu, true), T, r) : []; 2707 | }), 2708 | Eo = fr(function (n) { 2709 | var t = c(n, Er); 2710 | return t.length && t[0] === n[0] ? Wt(t) : []; 2711 | }), 2712 | ko = fr(function (n) { 2713 | var t = Ve(n), 2714 | r = c(n, Er); 2715 | return t === Ve(r) ? (t = T) : r.pop(), r.length && r[0] === n[0] ? Wt(r, ye(t, 2)) : []; 2716 | }), 2717 | So = fr(function (n) { 2718 | var t = Ve(n), 2719 | r = c(n, Er); 2720 | return (t = typeof t == 'function' ? t : T) && r.pop(), r.length && r[0] === n[0] ? Wt(r, T, t) : []; 2721 | }), 2722 | Oo = fr(Ke), 2723 | Io = pe(function (n, t) { 2724 | var r = null == n ? 0 : n.length, 2725 | e = ht(n, t); 2726 | return ( 2727 | ur( 2728 | n, 2729 | c(t, function (n) { 2730 | return Se(n, r) ? +n : n; 2731 | }).sort(Wr) 2732 | ), 2733 | e 2734 | ); 2735 | }), 2736 | Ro = fr(function (n) { 2737 | return br(wt(n, 1, hu, true)); 2738 | }), 2739 | zo = fr(function (n) { 2740 | var t = Ve(n); 2741 | return hu(t) && (t = T), br(wt(n, 1, hu, true), ye(t, 2)); 2742 | }), 2743 | Wo = fr(function (n) { 2744 | var t = Ve(n), 2745 | t = typeof t == 'function' ? t : T; 2746 | return br(wt(n, 1, hu, true), T, t); 2747 | }), 2748 | Bo = fr(function (n, t) { 2749 | return hu(n) ? yt(n, t) : []; 2750 | }), 2751 | Lo = fr(function (n) { 2752 | return mr(i(n, hu)); 2753 | }), 2754 | Uo = fr(function (n) { 2755 | var t = Ve(n); 2756 | return hu(t) && (t = T), mr(i(n, hu), ye(t, 2)); 2757 | }), 2758 | Co = fr(function (n) { 2759 | var t = Ve(n), 2760 | t = typeof t == 'function' ? t : T; 2761 | return mr(i(n, hu), T, t); 2762 | }), 2763 | Do = fr(He), 2764 | Mo = fr(function (n) { 2765 | var t = n.length, 2766 | t = 1 < t ? n[t - 1] : T, 2767 | t = typeof t == 'function' ? (n.pop(), t) : T; 2768 | return Je(n, t); 2769 | }), 2770 | To = pe(function (n) { 2771 | function t(t) { 2772 | return ht(t, n); 2773 | } 2774 | var r = n.length, 2775 | e = r ? n[0] : 0, 2776 | u = this.__wrapped__; 2777 | return !(1 < r || this.__actions__.length) && u instanceof Un && Se(e) 2778 | ? ((u = u.slice(e, +e + (r ? 1 : 0))), 2779 | u.__actions__.push({ func: Qe, args: [t], thisArg: T }), 2780 | new On(u, this.__chain__).thru(function (n) { 2781 | return r && !n.length && n.push(T), n; 2782 | })) 2783 | : this.thru(t); 2784 | }), 2785 | $o = Tr(function (n, t, r) { 2786 | oi.call(n, r) ? ++n[r] : st(n, r, 1); 2787 | }), 2788 | Fo = Gr(Ne), 2789 | No = Gr(Pe), 2790 | Po = Tr(function (n, t, r) { 2791 | oi.call(n, r) ? n[r].push(t) : st(n, r, [t]); 2792 | }), 2793 | Zo = fr(function (t, r, e) { 2794 | var u = -1, 2795 | i = typeof r == 'function', 2796 | o = su(t) ? Ku(t.length) : []; 2797 | return ( 2798 | uo(t, function (t) { 2799 | o[++u] = i ? n(r, t, e) : Lt(t, r, e); 2800 | }), 2801 | o 2802 | ); 2803 | }), 2804 | qo = Tr(function (n, t, r) { 2805 | st(n, r, t); 2806 | }), 2807 | Vo = Tr( 2808 | function (n, t, r) { 2809 | n[r ? 0 : 1].push(t); 2810 | }, 2811 | function () { 2812 | return [[], []]; 2813 | } 2814 | ), 2815 | Ko = fr(function (n, t) { 2816 | if (null == n) return []; 2817 | var r = t.length; 2818 | return ( 2819 | 1 < r && Oe(n, t[0], t[1]) ? (t = []) : 2 < r && Oe(t[0], t[1], t[2]) && (t = [t[0]]), Xt(n, wt(t, 1), []) 2820 | ); 2821 | }), 2822 | Go = 2823 | ki || 2824 | function () { 2825 | return $n.Date.now(); 2826 | }, 2827 | Ho = fr(function (n, t, r) { 2828 | var e = 1; 2829 | if (r.length) 2830 | var u = L(r, de(Ho)), 2831 | e = 32 | e; 2832 | return fe(n, e, t, r, u); 2833 | }), 2834 | Jo = fr(function (n, t, r) { 2835 | var e = 3; 2836 | if (r.length) 2837 | var u = L(r, de(Jo)), 2838 | e = 32 | e; 2839 | return fe(t, e, n, r, u); 2840 | }), 2841 | Yo = fr(function (n, t) { 2842 | return dt(n, 1, t); 2843 | }), 2844 | Qo = fr(function (n, t, r) { 2845 | return dt(n, Su(t) || 0, r); 2846 | }); 2847 | cu.Cache = Fn; 2848 | var Xo = fr(function (t, r) { 2849 | r = 1 == r.length && ff(r[0]) ? c(r[0], k(ye())) : c(wt(r, 1), k(ye())); 2850 | var e = r.length; 2851 | return fr(function (u) { 2852 | for (var i = -1, o = Ci(u.length, e); ++i < o; ) u[i] = r[i].call(this, u[i]); 2853 | return n(t, this, u); 2854 | }); 2855 | }), 2856 | nf = fr(function (n, t) { 2857 | return fe(n, 32, T, t, L(t, de(nf))); 2858 | }), 2859 | tf = fr(function (n, t) { 2860 | return fe(n, 64, T, t, L(t, de(tf))); 2861 | }), 2862 | rf = pe(function (n, t) { 2863 | return fe(n, 256, T, T, T, t); 2864 | }), 2865 | ef = ee(It), 2866 | uf = ee(function (n, t) { 2867 | return n >= t; 2868 | }), 2869 | of = Ut( 2870 | (function () { 2871 | return arguments; 2872 | })() 2873 | ) 2874 | ? Ut 2875 | : function (n) { 2876 | return yu(n) && oi.call(n, 'callee') && !bi.call(n, 'callee'); 2877 | }, 2878 | ff = Ku.isArray, 2879 | cf = Vn ? k(Vn) : Ct, 2880 | af = zi || Vu, 2881 | lf = Kn ? k(Kn) : Dt, 2882 | sf = Gn ? k(Gn) : Tt, 2883 | hf = Hn ? k(Hn) : Nt, 2884 | pf = Jn ? k(Jn) : Pt, 2885 | _f = Yn ? k(Yn) : Zt, 2886 | vf = ee(Kt), 2887 | gf = ee(function (n, t) { 2888 | return n <= t; 2889 | }), 2890 | df = $r(function (n, t) { 2891 | if (ze(t) || su(t)) Cr(t, Wu(t), n); 2892 | else for (var r in t) oi.call(t, r) && ot(n, r, t[r]); 2893 | }), 2894 | yf = $r(function (n, t) { 2895 | Cr(t, Bu(t), n); 2896 | }), 2897 | bf = $r(function (n, t, r, e) { 2898 | Cr(t, Bu(t), n, e); 2899 | }), 2900 | xf = $r(function (n, t, r, e) { 2901 | Cr(t, Wu(t), n, e); 2902 | }), 2903 | jf = pe(ht), 2904 | wf = fr(function (n, t) { 2905 | n = Qu(n); 2906 | var r = -1, 2907 | e = t.length, 2908 | u = 2 < e ? t[2] : T; 2909 | for (u && Oe(t[0], t[1], u) && (e = 1); ++r < e; ) 2910 | for (var u = t[r], i = Bu(u), o = -1, f = i.length; ++o < f; ) { 2911 | var c = i[o], 2912 | a = n[c]; 2913 | (a === T || (lu(a, ei[c]) && !oi.call(n, c))) && (n[c] = u[c]); 2914 | } 2915 | return n; 2916 | }), 2917 | mf = fr(function (t) { 2918 | return t.push(T, ae), n(Of, T, t); 2919 | }), 2920 | Af = Yr(function (n, t, r) { 2921 | null != t && typeof t.toString != 'function' && (t = ai.call(t)), (n[t] = r); 2922 | }, Tu($u)), 2923 | Ef = Yr(function (n, t, r) { 2924 | null != t && typeof t.toString != 'function' && (t = ai.call(t)), oi.call(n, t) ? n[t].push(r) : (n[t] = [r]); 2925 | }, ye), 2926 | kf = fr(Lt), 2927 | Sf = $r(function (n, t, r) { 2928 | Yt(n, t, r); 2929 | }), 2930 | Of = $r(function (n, t, r, e) { 2931 | Yt(n, t, r, e); 2932 | }), 2933 | If = pe(function (n, t) { 2934 | var r = {}; 2935 | if (null == n) return r; 2936 | var e = false; 2937 | (t = c(t, function (t) { 2938 | return (t = Sr(t, n)), e || (e = 1 < t.length), t; 2939 | })), 2940 | Cr(n, ve(n), r), 2941 | e && (r = _t(r, 7, le)); 2942 | for (var u = t.length; u--; ) xr(r, t[u]); 2943 | return r; 2944 | }), 2945 | Rf = pe(function (n, t) { 2946 | return null == n ? {} : nr(n, t); 2947 | }), 2948 | zf = oe(Wu), 2949 | Wf = oe(Bu), 2950 | Bf = qr(function (n, t, r) { 2951 | return (t = t.toLowerCase()), n + (r ? Cu(t) : t); 2952 | }), 2953 | Lf = qr(function (n, t, r) { 2954 | return n + (r ? '-' : '') + t.toLowerCase(); 2955 | }), 2956 | Uf = qr(function (n, t, r) { 2957 | return n + (r ? ' ' : '') + t.toLowerCase(); 2958 | }), 2959 | Cf = Zr('toLowerCase'), 2960 | Df = qr(function (n, t, r) { 2961 | return n + (r ? '_' : '') + t.toLowerCase(); 2962 | }), 2963 | Mf = qr(function (n, t, r) { 2964 | return n + (r ? ' ' : '') + $f(t); 2965 | }), 2966 | Tf = qr(function (n, t, r) { 2967 | return n + (r ? ' ' : '') + t.toUpperCase(); 2968 | }), 2969 | $f = Zr('toUpperCase'), 2970 | Ff = fr(function (t, r) { 2971 | try { 2972 | return n(t, T, r); 2973 | } catch (n) { 2974 | return pu(n) ? n : new Hu(n); 2975 | } 2976 | }), 2977 | Nf = pe(function (n, t) { 2978 | return ( 2979 | r(t, function (t) { 2980 | (t = Me(t)), st(n, t, Ho(n[t], n)); 2981 | }), 2982 | n 2983 | ); 2984 | }), 2985 | Pf = Hr(), 2986 | Zf = Hr(true), 2987 | qf = fr(function (n, t) { 2988 | return function (r) { 2989 | return Lt(r, n, t); 2990 | }; 2991 | }), 2992 | Vf = fr(function (n, t) { 2993 | return function (r) { 2994 | return Lt(n, r, t); 2995 | }; 2996 | }), 2997 | Kf = Xr(c), 2998 | Gf = Xr(u), 2999 | Hf = Xr(h), 3000 | Jf = re(), 3001 | Yf = re(true), 3002 | Qf = Qr(function (n, t) { 3003 | return n + t; 3004 | }, 0), 3005 | Xf = ie('ceil'), 3006 | nc = Qr(function (n, t) { 3007 | return n / t; 3008 | }, 1), 3009 | tc = ie('floor'), 3010 | rc = Qr(function (n, t) { 3011 | return n * t; 3012 | }, 1), 3013 | ec = ie('round'), 3014 | uc = Qr(function (n, t) { 3015 | return n - t; 3016 | }, 0); 3017 | return ( 3018 | (An.after = function (n, t) { 3019 | if (typeof t != 'function') throw new ti('Expected a function'); 3020 | return ( 3021 | (n = Eu(n)), 3022 | function () { 3023 | if (1 > --n) return t.apply(this, arguments); 3024 | } 3025 | ); 3026 | }), 3027 | (An.ary = eu), 3028 | (An.assign = df), 3029 | (An.assignIn = yf), 3030 | (An.assignInWith = bf), 3031 | (An.assignWith = xf), 3032 | (An.at = jf), 3033 | (An.before = uu), 3034 | (An.bind = Ho), 3035 | (An.bindAll = Nf), 3036 | (An.bindKey = Jo), 3037 | (An.castArray = function () { 3038 | if (!arguments.length) return []; 3039 | var n = arguments[0]; 3040 | return ff(n) ? n : [n]; 3041 | }), 3042 | (An.chain = Ye), 3043 | (An.chunk = function (n, t, r) { 3044 | if (((t = (r ? Oe(n, t, r) : t === T) ? 1 : Ui(Eu(t), 0)), (r = null == n ? 0 : n.length), !r || 1 > t)) 3045 | return []; 3046 | for (var e = 0, u = 0, i = Ku(Oi(r / t)); e < r; ) i[u++] = hr(n, e, (e += t)); 3047 | return i; 3048 | }), 3049 | (An.compact = function (n) { 3050 | for (var t = -1, r = null == n ? 0 : n.length, e = 0, u = []; ++t < r; ) { 3051 | var i = n[t]; 3052 | i && (u[e++] = i); 3053 | } 3054 | return u; 3055 | }), 3056 | (An.concat = function () { 3057 | var n = arguments.length; 3058 | if (!n) return []; 3059 | for (var t = Ku(n - 1), r = arguments[0]; n--; ) t[n - 1] = arguments[n]; 3060 | return a(ff(r) ? Ur(r) : [r], wt(t, 1)); 3061 | }), 3062 | (An.cond = function (t) { 3063 | var r = null == t ? 0 : t.length, 3064 | e = ye(); 3065 | return ( 3066 | (t = r 3067 | ? c(t, function (n) { 3068 | if ('function' != typeof n[1]) throw new ti('Expected a function'); 3069 | return [e(n[0]), n[1]]; 3070 | }) 3071 | : []), 3072 | fr(function (e) { 3073 | for (var u = -1; ++u < r; ) { 3074 | var i = t[u]; 3075 | if (n(i[0], this, e)) return n(i[1], this, e); 3076 | } 3077 | }) 3078 | ); 3079 | }), 3080 | (An.conforms = function (n) { 3081 | return vt(_t(n, 1)); 3082 | }), 3083 | (An.constant = Tu), 3084 | (An.countBy = $o), 3085 | (An.create = function (n, t) { 3086 | var r = eo(n); 3087 | return null == t ? r : at(r, t); 3088 | }), 3089 | (An.curry = iu), 3090 | (An.curryRight = ou), 3091 | (An.debounce = fu), 3092 | (An.defaults = wf), 3093 | (An.defaultsDeep = mf), 3094 | (An.defer = Yo), 3095 | (An.delay = Qo), 3096 | (An.difference = wo), 3097 | (An.differenceBy = mo), 3098 | (An.differenceWith = Ao), 3099 | (An.drop = function (n, t, r) { 3100 | var e = null == n ? 0 : n.length; 3101 | return e ? ((t = r || t === T ? 1 : Eu(t)), hr(n, 0 > t ? 0 : t, e)) : []; 3102 | }), 3103 | (An.dropRight = function (n, t, r) { 3104 | var e = null == n ? 0 : n.length; 3105 | return e ? ((t = r || t === T ? 1 : Eu(t)), (t = e - t), hr(n, 0, 0 > t ? 0 : t)) : []; 3106 | }), 3107 | (An.dropRightWhile = function (n, t) { 3108 | return n && n.length ? jr(n, ye(t, 3), true, true) : []; 3109 | }), 3110 | (An.dropWhile = function (n, t) { 3111 | return n && n.length ? jr(n, ye(t, 3), true) : []; 3112 | }), 3113 | (An.fill = function (n, t, r, e) { 3114 | var u = null == n ? 0 : n.length; 3115 | if (!u) return []; 3116 | for ( 3117 | r && typeof r != 'number' && Oe(n, t, r) && ((r = 0), (e = u)), 3118 | u = n.length, 3119 | r = Eu(r), 3120 | 0 > r && (r = -r > u ? 0 : u + r), 3121 | e = e === T || e > u ? u : Eu(e), 3122 | 0 > e && (e += u), 3123 | e = r > e ? 0 : ku(e); 3124 | r < e; 3125 | 3126 | ) 3127 | n[r++] = t; 3128 | return n; 3129 | }), 3130 | (An.filter = function (n, t) { 3131 | return (ff(n) ? i : jt)(n, ye(t, 3)); 3132 | }), 3133 | (An.flatMap = function (n, t) { 3134 | return wt(ru(n, t), 1); 3135 | }), 3136 | (An.flatMapDeep = function (n, t) { 3137 | return wt(ru(n, t), $); 3138 | }), 3139 | (An.flatMapDepth = function (n, t, r) { 3140 | return (r = r === T ? 1 : Eu(r)), wt(ru(n, t), r); 3141 | }), 3142 | (An.flatten = Ze), 3143 | (An.flattenDeep = function (n) { 3144 | return (null == n ? 0 : n.length) ? wt(n, $) : []; 3145 | }), 3146 | (An.flattenDepth = function (n, t) { 3147 | return null != n && n.length ? ((t = t === T ? 1 : Eu(t)), wt(n, t)) : []; 3148 | }), 3149 | (An.flip = function (n) { 3150 | return fe(n, 512); 3151 | }), 3152 | (An.flow = Pf), 3153 | (An.flowRight = Zf), 3154 | (An.fromPairs = function (n) { 3155 | for (var t = -1, r = null == n ? 0 : n.length, e = {}; ++t < r; ) { 3156 | var u = n[t]; 3157 | e[u[0]] = u[1]; 3158 | } 3159 | return e; 3160 | }), 3161 | (An.functions = function (n) { 3162 | return null == n ? [] : Et(n, Wu(n)); 3163 | }), 3164 | (An.functionsIn = function (n) { 3165 | return null == n ? [] : Et(n, Bu(n)); 3166 | }), 3167 | (An.groupBy = Po), 3168 | (An.initial = function (n) { 3169 | return (null == n ? 0 : n.length) ? hr(n, 0, -1) : []; 3170 | }), 3171 | (An.intersection = Eo), 3172 | (An.intersectionBy = ko), 3173 | (An.intersectionWith = So), 3174 | (An.invert = Af), 3175 | (An.invertBy = Ef), 3176 | (An.invokeMap = Zo), 3177 | (An.iteratee = Fu), 3178 | (An.keyBy = qo), 3179 | (An.keys = Wu), 3180 | (An.keysIn = Bu), 3181 | (An.map = ru), 3182 | (An.mapKeys = function (n, t) { 3183 | var r = {}; 3184 | return ( 3185 | (t = ye(t, 3)), 3186 | mt(n, function (n, e, u) { 3187 | st(r, t(n, e, u), n); 3188 | }), 3189 | r 3190 | ); 3191 | }), 3192 | (An.mapValues = function (n, t) { 3193 | var r = {}; 3194 | return ( 3195 | (t = ye(t, 3)), 3196 | mt(n, function (n, e, u) { 3197 | st(r, e, t(n, e, u)); 3198 | }), 3199 | r 3200 | ); 3201 | }), 3202 | (An.matches = function (n) { 3203 | return Ht(_t(n, 1)); 3204 | }), 3205 | (An.matchesProperty = function (n, t) { 3206 | return Jt(n, _t(t, 1)); 3207 | }), 3208 | (An.memoize = cu), 3209 | (An.merge = Sf), 3210 | (An.mergeWith = Of), 3211 | (An.method = qf), 3212 | (An.methodOf = Vf), 3213 | (An.mixin = Nu), 3214 | (An.negate = au), 3215 | (An.nthArg = function (n) { 3216 | return ( 3217 | (n = Eu(n)), 3218 | fr(function (t) { 3219 | return Qt(t, n); 3220 | }) 3221 | ); 3222 | }), 3223 | (An.omit = If), 3224 | (An.omitBy = function (n, t) { 3225 | return Lu(n, au(ye(t))); 3226 | }), 3227 | (An.once = function (n) { 3228 | return uu(2, n); 3229 | }), 3230 | (An.orderBy = function (n, t, r, e) { 3231 | return null == n 3232 | ? [] 3233 | : (ff(t) || (t = null == t ? [] : [t]), (r = e ? T : r), ff(r) || (r = null == r ? [] : [r]), Xt(n, t, r)); 3234 | }), 3235 | (An.over = Kf), 3236 | (An.overArgs = Xo), 3237 | (An.overEvery = Gf), 3238 | (An.overSome = Hf), 3239 | (An.partial = nf), 3240 | (An.partialRight = tf), 3241 | (An.partition = Vo), 3242 | (An.pick = Rf), 3243 | (An.pickBy = Lu), 3244 | (An.property = Zu), 3245 | (An.propertyOf = function (n) { 3246 | return function (t) { 3247 | return null == n ? T : kt(n, t); 3248 | }; 3249 | }), 3250 | (An.pull = Oo), 3251 | (An.pullAll = Ke), 3252 | (An.pullAllBy = function (n, t, r) { 3253 | return n && n.length && t && t.length ? er(n, t, ye(r, 2)) : n; 3254 | }), 3255 | (An.pullAllWith = function (n, t, r) { 3256 | return n && n.length && t && t.length ? er(n, t, T, r) : n; 3257 | }), 3258 | (An.pullAt = Io), 3259 | (An.range = Jf), 3260 | (An.rangeRight = Yf), 3261 | (An.rearg = rf), 3262 | (An.reject = function (n, t) { 3263 | return (ff(n) ? i : jt)(n, au(ye(t, 3))); 3264 | }), 3265 | (An.remove = function (n, t) { 3266 | var r = []; 3267 | if (!n || !n.length) return r; 3268 | var e = -1, 3269 | u = [], 3270 | i = n.length; 3271 | for (t = ye(t, 3); ++e < i; ) { 3272 | var o = n[e]; 3273 | t(o, e, n) && (r.push(o), u.push(e)); 3274 | } 3275 | return ur(n, u), r; 3276 | }), 3277 | (An.rest = function (n, t) { 3278 | if (typeof n != 'function') throw new ti('Expected a function'); 3279 | return (t = t === T ? t : Eu(t)), fr(n, t); 3280 | }), 3281 | (An.reverse = Ge), 3282 | (An.sampleSize = function (n, t, r) { 3283 | return (t = (r ? Oe(n, t, r) : t === T) ? 1 : Eu(t)), (ff(n) ? et : ar)(n, t); 3284 | }), 3285 | (An.set = function (n, t, r) { 3286 | return null == n ? n : lr(n, t, r); 3287 | }), 3288 | (An.setWith = function (n, t, r, e) { 3289 | return (e = typeof e == 'function' ? e : T), null == n ? n : lr(n, t, r, e); 3290 | }), 3291 | (An.shuffle = function (n) { 3292 | return (ff(n) ? ut : sr)(n); 3293 | }), 3294 | (An.slice = function (n, t, r) { 3295 | var e = null == n ? 0 : n.length; 3296 | return e 3297 | ? (r && typeof r != 'number' && Oe(n, t, r) 3298 | ? ((t = 0), (r = e)) 3299 | : ((t = null == t ? 0 : Eu(t)), (r = r === T ? e : Eu(r))), 3300 | hr(n, t, r)) 3301 | : []; 3302 | }), 3303 | (An.sortBy = Ko), 3304 | (An.sortedUniq = function (n) { 3305 | return n && n.length ? gr(n) : []; 3306 | }), 3307 | (An.sortedUniqBy = function (n, t) { 3308 | return n && n.length ? gr(n, ye(t, 2)) : []; 3309 | }), 3310 | (An.split = function (n, t, r) { 3311 | return ( 3312 | r && typeof r != 'number' && Oe(n, t, r) && (t = r = T), 3313 | (r = r === T ? 4294967295 : r >>> 0), 3314 | r 3315 | ? (n = Iu(n)) && (typeof t == 'string' || (null != t && !hf(t))) && ((t = yr(t)), !t && Rn.test(n)) 3316 | ? Or(M(n), 0, r) 3317 | : n.split(t, r) 3318 | : [] 3319 | ); 3320 | }), 3321 | (An.spread = function (t, r) { 3322 | if (typeof t != 'function') throw new ti('Expected a function'); 3323 | return ( 3324 | (r = null == r ? 0 : Ui(Eu(r), 0)), 3325 | fr(function (e) { 3326 | var u = e[r]; 3327 | return (e = Or(e, 0, r)), u && a(e, u), n(t, this, e); 3328 | }) 3329 | ); 3330 | }), 3331 | (An.tail = function (n) { 3332 | var t = null == n ? 0 : n.length; 3333 | return t ? hr(n, 1, t) : []; 3334 | }), 3335 | (An.take = function (n, t, r) { 3336 | return n && n.length ? ((t = r || t === T ? 1 : Eu(t)), hr(n, 0, 0 > t ? 0 : t)) : []; 3337 | }), 3338 | (An.takeRight = function (n, t, r) { 3339 | var e = null == n ? 0 : n.length; 3340 | return e ? ((t = r || t === T ? 1 : Eu(t)), (t = e - t), hr(n, 0 > t ? 0 : t, e)) : []; 3341 | }), 3342 | (An.takeRightWhile = function (n, t) { 3343 | return n && n.length ? jr(n, ye(t, 3), false, true) : []; 3344 | }), 3345 | (An.takeWhile = function (n, t) { 3346 | return n && n.length ? jr(n, ye(t, 3)) : []; 3347 | }), 3348 | (An.tap = function (n, t) { 3349 | return t(n), n; 3350 | }), 3351 | (An.throttle = function (n, t, r) { 3352 | var e = true, 3353 | u = true; 3354 | if (typeof n != 'function') throw new ti('Expected a function'); 3355 | return ( 3356 | du(r) && ((e = 'leading' in r ? !!r.leading : e), (u = 'trailing' in r ? !!r.trailing : u)), 3357 | fu(n, t, { leading: e, maxWait: t, trailing: u }) 3358 | ); 3359 | }), 3360 | (An.thru = Qe), 3361 | (An.toArray = mu), 3362 | (An.toPairs = zf), 3363 | (An.toPairsIn = Wf), 3364 | (An.toPath = function (n) { 3365 | return ff(n) ? c(n, Me) : wu(n) ? [n] : Ur(jo(Iu(n))); 3366 | }), 3367 | (An.toPlainObject = Ou), 3368 | (An.transform = function (n, t, e) { 3369 | var u = ff(n), 3370 | i = u || af(n) || _f(n); 3371 | if (((t = ye(t, 4)), null == e)) { 3372 | var o = n && n.constructor; 3373 | e = i ? (u ? new o() : []) : du(n) && _u(o) ? eo(di(n)) : {}; 3374 | } 3375 | return ( 3376 | (i ? r : mt)(n, function (n, r, u) { 3377 | return t(e, n, r, u); 3378 | }), 3379 | e 3380 | ); 3381 | }), 3382 | (An.unary = function (n) { 3383 | return eu(n, 1); 3384 | }), 3385 | (An.union = Ro), 3386 | (An.unionBy = zo), 3387 | (An.unionWith = Wo), 3388 | (An.uniq = function (n) { 3389 | return n && n.length ? br(n) : []; 3390 | }), 3391 | (An.uniqBy = function (n, t) { 3392 | return n && n.length ? br(n, ye(t, 2)) : []; 3393 | }), 3394 | (An.uniqWith = function (n, t) { 3395 | return (t = typeof t == 'function' ? t : T), n && n.length ? br(n, T, t) : []; 3396 | }), 3397 | (An.unset = function (n, t) { 3398 | return null == n || xr(n, t); 3399 | }), 3400 | (An.unzip = He), 3401 | (An.unzipWith = Je), 3402 | (An.update = function (n, t, r) { 3403 | return null == n ? n : lr(n, t, kr(r)(kt(n, t)), void 0); 3404 | }), 3405 | (An.updateWith = function (n, t, r, e) { 3406 | return (e = typeof e == 'function' ? e : T), null != n && (n = lr(n, t, kr(r)(kt(n, t)), e)), n; 3407 | }), 3408 | (An.values = Uu), 3409 | (An.valuesIn = function (n) { 3410 | return null == n ? [] : S(n, Bu(n)); 3411 | }), 3412 | (An.without = Bo), 3413 | (An.words = Mu), 3414 | (An.wrap = function (n, t) { 3415 | return nf(kr(t), n); 3416 | }), 3417 | (An.xor = Lo), 3418 | (An.xorBy = Uo), 3419 | (An.xorWith = Co), 3420 | (An.zip = Do), 3421 | (An.zipObject = function (n, t) { 3422 | return Ar(n || [], t || [], ot); 3423 | }), 3424 | (An.zipObjectDeep = function (n, t) { 3425 | return Ar(n || [], t || [], lr); 3426 | }), 3427 | (An.zipWith = Mo), 3428 | (An.entries = zf), 3429 | (An.entriesIn = Wf), 3430 | (An.extend = yf), 3431 | (An.extendWith = bf), 3432 | Nu(An, An), 3433 | (An.add = Qf), 3434 | (An.attempt = Ff), 3435 | (An.camelCase = Bf), 3436 | (An.capitalize = Cu), 3437 | (An.ceil = Xf), 3438 | (An.clamp = function (n, t, r) { 3439 | return ( 3440 | r === T && ((r = t), (t = T)), 3441 | r !== T && ((r = Su(r)), (r = r === r ? r : 0)), 3442 | t !== T && ((t = Su(t)), (t = t === t ? t : 0)), 3443 | pt(Su(n), t, r) 3444 | ); 3445 | }), 3446 | (An.clone = function (n) { 3447 | return _t(n, 4); 3448 | }), 3449 | (An.cloneDeep = function (n) { 3450 | return _t(n, 5); 3451 | }), 3452 | (An.cloneDeepWith = function (n, t) { 3453 | return (t = typeof t == 'function' ? t : T), _t(n, 5, t); 3454 | }), 3455 | (An.cloneWith = function (n, t) { 3456 | return (t = typeof t == 'function' ? t : T), _t(n, 4, t); 3457 | }), 3458 | (An.conformsTo = function (n, t) { 3459 | return null == t || gt(n, t, Wu(t)); 3460 | }), 3461 | (An.deburr = Du), 3462 | (An.defaultTo = function (n, t) { 3463 | return null == n || n !== n ? t : n; 3464 | }), 3465 | (An.divide = nc), 3466 | (An.endsWith = function (n, t, r) { 3467 | (n = Iu(n)), (t = yr(t)); 3468 | var e = n.length, 3469 | e = (r = r === T ? e : pt(Eu(r), 0, e)); 3470 | return (r -= t.length), 0 <= r && n.slice(r, e) == t; 3471 | }), 3472 | (An.eq = lu), 3473 | (An.escape = function (n) { 3474 | return (n = Iu(n)) && H.test(n) ? n.replace(K, nt) : n; 3475 | }), 3476 | (An.escapeRegExp = function (n) { 3477 | return (n = Iu(n)) && en.test(n) ? n.replace(rn, '\\$&') : n; 3478 | }), 3479 | (An.every = function (n, t, r) { 3480 | var e = ff(n) ? u : bt; 3481 | return r && Oe(n, t, r) && (t = T), e(n, ye(t, 3)); 3482 | }), 3483 | (An.find = Fo), 3484 | (An.findIndex = Ne), 3485 | (An.findKey = function (n, t) { 3486 | return p(n, ye(t, 3), mt); 3487 | }), 3488 | (An.findLast = No), 3489 | (An.findLastIndex = Pe), 3490 | (An.findLastKey = function (n, t) { 3491 | return p(n, ye(t, 3), At); 3492 | }), 3493 | (An.floor = tc), 3494 | (An.forEach = nu), 3495 | (An.forEachRight = tu), 3496 | (An.forIn = function (n, t) { 3497 | return null == n ? n : oo(n, ye(t, 3), Bu); 3498 | }), 3499 | (An.forInRight = function (n, t) { 3500 | return null == n ? n : fo(n, ye(t, 3), Bu); 3501 | }), 3502 | (An.forOwn = function (n, t) { 3503 | return n && mt(n, ye(t, 3)); 3504 | }), 3505 | (An.forOwnRight = function (n, t) { 3506 | return n && At(n, ye(t, 3)); 3507 | }), 3508 | (An.get = Ru), 3509 | (An.gt = ef), 3510 | (An.gte = uf), 3511 | (An.has = function (n, t) { 3512 | return null != n && we(n, t, Rt); 3513 | }), 3514 | (An.hasIn = zu), 3515 | (An.head = qe), 3516 | (An.identity = $u), 3517 | (An.includes = function (n, t, r, e) { 3518 | return ( 3519 | (n = su(n) ? n : Uu(n)), 3520 | (r = r && !e ? Eu(r) : 0), 3521 | (e = n.length), 3522 | 0 > r && (r = Ui(e + r, 0)), 3523 | ju(n) ? r <= e && -1 < n.indexOf(t, r) : !!e && -1 < v(n, t, r) 3524 | ); 3525 | }), 3526 | (An.indexOf = function (n, t, r) { 3527 | var e = null == n ? 0 : n.length; 3528 | return e ? ((r = null == r ? 0 : Eu(r)), 0 > r && (r = Ui(e + r, 0)), v(n, t, r)) : -1; 3529 | }), 3530 | (An.inRange = function (n, t, r) { 3531 | return (t = Au(t)), r === T ? ((r = t), (t = 0)) : (r = Au(r)), (n = Su(n)), n >= Ci(t, r) && n < Ui(t, r); 3532 | }), 3533 | (An.invoke = kf), 3534 | (An.isArguments = of), 3535 | (An.isArray = ff), 3536 | (An.isArrayBuffer = cf), 3537 | (An.isArrayLike = su), 3538 | (An.isArrayLikeObject = hu), 3539 | (An.isBoolean = function (n) { 3540 | return true === n || false === n || (yu(n) && '[object Boolean]' == Ot(n)); 3541 | }), 3542 | (An.isBuffer = af), 3543 | (An.isDate = lf), 3544 | (An.isElement = function (n) { 3545 | return yu(n) && 1 === n.nodeType && !xu(n); 3546 | }), 3547 | (An.isEmpty = function (n) { 3548 | if (null == n) return true; 3549 | if (su(n) && (ff(n) || typeof n == 'string' || typeof n.splice == 'function' || af(n) || _f(n) || of(n))) 3550 | return !n.length; 3551 | var t = vo(n); 3552 | if ('[object Map]' == t || '[object Set]' == t) return !n.size; 3553 | if (ze(n)) return !Vt(n).length; 3554 | for (var r in n) if (oi.call(n, r)) return false; 3555 | return true; 3556 | }), 3557 | (An.isEqual = function (n, t) { 3558 | return Mt(n, t); 3559 | }), 3560 | (An.isEqualWith = function (n, t, r) { 3561 | var e = (r = typeof r == 'function' ? r : T) ? r(n, t) : T; 3562 | return e === T ? Mt(n, t, T, r) : !!e; 3563 | }), 3564 | (An.isError = pu), 3565 | (An.isFinite = function (n) { 3566 | return typeof n == 'number' && Wi(n); 3567 | }), 3568 | (An.isFunction = _u), 3569 | (An.isInteger = vu), 3570 | (An.isLength = gu), 3571 | (An.isMap = sf), 3572 | (An.isMatch = function (n, t) { 3573 | return n === t || $t(n, t, xe(t)); 3574 | }), 3575 | (An.isMatchWith = function (n, t, r) { 3576 | return (r = typeof r == 'function' ? r : T), $t(n, t, xe(t), r); 3577 | }), 3578 | (An.isNaN = function (n) { 3579 | return bu(n) && n != +n; 3580 | }), 3581 | (An.isNative = function (n) { 3582 | if (go(n)) throw new Hu('Unsupported core-js use. Try https://npms.io/search?q=ponyfill.'); 3583 | return Ft(n); 3584 | }), 3585 | (An.isNil = function (n) { 3586 | return null == n; 3587 | }), 3588 | (An.isNull = function (n) { 3589 | return null === n; 3590 | }), 3591 | (An.isNumber = bu), 3592 | (An.isObject = du), 3593 | (An.isObjectLike = yu), 3594 | (An.isPlainObject = xu), 3595 | (An.isRegExp = hf), 3596 | (An.isSafeInteger = function (n) { 3597 | return vu(n) && -9007199254740991 <= n && 9007199254740991 >= n; 3598 | }), 3599 | (An.isSet = pf), 3600 | (An.isString = ju), 3601 | (An.isSymbol = wu), 3602 | (An.isTypedArray = _f), 3603 | (An.isUndefined = function (n) { 3604 | return n === T; 3605 | }), 3606 | (An.isWeakMap = function (n) { 3607 | return yu(n) && '[object WeakMap]' == vo(n); 3608 | }), 3609 | (An.isWeakSet = function (n) { 3610 | return yu(n) && '[object WeakSet]' == Ot(n); 3611 | }), 3612 | (An.join = function (n, t) { 3613 | return null == n ? '' : Bi.call(n, t); 3614 | }), 3615 | (An.kebabCase = Lf), 3616 | (An.last = Ve), 3617 | (An.lastIndexOf = function (n, t, r) { 3618 | var e = null == n ? 0 : n.length; 3619 | if (!e) return -1; 3620 | var u = e; 3621 | if ((r !== T && ((u = Eu(r)), (u = 0 > u ? Ui(e + u, 0) : Ci(u, e - 1))), t === t)) { 3622 | for (r = u + 1; r-- && n[r] !== t; ); 3623 | n = r; 3624 | } else n = _(n, d, u, true); 3625 | return n; 3626 | }), 3627 | (An.lowerCase = Uf), 3628 | (An.lowerFirst = Cf), 3629 | (An.lt = vf), 3630 | (An.lte = gf), 3631 | (An.max = function (n) { 3632 | return n && n.length ? xt(n, $u, It) : T; 3633 | }), 3634 | (An.maxBy = function (n, t) { 3635 | return n && n.length ? xt(n, ye(t, 2), It) : T; 3636 | }), 3637 | (An.mean = function (n) { 3638 | return y(n, $u); 3639 | }), 3640 | (An.meanBy = function (n, t) { 3641 | return y(n, ye(t, 2)); 3642 | }), 3643 | (An.min = function (n) { 3644 | return n && n.length ? xt(n, $u, Kt) : T; 3645 | }), 3646 | (An.minBy = function (n, t) { 3647 | return n && n.length ? xt(n, ye(t, 2), Kt) : T; 3648 | }), 3649 | (An.stubArray = qu), 3650 | (An.stubFalse = Vu), 3651 | (An.stubObject = function () { 3652 | return {}; 3653 | }), 3654 | (An.stubString = function () { 3655 | return ''; 3656 | }), 3657 | (An.stubTrue = function () { 3658 | return true; 3659 | }), 3660 | (An.multiply = rc), 3661 | (An.nth = function (n, t) { 3662 | return n && n.length ? Qt(n, Eu(t)) : T; 3663 | }), 3664 | (An.noConflict = function () { 3665 | return $n._ === this && ($n._ = si), this; 3666 | }), 3667 | (An.noop = Pu), 3668 | (An.now = Go), 3669 | (An.pad = function (n, t, r) { 3670 | n = Iu(n); 3671 | var e = (t = Eu(t)) ? D(n) : 0; 3672 | return !t || e >= t ? n : ((t = (t - e) / 2), ne(Ii(t), r) + n + ne(Oi(t), r)); 3673 | }), 3674 | (An.padEnd = function (n, t, r) { 3675 | n = Iu(n); 3676 | var e = (t = Eu(t)) ? D(n) : 0; 3677 | return t && e < t ? n + ne(t - e, r) : n; 3678 | }), 3679 | (An.padStart = function (n, t, r) { 3680 | n = Iu(n); 3681 | var e = (t = Eu(t)) ? D(n) : 0; 3682 | return t && e < t ? ne(t - e, r) + n : n; 3683 | }), 3684 | (An.parseInt = function (n, t, r) { 3685 | return r || null == t ? (t = 0) : t && (t = +t), Mi(Iu(n).replace(on, ''), t || 0); 3686 | }), 3687 | (An.random = function (n, t, r) { 3688 | if ( 3689 | (r && typeof r != 'boolean' && Oe(n, t, r) && (t = r = T), 3690 | r === T && (typeof t == 'boolean' ? ((r = t), (t = T)) : typeof n == 'boolean' && ((r = n), (n = T))), 3691 | n === T && t === T ? ((n = 0), (t = 1)) : ((n = Au(n)), t === T ? ((t = n), (n = 0)) : (t = Au(t))), 3692 | n > t) 3693 | ) { 3694 | var e = n; 3695 | (n = t), (t = e); 3696 | } 3697 | return r || n % 1 || t % 1 3698 | ? ((r = Ti()), Ci(n + r * (t - n + Cn('1e-' + ((r + '').length - 1))), t)) 3699 | : ir(n, t); 3700 | }), 3701 | (An.reduce = function (n, t, r) { 3702 | var e = ff(n) ? l : j, 3703 | u = 3 > arguments.length; 3704 | return e(n, ye(t, 4), r, u, uo); 3705 | }), 3706 | (An.reduceRight = function (n, t, r) { 3707 | var e = ff(n) ? s : j, 3708 | u = 3 > arguments.length; 3709 | return e(n, ye(t, 4), r, u, io); 3710 | }), 3711 | (An.repeat = function (n, t, r) { 3712 | return (t = (r ? Oe(n, t, r) : t === T) ? 1 : Eu(t)), or(Iu(n), t); 3713 | }), 3714 | (An.replace = function () { 3715 | var n = arguments, 3716 | t = Iu(n[0]); 3717 | return 3 > n.length ? t : t.replace(n[1], n[2]); 3718 | }), 3719 | (An.result = function (n, t, r) { 3720 | t = Sr(t, n); 3721 | var e = -1, 3722 | u = t.length; 3723 | for (u || ((u = 1), (n = T)); ++e < u; ) { 3724 | var i = null == n ? T : n[Me(t[e])]; 3725 | i === T && ((e = u), (i = r)), (n = _u(i) ? i.call(n) : i); 3726 | } 3727 | return n; 3728 | }), 3729 | (An.round = ec), 3730 | (An.runInContext = x), 3731 | (An.sample = function (n) { 3732 | return (ff(n) ? Qn : cr)(n); 3733 | }), 3734 | (An.size = function (n) { 3735 | if (null == n) return 0; 3736 | if (su(n)) return ju(n) ? D(n) : n.length; 3737 | var t = vo(n); 3738 | return '[object Map]' == t || '[object Set]' == t ? n.size : Vt(n).length; 3739 | }), 3740 | (An.snakeCase = Df), 3741 | (An.some = function (n, t, r) { 3742 | var e = ff(n) ? h : pr; 3743 | return r && Oe(n, t, r) && (t = T), e(n, ye(t, 3)); 3744 | }), 3745 | (An.sortedIndex = function (n, t) { 3746 | return _r(n, t); 3747 | }), 3748 | (An.sortedIndexBy = function (n, t, r) { 3749 | return vr(n, t, ye(r, 2)); 3750 | }), 3751 | (An.sortedIndexOf = function (n, t) { 3752 | var r = null == n ? 0 : n.length; 3753 | if (r) { 3754 | var e = _r(n, t); 3755 | if (e < r && lu(n[e], t)) return e; 3756 | } 3757 | return -1; 3758 | }), 3759 | (An.sortedLastIndex = function (n, t) { 3760 | return _r(n, t, true); 3761 | }), 3762 | (An.sortedLastIndexBy = function (n, t, r) { 3763 | return vr(n, t, ye(r, 2), true); 3764 | }), 3765 | (An.sortedLastIndexOf = function (n, t) { 3766 | if (null == n ? 0 : n.length) { 3767 | var r = _r(n, t, true) - 1; 3768 | if (lu(n[r], t)) return r; 3769 | } 3770 | return -1; 3771 | }), 3772 | (An.startCase = Mf), 3773 | (An.startsWith = function (n, t, r) { 3774 | return (n = Iu(n)), (r = null == r ? 0 : pt(Eu(r), 0, n.length)), (t = yr(t)), n.slice(r, r + t.length) == t; 3775 | }), 3776 | (An.subtract = uc), 3777 | (An.sum = function (n) { 3778 | return n && n.length ? m(n, $u) : 0; 3779 | }), 3780 | (An.sumBy = function (n, t) { 3781 | return n && n.length ? m(n, ye(t, 2)) : 0; 3782 | }), 3783 | (An.template = function (n, t, r) { 3784 | var e = An.templateSettings; 3785 | r && Oe(n, t, r) && (t = T), (n = Iu(n)), (t = bf({}, t, e, ce)), (r = bf({}, t.imports, e.imports, ce)); 3786 | var u, 3787 | i, 3788 | o = Wu(r), 3789 | f = S(r, o), 3790 | c = 0; 3791 | r = t.interpolate || jn; 3792 | var a = "__p+='"; 3793 | r = Xu( 3794 | (t.escape || jn).source + 3795 | '|' + 3796 | r.source + 3797 | '|' + 3798 | (r === Q ? pn : jn).source + 3799 | '|' + 3800 | (t.evaluate || jn).source + 3801 | '|$', 3802 | 'g' 3803 | ); 3804 | var l = oi.call(t, 'sourceURL') ? '//# sourceURL=' + (t.sourceURL + '').replace(/[\r\n]/g, ' ') + '\n' : ''; 3805 | if ( 3806 | (n.replace(r, function (t, r, e, o, f, l) { 3807 | return ( 3808 | e || (e = o), 3809 | (a += n.slice(c, l).replace(wn, z)), 3810 | r && ((u = true), (a += "'+__e(" + r + ")+'")), 3811 | f && ((i = true), (a += "';" + f + ";\n__p+='")), 3812 | e && (a += "'+((__t=(" + e + "))==null?'':__t)+'"), 3813 | (c = l + t.length), 3814 | t 3815 | ); 3816 | }), 3817 | (a += "';"), 3818 | (t = oi.call(t, 'variable') && t.variable) || (a = 'with(obj){' + a + '}'), 3819 | (a = (i ? a.replace(P, '') : a).replace(Z, '$1').replace(q, '$1;')), 3820 | (a = 3821 | 'function(' + 3822 | (t || 'obj') + 3823 | '){' + 3824 | (t ? '' : 'obj||(obj={});') + 3825 | "var __t,__p=''" + 3826 | (u ? ',__e=_.escape' : '') + 3827 | (i ? ",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}" : ';') + 3828 | a + 3829 | 'return __p}'), 3830 | (t = Ff(function () { 3831 | return Ju(o, l + 'return ' + a).apply(T, f); 3832 | })), 3833 | (t.source = a), 3834 | pu(t)) 3835 | ) 3836 | throw t; 3837 | return t; 3838 | }), 3839 | (An.times = function (n, t) { 3840 | if (((n = Eu(n)), 1 > n || 9007199254740991 < n)) return []; 3841 | var r = 4294967295, 3842 | e = Ci(n, 4294967295); 3843 | for (t = ye(t), n -= 4294967295, e = A(e, t); ++r < n; ) t(r); 3844 | return e; 3845 | }), 3846 | (An.toFinite = Au), 3847 | (An.toInteger = Eu), 3848 | (An.toLength = ku), 3849 | (An.toLower = function (n) { 3850 | return Iu(n).toLowerCase(); 3851 | }), 3852 | (An.toNumber = Su), 3853 | (An.toSafeInteger = function (n) { 3854 | return n ? pt(Eu(n), -9007199254740991, 9007199254740991) : 0 === n ? n : 0; 3855 | }), 3856 | (An.toString = Iu), 3857 | (An.toUpper = function (n) { 3858 | return Iu(n).toUpperCase(); 3859 | }), 3860 | (An.trim = function (n, t, r) { 3861 | return (n = Iu(n)) && (r || t === T) 3862 | ? n.replace(un, '') 3863 | : n && (t = yr(t)) 3864 | ? ((n = M(n)), (r = M(t)), (t = I(n, r)), (r = R(n, r) + 1), Or(n, t, r).join('')) 3865 | : n; 3866 | }), 3867 | (An.trimEnd = function (n, t, r) { 3868 | return (n = Iu(n)) && (r || t === T) 3869 | ? n.replace(fn, '') 3870 | : n && (t = yr(t)) 3871 | ? ((n = M(n)), (t = R(n, M(t)) + 1), Or(n, 0, t).join('')) 3872 | : n; 3873 | }), 3874 | (An.trimStart = function (n, t, r) { 3875 | return (n = Iu(n)) && (r || t === T) 3876 | ? n.replace(on, '') 3877 | : n && (t = yr(t)) 3878 | ? ((n = M(n)), (t = I(n, M(t))), Or(n, t).join('')) 3879 | : n; 3880 | }), 3881 | (An.truncate = function (n, t) { 3882 | var r = 30, 3883 | e = '...'; 3884 | if (du(t)) 3885 | var u = 'separator' in t ? t.separator : u, 3886 | r = 'length' in t ? Eu(t.length) : r, 3887 | e = 'omission' in t ? yr(t.omission) : e; 3888 | n = Iu(n); 3889 | var i = n.length; 3890 | if (Rn.test(n)) 3891 | var o = M(n), 3892 | i = o.length; 3893 | if (r >= i) return n; 3894 | if (((i = r - D(e)), 1 > i)) return e; 3895 | if (((r = o ? Or(o, 0, i).join('') : n.slice(0, i)), u === T)) return r + e; 3896 | if ((o && (i += r.length - i), hf(u))) { 3897 | if (n.slice(i).search(u)) { 3898 | var f = r; 3899 | for (u.global || (u = Xu(u.source, Iu(_n.exec(u)) + 'g')), u.lastIndex = 0; (o = u.exec(f)); ) 3900 | var c = o.index; 3901 | r = r.slice(0, c === T ? i : c); 3902 | } 3903 | } else n.indexOf(yr(u), i) != i && ((u = r.lastIndexOf(u)), -1 < u && (r = r.slice(0, u))); 3904 | return r + e; 3905 | }), 3906 | (An.unescape = function (n) { 3907 | return (n = Iu(n)) && G.test(n) ? n.replace(V, tt) : n; 3908 | }), 3909 | (An.uniqueId = function (n) { 3910 | var t = ++fi; 3911 | return Iu(n) + t; 3912 | }), 3913 | (An.upperCase = Tf), 3914 | (An.upperFirst = $f), 3915 | (An.each = nu), 3916 | (An.eachRight = tu), 3917 | (An.first = qe), 3918 | Nu( 3919 | An, 3920 | (function () { 3921 | var n = {}; 3922 | return ( 3923 | mt(An, function (t, r) { 3924 | oi.call(An.prototype, r) || (n[r] = t); 3925 | }), 3926 | n 3927 | ); 3928 | })(), 3929 | { chain: false } 3930 | ), 3931 | (An.VERSION = '4.17.15'), 3932 | r('bind bindKey curry curryRight partial partialRight'.split(' '), function (n) { 3933 | An[n].placeholder = An; 3934 | }), 3935 | r(['drop', 'take'], function (n, t) { 3936 | (Un.prototype[n] = function (r) { 3937 | r = r === T ? 1 : Ui(Eu(r), 0); 3938 | var e = this.__filtered__ && !t ? new Un(this) : this.clone(); 3939 | return ( 3940 | e.__filtered__ 3941 | ? (e.__takeCount__ = Ci(r, e.__takeCount__)) 3942 | : e.__views__.push({ size: Ci(r, 4294967295), type: n + (0 > e.__dir__ ? 'Right' : '') }), 3943 | e 3944 | ); 3945 | }), 3946 | (Un.prototype[n + 'Right'] = function (t) { 3947 | return this.reverse()[n](t).reverse(); 3948 | }); 3949 | }), 3950 | r(['filter', 'map', 'takeWhile'], function (n, t) { 3951 | var r = t + 1, 3952 | e = 1 == r || 3 == r; 3953 | Un.prototype[n] = function (n) { 3954 | var t = this.clone(); 3955 | return t.__iteratees__.push({ iteratee: ye(n, 3), type: r }), (t.__filtered__ = t.__filtered__ || e), t; 3956 | }; 3957 | }), 3958 | r(['head', 'last'], function (n, t) { 3959 | var r = 'take' + (t ? 'Right' : ''); 3960 | Un.prototype[n] = function () { 3961 | return this[r](1).value()[0]; 3962 | }; 3963 | }), 3964 | r(['initial', 'tail'], function (n, t) { 3965 | var r = 'drop' + (t ? '' : 'Right'); 3966 | Un.prototype[n] = function () { 3967 | return this.__filtered__ ? new Un(this) : this[r](1); 3968 | }; 3969 | }), 3970 | (Un.prototype.compact = function () { 3971 | return this.filter($u); 3972 | }), 3973 | (Un.prototype.find = function (n) { 3974 | return this.filter(n).head(); 3975 | }), 3976 | (Un.prototype.findLast = function (n) { 3977 | return this.reverse().find(n); 3978 | }), 3979 | (Un.prototype.invokeMap = fr(function (n, t) { 3980 | return typeof n == 'function' 3981 | ? new Un(this) 3982 | : this.map(function (r) { 3983 | return Lt(r, n, t); 3984 | }); 3985 | })), 3986 | (Un.prototype.reject = function (n) { 3987 | return this.filter(au(ye(n))); 3988 | }), 3989 | (Un.prototype.slice = function (n, t) { 3990 | n = Eu(n); 3991 | var r = this; 3992 | return r.__filtered__ && (0 < n || 0 > t) 3993 | ? new Un(r) 3994 | : (0 > n ? (r = r.takeRight(-n)) : n && (r = r.drop(n)), 3995 | t !== T && ((t = Eu(t)), (r = 0 > t ? r.dropRight(-t) : r.take(t - n))), 3996 | r); 3997 | }), 3998 | (Un.prototype.takeRightWhile = function (n) { 3999 | return this.reverse().takeWhile(n).reverse(); 4000 | }), 4001 | (Un.prototype.toArray = function () { 4002 | return this.take(4294967295); 4003 | }), 4004 | mt(Un.prototype, function (n, t) { 4005 | var r = /^(?:filter|find|map|reject)|While$/.test(t), 4006 | e = /^(?:head|last)$/.test(t), 4007 | u = An[e ? 'take' + ('last' == t ? 'Right' : '') : t], 4008 | i = e || /^find/.test(t); 4009 | u && 4010 | (An.prototype[t] = function () { 4011 | function t(n) { 4012 | return (n = u.apply(An, a([n], f))), e && h ? n[0] : n; 4013 | } 4014 | var o = this.__wrapped__, 4015 | f = e ? [1] : arguments, 4016 | c = o instanceof Un, 4017 | l = f[0], 4018 | s = c || ff(o); 4019 | s && r && typeof l == 'function' && 1 != l.length && (c = s = false); 4020 | var h = this.__chain__, 4021 | p = !!this.__actions__.length, 4022 | l = i && !h, 4023 | c = c && !p; 4024 | return !i && s 4025 | ? ((o = c ? o : new Un(this)), 4026 | (o = n.apply(o, f)), 4027 | o.__actions__.push({ func: Qe, args: [t], thisArg: T }), 4028 | new On(o, h)) 4029 | : l && c 4030 | ? n.apply(this, f) 4031 | : ((o = this.thru(t)), l ? (e ? o.value()[0] : o.value()) : o); 4032 | }); 4033 | }), 4034 | r('pop push shift sort splice unshift'.split(' '), function (n) { 4035 | var t = ri[n], 4036 | r = /^(?:push|sort|unshift)$/.test(n) ? 'tap' : 'thru', 4037 | e = /^(?:pop|shift)$/.test(n); 4038 | An.prototype[n] = function () { 4039 | var n = arguments; 4040 | if (e && !this.__chain__) { 4041 | var u = this.value(); 4042 | return t.apply(ff(u) ? u : [], n); 4043 | } 4044 | return this[r](function (r) { 4045 | return t.apply(ff(r) ? r : [], n); 4046 | }); 4047 | }; 4048 | }), 4049 | mt(Un.prototype, function (n, t) { 4050 | var r = An[t]; 4051 | if (r) { 4052 | var e = r.name + ''; 4053 | oi.call(Gi, e) || (Gi[e] = []), Gi[e].push({ name: t, func: r }); 4054 | } 4055 | }), 4056 | (Gi[Jr(T, 2).name] = [{ name: 'wrapper', func: T }]), 4057 | (Un.prototype.clone = function () { 4058 | var n = new Un(this.__wrapped__); 4059 | return ( 4060 | (n.__actions__ = Ur(this.__actions__)), 4061 | (n.__dir__ = this.__dir__), 4062 | (n.__filtered__ = this.__filtered__), 4063 | (n.__iteratees__ = Ur(this.__iteratees__)), 4064 | (n.__takeCount__ = this.__takeCount__), 4065 | (n.__views__ = Ur(this.__views__)), 4066 | n 4067 | ); 4068 | }), 4069 | (Un.prototype.reverse = function () { 4070 | if (this.__filtered__) { 4071 | var n = new Un(this); 4072 | (n.__dir__ = -1), (n.__filtered__ = true); 4073 | } else (n = this.clone()), (n.__dir__ *= -1); 4074 | return n; 4075 | }), 4076 | (Un.prototype.value = function () { 4077 | var n, 4078 | t = this.__wrapped__.value(), 4079 | r = this.__dir__, 4080 | e = ff(t), 4081 | u = 0 > r, 4082 | i = e ? t.length : 0; 4083 | n = i; 4084 | for (var o = this.__views__, f = 0, c = -1, a = o.length; ++c < a; ) { 4085 | var l = o[c], 4086 | s = l.size; 4087 | switch (l.type) { 4088 | case 'drop': 4089 | f += s; 4090 | break; 4091 | case 'dropRight': 4092 | n -= s; 4093 | break; 4094 | case 'take': 4095 | n = Ci(n, f + s); 4096 | break; 4097 | case 'takeRight': 4098 | f = Ui(f, n - s); 4099 | } 4100 | } 4101 | if ( 4102 | ((n = { start: f, end: n }), 4103 | (o = n.start), 4104 | (f = n.end), 4105 | (n = f - o), 4106 | (o = u ? f : o - 1), 4107 | (f = this.__iteratees__), 4108 | (c = f.length), 4109 | (a = 0), 4110 | (l = Ci(n, this.__takeCount__)), 4111 | !e || (!u && i == n && l == n)) 4112 | ) 4113 | return wr(t, this.__actions__); 4114 | e = []; 4115 | n: for (; n-- && a < l; ) { 4116 | for (o += r, u = -1, i = t[o]; ++u < c; ) { 4117 | var h = f[u], 4118 | s = h.type, 4119 | h = (0, h.iteratee)(i); 4120 | if (2 == s) i = h; 4121 | else if (!h) { 4122 | if (1 == s) continue n; 4123 | break n; 4124 | } 4125 | } 4126 | e[a++] = i; 4127 | } 4128 | return e; 4129 | }), 4130 | (An.prototype.at = To), 4131 | (An.prototype.chain = function () { 4132 | return Ye(this); 4133 | }), 4134 | (An.prototype.commit = function () { 4135 | return new On(this.value(), this.__chain__); 4136 | }), 4137 | (An.prototype.next = function () { 4138 | this.__values__ === T && (this.__values__ = mu(this.value())); 4139 | var n = this.__index__ >= this.__values__.length; 4140 | return { done: n, value: n ? T : this.__values__[this.__index__++] }; 4141 | }), 4142 | (An.prototype.plant = function (n) { 4143 | for (var t, r = this; r instanceof En; ) { 4144 | var e = Fe(r); 4145 | (e.__index__ = 0), (e.__values__ = T), t ? (u.__wrapped__ = e) : (t = e); 4146 | var u = e, 4147 | r = r.__wrapped__; 4148 | } 4149 | return (u.__wrapped__ = n), t; 4150 | }), 4151 | (An.prototype.reverse = function () { 4152 | var n = this.__wrapped__; 4153 | return n instanceof Un 4154 | ? (this.__actions__.length && (n = new Un(this)), 4155 | (n = n.reverse()), 4156 | n.__actions__.push({ func: Qe, args: [Ge], thisArg: T }), 4157 | new On(n, this.__chain__)) 4158 | : this.thru(Ge); 4159 | }), 4160 | (An.prototype.toJSON = 4161 | An.prototype.valueOf = 4162 | An.prototype.value = 4163 | function () { 4164 | return wr(this.__wrapped__, this.__actions__); 4165 | }), 4166 | (An.prototype.first = An.prototype.head), 4167 | wi && (An.prototype[wi] = Xe), 4168 | An 4169 | ); 4170 | })(); 4171 | typeof define == 'function' && typeof define.amd == 'object' && define.amd 4172 | ? (($n._ = rt), 4173 | define(function () { 4174 | return rt; 4175 | })) 4176 | : Nn 4177 | ? (((Nn.exports = rt)._ = rt), (Fn._ = rt)) 4178 | : ($n._ = rt); 4179 | }.call(this)); 4180 | -------------------------------------------------------------------------------- /utils/request.js: -------------------------------------------------------------------------------- 1 | import { logout } from '~/utils/util'; 2 | import { version } from '~/config/index'; 3 | 4 | /** 5 | * 按照下述例子继续封装项目中需要的上传功能等等,封装两种 一种用于携带用户信息,一种用于原生 6 | */ 7 | 8 | /** 9 | * @method _request 封装业务请求 10 | * @param {*} { method, url, data } 11 | */ 12 | const _request = async ({ method, url, data }) => { 13 | const { globalData } = getApp(); 14 | const { isConnected } = globalData; 15 | const header = { 16 | version, 17 | }; 18 | return new Promise((resolve, reject) => { 19 | if (isConnected) { 20 | // 微信原生请求 21 | wx.request({ 22 | url, 23 | data, 24 | method, 25 | header, 26 | success: async (value) => { 27 | const { data, statusCode } = value; 28 | if (statusCode === 200) { 29 | const { code, msg } = data; 30 | switch (code) { 31 | // 退出登录 32 | case 2128: 33 | logout(); 34 | reject(msg); 35 | break; 36 | default: 37 | resolve(data); 38 | break; 39 | } 40 | } else { 41 | reject(`服务请求错误,状态码:${statusCode}`); 42 | } 43 | }, 44 | fail(reason) { 45 | reject(reason); 46 | }, 47 | }); 48 | } else { 49 | reject('无网状态'); 50 | } 51 | }); 52 | }; 53 | 54 | /** 55 | * @method _nativeRequest 封装原生请求 56 | * @param {*} { method, url, data } 57 | */ 58 | const _nativeRequest = async ({ method, url, data }) => { 59 | const { globalData } = getApp(); 60 | const { isConnected } = globalData; 61 | return new Promise((resolve, reject) => { 62 | if (isConnected) { 63 | // 微信原生请求 64 | wx.request({ 65 | url, 66 | data, 67 | method, 68 | success: async (value) => { 69 | const { data, statusCode } = value; 70 | if (statusCode === 200) { 71 | resolve(data); 72 | } else { 73 | reject(`服务请求错误,状态码:${statusCode}`); 74 | } 75 | }, 76 | fail(reason) { 77 | reject(reason); 78 | }, 79 | }); 80 | } else { 81 | reject('无网状态'); 82 | } 83 | }); 84 | }; 85 | 86 | /** 87 | * @method post 业务post请求 88 | * @param {*} { url, data } 89 | */ 90 | export const post = ({ url, data }) => _request({ method: 'POST', url, data }); 91 | 92 | /** 93 | * @method nativePost 原生post请求 94 | * @param {*} { url, data } 95 | */ 96 | export const nativePost = ({ url, data }) => _nativeRequest({ method: 'POST', url, data }); 97 | 98 | /** 99 | * @method nativePost 原生get请求 100 | * @param {*} { url, data } 101 | */ 102 | export const nativeGet = ({ url, data }) => _nativeRequest({ method: 'GET', url, data }); 103 | -------------------------------------------------------------------------------- /utils/router.js: -------------------------------------------------------------------------------- 1 | export const Home = { 2 | path: '/pages/home/index', 3 | name: '首页', 4 | }; 5 | -------------------------------------------------------------------------------- /utils/util.js: -------------------------------------------------------------------------------- 1 | import { Home } from '~/utils/router'; 2 | 3 | /** 4 | * @method getItemSync 缓存读取 5 | * @param {*} key 6 | */ 7 | export const getItemSync = (key) => { 8 | try { 9 | return wx.getStorageSync(key); 10 | } catch (err) { 11 | console.error('wx.getStorageSync(key)', err); 12 | } 13 | }; 14 | 15 | /** 16 | * @method setItemSync 缓存存储 17 | * @param {*} key 18 | * @param {*} value 19 | */ 20 | export const setItemSync = (key, value) => { 21 | try { 22 | wx.setStorageSync(key, value); 23 | } catch (err) { 24 | console.error('wx.setStorageSync(key, value)', err); 25 | } 26 | }; 27 | 28 | /** 29 | * @method deleteItemSync 缓存删除 30 | * @param {*} key 31 | */ 32 | export const deleteItemSync = (key) => { 33 | try { 34 | return wx.removeStorageSync(key); 35 | } catch (err) { 36 | console.error('wx.removeStorageSync(key)', err); 37 | } 38 | }; 39 | 40 | /** 41 | * @method navigateTo 封装navigateTo请求 42 | * @param {*} { url, events } 43 | */ 44 | export const navigateTo = ({ url, events = {} }) => { 45 | return new Promise((resolve) => { 46 | const { globalData } = getApp(); 47 | const { isConnected } = globalData; 48 | // 有网络 49 | if (isConnected) { 50 | wx.navigateTo({ 51 | url, 52 | events, 53 | success: resolve, 54 | fail: () => { 55 | redirectTo({ url, events }); 56 | }, 57 | }); 58 | 59 | // 无网络 60 | } else { 61 | wx.showToast({ 62 | icon:'none', 63 | title: '似乎已经断开了与互联网的连接', 64 | }) 65 | } 66 | }); 67 | }; 68 | 69 | /** 70 | * @method redirectTo 封装redirectTo请求 71 | * @param {*} { url, events } 72 | */ 73 | export const redirectTo = ({ url, events = {} }) => { 74 | return new Promise((resolve, reject) => { 75 | const { globalData } = getApp(); 76 | const { isConnected } = globalData; 77 | // 有网络 78 | if (isConnected) { 79 | wx.redirectTo({ 80 | url, 81 | events, 82 | success: resolve, 83 | fail: reject, 84 | }); 85 | 86 | // 无网络 87 | } else { 88 | wx.showToast({ 89 | icon:'none', 90 | title: '似乎已经断开了与互联网的连接', 91 | }) 92 | } 93 | }); 94 | }; 95 | 96 | /** 97 | * @method navigateBack 封装navigateBack请求 98 | * @param {*} delta 99 | */ 100 | export const navigateBack = (delta = 1) => { 101 | return new Promise((resolve, reject) => { 102 | const { globalData } = getApp(); 103 | const { isConnected } = globalData; 104 | // 有网络 105 | if (isConnected) { 106 | wx.navigateBack({ 107 | delta, 108 | success: resolve, 109 | fail: reject, 110 | }); 111 | 112 | // 无网络 113 | } else { 114 | wx.showToast({ 115 | icon:'none', 116 | title: '似乎已经断开了与互联网的连接', 117 | }) 118 | } 119 | }); 120 | }; 121 | 122 | /** 123 | * @method switchTab 封装switchTab请求 124 | * @param {*} { url } 125 | */ 126 | export const switchTab = ({ url }) => { 127 | return new Promise((resolve, reject) => { 128 | const { globalData } = getApp(); 129 | const { isConnected } = globalData; 130 | // 有网络 131 | if (isConnected) { 132 | wx.switchTab({ 133 | url, 134 | success: resolve, 135 | fail: reject, 136 | }); 137 | 138 | // 无网络 139 | } else { 140 | wx.showToast({ 141 | icon:'none', 142 | title: '似乎已经断开了与互联网的连接', 143 | }) 144 | } 145 | }); 146 | }; 147 | 148 | /** 149 | * @method reLaunch 封装reLaunch请求 150 | * @param {*} { url } 151 | */ 152 | export const reLaunch = ({ url }) => { 153 | return new Promise((resolve, reject) => { 154 | const { globalData } = getApp(); 155 | const { isConnected } = globalData; 156 | // 有网络 157 | if (isConnected) { 158 | wx.reLaunch({ 159 | url, 160 | success: resolve, 161 | fail: reject, 162 | }); 163 | 164 | // 无网络 165 | } else { 166 | wx.showToast({ 167 | icon:'none', 168 | title: '似乎已经断开了与互联网的连接', 169 | }) 170 | } 171 | }); 172 | }; 173 | 174 | /** 175 | * @method getCurrentPageInfo 获取当前页面栈中指定路径的页面信息 176 | * @param {*} path app.json中定义的完整路径 177 | */ 178 | export const getCurrentPageInfo = (path) => { 179 | // 存在指定路径, 返回指定路径页面详情 180 | if (path) { 181 | // 反转数组,返回最后一次出现路由 182 | return getCurrentPages() 183 | .reverse() 184 | .find((item) => { 185 | return `/${item.route}` === path; 186 | }); 187 | 188 | // 反转数组,返回当前页面详情 189 | } else { 190 | return getCurrentPages().reverse()[0]; 191 | } 192 | }; 193 | 194 | /** 195 | * @method getCurrentPageIndex 获取当前页面栈中指定路径的下标 196 | * @param {*} path app.json中定义的完整路径 197 | */ 198 | export const getCurrentPageIndex = (path) => { 199 | return getCurrentPages() 200 | .reverse() 201 | .findIndex((item) => { 202 | return `/${item.route}` === path; 203 | }); 204 | }; 205 | 206 | /** 207 | * @method checkNetwork 检查网络 208 | */ 209 | export const checkNetwork = () => { 210 | return new Promise((resolve, reject) => { 211 | const { globalData } = getApp(); 212 | const { isConnected } = globalData; 213 | if(isConnected){ 214 | resolve() 215 | }else{ 216 | wx.showToast({ 217 | icon:'none', 218 | title: '似乎已经断开了与互联网的连接', 219 | }) 220 | reject('似乎已经断开了与互联网的连接'); 221 | } 222 | }); 223 | }; 224 | 225 | /** 226 | * @method getNetworkType 获取网络类型 227 | */ 228 | export const getNetworkType = () => { 229 | return new Promise((resolve) => { 230 | // 获取网络类型 231 | wx.getNetworkType({ 232 | success: (value) => { 233 | const { networkType } = value; 234 | resolve(networkType); 235 | }, 236 | }); 237 | }); 238 | }; 239 | 240 | /** 241 | * @method logout 退出登录 242 | */ 243 | export const logout = () => { 244 | const { globalData } = getApp(); 245 | globalData.userInfo = null; 246 | deleteItemSync('userInfo'); 247 | reLaunch({ url: Home.path }); 248 | }; 249 | 250 | /** 251 | * @method shareImageFormat 图片格式处理 252 | * @param {*} params 253 | * @returns 254 | */ 255 | export const shareImageFormat = (params) => { 256 | const { systemInfo } = getApp(); 257 | const { system } = systemInfo; 258 | const systemDetail = system.split(' '); 259 | const type = systemDetail[0]; 260 | const version = systemDetail[1]; 261 | // ios系统14版本以下,小程序分享的图片不支持webp格式,进行转换 262 | if (type.toLowerCase() === 'ios' && parseInt(version) <= 14) { 263 | return params.replace('format,webp', 'format,jpg'); 264 | } else { 265 | return params; 266 | } 267 | }; 268 | -------------------------------------------------------------------------------- /utils/wxs.wxs: -------------------------------------------------------------------------------- 1 | /** 2 | * @method addRpxUnit 添加单位 3 | * @param value 4 | */ 5 | function addRpxUnit(value) { 6 | if (value == null) { 7 | return undefined; 8 | } 9 | return value.constructor === 'Number' ? value * 2 + 'rpx' : value; 10 | } 11 | 12 | module.exports = { 13 | addRpxUnit: addRpxUnit, 14 | }; 15 | --------------------------------------------------------------------------------