muryshev commited on
Commit
dd6cddb
·
1 Parent(s): 18cee9d

Added parameters

Browse files
.env.local.template CHANGED
@@ -17,6 +17,12 @@ SIMILARITY_THRESHOLD=${SIMILARITY_THRESHOLD}
17
  SAIGA_PROMPT_WEB_SEARCH_GENERATE_QUERY=`Представим, что ты специалист по налогам. Перефразируй запрос пользователя({{query}}) так, чтобы это можно было найти в поисковой системе.`
18
  SAIGA_PROMPT_WEB_SEARCH_ANALYZE=Ответь на запрос "{{query}}". Не повторяй текст запроса. Отвечай подробно. Предположим, что следующий текст содержит правдивую информацию: {{context}}
19
  SAIGA_TRUNCATE_WEB_CONTEXT=4000
 
 
 
 
 
 
20
 
21
  # used to activate search with web functionality. disabled if not defined
22
  SERPAPI_KEY=${SERPAPI_KEY} #your serpapi key here
@@ -26,7 +32,7 @@ YANDEX_API_KEY=${YANDEX_API_KEY}
26
  YANDEX_FOLDER_ID=${YANDEX_FOLDER_ID}
27
  WEB_SEARCH_TEMPLATE=${WEB_SEARCH_TEMPLATE}
28
  USE_CUSTOM_PARSER=true
29
- MAX_N_PAGES_SCRAPE=10
30
 
31
  # Parameters to enable "Sign in with HF"
32
  OPENID_CLIENT_ID=
 
17
  SAIGA_PROMPT_WEB_SEARCH_GENERATE_QUERY=`Представим, что ты специалист по налогам. Перефразируй запрос пользователя({{query}}) так, чтобы это можно было найти в поисковой системе.`
18
  SAIGA_PROMPT_WEB_SEARCH_ANALYZE=Ответь на запрос "{{query}}". Не повторяй текст запроса. Отвечай подробно. Предположим, что следующий текст содержит правдивую информацию: {{context}}
19
  SAIGA_TRUNCATE_WEB_CONTEXT=4000
20
+ SAIGA_BYPASS_WEBSEARCH_QUERY=${SAIGA_BYPASS_WEBSEARCH_QUERY}
21
+
22
+ #pastebin logging
23
+ PASTEBIN_DEV_KEY=${PASTEBIN_DEV_KEY}
24
+ PASTEBIN_USERNAME=${PASTEBIN_USERNAME}
25
+ PASTEBIN_PASSWORD=${PASTEBIN_PASSWORD}
26
 
27
  # used to activate search with web functionality. disabled if not defined
28
  SERPAPI_KEY=${SERPAPI_KEY} #your serpapi key here
 
32
  YANDEX_FOLDER_ID=${YANDEX_FOLDER_ID}
33
  WEB_SEARCH_TEMPLATE=${WEB_SEARCH_TEMPLATE}
34
  USE_CUSTOM_PARSER=true
35
+ MAX_N_PAGES_SCRAPE=3
36
 
37
  # Parameters to enable "Sign in with HF"
38
  OPENID_CLIENT_ID=
chat-ui/src/lib/server/websearch/generateQuery.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SAIGA_PROMPT_WEB_SEARCH_GENERATE_QUERY } from "$env/static/private";
2
  import type { Message } from "$lib/types/Message";
3
  import { format } from "date-fns";
4
  import { modelEndpoint } from "../modelEndpoint";
