chrome-webstore-upload-keys 1.0.0 → 1.1.0

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/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import process from 'node:process';
3
3
  import {createServer} from 'node:http';
4
4
  import * as p from '@clack/prompts';
5
- import open from 'open';
5
+ import {open} from 'openurl';
6
6
  import getPort from 'get-port';
7
7
  import pDefer from 'p-defer';
8
8
 
package/dist/index.js ADDED
@@ -0,0 +1,881 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "module";
3
+ /******/ var __webpack_modules__ = ({
4
+
5
+ /***/ 258:
6
+ /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
7
+
8
+ var __webpack_unused_export__;
9
+ var spawn = (__nccwpck_require__(81).spawn);
10
+
11
+ var command;
12
+
13
+ switch(process.platform) {
14
+ case 'darwin':
15
+ command = 'open';
16
+ break;
17
+ case 'win32':
18
+ command = 'explorer.exe';
19
+ break;
20
+ case 'linux':
21
+ command = 'xdg-open';
22
+ break;
23
+ default:
24
+ throw new Error('Unsupported platform: ' + process.platform);
25
+ }
26
+
27
+ /**
28
+ * Error handling is deliberately minimal, as this function is to be easy to use for shell scripting
29
+ *
30
+ * @param url The URL to open
31
+ * @param callback A function with a single error argument. Optional.
32
+ */
33
+
34
+ function open(url, callback) {
35
+ var child = spawn(command, [url]);
36
+ var errorText = "";
37
+ child.stderr.setEncoding('utf8');
38
+ child.stderr.on('data', function (data) {
39
+ errorText += data;
40
+ });
41
+ child.stderr.on('end', function () {
42
+ if (errorText.length > 0) {
43
+ var error = new Error(errorText);
44
+ if (callback) {
45
+ callback(error);
46
+ } else {
47
+ throw error;
48
+ }
49
+ } else if (callback) {
50
+ callback(error);
51
+ }
52
+ });
53
+ }
54
+
55
+ /**
56
+ * @param fields Common fields are: "subject", "body".
57
+ * Some email apps let you specify arbitrary headers here.
58
+ * @param recipientsSeparator Default is ",". Use ";" for Outlook.
59
+ */
60
+ function mailto(recipients, fields, recipientsSeparator, callback) {
61
+ recipientsSeparator = recipientsSeparator || ",";
62
+
63
+ var url = "mailto:"+recipients.join(recipientsSeparator);
64
+ Object.keys(fields).forEach(function (key, index) {
65
+ if (index === 0) {
66
+ url += "?";
67
+ } else {
68
+ url += "&";
69
+ }
70
+ url += key + "=" + encodeURIComponent(fields[key]);
71
+ });
72
+ open(url, callback);
73
+ }
74
+
75
+ exports.b = open;
76
+ __webpack_unused_export__ = mailto;
77
+
78
+ /***/ }),
79
+
80
+ /***/ 23:
81
+ /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
82
+
83
+ let tty = __nccwpck_require__(224)
84
+
85
+ let isColorSupported =
86
+ !("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
87
+ ("FORCE_COLOR" in process.env ||
88
+ process.argv.includes("--color") ||
89
+ process.platform === "win32" ||
90
+ (tty.isatty(1) && process.env.TERM !== "dumb") ||
91
+ "CI" in process.env)
92
+
93
+ let formatter =
94
+ (open, close, replace = open) =>
95
+ input => {
96
+ let string = "" + input
97
+ let index = string.indexOf(close, open.length)
98
+ return ~index
99
+ ? open + replaceClose(string, close, replace, index) + close
100
+ : open + string + close
101
+ }
102
+
103
+ let replaceClose = (string, close, replace, index) => {
104
+ let start = string.substring(0, index) + replace
105
+ let end = string.substring(index + close.length)
106
+ let nextIndex = end.indexOf(close)
107
+ return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
108
+ }
109
+
110
+ let createColors = (enabled = isColorSupported) => ({
111
+ isColorSupported: enabled,
112
+ reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
113
+ bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
114
+ dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
115
+ italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
116
+ underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
117
+ inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
118
+ hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
119
+ strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
120
+ black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
121
+ red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
122
+ green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
123
+ yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
124
+ blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
125
+ magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
126
+ cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
127
+ white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
128
+ gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
129
+ bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
130
+ bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
131
+ bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
132
+ bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
133
+ bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
134
+ bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
135
+ bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
136
+ bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
137
+ })
138
+
139
+ module.exports = createColors()
140
+ module.exports.createColors = createColors
141
+
142
+
143
+ /***/ }),
144
+
145
+ /***/ 571:
146
+ /***/ ((module) => {
147
+
148
+
149
+
150
+ const ESC = '\x1B';
151
+ const CSI = `${ESC}[`;
152
+ const beep = '\u0007';
153
+
154
+ const cursor = {
155
+ to(x, y) {
156
+ if (!y) return `${CSI}${x + 1}G`;
157
+ return `${CSI}${y + 1};${x + 1}H`;
158
+ },
159
+ move(x, y) {
160
+ let ret = '';
161
+
162
+ if (x < 0) ret += `${CSI}${-x}D`;
163
+ else if (x > 0) ret += `${CSI}${x}C`;
164
+
165
+ if (y < 0) ret += `${CSI}${-y}A`;
166
+ else if (y > 0) ret += `${CSI}${y}B`;
167
+
168
+ return ret;
169
+ },
170
+ up: (count = 1) => `${CSI}${count}A`,
171
+ down: (count = 1) => `${CSI}${count}B`,
172
+ forward: (count = 1) => `${CSI}${count}C`,
173
+ backward: (count = 1) => `${CSI}${count}D`,
174
+ nextLine: (count = 1) => `${CSI}E`.repeat(count),
175
+ prevLine: (count = 1) => `${CSI}F`.repeat(count),
176
+ left: `${CSI}G`,
177
+ hide: `${CSI}?25l`,
178
+ show: `${CSI}?25h`,
179
+ save: `${ESC}7`,
180
+ restore: `${ESC}8`
181
+ }
182
+
183
+ const scroll = {
184
+ up: (count = 1) => `${CSI}S`.repeat(count),
185
+ down: (count = 1) => `${CSI}T`.repeat(count)
186
+ }
187
+
188
+ const erase = {
189
+ screen: `${CSI}2J`,
190
+ up: (count = 1) => `${CSI}1J`.repeat(count),
191
+ down: (count = 1) => `${CSI}J`.repeat(count),
192
+ line: `${CSI}2K`,
193
+ lineEnd: `${CSI}K`,
194
+ lineStart: `${CSI}1K`,
195
+ lines(count) {
196
+ let clear = '';
197
+ for (let i = 0; i < count; i++)
198
+ clear += this.line + (i < count - 1 ? cursor.up() : '');
199
+ if (count)
200
+ clear += cursor.left;
201
+ return clear;
202
+ }
203
+ }
204
+
205
+ module.exports = { cursor, scroll, erase, beep };
206
+
207
+
208
+ /***/ }),
209
+
210
+ /***/ 81:
211
+ /***/ ((module) => {
212
+
213
+ module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");
214
+
215
+ /***/ }),
216
+
217
+ /***/ 849:
218
+ /***/ ((module) => {
219
+
220
+ module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http");
221
+
222
+ /***/ }),
223
+
224
+ /***/ 742:
225
+ /***/ ((module) => {
226
+
227
+ module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:process");
228
+
229
+ /***/ }),
230
+
231
+ /***/ 224:
232
+ /***/ ((module) => {
233
+
234
+ module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("tty");
235
+
236
+ /***/ }),
237
+
238
+ /***/ 724:
239
+ /***/ ((__webpack_module__, __unused_webpack___webpack_exports__, __nccwpck_require__) => {
240
+
241
+ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
242
+ /* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(742);
243
+ /* harmony import */ var node_http__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(849);
244
+ /* harmony import */ var _clack_prompts__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(881);
245
+ /* harmony import */ var openurl__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(258);
246
+ /* harmony import */ var get_port__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(133);
247
+ /* harmony import */ var p_defer__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(50);
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+ const approvalCode = (0,p_defer__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)();
256
+ const port = await (0,get_port__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z)();
257
+ const localhost = '127.0.0.1';
258
+
259
+ // TODO: Remove after https://github.com/natemoo-re/clack/issues/181
260
+ const tasks = async tasks => {
261
+ for (const task of tasks) {
262
+ if (task.enabled === false) {
263
+ continue;
264
+ }
265
+
266
+ const s = _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .spinner */ .lY();
267
+ s.start(task.title);
268
+ // eslint-disable-next-line no-await-in-loop -- Sequential
269
+ const result = await task.task(s.message);
270
+ s.stop(result || task.title);
271
+ }
272
+ };
273
+
274
+ const server = (0,node_http__WEBPACK_IMPORTED_MODULE_1__.createServer)((request, response) => {
275
+ const {searchParams} = new URL(request.url, serverUrl);
276
+ if (searchParams.has('code')) {
277
+ approvalCode.resolve(searchParams.get('code'));
278
+ // Html header
279
+ response.writeHead(200, {'Content-Type': 'text/html'});
280
+ response.end('You can close this tab now. <script>window.close()</script>');
281
+ server.close();
282
+ return;
283
+ }
284
+
285
+ response.writeHead(400, {'Content-Type': 'text/plain'});
286
+ response.end('No `code` found in the URL. WHO R U?');
287
+ });
288
+
289
+ // Start the server on port 3000
290
+ server.listen(port, localhost);
291
+
292
+ const serverUrl = `http://${localhost}:${port}`;
293
+
294
+ function required(input) {
295
+ if (input.trim() === '') {
296
+ return 'Required';
297
+ }
298
+ }
299
+
300
+ async function getRefreshToken() {
301
+ const request = await fetch('https://accounts.google.com/o/oauth2/token', {
302
+ method: 'POST',
303
+ body: new URLSearchParams([
304
+ ['client_id', group.clientId],
305
+ ['client_secret', group.clientSecret],
306
+ ['code', code],
307
+ ['grant_type', 'authorization_code'],
308
+ ['redirect_uri', serverUrl], // Unused but required
309
+ ]),
310
+ headers: {
311
+ 'Content-Type': 'application/x-www-form-urlencoded',
312
+ },
313
+ });
314
+
315
+ if (!request.ok) {
316
+ throw new Error('Error while getting the refresh token: ' + request.statusText);
317
+ }
318
+
319
+ const response = await request.json();
320
+
321
+ if (response.error) {
322
+ throw new Error('Error while getting the refresh token: ' + response.error);
323
+ }
324
+
325
+ return response.refresh_token;
326
+ }
327
+
328
+ function getLoginUrl(clientId) {
329
+ const url = new URL('https://accounts.google.com/o/oauth2/auth');
330
+ url.searchParams.set('response_type', 'code');
331
+ url.searchParams.set('access_type', 'offline');
332
+ url.searchParams.set('client_id', clientId);
333
+ url.searchParams.set('scope', 'https://www.googleapis.com/auth/chromewebstore');
334
+ url.searchParams.set('redirect_uri', serverUrl);
335
+ return url.href;
336
+ }
337
+
338
+ _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .intro */ .mf('Follow the steps at this URL to generate the API keys, then enter them below to generate the refresh token.\n https://github.com/fregante/chrome-webstore-upload-keys');
339
+ const group = await _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .group */ .ru(
340
+ {
341
+ // ExtensionId: () => p.text({
342
+ // message: 'Extension ID:',
343
+ // placeholder: 'e.g. bdeobgpddfaegbjfinhldnkfeieakdaf, it’s in the Chrome Web Store URL',
344
+ // }),
345
+ clientId: () => _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .text */ .fL({
346
+ message: 'Client ID:',
347
+ placeholder: 'e.g. 960453266371-2qcq5fppm3d5e.apps.googleusercontent.com',
348
+ validate: required,
349
+ }),
350
+ clientSecret: () => _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .text */ .fL({
351
+ message: 'Client secret:',
352
+ placeholder: 'e.g. GOCSPX-O9uS1FLnCqXDvru7Y_',
353
+ validate: required,
354
+ }),
355
+ open: () => _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .confirm */ .iG({
356
+ message: 'Open the authentication page in the default browser?',
357
+ }),
358
+ },
359
+ {
360
+ onCancel() {
361
+ _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .cancel */ .al('Operation cancelled.');
362
+ node_process__WEBPACK_IMPORTED_MODULE_0__.exit(0); // `onCancel` continues to the next question
363
+ },
364
+ },
365
+ );
366
+
367
+ let code;
368
+ let refreshToken;
369
+ await tasks([
370
+ {
371
+ title: 'Opening the login page in the browser',
372
+ async task() {
373
+ if (group.open) {
374
+ await (0,openurl__WEBPACK_IMPORTED_MODULE_3__/* .open */ .b)(getLoginUrl(group.clientId));
375
+ return 'Page opened';
376
+ }
377
+
378
+ return 'Continue in: ' + getLoginUrl(group.clientId);
379
+ },
380
+ },
381
+ {
382
+ title: 'Waiting for you to complete the process in the browser. Follow its steps and warnings (this is your own personal app)',
383
+ async task() {
384
+ code = await approvalCode.promise;
385
+ return 'Approval code received from Google';
386
+ },
387
+ },
388
+ {
389
+ title: 'Asking Google for the refresh token',
390
+ async task() {
391
+ refreshToken = await getRefreshToken();
392
+ return `Done:
393
+
394
+ CLIENT_ID=${group.clientId}
395
+ CLIENT_SECRET=${group.clientSecret}
396
+ REFRESH_TOKEN=${refreshToken}
397
+ `;
398
+ },
399
+ },
400
+ ]);
401
+
402
+ __webpack_async_result__();
403
+ } catch(e) { __webpack_async_result__(e); } }, 1);
404
+
405
+ /***/ }),
406
+
407
+ /***/ 881:
408
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
409
+
410
+
411
+ // EXPORTS
412
+ __nccwpck_require__.d(__webpack_exports__, {
413
+ "al": () => (/* binding */ ue),
414
+ "iG": () => (/* binding */ se),
415
+ "ru": () => (/* binding */ he),
416
+ "mf": () => (/* binding */ oe),
417
+ "lY": () => (/* binding */ de),
418
+ "fL": () => (/* binding */ te)
419
+ });
420
+
421
+ // UNUSED EXPORTS: groupMultiselect, isCancel, log, multiselect, note, outro, password, select, selectKey
422
+
423
+ // EXTERNAL MODULE: ./node_modules/sisteransi/src/index.js
424
+ var src = __nccwpck_require__(571);
425
+ // EXTERNAL MODULE: external "node:process"
426
+ var external_node_process_ = __nccwpck_require__(742);
427
+ ;// CONCATENATED MODULE: external "node:readline"
428
+ const external_node_readline_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:readline");
429
+ ;// CONCATENATED MODULE: external "node:tty"
430
+ const external_node_tty_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tty");
431
+ // EXTERNAL MODULE: ./node_modules/picocolors/picocolors.js
432
+ var picocolors = __nccwpck_require__(23);
433
+ ;// CONCATENATED MODULE: ./node_modules/@clack/core/dist/index.mjs
434
+ function z({onlyFirst:t=!1}={}){const u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,t?void 0:"g")}function $(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(z(),"")}var m={},G={get exports(){return m},set exports(t){m=t}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),C=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=C&&C<=57343&&(s&=1023,C&=1023,D=s<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(e){var s=this.eastAsianWidth(e);return s=="F"||s=="W"||s=="A"?2:1};function F(e){return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(e){for(var s=F(e),C=0,D=0;D<s.length;D++)C=C+this.characterLength(s[D]);return C},u.slice=function(e,s,C){textLen=u.length(e),s=s||0,C=C||1,s<0&&(s=textLen+s),C<0&&(C=textLen+C);for(var D="",i=0,o=F(e),E=0;E<o.length;E++){var a=o[E],n=u.length(a);if(i>=s-(n==2?1:0))if(i+n<=C)D+=a;else break;i+=n}return D}})(G);const K=m;var Y=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};function c(t,u={}){if(typeof t!="string"||t.length===0||(u={ambiguousIsNarrow:!0,...u},t=$(t),t.length===0))return 0;t=t.replace(Y()," ");const F=u.ambiguousIsNarrow?1:2;let e=0;for(const s of t){const C=s.codePointAt(0);if(C<=31||C>=127&&C<=159||C>=768&&C<=879)continue;switch(K.eastAsianWidth(s)){case"F":case"W":e+=2;break;case"A":e+=F;break;default:e+=1}}return e}const v=10,M=(t=0)=>u=>`\x1B[${u+t}m`,dist_L=(t=0)=>u=>`\x1B[${38+t};5;${u}m`,T=(t=0)=>(u,F,e)=>`\x1B[${38+t};2;${u};${F};${e}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const Z=Object.keys(r.color),H=Object.keys(r.bgColor);[...Z,...H];function U(){const t=new Map;for(const[u,F]of Object.entries(r)){for(const[e,s]of Object.entries(F))r[e]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},F[e]=r[e],t.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:!1})}return Object.defineProperty(r,"codes",{value:t,enumerable:!1}),r.color.close="\x1B[39m",r.bgColor.close="\x1B[49m",r.color.ansi=M(),r.color.ansi256=dist_L(),r.color.ansi16m=T(),r.bgColor.ansi=M(v),r.bgColor.ansi256=dist_L(v),r.bgColor.ansi16m=T(v),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,e)=>u===F&&F===e?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(e/255*5),enumerable:!1},hexToRgb:{value:u=>{const F=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!F)return[0,0,0];let[e]=F;e.length===3&&(e=[...e].map(C=>C+C).join(""));const s=Number.parseInt(e,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,e,s;if(u>=232)F=((u-232)*10+8)/255,e=F,s=F;else{u-=16;const i=u%36;F=Math.floor(u/36)/5,e=Math.floor(i/6)/5,s=i%6/5}const C=Math.max(F,e,s)*2;if(C===0)return 30;let D=30+(Math.round(s)<<2|Math.round(e)<<1|Math.round(F));return C===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,F,e)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,e)),enumerable:!1},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:!1}}),r}const q=U(),p=new Set(["\x1B","\x9B"]),J=39,b="\x07",dist_W="[",Q="]",I="m",w=`${Q}8;;`,N=t=>`${p.values().next().value}${dist_W}${t}${I}`,dist_j=t=>`${p.values().next().value}${w}${t}${b}`,X=t=>t.split(" ").map(u=>c(u)),_=(t,u,F)=>{const e=[...u];let s=!1,C=!1,D=c($(t[t.length-1]));for(const[i,o]of e.entries()){const E=c(o);if(D+E<=F?t[t.length-1]+=o:(t.push(o),D=0),p.has(o)&&(s=!0,C=e.slice(i+1).join("").startsWith(w)),s){C?o===b&&(s=!1,C=!1):o===I&&(s=!1);continue}D+=E,D===F&&i<e.length-1&&(t.push(""),D=0)}!D&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},DD=t=>{const u=t.split(" ");let F=u.length;for(;F>0&&!(c(u[F-1])>0);)F--;return F===u.length?t:u.slice(0,F).join(" ")+u.slice(F).join("")},uD=(t,u,F={})=>{if(F.trim!==!1&&t.trim()==="")return"";let e="",s,C;const D=X(t);let i=[""];for(const[E,a]of t.split(" ").entries()){F.trim!==!1&&(i[i.length-1]=i[i.length-1].trimStart());let n=c(i[i.length-1]);if(E!==0&&(n>=u&&(F.wordWrap===!1||F.trim===!1)&&(i.push(""),n=0),(n>0||F.trim===!1)&&(i[i.length-1]+=" ",n++)),F.hard&&D[E]>u){const B=u-n,A=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<A&&i.push(""),_(i,a,u);continue}if(n+D[E]>u&&n>0&&D[E]>0){if(F.wordWrap===!1&&n<u){_(i,a,u);continue}i.push("")}if(n+D[E]>u&&F.wordWrap===!1){_(i,a,u);continue}i[i.length-1]+=a}F.trim!==!1&&(i=i.map(E=>DD(E)));const o=[...i.join(`
435
+ `)];for(const[E,a]of o.entries()){if(e+=a,p.has(a)){const{groups:B}=new RegExp(`(?:\\${dist_W}(?<code>\\d+)m|\\${w}(?<uri>.*)${b})`).exec(o.slice(E).join(""))||{groups:{}};if(B.code!==void 0){const A=Number.parseFloat(B.code);s=A===J?void 0:A}else B.uri!==void 0&&(C=B.uri.length===0?void 0:B.uri)}const n=q.codes.get(Number(s));o[E+1]===`
436
+ `?(C&&(e+=dist_j("")),s&&n&&(e+=N(n))):a===`
437
+ `&&(s&&n&&(e+=N(s)),C&&(e+=dist_j(C)))}return e};function P(t,u,F){return String(t).normalize().replace(/\r\n/g,`
438
+ `).split(`
439
+ `).map(e=>uD(e,u,F)).join(`
440
+ `)}function FD(t,u){if(t===u)return;const F=t.split(`
441
+ `),e=u.split(`
442
+ `),s=[];for(let C=0;C<Math.max(F.length,e.length);C++)F[C]!==e[C]&&s.push(C);return s}const R=Symbol("clack:cancel");function eD(t){return t===R}function g(t,u){t.isTTY&&t.setRawMode(u)}const V=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),tD=new Set(["up","down","left","right","space","enter"]);class h{constructor({render:u,input:F=external_node_process_.stdin,output:e=external_node_process_.stdout,...s},C=!0){this._track=!1,this._cursor=0,this.state="initial",this.error="",this.subscribers=new Map,this._prevFrame="",this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=u.bind(this),this._track=C,this.input=F,this.output=e}prompt(){const u=new external_node_tty_namespaceObject.WriteStream(0);return u._write=(F,e,s)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),s()},this.input.pipe(u),this.rl=external_node_readline_namespaceObject.createInterface({input:this.input,output:u,tabSize:2,prompt:"",escapeCodeTimeout:50}),external_node_readline_namespaceObject.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),g(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((F,e)=>{this.once("submit",()=>{this.output.write(src.cursor.show),this.output.off("resize",this.render),g(this.input,!1),F(this.value)}),this.once("cancel",()=>{this.output.write(src.cursor.show),this.output.off("resize",this.render),g(this.input,!1),F(R)})})}on(u,F){const e=this.subscribers.get(u)??[];e.push({cb:F}),this.subscribers.set(u,e)}once(u,F){const e=this.subscribers.get(u)??[];e.push({cb:F,once:!0}),this.subscribers.set(u,e)}emit(u,...F){const e=this.subscribers.get(u)??[],s=[];for(const C of e)C.cb(...F),C.once&&s.push(()=>e.splice(e.indexOf(C),1));for(const C of s)C()}unsubscribe(){this.subscribers.clear()}onKeypress(u,F){if(this.state==="error"&&(this.state="active"),F?.name&&!this._track&&V.has(F.name)&&this.emit("cursor",V.get(F.name)),F?.name&&tD.has(F.name)&&this.emit("cursor",F.name),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u&&this.emit("key",u.toLowerCase()),F?.name==="return"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}u===""&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
443
+ `),g(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=P(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
444
+ `).length-1;this.output.write(src.cursor.move(-999,u*-1))}render(){const u=P(this._render(this)??"",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(src.cursor.hide);else{const F=FD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(src.cursor.move(0,e)),this.output.write(src.erase.lines(1));const s=u.split(`
445
+ `);this.output.write(s[e]),this._prevFrame=u,this.output.write(src.cursor.move(0,s.length-e-1));return}else if(F&&F?.length>1){const e=F[0];this.output.write(src.cursor.move(0,e)),this.output.write(src.erase.down());const C=u.split(`
446
+ `).slice(e);this.output.write(C.join(`
447
+ `)),this._prevFrame=u;return}this.output.write(src.erase.down())}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u}}}class sD extends h{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",F=>{this.output.write(src.cursor.move(0,-1)),this.value=F,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}class CD extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0;const{options:F}=u;this.options=Object.entries(F).flatMap(([e,s])=>[{value:e,group:!0,label:e},...s.map(C=>({...C,group:e}))]),this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===u.cursorAt),0),this.on("cursor",e=>{switch(e){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}getGroupItems(u){return this.options.filter(F=>F.group===u)}isGroupSelected(u){return this.getGroupItems(u).every(e=>this.value.includes(e.value))}toggleValue(){const u=this.options[this.cursor];if(u.group===!0){const F=u.value,e=this.getGroupItems(F);this.isGroupSelected(F)?this.value=this.value.filter(s=>e.findIndex(C=>C.value===s)===-1):this.value=[...this.value,...e.map(s=>s.value)],this.value=Array.from(new Set(this.value))}else{const F=this.value.includes(u.value);this.value=F?this.value.filter(e=>e!==u.value):[...this.value,u.value]}}}class iD extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0,this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on("key",F=>{F==="a"&&this.toggleAll()}),this.on("cursor",F=>{switch(F){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value)}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value]}}class rD extends (/* unused pure expression or super */ null && (h)){constructor({mask:u,...F}){super(F),this.valueWithCursor="",this._mask="\u2022",this._mask=u??"\u2022",this.on("finalize",()=>{this.valueWithCursor=this.masked}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${l.inverse(l.hidden("_"))}`;else{const e=this.masked.slice(0,this.cursor),s=this.masked.slice(this.cursor);this.valueWithCursor=`${e}${l.inverse(s[0])}${s.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}class ED extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0,this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",F=>{switch(F){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class nD extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0,this.options=u.options;const F=this.options.map(({value:[e]})=>e?.toLowerCase());this.cursor=Math.max(F.indexOf(u.initialValue),0),this.on("key",e=>{if(!F.includes(e))return;const s=this.options.find(({value:[C]})=>C?.toLowerCase()===e);s&&(this.value=s.value,this.state="submit",this.emit("submit"))})}}class oD extends h{constructor(u){super(u),this.valueWithCursor="",this.on("finalize",()=>{this.value||(this.value=u.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${picocolors.inverse(picocolors.hidden("_"))}`;else{const F=this.value.slice(0,this.cursor),e=this.value.slice(this.cursor);this.valueWithCursor=`${F}${picocolors.inverse(e[0])}${e.slice(1)}`}})}get cursor(){return this._cursor}}function aD({input:t=external_node_process_.stdin,output:u=external_node_process_.stdout,overwrite:F=!0,hideCursor:e=!0}={}){const s=external_node_readline_namespaceObject.createInterface({input:t,output:u,prompt:"",tabSize:1});external_node_readline_namespaceObject.emitKeypressEvents(t,s),t.isTTY&&t.setRawMode(!0);const C=(D,{name:i})=>{if(String(D)===""&&process.exit(0),!F)return;let E=i==="return"?0:-1,a=i==="return"?-1:0;external_node_readline_namespaceObject.moveCursor(u,E,a,()=>{external_node_readline_namespaceObject.clearLine(u,1,()=>{t.once("keypress",C)})})};return e&&process.stdout.write(src.cursor.hide),t.once("keypress",C),()=>{t.off("keypress",C),e&&process.stdout.write(src.cursor.show),t.isTTY&&t.setRawMode(!1),s.terminal=!1,s.close()}}
448
+
449
+ ;// CONCATENATED MODULE: ./node_modules/@clack/prompts/dist/index.mjs
450
+ function dist_q(){return external_node_process_.platform!=="win32"?external_node_process_.env.TERM!=="linux":Boolean(external_node_process_.env.CI)||Boolean(external_node_process_.env.WT_SESSION)||Boolean(external_node_process_.env.TERMINUS_SUBLIME)||external_node_process_.env.ConEmuTask==="{cmd::Cmder}"||external_node_process_.env.TERM_PROGRAM==="Terminus-Sublime"||external_node_process_.env.TERM_PROGRAM==="vscode"||external_node_process_.env.TERM==="xterm-256color"||external_node_process_.env.TERM==="alacritty"||external_node_process_.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const dist_=dist_q(),o=(r,n)=>dist_?r:n,dist_H=o("\u25C6","*"),dist_I=o("\u25A0","x"),x=o("\u25B2","x"),S=o("\u25C7","o"),dist_K=o("\u250C","T"),a=o("\u2502","|"),d=o("\u2514","\u2014"),dist_b=o("\u25CF",">"),E=o("\u25CB"," "),C=o("\u25FB","[\u2022]"),dist_w=o("\u25FC","[+]"),dist_M=o("\u25FB","[ ]"),dist_U=o("\u25AA","\u2022"),B=o("\u2500","-"),dist_Z=o("\u256E","+"),dist_z=o("\u251C","+"),dist_X=o("\u256F","+"),dist_J=o("\u25CF","\u2022"),dist_Y=o("\u25C6","*"),dist_Q=o("\u25B2","!"),ee=o("\u25A0","x"),y=r=>{switch(r){case"initial":case"active":return picocolors.cyan(dist_H);case"cancel":return picocolors.red(dist_I);case"error":return picocolors.yellow(x);case"submit":return picocolors.green(S)}},te=r=>new oD({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){const n=`${picocolors.gray(a)}
451
+ ${y(this.state)} ${r.message}
452
+ `,i=r.placeholder?picocolors.inverse(r.placeholder[0])+picocolors.dim(r.placeholder.slice(1)):picocolors.inverse(picocolors.hidden("_")),t=this.value?this.valueWithCursor:i;switch(this.state){case"error":return`${n.trim()}
453
+ ${picocolors.yellow(a)} ${t}
454
+ ${picocolors.yellow(d)} ${picocolors.yellow(this.error)}
455
+ `;case"submit":return`${n}${picocolors.gray(a)} ${picocolors.dim(this.value||r.placeholder)}`;case"cancel":return`${n}${picocolors.gray(a)} ${picocolors.strikethrough(picocolors.dim(this.value??""))}${this.value?.trim()?`
456
+ `+picocolors.gray(a):""}`;default:return`${n}${picocolors.cyan(a)} ${t}
457
+ ${picocolors.cyan(d)}
458
+ `}}}).prompt(),re=r=>new j({validate:r.validate,mask:r.mask??dist_U,render(){const n=`${e.gray(a)}
459
+ ${y(this.state)} ${r.message}
460
+ `,i=this.valueWithCursor,t=this.masked;switch(this.state){case"error":return`${n.trim()}
461
+ ${e.yellow(a)} ${t}
462
+ ${e.yellow(d)} ${e.yellow(this.error)}
463
+ `;case"submit":return`${n}${e.gray(a)} ${e.dim(t)}`;case"cancel":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(t??""))}${t?`
464
+ `+e.gray(a):""}`;default:return`${n}${e.cyan(a)} ${i}
465
+ ${e.cyan(d)}
466
+ `}}}).prompt(),se=r=>{const n=r.active??"Yes",i=r.inactive??"No";return new sD({active:n,inactive:i,initialValue:r.initialValue??!0,render(){const t=`${picocolors.gray(a)}
467
+ ${y(this.state)} ${r.message}
468
+ `,s=this.value?n:i;switch(this.state){case"submit":return`${t}${picocolors.gray(a)} ${picocolors.dim(s)}`;case"cancel":return`${t}${picocolors.gray(a)} ${picocolors.strikethrough(picocolors.dim(s))}
469
+ ${picocolors.gray(a)}`;default:return`${t}${picocolors.cyan(a)} ${this.value?`${picocolors.green(dist_b)} ${n}`:`${picocolors.dim(E)} ${picocolors.dim(n)}`} ${picocolors.dim("/")} ${this.value?`${picocolors.dim(E)} ${picocolors.dim(i)}`:`${picocolors.green(dist_b)} ${i}`}
470
+ ${picocolors.cyan(d)}
471
+ `}}}).prompt()},ie=r=>{const n=(t,s)=>{const c=t.label??String(t.value);return s==="active"?`${e.green(dist_b)} ${c} ${t.hint?e.dim(`(${t.hint})`):""}`:s==="selected"?`${e.dim(c)}`:s==="cancelled"?`${e.strikethrough(e.dim(c))}`:`${e.dim(E)} ${e.dim(c)}`};let i=0;return new k({options:r.options,initialValue:r.initialValue,render(){const t=`${e.gray(a)}
472
+ ${y(this.state)} ${r.message}
473
+ `;switch(this.state){case"submit":return`${t}${e.gray(a)} ${n(this.options[this.cursor],"selected")}`;case"cancel":return`${t}${e.gray(a)} ${n(this.options[this.cursor],"cancelled")}
474
+ ${e.gray(a)}`;default:{const s=r.maxItems===void 0?1/0:Math.max(r.maxItems,5);this.cursor>=i+s-3?i=Math.max(Math.min(this.cursor-s+3,this.options.length-s),0):this.cursor<i+2&&(i=Math.max(this.cursor-2,0));const c=s<this.options.length&&i>0,l=s<this.options.length&&i+s<this.options.length;return`${t}${e.cyan(a)} ${this.options.slice(i,i+s).map((u,m,$)=>m===0&&c?e.dim("..."):m===$.length-1&&l?e.dim("..."):n(u,m+i===this.cursor?"active":"inactive")).join(`
475
+ ${e.cyan(a)} `)}
476
+ ${e.cyan(d)}
477
+ `}}}}).prompt()},ne=r=>{const n=(i,t="inactive")=>{const s=i.label??String(i.value);return t==="selected"?`${e.dim(s)}`:t==="cancelled"?`${e.strikethrough(e.dim(s))}`:t==="active"?`${e.bgCyan(e.gray(` ${i.value} `))} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`:`${e.gray(e.bgWhite(e.inverse(` ${i.value} `)))} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`};return new W({options:r.options,initialValue:r.initialValue,render(){const i=`${e.gray(a)}
478
+ ${y(this.state)} ${r.message}
479
+ `;switch(this.state){case"submit":return`${i}${e.gray(a)} ${n(this.options.find(t=>t.value===this.value),"selected")}`;case"cancel":return`${i}${e.gray(a)} ${n(this.options[0],"cancelled")}
480
+ ${e.gray(a)}`;default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>n(t,s===this.cursor?"active":"inactive")).join(`
481
+ ${e.cyan(a)} `)}
482
+ ${e.cyan(d)}
483
+ `}}}).prompt()},ae=r=>{const n=(i,t)=>{const s=i.label??String(i.value);return t==="active"?`${e.cyan(C)} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="selected"?`${e.green(dist_w)} ${e.dim(s)}`:t==="cancelled"?`${e.strikethrough(e.dim(s))}`:t==="active-selected"?`${e.green(dist_w)} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="submitted"?`${e.dim(s)}`:`${e.dim(dist_M)} ${e.dim(s)}`};return new D({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.
484
+ ${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(" space ")))} to select, ${e.gray(e.bgWhite(e.inverse(" enter ")))} to submit`))}`},render(){let i=`${e.gray(a)}
485
+ ${y(this.state)} ${r.message}
486
+ `;switch(this.state){case"submit":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,"submitted")).join(e.dim(", "))||e.dim("none")}`;case"cancel":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,"cancelled")).join(e.dim(", "));return`${i}${e.gray(a)} ${t.trim()?`${t}
487
+ ${e.gray(a)}`:""}`}case"error":{const t=this.error.split(`
488
+ `).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`
489
+ `);return i+e.yellow(a)+" "+this.options.map((s,c)=>{const l=this.value.includes(s.value),u=c===this.cursor;return u&&l?n(s,"active-selected"):l?n(s,"selected"):n(s,u?"active":"inactive")}).join(`
490
+ ${e.yellow(a)} `)+`
491
+ `+t+`
492
+ `}default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>{const c=this.value.includes(t.value),l=s===this.cursor;return l&&c?n(t,"active-selected"):c?n(t,"selected"):n(t,l?"active":"inactive")}).join(`
493
+ ${e.cyan(a)} `)}
494
+ ${e.cyan(d)}
495
+ `}}}).prompt()},ce=r=>{const n=(i,t,s=[])=>{const c=i.label??String(i.value),l=typeof i.group=="string",u=l&&(s[s.indexOf(i)+1]??{group:!0}),m=l&&u.group===!0,$=l?`${m?d:a} `:"";return t==="active"?`${e.dim($)}${e.cyan(C)} ${c} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="group-active"?`${$}${e.cyan(C)} ${e.dim(c)}`:t==="group-active-selected"?`${$}${e.green(dist_w)} ${e.dim(c)}`:t==="selected"?`${e.dim($)}${e.green(dist_w)} ${e.dim(c)}`:t==="cancelled"?`${e.strikethrough(e.dim(c))}`:t==="active-selected"?`${e.dim($)}${e.green(dist_w)} ${c} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="submitted"?`${e.dim(c)}`:`${e.dim($)}${e.dim(dist_M)} ${e.dim(c)}`};return new L({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.
496
+ ${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(" space ")))} to select, ${e.gray(e.bgWhite(e.inverse(" enter ")))} to submit`))}`},render(){let i=`${e.gray(a)}
497
+ ${y(this.state)} ${r.message}
498
+ `;switch(this.state){case"submit":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,"submitted")).join(e.dim(", "))}`;case"cancel":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,"cancelled")).join(e.dim(", "));return`${i}${e.gray(a)} ${t.trim()?`${t}
499
+ ${e.gray(a)}`:""}`}case"error":{const t=this.error.split(`
500
+ `).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`
501
+ `);return`${i}${e.yellow(a)} ${this.options.map((s,c,l)=>{const u=this.value.includes(s.value)||s.group===!0&&this.isGroupSelected(`${s.value}`),m=c===this.cursor;return!m&&typeof s.group=="string"&&this.options[this.cursor].value===s.group?n(s,u?"group-active-selected":"group-active",l):m&&u?n(s,"active-selected",l):u?n(s,"selected",l):n(s,m?"active":"inactive",l)}).join(`
502
+ ${e.yellow(a)} `)}
503
+ ${t}
504
+ `}default:return`${i}${e.cyan(a)} ${this.options.map((t,s,c)=>{const l=this.value.includes(t.value)||t.group===!0&&this.isGroupSelected(`${t.value}`),u=s===this.cursor;return!u&&typeof t.group=="string"&&this.options[this.cursor].value===t.group?n(t,l?"group-active-selected":"group-active",c):u&&l?n(t,"active-selected",c):l?n(t,"selected",c):n(t,u?"active":"inactive",c)}).join(`
505
+ ${e.cyan(a)} `)}
506
+ ${e.cyan(d)}
507
+ `}}}).prompt()},dist_R=r=>r.replace(me(),""),le=(r="",n="")=>{const i=`
508
+ ${r}
509
+ `.split(`
510
+ `),t=dist_R(n).length,s=Math.max(i.reduce((l,u)=>(u=dist_R(u),u.length>l?u.length:l),0),t)+2,c=i.map(l=>`${e.gray(a)} ${e.dim(l)}${" ".repeat(s-dist_R(l).length)}${e.gray(a)}`).join(`
511
+ `);process.stdout.write(`${e.gray(a)}
512
+ ${e.green(S)} ${e.reset(n)} ${e.gray(B.repeat(Math.max(s-t-1,1))+dist_Z)}
513
+ ${c}
514
+ ${e.gray(dist_z+B.repeat(s+2)+dist_X)}
515
+ `)},ue=(r="")=>{process.stdout.write(`${picocolors.gray(d)} ${picocolors.red(r)}
516
+
517
+ `)},oe=(r="")=>{process.stdout.write(`${picocolors.gray(dist_K)} ${r}
518
+ `)},$e=(r="")=>{process.stdout.write(`${e.gray(a)}
519
+ ${e.gray(d)} ${r}
520
+
521
+ `)},f={message:(r="",{symbol:n=picocolors.gray(a)}={})=>{const i=[`${picocolors.gray(a)}`];if(r){const[t,...s]=r.split(`
522
+ `);i.push(`${n} ${t}`,...s.map(c=>`${picocolors.gray(a)} ${c}`))}process.stdout.write(`${i.join(`
523
+ `)}
524
+ `)},info:r=>{f.message(r,{symbol:picocolors.blue(dist_J)})},success:r=>{f.message(r,{symbol:picocolors.green(dist_Y)})},step:r=>{f.message(r,{symbol:picocolors.green(S)})},warn:r=>{f.message(r,{symbol:picocolors.yellow(dist_Q)})},warning:r=>{f.warn(r)},error:r=>{f.message(r,{symbol:picocolors.red(ee)})}},de=()=>{const r=dist_?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],n=dist_?80:120;let i,t,s=!1,c="";const l=(v="")=>{s=!0,i=aD(),c=v.replace(/\.+$/,""),process.stdout.write(`${picocolors.gray(a)}
525
+ `);let g=0,p=0;t=setInterval(()=>{const O=picocolors.magenta(r[g]),P=".".repeat(Math.floor(p)).slice(0,3);process.stdout.write(src.cursor.move(-999,0)),process.stdout.write(src.erase.down(1)),process.stdout.write(`${O} ${c}${P}`),g=g+1<r.length?g+1:0,p=p<r.length?p+.125:0},n)},u=(v="",g=0)=>{c=v??c,s=!1,clearInterval(t);const p=g===0?picocolors.green(S):g===1?picocolors.red(dist_I):picocolors.red(x);process.stdout.write(src.cursor.move(-999,0)),process.stdout.write(src.erase.down(1)),process.stdout.write(`${p} ${c}
526
+ `),i()},m=(v="")=>{c=v??c},$=v=>{const g=v>1?"Something went wrong":"Canceled";s&&u(g,v)};return process.on("uncaughtExceptionMonitor",()=>$(2)),process.on("unhandledRejection",()=>$(2)),process.on("SIGINT",()=>$(1)),process.on("SIGTERM",()=>$(1)),process.on("exit",$),{start:l,stop:u,message:m}};function me(){const r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(r,"g")}const he=async(r,n)=>{const i={},t=Object.keys(r);for(const s of t){const c=r[s],l=await c({results:i})?.catch(u=>{throw u});if(typeof n?.onCancel=="function"&&eD(l)){i[s]="canceled",n.onCancel({results:i});continue}i[s]=l}return i};
527
+
528
+
529
+ /***/ }),
530
+
531
+ /***/ 133:
532
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
533
+
534
+
535
+ // EXPORTS
536
+ __nccwpck_require__.d(__webpack_exports__, {
537
+ "Z": () => (/* binding */ getPorts)
538
+ });
539
+
540
+ // UNUSED EXPORTS: portNumbers
541
+
542
+ ;// CONCATENATED MODULE: external "node:net"
543
+ const external_node_net_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net");
544
+ ;// CONCATENATED MODULE: external "node:os"
545
+ const external_node_os_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:os");
546
+ ;// CONCATENATED MODULE: ./node_modules/get-port/index.js
547
+
548
+
549
+
550
+ class Locked extends Error {
551
+ constructor(port) {
552
+ super(`${port} is locked`);
553
+ }
554
+ }
555
+
556
+ const lockedPorts = {
557
+ old: new Set(),
558
+ young: new Set(),
559
+ };
560
+
561
+ // On this interval, the old locked ports are discarded,
562
+ // the young locked ports are moved to old locked ports,
563
+ // and a new young set for locked ports are created.
564
+ const releaseOldLockedPortsIntervalMs = 1000 * 15;
565
+
566
+ const minPort = 1024;
567
+ const maxPort = 65_535;
568
+
569
+ // Lazily create timeout on first use
570
+ let timeout;
571
+
572
+ const getLocalHosts = () => {
573
+ const interfaces = external_node_os_namespaceObject.networkInterfaces();
574
+
575
+ // Add undefined value for createServer function to use default host,
576
+ // and default IPv4 host in case createServer defaults to IPv6.
577
+ const results = new Set([undefined, '0.0.0.0']);
578
+
579
+ for (const _interface of Object.values(interfaces)) {
580
+ for (const config of _interface) {
581
+ results.add(config.address);
582
+ }
583
+ }
584
+
585
+ return results;
586
+ };
587
+
588
+ const checkAvailablePort = options =>
589
+ new Promise((resolve, reject) => {
590
+ const server = external_node_net_namespaceObject.createServer();
591
+ server.unref();
592
+ server.on('error', reject);
593
+
594
+ server.listen(options, () => {
595
+ const {port} = server.address();
596
+ server.close(() => {
597
+ resolve(port);
598
+ });
599
+ });
600
+ });
601
+
602
+ const getAvailablePort = async (options, hosts) => {
603
+ if (options.host || options.port === 0) {
604
+ return checkAvailablePort(options);
605
+ }
606
+
607
+ for (const host of hosts) {
608
+ try {
609
+ await checkAvailablePort({port: options.port, host}); // eslint-disable-line no-await-in-loop
610
+ } catch (error) {
611
+ if (!['EADDRNOTAVAIL', 'EINVAL'].includes(error.code)) {
612
+ throw error;
613
+ }
614
+ }
615
+ }
616
+
617
+ return options.port;
618
+ };
619
+
620
+ const portCheckSequence = function * (ports) {
621
+ if (ports) {
622
+ yield * ports;
623
+ }
624
+
625
+ yield 0; // Fall back to 0 if anything else failed
626
+ };
627
+
628
+ async function getPorts(options) {
629
+ let ports;
630
+ let exclude = new Set();
631
+
632
+ if (options) {
633
+ if (options.port) {
634
+ ports = typeof options.port === 'number' ? [options.port] : options.port;
635
+ }
636
+
637
+ if (options.exclude) {
638
+ const excludeIterable = options.exclude;
639
+
640
+ if (typeof excludeIterable[Symbol.iterator] !== 'function') {
641
+ throw new TypeError('The `exclude` option must be an iterable.');
642
+ }
643
+
644
+ for (const element of excludeIterable) {
645
+ if (typeof element !== 'number') {
646
+ throw new TypeError('Each item in the `exclude` option must be a number corresponding to the port you want excluded.');
647
+ }
648
+
649
+ if (!Number.isSafeInteger(element)) {
650
+ throw new TypeError(`Number ${element} in the exclude option is not a safe integer and can't be used`);
651
+ }
652
+ }
653
+
654
+ exclude = new Set(excludeIterable);
655
+ }
656
+ }
657
+
658
+ if (timeout === undefined) {
659
+ timeout = setTimeout(() => {
660
+ timeout = undefined;
661
+
662
+ lockedPorts.old = lockedPorts.young;
663
+ lockedPorts.young = new Set();
664
+ }, releaseOldLockedPortsIntervalMs);
665
+
666
+ // Does not exist in some environments (Electron, Jest jsdom env, browser, etc).
667
+ if (timeout.unref) {
668
+ timeout.unref();
669
+ }
670
+ }
671
+
672
+ const hosts = getLocalHosts();
673
+
674
+ for (const port of portCheckSequence(ports)) {
675
+ try {
676
+ if (exclude.has(port)) {
677
+ continue;
678
+ }
679
+
680
+ let availablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop
681
+ while (lockedPorts.old.has(availablePort) || lockedPorts.young.has(availablePort)) {
682
+ if (port !== 0) {
683
+ throw new Locked(port);
684
+ }
685
+
686
+ availablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop
687
+ }
688
+
689
+ lockedPorts.young.add(availablePort);
690
+
691
+ return availablePort;
692
+ } catch (error) {
693
+ if (!['EADDRINUSE', 'EACCES'].includes(error.code) && !(error instanceof Locked)) {
694
+ throw error;
695
+ }
696
+ }
697
+ }
698
+
699
+ throw new Error('No available ports found');
700
+ }
701
+
702
+ function portNumbers(from, to) {
703
+ if (!Number.isInteger(from) || !Number.isInteger(to)) {
704
+ throw new TypeError('`from` and `to` must be integer numbers');
705
+ }
706
+
707
+ if (from < minPort || from > maxPort) {
708
+ throw new RangeError(`'from' must be between ${minPort} and ${maxPort}`);
709
+ }
710
+
711
+ if (to < minPort || to > maxPort) {
712
+ throw new RangeError(`'to' must be between ${minPort} and ${maxPort}`);
713
+ }
714
+
715
+ if (from > to) {
716
+ throw new RangeError('`to` must be greater than or equal to `from`');
717
+ }
718
+
719
+ const generator = function * (from, to) {
720
+ for (let port = from; port <= to; port++) {
721
+ yield port;
722
+ }
723
+ };
724
+
725
+ return generator(from, to);
726
+ }
727
+
728
+
729
+ /***/ }),
730
+
731
+ /***/ 50:
732
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
733
+
734
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
735
+ /* harmony export */ "Z": () => (/* binding */ pDefer)
736
+ /* harmony export */ });
737
+ function pDefer() {
738
+ const deferred = {};
739
+
740
+ deferred.promise = new Promise((resolve, reject) => {
741
+ deferred.resolve = resolve;
742
+ deferred.reject = reject;
743
+ });
744
+
745
+ return deferred;
746
+ }
747
+
748
+
749
+ /***/ })
750
+
751
+ /******/ });
752
+ /************************************************************************/
753
+ /******/ // The module cache
754
+ /******/ var __webpack_module_cache__ = {};
755
+ /******/
756
+ /******/ // The require function
757
+ /******/ function __nccwpck_require__(moduleId) {
758
+ /******/ // Check if module is in cache
759
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
760
+ /******/ if (cachedModule !== undefined) {
761
+ /******/ return cachedModule.exports;
762
+ /******/ }
763
+ /******/ // Create a new module (and put it into the cache)
764
+ /******/ var module = __webpack_module_cache__[moduleId] = {
765
+ /******/ // no module.id needed
766
+ /******/ // no module.loaded needed
767
+ /******/ exports: {}
768
+ /******/ };
769
+ /******/
770
+ /******/ // Execute the module function
771
+ /******/ var threw = true;
772
+ /******/ try {
773
+ /******/ __webpack_modules__[moduleId](module, module.exports, __nccwpck_require__);
774
+ /******/ threw = false;
775
+ /******/ } finally {
776
+ /******/ if(threw) delete __webpack_module_cache__[moduleId];
777
+ /******/ }
778
+ /******/
779
+ /******/ // Return the exports of the module
780
+ /******/ return module.exports;
781
+ /******/ }
782
+ /******/
783
+ /************************************************************************/
784
+ /******/ /* webpack/runtime/async module */
785
+ /******/ (() => {
786
+ /******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__";
787
+ /******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__";
788
+ /******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__";
789
+ /******/ var resolveQueue = (queue) => {
790
+ /******/ if(queue && !queue.d) {
791
+ /******/ queue.d = 1;
792
+ /******/ queue.forEach((fn) => (fn.r--));
793
+ /******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));
794
+ /******/ }
795
+ /******/ }
796
+ /******/ var wrapDeps = (deps) => (deps.map((dep) => {
797
+ /******/ if(dep !== null && typeof dep === "object") {
798
+ /******/ if(dep[webpackQueues]) return dep;
799
+ /******/ if(dep.then) {
800
+ /******/ var queue = [];
801
+ /******/ queue.d = 0;
802
+ /******/ dep.then((r) => {
803
+ /******/ obj[webpackExports] = r;
804
+ /******/ resolveQueue(queue);
805
+ /******/ }, (e) => {
806
+ /******/ obj[webpackError] = e;
807
+ /******/ resolveQueue(queue);
808
+ /******/ });
809
+ /******/ var obj = {};
810
+ /******/ obj[webpackQueues] = (fn) => (fn(queue));
811
+ /******/ return obj;
812
+ /******/ }
813
+ /******/ }
814
+ /******/ var ret = {};
815
+ /******/ ret[webpackQueues] = x => {};
816
+ /******/ ret[webpackExports] = dep;
817
+ /******/ return ret;
818
+ /******/ }));
819
+ /******/ __nccwpck_require__.a = (module, body, hasAwait) => {
820
+ /******/ var queue;
821
+ /******/ hasAwait && ((queue = []).d = 1);
822
+ /******/ var depQueues = new Set();
823
+ /******/ var exports = module.exports;
824
+ /******/ var currentDeps;
825
+ /******/ var outerResolve;
826
+ /******/ var reject;
827
+ /******/ var promise = new Promise((resolve, rej) => {
828
+ /******/ reject = rej;
829
+ /******/ outerResolve = resolve;
830
+ /******/ });
831
+ /******/ promise[webpackExports] = exports;
832
+ /******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {}));
833
+ /******/ module.exports = promise;
834
+ /******/ body((deps) => {
835
+ /******/ currentDeps = wrapDeps(deps);
836
+ /******/ var fn;
837
+ /******/ var getResult = () => (currentDeps.map((d) => {
838
+ /******/ if(d[webpackError]) throw d[webpackError];
839
+ /******/ return d[webpackExports];
840
+ /******/ }))
841
+ /******/ var promise = new Promise((resolve) => {
842
+ /******/ fn = () => (resolve(getResult));
843
+ /******/ fn.r = 0;
844
+ /******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));
845
+ /******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue)));
846
+ /******/ });
847
+ /******/ return fn.r ? promise : getResult();
848
+ /******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));
849
+ /******/ queue && (queue.d = 0);
850
+ /******/ };
851
+ /******/ })();
852
+ /******/
853
+ /******/ /* webpack/runtime/define property getters */
854
+ /******/ (() => {
855
+ /******/ // define getter functions for harmony exports
856
+ /******/ __nccwpck_require__.d = (exports, definition) => {
857
+ /******/ for(var key in definition) {
858
+ /******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) {
859
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
860
+ /******/ }
861
+ /******/ }
862
+ /******/ };
863
+ /******/ })();
864
+ /******/
865
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
866
+ /******/ (() => {
867
+ /******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
868
+ /******/ })();
869
+ /******/
870
+ /******/ /* webpack/runtime/compat */
871
+ /******/
872
+ /******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = new URL('.', import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/) ? 1 : 0, -1) + "/";
873
+ /******/
874
+ /************************************************************************/
875
+ /******/
876
+ /******/ // startup
877
+ /******/ // Load entry module and return exports
878
+ /******/ // This entry module used 'module' so it can't be inlined
879
+ /******/ var __webpack_exports__ = __nccwpck_require__(724);
880
+ /******/ __webpack_exports__ = await __webpack_exports__;
881
+ /******/
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chrome-webstore-upload-keys",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "CLI tool to generate OAuth keys for the Chrome Web Store",
5
5
  "keywords": [
6
6
  "chrome",
@@ -18,21 +18,22 @@
18
18
  "license": "MIT",
19
19
  "author": "Federico Brigante <me@fregante.com> (https://fregante.com)",
20
20
  "type": "module",
21
- "bin": "cli.js",
21
+ "bin": "./dist/cli.js",
22
22
  "scripts": {
23
- "test": "xo",
24
- "start": "./cli.js"
23
+ "build": "ncc build cli.js",
24
+ "prepack": "npm run build",
25
+ "start": "ncc run cli.js",
26
+ "test": "xo"
25
27
  },
26
- "engines": {
27
- "node": ">=18"
28
- },
29
- "dependencies": {
28
+ "devDependencies": {
30
29
  "@clack/prompts": "^0.7.0",
30
+ "@vercel/ncc": "^0.38.1",
31
31
  "get-port": "^7.0.0",
32
- "open": "^9.1.0",
33
- "p-defer": "^4.0.0"
34
- },
35
- "devDependencies": {
32
+ "openurl": "^1.1.1",
33
+ "p-defer": "^4.0.0",
36
34
  "xo": "^0.56.0"
35
+ },
36
+ "engines": {
37
+ "node": ">=18"
37
38
  }
38
39
  }
package/readme.md CHANGED
@@ -49,14 +49,15 @@ You can follow this complete guide or the official-but-partial one at: https://d
49
49
  > <img width="771" alt="Publish app" src="https://user-images.githubusercontent.com/27696701/114265946-2da2a280-9a26-11eb-9567-c4e00f572500.png">
50
50
 
51
51
  0. Run this CLI tool to generate the required `refreshToken`
52
- ```sh
53
- npx chrome-webstore-upload-keys
54
- ```
55
- or
56
- ```sh
57
- bunx chrome-webstore-upload-keys
58
- ```
59
52
 
53
+ ```sh
54
+ npx chrome-webstore-upload-keys
55
+ ```
56
+ or
57
+ ```sh
58
+ bunx chrome-webstore-upload-keys
59
+ ```
60
+
60
61
  > <img width="771" alt="chrome-webstore-upload-keys demo" src="./demo.gif">
61
62
 
62
63
  9001. Done. Now you should have ✅ `clientId`, ✅ `clientSecret` and ✅ `refreshToken`. You can use these for all your extensions, but don't share them!