mas-server 4.0.0-beta.0 → 4.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +408 -8
- package/dist/getApp/apiHandler.d.ts +22 -1
- package/dist/getApp/apiHandler.d.ts.map +1 -1
- package/dist/getApp/getApp.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/middleware/openCors.d.ts.map +1 -1
- package/dist/type.d.ts +46 -13
- package/dist/type.d.ts.map +1 -1
- package/dist/utils/typeFromValidFormat.d.ts +13 -1
- package/dist/utils/typeFromValidFormat.d.ts.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -1,8 +1,408 @@
|
|
|
1
|
-
# mas-server
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
JWT
|
|
1
|
+
# mas-server
|
|
2
|
+
|
|
3
|
+
一行代码,实现约定式路由,自带常用业务功能,开箱即用,让你的express飞起来
|
|
4
|
+
|
|
5
|
+
## ✨ 特性
|
|
6
|
+
|
|
7
|
+
- 🚀 **约定式路由** - 自动扫描 API 文件,根据文件路径生成路由
|
|
8
|
+
- 🔒 **权限管理** - 基于 JWT Token 的权限验证系统
|
|
9
|
+
- 📝 **类型安全** - 通过 `requestFormat` 和 `responseFormat` 实现类型推导和运行时校验
|
|
10
|
+
- 📊 **日志管理** - 支持访问日志(控制台和文件),可记录请求/响应体
|
|
11
|
+
- 🎯 **统一响应格式** - 提供 `res.reply()` 等便捷方法
|
|
12
|
+
- 🌐 **CORS 支持** - 可配置的跨域支持
|
|
13
|
+
- 📁 **静态文件服务** - 支持静态文件目录
|
|
14
|
+
- 📖 **API 文档** - 自动生成 API 文档(通过 `/debug/docs` 访问)
|
|
15
|
+
|
|
16
|
+
## 📦 安装
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install mas-server
|
|
20
|
+
# 或
|
|
21
|
+
bun add mas-server
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 🚀 快速开始
|
|
25
|
+
|
|
26
|
+
### 1. 编写 API
|
|
27
|
+
|
|
28
|
+
创建 `src/apis/user/login.ts`:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import type { MasConfig, MasHandler } from 'mas-server';
|
|
32
|
+
|
|
33
|
+
export const config: MasConfig = {
|
|
34
|
+
requestFormat: { username: String, password: String },
|
|
35
|
+
responseFormat: { token: String },
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const handler: MasHandler<typeof config> = async (req, res) => {
|
|
39
|
+
res.reply({ token: 'xxx' });
|
|
40
|
+
};
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. 启动服务
|
|
44
|
+
|
|
45
|
+
创建 `main.ts`:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { getApp } from 'mas-server';
|
|
49
|
+
import { fileURLToPath } from 'url';
|
|
50
|
+
import path from 'path';
|
|
51
|
+
|
|
52
|
+
(await getApp(path.dirname(fileURLToPath(import.meta.url)))).listen(8087);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
运行:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
bun run main.ts
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
就这么简单!访问 `http://localhost:8087/api/user/login` 即可。
|
|
62
|
+
|
|
63
|
+
## 📚 核心功能
|
|
64
|
+
|
|
65
|
+
### 约定式路由
|
|
66
|
+
|
|
67
|
+
框架会自动扫描 `src/apis` 或 `apis` 目录下的 `.ts`/`.js` 文件,根据文件路径生成路由:
|
|
68
|
+
|
|
69
|
+
- `src/apis/index.ts` → `/api/`
|
|
70
|
+
- `src/apis/user/index.ts` → `/api/user`
|
|
71
|
+
- `src/apis/user/login.ts` → `/api/user/login`
|
|
72
|
+
- `src/apis/user/profile.ts` → `/api/user/profile`
|
|
73
|
+
|
|
74
|
+
所有路由都会自动添加 `/api` 前缀。
|
|
75
|
+
|
|
76
|
+
### 类型安全
|
|
77
|
+
|
|
78
|
+
通过 `requestFormat` 和 `responseFormat` 定义请求和响应的数据结构,框架会:
|
|
79
|
+
|
|
80
|
+
1. **类型推导** - 自动推导 `req.body` 和 `res.reply()` 的类型
|
|
81
|
+
2. **运行时校验** - 自动校验请求参数格式,不符合格式的请求会返回 400 错误
|
|
82
|
+
|
|
83
|
+
#### 支持的类型
|
|
84
|
+
|
|
85
|
+
- **基础类型**:`String`、`Number`、`Boolean`、`Object`
|
|
86
|
+
- **可选字段**:
|
|
87
|
+
- `_String` - 可选字符串(`'?'`)
|
|
88
|
+
- `_Number` - 可选数字(`-1`)
|
|
89
|
+
- **数组**:`[String]`、`[Number]`、`[{...}]`
|
|
90
|
+
- **嵌套对象**:`{ key: String, nested: { ... } }`
|
|
91
|
+
|
|
92
|
+
#### 示例
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
const requestFormat = {
|
|
96
|
+
name: String, // 必填字符串
|
|
97
|
+
age: _Number, // 可选数字
|
|
98
|
+
email: _String, // 可选字符串
|
|
99
|
+
tags: [String], // 字符串数组
|
|
100
|
+
address: {
|
|
101
|
+
// 嵌套对象
|
|
102
|
+
city: String,
|
|
103
|
+
zipCode: _String,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const config: MasConfig<typeof requestFormat> = {
|
|
108
|
+
requestFormat,
|
|
109
|
+
strict: false, // strict=true 时不允许多余字段
|
|
110
|
+
};
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Token 验证
|
|
114
|
+
|
|
115
|
+
框架提供了完整的 JWT Token 系统:
|
|
116
|
+
|
|
117
|
+
#### 创建 Token
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import { createToken } from 'mas-server';
|
|
121
|
+
|
|
122
|
+
const token = createToken(
|
|
123
|
+
{
|
|
124
|
+
data: { userId: 123, username: 'admin' },
|
|
125
|
+
time: 3600, // 过期时间(秒),0 表示永不过期
|
|
126
|
+
permission: ['admin', 'user'], // 权限列表
|
|
127
|
+
},
|
|
128
|
+
'your-secret-key'
|
|
129
|
+
);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### 验证 Token
|
|
133
|
+
|
|
134
|
+
在接口配置中启用 token 验证:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
export const config: MasConfig = {
|
|
138
|
+
token: true, // 启用 token 验证
|
|
139
|
+
permission: ['admin'], // 需要的权限(只要有一个即可)
|
|
140
|
+
};
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Token 可以通过以下方式传递:
|
|
144
|
+
|
|
145
|
+
- Header: `token: xxx`
|
|
146
|
+
- Query: `?token=xxx`
|
|
147
|
+
- Body: `{ token: 'xxx' }`
|
|
148
|
+
|
|
149
|
+
#### 在接口中获取 Token 数据
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
export const handler: MasHandler = async (req, res) => {
|
|
153
|
+
const tokenData = (req as any).tokenData;
|
|
154
|
+
// tokenData.data 包含创建 token 时传入的 data
|
|
155
|
+
// tokenData._permission 包含权限列表
|
|
156
|
+
// tokenData._masTime 包含过期时间戳
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 统一响应格式
|
|
161
|
+
|
|
162
|
+
框架提供了 `res.reply()` 方法,统一返回格式:
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// 成功响应
|
|
166
|
+
res.reply(data, 1, 200, '操作成功');
|
|
167
|
+
|
|
168
|
+
// 失败响应
|
|
169
|
+
res.reply(null, 0, 400, '参数错误');
|
|
170
|
+
|
|
171
|
+
// 简化写法(自动判断 status)
|
|
172
|
+
res.reply(data); // data 存在时 status=1,否则 status=0
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
响应格式:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"status": 1,
|
|
180
|
+
"code": 200,
|
|
181
|
+
"msg": "操作成功",
|
|
182
|
+
"data": { ... }
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 日志管理
|
|
187
|
+
|
|
188
|
+
框架支持两种日志:
|
|
189
|
+
|
|
190
|
+
1. **控制台日志** - 开发时使用,实时打印访问日志
|
|
191
|
+
2. **文件日志** - 生产环境使用,按天滚动,单文件最大 50MB
|
|
192
|
+
|
|
193
|
+
#### 配置示例
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
const app = await getApp(__dirname, {
|
|
197
|
+
logs: {
|
|
198
|
+
open: true, // 是否开启文件日志
|
|
199
|
+
debug: true, // 是否开启控制台日志
|
|
200
|
+
logPath: './logs', // 日志文件目录
|
|
201
|
+
logRequestBody: true, // 是否记录请求体
|
|
202
|
+
logResponseBody: true, // 是否记录响应体
|
|
203
|
+
maxBodyLength: 2000, // body 最大记录长度
|
|
204
|
+
redactKeys: ['password', 'token'], // 需要打码的字段
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### CORS 配置
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
const app = await getApp(__dirname, {
|
|
213
|
+
openCors: true,
|
|
214
|
+
corsUrl: [
|
|
215
|
+
'http://localhost:3000',
|
|
216
|
+
'https://example.com',
|
|
217
|
+
'*.example.com', // 支持通配符
|
|
218
|
+
],
|
|
219
|
+
});
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### 静态文件服务
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
const app = await getApp(__dirname, {
|
|
226
|
+
staticPath: './public', // 静态文件目录
|
|
227
|
+
staticUrl: '/public', // 访问路径前缀
|
|
228
|
+
});
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
访问:`http://localhost:8087/public/file.txt`
|
|
232
|
+
|
|
233
|
+
### API 文档
|
|
234
|
+
|
|
235
|
+
框架会自动生成 API 文档,访问 `/debug/docs` 即可查看所有接口的配置和文档信息。
|
|
236
|
+
|
|
237
|
+
可以通过配置开启:
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
const app = await getApp(__dirname, {
|
|
241
|
+
exposeApiDocs: true, // 开启 API 文档
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 接口配置选项
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
export const config: MasConfig = {
|
|
249
|
+
name: '接口名称', // 接口名称(用于文档)
|
|
250
|
+
methods: 'post', // HTTP 方法:'get' | 'post' | 'all'
|
|
251
|
+
contentType: 'application/json', // Content-Type 校验
|
|
252
|
+
strict: false, // 严格模式(不允许多余字段)
|
|
253
|
+
header: { // Header 参数校验
|
|
254
|
+
'X-Custom-Header': String,
|
|
255
|
+
},
|
|
256
|
+
requestFormat: { ... }, // 请求体格式
|
|
257
|
+
responseFormat: { ... }, // 响应体格式
|
|
258
|
+
token: true, // 是否需要 token
|
|
259
|
+
permission: ['admin'], // 需要的权限
|
|
260
|
+
};
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### 兜底接口
|
|
264
|
+
|
|
265
|
+
可以配置一个默认接口,当所有路由都不匹配时调用:
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
const app = await getApp(__dirname, {
|
|
269
|
+
defalutApiPath: path.join(__dirname, 'src/apis/fallback.ts'),
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
如果不配置,404 请求会返回:
|
|
274
|
+
|
|
275
|
+
```json
|
|
276
|
+
{
|
|
277
|
+
"status": 0,
|
|
278
|
+
"code": 404,
|
|
279
|
+
"msg": "Not Found",
|
|
280
|
+
"data": null
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## 🔧 完整配置选项
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
interface MasAppConfig {
|
|
288
|
+
// 日志配置
|
|
289
|
+
logs: {
|
|
290
|
+
open: boolean; // 是否记录日志
|
|
291
|
+
debug: boolean; // 是否打印访问日志
|
|
292
|
+
logPath?: string; // 日志路径,默认 logs/
|
|
293
|
+
logRequestBody?: boolean; // 是否记录请求体,默认 true
|
|
294
|
+
logResponseBody?: boolean; // 是否记录响应体,默认 true
|
|
295
|
+
maxBodyLength?: number; // body 最大记录长度,默认 2000
|
|
296
|
+
redactKeys?: string[]; // 需要打码的字段名,默认 []
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
// Token 配置
|
|
300
|
+
token: {
|
|
301
|
+
open: boolean; // 是否使用 token
|
|
302
|
+
pwd: string; // token 密钥
|
|
303
|
+
headerParams: string; // 参数名,默认 'token'
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// 路径配置
|
|
307
|
+
apisPath?: string; // 接口路径,默认 src/apis 或 apis/
|
|
308
|
+
defalutApiPath?: string; // 兜底接口文件路径
|
|
309
|
+
|
|
310
|
+
// 其他配置
|
|
311
|
+
projectName?: string; // 项目名称,默认 'mas-app'
|
|
312
|
+
openCors?: boolean; // 是否允许跨域,默认 false
|
|
313
|
+
corsUrl?: string[]; // 跨域允许的地址
|
|
314
|
+
staticPath?: string; // 静态文件目录路径,默认 public/
|
|
315
|
+
staticUrl?: string; // 静态资源访问路径前缀,默认 /public
|
|
316
|
+
exposeApiDocs?: boolean; // 是否暴露接口文档,默认 false
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## 📖 更多示例
|
|
321
|
+
|
|
322
|
+
### 带 Header 校验的接口
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
const header = {
|
|
326
|
+
'X-API-Key': String,
|
|
327
|
+
'X-Version': Number,
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
export const config: MasConfig<
|
|
331
|
+
typeof requestFormat,
|
|
332
|
+
typeof responseFormat,
|
|
333
|
+
typeof header
|
|
334
|
+
> = {
|
|
335
|
+
header,
|
|
336
|
+
// ...
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
export const handler: MasHandler<typeof config> = async (req, res) => {
|
|
340
|
+
// Header 已自动校验,可以直接使用
|
|
341
|
+
const apiKey = req.headers['x-api-key'];
|
|
342
|
+
// ...
|
|
343
|
+
};
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### API 文档示例
|
|
347
|
+
|
|
348
|
+
创建 `src/apisDoc/user/login.ts`:
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
import type { ApisDoc } from 'mas-server';
|
|
352
|
+
|
|
353
|
+
export default {
|
|
354
|
+
header: {
|
|
355
|
+
example: { token: 'xxx' },
|
|
356
|
+
desc: [{ name: 'token', desc: '用户 token' }],
|
|
357
|
+
},
|
|
358
|
+
request: {
|
|
359
|
+
example: {
|
|
360
|
+
username: 'admin',
|
|
361
|
+
password: '123456',
|
|
362
|
+
},
|
|
363
|
+
desc: [
|
|
364
|
+
{ name: 'username', desc: '用户名' },
|
|
365
|
+
{ name: 'password', desc: '密码' },
|
|
366
|
+
],
|
|
367
|
+
},
|
|
368
|
+
response: {
|
|
369
|
+
example: {
|
|
370
|
+
token: 'xxx',
|
|
371
|
+
userId: 123,
|
|
372
|
+
},
|
|
373
|
+
desc: [
|
|
374
|
+
{ name: 'token', desc: '登录 token' },
|
|
375
|
+
{ name: 'userId', desc: '用户 ID' },
|
|
376
|
+
],
|
|
377
|
+
},
|
|
378
|
+
} satisfies ApisDoc;
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
在接口文件中引入:
|
|
382
|
+
|
|
383
|
+
```typescript
|
|
384
|
+
import doc from '../apisDoc/user/login';
|
|
385
|
+
|
|
386
|
+
export const doc = doc;
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## 🛠️ 开发
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
# 构建
|
|
393
|
+
bun run build
|
|
394
|
+
|
|
395
|
+
# 开发模式(监听文件变化)
|
|
396
|
+
bun run testServer
|
|
397
|
+
|
|
398
|
+
# 调试
|
|
399
|
+
bun run debug
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
## 📄 License
|
|
403
|
+
|
|
404
|
+
MIT
|
|
405
|
+
|
|
406
|
+
## 🤝 贡献
|
|
407
|
+
|
|
408
|
+
欢迎提交 Issue 和 Pull Request!
|
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
import type { MasAppConfig, MasConfig, MasHandler } from '../type';
|
|
1
|
+
import type { GetRequestFormat, MasAppConfig, MasConfig, MasHandler } from '../type';
|
|
2
2
|
import express from 'express';
|
|
3
3
|
export type LoadedApiModule = {
|
|
4
4
|
config?: MasConfig;
|
|
5
5
|
handler?: MasHandler<any>;
|
|
6
6
|
doc?: any;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* 将 `req.query` 规范化为可用于 `validType` 的纯对象:
|
|
10
|
+
* - 仅接受 string/string[]
|
|
11
|
+
* - 其它类型(object/number/boolean 等)直接判定为非法
|
|
12
|
+
*
|
|
13
|
+
* @param query - express req.query
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeGetQuery(query: unknown): {
|
|
16
|
+
ok: true;
|
|
17
|
+
value: Record<string, string>;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 判断 GET 请求的 requestFormat 是否满足约束:
|
|
23
|
+
* - 必须是扁平对象:`Record<string, String | '?'>`
|
|
24
|
+
* - 不允许数组/嵌套对象/Number/Boolean/Object/-1
|
|
25
|
+
*
|
|
26
|
+
* @param format - requestFormat
|
|
27
|
+
*/
|
|
28
|
+
export declare function isGetOnlyStringFormat(format: unknown): format is GetRequestFormat;
|
|
8
29
|
/**
|
|
9
30
|
* 根据已加载的 API 模块创建路由处理器,并在调用前做:
|
|
10
31
|
* - method 校验
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHandler.d.ts","sourceRoot":"","sources":["../../src/getApp/apiHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"apiHandler.d.ts","sourceRoot":"","sources":["../../src/getApp/apiHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,UAAU,EACX,MAAM,SAAS,CAAC;AACjB,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC;AA0BF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAU7D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,gBAAgB,CAO5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,cAAc,CA2HxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getApp.d.ts","sourceRoot":"","sources":["../../src/getApp/getApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"getApp.d.ts","sourceRoot":"","sources":["../../src/getApp/getApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,SAAS,CAAC;AAcvD;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,EACrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,wDAoIxC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1,17 @@
|
|
|
1
|
-
var c2=Object.create;var{getPrototypeOf:h2,defineProperty:M1,getOwnPropertyNames:r2}=Object;var t2=Object.prototype.hasOwnProperty;var e2=(n,r,t)=>{t=n!=null?c2(h2(n)):{};let h=r||!n||!n.__esModule?M1(t,"default",{value:n,enumerable:!0}):t;for(let c of r2(n))if(!t2.call(h,c))M1(h,c,{get:()=>n[c],enumerable:!0});return h};var s2=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var Y1=s2((U2,z1)=>{var R=R||function(n){var r=Object.create||function(s){return t.prototype=s,s=new t,t.prototype=null,s};function t(){}var h={},c=h.lib={},i=c.Base={extend:function(s){var l=r(this);return s&&l.mixIn(s),l.hasOwnProperty("init")&&this.init!==l.init||(l.init=function(){l.$super.init.apply(this,arguments)}),(l.init.prototype=l).$super=this,l},create:function(){var s=this.extend();return s.init.apply(s,arguments),s},init:function(){},mixIn:function(s){for(var l in s)s.hasOwnProperty(l)&&(this[l]=s[l]);s.hasOwnProperty("toString")&&(this.toString=s.toString)},clone:function(){return this.init.prototype.extend(this)}},B=c.WordArray=i.extend({init:function(s,l){s=this.words=s||[],this.sigBytes=l!=null?l:4*s.length},toString:function(s){return(s||_).stringify(this)},concat:function(s){var l=this.words,u=s.words,y=this.sigBytes,g=s.sigBytes;if(this.clamp(),y%4)for(var f=0;f<g;f++){var A=u[f>>>2]>>>24-f%4*8&255;l[y+f>>>2]|=A<<24-(y+f)%4*8}else for(f=0;f<g;f+=4)l[y+f>>>2]=u[f>>>2];return this.sigBytes+=g,this},clamp:function(){var s=this.words,l=this.sigBytes;s[l>>>2]&=4294967295<<32-l%4*8,s.length=n.ceil(l/4)},clone:function(){var s=i.clone.call(this);return s.words=this.words.slice(0),s},random:function(s){for(var l=[],u=0;u<s;u+=4){var y=function(f){var A=987654321,z=4294967295;return function(){var M=((A=36969*(65535&A)+(A>>16)&z)<<16)+(f=18000*(65535&f)+(f>>16)&z)&z;return(M/4294967296+0.5)*(0.5<n.random()?1:-1)}}(4294967296*(g||n.random())),g=987654071*y();l.push(4294967296*y()|0)}return new B.init(l,s)}}),e=h.enc={},_=e.Hex={stringify:function(s){for(var{words:l,sigBytes:u}=s,y=[],g=0;g<u;g++){var f=l[g>>>2]>>>24-g%4*8&255;y.push((f>>>4).toString(16)),y.push((15&f).toString(16))}return y.join("")},parse:function(s){for(var l=s.length,u=[],y=0;y<l;y+=2)u[y>>>3]|=parseInt(s.substr(y,2),16)<<24-y%8*4;return new B.init(u,l/2)}},o=e.Latin1={stringify:function(s){for(var{words:l,sigBytes:u}=s,y=[],g=0;g<u;g++){var f=l[g>>>2]>>>24-g%4*8&255;y.push(String.fromCharCode(f))}return y.join("")},parse:function(s){for(var l=s.length,u=[],y=0;y<l;y++)u[y>>>2]|=(255&s.charCodeAt(y))<<24-y%4*8;return new B.init(u,l)}},v=e.Utf8={stringify:function(s){try{return decodeURIComponent(escape(o.stringify(s)))}catch(l){throw Error("Malformed UTF-8 data")}},parse:function(s){return o.parse(unescape(encodeURIComponent(s)))}},w=c.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new B.init,this._nDataBytes=0},_append:function(s){typeof s=="string"&&(s=v.parse(s)),this._data.concat(s),this._nDataBytes+=s.sigBytes},_process:function(z){var l=this._data,u=l.words,y=l.sigBytes,g=this.blockSize,f=y/(4*g),A=(f=z?n.ceil(f):n.max((0|f)-this._minBufferSize,0))*g,z=n.min(4*A,y);if(A){for(var M=0;M<A;M+=g)this._doProcessBlock(u,M);var C=u.splice(0,A);l.sigBytes-=z}return new B.init(C,z)},clone:function(){var s=i.clone.call(this);return s._data=this._data.clone(),s},_minBufferSize:0}),d=(c.Hasher=w.extend({cfg:i.extend(),init:function(s){this.cfg=this.cfg.extend(s),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(s){return this._append(s),this._process(),this},finalize:function(s){return s&&this._append(s),this._doFinalize()},blockSize:16,_createHelper:function(s){return function(l,u){return new s.init(u).finalize(l)}},_createHmacHelper:function(s){return function(l,u){return new d.HMAC.init(s,u).finalize(l)}}}),h.algo={});return h}(Math);(function(){var n=R.lib.WordArray;R.enc.Base64={stringify:function(r){for(var{words:t,sigBytes:h}=r,c=this._map,i=(r.clamp(),[]),B=0;B<h;B+=3)for(var e=(t[B>>>2]>>>24-B%4*8&255)<<16|(t[B+1>>>2]>>>24-(B+1)%4*8&255)<<8|t[B+2>>>2]>>>24-(B+2)%4*8&255,_=0;_<4&&B+0.75*_<h;_++)i.push(c.charAt(e>>>6*(3-_)&63));var o=c.charAt(64);if(o)for(;i.length%4;)i.push(o);return i.join("")},parse:function(r){var t=r.length,h=this._map;if(!(c=this._reverseMap))for(var c=this._reverseMap=[],i=0;i<h.length;i++)c[h.charCodeAt(i)]=i;for(var B,e,_=h.charAt(64),o=(_&&(_=r.indexOf(_))!==-1&&(t=_),r),v=t,w=c,d=[],s=0,l=0;l<v;l++)l%4&&(B=w[o.charCodeAt(l-1)]<<l%4*2,e=w[o.charCodeAt(l)]>>>6-l%4*2,d[s>>>2]|=(B|e)<<24-s%4*8,s++);return n.create(d,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(),function(n){for(var r=R,c=r.lib,t=c.WordArray,h=c.Hasher,c=r.algo,i=[],B=0;B<64;B++)i[B]=4294967296*n.abs(n.sin(B+1))|0;c=c.MD5=h.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(w,d){for(var s=0;s<16;s++){var l=d+s,u=w[l];w[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var y=this._hash.words,g=w[d+0],f=w[d+1],A=w[d+2],z=w[d+3],M=w[d+4],C=w[d+5],b=w[d+6],E=w[d+7],D=w[d+8],L=w[d+9],Z=w[d+10],K=w[d+11],I=w[d+12],W=w[d+13],X=w[d+14],N=w[d+15],k=e(y[0],p=y[1],S=y[2],H=y[3],g,7,i[0]),H=e(H,k,p,S,f,12,i[1]),S=e(S,H,k,p,A,17,i[2]),p=e(p,S,H,k,z,22,i[3]);k=e(k,p,S,H,M,7,i[4]),H=e(H,k,p,S,C,12,i[5]),S=e(S,H,k,p,b,17,i[6]),p=e(p,S,H,k,E,22,i[7]),k=e(k,p,S,H,D,7,i[8]),H=e(H,k,p,S,L,12,i[9]),S=e(S,H,k,p,Z,17,i[10]),p=e(p,S,H,k,K,22,i[11]),k=e(k,p,S,H,I,7,i[12]),H=e(H,k,p,S,W,12,i[13]),S=e(S,H,k,p,X,17,i[14]),k=_(k,p=e(p,S,H,k,N,22,i[15]),S,H,f,5,i[16]),H=_(H,k,p,S,b,9,i[17]),S=_(S,H,k,p,K,14,i[18]),p=_(p,S,H,k,g,20,i[19]),k=_(k,p,S,H,C,5,i[20]),H=_(H,k,p,S,Z,9,i[21]),S=_(S,H,k,p,N,14,i[22]),p=_(p,S,H,k,M,20,i[23]),k=_(k,p,S,H,L,5,i[24]),H=_(H,k,p,S,X,9,i[25]),S=_(S,H,k,p,z,14,i[26]),p=_(p,S,H,k,D,20,i[27]),k=_(k,p,S,H,W,5,i[28]),H=_(H,k,p,S,A,9,i[29]),S=_(S,H,k,p,E,14,i[30]),k=o(k,p=_(p,S,H,k,I,20,i[31]),S,H,C,4,i[32]),H=o(H,k,p,S,D,11,i[33]),S=o(S,H,k,p,K,16,i[34]),p=o(p,S,H,k,X,23,i[35]),k=o(k,p,S,H,f,4,i[36]),H=o(H,k,p,S,M,11,i[37]),S=o(S,H,k,p,E,16,i[38]),p=o(p,S,H,k,Z,23,i[39]),k=o(k,p,S,H,W,4,i[40]),H=o(H,k,p,S,g,11,i[41]),S=o(S,H,k,p,z,16,i[42]),p=o(p,S,H,k,b,23,i[43]),k=o(k,p,S,H,L,4,i[44]),H=o(H,k,p,S,I,11,i[45]),S=o(S,H,k,p,N,16,i[46]),k=v(k,p=o(p,S,H,k,A,23,i[47]),S,H,g,6,i[48]),H=v(H,k,p,S,E,10,i[49]),S=v(S,H,k,p,X,15,i[50]),p=v(p,S,H,k,C,21,i[51]),k=v(k,p,S,H,I,6,i[52]),H=v(H,k,p,S,z,10,i[53]),S=v(S,H,k,p,Z,15,i[54]),p=v(p,S,H,k,f,21,i[55]),k=v(k,p,S,H,D,6,i[56]),H=v(H,k,p,S,N,10,i[57]),S=v(S,H,k,p,b,15,i[58]),p=v(p,S,H,k,W,21,i[59]),k=v(k,p,S,H,M,6,i[60]),H=v(H,k,p,S,K,10,i[61]),S=v(S,H,k,p,A,15,i[62]),p=v(p,S,H,k,L,21,i[63]),y[0]=y[0]+k|0,y[1]=y[1]+p|0,y[2]=y[2]+S|0,y[3]=y[3]+H|0},_doFinalize:function(){for(var w=this._data,d=w.words,s=8*this._nDataBytes,l=8*w.sigBytes,u=(d[l>>>5]|=128<<24-l%32,n.floor(s/4294967296)),u=(d[15+(64+l>>>9<<4)]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8),d[14+(64+l>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),w.sigBytes=4*(d.length+1),this._process(),this._hash),y=u.words,g=0;g<4;g++){var f=y[g];y[g]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return u},clone:function(){var w=h.clone.call(this);return w._hash=this._hash.clone(),w}});function e(w,d,s,l,u,y,g){return w=w+(d&s|~d&l)+u+g,(w<<y|w>>>32-y)+d}function _(w,d,s,l,u,y,g){return w=w+(d&l|s&~l)+u+g,(w<<y|w>>>32-y)+d}function o(w,d,s,l,u,y,g){return w=w+(d^s^l)+u+g,(w<<y|w>>>32-y)+d}function v(w,d,s,l,u,y,g){return w=w+(s^(d|~l))+u+g,(w<<y|w>>>32-y)+d}r.MD5=h._createHelper(c),r.HmacMD5=h._createHmacHelper(c)}(Math),function(){var n=R,c=n.lib,r=c.WordArray,t=c.Hasher,c=n.algo,h=[],c=c.SHA1=t.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(i,B){for(var e=this._hash.words,_=e[0],o=e[1],v=e[2],w=e[3],d=e[4],s=0;s<80;s++){h[s]=s<16?0|i[B+s]:(l=h[s-3]^h[s-8]^h[s-14]^h[s-16])<<1|l>>>31;var l=(_<<5|_>>>27)+d+h[s];l+=s<20?1518500249+(o&v|~o&w):s<40?1859775393+(o^v^w):s<60?(o&v|o&w|v&w)-1894007588:(o^v^w)-899497514,d=w,w=v,v=o<<30|o>>>2,o=_,_=l}e[0]=e[0]+_|0,e[1]=e[1]+o|0,e[2]=e[2]+v|0,e[3]=e[3]+w|0,e[4]=e[4]+d|0},_doFinalize:function(){var i=this._data,B=i.words,e=8*this._nDataBytes,_=8*i.sigBytes;return B[_>>>5]|=128<<24-_%32,B[14+(64+_>>>9<<4)]=Math.floor(e/4294967296),B[15+(64+_>>>9<<4)]=e,i.sigBytes=4*B.length,this._process(),this._hash},clone:function(){var i=t.clone.call(this);return i._hash=this._hash.clone(),i}});n.SHA1=t._createHelper(c),n.HmacSHA1=t._createHmacHelper(c)}(),function(n){var r=R,v=r.lib,t=v.WordArray,h=v.Hasher,v=r.algo,c=[],i=[];function B(w){return 4294967296*(w-(0|w))|0}for(var e=2,_=0;_<64;)!function(w){for(var d=n.sqrt(w),s=2;s<=d;s++)if(!(w%s))return;return 1}(e)||(_<8&&(c[_]=B(n.pow(e,0.5))),i[_]=B(n.pow(e,0.3333333333333333)),_++),e++;var o=[],v=v.SHA256=h.extend({_doReset:function(){this._hash=new t.init(c.slice(0))},_doProcessBlock:function(w,d){for(var s=this._hash.words,l=s[0],u=s[1],y=s[2],g=s[3],f=s[4],A=s[5],z=s[6],M=s[7],C=0;C<64;C++){o[C]=C<16?0|w[d+C]:(((b=o[C-15])<<25|b>>>7)^(b<<14|b>>>18)^b>>>3)+o[C-7]+(((b=o[C-2])<<15|b>>>17)^(b<<13|b>>>19)^b>>>10)+o[C-16];var b=l&u^l&y^u&y,E=M+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&A^~f&z)+i[C]+o[C],M=z,z=A,A=f,f=g+E|0,g=y,y=u,u=l,l=E+(((l<<30|l>>>2)^(l<<19|l>>>13)^(l<<10|l>>>22))+b)|0}s[0]=s[0]+l|0,s[1]=s[1]+u|0,s[2]=s[2]+y|0,s[3]=s[3]+g|0,s[4]=s[4]+f|0,s[5]=s[5]+A|0,s[6]=s[6]+z|0,s[7]=s[7]+M|0},_doFinalize:function(){var w=this._data,d=w.words,s=8*this._nDataBytes,l=8*w.sigBytes;return d[l>>>5]|=128<<24-l%32,d[14+(64+l>>>9<<4)]=n.floor(s/4294967296),d[15+(64+l>>>9<<4)]=s,w.sigBytes=4*d.length,this._process(),this._hash},clone:function(){var w=h.clone.call(this);return w._hash=this._hash.clone(),w}});r.SHA256=h._createHelper(v),r.HmacSHA256=h._createHmacHelper(v)}(Math),function(){var n=R.lib.WordArray,r=R.enc;r.Utf16=r.Utf16BE={stringify:function(h){for(var{words:c,sigBytes:i}=h,B=[],e=0;e<i;e+=2){var _=c[e>>>2]>>>16-e%4*8&65535;B.push(String.fromCharCode(_))}return B.join("")},parse:function(h){for(var c=h.length,i=[],B=0;B<c;B++)i[B>>>1]|=h.charCodeAt(B)<<16-B%2*16;return n.create(i,2*c)}};function t(h){return h<<8&4278255360|h>>>8&16711935}r.Utf16LE={stringify:function(h){for(var{words:c,sigBytes:i}=h,B=[],e=0;e<i;e+=2){var _=t(c[e>>>2]>>>16-e%4*8&65535);B.push(String.fromCharCode(_))}return B.join("")},parse:function(h){for(var c=h.length,i=[],B=0;B<c;B++)i[B>>>1]|=t(h.charCodeAt(B)<<16-B%2*16);return n.create(i,2*c)}}}(),function(){var n,r;typeof ArrayBuffer=="function"&&(n=R.lib.WordArray,r=n.init,(n.init=function(t){if((t=(t=t instanceof ArrayBuffer?new Uint8Array(t):t)instanceof Int8Array||typeof Uint8ClampedArray<"u"&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t)instanceof Uint8Array){for(var h=t.byteLength,c=[],i=0;i<h;i++)c[i>>>2]|=t[i]<<24-i%4*8;r.call(this,c,h)}else r.apply(this,arguments)}).prototype=n)}(),function(){var n=R,o=n.lib,r=o.WordArray,t=o.Hasher,o=n.algo,h=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),i=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),B=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),e=r.create([0,1518500249,1859775393,2400959708,2840853838]),_=r.create([1352829926,1548603684,1836072691,2053994217,0]),o=o.RIPEMD160=t.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(s,l){for(var u=0;u<16;u++){var y=l+u,g=s[y];s[y]=16711935&(g<<8|g>>>24)|4278255360&(g<<24|g>>>8)}for(var f,A,z,M,C,b,E=this._hash.words,D=e.words,L=_.words,Z=h.words,K=c.words,I=i.words,W=B.words,X=f=E[0],N=A=E[1],k=z=E[2],H=M=E[3],S=C=E[4],u=0;u<80;u+=1)b=(b=d(b=(b=f+s[l+Z[u]]|0)+(u<16?(A^z^M)+D[0]:u<32?v(A,z,M)+D[1]:u<48?((A|~z)^M)+D[2]:u<64?w(A,z,M)+D[3]:(A^(z|~M))+D[4])|0,I[u]))+C|0,f=C,C=M,M=d(z,10),z=A,A=b,b=(b=d(b=(b=X+s[l+K[u]]|0)+(u<16?(N^(k|~H))+L[0]:u<32?w(N,k,H)+L[1]:u<48?((N|~k)^H)+L[2]:u<64?v(N,k,H)+L[3]:(N^k^H)+L[4])|0,W[u]))+S|0,X=S,S=H,H=d(k,10),k=N,N=b;b=E[1]+z+H|0,E[1]=E[2]+M+S|0,E[2]=E[3]+C+X|0,E[3]=E[4]+f+N|0,E[4]=E[0]+A+k|0,E[0]=b},_doFinalize:function(){for(var s=this._data,l=s.words,u=8*this._nDataBytes,y=8*s.sigBytes,y=(l[y>>>5]|=128<<24-y%32,l[14+(64+y>>>9<<4)]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8),s.sigBytes=4*(l.length+1),this._process(),this._hash),g=y.words,f=0;f<5;f++){var A=g[f];g[f]=16711935&(A<<8|A>>>24)|4278255360&(A<<24|A>>>8)}return y},clone:function(){var s=t.clone.call(this);return s._hash=this._hash.clone(),s}});function v(s,l,u){return s&l|~s&u}function w(s,l,u){return s&u|l&~u}function d(s,l){return s<<l|s>>>32-l}n.RIPEMD160=t._createHelper(o),n.HmacRIPEMD160=t._createHmacHelper(o)}(Math),function(){var n=R.lib.Base,r=R.enc.Utf8;R.algo.HMAC=n.extend({init:function(t,h){t=this._hasher=new t.init,typeof h=="string"&&(h=r.parse(h));for(var c=t.blockSize,i=4*c,t=((h=h.sigBytes>i?t.finalize(h):h).clamp(),this._oKey=h.clone()),h=this._iKey=h.clone(),B=t.words,e=h.words,_=0;_<c;_++)B[_]^=1549556828,e[_]^=909522486;t.sigBytes=h.sigBytes=i,this.reset()},reset:function(){var t=this._hasher;t.reset(),t.update(this._iKey)},update:function(t){return this._hasher.update(t),this},finalize:function(c){var h=this._hasher,c=h.finalize(c);return h.reset(),h.finalize(this._oKey.clone().concat(c))}})}(),function(){var n=R,h=n.lib,r=h.Base,t=h.WordArray,h=n.algo,c=h.SHA1,i=h.HMAC,B=h.PBKDF2=r.extend({cfg:r.extend({keySize:4,hasher:c,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,_){for(var o=this.cfg,v=i.create(o.hasher,e),w=t.create(),d=t.create([1]),s=w.words,l=d.words,u=o.keySize,y=o.iterations;s.length<u;){for(var g=v.update(_).finalize(d),f=(v.reset(),g.words),A=f.length,z=g,M=1;M<y;M++){z=v.finalize(z),v.reset();for(var C=z.words,b=0;b<A;b++)f[b]^=C[b]}w.concat(g),l[0]++}return w.sigBytes=4*u,w}});n.PBKDF2=function(e,_,o){return B.create(o).compute(e,_)}}(),function(){var n=R,h=n.lib,r=h.Base,t=h.WordArray,h=n.algo,c=h.MD5,i=h.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:c,iterations:1}),init:function(B){this.cfg=this.cfg.extend(B)},compute:function(B,e){for(var _=this.cfg,o=_.hasher.create(),v=t.create(),w=v.words,d=_.keySize,s=_.iterations;w.length<d;){l&&o.update(l);var l=o.update(B).finalize(e);o.reset();for(var u=1;u<s;u++)l=o.finalize(l),o.reset();v.concat(l)}return v.sigBytes=4*d,v}});n.EvpKDF=function(B,e,_){return i.create(_).compute(B,e)}}(),function(){var n=R,r=n.lib.WordArray,h=n.algo,t=h.SHA256,h=h.SHA224=t.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var c=t._doFinalize.call(this);return c.sigBytes-=4,c}});n.SHA224=t._createHelper(h),n.HmacSHA224=t._createHmacHelper(h)}(),function(){var n=R,h=n.lib,r=h.Base,t=h.WordArray,h=n.x64={};h.Word=r.extend({init:function(c,i){this.high=c,this.low=i}}),h.WordArray=r.extend({init:function(c,i){c=this.words=c||[],this.sigBytes=i!=null?i:8*c.length},toX32:function(){for(var c=this.words,i=c.length,B=[],e=0;e<i;e++){var _=c[e];B.push(_.high),B.push(_.low)}return t.create(B,this.sigBytes)},clone:function(){for(var c=r.clone.call(this),i=c.words=this.words.slice(0),B=i.length,e=0;e<B;e++)i[e]=i[e].clone();return c}})}(),function(n){for(var r=R,i=r.lib,t=i.WordArray,h=i.Hasher,c=r.x64.Word,i=r.algo,B=[],e=[],_=[],o=1,v=0,w=0;w<24;w++){B[o+5*v]=(w+1)*(w+2)/2%64;var d=(2*o+3*v)%5;o=v%5,v=d}for(o=0;o<5;o++)for(v=0;v<5;v++)e[o+5*v]=v+(2*o+3*v)%5*5;for(var s=1,l=0;l<24;l++){for(var u,y=0,g=0,f=0;f<7;f++)1&s&&((u=(1<<f)-1)<32?g^=1<<u:y^=1<<u-32),128&s?s=s<<1^113:s<<=1;_[l]=c.create(y,g)}for(var A=[],z=0;z<25;z++)A[z]=c.create();i=i.SHA3=h.extend({cfg:h.cfg.extend({outputLength:512}),_doReset:function(){for(var M=this._state=[],C=0;C<25;C++)M[C]=new c.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(M,C){for(var b=this._state,E=this.blockSize/2,D=0;D<E;D++){var Z=M[C+2*D],L=M[C+2*D+1],Z=16711935&(Z<<8|Z>>>24)|4278255360&(Z<<24|Z>>>8);($=b[D]).high^=16711935&(L<<8|L>>>24)|4278255360&(L<<24|L>>>8),$.low^=Z}for(var K=0;K<24;K++){for(var I=0;I<5;I++){for(var W=0,X=0,N=0;N<5;N++)W^=($=b[I+5*N]).high,X^=$.low;var k=A[I];k.high=W,k.low=X}for(I=0;I<5;I++)for(var H=A[(I+4)%5],p=A[(I+1)%5],S=p.high,p=p.low,W=H.high^(S<<1|p>>>31),X=H.low^(p<<1|S>>>31),N=0;N<5;N++)($=b[I+5*N]).high^=W,$.low^=X;for(var Y=1;Y<25;Y++){var Q=($=b[Y]).high,J=$.low,U=B[Y],Q=(X=U<32?(W=Q<<U|J>>>32-U,J<<U|Q>>>32-U):(W=J<<U-32|Q>>>64-U,Q<<U-32|J>>>64-U),A[e[Y]]);Q.high=W,Q.low=X}var G=A[0],O=b[0];G.high=O.high,G.low=O.low;for(I=0;I<5;I++)for(N=0;N<5;N++){var $=b[Y=I+5*N],j=A[Y],x=A[(I+1)%5+5*N],c1=A[(I+2)%5+5*N];$.high=j.high^~x.high&c1.high,$.low=j.low^~x.low&c1.low}$=b[0],G=_[K],$.high^=G.high,$.low^=G.low}},_doFinalize:function(){for(var M=this._data,C=M.words,D=(this._nDataBytes,8*M.sigBytes),b=32*this.blockSize,E=(C[D>>>5]|=1<<24-D%32,C[(n.ceil((1+D)/b)*b>>>5)-1]|=128,M.sigBytes=4*C.length,this._process(),this._state),D=this.cfg.outputLength/8,L=D/8,Z=[],K=0;K<L;K++){var I=E[K],W=I.high,I=I.low,W=16711935&(W<<8|W>>>24)|4278255360&(W<<24|W>>>8);Z.push(16711935&(I<<8|I>>>24)|4278255360&(I<<24|I>>>8)),Z.push(W)}return new t.init(Z,D)},clone:function(){for(var M=h.clone.call(this),C=M._state=this._state.slice(0),b=0;b<25;b++)C[b]=C[b].clone();return M}}),r.SHA3=h._createHelper(i),r.HmacSHA3=h._createHmacHelper(i)}(Math),function(){var n=R,r=n.lib.Hasher,c=n.x64,t=c.Word,h=c.WordArray,c=n.algo;function i(){return t.create.apply(t,arguments)}for(var B=[i(1116352408,3609767458),i(1899447441,602891725),i(3049323471,3964484399),i(3921009573,2173295548),i(961987163,4081628472),i(1508970993,3053834265),i(2453635748,2937671579),i(2870763221,3664609560),i(3624381080,2734883394),i(310598401,1164996542),i(607225278,1323610764),i(1426881987,3590304994),i(1925078388,4068182383),i(2162078206,991336113),i(2614888103,633803317),i(3248222580,3479774868),i(3835390401,2666613458),i(4022224774,944711139),i(264347078,2341262773),i(604807628,2007800933),i(770255983,1495990901),i(1249150122,1856431235),i(1555081692,3175218132),i(1996064986,2198950837),i(2554220882,3999719339),i(2821834349,766784016),i(2952996808,2566594879),i(3210313671,3203337956),i(3336571891,1034457026),i(3584528711,2466948901),i(113926993,3758326383),i(338241895,168717936),i(666307205,1188179964),i(773529912,1546045734),i(1294757372,1522805485),i(1396182291,2643833823),i(1695183700,2343527390),i(1986661051,1014477480),i(2177026350,1206759142),i(2456956037,344077627),i(2730485921,1290863460),i(2820302411,3158454273),i(3259730800,3505952657),i(3345764771,106217008),i(3516065817,3606008344),i(3600352804,1432725776),i(4094571909,1467031594),i(275423344,851169720),i(430227734,3100823752),i(506948616,1363258195),i(659060556,3750685593),i(883997877,3785050280),i(958139571,3318307427),i(1322822218,3812723403),i(1537002063,2003034995),i(1747873779,3602036899),i(1955562222,1575990012),i(2024104815,1125592928),i(2227730452,2716904306),i(2361852424,442776044),i(2428436474,593698344),i(2756734187,3733110249),i(3204031479,2999351573),i(3329325298,3815920427),i(3391569614,3928383900),i(3515267271,566280711),i(3940187606,3454069534),i(4118630271,4000239992),i(116418474,1914138554),i(174292421,2731055270),i(289380356,3203993006),i(460393269,320620315),i(685471733,587496836),i(852142971,1086792851),i(1017036298,365543100),i(1126000580,2618297676),i(1288033470,3409855158),i(1501505948,4234509866),i(1607167915,987167468),i(1816402316,1246189591)],e=[],_=0;_<80;_++)e[_]=i();c=c.SHA512=r.extend({_doReset:function(){this._hash=new h.init([new t.init(1779033703,4089235720),new t.init(3144134277,2227873595),new t.init(1013904242,4271175723),new t.init(2773480762,1595750129),new t.init(1359893119,2917565137),new t.init(2600822924,725511199),new t.init(528734635,4215389547),new t.init(1541459225,327033209)])},_doProcessBlock:function(o,v){for(var f=this._hash.words,w=f[0],d=f[1],s=f[2],l=f[3],u=f[4],y=f[5],g=f[6],f=f[7],A=w.high,z=w.low,M=d.high,C=d.low,b=s.high,E=s.low,D=l.high,L=l.low,Z=u.high,K=u.low,I=y.high,W=y.low,X=g.high,N=g.low,k=f.high,H=f.low,P=A,S=z,_1=M,n1=C,s1=b,m=E,H1=D,e1=L,V=Z,p=K,B1=I,t1=W,y1=X,r1=N,S1=k,h1=H,Y=0;Y<80;Y++)var J,U,x=e[Y],Q=(Y<16?(U=x.high=0|o[v+2*Y],J=x.low=0|o[v+2*Y+1]):(O=(j=e[Y-15]).high,j=j.low,G=(Q=e[Y-2]).high,Q=Q.low,U=(U=(U=((O>>>1|j<<31)^(O>>>8|j<<24)^O>>>7)+($=e[Y-7]).high+((J=(j=(j>>>1|O<<31)^(j>>>8|O<<24)^(j>>>7|O<<25))+$.low)>>>0<j>>>0?1:0))+((G>>>19|Q<<13)^(G<<3|Q>>>29)^G>>>6)+((J=J+(O=(Q>>>19|G<<13)^(Q<<3|G>>>29)^(Q>>>6|G<<26)))>>>0<O>>>0?1:0))+($=e[Y-16]).high+((J=J+(j=$.low))>>>0<j>>>0?1:0),x.high=U,x.low=J),V&B1^~V&y1),G=p&t1^~p&r1,O=P&_1^P&s1^_1&s1,$=(S>>>28|P<<4)^(S<<30|P>>>2)^(S<<25|P>>>7),j=B[Y],x=j.high,c1=j.low,T=h1+((p>>>14|V<<18)^(p>>>18|V<<14)^(p<<23|V>>>9)),g1=S1+((V>>>14|p<<18)^(V>>>18|p<<14)^(V<<23|p>>>9))+(T>>>0<h1>>>0?1:0),C1=$+(S&n1^S&m^n1&m),S1=y1,h1=r1,y1=B1,r1=t1,B1=V,t1=p,V=H1+(g1=g1+Q+((T=T+G)>>>0<G>>>0?1:0)+x+((T=T+c1)>>>0<c1>>>0?1:0)+U+((T=T+J)>>>0<J>>>0?1:0))+((p=e1+T|0)>>>0<e1>>>0?1:0)|0,H1=s1,e1=m,s1=_1,m=n1,_1=P,n1=S,P=g1+(((P>>>28|S<<4)^(P<<30|S>>>2)^(P<<25|S>>>7))+O+(C1>>>0<$>>>0?1:0))+((S=T+C1|0)>>>0<T>>>0?1:0)|0;z=w.low=z+S,w.high=A+P+(z>>>0<S>>>0?1:0),C=d.low=C+n1,d.high=M+_1+(C>>>0<n1>>>0?1:0),E=s.low=E+m,s.high=b+s1+(E>>>0<m>>>0?1:0),L=l.low=L+e1,l.high=D+H1+(L>>>0<e1>>>0?1:0),K=u.low=K+p,u.high=Z+V+(K>>>0<p>>>0?1:0),W=y.low=W+t1,y.high=I+B1+(W>>>0<t1>>>0?1:0),N=g.low=N+r1,g.high=X+y1+(N>>>0<r1>>>0?1:0),H=f.low=H+h1,f.high=k+S1+(H>>>0<h1>>>0?1:0)},_doFinalize:function(){var o=this._data,v=o.words,w=8*this._nDataBytes,d=8*o.sigBytes;return v[d>>>5]|=128<<24-d%32,v[30+(128+d>>>10<<5)]=Math.floor(w/4294967296),v[31+(128+d>>>10<<5)]=w,o.sigBytes=4*v.length,this._process(),this._hash.toX32()},clone:function(){var o=r.clone.call(this);return o._hash=this._hash.clone(),o},blockSize:32}),n.SHA512=r._createHelper(c),n.HmacSHA512=r._createHmacHelper(c)}(),function(){var n=R,c=n.x64,r=c.Word,t=c.WordArray,c=n.algo,h=c.SHA512,c=c.SHA384=h.extend({_doReset:function(){this._hash=new t.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var i=h._doFinalize.call(this);return i.sigBytes-=16,i}});n.SHA384=h._createHelper(c),n.HmacSHA384=h._createHmacHelper(c)}(),R.lib.Cipher||function(){var n=R,r=n.lib,t=r.Base,h=r.WordArray,c=r.BufferedBlockAlgorithm,s=n.enc,i=(s.Utf8,s.Base64),B=n.algo.EvpKDF,e=r.Cipher=c.extend({cfg:t.extend(),createEncryptor:function(u,y){return this.create(this._ENC_XFORM_MODE,u,y)},createDecryptor:function(u,y){return this.create(this._DEC_XFORM_MODE,u,y)},init:function(u,y,g){this.cfg=this.cfg.extend(g),this._xformMode=u,this._key=y,this.reset()},reset:function(){c.reset.call(this),this._doReset()},process:function(u){return this._append(u),this._process()},finalize:function(u){return u&&this._append(u),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(u){return{encrypt:function(y,g,f){return _(g).encrypt(u,y,g,f)},decrypt:function(y,g,f){return _(g).decrypt(u,y,g,f)}}}});function _(u){return typeof u=="string"?l:d}r.StreamCipher=e.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var s=n.mode={},w=r.BlockCipherMode=t.extend({createEncryptor:function(u,y){return this.Encryptor.create(u,y)},createDecryptor:function(u,y){return this.Decryptor.create(u,y)},init:function(u,y){this._cipher=u,this._iv=y}}),w=s.CBC=((s=w.extend()).Encryptor=s.extend({processBlock:function(u,y){var g=this._cipher,f=g.blockSize;o.call(this,u,y,f),g.encryptBlock(u,y),this._prevBlock=u.slice(y,y+f)}}),s.Decryptor=s.extend({processBlock:function(u,y){var g=this._cipher,f=g.blockSize,A=u.slice(y,y+f);g.decryptBlock(u,y),o.call(this,u,y,f),this._prevBlock=A}}),s);function o(u,y,g){var f,A=this._iv;A?(f=A,this._iv=void 0):f=this._prevBlock;for(var z=0;z<g;z++)u[y+z]^=f[z]}var s=(n.pad={}).Pkcs7={pad:function(u,y){for(var y=4*y,g=y-u.sigBytes%y,f=g<<24|g<<16|g<<8|g,A=[],z=0;z<g;z+=4)A.push(f);y=h.create(A,g),u.concat(y)},unpad:function(u){var y=255&u.words[u.sigBytes-1>>>2];u.sigBytes-=y}},v=(r.BlockCipher=e.extend({cfg:e.cfg.extend({mode:w,padding:s}),reset:function(){e.reset.call(this);var u,g=this.cfg,y=g.iv,g=g.mode;this._xformMode==this._ENC_XFORM_MODE?u=g.createEncryptor:(u=g.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==u?this._mode.init(this,y&&y.words):(this._mode=u.call(g,this,y&&y.words),this._mode.__creator=u)},_doProcessBlock:function(u,y){this._mode.processBlock(u,y)},_doFinalize:function(){var u,y=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(y.pad(this._data,this.blockSize),u=this._process(!0)):(u=this._process(!0),y.unpad(u)),u},blockSize:4}),r.CipherParams=t.extend({init:function(u){this.mixIn(u)},toString:function(u){return(u||this.formatter).stringify(this)}})),w=(n.format={}).OpenSSL={stringify:function(g){var{ciphertext:y,salt:g}=g;return(g?h.create([1398893684,1701076831]).concat(g).concat(y):y).toString(i)},parse:function(g){var y,g=i.parse(g),f=g.words;return f[0]==1398893684&&f[1]==1701076831&&(y=h.create(f.slice(2,4)),f.splice(0,4),g.sigBytes-=16),v.create({ciphertext:g,salt:y})}},d=r.SerializableCipher=t.extend({cfg:t.extend({format:w}),encrypt:function(u,A,g,f){f=this.cfg.extend(f);var z=u.createEncryptor(g,f),A=z.finalize(A),z=z.cfg;return v.create({ciphertext:A,key:g,iv:z.iv,algorithm:u,mode:z.mode,padding:z.padding,blockSize:u.blockSize,formatter:f.format})},decrypt:function(u,y,g,f){return f=this.cfg.extend(f),y=this._parse(y,f.format),u.createDecryptor(g,f).finalize(y.ciphertext)},_parse:function(u,y){return typeof u=="string"?y.parse(u,this):u}}),s=(n.kdf={}).OpenSSL={execute:function(u,y,g,f){return f=f||h.random(8),u=B.create({keySize:y+g}).compute(u,f),g=h.create(u.words.slice(y),4*g),u.sigBytes=4*y,v.create({key:u,iv:g,salt:f})}},l=r.PasswordBasedCipher=d.extend({cfg:d.cfg.extend({kdf:s}),encrypt:function(u,y,g,f){return g=(f=this.cfg.extend(f)).kdf.execute(g,u.keySize,u.ivSize),f.iv=g.iv,u=d.encrypt.call(this,u,y,g.key,f),u.mixIn(g),u},decrypt:function(u,y,g,f){return f=this.cfg.extend(f),y=this._parse(y,f.format),g=f.kdf.execute(g,u.keySize,u.ivSize,y.salt),f.iv=g.iv,d.decrypt.call(this,u,y,g.key,f)}})}(),R.mode.CFB=function(){var n=R.lib.BlockCipherMode.extend();function r(t,h,c,i){var B,e=this._iv;e?(B=e.slice(0),this._iv=void 0):B=this._prevBlock,i.encryptBlock(B,0);for(var _=0;_<c;_++)t[h+_]^=B[_]}return n.Encryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize;r.call(this,t,h,i,c),this._prevBlock=t.slice(h,h+i)}}),n.Decryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize,B=t.slice(h,h+i);r.call(this,t,h,i,c),this._prevBlock=B}}),n}(),R.mode.ECB=function(){var n=R.lib.BlockCipherMode.extend();return n.Encryptor=n.extend({processBlock:function(r,t){this._cipher.encryptBlock(r,t)}}),n.Decryptor=n.extend({processBlock:function(r,t){this._cipher.decryptBlock(r,t)}}),n}(),R.pad.AnsiX923={pad:function(n,t){var h=n.sigBytes,t=4*t,t=t-h%t,h=h+t-1;n.clamp(),n.words[h>>>2]|=t<<24-h%4*8,n.sigBytes+=t},unpad:function(n){var r=255&n.words[n.sigBytes-1>>>2];n.sigBytes-=r}},R.pad.Iso10126={pad:function(n,r){r*=4,r-=n.sigBytes%r,n.concat(R.lib.WordArray.random(r-1)).concat(R.lib.WordArray.create([r<<24],1))},unpad:function(n){var r=255&n.words[n.sigBytes-1>>>2];n.sigBytes-=r}},R.pad.Iso97971={pad:function(n,r){n.concat(R.lib.WordArray.create([2147483648],1)),R.pad.ZeroPadding.pad(n,r)},unpad:function(n){R.pad.ZeroPadding.unpad(n),n.sigBytes--}},R.mode.OFB=function(){var n=R.lib.BlockCipherMode.extend(),r=n.Encryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize,B=this._iv,e=this._keystream;B&&(e=this._keystream=B.slice(0),this._iv=void 0),c.encryptBlock(e,0);for(var _=0;_<i;_++)t[h+_]^=e[_]}});return n.Decryptor=r,n}(),R.pad.NoPadding={pad:function(){},unpad:function(){}},function(){var n=R.lib.CipherParams,r=R.enc.Hex;R.format.Hex={stringify:function(t){return t.ciphertext.toString(r)},parse:function(t){return t=r.parse(t),n.create({ciphertext:t})}}}(),function(){for(var n=R,r=n.lib.BlockCipher,C=n.algo,t=[],h=[],c=[],i=[],B=[],e=[],_=[],o=[],v=[],w=[],d=[],s=0;s<256;s++)d[s]=s<128?s<<1:s<<1^283;for(var l=0,u=0,s=0;s<256;s++){var y=u^u<<1^u<<2^u<<3^u<<4,g=d[h[t[l]=y=y>>>8^255&y^99]=l],f=d[g],A=d[f],z=257*d[y]^16843008*y;c[l]=z<<24|z>>>8,i[l]=z<<16|z>>>16,B[l]=z<<8|z>>>24,e[l]=z,_[y]=(z=16843009*A^65537*f^257*g^16843008*l)<<24|z>>>8,o[y]=z<<16|z>>>16,v[y]=z<<8|z>>>24,w[y]=z,l?(l=g^d[d[d[A^g]]],u^=d[d[u]]):l=u=1}var M=[0,1,2,4,8,16,32,64,128,27,54],C=C.AES=r.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var b=this._keyPriorReset=this._key,E=b.words,D=b.sigBytes/4,L=4*(1+(this._nRounds=6+D)),Z=this._keySchedule=[],K=0;K<L;K++)K<D?Z[K]=E[K]:(X=Z[K-1],K%D?6<D&&K%D==4&&(X=t[X>>>24]<<24|t[X>>>16&255]<<16|t[X>>>8&255]<<8|t[255&X]):(X=t[(X=X<<8|X>>>24)>>>24]<<24|t[X>>>16&255]<<16|t[X>>>8&255]<<8|t[255&X],X^=M[K/D|0]<<24),Z[K]=Z[K-D]^X);for(var I=this._invKeySchedule=[],W=0;W<L;W++){var X,K=L-W;X=W%4?Z[K]:Z[K-4],I[W]=W<4||K<=4?X:_[t[X>>>24]]^o[t[X>>>16&255]]^v[t[X>>>8&255]]^w[t[255&X]]}}},encryptBlock:function(b,E){this._doCryptBlock(b,E,this._keySchedule,c,i,B,e,t)},decryptBlock:function(b,E){var D=b[E+1],D=(b[E+1]=b[E+3],b[E+3]=D,this._doCryptBlock(b,E,this._invKeySchedule,_,o,v,w,h),b[E+1]);b[E+1]=b[E+3],b[E+3]=D},_doCryptBlock:function(b,E,D,L,Z,K,I,W){for(var X=this._nRounds,J=b[E]^D[0],U=b[E+1]^D[1],Q=b[E+2]^D[2],G=b[E+3]^D[3],N=4,k=1;k<X;k++)var H=L[J>>>24]^Z[U>>>16&255]^K[Q>>>8&255]^I[255&G]^D[N++],S=L[U>>>24]^Z[Q>>>16&255]^K[G>>>8&255]^I[255&J]^D[N++],p=L[Q>>>24]^Z[G>>>16&255]^K[J>>>8&255]^I[255&U]^D[N++],Y=L[G>>>24]^Z[J>>>16&255]^K[U>>>8&255]^I[255&Q]^D[N++],J=H,U=S,Q=p,G=Y;H=(W[J>>>24]<<24|W[U>>>16&255]<<16|W[Q>>>8&255]<<8|W[255&G])^D[N++],S=(W[U>>>24]<<24|W[Q>>>16&255]<<16|W[G>>>8&255]<<8|W[255&J])^D[N++],p=(W[Q>>>24]<<24|W[G>>>16&255]<<16|W[J>>>8&255]<<8|W[255&U])^D[N++],Y=(W[G>>>24]<<24|W[J>>>16&255]<<16|W[U>>>8&255]<<8|W[255&Q])^D[N++],b[E]=H,b[E+1]=S,b[E+2]=p,b[E+3]=Y},keySize:8});n.AES=r._createHelper(C)}(),function(){var n=R,t=n.lib,r=t.WordArray,t=t.BlockCipher,h=n.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],i=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],B=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],e=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],_=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],o=h.DES=t.extend({_doReset:function(){for(var d=this._key.words,s=[],l=0;l<56;l++){var u=c[l]-1;s[l]=d[u>>>5]>>>31-u%32&1}for(var y=this._subKeys=[],g=0;g<16;g++){for(var f=y[g]=[],A=B[g],l=0;l<24;l++)f[l/6|0]|=s[(i[l]-1+A)%28]<<31-l%6,f[4+(l/6|0)]|=s[28+(i[l+24]-1+A)%28]<<31-l%6;f[0]=f[0]<<1|f[0]>>>31;for(l=1;l<7;l++)f[l]=f[l]>>>4*(l-1)+3;f[7]=f[7]<<5|f[7]>>>27}for(var z=this._invSubKeys=[],l=0;l<16;l++)z[l]=y[15-l]},encryptBlock:function(d,s){this._doCryptBlock(d,s,this._subKeys)},decryptBlock:function(d,s){this._doCryptBlock(d,s,this._invSubKeys)},_doCryptBlock:function(d,s,l){this._lBlock=d[s],this._rBlock=d[s+1],v.call(this,4,252645135),v.call(this,16,65535),w.call(this,2,858993459),w.call(this,8,16711935),v.call(this,1,1431655765);for(var u=0;u<16;u++){for(var y=l[u],g=this._lBlock,f=this._rBlock,A=0,z=0;z<8;z++)A|=e[z][((f^y[z])&_[z])>>>0];this._lBlock=f,this._rBlock=g^A}var M=this._lBlock;this._lBlock=this._rBlock,this._rBlock=M,v.call(this,1,1431655765),w.call(this,8,16711935),w.call(this,2,858993459),v.call(this,16,65535),v.call(this,4,252645135),d[s]=this._lBlock,d[s+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function v(d,s){s=(this._lBlock>>>d^this._rBlock)&s,this._rBlock^=s,this._lBlock^=s<<d}function w(d,s){s=(this._rBlock>>>d^this._lBlock)&s,this._lBlock^=s,this._rBlock^=s<<d}n.DES=t._createHelper(o),h=h.TripleDES=t.extend({_doReset:function(){var d=this._key.words;this._des1=o.createEncryptor(r.create(d.slice(0,2))),this._des2=o.createEncryptor(r.create(d.slice(2,4))),this._des3=o.createEncryptor(r.create(d.slice(4,6)))},encryptBlock:function(d,s){this._des1.encryptBlock(d,s),this._des2.decryptBlock(d,s),this._des3.encryptBlock(d,s)},decryptBlock:function(d,s){this._des3.decryptBlock(d,s),this._des2.encryptBlock(d,s),this._des1.decryptBlock(d,s)},keySize:6,ivSize:2,blockSize:2}),n.TripleDES=t._createHelper(h)}(),function(){var n=R,r=n.lib.StreamCipher,t=n.algo,h=t.RC4=r.extend({_doReset:function(){for(var i=this._key,B=i.words,e=i.sigBytes,_=this._S=[],o=0;o<256;o++)_[o]=o;for(var o=0,v=0;o<256;o++){var w=o%e,w=B[w>>>2]>>>24-w%4*8&255,v=(v+_[o]+w)%256,w=_[o];_[o]=_[v],_[v]=w}this._i=this._j=0},_doProcessBlock:function(i,B){i[B]^=c.call(this)},keySize:8,ivSize:0});function c(){for(var i=this._S,B=this._i,e=this._j,_=0,o=0;o<4;o++){var e=(e+i[B=(B+1)%256])%256,v=i[B];i[B]=i[e],i[e]=v,_|=i[(i[B]+i[e])%256]<<24-8*o}return this._i=B,this._j=e,_}n.RC4=r._createHelper(h),t=t.RC4Drop=h.extend({cfg:h.cfg.extend({drop:192}),_doReset:function(){h._doReset.call(this);for(var i=this.cfg.drop;0<i;i--)c.call(this)}}),n.RC4Drop=r._createHelper(t)}(),R.mode.CTRGladman=function(){var n=R.lib.BlockCipherMode.extend();function r(h){var c,i,B;return(h>>24&255)==255?(i=h>>8&255,B=255&h,(c=h>>16&255)===255?(c=0,i===255?(i=0,B===255?B=0:++B):++i):++c,h=0,h=(h+=c<<16)+(i<<8)+B):h+=16777216,h}var t=n.Encryptor=n.extend({processBlock:function(h,c){var i=this._cipher,B=i.blockSize,e=this._iv,_=this._counter,o=(e&&(_=this._counter=e.slice(0),this._iv=void 0),((e=_)[0]=r(e[0]))===0&&(e[1]=r(e[1])),_.slice(0));i.encryptBlock(o,0);for(var v=0;v<B;v++)h[c+v]^=o[v]}});return n.Decryptor=t,n}(),function(){var n=R,r=n.lib.StreamCipher,i=n.algo,t=[],h=[],c=[],i=i.Rabbit=r.extend({_doReset:function(){for(var e=this._key.words,_=this.cfg.iv,o=0;o<4;o++)e[o]=16711935&(e[o]<<8|e[o]>>>24)|4278255360&(e[o]<<24|e[o]>>>8);for(var v=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],w=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]],o=this._b=0;o<4;o++)B.call(this);for(o=0;o<8;o++)w[o]^=v[o+4&7];if(_){var _=_.words,d=_[0],_=_[1],d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),_=16711935&(_<<8|_>>>24)|4278255360&(_<<24|_>>>8),s=d>>>16|4294901760&_,l=_<<16|65535&d;w[0]^=d,w[1]^=s,w[2]^=_,w[3]^=l,w[4]^=d,w[5]^=s,w[6]^=_,w[7]^=l;for(o=0;o<4;o++)B.call(this)}},_doProcessBlock:function(e,_){var o=this._X;B.call(this),t[0]=o[0]^o[5]>>>16^o[3]<<16,t[1]=o[2]^o[7]>>>16^o[5]<<16,t[2]=o[4]^o[1]>>>16^o[7]<<16,t[3]=o[6]^o[3]>>>16^o[1]<<16;for(var v=0;v<4;v++)t[v]=16711935&(t[v]<<8|t[v]>>>24)|4278255360&(t[v]<<24|t[v]>>>8),e[_+v]^=t[v]},blockSize:4,ivSize:2});function B(){for(var e=this._X,_=this._C,o=0;o<8;o++)h[o]=_[o];_[0]=_[0]+1295307597+this._b|0,_[1]=_[1]+3545052371+(_[0]>>>0<h[0]>>>0?1:0)|0,_[2]=_[2]+886263092+(_[1]>>>0<h[1]>>>0?1:0)|0,_[3]=_[3]+1295307597+(_[2]>>>0<h[2]>>>0?1:0)|0,_[4]=_[4]+3545052371+(_[3]>>>0<h[3]>>>0?1:0)|0,_[5]=_[5]+886263092+(_[4]>>>0<h[4]>>>0?1:0)|0,_[6]=_[6]+1295307597+(_[5]>>>0<h[5]>>>0?1:0)|0,_[7]=_[7]+3545052371+(_[6]>>>0<h[6]>>>0?1:0)|0,this._b=_[7]>>>0<h[7]>>>0?1:0;for(o=0;o<8;o++){var v=e[o]+_[o],w=65535&v,d=v>>>16;c[o]=((w*w>>>17)+w*d>>>15)+d*d^((4294901760&v)*v|0)+((65535&v)*v|0)}e[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,e[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,e[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,e[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,e[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,e[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,e[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,e[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}n.Rabbit=r._createHelper(i)}(),R.mode.CTR=function(){var n=R.lib.BlockCipherMode.extend(),r=n.Encryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize,B=this._iv,e=this._counter,_=(B&&(e=this._counter=B.slice(0),this._iv=void 0),e.slice(0));c.encryptBlock(_,0),e[i-1]=e[i-1]+1|0;for(var o=0;o<i;o++)t[h+o]^=_[o]}});return n.Decryptor=r,n}(),function(){var n=R,r=n.lib.StreamCipher,i=n.algo,t=[],h=[],c=[],i=i.RabbitLegacy=r.extend({_doReset:function(){for(var e=this._key.words,_=this.cfg.iv,o=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],v=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]],w=this._b=0;w<4;w++)B.call(this);for(w=0;w<8;w++)v[w]^=o[w+4&7];if(_){var e=_.words,_=e[0],e=e[1],_=16711935&(_<<8|_>>>24)|4278255360&(_<<24|_>>>8),e=16711935&(e<<8|e>>>24)|4278255360&(e<<24|e>>>8),d=_>>>16|4294901760&e,s=e<<16|65535&_;v[0]^=_,v[1]^=d,v[2]^=e,v[3]^=s,v[4]^=_,v[5]^=d,v[6]^=e,v[7]^=s;for(w=0;w<4;w++)B.call(this)}},_doProcessBlock:function(e,_){var o=this._X;B.call(this),t[0]=o[0]^o[5]>>>16^o[3]<<16,t[1]=o[2]^o[7]>>>16^o[5]<<16,t[2]=o[4]^o[1]>>>16^o[7]<<16,t[3]=o[6]^o[3]>>>16^o[1]<<16;for(var v=0;v<4;v++)t[v]=16711935&(t[v]<<8|t[v]>>>24)|4278255360&(t[v]<<24|t[v]>>>8),e[_+v]^=t[v]},blockSize:4,ivSize:2});function B(){for(var e=this._X,_=this._C,o=0;o<8;o++)h[o]=_[o];_[0]=_[0]+1295307597+this._b|0,_[1]=_[1]+3545052371+(_[0]>>>0<h[0]>>>0?1:0)|0,_[2]=_[2]+886263092+(_[1]>>>0<h[1]>>>0?1:0)|0,_[3]=_[3]+1295307597+(_[2]>>>0<h[2]>>>0?1:0)|0,_[4]=_[4]+3545052371+(_[3]>>>0<h[3]>>>0?1:0)|0,_[5]=_[5]+886263092+(_[4]>>>0<h[4]>>>0?1:0)|0,_[6]=_[6]+1295307597+(_[5]>>>0<h[5]>>>0?1:0)|0,_[7]=_[7]+3545052371+(_[6]>>>0<h[6]>>>0?1:0)|0,this._b=_[7]>>>0<h[7]>>>0?1:0;for(o=0;o<8;o++){var v=e[o]+_[o],w=65535&v,d=v>>>16;c[o]=((w*w>>>17)+w*d>>>15)+d*d^((4294901760&v)*v|0)+((65535&v)*v|0)}e[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,e[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,e[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,e[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,e[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,e[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,e[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,e[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}n.RabbitLegacy=r._createHelper(i)}(),R.pad.ZeroPadding={pad:function(n,r){r*=4,n.clamp(),n.sigBytes+=r-(n.sigBytes%r||r)},unpad:function(n){for(var r=n.words,t=n.sigBytes-1;!(r[t>>>2]>>>24-t%4*8&255);)t--;n.sigBytes=t+1}};var d2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function G1(n){if(typeof n!="string")return!1;try{return JSON.parse(n),!0}catch(r){return!1}}var J1=(n,r)=>parseInt(Math.random()*(r-n+1)+n),k1=(n)=>{let r="";for(let t=0;t<n;t++)r+=d2[J1(0,64)];return r},F={encode(n){return n=R.enc.Utf8.parse(n),R.enc.Base64.stringify(n)},decode(n){return(n=R.enc.Base64.parse(n)).toString(R.enc.Utf8)}};function v2(n,r){try{var t=k1(8),h=k1(8),c=(r=R.enc.Utf8.parse(r),R.enc.Utf8.parse(t+h)),i=R.enc.Utf8.parse(n);return t+R.AES.encrypt(i,r,{iv:c,mode:R.mode.CBC,padding:R.pad.Pkcs7}).ciphertext.toString()+h}catch(B){}}function f2(n,r){try{var t=n.slice(0,8),h=n.slice(n.length-8,n.length),c=(n=n.slice(8,n.length-8),r=R.enc.Utf8.parse(r),R.enc.Utf8.parse(t+h)),i=R.enc.Hex.parse(n),B=R.enc.Base64.stringify(i);return R.AES.decrypt(B,r,{iv:c,mode:R.mode.CBC,padding:R.pad.Pkcs7}).toString(R.enc.Utf8).toString()}catch(e){}}var g2=function(n,r,t=0){for(n instanceof Object&&(n=JSON.stringify(n));r.length<16;)r+="0";return n=F.encode(v2(n,r)),t&&(n=F.encode(n),n=F.encode(n),n=F.encode(n),n=F.encode(n),n=F.encode(n)),n},S2=function(n,r,t=0){try{for(;r.length<16;)r+="0";return n=F.decode(n),t&&(n=F.decode(n),n=F.decode(n),n=F.decode(n),n=F.decode(n),n=F.decode(n)),(n=G1(n=f2(n,r))?JSON.parse(n):n)!=""&&n}catch(h){return!1}};try{z1&&(z1.exports={encode:g2,decode:S2,isJSON:G1,randomInt:J1,randomStr:k1})}catch(n){}});import f1 from"express";import n2 from"node:fs";import W1 from"node:path";import{pathToFileURL as i2}from"node:url";var _2=(n,r,t)=>{let h=r;h.return=async(c,i=1,B=200,e="")=>{if(c===null||c===void 0)i=0;if(c instanceof Promise)c=await c;r.status(B).send({msg:e,status:i?1:0,data:c===null||c===void 0?null:c})},h.reply=async(c,i,B=200,e="")=>{let _=i??(c?1:0);return await h.return(c,_,B,e)},h.success=async(c,i="成功")=>{return await h.return(c,1,200,i)},h.fail=async(c,i="系统错误,请联系管理员")=>{return await h.return(c,0,200,i)},t()},X1=_2;import o2 from"node:fs";import I1 from"node:path";var o1={logs:{open:!0,debug:!0},token:{open:!0,pwd:"8087",headerParams:"token"},projectName:"mas-app",openCors:!1,corsUrl:[]};function N1(n,r){if(!r)return{...n};return{...n,...r,logs:{...n?.logs,...r?.logs},token:{...n?.token,...r?.token}}}function K1(n){let r=[{apisPath:I1.join(n,"src/apis"),defalutApiPath:""},{apisPath:I1.join(n,"apis"),defalutApiPath:""}];for(let t of r)if(o2.existsSync(t.apisPath))return t;return r[0]}import l1 from"node:fs";import p1 from"node:path";function Z1(n){if(!l1.existsSync(n))return[];if(!l1.statSync(n).isDirectory())return[];let t=[],h=[n];while(h.length){let c=h.pop(),i=l1.readdirSync(c,{withFileTypes:!0});for(let B of i){let e=p1.join(c,B.name);if(B.isDirectory()){h.push(e);continue}if(!B.isFile())continue;if(B.name.endsWith(".d.ts"))continue;if(B.name.endsWith(".ts")||B.name.endsWith(".js"))t.push(e)}}return t}function L1(n,r){let c=p1.relative(n,r).replace(/\.(ts|js)$/,"").split(p1.sep).join("/");if(c==="index")return"/";if(c.endsWith("/index"))return`/${c.slice(0,-6)}`;return`/${c}`}function a(n){return Object.prototype.toString.call(n).slice(8,-1).toLowerCase()}function Q1(n){return n==="?"||n===-1}function U1(n,r){if(n===null||n===void 0)return!0;if(r==="?")return a(n)==="string";return a(n)==="number"}function u2(n){return Array.isArray(n)&&n.length>0&&(n[0]==="?"||n[0]===-1)}function y2(n,r){if(n===null||n===void 0)return!0;if(!Array.isArray(n))return!1;if(n.length===0)return!1;for(let t of n)if(r==="?"){if(a(t)!=="string")return!1}else if(a(t)!=="number")return!1;return!0}function B2(n,r){return a(n)===r.name.toLowerCase()}function l2(n,r,t){if(a(n)!=="object"||n===null)return!1;let h=n;if(t){for(let c of Object.keys(h))if(!(c in r))return!1}for(let c of Object.keys(r)){let i=h[c],B=r[c];if(!B)return!1;if(u2(B)){let e=B[0];if(!y2(i,e))return!1;continue}if(Q1(B)){if(!U1(i,B))return!1;continue}if(i===null||i===void 0)return!1;if(!i1(i,B,t))return!1}return!0}function w2(n,r,t){if(!Array.isArray(n))return!1;if(n.length===0)return!1;let h=r[0];if(!h)throw Error("非法的校验格式:数组格式不能为空(示例:[String] / [{...}])");for(let c of n)if(!i1(c,h,t))return!1;return!0}function i1(n,r,t=!1){if(Q1(r))return U1(n,r);if(n===null||n===void 0)return!1;let h=a(r);if(h==="function")return B2(n,r);if(Array.isArray(r))return w2(n,r,t);if(h==="object")return l2(n,r,t);return!1}var w1=e2(Y1(),1),$1=()=>new Date().getTime();function j1(n,r="8087",t=0){return w1.decode(n,r,t)}function O1(n,r="8087",t=0){return w1.encode(n,r,t)}var b1=({token:n,permission:r=[]},t="8087")=>{if(!n)return{msg:"没有传入token数据",errorCode:0,status:0,token:n};let h=j1(n,t);if(!h)return{msg:"token数据错误",errorCode:1,status:0,token:n};if(r.length!=0){let c=h._permission;if(!c)return{msg:"权限错误",errorCode:2,status:0,token:n};if(c?.filter((i)=>r.includes(i)).length==0)return{msg:"权限错误",errorCode:2,status:0,token:n}}if(h._masTime!==0){if($1()>h._masTime)return{msg:"token过期",errorCode:3,status:0,token:n}}return{...h,status:1}};function H2({data:n=null,time:r=0,permission:t=[]}={},h="8087"){let c={};return c.data=n,t.length!=0&&(c._permission=t),r!==0&&(c._masTime=r*1000+$1()),O1(c,h)}function A1(n,r,t){return async(h,c,i)=>{try{let{config:B,handler:e}=r;if(!e)return c.reply?.(null,0,500,`API 模块缺少导出 handler:${n}`);let _=B?.methods??"all";if(_!=="all"&&h.method.toLowerCase()!==_)return c.reply?.(null,0,405,"Method Not Allowed");if(B?.contentType){if(h.method.toUpperCase()!=="GET"&&h.headers["content-length"]!==void 0){let v=h.headers["content-type"]??"";if(!String(v).includes(B.contentType))return c.reply?.(null,0,400,"Content-Type 不匹配")}}if(B?.header)for(let[o,v]of Object.entries(B.header)){let w=h.headers[o.toLowerCase()],d;if(Array.isArray(w))d=w[0];else d=w;if(d===void 0||d===null)return c.reply?.(null,0,400,`缺少 Header:${o}`);let s=d;if(v===Number)s=Number(d);if(v===Boolean)s=d==="true"||d==="1"||d==="yes";if(!i1(s,v,!1))return c.reply?.(null,0,400,`Header 类型错误:${o}`)}if(t.token.open&&B?.token){let o=t.token.headerParams,v=h.headers[o.toLowerCase()]??h.query?.[o]??h.body?.[o],w=b1({token:v,permission:B.permission??[]},t.token.pwd);if(w.status===0)return c.reply?.(null,0,401,w.msg);h.tokenData=w}if(B?.requestFormat){if(!i1(h.body,B.requestFormat,!!B.strict))return c.reply?.(null,0,400,"请求参数格式错误")}return await e(h,c)}catch(B){return i(B)}}}function q(n){if(!n)return n;if(n==="?")return"String?";if(n===-1)return"Number?";if(typeof n==="function")return n.name??"Function";if(Array.isArray(n)){if(n[0]==="?")return["String"];if(n[0]===-1)return["Number"];return[q(n[0])]}if(typeof n==="object"){let r={};for(let[t,h]of Object.entries(n))r[t]=q(h);return r}return n}function u1(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function d1(n){if(!n)return null;if(n==="?")return"string";if(n===-1)return 0;if(typeof n==="function"){let r=n.name;if(r==="String")return"string";if(r==="Number")return 0;if(r==="Boolean")return!0;if(r==="Object")return{};return null}if(Array.isArray(n)){if(n[0]==="?")return["string"];if(n[0]===-1)return[0];return[d1(n[0])]}if(u1(n)){let r={};for(let[t,h]of Object.entries(n))r[t]=d1(h);return r}return null}function F1(n,r=""){if(!n)return[];if(n==="?"||n===-1)return[{name:r||"value",desc:"",type:q(n)}];if(typeof n==="function")return[{name:r||"value",desc:"",type:q(n)}];if(Array.isArray(n))return[{name:r||"value",desc:"",type:q(n)}];if(u1(n)){let t=[];for(let[h,c]of Object.entries(n)){let i=r?`${r}.${h}`:h;t.push(...F1(c,i))}return t}return[]}function p2(n,r){if(!n)return;if(!r)return;let t=r.split(".").filter(Boolean),h=n;for(let c of t){if(!h)return;if(Array.isArray(h))return h;if(typeof h==="function")return h;if(!u1(h))return;h=h[c]}return h}function R1(n,r){if(!n&&!r)return;let t=n?.example??(u1(r)?d1(r):null),h=u1(t)?t:{value:d1(r)},c=Array.isArray(n?.desc)?n.desc:[],B=(c.length>0?c:F1(r)).map((e)=>{if(e.type)return e;let o=p2(r,e.name);if(o)return{...e,type:q(o)};return{...e,type:"String"}});return{example:h,desc:B}}function V1(n){if(!n)return n;return{...n,header:n.header?q(n.header):n.header,requestFormat:n.requestFormat?q(n.requestFormat):n.requestFormat,responseFormat:n.responseFormat?q(n.responseFormat):n.responseFormat}}function P1(n,r){return{header:R1(r?.header,n?.header),request:R1(r?.request,n?.requestFormat),response:R1(r?.response,n?.responseFormat)}}import k2 from"node:fs";import z2 from"moment";import v1 from"morgan";import{createStream as b2}from"rotating-file-stream";function A2(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function E1(n,r){if(!n)return n;if(Array.isArray(n))return n.map((h)=>E1(h,r));if(!A2(n))return n;let t={};for(let[h,c]of Object.entries(n))if(r.includes(h))t[h]="[REDACTED]";else t[h]=E1(c,r);return t}function T1(n,r,t){try{if(n===void 0)return"-";if(n===null)return"null";let h=E1(n,t),c;if(typeof h==="string")c=h;else{let i=JSON.stringify(h);c=i===void 0?"-":i}if(c.length>r)c=`${c.slice(0,r)}...(truncated)`;return c}catch{return"[Unserializable]"}}function x1(n,r){if(!r.logRequestBody&&!r.logResponseBody)return;let t=n;if(t.__masBodyCaptureAttached)return;t.__masBodyCaptureAttached=!0,n.use((h,c,i)=>{if(r.logRequestBody)c.locals.__masReqBody=h.body;if(!r.logResponseBody)return i();let B=c,e=B.send?.bind(B),_=B.json?.bind(B);if(typeof e==="function")B.send=(o)=>{return c.locals.__masResBody=o,e(o)};if(typeof _==="function")B.json=(o)=>{return c.locals.__masResBody=o,_(o)};i()})}function q1(n,r){v1.token("date",()=>z2().utcOffset(8).format("YYYY-MM-DD HH:mm:ss")),v1.token("req-body",(c,i)=>{if(!n.logRequestBody)return"-";return T1(i.locals?.__masReqBody,n.maxBodyLength,n.redactKeys)}),v1.token("res-body",(c,i)=>{if(!n.logResponseBody)return"-";return T1(i.locals?.__masResBody,n.maxBodyLength,n.redactKeys)});let t=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" req=:req-body res=:res-body',h=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"';return v1(n.logRequestBody||n.logResponseBody?t:h,{stream:r})}function a1(n,r={}){let t={logRequestBody:r.logRequestBody??!0,logResponseBody:r.logResponseBody??!0,maxBodyLength:r.maxBodyLength??2000,redactKeys:r.redactKeys??[]};x1(n,t),n.use(q1(t,{write:(h)=>process.stdout.write(h)}))}function D1(n,r,t={}){k2.mkdirSync(r,{recursive:!0});let h={logRequestBody:t.logRequestBody??!0,logResponseBody:t.logResponseBody??!0,maxBodyLength:t.maxBodyLength??2000,redactKeys:t.redactKeys??[]};x1(n,h);let c=b2("access.log",{size:"50M",interval:"1d",path:r});n.use(q1(h,c))}function R2(n,r){if(!n)return!1;if(!r||r.length===0)return!0;return r.some((t)=>{if(t===n)return!0;if(t.includes("*")){let h=t.replace(/\*/g,".*").replace(/\./g,"\\.");return new RegExp(`^${h}$`).test(n)}return!1})}function m1(n,r){let t={allowHeader:[]};n.use((h,c,i)=>{let B=h.headers.origin,e=h.headers["access-control-request-headers"];if(e){let _=e.split(",").map((o)=>o.trim()).filter(Boolean);t.allowHeader=[...new Set([...t.allowHeader,..._])]}if(B&&R2(B,r))c.setHeader("Access-Control-Allow-Origin",B);else if(B&&r&&r.length>0);else if(!r||r.length===0){if(B)c.setHeader("Access-Control-Allow-Origin",B)}if(c.setHeader("Access-Control-Allow-Headers",t.allowHeader.length>0?t.allowHeader.join(", "):"*"),c.setHeader("Access-Control-Allow-Methods","PUT, POST, GET, DELETE, OPTIONS, PATCH"),c.setHeader("Access-Control-Allow-Credentials","true"),h.method==="OPTIONS")return c.status(204).send();i()})}async function E2(n,r,t){let h=f1();t&&t(h);let c=K1(n);o1.logs.logPath=W1.join(n,"logs"),o1.apisPath=c.apisPath,o1.defalutApiPath=c.defalutApiPath;let i=N1(o1,r);if(i.openCors)m1(h,i.corsUrl);h.use(f1.json({limit:"10mb"})),h.use(f1.urlencoded({extended:!0}));let B=i.staticPath??"public",e=i.staticUrl??"/public",_=W1.isAbsolute(B)?B:W1.join(n,B);if(n2.existsSync(_))h.use(e,f1.static(_));if(h.use(X1),i.logs.debug)a1(h,{logRequestBody:i.logs.logRequestBody,logResponseBody:i.logs.logResponseBody,maxBodyLength:i.logs.maxBodyLength,redactKeys:i.logs.redactKeys});if(i.logs.open&&i.logs.logPath)D1(h,i.logs.logPath,{logRequestBody:i.logs.logRequestBody,logResponseBody:i.logs.logResponseBody,maxBodyLength:i.logs.maxBodyLength,redactKeys:i.logs.redactKeys});let o=i.apisPath,v=Z1(o),w=i.defalutApiPath,d=[];for(let s of v){let l=L1(o,s),u=`/api${l}`,y=await import(i2(s).href);if(typeof y.handler!=="function")throw Error(`API 模块缺少导出 handler:${s}`);d.push({path:l,apiPath:u,file:s,mod:y}),h.all(u,A1(s,y,i))}if(i.exposeApiDocs!==!1)h.get("/debug/docs",async(s,l)=>{let u=[];for(let y of d){let g=y.mod.config,f=y.mod.doc;u.push({path:y.apiPath,file:y.file,config:V1(g),doc:P1(g,f)})}l.reply?.(u)});if(w&&n2.existsSync(w)){let s=await import(i2(w).href);if(typeof s.handler!=="function")throw Error(`兜底 API 模块缺少导出 handler:${w}`);h.use(A1(w,s,i))}else h.use((s,l)=>{l.reply?.(null,0,404,"Not Found")});return h.use((s,l,u,y)=>{let g=s?.message?String(s.message):"系统错误,请联系管理员";if(typeof u?.reply==="function")return u.reply(null,0,500,g);return u.status(500).send({status:0,msg:g,data:null})}),h}var D2="?",W2=-1;export{b1 as validToken,E2 as getApp,O1 as encode,j1 as decode,H2 as createToken,D2 as _String,W2 as _Number};
|
|
1
|
+
import{createRequire as p0}from"node:module";var n0=Object.create;var{getPrototypeOf:m0,defineProperty:M2,getOwnPropertyNames:s0}=Object;var e0=Object.prototype.hasOwnProperty;var C2=(h,_,B)=>{B=h!=null?n0(m0(h)):{};let f=_||!h||!h.__esModule?M2(B,"default",{value:h,enumerable:!0}):B;for(let w of s0(h))if(!e0.call(f,w))M2(f,w,{get:()=>h[w],enumerable:!0});return f};var _1=(h,_)=>()=>(_||h((_={exports:{}}).exports,_),_.exports);var F1=p0(import.meta.url);var j2=_1((f3,b1)=>{var R=R||function(h){var _=Object.create||function(W){return B.prototype=W,W=new B,B.prototype=null,W};function B(){}var f={},w=f.lib={},y=w.Base={extend:function(W){var J=_(this);return W&&J.mixIn(W),J.hasOwnProperty("init")&&this.init!==J.init||(J.init=function(){J.$super.init.apply(this,arguments)}),(J.init.prototype=J).$super=this,J},create:function(){var W=this.extend();return W.init.apply(W,arguments),W},init:function(){},mixIn:function(W){for(var J in W)W.hasOwnProperty(J)&&(this[J]=W[J]);W.hasOwnProperty("toString")&&(this.toString=W.toString)},clone:function(){return this.init.prototype.extend(this)}},z=w.WordArray=y.extend({init:function(W,J){W=this.words=W||[],this.sigBytes=J!=null?J:4*W.length},toString:function(W){return(W||$).stringify(this)},concat:function(W){var J=this.words,X=W.words,Y=this.sigBytes,U=W.sigBytes;if(this.clamp(),Y%4)for(var D=0;D<U;D++){var G=X[D>>>2]>>>24-D%4*8&255;J[Y+D>>>2]|=G<<24-(Y+D)%4*8}else for(D=0;D<U;D+=4)J[Y+D>>>2]=X[D>>>2];return this.sigBytes+=U,this},clamp:function(){var W=this.words,J=this.sigBytes;W[J>>>2]&=4294967295<<32-J%4*8,W.length=h.ceil(J/4)},clone:function(){var W=y.clone.call(this);return W.words=this.words.slice(0),W},random:function(W){for(var J=[],X=0;X<W;X+=4){var Y=function(D){var G=987654321,q=4294967295;return function(){var O=((G=36969*(65535&G)+(G>>16)&q)<<16)+(D=18000*(65535&D)+(D>>16)&q)&q;return(O/4294967296+0.5)*(0.5<h.random()?1:-1)}}(4294967296*(U||h.random())),U=987654071*Y();J.push(4294967296*Y()|0)}return new z.init(J,W)}}),c=f.enc={},$=c.Hex={stringify:function(W){for(var{words:J,sigBytes:X}=W,Y=[],U=0;U<X;U++){var D=J[U>>>2]>>>24-U%4*8&255;Y.push((D>>>4).toString(16)),Y.push((15&D).toString(16))}return Y.join("")},parse:function(W){for(var J=W.length,X=[],Y=0;Y<J;Y+=2)X[Y>>>3]|=parseInt(W.substr(Y,2),16)<<24-Y%8*4;return new z.init(X,J/2)}},H=c.Latin1={stringify:function(W){for(var{words:J,sigBytes:X}=W,Y=[],U=0;U<X;U++){var D=J[U>>>2]>>>24-U%4*8&255;Y.push(String.fromCharCode(D))}return Y.join("")},parse:function(W){for(var J=W.length,X=[],Y=0;Y<J;Y++)X[Y>>>2]|=(255&W.charCodeAt(Y))<<24-Y%4*8;return new z.init(X,J)}},M=c.Utf8={stringify:function(W){try{return decodeURIComponent(escape(H.stringify(W)))}catch(J){throw Error("Malformed UTF-8 data")}},parse:function(W){return H.parse(unescape(encodeURIComponent(W)))}},C=w.BufferedBlockAlgorithm=y.extend({reset:function(){this._data=new z.init,this._nDataBytes=0},_append:function(W){typeof W=="string"&&(W=M.parse(W)),this._data.concat(W),this._nDataBytes+=W.sigBytes},_process:function(q){var J=this._data,X=J.words,Y=J.sigBytes,U=this.blockSize,D=Y/(4*U),G=(D=q?h.ceil(D):h.max((0|D)-this._minBufferSize,0))*U,q=h.min(4*G,Y);if(G){for(var O=0;O<G;O+=U)this._doProcessBlock(X,O);var i=X.splice(0,G);J.sigBytes-=q}return new z.init(i,q)},clone:function(){var W=y.clone.call(this);return W._data=this._data.clone(),W},_minBufferSize:0}),Z=(w.Hasher=C.extend({cfg:y.extend(),init:function(W){this.cfg=this.cfg.extend(W),this.reset()},reset:function(){C.reset.call(this),this._doReset()},update:function(W){return this._append(W),this._process(),this},finalize:function(W){return W&&this._append(W),this._doFinalize()},blockSize:16,_createHelper:function(W){return function(J,X){return new W.init(X).finalize(J)}},_createHmacHelper:function(W){return function(J,X){return new Z.HMAC.init(W,X).finalize(J)}}}),f.algo={});return f}(Math);(function(){var h=R.lib.WordArray;R.enc.Base64={stringify:function(_){for(var{words:B,sigBytes:f}=_,w=this._map,y=(_.clamp(),[]),z=0;z<f;z+=3)for(var c=(B[z>>>2]>>>24-z%4*8&255)<<16|(B[z+1>>>2]>>>24-(z+1)%4*8&255)<<8|B[z+2>>>2]>>>24-(z+2)%4*8&255,$=0;$<4&&z+0.75*$<f;$++)y.push(w.charAt(c>>>6*(3-$)&63));var H=w.charAt(64);if(H)for(;y.length%4;)y.push(H);return y.join("")},parse:function(_){var B=_.length,f=this._map;if(!(w=this._reverseMap))for(var w=this._reverseMap=[],y=0;y<f.length;y++)w[f.charCodeAt(y)]=y;for(var z,c,$=f.charAt(64),H=($&&($=_.indexOf($))!==-1&&(B=$),_),M=B,C=w,Z=[],W=0,J=0;J<M;J++)J%4&&(z=C[H.charCodeAt(J-1)]<<J%4*2,c=C[H.charCodeAt(J)]>>>6-J%4*2,Z[W>>>2]|=(z|c)<<24-W%4*8,W++);return h.create(Z,W)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(),function(h){for(var _=R,w=_.lib,B=w.WordArray,f=w.Hasher,w=_.algo,y=[],z=0;z<64;z++)y[z]=4294967296*h.abs(h.sin(z+1))|0;w=w.MD5=f.extend({_doReset:function(){this._hash=new B.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(C,Z){for(var W=0;W<16;W++){var J=Z+W,X=C[J];C[J]=16711935&(X<<8|X>>>24)|4278255360&(X<<24|X>>>8)}var Y=this._hash.words,U=C[Z+0],D=C[Z+1],G=C[Z+2],q=C[Z+3],O=C[Z+4],i=C[Z+5],P=C[Z+6],j=C[Z+7],A=C[Z+8],d=C[Z+9],V=C[Z+10],r=C[Z+11],L=C[Z+12],T=C[Z+13],N=C[Z+14],S=C[Z+15],I=c(Y[0],K=Y[1],F=Y[2],Q=Y[3],U,7,y[0]),Q=c(Q,I,K,F,D,12,y[1]),F=c(F,Q,I,K,G,17,y[2]),K=c(K,F,Q,I,q,22,y[3]);I=c(I,K,F,Q,O,7,y[4]),Q=c(Q,I,K,F,i,12,y[5]),F=c(F,Q,I,K,P,17,y[6]),K=c(K,F,Q,I,j,22,y[7]),I=c(I,K,F,Q,A,7,y[8]),Q=c(Q,I,K,F,d,12,y[9]),F=c(F,Q,I,K,V,17,y[10]),K=c(K,F,Q,I,r,22,y[11]),I=c(I,K,F,Q,L,7,y[12]),Q=c(Q,I,K,F,T,12,y[13]),F=c(F,Q,I,K,N,17,y[14]),I=$(I,K=c(K,F,Q,I,S,22,y[15]),F,Q,D,5,y[16]),Q=$(Q,I,K,F,P,9,y[17]),F=$(F,Q,I,K,r,14,y[18]),K=$(K,F,Q,I,U,20,y[19]),I=$(I,K,F,Q,i,5,y[20]),Q=$(Q,I,K,F,V,9,y[21]),F=$(F,Q,I,K,S,14,y[22]),K=$(K,F,Q,I,O,20,y[23]),I=$(I,K,F,Q,d,5,y[24]),Q=$(Q,I,K,F,N,9,y[25]),F=$(F,Q,I,K,q,14,y[26]),K=$(K,F,Q,I,A,20,y[27]),I=$(I,K,F,Q,T,5,y[28]),Q=$(Q,I,K,F,G,9,y[29]),F=$(F,Q,I,K,j,14,y[30]),I=H(I,K=$(K,F,Q,I,L,20,y[31]),F,Q,i,4,y[32]),Q=H(Q,I,K,F,A,11,y[33]),F=H(F,Q,I,K,r,16,y[34]),K=H(K,F,Q,I,N,23,y[35]),I=H(I,K,F,Q,D,4,y[36]),Q=H(Q,I,K,F,O,11,y[37]),F=H(F,Q,I,K,j,16,y[38]),K=H(K,F,Q,I,V,23,y[39]),I=H(I,K,F,Q,T,4,y[40]),Q=H(Q,I,K,F,U,11,y[41]),F=H(F,Q,I,K,q,16,y[42]),K=H(K,F,Q,I,P,23,y[43]),I=H(I,K,F,Q,d,4,y[44]),Q=H(Q,I,K,F,L,11,y[45]),F=H(F,Q,I,K,S,16,y[46]),I=M(I,K=H(K,F,Q,I,G,23,y[47]),F,Q,U,6,y[48]),Q=M(Q,I,K,F,j,10,y[49]),F=M(F,Q,I,K,N,15,y[50]),K=M(K,F,Q,I,i,21,y[51]),I=M(I,K,F,Q,L,6,y[52]),Q=M(Q,I,K,F,q,10,y[53]),F=M(F,Q,I,K,V,15,y[54]),K=M(K,F,Q,I,D,21,y[55]),I=M(I,K,F,Q,A,6,y[56]),Q=M(Q,I,K,F,S,10,y[57]),F=M(F,Q,I,K,P,15,y[58]),K=M(K,F,Q,I,T,21,y[59]),I=M(I,K,F,Q,O,6,y[60]),Q=M(Q,I,K,F,r,10,y[61]),F=M(F,Q,I,K,G,15,y[62]),K=M(K,F,Q,I,d,21,y[63]),Y[0]=Y[0]+I|0,Y[1]=Y[1]+K|0,Y[2]=Y[2]+F|0,Y[3]=Y[3]+Q|0},_doFinalize:function(){for(var C=this._data,Z=C.words,W=8*this._nDataBytes,J=8*C.sigBytes,X=(Z[J>>>5]|=128<<24-J%32,h.floor(W/4294967296)),X=(Z[15+(64+J>>>9<<4)]=16711935&(X<<8|X>>>24)|4278255360&(X<<24|X>>>8),Z[14+(64+J>>>9<<4)]=16711935&(W<<8|W>>>24)|4278255360&(W<<24|W>>>8),C.sigBytes=4*(Z.length+1),this._process(),this._hash),Y=X.words,U=0;U<4;U++){var D=Y[U];Y[U]=16711935&(D<<8|D>>>24)|4278255360&(D<<24|D>>>8)}return X},clone:function(){var C=f.clone.call(this);return C._hash=this._hash.clone(),C}});function c(C,Z,W,J,X,Y,U){return C=C+(Z&W|~Z&J)+X+U,(C<<Y|C>>>32-Y)+Z}function $(C,Z,W,J,X,Y,U){return C=C+(Z&J|W&~J)+X+U,(C<<Y|C>>>32-Y)+Z}function H(C,Z,W,J,X,Y,U){return C=C+(Z^W^J)+X+U,(C<<Y|C>>>32-Y)+Z}function M(C,Z,W,J,X,Y,U){return C=C+(W^(Z|~J))+X+U,(C<<Y|C>>>32-Y)+Z}_.MD5=f._createHelper(w),_.HmacMD5=f._createHmacHelper(w)}(Math),function(){var h=R,w=h.lib,_=w.WordArray,B=w.Hasher,w=h.algo,f=[],w=w.SHA1=B.extend({_doReset:function(){this._hash=new _.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(y,z){for(var c=this._hash.words,$=c[0],H=c[1],M=c[2],C=c[3],Z=c[4],W=0;W<80;W++){f[W]=W<16?0|y[z+W]:(J=f[W-3]^f[W-8]^f[W-14]^f[W-16])<<1|J>>>31;var J=($<<5|$>>>27)+Z+f[W];J+=W<20?1518500249+(H&M|~H&C):W<40?1859775393+(H^M^C):W<60?(H&M|H&C|M&C)-1894007588:(H^M^C)-899497514,Z=C,C=M,M=H<<30|H>>>2,H=$,$=J}c[0]=c[0]+$|0,c[1]=c[1]+H|0,c[2]=c[2]+M|0,c[3]=c[3]+C|0,c[4]=c[4]+Z|0},_doFinalize:function(){var y=this._data,z=y.words,c=8*this._nDataBytes,$=8*y.sigBytes;return z[$>>>5]|=128<<24-$%32,z[14+(64+$>>>9<<4)]=Math.floor(c/4294967296),z[15+(64+$>>>9<<4)]=c,y.sigBytes=4*z.length,this._process(),this._hash},clone:function(){var y=B.clone.call(this);return y._hash=this._hash.clone(),y}});h.SHA1=B._createHelper(w),h.HmacSHA1=B._createHmacHelper(w)}(),function(h){var _=R,M=_.lib,B=M.WordArray,f=M.Hasher,M=_.algo,w=[],y=[];function z(C){return 4294967296*(C-(0|C))|0}for(var c=2,$=0;$<64;)!function(C){for(var Z=h.sqrt(C),W=2;W<=Z;W++)if(!(C%W))return;return 1}(c)||($<8&&(w[$]=z(h.pow(c,0.5))),y[$]=z(h.pow(c,0.3333333333333333)),$++),c++;var H=[],M=M.SHA256=f.extend({_doReset:function(){this._hash=new B.init(w.slice(0))},_doProcessBlock:function(C,Z){for(var W=this._hash.words,J=W[0],X=W[1],Y=W[2],U=W[3],D=W[4],G=W[5],q=W[6],O=W[7],i=0;i<64;i++){H[i]=i<16?0|C[Z+i]:(((P=H[i-15])<<25|P>>>7)^(P<<14|P>>>18)^P>>>3)+H[i-7]+(((P=H[i-2])<<15|P>>>17)^(P<<13|P>>>19)^P>>>10)+H[i-16];var P=J&X^J&Y^X&Y,j=O+((D<<26|D>>>6)^(D<<21|D>>>11)^(D<<7|D>>>25))+(D&G^~D&q)+y[i]+H[i],O=q,q=G,G=D,D=U+j|0,U=Y,Y=X,X=J,J=j+(((J<<30|J>>>2)^(J<<19|J>>>13)^(J<<10|J>>>22))+P)|0}W[0]=W[0]+J|0,W[1]=W[1]+X|0,W[2]=W[2]+Y|0,W[3]=W[3]+U|0,W[4]=W[4]+D|0,W[5]=W[5]+G|0,W[6]=W[6]+q|0,W[7]=W[7]+O|0},_doFinalize:function(){var C=this._data,Z=C.words,W=8*this._nDataBytes,J=8*C.sigBytes;return Z[J>>>5]|=128<<24-J%32,Z[14+(64+J>>>9<<4)]=h.floor(W/4294967296),Z[15+(64+J>>>9<<4)]=W,C.sigBytes=4*Z.length,this._process(),this._hash},clone:function(){var C=f.clone.call(this);return C._hash=this._hash.clone(),C}});_.SHA256=f._createHelper(M),_.HmacSHA256=f._createHmacHelper(M)}(Math),function(){var h=R.lib.WordArray,_=R.enc;_.Utf16=_.Utf16BE={stringify:function(f){for(var{words:w,sigBytes:y}=f,z=[],c=0;c<y;c+=2){var $=w[c>>>2]>>>16-c%4*8&65535;z.push(String.fromCharCode($))}return z.join("")},parse:function(f){for(var w=f.length,y=[],z=0;z<w;z++)y[z>>>1]|=f.charCodeAt(z)<<16-z%2*16;return h.create(y,2*w)}};function B(f){return f<<8&4278255360|f>>>8&16711935}_.Utf16LE={stringify:function(f){for(var{words:w,sigBytes:y}=f,z=[],c=0;c<y;c+=2){var $=B(w[c>>>2]>>>16-c%4*8&65535);z.push(String.fromCharCode($))}return z.join("")},parse:function(f){for(var w=f.length,y=[],z=0;z<w;z++)y[z>>>1]|=B(f.charCodeAt(z)<<16-z%2*16);return h.create(y,2*w)}}}(),function(){var h,_;typeof ArrayBuffer=="function"&&(h=R.lib.WordArray,_=h.init,(h.init=function(B){if((B=(B=B instanceof ArrayBuffer?new Uint8Array(B):B)instanceof Int8Array||typeof Uint8ClampedArray<"u"&&B instanceof Uint8ClampedArray||B instanceof Int16Array||B instanceof Uint16Array||B instanceof Int32Array||B instanceof Uint32Array||B instanceof Float32Array||B instanceof Float64Array?new Uint8Array(B.buffer,B.byteOffset,B.byteLength):B)instanceof Uint8Array){for(var f=B.byteLength,w=[],y=0;y<f;y++)w[y>>>2]|=B[y]<<24-y%4*8;_.call(this,w,f)}else _.apply(this,arguments)}).prototype=h)}(),function(){var h=R,H=h.lib,_=H.WordArray,B=H.Hasher,H=h.algo,f=_.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),w=_.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),y=_.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),z=_.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=_.create([0,1518500249,1859775393,2400959708,2840853838]),$=_.create([1352829926,1548603684,1836072691,2053994217,0]),H=H.RIPEMD160=B.extend({_doReset:function(){this._hash=_.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(W,J){for(var X=0;X<16;X++){var Y=J+X,U=W[Y];W[Y]=16711935&(U<<8|U>>>24)|4278255360&(U<<24|U>>>8)}for(var D,G,q,O,i,P,j=this._hash.words,A=c.words,d=$.words,V=f.words,r=w.words,L=y.words,T=z.words,N=D=j[0],S=G=j[1],I=q=j[2],Q=O=j[3],F=i=j[4],X=0;X<80;X+=1)P=(P=Z(P=(P=D+W[J+V[X]]|0)+(X<16?(G^q^O)+A[0]:X<32?M(G,q,O)+A[1]:X<48?((G|~q)^O)+A[2]:X<64?C(G,q,O)+A[3]:(G^(q|~O))+A[4])|0,L[X]))+i|0,D=i,i=O,O=Z(q,10),q=G,G=P,P=(P=Z(P=(P=N+W[J+r[X]]|0)+(X<16?(S^(I|~Q))+d[0]:X<32?C(S,I,Q)+d[1]:X<48?((S|~I)^Q)+d[2]:X<64?M(S,I,Q)+d[3]:(S^I^Q)+d[4])|0,T[X]))+F|0,N=F,F=Q,Q=Z(I,10),I=S,S=P;P=j[1]+q+Q|0,j[1]=j[2]+O+F|0,j[2]=j[3]+i+N|0,j[3]=j[4]+D+S|0,j[4]=j[0]+G+I|0,j[0]=P},_doFinalize:function(){for(var W=this._data,J=W.words,X=8*this._nDataBytes,Y=8*W.sigBytes,Y=(J[Y>>>5]|=128<<24-Y%32,J[14+(64+Y>>>9<<4)]=16711935&(X<<8|X>>>24)|4278255360&(X<<24|X>>>8),W.sigBytes=4*(J.length+1),this._process(),this._hash),U=Y.words,D=0;D<5;D++){var G=U[D];U[D]=16711935&(G<<8|G>>>24)|4278255360&(G<<24|G>>>8)}return Y},clone:function(){var W=B.clone.call(this);return W._hash=this._hash.clone(),W}});function M(W,J,X){return W&J|~W&X}function C(W,J,X){return W&X|J&~X}function Z(W,J){return W<<J|W>>>32-J}h.RIPEMD160=B._createHelper(H),h.HmacRIPEMD160=B._createHmacHelper(H)}(Math),function(){var h=R.lib.Base,_=R.enc.Utf8;R.algo.HMAC=h.extend({init:function(B,f){B=this._hasher=new B.init,typeof f=="string"&&(f=_.parse(f));for(var w=B.blockSize,y=4*w,B=((f=f.sigBytes>y?B.finalize(f):f).clamp(),this._oKey=f.clone()),f=this._iKey=f.clone(),z=B.words,c=f.words,$=0;$<w;$++)z[$]^=1549556828,c[$]^=909522486;B.sigBytes=f.sigBytes=y,this.reset()},reset:function(){var B=this._hasher;B.reset(),B.update(this._iKey)},update:function(B){return this._hasher.update(B),this},finalize:function(w){var f=this._hasher,w=f.finalize(w);return f.reset(),f.finalize(this._oKey.clone().concat(w))}})}(),function(){var h=R,f=h.lib,_=f.Base,B=f.WordArray,f=h.algo,w=f.SHA1,y=f.HMAC,z=f.PBKDF2=_.extend({cfg:_.extend({keySize:4,hasher:w,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(c,$){for(var H=this.cfg,M=y.create(H.hasher,c),C=B.create(),Z=B.create([1]),W=C.words,J=Z.words,X=H.keySize,Y=H.iterations;W.length<X;){for(var U=M.update($).finalize(Z),D=(M.reset(),U.words),G=D.length,q=U,O=1;O<Y;O++){q=M.finalize(q),M.reset();for(var i=q.words,P=0;P<G;P++)D[P]^=i[P]}C.concat(U),J[0]++}return C.sigBytes=4*X,C}});h.PBKDF2=function(c,$,H){return z.create(H).compute(c,$)}}(),function(){var h=R,f=h.lib,_=f.Base,B=f.WordArray,f=h.algo,w=f.MD5,y=f.EvpKDF=_.extend({cfg:_.extend({keySize:4,hasher:w,iterations:1}),init:function(z){this.cfg=this.cfg.extend(z)},compute:function(z,c){for(var $=this.cfg,H=$.hasher.create(),M=B.create(),C=M.words,Z=$.keySize,W=$.iterations;C.length<Z;){J&&H.update(J);var J=H.update(z).finalize(c);H.reset();for(var X=1;X<W;X++)J=H.finalize(J),H.reset();M.concat(J)}return M.sigBytes=4*Z,M}});h.EvpKDF=function(z,c,$){return y.create($).compute(z,c)}}(),function(){var h=R,_=h.lib.WordArray,f=h.algo,B=f.SHA256,f=f.SHA224=B.extend({_doReset:function(){this._hash=new _.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var w=B._doFinalize.call(this);return w.sigBytes-=4,w}});h.SHA224=B._createHelper(f),h.HmacSHA224=B._createHmacHelper(f)}(),function(){var h=R,f=h.lib,_=f.Base,B=f.WordArray,f=h.x64={};f.Word=_.extend({init:function(w,y){this.high=w,this.low=y}}),f.WordArray=_.extend({init:function(w,y){w=this.words=w||[],this.sigBytes=y!=null?y:8*w.length},toX32:function(){for(var w=this.words,y=w.length,z=[],c=0;c<y;c++){var $=w[c];z.push($.high),z.push($.low)}return B.create(z,this.sigBytes)},clone:function(){for(var w=_.clone.call(this),y=w.words=this.words.slice(0),z=y.length,c=0;c<z;c++)y[c]=y[c].clone();return w}})}(),function(h){for(var _=R,y=_.lib,B=y.WordArray,f=y.Hasher,w=_.x64.Word,y=_.algo,z=[],c=[],$=[],H=1,M=0,C=0;C<24;C++){z[H+5*M]=(C+1)*(C+2)/2%64;var Z=(2*H+3*M)%5;H=M%5,M=Z}for(H=0;H<5;H++)for(M=0;M<5;M++)c[H+5*M]=M+(2*H+3*M)%5*5;for(var W=1,J=0;J<24;J++){for(var X,Y=0,U=0,D=0;D<7;D++)1&W&&((X=(1<<D)-1)<32?U^=1<<X:Y^=1<<X-32),128&W?W=W<<1^113:W<<=1;$[J]=w.create(Y,U)}for(var G=[],q=0;q<25;q++)G[q]=w.create();y=y.SHA3=f.extend({cfg:f.cfg.extend({outputLength:512}),_doReset:function(){for(var O=this._state=[],i=0;i<25;i++)O[i]=new w.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(O,i){for(var P=this._state,j=this.blockSize/2,A=0;A<j;A++){var V=O[i+2*A],d=O[i+2*A+1],V=16711935&(V<<8|V>>>24)|4278255360&(V<<24|V>>>8);(e=P[A]).high^=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),e.low^=V}for(var r=0;r<24;r++){for(var L=0;L<5;L++){for(var T=0,N=0,S=0;S<5;S++)T^=(e=P[L+5*S]).high,N^=e.low;var I=G[L];I.high=T,I.low=N}for(L=0;L<5;L++)for(var Q=G[(L+4)%5],K=G[(L+1)%5],F=K.high,K=K.low,T=Q.high^(F<<1|K>>>31),N=Q.low^(K<<1|F>>>31),S=0;S<5;S++)(e=P[L+5*S]).high^=T,e.low^=N;for(var l=1;l<25;l++){var v=(e=P[l]).high,n=e.low,m=z[l],v=(N=m<32?(T=v<<m|n>>>32-m,n<<m|v>>>32-m):(T=n<<m-32|v>>>64-m,v<<m-32|n>>>64-m),G[c[l]]);v.high=T,v.low=N}var u=G[0],x=P[0];u.high=x.high,u.low=x.low;for(L=0;L<5;L++)for(S=0;S<5;S++){var e=P[l=L+5*S],t=G[l],E=G[(L+1)%5+5*S],b=G[(L+2)%5+5*S];e.high=t.high^~E.high&b.high,e.low=t.low^~E.low&b.low}e=P[0],u=$[r],e.high^=u.high,e.low^=u.low}},_doFinalize:function(){for(var O=this._data,i=O.words,A=(this._nDataBytes,8*O.sigBytes),P=32*this.blockSize,j=(i[A>>>5]|=1<<24-A%32,i[(h.ceil((1+A)/P)*P>>>5)-1]|=128,O.sigBytes=4*i.length,this._process(),this._state),A=this.cfg.outputLength/8,d=A/8,V=[],r=0;r<d;r++){var L=j[r],T=L.high,L=L.low,T=16711935&(T<<8|T>>>24)|4278255360&(T<<24|T>>>8);V.push(16711935&(L<<8|L>>>24)|4278255360&(L<<24|L>>>8)),V.push(T)}return new B.init(V,A)},clone:function(){for(var O=f.clone.call(this),i=O._state=this._state.slice(0),P=0;P<25;P++)i[P]=i[P].clone();return O}}),_.SHA3=f._createHelper(y),_.HmacSHA3=f._createHmacHelper(y)}(Math),function(){var h=R,_=h.lib.Hasher,w=h.x64,B=w.Word,f=w.WordArray,w=h.algo;function y(){return B.create.apply(B,arguments)}for(var z=[y(1116352408,3609767458),y(1899447441,602891725),y(3049323471,3964484399),y(3921009573,2173295548),y(961987163,4081628472),y(1508970993,3053834265),y(2453635748,2937671579),y(2870763221,3664609560),y(3624381080,2734883394),y(310598401,1164996542),y(607225278,1323610764),y(1426881987,3590304994),y(1925078388,4068182383),y(2162078206,991336113),y(2614888103,633803317),y(3248222580,3479774868),y(3835390401,2666613458),y(4022224774,944711139),y(264347078,2341262773),y(604807628,2007800933),y(770255983,1495990901),y(1249150122,1856431235),y(1555081692,3175218132),y(1996064986,2198950837),y(2554220882,3999719339),y(2821834349,766784016),y(2952996808,2566594879),y(3210313671,3203337956),y(3336571891,1034457026),y(3584528711,2466948901),y(113926993,3758326383),y(338241895,168717936),y(666307205,1188179964),y(773529912,1546045734),y(1294757372,1522805485),y(1396182291,2643833823),y(1695183700,2343527390),y(1986661051,1014477480),y(2177026350,1206759142),y(2456956037,344077627),y(2730485921,1290863460),y(2820302411,3158454273),y(3259730800,3505952657),y(3345764771,106217008),y(3516065817,3606008344),y(3600352804,1432725776),y(4094571909,1467031594),y(275423344,851169720),y(430227734,3100823752),y(506948616,1363258195),y(659060556,3750685593),y(883997877,3785050280),y(958139571,3318307427),y(1322822218,3812723403),y(1537002063,2003034995),y(1747873779,3602036899),y(1955562222,1575990012),y(2024104815,1125592928),y(2227730452,2716904306),y(2361852424,442776044),y(2428436474,593698344),y(2756734187,3733110249),y(3204031479,2999351573),y(3329325298,3815920427),y(3391569614,3928383900),y(3515267271,566280711),y(3940187606,3454069534),y(4118630271,4000239992),y(116418474,1914138554),y(174292421,2731055270),y(289380356,3203993006),y(460393269,320620315),y(685471733,587496836),y(852142971,1086792851),y(1017036298,365543100),y(1126000580,2618297676),y(1288033470,3409855158),y(1501505948,4234509866),y(1607167915,987167468),y(1816402316,1246189591)],c=[],$=0;$<80;$++)c[$]=y();w=w.SHA512=_.extend({_doReset:function(){this._hash=new f.init([new B.init(1779033703,4089235720),new B.init(3144134277,2227873595),new B.init(1013904242,4271175723),new B.init(2773480762,1595750129),new B.init(1359893119,2917565137),new B.init(2600822924,725511199),new B.init(528734635,4215389547),new B.init(1541459225,327033209)])},_doProcessBlock:function(H,M){for(var D=this._hash.words,C=D[0],Z=D[1],W=D[2],J=D[3],X=D[4],Y=D[5],U=D[6],D=D[7],G=C.high,q=C.low,O=Z.high,i=Z.low,P=W.high,j=W.low,A=J.high,d=J.low,V=X.high,r=X.low,L=Y.high,T=Y.low,N=U.high,S=U.low,I=D.high,Q=D.low,c1=G,F=q,Q1=O,Y1=i,V1=P,C1=j,l1=A,S1=d,w1=V,K=r,g1=L,N1=T,H1=N,z1=S,h1=I,p=Q,l=0;l<80;l++)var n,m,E=c[l],v=(l<16?(m=E.high=0|H[M+2*l],n=E.low=0|H[M+2*l+1]):(x=(t=c[l-15]).high,t=t.low,u=(v=c[l-2]).high,v=v.low,m=(m=(m=((x>>>1|t<<31)^(x>>>8|t<<24)^x>>>7)+(e=c[l-7]).high+((n=(t=(t>>>1|x<<31)^(t>>>8|x<<24)^(t>>>7|x<<25))+e.low)>>>0<t>>>0?1:0))+((u>>>19|v<<13)^(u<<3|v>>>29)^u>>>6)+((n=n+(x=(v>>>19|u<<13)^(v<<3|u>>>29)^(v>>>6|u<<26)))>>>0<x>>>0?1:0))+(e=c[l-16]).high+((n=n+(t=e.low))>>>0<t>>>0?1:0),E.high=m,E.low=n),w1&g1^~w1&H1),u=K&N1^~K&z1,x=c1&Q1^c1&V1^Q1&V1,e=(F>>>28|c1<<4)^(F<<30|c1>>>2)^(F<<25|c1>>>7),t=z[l],E=t.high,b=t.low,g=p+((K>>>14|w1<<18)^(K>>>18|w1<<14)^(K<<23|w1>>>9)),k=h1+((w1>>>14|K<<18)^(w1>>>18|K<<14)^(w1<<23|K>>>9))+(g>>>0<p>>>0?1:0),s=e+(F&Y1^F&C1^Y1&C1),h1=H1,p=z1,H1=g1,z1=N1,g1=w1,N1=K,w1=l1+(k=k+v+((g=g+u)>>>0<u>>>0?1:0)+E+((g=g+b)>>>0<b>>>0?1:0)+m+((g=g+n)>>>0<n>>>0?1:0))+((K=S1+g|0)>>>0<S1>>>0?1:0)|0,l1=V1,S1=C1,V1=Q1,C1=Y1,Q1=c1,Y1=F,c1=k+(((c1>>>28|F<<4)^(c1<<30|F>>>2)^(c1<<25|F>>>7))+x+(s>>>0<e>>>0?1:0))+((F=g+s|0)>>>0<g>>>0?1:0)|0;q=C.low=q+F,C.high=G+c1+(q>>>0<F>>>0?1:0),i=Z.low=i+Y1,Z.high=O+Q1+(i>>>0<Y1>>>0?1:0),j=W.low=j+C1,W.high=P+V1+(j>>>0<C1>>>0?1:0),d=J.low=d+S1,J.high=A+l1+(d>>>0<S1>>>0?1:0),r=X.low=r+K,X.high=V+w1+(r>>>0<K>>>0?1:0),T=Y.low=T+N1,Y.high=L+g1+(T>>>0<N1>>>0?1:0),S=U.low=S+z1,U.high=N+H1+(S>>>0<z1>>>0?1:0),Q=D.low=Q+p,D.high=I+h1+(Q>>>0<p>>>0?1:0)},_doFinalize:function(){var H=this._data,M=H.words,C=8*this._nDataBytes,Z=8*H.sigBytes;return M[Z>>>5]|=128<<24-Z%32,M[30+(128+Z>>>10<<5)]=Math.floor(C/4294967296),M[31+(128+Z>>>10<<5)]=C,H.sigBytes=4*M.length,this._process(),this._hash.toX32()},clone:function(){var H=_.clone.call(this);return H._hash=this._hash.clone(),H},blockSize:32}),h.SHA512=_._createHelper(w),h.HmacSHA512=_._createHmacHelper(w)}(),function(){var h=R,w=h.x64,_=w.Word,B=w.WordArray,w=h.algo,f=w.SHA512,w=w.SHA384=f.extend({_doReset:function(){this._hash=new B.init([new _.init(3418070365,3238371032),new _.init(1654270250,914150663),new _.init(2438529370,812702999),new _.init(355462360,4144912697),new _.init(1731405415,4290775857),new _.init(2394180231,1750603025),new _.init(3675008525,1694076839),new _.init(1203062813,3204075428)])},_doFinalize:function(){var y=f._doFinalize.call(this);return y.sigBytes-=16,y}});h.SHA384=f._createHelper(w),h.HmacSHA384=f._createHmacHelper(w)}(),R.lib.Cipher||function(){var h=R,_=h.lib,B=_.Base,f=_.WordArray,w=_.BufferedBlockAlgorithm,W=h.enc,y=(W.Utf8,W.Base64),z=h.algo.EvpKDF,c=_.Cipher=w.extend({cfg:B.extend(),createEncryptor:function(X,Y){return this.create(this._ENC_XFORM_MODE,X,Y)},createDecryptor:function(X,Y){return this.create(this._DEC_XFORM_MODE,X,Y)},init:function(X,Y,U){this.cfg=this.cfg.extend(U),this._xformMode=X,this._key=Y,this.reset()},reset:function(){w.reset.call(this),this._doReset()},process:function(X){return this._append(X),this._process()},finalize:function(X){return X&&this._append(X),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(X){return{encrypt:function(Y,U,D){return $(U).encrypt(X,Y,U,D)},decrypt:function(Y,U,D){return $(U).decrypt(X,Y,U,D)}}}});function $(X){return typeof X=="string"?J:Z}_.StreamCipher=c.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var W=h.mode={},C=_.BlockCipherMode=B.extend({createEncryptor:function(X,Y){return this.Encryptor.create(X,Y)},createDecryptor:function(X,Y){return this.Decryptor.create(X,Y)},init:function(X,Y){this._cipher=X,this._iv=Y}}),C=W.CBC=((W=C.extend()).Encryptor=W.extend({processBlock:function(X,Y){var U=this._cipher,D=U.blockSize;H.call(this,X,Y,D),U.encryptBlock(X,Y),this._prevBlock=X.slice(Y,Y+D)}}),W.Decryptor=W.extend({processBlock:function(X,Y){var U=this._cipher,D=U.blockSize,G=X.slice(Y,Y+D);U.decryptBlock(X,Y),H.call(this,X,Y,D),this._prevBlock=G}}),W);function H(X,Y,U){var D,G=this._iv;G?(D=G,this._iv=void 0):D=this._prevBlock;for(var q=0;q<U;q++)X[Y+q]^=D[q]}var W=(h.pad={}).Pkcs7={pad:function(X,Y){for(var Y=4*Y,U=Y-X.sigBytes%Y,D=U<<24|U<<16|U<<8|U,G=[],q=0;q<U;q+=4)G.push(D);Y=f.create(G,U),X.concat(Y)},unpad:function(X){var Y=255&X.words[X.sigBytes-1>>>2];X.sigBytes-=Y}},M=(_.BlockCipher=c.extend({cfg:c.cfg.extend({mode:C,padding:W}),reset:function(){c.reset.call(this);var X,U=this.cfg,Y=U.iv,U=U.mode;this._xformMode==this._ENC_XFORM_MODE?X=U.createEncryptor:(X=U.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==X?this._mode.init(this,Y&&Y.words):(this._mode=X.call(U,this,Y&&Y.words),this._mode.__creator=X)},_doProcessBlock:function(X,Y){this._mode.processBlock(X,Y)},_doFinalize:function(){var X,Y=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(Y.pad(this._data,this.blockSize),X=this._process(!0)):(X=this._process(!0),Y.unpad(X)),X},blockSize:4}),_.CipherParams=B.extend({init:function(X){this.mixIn(X)},toString:function(X){return(X||this.formatter).stringify(this)}})),C=(h.format={}).OpenSSL={stringify:function(U){var{ciphertext:Y,salt:U}=U;return(U?f.create([1398893684,1701076831]).concat(U).concat(Y):Y).toString(y)},parse:function(U){var Y,U=y.parse(U),D=U.words;return D[0]==1398893684&&D[1]==1701076831&&(Y=f.create(D.slice(2,4)),D.splice(0,4),U.sigBytes-=16),M.create({ciphertext:U,salt:Y})}},Z=_.SerializableCipher=B.extend({cfg:B.extend({format:C}),encrypt:function(X,G,U,D){D=this.cfg.extend(D);var q=X.createEncryptor(U,D),G=q.finalize(G),q=q.cfg;return M.create({ciphertext:G,key:U,iv:q.iv,algorithm:X,mode:q.mode,padding:q.padding,blockSize:X.blockSize,formatter:D.format})},decrypt:function(X,Y,U,D){return D=this.cfg.extend(D),Y=this._parse(Y,D.format),X.createDecryptor(U,D).finalize(Y.ciphertext)},_parse:function(X,Y){return typeof X=="string"?Y.parse(X,this):X}}),W=(h.kdf={}).OpenSSL={execute:function(X,Y,U,D){return D=D||f.random(8),X=z.create({keySize:Y+U}).compute(X,D),U=f.create(X.words.slice(Y),4*U),X.sigBytes=4*Y,M.create({key:X,iv:U,salt:D})}},J=_.PasswordBasedCipher=Z.extend({cfg:Z.cfg.extend({kdf:W}),encrypt:function(X,Y,U,D){return U=(D=this.cfg.extend(D)).kdf.execute(U,X.keySize,X.ivSize),D.iv=U.iv,X=Z.encrypt.call(this,X,Y,U.key,D),X.mixIn(U),X},decrypt:function(X,Y,U,D){return D=this.cfg.extend(D),Y=this._parse(Y,D.format),U=D.kdf.execute(U,X.keySize,X.ivSize,Y.salt),D.iv=U.iv,Z.decrypt.call(this,X,Y,U.key,D)}})}(),R.mode.CFB=function(){var h=R.lib.BlockCipherMode.extend();function _(B,f,w,y){var z,c=this._iv;c?(z=c.slice(0),this._iv=void 0):z=this._prevBlock,y.encryptBlock(z,0);for(var $=0;$<w;$++)B[f+$]^=z[$]}return h.Encryptor=h.extend({processBlock:function(B,f){var w=this._cipher,y=w.blockSize;_.call(this,B,f,y,w),this._prevBlock=B.slice(f,f+y)}}),h.Decryptor=h.extend({processBlock:function(B,f){var w=this._cipher,y=w.blockSize,z=B.slice(f,f+y);_.call(this,B,f,y,w),this._prevBlock=z}}),h}(),R.mode.ECB=function(){var h=R.lib.BlockCipherMode.extend();return h.Encryptor=h.extend({processBlock:function(_,B){this._cipher.encryptBlock(_,B)}}),h.Decryptor=h.extend({processBlock:function(_,B){this._cipher.decryptBlock(_,B)}}),h}(),R.pad.AnsiX923={pad:function(h,B){var f=h.sigBytes,B=4*B,B=B-f%B,f=f+B-1;h.clamp(),h.words[f>>>2]|=B<<24-f%4*8,h.sigBytes+=B},unpad:function(h){var _=255&h.words[h.sigBytes-1>>>2];h.sigBytes-=_}},R.pad.Iso10126={pad:function(h,_){_*=4,_-=h.sigBytes%_,h.concat(R.lib.WordArray.random(_-1)).concat(R.lib.WordArray.create([_<<24],1))},unpad:function(h){var _=255&h.words[h.sigBytes-1>>>2];h.sigBytes-=_}},R.pad.Iso97971={pad:function(h,_){h.concat(R.lib.WordArray.create([2147483648],1)),R.pad.ZeroPadding.pad(h,_)},unpad:function(h){R.pad.ZeroPadding.unpad(h),h.sigBytes--}},R.mode.OFB=function(){var h=R.lib.BlockCipherMode.extend(),_=h.Encryptor=h.extend({processBlock:function(B,f){var w=this._cipher,y=w.blockSize,z=this._iv,c=this._keystream;z&&(c=this._keystream=z.slice(0),this._iv=void 0),w.encryptBlock(c,0);for(var $=0;$<y;$++)B[f+$]^=c[$]}});return h.Decryptor=_,h}(),R.pad.NoPadding={pad:function(){},unpad:function(){}},function(){var h=R.lib.CipherParams,_=R.enc.Hex;R.format.Hex={stringify:function(B){return B.ciphertext.toString(_)},parse:function(B){return B=_.parse(B),h.create({ciphertext:B})}}}(),function(){for(var h=R,_=h.lib.BlockCipher,i=h.algo,B=[],f=[],w=[],y=[],z=[],c=[],$=[],H=[],M=[],C=[],Z=[],W=0;W<256;W++)Z[W]=W<128?W<<1:W<<1^283;for(var J=0,X=0,W=0;W<256;W++){var Y=X^X<<1^X<<2^X<<3^X<<4,U=Z[f[B[J]=Y=Y>>>8^255&Y^99]=J],D=Z[U],G=Z[D],q=257*Z[Y]^16843008*Y;w[J]=q<<24|q>>>8,y[J]=q<<16|q>>>16,z[J]=q<<8|q>>>24,c[J]=q,$[Y]=(q=16843009*G^65537*D^257*U^16843008*J)<<24|q>>>8,H[Y]=q<<16|q>>>16,M[Y]=q<<8|q>>>24,C[Y]=q,J?(J=U^Z[Z[Z[G^U]]],X^=Z[Z[X]]):J=X=1}var O=[0,1,2,4,8,16,32,64,128,27,54],i=i.AES=_.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var P=this._keyPriorReset=this._key,j=P.words,A=P.sigBytes/4,d=4*(1+(this._nRounds=6+A)),V=this._keySchedule=[],r=0;r<d;r++)r<A?V[r]=j[r]:(N=V[r-1],r%A?6<A&&r%A==4&&(N=B[N>>>24]<<24|B[N>>>16&255]<<16|B[N>>>8&255]<<8|B[255&N]):(N=B[(N=N<<8|N>>>24)>>>24]<<24|B[N>>>16&255]<<16|B[N>>>8&255]<<8|B[255&N],N^=O[r/A|0]<<24),V[r]=V[r-A]^N);for(var L=this._invKeySchedule=[],T=0;T<d;T++){var N,r=d-T;N=T%4?V[r]:V[r-4],L[T]=T<4||r<=4?N:$[B[N>>>24]]^H[B[N>>>16&255]]^M[B[N>>>8&255]]^C[B[255&N]]}}},encryptBlock:function(P,j){this._doCryptBlock(P,j,this._keySchedule,w,y,z,c,B)},decryptBlock:function(P,j){var A=P[j+1],A=(P[j+1]=P[j+3],P[j+3]=A,this._doCryptBlock(P,j,this._invKeySchedule,$,H,M,C,f),P[j+1]);P[j+1]=P[j+3],P[j+3]=A},_doCryptBlock:function(P,j,A,d,V,r,L,T){for(var N=this._nRounds,n=P[j]^A[0],m=P[j+1]^A[1],v=P[j+2]^A[2],u=P[j+3]^A[3],S=4,I=1;I<N;I++)var Q=d[n>>>24]^V[m>>>16&255]^r[v>>>8&255]^L[255&u]^A[S++],F=d[m>>>24]^V[v>>>16&255]^r[u>>>8&255]^L[255&n]^A[S++],K=d[v>>>24]^V[u>>>16&255]^r[n>>>8&255]^L[255&m]^A[S++],l=d[u>>>24]^V[n>>>16&255]^r[m>>>8&255]^L[255&v]^A[S++],n=Q,m=F,v=K,u=l;Q=(T[n>>>24]<<24|T[m>>>16&255]<<16|T[v>>>8&255]<<8|T[255&u])^A[S++],F=(T[m>>>24]<<24|T[v>>>16&255]<<16|T[u>>>8&255]<<8|T[255&n])^A[S++],K=(T[v>>>24]<<24|T[u>>>16&255]<<16|T[n>>>8&255]<<8|T[255&m])^A[S++],l=(T[u>>>24]<<24|T[n>>>16&255]<<16|T[m>>>8&255]<<8|T[255&v])^A[S++],P[j]=Q,P[j+1]=F,P[j+2]=K,P[j+3]=l},keySize:8});h.AES=_._createHelper(i)}(),function(){var h=R,B=h.lib,_=B.WordArray,B=B.BlockCipher,f=h.algo,w=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],y=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],z=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],$=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],H=f.DES=B.extend({_doReset:function(){for(var Z=this._key.words,W=[],J=0;J<56;J++){var X=w[J]-1;W[J]=Z[X>>>5]>>>31-X%32&1}for(var Y=this._subKeys=[],U=0;U<16;U++){for(var D=Y[U]=[],G=z[U],J=0;J<24;J++)D[J/6|0]|=W[(y[J]-1+G)%28]<<31-J%6,D[4+(J/6|0)]|=W[28+(y[J+24]-1+G)%28]<<31-J%6;D[0]=D[0]<<1|D[0]>>>31;for(J=1;J<7;J++)D[J]=D[J]>>>4*(J-1)+3;D[7]=D[7]<<5|D[7]>>>27}for(var q=this._invSubKeys=[],J=0;J<16;J++)q[J]=Y[15-J]},encryptBlock:function(Z,W){this._doCryptBlock(Z,W,this._subKeys)},decryptBlock:function(Z,W){this._doCryptBlock(Z,W,this._invSubKeys)},_doCryptBlock:function(Z,W,J){this._lBlock=Z[W],this._rBlock=Z[W+1],M.call(this,4,252645135),M.call(this,16,65535),C.call(this,2,858993459),C.call(this,8,16711935),M.call(this,1,1431655765);for(var X=0;X<16;X++){for(var Y=J[X],U=this._lBlock,D=this._rBlock,G=0,q=0;q<8;q++)G|=c[q][((D^Y[q])&$[q])>>>0];this._lBlock=D,this._rBlock=U^G}var O=this._lBlock;this._lBlock=this._rBlock,this._rBlock=O,M.call(this,1,1431655765),C.call(this,8,16711935),C.call(this,2,858993459),M.call(this,16,65535),M.call(this,4,252645135),Z[W]=this._lBlock,Z[W+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function M(Z,W){W=(this._lBlock>>>Z^this._rBlock)&W,this._rBlock^=W,this._lBlock^=W<<Z}function C(Z,W){W=(this._rBlock>>>Z^this._lBlock)&W,this._lBlock^=W,this._rBlock^=W<<Z}h.DES=B._createHelper(H),f=f.TripleDES=B.extend({_doReset:function(){var Z=this._key.words;this._des1=H.createEncryptor(_.create(Z.slice(0,2))),this._des2=H.createEncryptor(_.create(Z.slice(2,4))),this._des3=H.createEncryptor(_.create(Z.slice(4,6)))},encryptBlock:function(Z,W){this._des1.encryptBlock(Z,W),this._des2.decryptBlock(Z,W),this._des3.encryptBlock(Z,W)},decryptBlock:function(Z,W){this._des3.decryptBlock(Z,W),this._des2.encryptBlock(Z,W),this._des1.decryptBlock(Z,W)},keySize:6,ivSize:2,blockSize:2}),h.TripleDES=B._createHelper(f)}(),function(){var h=R,_=h.lib.StreamCipher,B=h.algo,f=B.RC4=_.extend({_doReset:function(){for(var y=this._key,z=y.words,c=y.sigBytes,$=this._S=[],H=0;H<256;H++)$[H]=H;for(var H=0,M=0;H<256;H++){var C=H%c,C=z[C>>>2]>>>24-C%4*8&255,M=(M+$[H]+C)%256,C=$[H];$[H]=$[M],$[M]=C}this._i=this._j=0},_doProcessBlock:function(y,z){y[z]^=w.call(this)},keySize:8,ivSize:0});function w(){for(var y=this._S,z=this._i,c=this._j,$=0,H=0;H<4;H++){var c=(c+y[z=(z+1)%256])%256,M=y[z];y[z]=y[c],y[c]=M,$|=y[(y[z]+y[c])%256]<<24-8*H}return this._i=z,this._j=c,$}h.RC4=_._createHelper(f),B=B.RC4Drop=f.extend({cfg:f.cfg.extend({drop:192}),_doReset:function(){f._doReset.call(this);for(var y=this.cfg.drop;0<y;y--)w.call(this)}}),h.RC4Drop=_._createHelper(B)}(),R.mode.CTRGladman=function(){var h=R.lib.BlockCipherMode.extend();function _(f){var w,y,z;return(f>>24&255)==255?(y=f>>8&255,z=255&f,(w=f>>16&255)===255?(w=0,y===255?(y=0,z===255?z=0:++z):++y):++w,f=0,f=(f+=w<<16)+(y<<8)+z):f+=16777216,f}var B=h.Encryptor=h.extend({processBlock:function(f,w){var y=this._cipher,z=y.blockSize,c=this._iv,$=this._counter,H=(c&&($=this._counter=c.slice(0),this._iv=void 0),((c=$)[0]=_(c[0]))===0&&(c[1]=_(c[1])),$.slice(0));y.encryptBlock(H,0);for(var M=0;M<z;M++)f[w+M]^=H[M]}});return h.Decryptor=B,h}(),function(){var h=R,_=h.lib.StreamCipher,y=h.algo,B=[],f=[],w=[],y=y.Rabbit=_.extend({_doReset:function(){for(var c=this._key.words,$=this.cfg.iv,H=0;H<4;H++)c[H]=16711935&(c[H]<<8|c[H]>>>24)|4278255360&(c[H]<<24|c[H]>>>8);for(var M=this._X=[c[0],c[3]<<16|c[2]>>>16,c[1],c[0]<<16|c[3]>>>16,c[2],c[1]<<16|c[0]>>>16,c[3],c[2]<<16|c[1]>>>16],C=this._C=[c[2]<<16|c[2]>>>16,4294901760&c[0]|65535&c[1],c[3]<<16|c[3]>>>16,4294901760&c[1]|65535&c[2],c[0]<<16|c[0]>>>16,4294901760&c[2]|65535&c[3],c[1]<<16|c[1]>>>16,4294901760&c[3]|65535&c[0]],H=this._b=0;H<4;H++)z.call(this);for(H=0;H<8;H++)C[H]^=M[H+4&7];if($){var $=$.words,Z=$[0],$=$[1],Z=16711935&(Z<<8|Z>>>24)|4278255360&(Z<<24|Z>>>8),$=16711935&($<<8|$>>>24)|4278255360&($<<24|$>>>8),W=Z>>>16|4294901760&$,J=$<<16|65535&Z;C[0]^=Z,C[1]^=W,C[2]^=$,C[3]^=J,C[4]^=Z,C[5]^=W,C[6]^=$,C[7]^=J;for(H=0;H<4;H++)z.call(this)}},_doProcessBlock:function(c,$){var H=this._X;z.call(this),B[0]=H[0]^H[5]>>>16^H[3]<<16,B[1]=H[2]^H[7]>>>16^H[5]<<16,B[2]=H[4]^H[1]>>>16^H[7]<<16,B[3]=H[6]^H[3]>>>16^H[1]<<16;for(var M=0;M<4;M++)B[M]=16711935&(B[M]<<8|B[M]>>>24)|4278255360&(B[M]<<24|B[M]>>>8),c[$+M]^=B[M]},blockSize:4,ivSize:2});function z(){for(var c=this._X,$=this._C,H=0;H<8;H++)f[H]=$[H];$[0]=$[0]+1295307597+this._b|0,$[1]=$[1]+3545052371+($[0]>>>0<f[0]>>>0?1:0)|0,$[2]=$[2]+886263092+($[1]>>>0<f[1]>>>0?1:0)|0,$[3]=$[3]+1295307597+($[2]>>>0<f[2]>>>0?1:0)|0,$[4]=$[4]+3545052371+($[3]>>>0<f[3]>>>0?1:0)|0,$[5]=$[5]+886263092+($[4]>>>0<f[4]>>>0?1:0)|0,$[6]=$[6]+1295307597+($[5]>>>0<f[5]>>>0?1:0)|0,$[7]=$[7]+3545052371+($[6]>>>0<f[6]>>>0?1:0)|0,this._b=$[7]>>>0<f[7]>>>0?1:0;for(H=0;H<8;H++){var M=c[H]+$[H],C=65535&M,Z=M>>>16;w[H]=((C*C>>>17)+C*Z>>>15)+Z*Z^((4294901760&M)*M|0)+((65535&M)*M|0)}c[0]=w[0]+(w[7]<<16|w[7]>>>16)+(w[6]<<16|w[6]>>>16)|0,c[1]=w[1]+(w[0]<<8|w[0]>>>24)+w[7]|0,c[2]=w[2]+(w[1]<<16|w[1]>>>16)+(w[0]<<16|w[0]>>>16)|0,c[3]=w[3]+(w[2]<<8|w[2]>>>24)+w[1]|0,c[4]=w[4]+(w[3]<<16|w[3]>>>16)+(w[2]<<16|w[2]>>>16)|0,c[5]=w[5]+(w[4]<<8|w[4]>>>24)+w[3]|0,c[6]=w[6]+(w[5]<<16|w[5]>>>16)+(w[4]<<16|w[4]>>>16)|0,c[7]=w[7]+(w[6]<<8|w[6]>>>24)+w[5]|0}h.Rabbit=_._createHelper(y)}(),R.mode.CTR=function(){var h=R.lib.BlockCipherMode.extend(),_=h.Encryptor=h.extend({processBlock:function(B,f){var w=this._cipher,y=w.blockSize,z=this._iv,c=this._counter,$=(z&&(c=this._counter=z.slice(0),this._iv=void 0),c.slice(0));w.encryptBlock($,0),c[y-1]=c[y-1]+1|0;for(var H=0;H<y;H++)B[f+H]^=$[H]}});return h.Decryptor=_,h}(),function(){var h=R,_=h.lib.StreamCipher,y=h.algo,B=[],f=[],w=[],y=y.RabbitLegacy=_.extend({_doReset:function(){for(var c=this._key.words,$=this.cfg.iv,H=this._X=[c[0],c[3]<<16|c[2]>>>16,c[1],c[0]<<16|c[3]>>>16,c[2],c[1]<<16|c[0]>>>16,c[3],c[2]<<16|c[1]>>>16],M=this._C=[c[2]<<16|c[2]>>>16,4294901760&c[0]|65535&c[1],c[3]<<16|c[3]>>>16,4294901760&c[1]|65535&c[2],c[0]<<16|c[0]>>>16,4294901760&c[2]|65535&c[3],c[1]<<16|c[1]>>>16,4294901760&c[3]|65535&c[0]],C=this._b=0;C<4;C++)z.call(this);for(C=0;C<8;C++)M[C]^=H[C+4&7];if($){var c=$.words,$=c[0],c=c[1],$=16711935&($<<8|$>>>24)|4278255360&($<<24|$>>>8),c=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),Z=$>>>16|4294901760&c,W=c<<16|65535&$;M[0]^=$,M[1]^=Z,M[2]^=c,M[3]^=W,M[4]^=$,M[5]^=Z,M[6]^=c,M[7]^=W;for(C=0;C<4;C++)z.call(this)}},_doProcessBlock:function(c,$){var H=this._X;z.call(this),B[0]=H[0]^H[5]>>>16^H[3]<<16,B[1]=H[2]^H[7]>>>16^H[5]<<16,B[2]=H[4]^H[1]>>>16^H[7]<<16,B[3]=H[6]^H[3]>>>16^H[1]<<16;for(var M=0;M<4;M++)B[M]=16711935&(B[M]<<8|B[M]>>>24)|4278255360&(B[M]<<24|B[M]>>>8),c[$+M]^=B[M]},blockSize:4,ivSize:2});function z(){for(var c=this._X,$=this._C,H=0;H<8;H++)f[H]=$[H];$[0]=$[0]+1295307597+this._b|0,$[1]=$[1]+3545052371+($[0]>>>0<f[0]>>>0?1:0)|0,$[2]=$[2]+886263092+($[1]>>>0<f[1]>>>0?1:0)|0,$[3]=$[3]+1295307597+($[2]>>>0<f[2]>>>0?1:0)|0,$[4]=$[4]+3545052371+($[3]>>>0<f[3]>>>0?1:0)|0,$[5]=$[5]+886263092+($[4]>>>0<f[4]>>>0?1:0)|0,$[6]=$[6]+1295307597+($[5]>>>0<f[5]>>>0?1:0)|0,$[7]=$[7]+3545052371+($[6]>>>0<f[6]>>>0?1:0)|0,this._b=$[7]>>>0<f[7]>>>0?1:0;for(H=0;H<8;H++){var M=c[H]+$[H],C=65535&M,Z=M>>>16;w[H]=((C*C>>>17)+C*Z>>>15)+Z*Z^((4294901760&M)*M|0)+((65535&M)*M|0)}c[0]=w[0]+(w[7]<<16|w[7]>>>16)+(w[6]<<16|w[6]>>>16)|0,c[1]=w[1]+(w[0]<<8|w[0]>>>24)+w[7]|0,c[2]=w[2]+(w[1]<<16|w[1]>>>16)+(w[0]<<16|w[0]>>>16)|0,c[3]=w[3]+(w[2]<<8|w[2]>>>24)+w[1]|0,c[4]=w[4]+(w[3]<<16|w[3]>>>16)+(w[2]<<16|w[2]>>>16)|0,c[5]=w[5]+(w[4]<<8|w[4]>>>24)+w[3]|0,c[6]=w[6]+(w[5]<<16|w[5]>>>16)+(w[4]<<16|w[4]>>>16)|0,c[7]=w[7]+(w[6]<<8|w[6]>>>24)+w[5]|0}h.RabbitLegacy=_._createHelper(y)}(),R.pad.ZeroPadding={pad:function(h,_){_*=4,h.clamp(),h.sigBytes+=_-(h.sigBytes%_||_)},unpad:function(h){for(var _=h.words,B=h.sigBytes-1;!(_[B>>>2]>>>24-B%4*8&255);)B--;h.sigBytes=B+1}};var y4="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function I2(h){if(typeof h!="string")return!1;try{return JSON.parse(h),!0}catch(_){return!1}}var K2=(h,_)=>parseInt(Math.random()*(_-h+1)+h),v1=(h)=>{let _="";for(let B=0;B<h;B++)_+=y4[K2(0,64)];return _},y1={encode(h){return h=R.enc.Utf8.parse(h),R.enc.Base64.stringify(h)},decode(h){return(h=R.enc.Base64.parse(h)).toString(R.enc.Utf8)}};function w4(h,_){try{var B=v1(8),f=v1(8),w=(_=R.enc.Utf8.parse(_),R.enc.Utf8.parse(B+f)),y=R.enc.Utf8.parse(h);return B+R.AES.encrypt(y,_,{iv:w,mode:R.mode.CBC,padding:R.pad.Pkcs7}).ciphertext.toString()+f}catch(z){}}function c4(h,_){try{var B=h.slice(0,8),f=h.slice(h.length-8,h.length),w=(h=h.slice(8,h.length-8),_=R.enc.Utf8.parse(_),R.enc.Utf8.parse(B+f)),y=R.enc.Hex.parse(h),z=R.enc.Base64.stringify(y);return R.AES.decrypt(z,_,{iv:w,mode:R.mode.CBC,padding:R.pad.Pkcs7}).toString(R.enc.Utf8).toString()}catch(c){}}var z4=function(h,_,B=0){for(h instanceof Object&&(h=JSON.stringify(h));_.length<16;)_+="0";return h=y1.encode(w4(h,_)),B&&(h=y1.encode(h),h=y1.encode(h),h=y1.encode(h),h=y1.encode(h),h=y1.encode(h)),h},$4=function(h,_,B=0){try{for(;_.length<16;)_+="0";return h=y1.decode(h),B&&(h=y1.decode(h),h=y1.decode(h),h=y1.decode(h),h=y1.decode(h),h=y1.decode(h)),(h=I2(h=c4(h,_))?JSON.parse(h):h)!=""&&h}catch(f){return!1}};try{b1&&(b1.exports={encode:z4,decode:$4,isJSON:I2,randomInt:K2,randomStr:v1})}catch(h){}});var r1=_1((N4)=>{N4.isInteger=(h)=>{if(typeof h==="number")return Number.isInteger(h);if(typeof h==="string"&&h.trim()!=="")return Number.isInteger(Number(h));return!1};N4.find=(h,_)=>h.nodes.find((B)=>B.type===_);N4.exceedsLimit=(h,_,B=1,f)=>{if(f===!1)return!1;if(!N4.isInteger(h)||!N4.isInteger(_))return!1;return(Number(_)-Number(h))/Number(B)>=f};N4.escapeNode=(h,_=0,B)=>{let f=h.nodes[_];if(!f)return;if(B&&f.type===B||f.type==="open"||f.type==="close"){if(f.escaped!==!0)f.value="\\"+f.value,f.escaped=!0}};N4.encloseBrace=(h)=>{if(h.type!=="brace")return!1;if(h.commas>>0+h.ranges>>0===0)return h.invalid=!0,!0;return!1};N4.isInvalidBrace=(h)=>{if(h.type!=="brace")return!1;if(h.invalid===!0||h.dollar)return!0;if(h.commas>>0+h.ranges>>0===0)return h.invalid=!0,!0;if(h.open!==!0||h.close!==!0)return h.invalid=!0,!0;return!1};N4.isOpenOrClose=(h)=>{if(h.type==="open"||h.type==="close")return!0;return h.open===!0||h.close===!0};N4.reduce=(h)=>h.reduce((_,B)=>{if(B.type==="text")_.push(B.value);if(B.type==="range")B.type="text";return _},[]);N4.flatten=(...h)=>{let _=[],B=(f)=>{for(let w=0;w<f.length;w++){let y=f[w];if(Array.isArray(y)){B(y);continue}if(y!==void 0)_.push(y)}return _};return B(h),_}});var O1=_1((C3,i2)=>{var T2=r1();i2.exports=(h,_={})=>{let B=(f,w={})=>{let y=_.escapeInvalid&&T2.isInvalidBrace(w),z=f.invalid===!0&&_.escapeInvalid===!0,c="";if(f.value){if((y||z)&&T2.isOpenOrClose(f))return"\\"+f.value;return f.value}if(f.value)return f.value;if(f.nodes)for(let $ of f.nodes)c+=B($);return c};return B(h)}});var d2=_1((Y3,x2)=>{/*!
|
|
2
|
+
* is-number <https://github.com/jonschlinkert/is-number>
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2014-present, Jon Schlinkert.
|
|
5
|
+
* Released under the MIT License.
|
|
6
|
+
*/x2.exports=function(h){if(typeof h==="number")return h-h===0;if(typeof h==="string"&&h.trim()!=="")return Number.isFinite?Number.isFinite(+h):isFinite(+h);return!1}});var e2=_1((U3,s2)=>{/*!
|
|
7
|
+
* to-regex-range <https://github.com/micromatch/to-regex-range>
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2015-present, Jon Schlinkert.
|
|
10
|
+
* Released under the MIT License.
|
|
11
|
+
*/var k2=d2(),J1=(h,_,B)=>{if(k2(h)===!1)throw TypeError("toRegexRange: expected the first argument to be a number");if(_===void 0||h===_)return String(h);if(k2(_)===!1)throw TypeError("toRegexRange: expected the second argument to be a number.");let f={relaxZeros:!0,...B};if(typeof f.strictZeros==="boolean")f.relaxZeros=f.strictZeros===!1;let w=String(f.relaxZeros),y=String(f.shorthand),z=String(f.capture),c=String(f.wrap),$=h+":"+_+"="+w+y+z+c;if(J1.cache.hasOwnProperty($))return J1.cache[$].result;let H=Math.min(h,_),M=Math.max(h,_);if(Math.abs(H-M)===1){let X=h+"|"+_;if(f.capture)return`(${X})`;if(f.wrap===!1)return X;return`(?:${X})`}let C=m2(h)||m2(_),Z={min:h,max:_,a:H,b:M},W=[],J=[];if(C)Z.isPadded=C,Z.maxLen=String(Z.max).length;if(H<0){let X=M<0?Math.abs(M):1;J=l2(X,Math.abs(H),Z,f),H=Z.a=0}if(M>=0)W=l2(H,M,Z,f);if(Z.negatives=J,Z.positives=W,Z.result=P4(J,W,f),f.capture===!0)Z.result=`(${Z.result})`;else if(f.wrap!==!1&&W.length+J.length>1)Z.result=`(?:${Z.result})`;return J1.cache[$]=Z,Z.result};function P4(h,_,B){let f=a1(h,_,"-",!1,B)||[],w=a1(_,h,"",!1,B)||[],y=a1(h,_,"-?",!0,B)||[];return f.concat(y).concat(w).join("|")}function q4(h,_){let B=1,f=1,w=v2(h,B),y=new Set([_]);while(h<=w&&w<=_)y.add(w),B+=1,w=v2(h,B);w=b2(_+1,f)-1;while(h<w&&w<=_)y.add(w),f+=1,w=b2(_+1,f)-1;return y=[...y],y.sort(E4),y}function g4(h,_,B){if(h===_)return{pattern:h,count:[],digits:0};let f=A4(h,_),w=f.length,y="",z=0;for(let c=0;c<w;c++){let[$,H]=f[c];if($===H)y+=$;else if($!=="0"||H!=="9")y+=R4($,H,B);else z++}if(z)y+=B.shorthand===!0?"\\d":"[0-9]";return{pattern:y,count:[z],digits:w}}function l2(h,_,B,f){let w=q4(h,_),y=[],z=h,c;for(let $=0;$<w.length;$++){let H=w[$],M=g4(String(z),String(H),f),C="";if(!B.isPadded&&c&&c.pattern===M.pattern){if(c.count.length>1)c.count.pop();c.count.push(M.count[0]),c.string=c.pattern+n2(c.count),z=H+1;continue}if(B.isPadded)C=L4(H,B,f);M.string=C+M.pattern+n2(M.count),y.push(M),z=H+1,c=M}return y}function a1(h,_,B,f,w){let y=[];for(let z of h){let{string:c}=z;if(!f&&!u2(_,"string",c))y.push(B+c);if(f&&u2(_,"string",c))y.push(B+c)}return y}function A4(h,_){let B=[];for(let f=0;f<h.length;f++)B.push([h[f],_[f]]);return B}function E4(h,_){return h>_?1:_>h?-1:0}function u2(h,_,B){return h.some((f)=>f[_]===B)}function v2(h,_){return Number(String(h).slice(0,-_)+"9".repeat(_))}function b2(h,_){return h-h%Math.pow(10,_)}function n2(h){let[_=0,B=""]=h;if(B||_>1)return`{${_+(B?","+B:"")}}`;return""}function R4(h,_,B){return`[${h}${_-h===1?"":"-"}${_}]`}function m2(h){return/^-?(0+)\d/.test(h)}function L4(h,_,B){if(!_.isPadded)return h;let f=Math.abs(_.maxLen-String(h).length),w=B.relaxZeros!==!1;switch(f){case 0:return"";case 1:return w?"0?":"0";case 2:return w?"0{0,2}":"00";default:return w?`0{0,${f}}`:`0{${f}}`}}J1.cache={};J1.clearCache=()=>J1.cache={};s2.exports=J1});var _2=_1((D3,B0)=>{/*!
|
|
12
|
+
* fill-range <https://github.com/jonschlinkert/fill-range>
|
|
13
|
+
*
|
|
14
|
+
* Copyright (c) 2014-present, Jon Schlinkert.
|
|
15
|
+
* Licensed under the MIT License.
|
|
16
|
+
*/var r4=F1("util"),o2=e2(),p2=(h)=>h!==null&&typeof h==="object"&&!Array.isArray(h),O4=(h)=>{return(_)=>h===!0?Number(_):String(_)},t1=(h)=>{return typeof h==="number"||typeof h==="string"&&h!==""},j1=(h)=>Number.isInteger(+h),h2=(h)=>{let _=`${h}`,B=-1;if(_[0]==="-")_=_.slice(1);if(_==="0")return!1;while(_[++B]==="0");return B>0},T4=(h,_,B)=>{if(typeof h==="string"||typeof _==="string")return!0;return B.stringify===!0},i4=(h,_,B)=>{if(_>0){let f=h[0]==="-"?"-":"";if(f)h=h.slice(1);h=f+h.padStart(f?_-1:_,"0")}if(B===!1)return String(h);return h},i1=(h,_)=>{let B=h[0]==="-"?"-":"";if(B)h=h.slice(1),_--;while(h.length<_)h="0"+h;return B?"-"+h:h},x4=(h,_,B)=>{h.negatives.sort((c,$)=>c<$?-1:c>$?1:0),h.positives.sort((c,$)=>c<$?-1:c>$?1:0);let f=_.capture?"":"?:",w="",y="",z;if(h.positives.length)w=h.positives.map((c)=>i1(String(c),B)).join("|");if(h.negatives.length)y=`-(${f}${h.negatives.map((c)=>i1(String(c),B)).join("|")})`;if(w&&y)z=`${w}|${y}`;else z=w||y;if(_.wrap)return`(${f}${z})`;return z},a2=(h,_,B,f)=>{if(B)return o2(h,_,{wrap:!1,...f});let w=String.fromCharCode(h);if(h===_)return w;let y=String.fromCharCode(_);return`[${w}-${y}]`},t2=(h,_,B)=>{if(Array.isArray(h)){let f=B.wrap===!0,w=B.capture?"":"?:";return f?`(${w}${h.join("|")})`:h.join("|")}return o2(h,_,B)},h0=(...h)=>{return RangeError("Invalid range arguments: "+r4.inspect(...h))},_0=(h,_,B)=>{if(B.strictRanges===!0)throw h0([h,_]);return[]},d4=(h,_)=>{if(_.strictRanges===!0)throw TypeError(`Expected step "${h}" to be a number`);return[]},k4=(h,_,B=1,f={})=>{let w=Number(h),y=Number(_);if(!Number.isInteger(w)||!Number.isInteger(y)){if(f.strictRanges===!0)throw h0([h,_]);return[]}if(w===0)w=0;if(y===0)y=0;let z=w>y,c=String(h),$=String(_),H=String(B);B=Math.max(Math.abs(B),1);let M=h2(c)||h2($)||h2(H),C=M?Math.max(c.length,$.length,H.length):0,Z=M===!1&&T4(h,_,f)===!1,W=f.transform||O4(Z);if(f.toRegex&&B===1)return a2(i1(h,C),i1(_,C),!0,f);let J={negatives:[],positives:[]},X=(D)=>J[D<0?"negatives":"positives"].push(Math.abs(D)),Y=[],U=0;while(z?w>=y:w<=y){if(f.toRegex===!0&&B>1)X(w);else Y.push(i4(W(w,U),C,Z));w=z?w-B:w+B,U++}if(f.toRegex===!0)return B>1?x4(J,f,C):t2(Y,null,{wrap:!1,...f});return Y},l4=(h,_,B=1,f={})=>{if(!j1(h)&&h.length>1||!j1(_)&&_.length>1)return _0(h,_,f);let w=f.transform||((Z)=>String.fromCharCode(Z)),y=`${h}`.charCodeAt(0),z=`${_}`.charCodeAt(0),c=y>z,$=Math.min(y,z),H=Math.max(y,z);if(f.toRegex&&B===1)return a2($,H,!1,f);let M=[],C=0;while(c?y>=z:y<=z)M.push(w(y,C)),y=c?y-B:y+B,C++;if(f.toRegex===!0)return t2(M,null,{wrap:!1,options:f});return M},T1=(h,_,B,f={})=>{if(_==null&&t1(h))return[h];if(!t1(h)||!t1(_))return _0(h,_,f);if(typeof B==="function")return T1(h,_,1,{transform:B});if(p2(B))return T1(h,_,0,B);let w={...f};if(w.capture===!0)w.wrap=!0;if(B=B||w.step||1,!j1(B)){if(B!=null&&!p2(B))return d4(B,w);return T1(h,_,1,B)}if(j1(h)&&j1(_))return k4(h,_,B,w);return l4(h,_,Math.max(Math.abs(B),1),w)};B0.exports=T1});var w0=_1((N3,y0)=>{var u4=_2(),f0=r1(),v4=(h,_={})=>{let B=(f,w={})=>{let y=f0.isInvalidBrace(w),z=f.invalid===!0&&_.escapeInvalid===!0,c=y===!0||z===!0,$=_.escapeInvalid===!0?"\\":"",H="";if(f.isOpen===!0)return $+f.value;if(f.isClose===!0)return console.log("node.isClose",$,f.value),$+f.value;if(f.type==="open")return c?$+f.value:"(";if(f.type==="close")return c?$+f.value:")";if(f.type==="comma")return f.prev.type==="comma"?"":c?f.value:"|";if(f.value)return f.value;if(f.nodes&&f.ranges>0){let M=f0.reduce(f.nodes),C=u4(...M,{..._,wrap:!1,toRegex:!0,strictZeros:!0});if(C.length!==0)return M.length>1&&C.length>1?`(${C})`:C}if(f.nodes)for(let M of f.nodes)H+=B(M,f);return H};return B(h)};y0.exports=v4});var $0=_1((S3,z0)=>{var b4=_2(),c0=O1(),U1=r1(),M1=(h="",_="",B=!1)=>{let f=[];if(h=[].concat(h),_=[].concat(_),!_.length)return h;if(!h.length)return B?U1.flatten(_).map((w)=>`{${w}}`):_;for(let w of h)if(Array.isArray(w))for(let y of w)f.push(M1(y,_,B));else for(let y of _){if(B===!0&&typeof y==="string")y=`{${y}}`;f.push(Array.isArray(y)?M1(w,y,B):w+y)}return U1.flatten(f)},n4=(h,_={})=>{let B=_.rangeLimit===void 0?1000:_.rangeLimit,f=(w,y={})=>{w.queue=[];let z=y,c=y.queue;while(z.type!=="brace"&&z.type!=="root"&&z.parent)z=z.parent,c=z.queue;if(w.invalid||w.dollar){c.push(M1(c.pop(),c0(w,_)));return}if(w.type==="brace"&&w.invalid!==!0&&w.nodes.length===2){c.push(M1(c.pop(),["{}"]));return}if(w.nodes&&w.ranges>0){let C=U1.reduce(w.nodes);if(U1.exceedsLimit(...C,_.step,B))throw RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let Z=b4(...C,_);if(Z.length===0)Z=c0(w,_);c.push(M1(c.pop(),Z)),w.nodes=[];return}let $=U1.encloseBrace(w),H=w.queue,M=w;while(M.type!=="brace"&&M.type!=="root"&&M.parent)M=M.parent,H=M.queue;for(let C=0;C<w.nodes.length;C++){let Z=w.nodes[C];if(Z.type==="comma"&&w.type==="brace"){if(C===1)H.push("");H.push("");continue}if(Z.type==="close"){c.push(M1(c.pop(),H,$));continue}if(Z.value&&Z.type!=="open"){H.push(M1(H.pop(),Z.value));continue}if(Z.nodes)f(Z,w)}return H};return U1.flatten(f(h))};z0.exports=n4});var H0=_1((V3,W0)=>{W0.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
17
|
+
`,CHAR_NO_BREAK_SPACE:" ",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var C0=_1((Q3,M0)=>{var m4=O1(),{MAX_LENGTH:X0,CHAR_BACKSLASH:B2,CHAR_BACKTICK:s4,CHAR_COMMA:e4,CHAR_DOT:p4,CHAR_LEFT_PARENTHESES:o4,CHAR_RIGHT_PARENTHESES:a4,CHAR_LEFT_CURLY_BRACE:t4,CHAR_RIGHT_CURLY_BRACE:h6,CHAR_LEFT_SQUARE_BRACKET:Z0,CHAR_RIGHT_SQUARE_BRACKET:J0,CHAR_DOUBLE_QUOTE:_6,CHAR_SINGLE_QUOTE:B6,CHAR_NO_BREAK_SPACE:f6,CHAR_ZERO_WIDTH_NOBREAK_SPACE:y6}=H0(),w6=(h,_={})=>{if(typeof h!=="string")throw TypeError("Expected a string");let B=_||{},f=typeof B.maxLength==="number"?Math.min(X0,B.maxLength):X0;if(h.length>f)throw SyntaxError(`Input length (${h.length}), exceeds max characters (${f})`);let w={type:"root",input:h,nodes:[]},y=[w],z=w,c=w,$=0,H=h.length,M=0,C=0,Z,W=()=>h[M++],J=(X)=>{if(X.type==="text"&&c.type==="dot")c.type="text";if(c&&c.type==="text"&&X.type==="text"){c.value+=X.value;return}return z.nodes.push(X),X.parent=z,X.prev=c,c=X,X};J({type:"bos"});while(M<H){if(z=y[y.length-1],Z=W(),Z===y6||Z===f6)continue;if(Z===B2){J({type:"text",value:(_.keepEscaping?Z:"")+W()});continue}if(Z===J0){J({type:"text",value:"\\"+Z});continue}if(Z===Z0){$++;let X;while(M<H&&(X=W())){if(Z+=X,X===Z0){$++;continue}if(X===B2){Z+=W();continue}if(X===J0){if($--,$===0)break}}J({type:"text",value:Z});continue}if(Z===o4){z=J({type:"paren",nodes:[]}),y.push(z),J({type:"text",value:Z});continue}if(Z===a4){if(z.type!=="paren"){J({type:"text",value:Z});continue}z=y.pop(),J({type:"text",value:Z}),z=y[y.length-1];continue}if(Z===_6||Z===B6||Z===s4){let X=Z,Y;if(_.keepQuotes!==!0)Z="";while(M<H&&(Y=W())){if(Y===B2){Z+=Y+W();continue}if(Y===X){if(_.keepQuotes===!0)Z+=Y;break}Z+=Y}J({type:"text",value:Z});continue}if(Z===t4){C++;let Y={type:"brace",open:!0,close:!1,dollar:c.value&&c.value.slice(-1)==="$"||z.dollar===!0,depth:C,commas:0,ranges:0,nodes:[]};z=J(Y),y.push(z),J({type:"open",value:Z});continue}if(Z===h6){if(z.type!=="brace"){J({type:"text",value:Z});continue}let X="close";z=y.pop(),z.close=!0,J({type:X,value:Z}),C--,z=y[y.length-1];continue}if(Z===e4&&C>0){if(z.ranges>0){z.ranges=0;let X=z.nodes.shift();z.nodes=[X,{type:"text",value:m4(z)}]}J({type:"comma",value:Z}),z.commas++;continue}if(Z===p4&&C>0&&z.commas===0){let X=z.nodes;if(C===0||X.length===0){J({type:"text",value:Z});continue}if(c.type==="dot"){if(z.range=[],c.value+=Z,c.type="range",z.nodes.length!==3&&z.nodes.length!==5){z.invalid=!0,z.ranges=0,c.type="text";continue}z.ranges++,z.args=[];continue}if(c.type==="range"){X.pop();let Y=X[X.length-1];Y.value+=c.value+Z,c=Y,z.ranges--;continue}J({type:"dot",value:Z});continue}J({type:"text",value:Z})}do if(z=y.pop(),z.type!=="root"){z.nodes.forEach((U)=>{if(!U.nodes){if(U.type==="open")U.isOpen=!0;if(U.type==="close")U.isClose=!0;if(!U.nodes)U.type="text";U.invalid=!0}});let X=y[y.length-1],Y=X.nodes.indexOf(z);X.nodes.splice(Y,1,...z.nodes)}while(y.length>0);return J({type:"eos"}),w};M0.exports=w6});var D0=_1((F3,U0)=>{var Y0=O1(),c6=w0(),z6=$0(),$6=C0(),B1=(h,_={})=>{let B=[];if(Array.isArray(h))for(let f of h){let w=B1.create(f,_);if(Array.isArray(w))B.push(...w);else B.push(w)}else B=[].concat(B1.create(h,_));if(_&&_.expand===!0&&_.nodupes===!0)B=[...new Set(B)];return B};B1.parse=(h,_={})=>$6(h,_);B1.stringify=(h,_={})=>{if(typeof h==="string")return Y0(B1.parse(h,_),_);return Y0(h,_)};B1.compile=(h,_={})=>{if(typeof h==="string")h=B1.parse(h,_);return c6(h,_)};B1.expand=(h,_={})=>{if(typeof h==="string")h=B1.parse(h,_);let B=z6(h,_);if(_.noempty===!0)B=B.filter(Boolean);if(_.nodupes===!0)B=[...new Set(B)];return B};B1.create=(h,_={})=>{if(h===""||h.length<3)return[h];return _.expand!==!0?B1.compile(h,_):B1.expand(h,_)};U0.exports=B1});var G1=_1((I3,S0)=>{var W6=F1("path"),N0={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},H6={...N0,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"},X6={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};S0.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:X6,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:W6.sep,extglobChars(h){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${h.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(h){return h===!0?H6:N0}}});var P1=_1((D6)=>{var Z6=F1("path"),J6=process.platform==="win32",{REGEX_BACKSLASH:M6,REGEX_REMOVE_BACKSLASH:C6,REGEX_SPECIAL_CHARS:Y6,REGEX_SPECIAL_CHARS_GLOBAL:U6}=G1();D6.isObject=(h)=>h!==null&&typeof h==="object"&&!Array.isArray(h);D6.hasRegexChars=(h)=>Y6.test(h);D6.isRegexChar=(h)=>h.length===1&&D6.hasRegexChars(h);D6.escapeRegex=(h)=>h.replace(U6,"\\$1");D6.toPosixSlashes=(h)=>h.replace(M6,"/");D6.removeBackslashes=(h)=>{return h.replace(C6,(_)=>{return _==="\\"?"":_})};D6.supportsLookbehinds=()=>{let h=process.version.slice(1).split(".").map(Number);if(h.length===3&&h[0]>=9||h[0]===8&&h[1]>=10)return!0;return!1};D6.isWindows=(h)=>{if(h&&typeof h.windows==="boolean")return h.windows;return J6===!0||Z6.sep==="\\"};D6.escapeLast=(h,_,B)=>{let f=h.lastIndexOf(_,B);if(f===-1)return h;if(h[f-1]==="\\")return D6.escapeLast(h,_,f-1);return`${h.slice(0,f)}\\${h.slice(f)}`};D6.removePrefix=(h,_={})=>{let B=h;if(B.startsWith("./"))B=B.slice(2),_.prefix="./";return B};D6.wrapOutput=(h,_={},B={})=>{let f=B.contains?"":"^",w=B.contains?"":"$",y=`${f}(?:${h})${w}`;if(_.negated===!0)y=`(?:^(?!${y}).*$)`;return y}});var g0=_1((j3,q0)=>{var F0=P1(),{CHAR_ASTERISK:f2,CHAR_AT:P6,CHAR_BACKWARD_SLASH:q1,CHAR_COMMA:q6,CHAR_DOT:y2,CHAR_EXCLAMATION_MARK:w2,CHAR_FORWARD_SLASH:P0,CHAR_LEFT_CURLY_BRACE:c2,CHAR_LEFT_PARENTHESES:z2,CHAR_LEFT_SQUARE_BRACKET:g6,CHAR_PLUS:A6,CHAR_QUESTION_MARK:I0,CHAR_RIGHT_CURLY_BRACE:E6,CHAR_RIGHT_PARENTHESES:K0,CHAR_RIGHT_SQUARE_BRACKET:R6}=G1(),j0=(h)=>{return h===P0||h===q1},G0=(h)=>{if(h.isPrefix!==!0)h.depth=h.isGlobstar?1/0:1},L6=(h,_)=>{let B=_||{},f=h.length-1,w=B.parts===!0||B.scanToEnd===!0,y=[],z=[],c=[],$=h,H=-1,M=0,C=0,Z=!1,W=!1,J=!1,X=!1,Y=!1,U=!1,D=!1,G=!1,q=!1,O=!1,i=0,P,j,A={value:"",depth:0,isGlob:!1},d=()=>H>=f,V=()=>$.charCodeAt(H+1),r=()=>{return P=j,$.charCodeAt(++H)};while(H<f){j=r();let I;if(j===q1){if(D=A.backslashes=!0,j=r(),j===c2)U=!0;continue}if(U===!0||j===c2){i++;while(d()!==!0&&(j=r())){if(j===q1){D=A.backslashes=!0,r();continue}if(j===c2){i++;continue}if(U!==!0&&j===y2&&(j=r())===y2){if(Z=A.isBrace=!0,J=A.isGlob=!0,O=!0,w===!0)continue;break}if(U!==!0&&j===q6){if(Z=A.isBrace=!0,J=A.isGlob=!0,O=!0,w===!0)continue;break}if(j===E6){if(i--,i===0){U=!1,Z=A.isBrace=!0,O=!0;break}}}if(w===!0)continue;break}if(j===P0){if(y.push(H),z.push(A),A={value:"",depth:0,isGlob:!1},O===!0)continue;if(P===y2&&H===M+1){M+=2;continue}C=H+1;continue}if(B.noext!==!0){if((j===A6||j===P6||j===f2||j===I0||j===w2)===!0&&V()===z2){if(J=A.isGlob=!0,X=A.isExtglob=!0,O=!0,j===w2&&H===M)q=!0;if(w===!0){while(d()!==!0&&(j=r())){if(j===q1){D=A.backslashes=!0,j=r();continue}if(j===K0){J=A.isGlob=!0,O=!0;break}}continue}break}}if(j===f2){if(P===f2)Y=A.isGlobstar=!0;if(J=A.isGlob=!0,O=!0,w===!0)continue;break}if(j===I0){if(J=A.isGlob=!0,O=!0,w===!0)continue;break}if(j===g6){while(d()!==!0&&(I=r())){if(I===q1){D=A.backslashes=!0,r();continue}if(I===R6){W=A.isBracket=!0,J=A.isGlob=!0,O=!0;break}}if(w===!0)continue;break}if(B.nonegate!==!0&&j===w2&&H===M){G=A.negated=!0,M++;continue}if(B.noparen!==!0&&j===z2){if(J=A.isGlob=!0,w===!0){while(d()!==!0&&(j=r())){if(j===z2){D=A.backslashes=!0,j=r();continue}if(j===K0){O=!0;break}}continue}break}if(J===!0){if(O=!0,w===!0)continue;break}}if(B.noext===!0)X=!1,J=!1;let L=$,T="",N="";if(M>0)T=$.slice(0,M),$=$.slice(M),C-=M;if(L&&J===!0&&C>0)L=$.slice(0,C),N=$.slice(C);else if(J===!0)L="",N=$;else L=$;if(L&&L!==""&&L!=="/"&&L!==$){if(j0(L.charCodeAt(L.length-1)))L=L.slice(0,-1)}if(B.unescape===!0){if(N)N=F0.removeBackslashes(N);if(L&&D===!0)L=F0.removeBackslashes(L)}let S={prefix:T,input:h,start:M,base:L,glob:N,isBrace:Z,isBracket:W,isGlob:J,isExtglob:X,isGlobstar:Y,negated:G,negatedExtglob:q};if(B.tokens===!0){if(S.maxDepth=0,!j0(j))z.push(A);S.tokens=z}if(B.parts===!0||B.tokens===!0){let I;for(let Q=0;Q<y.length;Q++){let F=I?I+1:M,K=y[Q],l=h.slice(F,K);if(B.tokens){if(Q===0&&M!==0)z[Q].isPrefix=!0,z[Q].value=T;else z[Q].value=l;G0(z[Q]),S.maxDepth+=z[Q].depth}if(Q!==0||l!=="")c.push(l);I=K}if(I&&I+1<h.length){let Q=h.slice(I+1);if(c.push(Q),B.tokens)z[z.length-1].value=Q,G0(z[z.length-1]),S.maxDepth+=z[z.length-1].depth}S.slashes=y,S.parts=c}return S};q0.exports=L6});var R0=_1((G3,E0)=>{var x1=G1(),f1=P1(),{MAX_LENGTH:d1,POSIX_REGEX_SOURCE:r6,REGEX_NON_SPECIAL_CHARS:O6,REGEX_SPECIAL_CHARS_BACKREF:T6,REPLACEMENTS:A0}=x1,i6=(h,_)=>{if(typeof _.expandRange==="function")return _.expandRange(...h,_);h.sort();let B=`[${h.join("-")}]`;try{new RegExp(B)}catch(f){return h.map((w)=>f1.escapeRegex(w)).join("..")}return B},D1=(h,_)=>{return`Missing ${h}: "${_}" - use "\\\\${_}" to match literal characters`},$2=(h,_)=>{if(typeof h!=="string")throw TypeError("Expected a string");h=A0[h]||h;let B={..._},f=typeof B.maxLength==="number"?Math.min(d1,B.maxLength):d1,w=h.length;if(w>f)throw SyntaxError(`Input length: ${w}, exceeds maximum allowed length: ${f}`);let y={type:"bos",value:"",output:B.prepend||""},z=[y],c=B.capture?"":"?:",$=f1.isWindows(_),H=x1.globChars($),M=x1.extglobChars(H),{DOT_LITERAL:C,PLUS_LITERAL:Z,SLASH_LITERAL:W,ONE_CHAR:J,DOTS_SLASH:X,NO_DOT:Y,NO_DOT_SLASH:U,NO_DOTS_SLASH:D,QMARK:G,QMARK_NO_DOT:q,STAR:O,START_ANCHOR:i}=H,P=(E)=>{return`(${c}(?:(?!${i}${E.dot?X:C}).)*?)`},j=B.dot?"":Y,A=B.dot?G:q,d=B.bash===!0?P(B):O;if(B.capture)d=`(${d})`;if(typeof B.noext==="boolean")B.noextglob=B.noext;let V={input:h,index:-1,start:0,dot:B.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:z};h=f1.removePrefix(h,V),w=h.length;let r=[],L=[],T=[],N=y,S,I=()=>V.index===w-1,Q=V.peek=(E=1)=>h[V.index+E],F=V.advance=()=>h[++V.index]||"",K=()=>h.slice(V.index+1),l=(E="",b=0)=>{V.consumed+=E,V.index+=b},n=(E)=>{V.output+=E.output!=null?E.output:E.value,l(E.value)},m=()=>{let E=1;while(Q()==="!"&&(Q(2)!=="("||Q(3)==="?"))F(),V.start++,E++;if(E%2===0)return!1;return V.negated=!0,V.start++,!0},v=(E)=>{V[E]++,T.push(E)},u=(E)=>{V[E]--,T.pop()},x=(E)=>{if(N.type==="globstar"){let b=V.braces>0&&(E.type==="comma"||E.type==="brace"),g=E.extglob===!0||r.length&&(E.type==="pipe"||E.type==="paren");if(E.type!=="slash"&&E.type!=="paren"&&!b&&!g)V.output=V.output.slice(0,-N.output.length),N.type="star",N.value="*",N.output=d,V.output+=N.output}if(r.length&&E.type!=="paren")r[r.length-1].inner+=E.value;if(E.value||E.output)n(E);if(N&&N.type==="text"&&E.type==="text"){N.value+=E.value,N.output=(N.output||"")+E.value;return}E.prev=N,z.push(E),N=E},e=(E,b)=>{let g={...M[b],conditions:1,inner:""};g.prev=N,g.parens=V.parens,g.output=V.output;let k=(B.capture?"(":"")+g.open;v("parens"),x({type:E,value:b,output:V.output?"":J}),x({type:"paren",extglob:!0,value:F(),output:k}),r.push(g)},t=(E)=>{let b=E.close+(B.capture?")":""),g;if(E.type==="negate"){let k=d;if(E.inner&&E.inner.length>1&&E.inner.includes("/"))k=P(B);if(k!==d||I()||/^\)+$/.test(K()))b=E.close=`)$))${k}`;if(E.inner.includes("*")&&(g=K())&&/^\.[^\\/.]+$/.test(g)){let s=$2(g,{..._,fastpaths:!1}).output;b=E.close=`)${s})${k})`}if(E.prev.type==="bos")V.negatedExtglob=!0}x({type:"paren",extglob:!0,value:S,output:b}),u("parens")};if(B.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(h)){let E=!1,b=h.replace(T6,(g,k,s,h1,p,H1)=>{if(h1==="\\")return E=!0,g;if(h1==="?"){if(k)return k+h1+(p?G.repeat(p.length):"");if(H1===0)return A+(p?G.repeat(p.length):"");return G.repeat(s.length)}if(h1===".")return C.repeat(s.length);if(h1==="*"){if(k)return k+h1+(p?d:"");return d}return k?g:`\\${g}`});if(E===!0)if(B.unescape===!0)b=b.replace(/\\/g,"");else b=b.replace(/\\+/g,(g)=>{return g.length%2===0?"\\\\":g?"\\":""});if(b===h&&B.contains===!0)return V.output=h,V;return V.output=f1.wrapOutput(b,V,_),V}while(!I()){if(S=F(),S==="\x00")continue;if(S==="\\"){let g=Q();if(g==="/"&&B.bash!==!0)continue;if(g==="."||g===";")continue;if(!g){S+="\\",x({type:"text",value:S});continue}let k=/^\\+/.exec(K()),s=0;if(k&&k[0].length>2){if(s=k[0].length,V.index+=s,s%2!==0)S+="\\"}if(B.unescape===!0)S=F();else S+=F();if(V.brackets===0){x({type:"text",value:S});continue}}if(V.brackets>0&&(S!=="]"||N.value==="["||N.value==="[^")){if(B.posix!==!1&&S===":"){let g=N.value.slice(1);if(g.includes("[")){if(N.posix=!0,g.includes(":")){let k=N.value.lastIndexOf("["),s=N.value.slice(0,k),h1=N.value.slice(k+2),p=r6[h1];if(p){if(N.value=s+p,V.backtrack=!0,F(),!y.output&&z.indexOf(N)===1)y.output=J;continue}}}}if(S==="["&&Q()!==":"||S==="-"&&Q()==="]")S=`\\${S}`;if(S==="]"&&(N.value==="["||N.value==="[^"))S=`\\${S}`;if(B.posix===!0&&S==="!"&&N.value==="[")S="^";N.value+=S,n({value:S});continue}if(V.quotes===1&&S!=='"'){S=f1.escapeRegex(S),N.value+=S,n({value:S});continue}if(S==='"'){if(V.quotes=V.quotes===1?0:1,B.keepQuotes===!0)x({type:"text",value:S});continue}if(S==="("){v("parens"),x({type:"paren",value:S});continue}if(S===")"){if(V.parens===0&&B.strictBrackets===!0)throw SyntaxError(D1("opening","("));let g=r[r.length-1];if(g&&V.parens===g.parens+1){t(r.pop());continue}x({type:"paren",value:S,output:V.parens?")":"\\)"}),u("parens");continue}if(S==="["){if(B.nobracket===!0||!K().includes("]")){if(B.nobracket!==!0&&B.strictBrackets===!0)throw SyntaxError(D1("closing","]"));S=`\\${S}`}else v("brackets");x({type:"bracket",value:S});continue}if(S==="]"){if(B.nobracket===!0||N&&N.type==="bracket"&&N.value.length===1){x({type:"text",value:S,output:`\\${S}`});continue}if(V.brackets===0){if(B.strictBrackets===!0)throw SyntaxError(D1("opening","["));x({type:"text",value:S,output:`\\${S}`});continue}u("brackets");let g=N.value.slice(1);if(N.posix!==!0&&g[0]==="^"&&!g.includes("/"))S=`/${S}`;if(N.value+=S,n({value:S}),B.literalBrackets===!1||f1.hasRegexChars(g))continue;let k=f1.escapeRegex(N.value);if(V.output=V.output.slice(0,-N.value.length),B.literalBrackets===!0){V.output+=k,N.value=k;continue}N.value=`(${c}${k}|${N.value})`,V.output+=N.value;continue}if(S==="{"&&B.nobrace!==!0){v("braces");let g={type:"brace",value:S,output:"(",outputIndex:V.output.length,tokensIndex:V.tokens.length};L.push(g),x(g);continue}if(S==="}"){let g=L[L.length-1];if(B.nobrace===!0||!g){x({type:"text",value:S,output:S});continue}let k=")";if(g.dots===!0){let s=z.slice(),h1=[];for(let p=s.length-1;p>=0;p--){if(z.pop(),s[p].type==="brace")break;if(s[p].type!=="dots")h1.unshift(s[p].value)}k=i6(h1,B),V.backtrack=!0}if(g.comma!==!0&&g.dots!==!0){let s=V.output.slice(0,g.outputIndex),h1=V.tokens.slice(g.tokensIndex);g.value=g.output="\\{",S=k="\\}",V.output=s;for(let p of h1)V.output+=p.output||p.value}x({type:"brace",value:S,output:k}),u("braces"),L.pop();continue}if(S==="|"){if(r.length>0)r[r.length-1].conditions++;x({type:"text",value:S});continue}if(S===","){let g=S,k=L[L.length-1];if(k&&T[T.length-1]==="braces")k.comma=!0,g="|";x({type:"comma",value:S,output:g});continue}if(S==="/"){if(N.type==="dot"&&V.index===V.start+1){V.start=V.index+1,V.consumed="",V.output="",z.pop(),N=y;continue}x({type:"slash",value:S,output:W});continue}if(S==="."){if(V.braces>0&&N.type==="dot"){if(N.value===".")N.output=C;let g=L[L.length-1];N.type="dots",N.output+=S,N.value+=S,g.dots=!0;continue}if(V.braces+V.parens===0&&N.type!=="bos"&&N.type!=="slash"){x({type:"text",value:S,output:C});continue}x({type:"dot",value:S,output:C});continue}if(S==="?"){if(!(N&&N.value==="(")&&B.noextglob!==!0&&Q()==="("&&Q(2)!=="?"){e("qmark",S);continue}if(N&&N.type==="paren"){let k=Q(),s=S;if(k==="<"&&!f1.supportsLookbehinds())throw Error("Node.js v10 or higher is required for regex lookbehinds");if(N.value==="("&&!/[!=<:]/.test(k)||k==="<"&&!/<([!=]|\w+>)/.test(K()))s=`\\${S}`;x({type:"text",value:S,output:s});continue}if(B.dot!==!0&&(N.type==="slash"||N.type==="bos")){x({type:"qmark",value:S,output:q});continue}x({type:"qmark",value:S,output:G});continue}if(S==="!"){if(B.noextglob!==!0&&Q()==="("){if(Q(2)!=="?"||!/[!=<:]/.test(Q(3))){e("negate",S);continue}}if(B.nonegate!==!0&&V.index===0){m();continue}}if(S==="+"){if(B.noextglob!==!0&&Q()==="("&&Q(2)!=="?"){e("plus",S);continue}if(N&&N.value==="("||B.regex===!1){x({type:"plus",value:S,output:Z});continue}if(N&&(N.type==="bracket"||N.type==="paren"||N.type==="brace")||V.parens>0){x({type:"plus",value:S});continue}x({type:"plus",value:Z});continue}if(S==="@"){if(B.noextglob!==!0&&Q()==="("&&Q(2)!=="?"){x({type:"at",extglob:!0,value:S,output:""});continue}x({type:"text",value:S});continue}if(S!=="*"){if(S==="$"||S==="^")S=`\\${S}`;let g=O6.exec(K());if(g)S+=g[0],V.index+=g[0].length;x({type:"text",value:S});continue}if(N&&(N.type==="globstar"||N.star===!0)){N.type="star",N.star=!0,N.value+=S,N.output=d,V.backtrack=!0,V.globstar=!0,l(S);continue}let E=K();if(B.noextglob!==!0&&/^\([^?]/.test(E)){e("star",S);continue}if(N.type==="star"){if(B.noglobstar===!0){l(S);continue}let g=N.prev,k=g.prev,s=g.type==="slash"||g.type==="bos",h1=k&&(k.type==="star"||k.type==="globstar");if(B.bash===!0&&(!s||E[0]&&E[0]!=="/")){x({type:"star",value:S,output:""});continue}let p=V.braces>0&&(g.type==="comma"||g.type==="brace"),H1=r.length&&(g.type==="pipe"||g.type==="paren");if(!s&&g.type!=="paren"&&!p&&!H1){x({type:"star",value:S,output:""});continue}while(E.slice(0,3)==="/**"){let z1=h[V.index+4];if(z1&&z1!=="/")break;E=E.slice(3),l("/**",3)}if(g.type==="bos"&&I()){N.type="globstar",N.value+=S,N.output=P(B),V.output=N.output,V.globstar=!0,l(S);continue}if(g.type==="slash"&&g.prev.type!=="bos"&&!h1&&I()){V.output=V.output.slice(0,-(g.output+N.output).length),g.output=`(?:${g.output}`,N.type="globstar",N.output=P(B)+(B.strictSlashes?")":"|$)"),N.value+=S,V.globstar=!0,V.output+=g.output+N.output,l(S);continue}if(g.type==="slash"&&g.prev.type!=="bos"&&E[0]==="/"){let z1=E[1]!==void 0?"|$":"";V.output=V.output.slice(0,-(g.output+N.output).length),g.output=`(?:${g.output}`,N.type="globstar",N.output=`${P(B)}${W}|${W}${z1})`,N.value+=S,V.output+=g.output+N.output,V.globstar=!0,l(S+F()),x({type:"slash",value:"/",output:""});continue}if(g.type==="bos"&&E[0]==="/"){N.type="globstar",N.value+=S,N.output=`(?:^|${W}|${P(B)}${W})`,V.output=N.output,V.globstar=!0,l(S+F()),x({type:"slash",value:"/",output:""});continue}V.output=V.output.slice(0,-N.output.length),N.type="globstar",N.output=P(B),N.value+=S,V.output+=N.output,V.globstar=!0,l(S);continue}let b={type:"star",value:S,output:d};if(B.bash===!0){if(b.output=".*?",N.type==="bos"||N.type==="slash")b.output=j+b.output;x(b);continue}if(N&&(N.type==="bracket"||N.type==="paren")&&B.regex===!0){b.output=S,x(b);continue}if(V.index===V.start||N.type==="slash"||N.type==="dot"){if(N.type==="dot")V.output+=U,N.output+=U;else if(B.dot===!0)V.output+=D,N.output+=D;else V.output+=j,N.output+=j;if(Q()!=="*")V.output+=J,N.output+=J}x(b)}while(V.brackets>0){if(B.strictBrackets===!0)throw SyntaxError(D1("closing","]"));V.output=f1.escapeLast(V.output,"["),u("brackets")}while(V.parens>0){if(B.strictBrackets===!0)throw SyntaxError(D1("closing",")"));V.output=f1.escapeLast(V.output,"("),u("parens")}while(V.braces>0){if(B.strictBrackets===!0)throw SyntaxError(D1("closing","}"));V.output=f1.escapeLast(V.output,"{"),u("braces")}if(B.strictSlashes!==!0&&(N.type==="star"||N.type==="bracket"))x({type:"maybe_slash",value:"",output:`${W}?`});if(V.backtrack===!0){V.output="";for(let E of V.tokens)if(V.output+=E.output!=null?E.output:E.value,E.suffix)V.output+=E.suffix}return V};$2.fastpaths=(h,_)=>{let B={..._},f=typeof B.maxLength==="number"?Math.min(d1,B.maxLength):d1,w=h.length;if(w>f)throw SyntaxError(`Input length: ${w}, exceeds maximum allowed length: ${f}`);h=A0[h]||h;let y=f1.isWindows(_),{DOT_LITERAL:z,SLASH_LITERAL:c,ONE_CHAR:$,DOTS_SLASH:H,NO_DOT:M,NO_DOTS:C,NO_DOTS_SLASH:Z,STAR:W,START_ANCHOR:J}=x1.globChars(y),X=B.dot?C:M,Y=B.dot?Z:M,U=B.capture?"":"?:",D={negated:!1,prefix:""},G=B.bash===!0?".*?":W;if(B.capture)G=`(${G})`;let q=(j)=>{if(j.noglobstar===!0)return G;return`(${U}(?:(?!${J}${j.dot?H:z}).)*?)`},O=(j)=>{switch(j){case"*":return`${X}${$}${G}`;case".*":return`${z}${$}${G}`;case"*.*":return`${X}${G}${z}${$}${G}`;case"*/*":return`${X}${G}${c}${$}${Y}${G}`;case"**":return X+q(B);case"**/*":return`(?:${X}${q(B)}${c})?${Y}${$}${G}`;case"**/*.*":return`(?:${X}${q(B)}${c})?${Y}${G}${z}${$}${G}`;case"**/.*":return`(?:${X}${q(B)}${c})?${z}${$}${G}`;default:{let A=/^(.*?)\.(\w+)$/.exec(j);if(!A)return;let d=O(A[1]);if(!d)return;return d+z+A[2]}}},i=f1.removePrefix(h,D),P=O(i);if(P&&B.strictSlashes!==!0)P+=`${c}?`;return P};E0.exports=$2});var r0=_1((P3,L0)=>{var x6=F1("path"),d6=g0(),W2=R0(),H2=P1(),k6=G1(),l6=(h)=>h&&typeof h==="object"&&!Array.isArray(h),a=(h,_,B=!1)=>{if(Array.isArray(h)){let M=h.map((Z)=>a(Z,_,B));return(Z)=>{for(let W of M){let J=W(Z);if(J)return J}return!1}}let f=l6(h)&&h.tokens&&h.input;if(h===""||typeof h!=="string"&&!f)throw TypeError("Expected pattern to be a non-empty string");let w=_||{},y=H2.isWindows(_),z=f?a.compileRe(h,_):a.makeRe(h,_,!1,!0),c=z.state;delete z.state;let $=()=>!1;if(w.ignore){let M={..._,ignore:null,onMatch:null,onResult:null};$=a(w.ignore,M,B)}let H=(M,C=!1)=>{let{isMatch:Z,match:W,output:J}=a.test(M,z,_,{glob:h,posix:y}),X={glob:h,state:c,regex:z,posix:y,input:M,output:J,match:W,isMatch:Z};if(typeof w.onResult==="function")w.onResult(X);if(Z===!1)return X.isMatch=!1,C?X:!1;if($(M)){if(typeof w.onIgnore==="function")w.onIgnore(X);return X.isMatch=!1,C?X:!1}if(typeof w.onMatch==="function")w.onMatch(X);return C?X:!0};if(B)H.state=c;return H};a.test=(h,_,B,{glob:f,posix:w}={})=>{if(typeof h!=="string")throw TypeError("Expected input to be a string");if(h==="")return{isMatch:!1,output:""};let y=B||{},z=y.format||(w?H2.toPosixSlashes:null),c=h===f,$=c&&z?z(h):h;if(c===!1)$=z?z(h):h,c=$===f;if(c===!1||y.capture===!0)if(y.matchBase===!0||y.basename===!0)c=a.matchBase(h,_,B,w);else c=_.exec($);return{isMatch:Boolean(c),match:c,output:$}};a.matchBase=(h,_,B,f=H2.isWindows(B))=>{return(_ instanceof RegExp?_:a.makeRe(_,B)).test(x6.basename(h))};a.isMatch=(h,_,B)=>a(_,B)(h);a.parse=(h,_)=>{if(Array.isArray(h))return h.map((B)=>a.parse(B,_));return W2(h,{..._,fastpaths:!1})};a.scan=(h,_)=>d6(h,_);a.compileRe=(h,_,B=!1,f=!1)=>{if(B===!0)return h.output;let w=_||{},y=w.contains?"":"^",z=w.contains?"":"$",c=`${y}(?:${h.output})${z}`;if(h&&h.negated===!0)c=`^(?!${c}).*$`;let $=a.toRegex(c,_);if(f===!0)$.state=h;return $};a.makeRe=(h,_={},B=!1,f=!1)=>{if(!h||typeof h!=="string")throw TypeError("Expected a non-empty string");let w={negated:!1,fastpaths:!0};if(_.fastpaths!==!1&&(h[0]==="."||h[0]==="*"))w.output=W2.fastpaths(h,_);if(!w.output)w=W2(h,_);return a.compileRe(w,_,B,f)};a.toRegex=(h,_)=>{try{let B=_||{};return new RegExp(h,B.flags||(B.nocase?"i":""))}catch(B){if(_&&_.debug===!0)throw B;return/$^/}};a.constants=k6;L0.exports=a});var k0=_1((q3,d0)=>{var T0=F1("util"),i0=D0(),$1=r0(),X2=P1(),O0=(h)=>h===""||h==="./",x0=(h)=>{let _=h.indexOf("{");return _>-1&&h.indexOf("}",_)>-1},o=(h,_,B)=>{_=[].concat(_),h=[].concat(h);let f=new Set,w=new Set,y=new Set,z=0,c=(M)=>{if(y.add(M.output),B&&B.onResult)B.onResult(M)};for(let M=0;M<_.length;M++){let C=$1(String(_[M]),{...B,onResult:c},!0),Z=C.state.negated||C.state.negatedExtglob;if(Z)z++;for(let W of h){let J=C(W,!0);if(!(Z?!J.isMatch:J.isMatch))continue;if(Z)f.add(J.output);else f.delete(J.output),w.add(J.output)}}let H=(z===_.length?[...y]:[...w]).filter((M)=>!f.has(M));if(B&&H.length===0){if(B.failglob===!0)throw Error(`No matches found for "${_.join(", ")}"`);if(B.nonull===!0||B.nullglob===!0)return B.unescape?_.map((M)=>M.replace(/\\/g,"")):_}return H};o.match=o;o.matcher=(h,_)=>$1(h,_);o.isMatch=(h,_,B)=>$1(_,B)(h);o.any=o.isMatch;o.not=(h,_,B={})=>{_=[].concat(_).map(String);let f=new Set,w=[],z=new Set(o(h,_,{...B,onResult:(c)=>{if(B.onResult)B.onResult(c);w.push(c.output)}}));for(let c of w)if(!z.has(c))f.add(c);return[...f]};o.contains=(h,_,B)=>{if(typeof h!=="string")throw TypeError(`Expected a string: "${T0.inspect(h)}"`);if(Array.isArray(_))return _.some((f)=>o.contains(h,f,B));if(typeof _==="string"){if(O0(h)||O0(_))return!1;if(h.includes(_)||h.startsWith("./")&&h.slice(2).includes(_))return!0}return o.isMatch(h,_,{...B,contains:!0})};o.matchKeys=(h,_,B)=>{if(!X2.isObject(h))throw TypeError("Expected the first argument to be an object");let f=o(Object.keys(h),_,B),w={};for(let y of f)w[y]=h[y];return w};o.some=(h,_,B)=>{let f=[].concat(h);for(let w of[].concat(_)){let y=$1(String(w),B);if(f.some((z)=>y(z)))return!0}return!1};o.every=(h,_,B)=>{let f=[].concat(h);for(let w of[].concat(_)){let y=$1(String(w),B);if(!f.every((z)=>y(z)))return!1}return!0};o.all=(h,_,B)=>{if(typeof h!=="string")throw TypeError(`Expected a string: "${T0.inspect(h)}"`);return[].concat(_).every((f)=>$1(f,B)(h))};o.capture=(h,_,B)=>{let f=X2.isWindows(B),y=$1.makeRe(String(h),{...B,capture:!0}).exec(f?X2.toPosixSlashes(_):_);if(y)return y.slice(1).map((z)=>z===void 0?"":z)};o.makeRe=(...h)=>$1.makeRe(...h);o.scan=(...h)=>$1.scan(...h);o.parse=(h,_)=>{let B=[];for(let f of[].concat(h||[]))for(let w of i0(String(f),_))B.push($1.parse(w,_));return B};o.braces=(h,_)=>{if(typeof h!=="string")throw TypeError("Expected a string");if(_&&_.nobrace===!0||!x0(h))return[h];return i0(h,_)};o.braceExpand=(h,_)=>{if(typeof h!=="string")throw TypeError("Expected a string");return o.braces(h,{..._,expand:!0})};o.hasBraces=x0;d0.exports=o});import k1 from"express";import u0 from"node:fs";import J2 from"node:path";import{pathToFileURL as v0}from"node:url";var o0=(h,_,B)=>{let f=_;f.return=async(w,y=1,z=200,c="")=>{if(w===null||w===void 0)y=0;if(w instanceof Promise)w=await w;_.status(z).send({msg:c,status:y?1:0,data:w===null||w===void 0?null:w})},f.reply=async(w,y,z=200,c="")=>{let $=y??(w?1:0);return await f.return(w,$,z,c)},f.success=async(w,y="成功")=>{return await f.return(w,1,200,y)},f.fail=async(w,y="系统错误,请联系管理员")=>{return await f.return(w,0,200,y)},B()},Y2=o0;import a0 from"node:fs";import U2 from"node:path";var I1={logs:{open:!0,debug:!0},token:{open:!0,pwd:"8087",headerParams:"token"},projectName:"mas-app",openCors:!1,corsUrl:[]};function D2(h,_){if(!_)return{...h};return{...h,..._,logs:{...h?.logs,..._?.logs},token:{...h?.token,..._?.token}}}function N2(h){let _=[{apisPath:U2.join(h,"src/apis"),defalutApiPath:""},{apisPath:U2.join(h,"apis"),defalutApiPath:""}];for(let B of _)if(a0.existsSync(B.apisPath))return B;return _[0]}import A1 from"node:fs";import u1 from"node:path";function S2(h){if(!A1.existsSync(h))return[];if(!A1.statSync(h).isDirectory())return[];let B=[],f=[h];while(f.length){let w=f.pop(),y=A1.readdirSync(w,{withFileTypes:!0});for(let z of y){let c=u1.join(w,z.name);if(z.isDirectory()){f.push(c);continue}if(!z.isFile())continue;if(z.name.endsWith(".d.ts"))continue;if(z.name.endsWith(".ts")||z.name.endsWith(".js"))B.push(c)}}return B}function V2(h,_){let w=u1.relative(h,_).replace(/\.(ts|js)$/,"").split(u1.sep).join("/");if(w==="index")return"/";if(w.endsWith("/index"))return`/${w.slice(0,-6)}`;return`/${w}`}function X1(h){return Object.prototype.toString.call(h).slice(8,-1).toLowerCase()}function Q2(h){return h==="?"||h===-1}function F2(h,_){if(h===null||h===void 0)return!0;if(_==="?")return X1(h)==="string";return X1(h)==="number"}function t0(h){return Array.isArray(h)&&h.length>0&&(h[0]==="?"||h[0]===-1)}function h4(h,_){if(h===null||h===void 0)return!0;if(!Array.isArray(h))return!1;if(h.length===0)return!1;for(let B of h)if(_==="?"){if(X1(B)!=="string")return!1}else if(X1(B)!=="number")return!1;return!0}function _4(h,_){return X1(h)===_.name.toLowerCase()}function B4(h,_,B){if(X1(h)!=="object"||h===null)return!1;let f=h;if(B){for(let w of Object.keys(f))if(!(w in _))return!1}for(let w of Object.keys(_)){let y=f[w],z=_[w];if(!z)return!1;if(t0(z)){let c=z[0];if(!h4(y,c))return!1;continue}if(Q2(z)){if(!F2(y,z))return!1;continue}if(y===null||y===void 0)return!1;if(!Z1(y,z,B))return!1}return!0}function f4(h,_,B){if(!Array.isArray(h))return!1;if(h.length===0)return!1;let f=_[0];if(!f)throw Error("非法的校验格式:数组格式不能为空(示例:[String] / [{...}])");for(let w of h)if(!Z1(w,f,B))return!1;return!0}function Z1(h,_,B=!1){if(Q2(_))return F2(h,_);if(h===null||h===void 0)return!1;let f=X1(_);if(f==="function")return _4(h,_);if(Array.isArray(_))return f4(h,_,B);if(f==="object")return B4(h,_,B);return!1}var E1=C2(j2(),1),G2=()=>new Date().getTime();function P2(h,_="8087",B=0){return E1.decode(h,_,B)}function q2(h,_="8087",B=0){return E1.encode(h,_,B)}var n1=({token:h,permission:_=[]},B="8087")=>{if(!h)return{msg:"没有传入token数据",errorCode:0,status:0,token:h};let f=P2(h,B);if(!f)return{msg:"token数据错误",errorCode:1,status:0,token:h};if(_.length!=0){let w=f._permission;if(!w)return{msg:"权限错误",errorCode:2,status:0,token:h};if(w?.filter((y)=>_.includes(y)).length==0)return{msg:"权限错误",errorCode:2,status:0,token:h}}if(f._masTime!==0){if(G2()>f._masTime)return{msg:"token过期",errorCode:3,status:0,token:h}}return{...f,status:1}};function W4({data:h=null,time:_=0,permission:B=[]}={},f="8087"){let w={};return w.data=h,B.length!=0&&(w._permission=B),_!==0&&(w._masTime=_*1000+G2()),q2(w,f)}function H4(h){return String(h.method).toUpperCase()==="GET"}function X4(h){return typeof h==="string"}function Z4(h){if(!h||typeof h!=="object"||Array.isArray(h))return{ok:!1};let _={};for(let[B,f]of Object.entries(h)){if(f===void 0||f===null)continue;if(!X4(f))return{ok:!1};_[B]=f}return{ok:!0,value:_}}function J4(h){if(!h||typeof h!=="object"||Array.isArray(h))return!1;for(let _ of Object.values(h))if(!(_===String||_==="?"))return!1;return!0}function m1(h,_,B){return async(f,w,y)=>{try{let{config:z,handler:c}=_;if(!c)return w.reply?.(null,0,500,`API 模块缺少导出 handler:${h}`);let $=z?.methods??"all";if($!=="all"&&f.method.toLowerCase()!==$)return w.reply?.(null,0,405,"Method Not Allowed");if(z?.contentType){if(f.method.toUpperCase()!=="GET"&&f.headers["content-length"]!==void 0){let M=f.headers["content-type"]??"";if(!String(M).includes(z.contentType))return w.reply?.(null,0,400,"Content-Type 不匹配")}}if(z?.header)for(let[H,M]of Object.entries(z.header)){let C=f.headers[H.toLowerCase()],Z;if(Array.isArray(C))Z=C[0];else Z=C;if(Z===void 0||Z===null)return w.reply?.(null,0,400,`缺少 Header:${H}`);let W=Z;if(M===Number)W=Number(Z);if(M===Boolean)W=Z==="true"||Z==="1"||Z==="yes";if(!Z1(W,M,!1))return w.reply?.(null,0,400,`Header 类型错误:${H}`)}if(B?.token?.open&&z?.token){let H=B?.token?.headerParams||"",M=f.headers[H.toLowerCase()]??f.query?.[H]??f.body?.[H],C=n1({token:M,permission:z.permission??[]},B.token.pwd);if(C.status===0)return w.reply?.(null,0,401,C.msg);f.tokenData=C}if(z?.requestFormat){if(H4(f)){if(!J4(z.requestFormat))return w.reply?.(null,0,500,"接口配置错误:GET 的 requestFormat 仅支持扁平的 String/_String(不支持 Number/数组/嵌套对象)");let H=Z4(f.query);if(!H.ok)return w.reply?.(null,0,400,"GET 请求参数仅支持 string 类型(不支持数组/对象/嵌套结构)");if(!Z1(H.value,z.requestFormat,!!z.strict))return w.reply?.(null,0,400,"请求参数格式错误")}else if(!Z1(f.body,z.requestFormat,!!z.strict))return w.reply?.(null,0,400,"请求参数格式错误")}return await c(f,w)}catch(z){return y(z)}}}function W1(h){if(!h)return h;if(h==="?")return"String?";if(h===-1)return"Number?";if(typeof h==="function")return h.name??"Function";if(Array.isArray(h)){if(h[0]==="?")return["String"];if(h[0]===-1)return["Number"];return[W1(h[0])]}if(typeof h==="object"){let _={};for(let[B,f]of Object.entries(h))_[B]=W1(f);return _}return h}function K1(h){return typeof h==="object"&&h!==null&&!Array.isArray(h)&&Object.prototype.toString.call(h)==="[object Object]"}function R1(h){if(!h)return null;if(h==="?")return"string";if(h===-1)return 0;if(typeof h==="function"){let _=h.name;if(_==="String")return"string";if(_==="Number")return 0;if(_==="Boolean")return!0;if(_==="Object")return{};return null}if(Array.isArray(h)){if(h[0]==="?")return["string"];if(h[0]===-1)return[0];return[R1(h[0])]}if(K1(h)){let _={};for(let[B,f]of Object.entries(h))_[B]=R1(f);return _}return null}function g2(h,_=""){if(!h)return[];if(h==="?"||h===-1)return[{name:_||"value",desc:"",type:W1(h)}];if(typeof h==="function")return[{name:_||"value",desc:"",type:W1(h)}];if(Array.isArray(h))return[{name:_||"value",desc:"",type:W1(h)}];if(K1(h)){let B=[];for(let[f,w]of Object.entries(h)){let y=_?`${_}.${f}`:f;B.push(...g2(w,y))}return B}return[]}function M4(h,_){if(!h)return;if(!_)return;let B=_.split(".").filter(Boolean),f=h;for(let w of B){if(!f)return;if(Array.isArray(f))return f;if(typeof f==="function")return f;if(!K1(f))return;f=f[w]}return f}function s1(h,_){if(!h&&!_)return;let B=h?.example??(K1(_)?R1(_):null),f=K1(B)?B:{value:R1(_)},w=Array.isArray(h?.desc)?h.desc:[],z=(w.length>0?w:g2(_)).map((c)=>{if(c.type)return c;let H=M4(_,c.name);if(H)return{...c,type:W1(H)};return{...c,type:"String"}});return{example:f,desc:z}}function A2(h){if(!h)return h;return{...h,header:h.header?W1(h.header):h.header,requestFormat:h.requestFormat?W1(h.requestFormat):h.requestFormat,responseFormat:h.responseFormat?W1(h.responseFormat):h.responseFormat}}function E2(h,_){return{header:s1(_?.header,h?.header),request:s1(_?.request,h?.requestFormat),response:s1(_?.response,h?.responseFormat)}}import C4 from"node:fs";import Y4 from"moment";import L1 from"morgan";import{createStream as U4}from"rotating-file-stream";function D4(h){return typeof h==="object"&&h!==null&&!Array.isArray(h)&&Object.prototype.toString.call(h)==="[object Object]"}function e1(h,_){if(!h)return h;if(Array.isArray(h))return h.map((f)=>e1(f,_));if(!D4(h))return h;let B={};for(let[f,w]of Object.entries(h))if(_.includes(f))B[f]="[REDACTED]";else B[f]=e1(w,_);return B}function R2(h,_,B){try{if(h===void 0)return"-";if(h===null)return"null";let f=e1(h,B),w;if(typeof f==="string")w=f;else{let y=JSON.stringify(f);w=y===void 0?"-":y}if(w.length>_)w=`${w.slice(0,_)}...(truncated)`;return w}catch{return"[Unserializable]"}}function L2(h,_){if(!_.logRequestBody&&!_.logResponseBody)return;let B=h;if(B.__masBodyCaptureAttached)return;B.__masBodyCaptureAttached=!0,h.use((f,w,y)=>{if(_.logRequestBody)w.locals.__masReqBody=f.body;if(!_.logResponseBody)return y();let z=w,c=z.send?.bind(z),$=z.json?.bind(z);if(typeof c==="function")z.send=(H)=>{return w.locals.__masResBody=H,c(H)};if(typeof $==="function")z.json=(H)=>{return w.locals.__masResBody=H,$(H)};y()})}function r2(h,_){L1.token("date",()=>Y4().utcOffset(8).format("YYYY-MM-DD HH:mm:ss")),L1.token("req-body",(w,y)=>{if(!h.logRequestBody)return"-";return R2(y.locals?.__masReqBody,h.maxBodyLength,h.redactKeys)}),L1.token("res-body",(w,y)=>{if(!h.logResponseBody)return"-";return R2(y.locals?.__masResBody,h.maxBodyLength,h.redactKeys)});let B=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" req=:req-body res=:res-body',f=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"';return L1(h.logRequestBody||h.logResponseBody?B:f,{stream:_})}function O2(h,_={}){let B={logRequestBody:_.logRequestBody??!0,logResponseBody:_.logResponseBody??!0,maxBodyLength:_.maxBodyLength??2000,redactKeys:_.redactKeys??[]};L2(h,B),h.use(r2(B,{write:(f)=>process.stdout.write(f)}))}function p1(h,_,B={}){C4.mkdirSync(_,{recursive:!0});let f={logRequestBody:B.logRequestBody??!0,logResponseBody:B.logResponseBody??!0,maxBodyLength:B.maxBodyLength??2000,redactKeys:B.redactKeys??[]};L2(h,f);let w=U4("access.log",{size:"50M",interval:"1d",path:_});h.use(r2(f,w))}var Z2=C2(k0(),1);function u6(h,_){if(!h)return!1;if(!_||_.length===0)return!0;return _.some((B)=>{return console.log(h,B,Z2.isMatch(h,B)),Z2.isMatch(h,B)})}function l0(h,_){let B={allowHeader:[]};h.use((f,w,y)=>{let z=f.headers.origin,c=f.headers["access-control-request-headers"];if(c){let $=c.split(",").map((H)=>H.trim()).filter(Boolean);B.allowHeader=[...new Set([...B.allowHeader,...$])]}if(z&&u6(z,_))w.setHeader("Access-Control-Allow-Origin",z);else if(z&&_&&_.length>0);else if(!_||_.length===0){if(z)w.setHeader("Access-Control-Allow-Origin",z)}if(w.setHeader("Access-Control-Allow-Headers",B.allowHeader.length>0?B.allowHeader.join(", "):"*"),w.setHeader("Access-Control-Allow-Methods","PUT, POST, GET, DELETE, OPTIONS, PATCH"),w.setHeader("Access-Control-Allow-Credentials","true"),f.method==="OPTIONS")return w.status(204).send();y()})}import b0 from"ansi-colors";async function v6(h,_,B){let f=k1();B&&B(f);let w=N2(h);I1.logs.logPath=J2.join(h,"logs"),I1.apisPath=w.apisPath,I1.defalutApiPath=w.defalutApiPath;let y=D2(I1,_);if(y.openCors)l0(f,y.corsUrl);f.use(k1.json({limit:"10mb"})),f.use(k1.urlencoded({extended:!0}));let z=y.staticPath??"public",c=y.staticUrl??"/public",$=J2.isAbsolute(z)?z:J2.join(h,z);if(u0.existsSync($))f.use(c,k1.static($));if(f.use(Y2),y?.logs?.debug)O2(f,{logRequestBody:y?.logs?.logRequestBody,logResponseBody:y?.logs?.logResponseBody,maxBodyLength:y?.logs?.maxBodyLength,redactKeys:y?.logs?.redactKeys});if(y?.logs?.open&&y?.logs?.logPath)p1(f,y.logs.logPath,{logRequestBody:y.logs.logRequestBody,logResponseBody:y.logs.logResponseBody,maxBodyLength:y.logs.maxBodyLength,redactKeys:y.logs.redactKeys});let H=y.apisPath,M=S2(H),C=y.defalutApiPath,Z=[];for(let W of M){let J=V2(H,W),X=`/api${J}`,Y=await import(v0(W).href);if(typeof Y.handler!=="function")throw Error(`API 模块缺少导出 handler:${W}`);Z.push({path:J,apiPath:X,file:W,mod:Y}),f.all(X,m1(W,Y,y))}if(y.exposeApiDocs===!0)f.get("/debug/docs",async(W,J)=>{let X=[];for(let Y of Z){let U=Y.mod.config,D=Y.mod.doc;X.push({path:Y.apiPath,config:A2(U),doc:E2(U,D)})}J.reply?.(X)}),console.log(`接口文档信息接口已开启,访问地址 ${b0.yellow("/debug/docs")} - ${b0.red("生产模式请关闭!")}`);if(C&&u0.existsSync(C)){let W=await import(v0(C).href);if(typeof W.handler!=="function")throw Error(`兜底 API 模块缺少导出 handler:${C}`);f.use(m1(C,W,y))}else f.use((W,J)=>{J.reply?.(null,0,404,"Not Found")});return f.use((W,J,X,Y)=>{let U=W?.message?String(W.message):"系统错误,请联系管理员";if(typeof X?.reply==="function")return X.reply(null,0,500,U);return X.status(500).send({status:0,msg:U,data:null})}),f}var b6="?",n6=-1;export{n1 as validToken,v6 as getApp,q2 as encode,P2 as decode,W4 as createToken,b6 as _String,n6 as _Number};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openCors.d.ts","sourceRoot":"","sources":["../../src/middleware/openCors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"openCors.d.ts","sourceRoot":"","sources":["../../src/middleware/openCors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAuBxE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QA8CxD"}
|
package/dist/type.d.ts
CHANGED
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import type { Request, Response } from 'express';
|
|
2
|
-
import type { TypeFromValidFormat, ValidFormat } from './utils/typeFromValidFormat';
|
|
2
|
+
import type { TypeFromValidFormat, TypeFromValidFormatForQuery, ValidFormat } from './utils/typeFromValidFormat';
|
|
3
3
|
/**
|
|
4
4
|
* 请求类型
|
|
5
5
|
*/
|
|
6
|
-
export type MasReq<TRequestFormat = any> = Request<any, any, TypeFromValidFormat<TRequestFormat
|
|
6
|
+
export type MasReq<TRequestFormat = any, TMethod extends HttpMethod = HttpMethod> = Request<any, any, TMethod extends 'get' ? any : TypeFromValidFormat<TRequestFormat>, TMethod extends 'get' ? TypeFromValidFormatForQuery<TRequestFormat> : any>;
|
|
7
7
|
/**
|
|
8
8
|
* MAS 接口配置的最小结构(仅用于类型推导)。
|
|
9
9
|
*/
|
|
10
10
|
export type MasConfigLike = {
|
|
11
11
|
requestFormat?: any;
|
|
12
12
|
responseFormat?: any;
|
|
13
|
+
methods?: HttpMethod;
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
16
|
* HTTP 方法类型。
|
|
16
17
|
*/
|
|
17
18
|
export type HttpMethod = 'get' | 'post' | 'all';
|
|
19
|
+
/**
|
|
20
|
+
* GET 请求的 requestFormat 约束:
|
|
21
|
+
* - query 只允许 string,因此这里只允许 `String`(必填)或 `_String`(可选)
|
|
22
|
+
* - 明确不允许 Number / Boolean / Object / -1 / 数组 / 嵌套对象
|
|
23
|
+
*/
|
|
24
|
+
export type GetRequestFormat = Record<string, StringConstructor | '?'>;
|
|
18
25
|
/**
|
|
19
26
|
* MAS 接口的完整配置类型。
|
|
20
27
|
*/
|
|
@@ -23,13 +30,13 @@ export type MasConfig<TRequestFormat extends ValidFormat | undefined = ValidForm
|
|
|
23
30
|
name?: string;
|
|
24
31
|
/** 是否严格模式(strict=true 时对象不允许出现多余字段) */
|
|
25
32
|
strict?: boolean;
|
|
26
|
-
/** HTTP
|
|
27
|
-
methods?: HttpMethod
|
|
33
|
+
/** HTTP 方法(非 GET) */
|
|
34
|
+
methods?: Exclude<HttpMethod, 'get'>;
|
|
28
35
|
/** Content-Type */
|
|
29
36
|
contentType?: string;
|
|
30
37
|
/** Header 参数格式(key 为参数名,value 为类型描述符) */
|
|
31
38
|
header?: THeader;
|
|
32
|
-
/**
|
|
39
|
+
/** 请求体格式(非 GET:校验/断言 req.body) */
|
|
33
40
|
requestFormat?: TRequestFormat;
|
|
34
41
|
/** 响应体格式 */
|
|
35
42
|
responseFormat?: TResponseFormat;
|
|
@@ -37,11 +44,37 @@ export type MasConfig<TRequestFormat extends ValidFormat | undefined = ValidForm
|
|
|
37
44
|
token?: boolean;
|
|
38
45
|
/** 权限列表 */
|
|
39
46
|
permission?: string[];
|
|
47
|
+
} | {
|
|
48
|
+
/** 接口名称 */
|
|
49
|
+
name?: string;
|
|
50
|
+
/** 是否严格模式(strict=true 时对象不允许出现多余字段) */
|
|
51
|
+
strict?: boolean;
|
|
52
|
+
/** HTTP 方法(GET) */
|
|
53
|
+
methods: 'get';
|
|
54
|
+
/** Content-Type */
|
|
55
|
+
contentType?: string;
|
|
56
|
+
/** Header 参数格式(key 为参数名,value 为类型描述符) */
|
|
57
|
+
header?: THeader;
|
|
58
|
+
/**
|
|
59
|
+
* GET:入参来自 req.query,只允许 string,因此 requestFormat 必须是扁平的 string 描述
|
|
60
|
+
* (写 Number/数组/嵌套对象 会直接 TS 报错)
|
|
61
|
+
*/
|
|
62
|
+
requestFormat?: TRequestFormat extends GetRequestFormat ? TRequestFormat : GetRequestFormat;
|
|
63
|
+
/** 响应体格式 */
|
|
64
|
+
responseFormat?: TResponseFormat;
|
|
65
|
+
/** 是否需要 token 验证 */
|
|
66
|
+
token?: boolean;
|
|
67
|
+
/** 权限列表 */
|
|
68
|
+
permission?: string[];
|
|
40
69
|
};
|
|
41
70
|
/** 从配置中提取 requestFormat */
|
|
42
71
|
type ReqFormatOf<TConfig> = TConfig extends {
|
|
43
72
|
requestFormat?: infer TRequestFormat;
|
|
44
73
|
} ? NonNullable<TRequestFormat> : any;
|
|
74
|
+
/** 从配置中提取 methods */
|
|
75
|
+
type MethodOf<TConfig> = TConfig extends {
|
|
76
|
+
methods?: infer TMethods;
|
|
77
|
+
} ? NonNullable<TMethods> extends HttpMethod ? NonNullable<TMethods> : HttpMethod : HttpMethod;
|
|
45
78
|
/** 从配置中提取 responseFormat */
|
|
46
79
|
type ResFormatOf<TConfig> = TConfig extends {
|
|
47
80
|
responseFormat?: infer TResponseFormat;
|
|
@@ -52,7 +85,7 @@ type ResFormatOf<TConfig> = TConfig extends {
|
|
|
52
85
|
* 用法示例:
|
|
53
86
|
* `export default (async (req, res) => { ... }) satisfies MasHandler<typeof config>;`
|
|
54
87
|
*/
|
|
55
|
-
export type MasHandler<TConfig extends MasConfigLike = MasConfigLike> = (req: MasReq<ReqFormatOf<TConfig>>, res: MasRes<ResFormatOf<TConfig>>) => any;
|
|
88
|
+
export type MasHandler<TConfig extends MasConfigLike = MasConfigLike> = (req: MasReq<ReqFormatOf<TConfig>, MethodOf<TConfig>>, res: MasRes<ResFormatOf<TConfig>>) => any;
|
|
56
89
|
/**
|
|
57
90
|
* 响应类型
|
|
58
91
|
*/
|
|
@@ -97,11 +130,11 @@ export type ApisDoc = {
|
|
|
97
130
|
response?: SectionDoc;
|
|
98
131
|
};
|
|
99
132
|
export type MasAppConfig = {
|
|
100
|
-
logs
|
|
133
|
+
logs?: {
|
|
101
134
|
/** 是否记录日志 */
|
|
102
|
-
open
|
|
135
|
+
open?: boolean;
|
|
103
136
|
/** 是否打印访问日志 */
|
|
104
|
-
debug
|
|
137
|
+
debug?: boolean;
|
|
105
138
|
/** 日志路径,默认 logs/ */
|
|
106
139
|
logPath?: string;
|
|
107
140
|
/**
|
|
@@ -121,13 +154,13 @@ export type MasAppConfig = {
|
|
|
121
154
|
*/
|
|
122
155
|
redactKeys?: string[];
|
|
123
156
|
};
|
|
124
|
-
token
|
|
157
|
+
token?: {
|
|
125
158
|
/** 是否使用token */
|
|
126
|
-
open
|
|
159
|
+
open?: boolean;
|
|
127
160
|
/** token密钥,密钥中只能包含大小写字母和数字 */
|
|
128
|
-
pwd
|
|
161
|
+
pwd?: string;
|
|
129
162
|
/** 参数名 */
|
|
130
|
-
headerParams
|
|
163
|
+
headerParams?: string;
|
|
131
164
|
};
|
|
132
165
|
/** 接口路径,默认src/apis 或 apis/ */
|
|
133
166
|
apisPath?: string;
|
package/dist/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACZ,MAAM,6BAA6B,CAAC;AACrC;;GAEG;AACH,MAAM,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,WAAW,EACZ,MAAM,6BAA6B,CAAC;AACrC;;GAEG;AACH,MAAM,MAAM,MAAM,CAChB,cAAc,GAAG,GAAG,EACpB,OAAO,SAAS,UAAU,GAAG,UAAU,IACrC,OAAO,CACT,GAAG,EACH,GAAG,EAEH,OAAO,SAAS,KAAK,GAAG,GAAG,GAAG,mBAAmB,CAAC,cAAc,CAAC,EAEjE,OAAO,SAAS,KAAK,GAAG,2BAA2B,CAAC,cAAc,CAAC,GAAG,GAAG,CAC1E,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,SAAS,CACnB,cAAc,SAAS,WAAW,GAAG,SAAS,GAAG,WAAW,EAC5D,eAAe,SAAS,WAAW,GAAG,SAAS,GAAG,WAAW,EAC7D,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,GAAG,MAAM,CAC9D,MAAM,EACN,WAAW,CACZ,IAEC;IACE,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,YAAY;IACZ,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GACD;IACE,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,cAAc,SAAS,gBAAgB,GACnD,cAAc,GACd,gBAAgB,CAAC;IACrB,YAAY;IACZ,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEN,2BAA2B;AAC3B,KAAK,WAAW,CAAC,OAAO,IAAI,OAAO,SAAS;IAC1C,aAAa,CAAC,EAAE,MAAM,cAAc,CAAC;CACtC,GACG,WAAW,CAAC,cAAc,CAAC,GAC3B,GAAG,CAAC;AAER,qBAAqB;AACrB,KAAK,QAAQ,CAAC,OAAO,IAAI,OAAO,SAAS;IAAE,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAA;CAAE,GACjE,WAAW,CAAC,QAAQ,CAAC,SAAS,UAAU,GACtC,WAAW,CAAC,QAAQ,CAAC,GACrB,UAAU,GACZ,UAAU,CAAC;AAEf,4BAA4B;AAC5B,KAAK,WAAW,CAAC,OAAO,IAAI,OAAO,SAAS;IAC1C,cAAc,CAAC,EAAE,MAAM,eAAe,CAAC;CACxC,GACG,WAAW,CAAC,eAAe,CAAC,GAC5B,GAAG,CAAC;AAER;;;;;GAKG;AACH,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa,IAAI,CACtE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,EACpD,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAC9B,GAAG,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,eAAe,GAAG,GAAG,IAAI,QAAQ,CAClD,mBAAmB,CAAC,eAAe,CAAC,CACrC,GAAG;IACF;;;;;;;OAOG;IACH,KAAK,EAAE,CACL,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC,EAC1C,MAAM,CAAC,EAAE,GAAG,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,KACT,IAAI,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,aAAa;IACb,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,mBAAmB;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oBAAoB;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE;QACL,aAAa;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,eAAe;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,oBAAoB;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB;;WAEG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,gBAAgB;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,8BAA8B;QAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,UAAU;QACV,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC"}
|
|
@@ -24,7 +24,7 @@ export type OptionalDescriptor = '?' | -1;
|
|
|
24
24
|
/**
|
|
25
25
|
* 运行时校验格式(requestFormat)的 TypeScript 结构。
|
|
26
26
|
*
|
|
27
|
-
* 注意:这里是“类型层”定义,用于推导
|
|
27
|
+
* 注意:这里是“类型层”定义,用于推导 **req.body 或 req.query** 的类型;运行时仍由 `validType` 校验。
|
|
28
28
|
*/
|
|
29
29
|
export type ValidFormat = BasicTypeDescriptor | OptionalDescriptor | {
|
|
30
30
|
[key: string]: ValidFormat;
|
|
@@ -65,5 +65,17 @@ export type TypeFromValidFormat<T> = T extends BasicTypeDescriptor ? PrimitiveFr
|
|
|
65
65
|
} & {
|
|
66
66
|
[K in OptionalKeys<T>]?: TypeFromValidFormat<T[K]>;
|
|
67
67
|
} : unknown;
|
|
68
|
+
/**
|
|
69
|
+
* 面向 GET `req.query` 的推导版本:
|
|
70
|
+
* - GET 约束 query 仅允许 string(以及 string[]),因此 Number/Boolean/Object/-1 会推导为 never
|
|
71
|
+
* - 这能让“GET 写了 Number requestFormat”在 TS 层直接报错
|
|
72
|
+
*/
|
|
73
|
+
type QueryPrimitiveFromDescriptor<T> = T extends StringConstructor ? string : T extends NumberConstructor | BooleanConstructor | ObjectConstructor ? never : never;
|
|
74
|
+
type QueryPrimitiveFromOptionalDescriptor<T> = T extends '?' ? string : T extends -1 ? never : never;
|
|
75
|
+
export type TypeFromValidFormatForQuery<T> = T extends BasicTypeDescriptor ? QueryPrimitiveFromDescriptor<T> : T extends OptionalDescriptor ? QueryPrimitiveFromOptionalDescriptor<T> : T extends readonly (infer _U)[] ? never : T extends object ? {
|
|
76
|
+
[K in RequiredKeys<T>]: TypeFromValidFormatForQuery<T[K]>;
|
|
77
|
+
} & {
|
|
78
|
+
[K in OptionalKeys<T>]?: TypeFromValidFormatForQuery<T[K]>;
|
|
79
|
+
} : unknown;
|
|
68
80
|
export {};
|
|
69
81
|
//# sourceMappingURL=typeFromValidFormat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeFromValidFormat.d.ts","sourceRoot":"","sources":["../../src/utils/typeFromValidFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,uBAAuB;AACvB,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,kBAAkB,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,GAC9B,WAAW,EAAE,CAAC;AAElB,kDAAkD;AAClD,eAAO,MAAM,OAAO,EAAG,GAAY,CAAC;AACpC,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAG,CAAC,CAAU,CAAC;AAEnC;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GACzD,MAAM,GACN,CAAC,SAAS,iBAAiB,GACzB,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC1B,OAAO,GACP,CAAC,SAAS,iBAAiB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,KAAK,CAAC;AAEhB;;GAEG;AACH,KAAK,+BAA+B,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GACnD,MAAM,GACN,CAAC,SAAS,CAAC,CAAC,GACV,MAAM,GACN,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACnC;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAC7C,CAAC,GAED,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC/B,CAAC,SAAS,kBAAkB,GAC1B,CAAC,GACD,KAAK,GACP,KAAK;CACZ,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,GAC9D,uBAAuB,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,+BAA+B,CAAC,CAAC,CAAC,GAClC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5B,mBAAmB,CAAC,CAAC,CAAC,EAAE,GACxB,CAAC,SAAS,MAAM,GAEd,AADA,8BAA8B;AAC9B;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KACrD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD,GACD,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"typeFromValidFormat.d.ts","sourceRoot":"","sources":["../../src/utils/typeFromValidFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,uBAAuB;AACvB,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,kBAAkB,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,GAC9B,WAAW,EAAE,CAAC;AAElB,kDAAkD;AAClD,eAAO,MAAM,OAAO,EAAG,GAAY,CAAC;AACpC,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAG,CAAC,CAAU,CAAC;AAEnC;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GACzD,MAAM,GACN,CAAC,SAAS,iBAAiB,GACzB,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC1B,OAAO,GACP,CAAC,SAAS,iBAAiB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,KAAK,CAAC;AAEhB;;GAEG;AACH,KAAK,+BAA+B,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GACnD,MAAM,GACN,CAAC,SAAS,CAAC,CAAC,GACV,MAAM,GACN,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACnC;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAC7C,CAAC,GAED,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC/B,CAAC,SAAS,kBAAkB,GAC1B,CAAC,GACD,KAAK,GACP,KAAK;CACZ,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,GAC9D,uBAAuB,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,+BAA+B,CAAC,CAAC,CAAC,GAClC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5B,mBAAmB,CAAC,CAAC,CAAC,EAAE,GACxB,CAAC,SAAS,MAAM,GAEd,AADA,8BAA8B;AAC9B;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KACrD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD,GACD,OAAO,CAAC;AAElB;;;;GAIG;AACH,KAAK,4BAA4B,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GAC9D,MAAM,GACN,CAAC,SAAS,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAClE,KAAK,GACL,KAAK,CAAC;AAEZ,KAAK,oCAAoC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GACxD,MAAM,GACN,CAAC,SAAS,CAAC,CAAC,GACV,KAAK,GACL,KAAK,CAAC;AAEZ,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,GACtE,4BAA4B,CAAC,CAAC,CAAC,GAC/B,CAAC,SAAS,kBAAkB,GAC1B,oCAAoC,CAAC,CAAC,CAAC,GACvC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAE7B,KAAK,GACL,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAC7D,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,GACD,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mas-server",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/bun": "latest",
|
|
29
|
+
"@types/micromatch": "^4.0.10",
|
|
29
30
|
"@types/morgan": "^1.9.10",
|
|
30
31
|
"@typescript-eslint/eslint-plugin": "^8.52.0",
|
|
31
32
|
"@typescript-eslint/parser": "^8.52.0",
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
"@types/express": "^5.0.6",
|
|
44
45
|
"ansi-colors": "^4.1.3",
|
|
45
46
|
"express": "^5.2.1",
|
|
47
|
+
"micromatch": "^4.0.8",
|
|
46
48
|
"moment": "^2.30.1",
|
|
47
49
|
"morgan": "^1.10.1",
|
|
48
50
|
"rotating-file-stream": "^3.2.7"
|