@@ -15,7 +15,12 @@ export async function generateQuery(messages: Message[]) {
15
  // currentDate,
16
  // });
17
  const prepromt = ""
18
- let searchQuery = await generateSearchQuery(lastMessage.content, {});
 
 
 
 
 
19
 
20
  // const regex = /"([^"]+)"/;
21
  // const matches = searchQuery.match(regex);
@@ -23,10 +28,9 @@ export async function generateQuery(messages: Message[]) {
23
  // if (matches && matches.length > 1) {
24
  // searchQuery = matches[1];
25
  // }
26
- console.log('searchQuery', searchQuery)
27
- throw 1
28
 
29
- return searchQuery;
30
  }
31
 
32
 
 
1
+ import { SAIGA_PROMPT_WEB_SEARCH_GENERATE_QUERY, SAIGA_BYPASS_WEBSEARCH_QUERY } from "$env/static/private";
2
  import type { Message } from "$lib/types/Message";
3
  import { format } from "date-fns";
4
  import { modelEndpoint } from "../modelEndpoint";
 
15
  // currentDate,
16
  // });
17
  const prepromt = ""
18
+ console.log('SAIGA_BYPASS_WEBSEARCH_QUERY', SAIGA_BYPASS_WEBSEARCH_QUERY)
19
+ if (SAIGA_BYPASS_WEBSEARCH_QUERY === 'true'){
20
+ return lastMessage.content;
21
+ }else{
22
+ return await generateSearchQuery(lastMessage.content, {});
23
+ }
24
 
25
  // const regex = /"([^"]+)"/;
26
  // const matches = searchQuery.match(regex);
 
28
  // if (matches && matches.length > 1) {
29
  // searchQuery = matches[1];
30
  // }
31
+ // console.log('searchQuery', searchQuery)
 
32
 
33
+ // return searchQuery;
34
  }
35
 
36
 
chat-ui/src/lib/server/websearch/runWebSearch.ts CHANGED
@@ -45,7 +45,7 @@ export async function runWebSearch(
45
 
46
  appendUpdate("Генерируем поисковый запрос...");
47
 
48
- webSearch.searchQuery = lastMessage.content; //await generateQuery(messages);
49
  webSearch.searchQuery = (WEB_SEARCH_TEMPLATE ?? "{{query}}").replace("{{query}}", webSearch.searchQuery);
50
 
51
  console.log('Web search query: ', webSearch.searchQuery)
@@ -122,27 +122,27 @@ export async function runWebSearch(
122
 
123
  console.log('web search context:', webSearch.context);
124
 
125
- // updatePad({
126
- // type: "webSearch",
127
- // messageType: "sources",
128
- // message: "sources",
129
- // sources: [],
130
- // });
131
 
132
- const usedSources = new Set<string>();
133
- for (const idx of indices) {
134
- const { source } = texts[idx.i];
135
- if (!usedSources.has(source.link)) {
136
- usedSources.add(source.link);
137
- webSearch.contextSources.push(source);
138
- updatePad({
139
- type: "webSearch",
140
- messageType: "sources",
141
- message: "sources",
142
- sources: webSearch.contextSources,
143
- });
144
- }
145
- }
146
  }
147
  } catch (searchError) {
148
  console.log('searchError', searchError)
 
45
 
46
  appendUpdate("Генерируем поисковый запрос...");
47
 
48
+ webSearch.searchQuery = await generateQuery(messages);
49
  webSearch.searchQuery = (WEB_SEARCH_TEMPLATE ?? "{{query}}").replace("{{query}}", webSearch.searchQuery);
50
 
51
  console.log('Web search query: ', webSearch.searchQuery)
 
122
 
123
  console.log('web search context:', webSearch.context);
124
 
125
+ updatePad({
126
+ type: "webSearch",
127
+ messageType: "sources",
128
+ message: "sources",
129
+ sources: [],
130
+ });
131
 
132
+ // const usedSources = new Set<string>();
133
+ // for (const idx of indices) {
134
+ // const { source } = texts[idx.i];
135
+ // if (!usedSources.has(source.link)) {
136
+ // usedSources.add(source.link);
137
+ // webSearch.contextSources.push(source);
138
+ // updatePad({
139
+ // type: "webSearch",
140
+ // messageType: "sources",
141
+ // message: "sources",
142
+ // sources: webSearch.contextSources,
143
+ // });
144
+ // }
145
+ // }
146
  }
147
  } catch (searchError) {
148
  console.log('searchError', searchError)
chat-ui/src/routes/conversation/[id]/+server.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { HF_ACCESS_TOKEN, MESSAGES_BEFORE_LOGIN, RATE_LIMIT } from "$env/static/private";
2
  import { buildPrompt } from "$lib/buildPrompt";
3
  import { PUBLIC_SEP_TOKEN } from "$lib/constants/publicSepToken";
4
  import { authCondition, requiresUser } from "$lib/server/auth";
@@ -10,7 +10,7 @@ import type { Message } from "$lib/types/Message";
10
  import { trimPrefix } from "$lib/utils/trimPrefix";
11
  import { trimSuffix } from "$lib/utils/trimSuffix";
12
  import { textGenerationStream } from "@huggingface/inference";
13
- import { error } from "@sveltejs/kit";
14
  import { ObjectId } from "mongodb";
15
  import { z } from "zod";
16
  import { AwsClient } from "aws4fetch";
@@ -20,8 +20,32 @@ import type { WebSearch } from "$lib/types/WebSearch";
20
  import { abortedGenerations } from "$lib/server/abortedGenerations";
21
  import { summarize } from "$lib/server/summarize";
22
  import { buildSearchPrompt } from "$lib/buildSearchPrompt.js";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  export async function POST({ request, fetch, locals, params, getClientAddress }) {
 
25
  const id = z.string().parse(params.id);
26
  const convId = new ObjectId(id);
27
  const promptedAt = new Date();
@@ -80,6 +104,10 @@ export async function POST({ request, fetch, locals, params, getClientAddress })
80
  // finally parse the content of the request
81
  const json = await request.json();
82
 
 
 
 
 
83
  const {
84
  inputs: newPrompt,
85
  response_id: responseId,
@@ -127,6 +155,11 @@ export async function POST({ request, fetch, locals, params, getClientAddress })
127
  const stream = new ReadableStream({
128
  async start(controller) {
129
  console.log('conversation start')
 
 
 
 
 
130
  // fetch the endpoint
131
  const randomEndpoint = modelEndpoint(model);
132
 
@@ -153,6 +186,7 @@ export async function POST({ request, fetch, locals, params, getClientAddress })
153
 
154
  if (webSearch) {
155
  webSearchResults = await runWebSearch(conv, newPrompt, update);
 
156
  }
157
 
158
 
@@ -247,6 +281,7 @@ export async function POST({ request, fetch, locals, params, getClientAddress })
247
  messages,
248
  webSearch: webSearchResults
249
  });
 
250
  inputData.messages = prompt;
251
  }
252
 
@@ -269,7 +304,7 @@ export async function POST({ request, fetch, locals, params, getClientAddress })
269
  // Process the chunk of text (value) here
270
  const chunk = textDecoder.decode(value);
271
  fullText += chunk
272
-
273
 
274
  const lastMessage = messages[messages.length - 1];
275
  update({
@@ -313,6 +348,8 @@ export async function POST({ request, fetch, locals, params, getClientAddress })
313
  type: "finalAnswer",
314
  text: '',
315
  });
 
 
316
  }
317
 
318
 
 
1
+ import { HF_ACCESS_TOKEN, MESSAGES_BEFORE_LOGIN, RATE_LIMIT, PASTEBIN_DEV_KEY, PASTEBIN_USERNAME, PASTEBIN_PASSWORD} from "$env/static/private";
2
  import { buildPrompt } from "$lib/buildPrompt";
3
  import { PUBLIC_SEP_TOKEN } from "$lib/constants/publicSepToken";
4
  import { authCondition, requiresUser } from "$lib/server/auth";
 
10
  import { trimPrefix } from "$lib/utils/trimPrefix";
11
  import { trimSuffix } from "$lib/utils/trimSuffix";
12
  import { textGenerationStream } from "@huggingface/inference";
13
+ import { error, json } from "@sveltejs/kit";
14
  import { ObjectId } from "mongodb";
15
  import { z } from "zod";
16
  import { AwsClient } from "aws4fetch";
 
20
  import { abortedGenerations } from "$lib/server/abortedGenerations";
21
  import { summarize } from "$lib/server/summarize";
22
  import { buildSearchPrompt } from "$lib/buildSearchPrompt.js";
23
+ import { PastebinAPI } from "pastebin-ts/dist/api.js";
24
+ import { PRIVACY_LEVEL } from "pastebin-ts/dist/config.js";
25
+
26
+ function Log(data: any){
27
+ const pastebin = new PastebinAPI({
28
+ 'api_dev_key' : PASTEBIN_DEV_KEY,
29
+ 'api_user_name' : PASTEBIN_USERNAME,
30
+ 'api_user_password' : PASTEBIN_PASSWORD
31
+ });
32
+
33
+ pastebin.createPaste ({
34
+ text: JSON.stringify(data),
35
+ format: 'json',
36
+ title: 'saiga-demo-request-'+crypto.randomUUID(),
37
+ privacy: PRIVACY_LEVEL.PUBLIC_USER
38
+ }).then((data) => {
39
+ // we have successfully pasted it. Data contains the id
40
+ console.log('request logged: ', data);
41
+ })
42
+ .catch((err) => {
43
+ console.log(err);
44
+ });
45
+ }
46
 
47
  export async function POST({ request, fetch, locals, params, getClientAddress }) {
48
+ const logEntry:any = {};
49
  const id = z.string().parse(params.id);
50
  const convId = new ObjectId(id);
51
  const promptedAt = new Date();
 
104
  // finally parse the content of the request
105
  const json = await request.json();
106
 
107
+ logEntry.request = {
108
+ content: json
109
+ };
110
+
111
  const {
112
  inputs: newPrompt,
113
  response_id: responseId,
 
155
  const stream = new ReadableStream({
156
  async start(controller) {
157
  console.log('conversation start')
158
+ console.log({
159
+ 'api_dev_key' : PASTEBIN_DEV_KEY,
160
+ 'api_user_name' : PASTEBIN_USERNAME,
161
+ 'api_user_password' : PASTEBIN_PASSWORD,
162
+ })
163
  // fetch the endpoint
164
  const randomEndpoint = modelEndpoint(model);
165
 
 
186
 
187
  if (webSearch) {
188
  webSearchResults = await runWebSearch(conv, newPrompt, update);
189
+ logEntry.websearch = webSearchResults;
190
  }
191
 
192
 
 
281
  messages,
282
  webSearch: webSearchResults
283
  });
284
+ logEntry.gen_search = prompt;
285
  inputData.messages = prompt;
286
  }
287
 
 
304
  // Process the chunk of text (value) here
305
  const chunk = textDecoder.decode(value);
306
  fullText += chunk
307
+ logEntry.response = fullText;
308
 
309
  const lastMessage = messages[messages.length - 1];
310
  update({
 
348
  type: "finalAnswer",
349
  text: '',
350
  });
351
+ } finally {
352
+ Log(logEntry);
353
  }
354
 
355
 
package-lock.json ADDED
@@ -0,0 +1,545 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "chat",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "dependencies": {
8
+ "pastebin-ts": "^1.3.0"
9
+ }
10
+ },
11
+ "node_modules/ajv": {
12
+ "version": "6.12.6",
13
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
14
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
15
+ "dependencies": {
16
+ "fast-deep-equal": "^3.1.1",
17
+ "fast-json-stable-stringify": "^2.0.0",
18
+ "json-schema-traverse": "^0.4.1",
19
+ "uri-js": "^4.2.2"
20
+ },
21
+ "funding": {
22
+ "type": "github",
23
+ "url": "https://github.com/sponsors/epoberezkin"
24
+ }
25
+ },
26
+ "node_modules/asn1": {
27
+ "version": "0.2.6",
28
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
29
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
30
+ "dependencies": {
31
+ "safer-buffer": "~2.1.0"
32
+ }
33
+ },
34
+ "node_modules/assert-plus": {
35
+ "version": "1.0.0",
36
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
37
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
38
+ "engines": {
39
+ "node": ">=0.8"
40
+ }
41
+ },
42
+ "node_modules/asynckit": {
43
+ "version": "0.4.0",
44
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
45
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
46
+ },
47
+ "node_modules/aws-sign2": {
48
+ "version": "0.7.0",
49
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
50
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
51
+ "engines": {
52
+ "node": "*"
53
+ }
54
+ },
55
+ "node_modules/aws4": {
56
+ "version": "1.12.0",
57
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
58
+ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
59
+ },
60
+ "node_modules/bcrypt-pbkdf": {
61
+ "version": "1.0.2",
62
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
63
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
64
+ "dependencies": {
65
+ "tweetnacl": "^0.14.3"
66
+ }
67
+ },
68
+ "node_modules/caseless": {
69
+ "version": "0.12.0",
70
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
71
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
72
+ },
73
+ "node_modules/combined-stream": {
74
+ "version": "1.0.8",
75
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
76
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
77
+ "dependencies": {
78
+ "delayed-stream": "~1.0.0"
79
+ },
80
+ "engines": {
81
+ "node": ">= 0.8"
82
+ }
83
+ },
84
+ "node_modules/core-util-is": {
85
+ "version": "1.0.2",
86
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
87
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
88
+ },
89
+ "node_modules/dashdash": {
90
+ "version": "1.14.1",
91
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
92
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
93
+ "dependencies": {
94
+ "assert-plus": "^1.0.0"
95
+ },
96
+ "engines": {
97
+ "node": ">=0.10"
98
+ }
99
+ },
100
+ "node_modules/delayed-stream": {
101
+ "version": "1.0.0",
102
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
103
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
104
+ "engines": {
105
+ "node": ">=0.4.0"
106
+ }
107
+ },
108
+ "node_modules/ecc-jsbn": {
109
+ "version": "0.1.2",
110
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
111
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
112
+ "dependencies": {
113
+ "jsbn": "~0.1.0",
114
+ "safer-buffer": "^2.1.0"
115
+ }
116
+ },
117
+ "node_modules/extend": {
118
+ "version": "3.0.2",
119
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
120
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
121
+ },
122
+ "node_modules/extsprintf": {
123
+ "version": "1.3.0",
124
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
125
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
126
+ "engines": [
127
+ "node >=0.6.0"
128
+ ]
129
+ },
130
+ "node_modules/fast-deep-equal": {
131
+ "version": "3.1.3",
132
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
133
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
134
+ },
135
+ "node_modules/fast-json-stable-stringify": {
136
+ "version": "2.1.0",
137
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
138
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
139
+ },
140
+ "node_modules/forever-agent": {
141
+ "version": "0.6.1",
142
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
143
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
144
+ "engines": {
145
+ "node": "*"
146
+ }
147
+ },
148
+ "node_modules/form-data": {
149
+ "version": "2.3.3",
150
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
151
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
152
+ "dependencies": {
153
+ "asynckit": "^0.4.0",
154
+ "combined-stream": "^1.0.6",
155
+ "mime-types": "^2.1.12"
156
+ },
157
+ "engines": {
158
+ "node": ">= 0.12"
159
+ }
160
+ },
161
+ "node_modules/fs-readfile-promise": {
162
+ "version": "3.0.1",
163
+ "resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-3.0.1.tgz",
164
+ "integrity": "sha512-LsSxMeaJdYH27XrW7Dmq0Gx63mioULCRel63B5VeELYLavi1wF5s0XfsIdKDFdCL9hsfQ2qBvXJszQtQJ9h17A==",
165
+ "dependencies": {
166
+ "graceful-fs": "^4.1.11"
167
+ }
168
+ },
169
+ "node_modules/getpass": {
170
+ "version": "0.1.7",
171
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
172
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
173
+ "dependencies": {
174
+ "assert-plus": "^1.0.0"
175
+ }
176
+ },
177
+ "node_modules/graceful-fs": {
178
+ "version": "4.2.11",
179
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
180
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
181
+ },
182
+ "node_modules/har-schema": {
183
+ "version": "2.0.0",
184
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
185
+ "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
186
+ "engines": {
187
+ "node": ">=4"
188
+ }
189
+ },
190
+ "node_modules/har-validator": {
191
+ "version": "5.1.5",
192
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
193
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
194
+ "deprecated": "this library is no longer supported",
195
+ "dependencies": {
196
+ "ajv": "^6.12.3",
197
+ "har-schema": "^2.0.0"
198
+ },
199
+ "engines": {
200
+ "node": ">=6"
201
+ }
202
+ },
203
+ "node_modules/http-signature": {
204
+ "version": "1.2.0",
205
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
206
+ "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
207
+ "dependencies": {
208
+ "assert-plus": "^1.0.0",
209
+ "jsprim": "^1.2.2",
210
+ "sshpk": "^1.7.0"
211
+ },
212
+ "engines": {
213
+ "node": ">=0.8",
214
+ "npm": ">=1.3.7"
215
+ }
216
+ },
217
+ "node_modules/is-typedarray": {
218
+ "version": "1.0.0",
219
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
220
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
221
+ },
222
+ "node_modules/isstream": {
223
+ "version": "0.1.2",
224
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
225
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
226
+ },
227
+ "node_modules/jsbn": {
228
+ "version": "0.1.1",
229
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
230
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
231
+ },
232
+ "node_modules/json-schema": {
233
+ "version": "0.4.0",
234
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
235
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
236
+ },
237
+ "node_modules/json-schema-traverse": {
238
+ "version": "0.4.1",
239
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
240
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
241
+ },
242
+ "node_modules/json-stringify-safe": {
243
+ "version": "5.0.1",
244
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
245
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
246
+ },
247
+ "node_modules/jsprim": {
248
+ "version": "1.4.2",
249
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
250
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
251
+ "dependencies": {
252
+ "assert-plus": "1.0.0",
253
+ "extsprintf": "1.3.0",
254
+ "json-schema": "0.4.0",
255
+ "verror": "1.10.0"
256
+ },
257
+ "engines": {
258
+ "node": ">=0.6.0"
259
+ }
260
+ },
261
+ "node_modules/lodash": {
262
+ "version": "4.17.21",
263
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
264
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
265
+ },
266
+ "node_modules/mime-db": {
267
+ "version": "1.52.0",
268
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
269
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
270
+ "engines": {
271
+ "node": ">= 0.6"
272
+ }
273
+ },
274
+ "node_modules/mime-types": {
275
+ "version": "2.1.35",
276
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
277
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
278
+ "dependencies": {
279
+ "mime-db": "1.52.0"
280
+ },
281
+ "engines": {
282
+ "node": ">= 0.6"
283
+ }
284
+ },
285
+ "node_modules/oauth-sign": {
286
+ "version": "0.9.0",
287
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
288
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
289
+ "engines": {
290
+ "node": "*"
291
+ }
292
+ },
293
+ "node_modules/pastebin-ts": {
294
+ "version": "1.3.0",
295
+ "resolved": "https://registry.npmjs.org/pastebin-ts/-/pastebin-ts-1.3.0.tgz",
296
+ "integrity": "sha512-TdI38rOZAvjzcS+LHrf19L4WKhbjSv414cXjHp9zbdPozHBQ4lT7iCUBijo9WYBQ+N4sNvaqs92GzU1DsyLbKw==",
297
+ "dependencies": {
298
+ "fs-readfile-promise": "^3.0.1",
299
+ "lodash": "^4.17.21",
300
+ "pjson": "^1.0.9",
301
+ "request": "^2.88.0",
302
+ "request-promise-native": "^1.0.5",
303
+ "when": "^3.7.8",
304
+ "xml2js": "^0.4.19"
305
+ }
306
+ },
307
+ "node_modules/performance-now": {
308
+ "version": "2.1.0",
309
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
310
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
311
+ },
312
+ "node_modules/pjson": {
313
+ "version": "1.0.9",
314
+ "resolved": "https://registry.npmjs.org/pjson/-/pjson-1.0.9.tgz",
315
+ "integrity": "sha512-4hRJH3YzkUpOlShRzhyxAmThSNnAaIlWZCAb27hd0pVUAXNUAHAO7XZbsPPvsCYwBFEScTmCCL6DGE8NyZ8BdQ=="
316
+ },
317
+ "node_modules/psl": {
318
+ "version": "1.9.0",
319
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
320
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
321
+ },
322
+ "node_modules/punycode": {
323
+ "version": "2.3.0",
324
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
325
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
326
+ "engines": {
327
+ "node": ">=6"
328
+ }
329
+ },
330
+ "node_modules/qs": {
331
+ "version": "6.5.3",
332
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
333
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
334
+ "engines": {
335
+ "node": ">=0.6"
336
+ }
337
+ },
338
+ "node_modules/request": {
339
+ "version": "2.88.2",
340
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
341
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
342
+ "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
343
+ "dependencies": {
344
+ "aws-sign2": "~0.7.0",
345
+ "aws4": "^1.8.0",
346
+ "caseless": "~0.12.0",
347
+ "combined-stream": "~1.0.6",
348
+ "extend": "~3.0.2",
349
+ "forever-agent": "~0.6.1",
350
+ "form-data": "~2.3.2",
351
+ "har-validator": "~5.1.3",
352
+ "http-signature": "~1.2.0",
353
+ "is-typedarray": "~1.0.0",
354
+ "isstream": "~0.1.2",
355
+ "json-stringify-safe": "~5.0.1",
356
+ "mime-types": "~2.1.19",
357
+ "oauth-sign": "~0.9.0",
358
+ "performance-now": "^2.1.0",
359
+ "qs": "~6.5.2",
360
+ "safe-buffer": "^5.1.2",
361
+ "tough-cookie": "~2.5.0",
362
+ "tunnel-agent": "^0.6.0",
363
+ "uuid": "^3.3.2"
364
+ },
365
+ "engines": {
366
+ "node": ">= 6"
367
+ }
368
+ },
369
+ "node_modules/request-promise-core": {
370
+ "version": "1.1.4",
371
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
372
+ "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
373
+ "dependencies": {
374
+ "lodash": "^4.17.19"
375
+ },
376
+ "engines": {
377
+ "node": ">=0.10.0"
378
+ },
379
+ "peerDependencies": {
380
+ "request": "^2.34"
381
+ }
382
+ },
383
+ "node_modules/request-promise-native": {
384
+ "version": "1.0.9",
385
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
386
+ "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
387
+ "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142",
388
+ "dependencies": {
389
+ "request-promise-core": "1.1.4",
390
+ "stealthy-require": "^1.1.1",
391
+ "tough-cookie": "^2.3.3"
392
+ },
393
+ "engines": {
394
+ "node": ">=0.12.0"
395
+ },
396
+ "peerDependencies": {
397
+ "request": "^2.34"
398
+ }
399
+ },
400
+ "node_modules/safe-buffer": {
401
+ "version": "5.2.1",
402
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
403
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
404
+ "funding": [
405
+ {
406
+ "type": "github",
407
+ "url": "https://github.com/sponsors/feross"
408
+ },
409
+ {
410
+ "type": "patreon",
411
+ "url": "https://www.patreon.com/feross"
412
+ },
413
+ {
414
+ "type": "consulting",
415
+ "url": "https://feross.org/support"
416
+ }
417
+ ]
418
+ },
419
+ "node_modules/safer-buffer": {
420
+ "version": "2.1.2",
421
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
422
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
423
+ },
424
+ "node_modules/sax": {
425
+ "version": "1.3.0",
426
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
427
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
428
+ },
429
+ "node_modules/sshpk": {
430
+ "version": "1.17.0",
431
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
432
+ "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
433
+ "dependencies": {
434
+ "asn1": "~0.2.3",
435
+ "assert-plus": "^1.0.0",
436
+ "bcrypt-pbkdf": "^1.0.0",
437
+ "dashdash": "^1.12.0",
438
+ "ecc-jsbn": "~0.1.1",
439
+ "getpass": "^0.1.1",
440
+ "jsbn": "~0.1.0",
441
+ "safer-buffer": "^2.0.2",
442
+ "tweetnacl": "~0.14.0"
443
+ },
444
+ "bin": {
445
+ "sshpk-conv": "bin/sshpk-conv",
446
+ "sshpk-sign": "bin/sshpk-sign",
447
+ "sshpk-verify": "bin/sshpk-verify"
448
+ },
449
+ "engines": {
450
+ "node": ">=0.10.0"
451
+ }
452
+ },
453
+ "node_modules/stealthy-require": {
454
+ "version": "1.1.1",
455
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
456
+ "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
457
+ "engines": {
458
+ "node": ">=0.10.0"
459
+ }
460
+ },
461
+ "node_modules/tough-cookie": {
462
+ "version": "2.5.0",
463
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
464
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
465
+ "dependencies": {
466
+ "psl": "^1.1.28",
467
+ "punycode": "^2.1.1"
468
+ },
469
+ "engines": {
470
+ "node": ">=0.8"
471
+ }
472
+ },
473
+ "node_modules/tunnel-agent": {
474
+ "version": "0.6.0",
475
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
476
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
477
+ "dependencies": {
478
+ "safe-buffer": "^5.0.1"
479
+ },
480
+ "engines": {
481
+ "node": "*"
482
+ }
483
+ },
484
+ "node_modules/tweetnacl": {
485
+ "version": "0.14.5",
486
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
487
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
488
+ },
489
+ "node_modules/uri-js": {
490
+ "version": "4.4.1",
491
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
492
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
493
+ "dependencies": {
494
+ "punycode": "^2.1.0"
495
+ }
496
+ },
497
+ "node_modules/uuid": {
498
+ "version": "3.4.0",
499
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
500
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
501
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
502
+ "bin": {
503
+ "uuid": "bin/uuid"
504
+ }
505
+ },
506
+ "node_modules/verror": {
507
+ "version": "1.10.0",
508
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
509
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
510
+ "engines": [
511
+ "node >=0.6.0"
512
+ ],
513
+ "dependencies": {
514
+ "assert-plus": "^1.0.0",
515
+ "core-util-is": "1.0.2",
516
+ "extsprintf": "^1.2.0"
517
+ }
518
+ },
519
+ "node_modules/when": {
520
+ "version": "3.7.8",
521
+ "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
522
+ "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw=="
523
+ },
524
+ "node_modules/xml2js": {
525
+ "version": "0.4.23",
526
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
527
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
528
+ "dependencies": {
529
+ "sax": ">=0.6.0",
530
+ "xmlbuilder": "~11.0.0"
531
+ },
532
+ "engines": {
533
+ "node": ">=4.0.0"
534
+ }
535
+ },
536
+ "node_modules/xmlbuilder": {
537
+ "version": "11.0.1",
538
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
539
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
540
+ "engines": {
541
+ "node": ">=4.0"
542
+ }
543
+ }
544
+ }
545
+ }
package.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "dependencies": {
3
+ "pastebin-ts": "^1.3.0"
4
+ }
5
+ }