ibrohm commited on
Commit
db0be24
·
1 Parent(s): 7560d9e

feat(push): Add firebase push notification system via telegram bot

Browse files
Files changed (5) hide show
  1. bot/bot.js +49 -0
  2. bot/firebase.js +51 -0
  3. index.js +4 -0
  4. package-lock.json +1793 -26
  5. package.json +1 -0
bot/bot.js CHANGED
@@ -106,6 +106,7 @@ const getMainMenu = () => {
106
  [Markup.button.callback('📁 Kategoriyalar', 'action_categories'), Markup.button.callback('🔍 Qidirish', 'action_search')],
107
  [Markup.button.callback('📋 Buyurtmalar', 'action_orders_0'), Markup.button.callback('📊 Statistika', 'action_stats')],
108
  [Markup.button.callback('🏞 Reklamalar', 'action_banners'), Markup.button.callback('📥 Excel yuklash', 'action_export_excel')],
 
109
  [Markup.button.callback('❓ Yordam', 'action_help')]
110
  ]);
111
  };
@@ -1175,6 +1176,43 @@ if (process.env.BOT_TOKEN && process.env.BOT_TOKEN !== 'YOUR_TELEGRAM_BOT_TOKEN'
1175
  ctx.reply('✅ Tovar saqlandi!', getMainMenu());
1176
  } catch(e) {}
1177
  delete appState[userId];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1178
  }
1179
  });
1180
 
@@ -1210,6 +1248,10 @@ if (process.env.BOT_TOKEN && process.env.BOT_TOKEN !== 'YOUR_TELEGRAM_BOT_TOKEN'
1210
  // Banner wizard Step 1 → go to step 2, ask for title
1211
  appState[userId] = { ...state, step: 'banner_wizard_title', bannerImageUrl: imgUrl };
1212
  ctx.reply(`📸 *YANGI BANNER* (2/4)\n${thinLine}\n\n📌 Banner uchun sarlavha yozing:\n\n_Masalan: "Yozgi Chegirma 50%"_\n\nO'tkazish uchun "yoq" deb yozing.`, { parse_mode: 'Markdown' });
 
 
 
 
1213
  } else if(state.step === 'adding_banner') {
1214
  // Eski usul (backward compat)
1215
  const bannerCount = await Banner.countDocuments({ isActive: true });
@@ -1219,6 +1261,13 @@ if (process.env.BOT_TOKEN && process.env.BOT_TOKEN !== 'YOUR_TELEGRAM_BOT_TOKEN'
1219
  }
1220
  });
1221
 
 
 
 
 
 
 
 
1222
  // Banner wizard — Havola tanlash callbacklari
1223
  bot.action('bwiz_link_none', async (ctx) => {
1224
  const state = appState[ctx.from.id];
 
106
  [Markup.button.callback('📁 Kategoriyalar', 'action_categories'), Markup.button.callback('🔍 Qidirish', 'action_search')],
107
  [Markup.button.callback('📋 Buyurtmalar', 'action_orders_0'), Markup.button.callback('📊 Statistika', 'action_stats')],
108
  [Markup.button.callback('🏞 Reklamalar', 'action_banners'), Markup.button.callback('📥 Excel yuklash', 'action_export_excel')],
109
+ [Markup.button.callback('📢 Push Xabar Tarqatish', 'action_send_push')],
110
  [Markup.button.callback('❓ Yordam', 'action_help')]
111
  ]);
112
  };
 
1176
  ctx.reply('✅ Tovar saqlandi!', getMainMenu());
1177
  } catch(e) {}
1178
  delete appState[userId];
1179
+ return;
1180
+ }
1181
+
1182
+ // --- PUSH XABARNOMA ---
1183
+ if (state.step === 'push_title') {
1184
+ appState[userId] = { step: 'push_message', pushTitle: text };
1185
+ ctx.reply('📝 2-qadam: Xabar matnini yozing:');
1186
+ return;
1187
+ }
1188
+ if (state.step === 'push_message') {
1189
+ appState[userId] = { step: 'push_image', pushTitle: state.pushTitle, pushMessage: text };
1190
+ ctx.reply('🖼 3-qadam: Ilovada chiqadigan rasm URL tasvirini yozing (yoki menga hozir rasm yuboring).\n\nAgar rasm kerakmas bo\'lsa "yoq" deb yozing:', { reply_markup: { force_reply: true } });
1191
+ return;
1192
+ }
1193
+ if (state.step === 'push_image') {
1194
+ const pushImage = text.toLowerCase() === 'yoq' ? '' : text;
1195
+ state.pushImage = pushImage;
1196
+ appState[userId] = { ...state, step: 'push_confirm' };
1197
+ ctx.reply(`📢 Siz quyidagi xabarni BARCHA mijoz telefonlariga (Push) yubormoqchisiz:\n\n*Sarlavha:* ${state.pushTitle}\n*Matn:* ${state.pushMessage}\n*Rasm:* ${pushImage ? 'Ulangan' : 'Yo\'q'}\n\n✅ Xabarni tasdiqlaysizmi? (ha / yo'q)`, { parse_mode: 'Markdown' });
1198
+ return;
1199
+ }
1200
+ if (state.step === 'push_confirm') {
1201
+ if (text.toLowerCase() === 'ha') {
1202
+ ctx.reply('⏳ Xabar yuborilmoqda...');
1203
+ const { sendPushToAll } = require('./firebase');
1204
+ sendPushToAll(state.pushTitle, state.pushMessage, state.pushImage).then(res => {
1205
+ if (res.success) {
1206
+ ctx.reply('✅ Xabar muvaffaqiyatli HAMMAGA tarqatildi!', getMainMenu());
1207
+ } else {
1208
+ ctx.reply('❌ Xatolik yuz berdi: ' + res.error, getMainMenu());
1209
+ }
1210
+ });
1211
+ } else {
1212
+ ctx.reply('❌ Bekor qilindi.', getMainMenu());
1213
+ }
1214
+ delete appState[userId];
1215
+ return;
1216
  }
1217
  });
1218
 
 
1248
  // Banner wizard Step 1 → go to step 2, ask for title
1249
  appState[userId] = { ...state, step: 'banner_wizard_title', bannerImageUrl: imgUrl };
1250
  ctx.reply(`📸 *YANGI BANNER* (2/4)\n${thinLine}\n\n📌 Banner uchun sarlavha yozing:\n\n_Masalan: "Yozgi Chegirma 50%"_\n\nO'tkazish uchun "yoq" deb yozing.`, { parse_mode: 'Markdown' });
1251
+ } else if(state.step === 'push_image') {
1252
+ state.pushImage = imgUrl;
1253
+ appState[userId] = { ...state, step: 'push_confirm' };
1254
+ ctx.reply(`📢 Siz quyidagi xabarni BARCHA mijoz telefonlariga (Push) yubormoqchisiz:\n\n*Sarlavha:* ${state.pushTitle}\n*Matn:* ${state.pushMessage}\n*Rasm:* Ulangan\n\n✅ Xabarni tasdiqlaysizmi? (ha / yo'q)`, { parse_mode: 'Markdown' });
1255
  } else if(state.step === 'adding_banner') {
1256
  // Eski usul (backward compat)
1257
  const bannerCount = await Banner.countDocuments({ isActive: true });
 
1261
  }
1262
  });
1263
 
1264
+ bot.action('action_send_push', (ctx) => {
1265
+ if (!isAdmin(ctx)) return;
1266
+ appState[ctx.from.id] = { step: 'push_title' };
1267
+ ctx.answerCbQuery();
1268
+ ctx.reply('📢 *Xabarnoma yuborish (Push)*\n\n1-qadam: Xabar sarlavhasini yozing (Masalan: 🚨 YANGI CHEGIRMA!):', { parse_mode: 'Markdown', reply_markup: { force_reply: true } });
1269
+ });
1270
+
1271
  // Banner wizard — Havola tanlash callbacklari
1272
  bot.action('bwiz_link_none', async (ctx) => {
1273
  const state = appState[ctx.from.id];
bot/firebase.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const admin = require('firebase-admin');
2
+
3
+ function initFirebase() {
4
+ try {
5
+ if (!process.env.FIREBASE_SERVICE_ACCOUNT) {
6
+ console.error("FCM Error: FIREBASE_SERVICE_ACCOUNT secret topilmadi!");
7
+ return false;
8
+ }
9
+
10
+ const serviceAccount = JSON.parse(process.env.FIREBASE_SERVICE_ACCOUNT);
11
+
12
+ admin.initializeApp({
13
+ credential: admin.credential.cert(serviceAccount)
14
+ });
15
+
16
+ console.log("Firebase Admin SDK muvaffaqiyatli ulandi!");
17
+ return true;
18
+ } catch (e) {
19
+ console.error("Firebase ulanish xatosi:", e.message);
20
+ return false;
21
+ }
22
+ }
23
+
24
+ async function sendPushToAll(title, message, imageUrl = null) {
25
+ if (!admin.apps.length) {
26
+ console.error("FCM ulanmagan!");
27
+ return { success: false, error: "FCM ulanmagan" };
28
+ }
29
+
30
+ const payload = {
31
+ notification: {
32
+ title: title,
33
+ body: message,
34
+ image: imageUrl || undefined
35
+ },
36
+ topic: "promo"
37
+ };
38
+
39
+ try {
40
+ const response = await admin.messaging().send(payload);
41
+ return { success: true, response };
42
+ } catch (error) {
43
+ console.error("Push yuborishda xatolik:", error);
44
+ return { success: false, error: error.message };
45
+ }
46
+ }
47
+
48
+ module.exports = {
49
+ initFirebase,
50
+ sendPushToAll
51
+ };
index.js CHANGED
@@ -13,6 +13,10 @@ app.use(express.json());
13
  // DB ga ulanish
14
  connectDB();
15
 
 
 
 
 
16
  // DB ulanishi tugagach 3 soniyadan so'ng kategoriyalarni tekshirib kiritish
17
  setTimeout(async () => {
18
  try {
 
13
  // DB ga ulanish
14
  connectDB();
15
 
16
+ // Firebase Init
17
+ const { initFirebase } = require('./bot/firebase');
18
+ initFirebase();
19
+
20
  // DB ulanishi tugagach 3 soniyadan so'ng kategoriyalarni tekshirib kiritish
21
  setTimeout(async () => {
22
  try {
package-lock.json CHANGED
@@ -13,12 +13,254 @@
13
  "cors": "^2.8.6",
14
  "dotenv": "^17.4.1",
15
  "express": "^5.2.1",
 
16
  "mongoose": "^9.4.1",
17
  "multer": "^2.1.1",
18
  "node-fetch": "^2.7.0",
19
  "telegraf": "^4.16.3"
20
  }
21
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  "node_modules/@google/generative-ai": {
23
  "version": "0.24.1",
24
  "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.24.1.tgz",
@@ -28,6 +270,69 @@
28
  "node": ">=18.0.0"
29
  }
30
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  "node_modules/@mongodb-js/saslprep": {
32
  "version": "1.4.6",
33
  "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.6.tgz",
@@ -37,12 +342,165 @@
37
  "sparse-bitfield": "^3.0.3"
38
  }
39
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  "node_modules/@telegraf/types": {
41
  "version": "7.1.0",
42
  "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz",
43
  "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==",
44
  "license": "MIT"
45
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  "node_modules/@types/webidl-conversions": {
47
  "version": "7.0.3",
48
  "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
@@ -83,12 +541,103 @@
83
  "node": ">= 0.6"
84
  }
85
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  "node_modules/append-field": {
87
  "version": "1.0.0",
88
  "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
89
  "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==",
90
  "license": "MIT"
91
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  "node_modules/body-parser": {
93
  "version": "2.2.2",
94
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
@@ -138,6 +687,12 @@
138
  "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
139
  "license": "MIT"
140
  },
 
 
 
 
 
 
141
  "node_modules/buffer-fill": {
142
  "version": "1.0.0",
143
  "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
@@ -199,25 +754,73 @@
199
  "url": "https://github.com/sponsors/ljharb"
200
  }
201
  },
202
- "node_modules/concat-stream": {
203
- "version": "2.0.0",
204
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
205
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
206
- "engines": [
207
- "node >= 6.0"
208
- ],
209
- "license": "MIT",
210
  "dependencies": {
211
- "buffer-from": "^1.0.0",
212
- "inherits": "^2.0.3",
213
- "readable-stream": "^3.0.2",
214
- "typedarray": "^0.0.6"
 
 
215
  }
216
  },
217
- "node_modules/content-disposition": {
218
- "version": "1.0.1",
219
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
220
- "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  "license": "MIT",
222
  "engines": {
223
  "node": ">=18"
@@ -271,6 +874,15 @@
271
  "url": "https://opencollective.com/express"
272
  }
273
  },
 
 
 
 
 
 
 
 
 
274
  "node_modules/debug": {
275
  "version": "4.4.3",
276
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@@ -288,6 +900,16 @@
288
  }
289
  }
290
  },
 
 
 
 
 
 
 
 
 
 
291
  "node_modules/depd": {
292
  "version": "2.0.0",
293
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -323,12 +945,41 @@
323
  "node": ">= 0.4"
324
  }
325
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  "node_modules/ee-first": {
327
  "version": "1.1.1",
328
  "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
329
  "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
330
  "license": "MIT"
331
  },
 
 
 
 
 
 
 
332
  "node_modules/encodeurl": {
333
  "version": "2.0.0",
334
  "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
@@ -338,6 +989,16 @@
338
  "node": ">= 0.8"
339
  }
340
  },
 
 
 
 
 
 
 
 
 
 
341
  "node_modules/es-define-property": {
342
  "version": "1.0.1",
343
  "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
@@ -368,6 +1029,32 @@
368
  "node": ">= 0.4"
369
  }
370
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  "node_modules/escape-html": {
372
  "version": "1.0.3",
373
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -435,6 +1122,99 @@
435
  "url": "https://opencollective.com/express"
436
  }
437
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
  "node_modules/finalhandler": {
439
  "version": "2.1.1",
440
  "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
@@ -456,6 +1236,84 @@
456
  "url": "https://opencollective.com/express"
457
  }
458
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  "node_modules/forwarded": {
460
  "version": "0.2.0",
461
  "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -483,6 +1341,54 @@
483
  "url": "https://github.com/sponsors/ljharb"
484
  }
485
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
486
  "node_modules/get-intrinsic": {
487
  "version": "1.3.0",
488
  "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@@ -520,6 +1426,159 @@
520
  "node": ">= 0.4"
521
  }
522
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
523
  "node_modules/gopd": {
524
  "version": "1.2.0",
525
  "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
@@ -532,6 +1591,20 @@
532
  "url": "https://github.com/sponsors/ljharb"
533
  }
534
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
535
  "node_modules/has-symbols": {
536
  "version": "1.1.0",
537
  "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
@@ -544,6 +1617,22 @@
544
  "url": "https://github.com/sponsors/ljharb"
545
  }
546
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
547
  "node_modules/hasown": {
548
  "version": "2.0.2",
549
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
@@ -556,6 +1645,23 @@
556
  "node": ">= 0.4"
557
  }
558
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
559
  "node_modules/http-errors": {
560
  "version": "2.0.1",
561
  "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
@@ -576,6 +1682,53 @@
576
  "url": "https://opencollective.com/express"
577
  }
578
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
579
  "node_modules/iconv-lite": {
580
  "version": "0.7.2",
581
  "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
@@ -598,20 +1751,120 @@
598
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
599
  "license": "ISC"
600
  },
601
- "node_modules/ipaddr.js": {
602
- "version": "1.9.1",
603
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
604
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
605
  "license": "MIT",
 
 
 
 
 
 
 
606
  "engines": {
607
- "node": ">= 0.10"
608
  }
609
  },
610
- "node_modules/is-promise": {
611
- "version": "4.0.0",
612
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
613
- "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
614
- "license": "MIT"
 
 
 
 
615
  },
616
  "node_modules/kareem": {
617
  "version": "3.2.0",
@@ -622,6 +1875,95 @@
622
  "node": ">=18.0.0"
623
  }
624
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
625
  "node_modules/math-intrinsics": {
626
  "version": "1.1.0",
627
  "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -658,6 +2000,19 @@
658
  "url": "https://github.com/sponsors/sindresorhus"
659
  }
660
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
661
  "node_modules/mime-db": {
662
  "version": "1.54.0",
663
  "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
@@ -867,6 +2222,26 @@
867
  "node": ">= 0.6"
868
  }
869
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
870
  "node_modules/node-fetch": {
871
  "version": "2.7.0",
872
  "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -909,6 +2284,15 @@
909
  "webidl-conversions": "^3.0.0"
910
  }
911
  },
 
 
 
 
 
 
 
 
 
912
  "node_modules/object-assign": {
913
  "version": "4.1.1",
914
  "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -918,6 +2302,16 @@
918
  "node": ">=0.10.0"
919
  }
920
  },
 
 
 
 
 
 
 
 
 
 
921
  "node_modules/object-inspect": {
922
  "version": "1.13.4",
923
  "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
@@ -951,6 +2345,22 @@
951
  "wrappy": "1"
952
  }
953
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
954
  "node_modules/p-timeout": {
955
  "version": "4.1.0",
956
  "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz",
@@ -969,6 +2379,22 @@
969
  "node": ">= 0.8"
970
  }
971
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
972
  "node_modules/path-to-regexp": {
973
  "version": "8.4.2",
974
  "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
@@ -979,6 +2405,44 @@
979
  "url": "https://opencollective.com/express"
980
  }
981
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
982
  "node_modules/proxy-addr": {
983
  "version": "2.0.7",
984
  "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1054,6 +2518,41 @@
1054
  "node": ">= 6"
1055
  }
1056
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1057
  "node_modules/router": {
1058
  "version": "2.2.0",
1059
  "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
@@ -1114,6 +2613,18 @@
1114
  "node": ">= 0.10"
1115
  }
1116
  },
 
 
 
 
 
 
 
 
 
 
 
 
1117
  "node_modules/send": {
1118
  "version": "1.2.1",
1119
  "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
@@ -1261,6 +2772,23 @@
1261
  "node": ">= 0.8"
1262
  }
1263
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1264
  "node_modules/streamsearch": {
1265
  "version": "1.1.0",
1266
  "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
@@ -1278,6 +2806,112 @@
1278
  "safe-buffer": "~5.2.0"
1279
  }
1280
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1281
  "node_modules/telegraf": {
1282
  "version": "4.16.3",
1283
  "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz",
@@ -1321,6 +2955,12 @@
1321
  "node": ">=18"
1322
  }
1323
  },
 
 
 
 
 
 
1324
  "node_modules/type-is": {
1325
  "version": "2.0.1",
1326
  "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
@@ -1341,6 +2981,12 @@
1341
  "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
1342
  "license": "MIT"
1343
  },
 
 
 
 
 
 
1344
  "node_modules/unpipe": {
1345
  "version": "1.0.0",
1346
  "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -1356,6 +3002,19 @@
1356
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1357
  "license": "MIT"
1358
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
1359
  "node_modules/vary": {
1360
  "version": "1.1.2",
1361
  "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -1365,6 +3024,15 @@
1365
  "node": ">= 0.8"
1366
  }
1367
  },
 
 
 
 
 
 
 
 
 
1368
  "node_modules/webidl-conversions": {
1369
  "version": "7.0.0",
1370
  "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
@@ -1374,6 +3042,29 @@
1374
  "node": ">=12"
1375
  }
1376
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1377
  "node_modules/whatwg-url": {
1378
  "version": "14.2.0",
1379
  "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
@@ -1387,11 +3078,87 @@
1387
  "node": ">=18"
1388
  }
1389
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1390
  "node_modules/wrappy": {
1391
  "version": "1.0.2",
1392
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1393
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1394
  "license": "ISC"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1395
  }
1396
  }
1397
  }
 
13
  "cors": "^2.8.6",
14
  "dotenv": "^17.4.1",
15
  "express": "^5.2.1",
16
+ "firebase-admin": "^13.8.0",
17
  "mongoose": "^9.4.1",
18
  "multer": "^2.1.1",
19
  "node-fetch": "^2.7.0",
20
  "telegraf": "^4.16.3"
21
  }
22
  },
23
+ "node_modules/@fastify/busboy": {
24
+ "version": "3.2.0",
25
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.0.tgz",
26
+ "integrity": "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==",
27
+ "license": "MIT"
28
+ },
29
+ "node_modules/@firebase/app-check-interop-types": {
30
+ "version": "0.3.3",
31
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz",
32
+ "integrity": "sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==",
33
+ "license": "Apache-2.0"
34
+ },
35
+ "node_modules/@firebase/app-types": {
36
+ "version": "0.9.4",
37
+ "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.4.tgz",
38
+ "integrity": "sha512-crX9TA5SVYZwLPG7/R16IsH8FLlgkPXjJUVhsVpHVDSqJiq3D/NuFTM5ctxGTExXAOeIn//69tQw47CPerM8MQ==",
39
+ "license": "Apache-2.0",
40
+ "dependencies": {
41
+ "@firebase/logger": "0.5.0"
42
+ }
43
+ },
44
+ "node_modules/@firebase/auth-interop-types": {
45
+ "version": "0.2.4",
46
+ "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz",
47
+ "integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==",
48
+ "license": "Apache-2.0"
49
+ },
50
+ "node_modules/@firebase/component": {
51
+ "version": "0.7.2",
52
+ "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.7.2.tgz",
53
+ "integrity": "sha512-iyVDGc6Vjx7Rm0cAdccLH/NG6fADsgJak/XW9IA2lPf8AjIlsemOpFGKczYyPHxm4rnKdR8z6sK4+KEC7NwmEg==",
54
+ "license": "Apache-2.0",
55
+ "dependencies": {
56
+ "@firebase/util": "1.15.0",
57
+ "tslib": "^2.1.0"
58
+ },
59
+ "engines": {
60
+ "node": ">=20.0.0"
61
+ }
62
+ },
63
+ "node_modules/@firebase/database": {
64
+ "version": "1.1.2",
65
+ "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.1.2.tgz",
66
+ "integrity": "sha512-lP96CMjMPy/+d1d9qaaHjHHdzdwvEOuyyLq9ehX89e2XMKwS1jHNzYBO+42bdSumuj5ukPbmnFtViZu8YOMT+w==",
67
+ "license": "Apache-2.0",
68
+ "dependencies": {
69
+ "@firebase/app-check-interop-types": "0.3.3",
70
+ "@firebase/auth-interop-types": "0.2.4",
71
+ "@firebase/component": "0.7.2",
72
+ "@firebase/logger": "0.5.0",
73
+ "@firebase/util": "1.15.0",
74
+ "faye-websocket": "0.11.4",
75
+ "tslib": "^2.1.0"
76
+ },
77
+ "engines": {
78
+ "node": ">=20.0.0"
79
+ }
80
+ },
81
+ "node_modules/@firebase/database-compat": {
82
+ "version": "2.1.3",
83
+ "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.1.3.tgz",
84
+ "integrity": "sha512-GMyfWjD8mehjg/QpNkY/tl9G/MoeugPeg91n9D0atggxbWuKF/2KhVPHZDH+XmoP0EKYqMWYTtKxBsaBaNKLYQ==",
85
+ "license": "Apache-2.0",
86
+ "dependencies": {
87
+ "@firebase/component": "0.7.2",
88
+ "@firebase/database": "1.1.2",
89
+ "@firebase/database-types": "1.0.19",
90
+ "@firebase/logger": "0.5.0",
91
+ "@firebase/util": "1.15.0",
92
+ "tslib": "^2.1.0"
93
+ },
94
+ "engines": {
95
+ "node": ">=20.0.0"
96
+ }
97
+ },
98
+ "node_modules/@firebase/database-types": {
99
+ "version": "1.0.19",
100
+ "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.19.tgz",
101
+ "integrity": "sha512-FqewjUZmV9LqFfuEnmgdcUpiOUz7qwLXxnm/H8BcMFEzQXtd1yyUDm8ex5VRad2nuTE+ahOuCjUAM/cyDncO+g==",
102
+ "license": "Apache-2.0",
103
+ "dependencies": {
104
+ "@firebase/app-types": "0.9.4",
105
+ "@firebase/util": "1.15.0"
106
+ }
107
+ },
108
+ "node_modules/@firebase/logger": {
109
+ "version": "0.5.0",
110
+ "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.5.0.tgz",
111
+ "integrity": "sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==",
112
+ "license": "Apache-2.0",
113
+ "dependencies": {
114
+ "tslib": "^2.1.0"
115
+ },
116
+ "engines": {
117
+ "node": ">=20.0.0"
118
+ }
119
+ },
120
+ "node_modules/@firebase/util": {
121
+ "version": "1.15.0",
122
+ "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.15.0.tgz",
123
+ "integrity": "sha512-AmWf3cHAOMbrCPG4xdPKQaj5iHnyYfyLKZxwz+Xf55bqKbpAmcYifB4jQinT2W9XhDRHISOoPyBOariJpCG6FA==",
124
+ "hasInstallScript": true,
125
+ "license": "Apache-2.0",
126
+ "dependencies": {
127
+ "tslib": "^2.1.0"
128
+ },
129
+ "engines": {
130
+ "node": ">=20.0.0"
131
+ }
132
+ },
133
+ "node_modules/@google-cloud/firestore": {
134
+ "version": "7.11.6",
135
+ "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.11.6.tgz",
136
+ "integrity": "sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==",
137
+ "license": "Apache-2.0",
138
+ "optional": true,
139
+ "dependencies": {
140
+ "@opentelemetry/api": "^1.3.0",
141
+ "fast-deep-equal": "^3.1.1",
142
+ "functional-red-black-tree": "^1.0.1",
143
+ "google-gax": "^4.3.3",
144
+ "protobufjs": "^7.2.6"
145
+ },
146
+ "engines": {
147
+ "node": ">=14.0.0"
148
+ }
149
+ },
150
+ "node_modules/@google-cloud/paginator": {
151
+ "version": "5.0.2",
152
+ "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz",
153
+ "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==",
154
+ "license": "Apache-2.0",
155
+ "optional": true,
156
+ "dependencies": {
157
+ "arrify": "^2.0.0",
158
+ "extend": "^3.0.2"
159
+ },
160
+ "engines": {
161
+ "node": ">=14.0.0"
162
+ }
163
+ },
164
+ "node_modules/@google-cloud/projectify": {
165
+ "version": "4.0.0",
166
+ "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz",
167
+ "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==",
168
+ "license": "Apache-2.0",
169
+ "optional": true,
170
+ "engines": {
171
+ "node": ">=14.0.0"
172
+ }
173
+ },
174
+ "node_modules/@google-cloud/promisify": {
175
+ "version": "4.0.0",
176
+ "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz",
177
+ "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==",
178
+ "license": "Apache-2.0",
179
+ "optional": true,
180
+ "engines": {
181
+ "node": ">=14"
182
+ }
183
+ },
184
+ "node_modules/@google-cloud/storage": {
185
+ "version": "7.19.0",
186
+ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.19.0.tgz",
187
+ "integrity": "sha512-n2FjE7NAOYyshogdc7KQOl/VZb4sneqPjWouSyia9CMDdMhRX5+RIbqalNmC7LOLzuLAN89VlF2HvG8na9G+zQ==",
188
+ "license": "Apache-2.0",
189
+ "optional": true,
190
+ "dependencies": {
191
+ "@google-cloud/paginator": "^5.0.0",
192
+ "@google-cloud/projectify": "^4.0.0",
193
+ "@google-cloud/promisify": "<4.1.0",
194
+ "abort-controller": "^3.0.0",
195
+ "async-retry": "^1.3.3",
196
+ "duplexify": "^4.1.3",
197
+ "fast-xml-parser": "^5.3.4",
198
+ "gaxios": "^6.0.2",
199
+ "google-auth-library": "^9.6.3",
200
+ "html-entities": "^2.5.2",
201
+ "mime": "^3.0.0",
202
+ "p-limit": "^3.0.1",
203
+ "retry-request": "^7.0.0",
204
+ "teeny-request": "^9.0.0",
205
+ "uuid": "^8.0.0"
206
+ },
207
+ "engines": {
208
+ "node": ">=14"
209
+ }
210
+ },
211
+ "node_modules/@google-cloud/storage/node_modules/gcp-metadata": {
212
+ "version": "6.1.1",
213
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz",
214
+ "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==",
215
+ "license": "Apache-2.0",
216
+ "optional": true,
217
+ "dependencies": {
218
+ "gaxios": "^6.1.1",
219
+ "google-logging-utils": "^0.0.2",
220
+ "json-bigint": "^1.0.0"
221
+ },
222
+ "engines": {
223
+ "node": ">=14"
224
+ }
225
+ },
226
+ "node_modules/@google-cloud/storage/node_modules/google-auth-library": {
227
+ "version": "9.15.1",
228
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz",
229
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==",
230
+ "license": "Apache-2.0",
231
+ "optional": true,
232
+ "dependencies": {
233
+ "base64-js": "^1.3.0",
234
+ "ecdsa-sig-formatter": "^1.0.11",
235
+ "gaxios": "^6.1.1",
236
+ "gcp-metadata": "^6.1.0",
237
+ "gtoken": "^7.0.0",
238
+ "jws": "^4.0.0"
239
+ },
240
+ "engines": {
241
+ "node": ">=14"
242
+ }
243
+ },
244
+ "node_modules/@google-cloud/storage/node_modules/google-logging-utils": {
245
+ "version": "0.0.2",
246
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz",
247
+ "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==",
248
+ "license": "Apache-2.0",
249
+ "optional": true,
250
+ "engines": {
251
+ "node": ">=14"
252
+ }
253
+ },
254
+ "node_modules/@google-cloud/storage/node_modules/uuid": {
255
+ "version": "8.3.2",
256
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
257
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
258
+ "license": "MIT",
259
+ "optional": true,
260
+ "bin": {
261
+ "uuid": "dist/bin/uuid"
262
+ }
263
+ },
264
  "node_modules/@google/generative-ai": {
265
  "version": "0.24.1",
266
  "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.24.1.tgz",
 
270
  "node": ">=18.0.0"
271
  }
272
  },
273
+ "node_modules/@grpc/grpc-js": {
274
+ "version": "1.14.3",
275
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz",
276
+ "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==",
277
+ "license": "Apache-2.0",
278
+ "optional": true,
279
+ "dependencies": {
280
+ "@grpc/proto-loader": "^0.8.0",
281
+ "@js-sdsl/ordered-map": "^4.4.2"
282
+ },
283
+ "engines": {
284
+ "node": ">=12.10.0"
285
+ }
286
+ },
287
+ "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": {
288
+ "version": "0.8.0",
289
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz",
290
+ "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==",
291
+ "license": "Apache-2.0",
292
+ "optional": true,
293
+ "dependencies": {
294
+ "lodash.camelcase": "^4.3.0",
295
+ "long": "^5.0.0",
296
+ "protobufjs": "^7.5.3",
297
+ "yargs": "^17.7.2"
298
+ },
299
+ "bin": {
300
+ "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
301
+ },
302
+ "engines": {
303
+ "node": ">=6"
304
+ }
305
+ },
306
+ "node_modules/@grpc/proto-loader": {
307
+ "version": "0.7.15",
308
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz",
309
+ "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==",
310
+ "license": "Apache-2.0",
311
+ "optional": true,
312
+ "dependencies": {
313
+ "lodash.camelcase": "^4.3.0",
314
+ "long": "^5.0.0",
315
+ "protobufjs": "^7.2.5",
316
+ "yargs": "^17.7.2"
317
+ },
318
+ "bin": {
319
+ "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
320
+ },
321
+ "engines": {
322
+ "node": ">=6"
323
+ }
324
+ },
325
+ "node_modules/@js-sdsl/ordered-map": {
326
+ "version": "4.4.2",
327
+ "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz",
328
+ "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==",
329
+ "license": "MIT",
330
+ "optional": true,
331
+ "funding": {
332
+ "type": "opencollective",
333
+ "url": "https://opencollective.com/js-sdsl"
334
+ }
335
+ },
336
  "node_modules/@mongodb-js/saslprep": {
337
  "version": "1.4.6",
338
  "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.6.tgz",
 
342
  "sparse-bitfield": "^3.0.3"
343
  }
344
  },
345
+ "node_modules/@opentelemetry/api": {
346
+ "version": "1.9.1",
347
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz",
348
+ "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==",
349
+ "license": "Apache-2.0",
350
+ "optional": true,
351
+ "engines": {
352
+ "node": ">=8.0.0"
353
+ }
354
+ },
355
+ "node_modules/@protobufjs/aspromise": {
356
+ "version": "1.1.2",
357
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
358
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
359
+ "license": "BSD-3-Clause",
360
+ "optional": true
361
+ },
362
+ "node_modules/@protobufjs/base64": {
363
+ "version": "1.1.2",
364
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
365
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
366
+ "license": "BSD-3-Clause",
367
+ "optional": true
368
+ },
369
+ "node_modules/@protobufjs/codegen": {
370
+ "version": "2.0.4",
371
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
372
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
373
+ "license": "BSD-3-Clause",
374
+ "optional": true
375
+ },
376
+ "node_modules/@protobufjs/eventemitter": {
377
+ "version": "1.1.0",
378
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
379
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
380
+ "license": "BSD-3-Clause",
381
+ "optional": true
382
+ },
383
+ "node_modules/@protobufjs/fetch": {
384
+ "version": "1.1.0",
385
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
386
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
387
+ "license": "BSD-3-Clause",
388
+ "optional": true,
389
+ "dependencies": {
390
+ "@protobufjs/aspromise": "^1.1.1",
391
+ "@protobufjs/inquire": "^1.1.0"
392
+ }
393
+ },
394
+ "node_modules/@protobufjs/float": {
395
+ "version": "1.0.2",
396
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
397
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
398
+ "license": "BSD-3-Clause",
399
+ "optional": true
400
+ },
401
+ "node_modules/@protobufjs/inquire": {
402
+ "version": "1.1.0",
403
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
404
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
405
+ "license": "BSD-3-Clause",
406
+ "optional": true
407
+ },
408
+ "node_modules/@protobufjs/path": {
409
+ "version": "1.1.2",
410
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
411
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
412
+ "license": "BSD-3-Clause",
413
+ "optional": true
414
+ },
415
+ "node_modules/@protobufjs/pool": {
416
+ "version": "1.1.0",
417
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
418
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
419
+ "license": "BSD-3-Clause",
420
+ "optional": true
421
+ },
422
+ "node_modules/@protobufjs/utf8": {
423
+ "version": "1.1.0",
424
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
425
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
426
+ "license": "BSD-3-Clause",
427
+ "optional": true
428
+ },
429
  "node_modules/@telegraf/types": {
430
  "version": "7.1.0",
431
  "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz",
432
  "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==",
433
  "license": "MIT"
434
  },
435
+ "node_modules/@tootallnate/once": {
436
+ "version": "2.0.0",
437
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
438
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
439
+ "license": "MIT",
440
+ "optional": true,
441
+ "engines": {
442
+ "node": ">= 10"
443
+ }
444
+ },
445
+ "node_modules/@types/caseless": {
446
+ "version": "0.12.5",
447
+ "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz",
448
+ "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==",
449
+ "license": "MIT",
450
+ "optional": true
451
+ },
452
+ "node_modules/@types/jsonwebtoken": {
453
+ "version": "9.0.10",
454
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz",
455
+ "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==",
456
+ "license": "MIT",
457
+ "dependencies": {
458
+ "@types/ms": "*",
459
+ "@types/node": "*"
460
+ }
461
+ },
462
+ "node_modules/@types/long": {
463
+ "version": "4.0.2",
464
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
465
+ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
466
+ "license": "MIT",
467
+ "optional": true
468
+ },
469
+ "node_modules/@types/ms": {
470
+ "version": "2.1.0",
471
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
472
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
473
+ "license": "MIT"
474
+ },
475
+ "node_modules/@types/node": {
476
+ "version": "25.6.0",
477
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
478
+ "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
479
+ "license": "MIT",
480
+ "dependencies": {
481
+ "undici-types": "~7.19.0"
482
+ }
483
+ },
484
+ "node_modules/@types/request": {
485
+ "version": "2.48.13",
486
+ "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz",
487
+ "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==",
488
+ "license": "MIT",
489
+ "optional": true,
490
+ "dependencies": {
491
+ "@types/caseless": "*",
492
+ "@types/node": "*",
493
+ "@types/tough-cookie": "*",
494
+ "form-data": "^2.5.5"
495
+ }
496
+ },
497
+ "node_modules/@types/tough-cookie": {
498
+ "version": "4.0.5",
499
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
500
+ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
501
+ "license": "MIT",
502
+ "optional": true
503
+ },
504
  "node_modules/@types/webidl-conversions": {
505
  "version": "7.0.3",
506
  "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
 
541
  "node": ">= 0.6"
542
  }
543
  },
544
+ "node_modules/agent-base": {
545
+ "version": "7.1.4",
546
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
547
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
548
+ "license": "MIT",
549
+ "engines": {
550
+ "node": ">= 14"
551
+ }
552
+ },
553
+ "node_modules/ansi-regex": {
554
+ "version": "5.0.1",
555
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
556
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
557
+ "license": "MIT",
558
+ "optional": true,
559
+ "engines": {
560
+ "node": ">=8"
561
+ }
562
+ },
563
+ "node_modules/ansi-styles": {
564
+ "version": "4.3.0",
565
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
566
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
567
+ "license": "MIT",
568
+ "optional": true,
569
+ "dependencies": {
570
+ "color-convert": "^2.0.1"
571
+ },
572
+ "engines": {
573
+ "node": ">=8"
574
+ },
575
+ "funding": {
576
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
577
+ }
578
+ },
579
  "node_modules/append-field": {
580
  "version": "1.0.0",
581
  "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
582
  "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==",
583
  "license": "MIT"
584
  },
585
+ "node_modules/arrify": {
586
+ "version": "2.0.1",
587
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
588
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
589
+ "license": "MIT",
590
+ "optional": true,
591
+ "engines": {
592
+ "node": ">=8"
593
+ }
594
+ },
595
+ "node_modules/async-retry": {
596
+ "version": "1.3.3",
597
+ "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
598
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
599
+ "license": "MIT",
600
+ "optional": true,
601
+ "dependencies": {
602
+ "retry": "0.13.1"
603
+ }
604
+ },
605
+ "node_modules/asynckit": {
606
+ "version": "0.4.0",
607
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
608
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
609
+ "license": "MIT",
610
+ "optional": true
611
+ },
612
+ "node_modules/base64-js": {
613
+ "version": "1.5.1",
614
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
615
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
616
+ "funding": [
617
+ {
618
+ "type": "github",
619
+ "url": "https://github.com/sponsors/feross"
620
+ },
621
+ {
622
+ "type": "patreon",
623
+ "url": "https://www.patreon.com/feross"
624
+ },
625
+ {
626
+ "type": "consulting",
627
+ "url": "https://feross.org/support"
628
+ }
629
+ ],
630
+ "license": "MIT"
631
+ },
632
+ "node_modules/bignumber.js": {
633
+ "version": "9.3.1",
634
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
635
+ "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
636
+ "license": "MIT",
637
+ "engines": {
638
+ "node": "*"
639
+ }
640
+ },
641
  "node_modules/body-parser": {
642
  "version": "2.2.2",
643
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
 
687
  "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
688
  "license": "MIT"
689
  },
690
+ "node_modules/buffer-equal-constant-time": {
691
+ "version": "1.0.1",
692
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
693
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
694
+ "license": "BSD-3-Clause"
695
+ },
696
  "node_modules/buffer-fill": {
697
  "version": "1.0.0",
698
  "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
 
754
  "url": "https://github.com/sponsors/ljharb"
755
  }
756
  },
757
+ "node_modules/cliui": {
758
+ "version": "8.0.1",
759
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
760
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
761
+ "license": "ISC",
762
+ "optional": true,
 
 
763
  "dependencies": {
764
+ "string-width": "^4.2.0",
765
+ "strip-ansi": "^6.0.1",
766
+ "wrap-ansi": "^7.0.0"
767
+ },
768
+ "engines": {
769
+ "node": ">=12"
770
  }
771
  },
772
+ "node_modules/color-convert": {
773
+ "version": "2.0.1",
774
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
775
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
776
+ "license": "MIT",
777
+ "optional": true,
778
+ "dependencies": {
779
+ "color-name": "~1.1.4"
780
+ },
781
+ "engines": {
782
+ "node": ">=7.0.0"
783
+ }
784
+ },
785
+ "node_modules/color-name": {
786
+ "version": "1.1.4",
787
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
788
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
789
+ "license": "MIT",
790
+ "optional": true
791
+ },
792
+ "node_modules/combined-stream": {
793
+ "version": "1.0.8",
794
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
795
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
796
+ "license": "MIT",
797
+ "optional": true,
798
+ "dependencies": {
799
+ "delayed-stream": "~1.0.0"
800
+ },
801
+ "engines": {
802
+ "node": ">= 0.8"
803
+ }
804
+ },
805
+ "node_modules/concat-stream": {
806
+ "version": "2.0.0",
807
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
808
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
809
+ "engines": [
810
+ "node >= 6.0"
811
+ ],
812
+ "license": "MIT",
813
+ "dependencies": {
814
+ "buffer-from": "^1.0.0",
815
+ "inherits": "^2.0.3",
816
+ "readable-stream": "^3.0.2",
817
+ "typedarray": "^0.0.6"
818
+ }
819
+ },
820
+ "node_modules/content-disposition": {
821
+ "version": "1.0.1",
822
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
823
+ "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
824
  "license": "MIT",
825
  "engines": {
826
  "node": ">=18"
 
874
  "url": "https://opencollective.com/express"
875
  }
876
  },
877
+ "node_modules/data-uri-to-buffer": {
878
+ "version": "4.0.1",
879
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
880
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
881
+ "license": "MIT",
882
+ "engines": {
883
+ "node": ">= 12"
884
+ }
885
+ },
886
  "node_modules/debug": {
887
  "version": "4.4.3",
888
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
 
900
  }
901
  }
902
  },
903
+ "node_modules/delayed-stream": {
904
+ "version": "1.0.0",
905
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
906
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
907
+ "license": "MIT",
908
+ "optional": true,
909
+ "engines": {
910
+ "node": ">=0.4.0"
911
+ }
912
+ },
913
  "node_modules/depd": {
914
  "version": "2.0.0",
915
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
 
945
  "node": ">= 0.4"
946
  }
947
  },
948
+ "node_modules/duplexify": {
949
+ "version": "4.1.3",
950
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
951
+ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
952
+ "license": "MIT",
953
+ "optional": true,
954
+ "dependencies": {
955
+ "end-of-stream": "^1.4.1",
956
+ "inherits": "^2.0.3",
957
+ "readable-stream": "^3.1.1",
958
+ "stream-shift": "^1.0.2"
959
+ }
960
+ },
961
+ "node_modules/ecdsa-sig-formatter": {
962
+ "version": "1.0.11",
963
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
964
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
965
+ "license": "Apache-2.0",
966
+ "dependencies": {
967
+ "safe-buffer": "^5.0.1"
968
+ }
969
+ },
970
  "node_modules/ee-first": {
971
  "version": "1.1.1",
972
  "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
973
  "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
974
  "license": "MIT"
975
  },
976
+ "node_modules/emoji-regex": {
977
+ "version": "8.0.0",
978
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
979
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
980
+ "license": "MIT",
981
+ "optional": true
982
+ },
983
  "node_modules/encodeurl": {
984
  "version": "2.0.0",
985
  "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
 
989
  "node": ">= 0.8"
990
  }
991
  },
992
+ "node_modules/end-of-stream": {
993
+ "version": "1.4.5",
994
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
995
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
996
+ "license": "MIT",
997
+ "optional": true,
998
+ "dependencies": {
999
+ "once": "^1.4.0"
1000
+ }
1001
+ },
1002
  "node_modules/es-define-property": {
1003
  "version": "1.0.1",
1004
  "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
 
1029
  "node": ">= 0.4"
1030
  }
1031
  },
1032
+ "node_modules/es-set-tostringtag": {
1033
+ "version": "2.1.0",
1034
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
1035
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
1036
+ "license": "MIT",
1037
+ "optional": true,
1038
+ "dependencies": {
1039
+ "es-errors": "^1.3.0",
1040
+ "get-intrinsic": "^1.2.6",
1041
+ "has-tostringtag": "^1.0.2",
1042
+ "hasown": "^2.0.2"
1043
+ },
1044
+ "engines": {
1045
+ "node": ">= 0.4"
1046
+ }
1047
+ },
1048
+ "node_modules/escalade": {
1049
+ "version": "3.2.0",
1050
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1051
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1052
+ "license": "MIT",
1053
+ "optional": true,
1054
+ "engines": {
1055
+ "node": ">=6"
1056
+ }
1057
+ },
1058
  "node_modules/escape-html": {
1059
  "version": "1.0.3",
1060
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
 
1122
  "url": "https://opencollective.com/express"
1123
  }
1124
  },
1125
+ "node_modules/extend": {
1126
+ "version": "3.0.2",
1127
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1128
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
1129
+ "license": "MIT"
1130
+ },
1131
+ "node_modules/farmhash-modern": {
1132
+ "version": "1.1.0",
1133
+ "resolved": "https://registry.npmjs.org/farmhash-modern/-/farmhash-modern-1.1.0.tgz",
1134
+ "integrity": "sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==",
1135
+ "license": "MIT",
1136
+ "engines": {
1137
+ "node": ">=18.0.0"
1138
+ }
1139
+ },
1140
+ "node_modules/fast-deep-equal": {
1141
+ "version": "3.1.3",
1142
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1143
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1144
+ "license": "MIT"
1145
+ },
1146
+ "node_modules/fast-xml-builder": {
1147
+ "version": "1.1.4",
1148
+ "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz",
1149
+ "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==",
1150
+ "funding": [
1151
+ {
1152
+ "type": "github",
1153
+ "url": "https://github.com/sponsors/NaturalIntelligence"
1154
+ }
1155
+ ],
1156
+ "license": "MIT",
1157
+ "optional": true,
1158
+ "dependencies": {
1159
+ "path-expression-matcher": "^1.1.3"
1160
+ }
1161
+ },
1162
+ "node_modules/fast-xml-parser": {
1163
+ "version": "5.5.12",
1164
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.12.tgz",
1165
+ "integrity": "sha512-nUR0q8PPfoA/svPM43Gup7vLOZWppaNrYgGmrVqrAVJa7cOH4hMG6FX9M4mQ8dZA1/ObGZHzES7Ed88hxEBSJg==",
1166
+ "funding": [
1167
+ {
1168
+ "type": "github",
1169
+ "url": "https://github.com/sponsors/NaturalIntelligence"
1170
+ }
1171
+ ],
1172
+ "license": "MIT",
1173
+ "optional": true,
1174
+ "dependencies": {
1175
+ "fast-xml-builder": "^1.1.4",
1176
+ "path-expression-matcher": "^1.5.0",
1177
+ "strnum": "^2.2.3"
1178
+ },
1179
+ "bin": {
1180
+ "fxparser": "src/cli/cli.js"
1181
+ }
1182
+ },
1183
+ "node_modules/faye-websocket": {
1184
+ "version": "0.11.4",
1185
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
1186
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
1187
+ "license": "Apache-2.0",
1188
+ "dependencies": {
1189
+ "websocket-driver": ">=0.5.1"
1190
+ },
1191
+ "engines": {
1192
+ "node": ">=0.8.0"
1193
+ }
1194
+ },
1195
+ "node_modules/fetch-blob": {
1196
+ "version": "3.2.0",
1197
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
1198
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
1199
+ "funding": [
1200
+ {
1201
+ "type": "github",
1202
+ "url": "https://github.com/sponsors/jimmywarting"
1203
+ },
1204
+ {
1205
+ "type": "paypal",
1206
+ "url": "https://paypal.me/jimmywarting"
1207
+ }
1208
+ ],
1209
+ "license": "MIT",
1210
+ "dependencies": {
1211
+ "node-domexception": "^1.0.0",
1212
+ "web-streams-polyfill": "^3.0.3"
1213
+ },
1214
+ "engines": {
1215
+ "node": "^12.20 || >= 14.13"
1216
+ }
1217
+ },
1218
  "node_modules/finalhandler": {
1219
  "version": "2.1.1",
1220
  "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
 
1236
  "url": "https://opencollective.com/express"
1237
  }
1238
  },
1239
+ "node_modules/firebase-admin": {
1240
+ "version": "13.8.0",
1241
+ "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-13.8.0.tgz",
1242
+ "integrity": "sha512-iawoQkmZbsA+2DY5UEuB8f6jSlskzzySoye0D2F6e3zlDZX9DUcXf0HhZqLUn/P6WhLGvTf6ZtCmshZvhAgTYg==",
1243
+ "license": "Apache-2.0",
1244
+ "dependencies": {
1245
+ "@fastify/busboy": "^3.0.0",
1246
+ "@firebase/database-compat": "^2.0.0",
1247
+ "@firebase/database-types": "^1.0.6",
1248
+ "farmhash-modern": "^1.1.0",
1249
+ "fast-deep-equal": "^3.1.1",
1250
+ "google-auth-library": "^10.6.1",
1251
+ "jsonwebtoken": "^9.0.0",
1252
+ "jwks-rsa": "^3.1.0",
1253
+ "node-forge": "^1.4.0",
1254
+ "uuid": "^11.0.2"
1255
+ },
1256
+ "engines": {
1257
+ "node": ">=18"
1258
+ },
1259
+ "optionalDependencies": {
1260
+ "@google-cloud/firestore": "^7.11.0",
1261
+ "@google-cloud/storage": "^7.19.0"
1262
+ }
1263
+ },
1264
+ "node_modules/form-data": {
1265
+ "version": "2.5.5",
1266
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz",
1267
+ "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==",
1268
+ "license": "MIT",
1269
+ "optional": true,
1270
+ "dependencies": {
1271
+ "asynckit": "^0.4.0",
1272
+ "combined-stream": "^1.0.8",
1273
+ "es-set-tostringtag": "^2.1.0",
1274
+ "hasown": "^2.0.2",
1275
+ "mime-types": "^2.1.35",
1276
+ "safe-buffer": "^5.2.1"
1277
+ },
1278
+ "engines": {
1279
+ "node": ">= 0.12"
1280
+ }
1281
+ },
1282
+ "node_modules/form-data/node_modules/mime-db": {
1283
+ "version": "1.52.0",
1284
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1285
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1286
+ "license": "MIT",
1287
+ "optional": true,
1288
+ "engines": {
1289
+ "node": ">= 0.6"
1290
+ }
1291
+ },
1292
+ "node_modules/form-data/node_modules/mime-types": {
1293
+ "version": "2.1.35",
1294
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1295
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1296
+ "license": "MIT",
1297
+ "optional": true,
1298
+ "dependencies": {
1299
+ "mime-db": "1.52.0"
1300
+ },
1301
+ "engines": {
1302
+ "node": ">= 0.6"
1303
+ }
1304
+ },
1305
+ "node_modules/formdata-polyfill": {
1306
+ "version": "4.0.10",
1307
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
1308
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
1309
+ "license": "MIT",
1310
+ "dependencies": {
1311
+ "fetch-blob": "^3.1.2"
1312
+ },
1313
+ "engines": {
1314
+ "node": ">=12.20.0"
1315
+ }
1316
+ },
1317
  "node_modules/forwarded": {
1318
  "version": "0.2.0",
1319
  "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
 
1341
  "url": "https://github.com/sponsors/ljharb"
1342
  }
1343
  },
1344
+ "node_modules/functional-red-black-tree": {
1345
+ "version": "1.0.1",
1346
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1347
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
1348
+ "license": "MIT",
1349
+ "optional": true
1350
+ },
1351
+ "node_modules/gaxios": {
1352
+ "version": "6.7.1",
1353
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
1354
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
1355
+ "license": "Apache-2.0",
1356
+ "optional": true,
1357
+ "dependencies": {
1358
+ "extend": "^3.0.2",
1359
+ "https-proxy-agent": "^7.0.1",
1360
+ "is-stream": "^2.0.0",
1361
+ "node-fetch": "^2.6.9",
1362
+ "uuid": "^9.0.1"
1363
+ },
1364
+ "engines": {
1365
+ "node": ">=14"
1366
+ }
1367
+ },
1368
+ "node_modules/gaxios/node_modules/uuid": {
1369
+ "version": "9.0.1",
1370
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
1371
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
1372
+ "funding": [
1373
+ "https://github.com/sponsors/broofa",
1374
+ "https://github.com/sponsors/ctavan"
1375
+ ],
1376
+ "license": "MIT",
1377
+ "optional": true,
1378
+ "bin": {
1379
+ "uuid": "dist/bin/uuid"
1380
+ }
1381
+ },
1382
+ "node_modules/get-caller-file": {
1383
+ "version": "2.0.5",
1384
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1385
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1386
+ "license": "ISC",
1387
+ "optional": true,
1388
+ "engines": {
1389
+ "node": "6.* || 8.* || >= 10.*"
1390
+ }
1391
+ },
1392
  "node_modules/get-intrinsic": {
1393
  "version": "1.3.0",
1394
  "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
 
1426
  "node": ">= 0.4"
1427
  }
1428
  },
1429
+ "node_modules/google-auth-library": {
1430
+ "version": "10.6.2",
1431
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz",
1432
+ "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==",
1433
+ "license": "Apache-2.0",
1434
+ "dependencies": {
1435
+ "base64-js": "^1.3.0",
1436
+ "ecdsa-sig-formatter": "^1.0.11",
1437
+ "gaxios": "^7.1.4",
1438
+ "gcp-metadata": "8.1.2",
1439
+ "google-logging-utils": "1.1.3",
1440
+ "jws": "^4.0.0"
1441
+ },
1442
+ "engines": {
1443
+ "node": ">=18"
1444
+ }
1445
+ },
1446
+ "node_modules/google-auth-library/node_modules/gaxios": {
1447
+ "version": "7.1.4",
1448
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz",
1449
+ "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==",
1450
+ "license": "Apache-2.0",
1451
+ "dependencies": {
1452
+ "extend": "^3.0.2",
1453
+ "https-proxy-agent": "^7.0.1",
1454
+ "node-fetch": "^3.3.2"
1455
+ },
1456
+ "engines": {
1457
+ "node": ">=18"
1458
+ }
1459
+ },
1460
+ "node_modules/google-auth-library/node_modules/gcp-metadata": {
1461
+ "version": "8.1.2",
1462
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz",
1463
+ "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==",
1464
+ "license": "Apache-2.0",
1465
+ "dependencies": {
1466
+ "gaxios": "^7.0.0",
1467
+ "google-logging-utils": "^1.0.0",
1468
+ "json-bigint": "^1.0.0"
1469
+ },
1470
+ "engines": {
1471
+ "node": ">=18"
1472
+ }
1473
+ },
1474
+ "node_modules/google-auth-library/node_modules/node-fetch": {
1475
+ "version": "3.3.2",
1476
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
1477
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
1478
+ "license": "MIT",
1479
+ "dependencies": {
1480
+ "data-uri-to-buffer": "^4.0.0",
1481
+ "fetch-blob": "^3.1.4",
1482
+ "formdata-polyfill": "^4.0.10"
1483
+ },
1484
+ "engines": {
1485
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1486
+ },
1487
+ "funding": {
1488
+ "type": "opencollective",
1489
+ "url": "https://opencollective.com/node-fetch"
1490
+ }
1491
+ },
1492
+ "node_modules/google-gax": {
1493
+ "version": "4.6.1",
1494
+ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.6.1.tgz",
1495
+ "integrity": "sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==",
1496
+ "license": "Apache-2.0",
1497
+ "optional": true,
1498
+ "dependencies": {
1499
+ "@grpc/grpc-js": "^1.10.9",
1500
+ "@grpc/proto-loader": "^0.7.13",
1501
+ "@types/long": "^4.0.0",
1502
+ "abort-controller": "^3.0.0",
1503
+ "duplexify": "^4.0.0",
1504
+ "google-auth-library": "^9.3.0",
1505
+ "node-fetch": "^2.7.0",
1506
+ "object-hash": "^3.0.0",
1507
+ "proto3-json-serializer": "^2.0.2",
1508
+ "protobufjs": "^7.3.2",
1509
+ "retry-request": "^7.0.0",
1510
+ "uuid": "^9.0.1"
1511
+ },
1512
+ "engines": {
1513
+ "node": ">=14"
1514
+ }
1515
+ },
1516
+ "node_modules/google-gax/node_modules/gcp-metadata": {
1517
+ "version": "6.1.1",
1518
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz",
1519
+ "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==",
1520
+ "license": "Apache-2.0",
1521
+ "optional": true,
1522
+ "dependencies": {
1523
+ "gaxios": "^6.1.1",
1524
+ "google-logging-utils": "^0.0.2",
1525
+ "json-bigint": "^1.0.0"
1526
+ },
1527
+ "engines": {
1528
+ "node": ">=14"
1529
+ }
1530
+ },
1531
+ "node_modules/google-gax/node_modules/google-auth-library": {
1532
+ "version": "9.15.1",
1533
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz",
1534
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==",
1535
+ "license": "Apache-2.0",
1536
+ "optional": true,
1537
+ "dependencies": {
1538
+ "base64-js": "^1.3.0",
1539
+ "ecdsa-sig-formatter": "^1.0.11",
1540
+ "gaxios": "^6.1.1",
1541
+ "gcp-metadata": "^6.1.0",
1542
+ "gtoken": "^7.0.0",
1543
+ "jws": "^4.0.0"
1544
+ },
1545
+ "engines": {
1546
+ "node": ">=14"
1547
+ }
1548
+ },
1549
+ "node_modules/google-gax/node_modules/google-logging-utils": {
1550
+ "version": "0.0.2",
1551
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz",
1552
+ "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==",
1553
+ "license": "Apache-2.0",
1554
+ "optional": true,
1555
+ "engines": {
1556
+ "node": ">=14"
1557
+ }
1558
+ },
1559
+ "node_modules/google-gax/node_modules/uuid": {
1560
+ "version": "9.0.1",
1561
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
1562
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
1563
+ "funding": [
1564
+ "https://github.com/sponsors/broofa",
1565
+ "https://github.com/sponsors/ctavan"
1566
+ ],
1567
+ "license": "MIT",
1568
+ "optional": true,
1569
+ "bin": {
1570
+ "uuid": "dist/bin/uuid"
1571
+ }
1572
+ },
1573
+ "node_modules/google-logging-utils": {
1574
+ "version": "1.1.3",
1575
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz",
1576
+ "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==",
1577
+ "license": "Apache-2.0",
1578
+ "engines": {
1579
+ "node": ">=14"
1580
+ }
1581
+ },
1582
  "node_modules/gopd": {
1583
  "version": "1.2.0",
1584
  "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
 
1591
  "url": "https://github.com/sponsors/ljharb"
1592
  }
1593
  },
1594
+ "node_modules/gtoken": {
1595
+ "version": "7.1.0",
1596
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
1597
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
1598
+ "license": "MIT",
1599
+ "optional": true,
1600
+ "dependencies": {
1601
+ "gaxios": "^6.0.0",
1602
+ "jws": "^4.0.0"
1603
+ },
1604
+ "engines": {
1605
+ "node": ">=14.0.0"
1606
+ }
1607
+ },
1608
  "node_modules/has-symbols": {
1609
  "version": "1.1.0",
1610
  "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
 
1617
  "url": "https://github.com/sponsors/ljharb"
1618
  }
1619
  },
1620
+ "node_modules/has-tostringtag": {
1621
+ "version": "1.0.2",
1622
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
1623
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
1624
+ "license": "MIT",
1625
+ "optional": true,
1626
+ "dependencies": {
1627
+ "has-symbols": "^1.0.3"
1628
+ },
1629
+ "engines": {
1630
+ "node": ">= 0.4"
1631
+ },
1632
+ "funding": {
1633
+ "url": "https://github.com/sponsors/ljharb"
1634
+ }
1635
+ },
1636
  "node_modules/hasown": {
1637
  "version": "2.0.2",
1638
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
 
1645
  "node": ">= 0.4"
1646
  }
1647
  },
1648
+ "node_modules/html-entities": {
1649
+ "version": "2.6.0",
1650
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz",
1651
+ "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==",
1652
+ "funding": [
1653
+ {
1654
+ "type": "github",
1655
+ "url": "https://github.com/sponsors/mdevils"
1656
+ },
1657
+ {
1658
+ "type": "patreon",
1659
+ "url": "https://patreon.com/mdevils"
1660
+ }
1661
+ ],
1662
+ "license": "MIT",
1663
+ "optional": true
1664
+ },
1665
  "node_modules/http-errors": {
1666
  "version": "2.0.1",
1667
  "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
 
1682
  "url": "https://opencollective.com/express"
1683
  }
1684
  },
1685
+ "node_modules/http-parser-js": {
1686
+ "version": "0.5.10",
1687
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz",
1688
+ "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==",
1689
+ "license": "MIT"
1690
+ },
1691
+ "node_modules/http-proxy-agent": {
1692
+ "version": "5.0.0",
1693
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
1694
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
1695
+ "license": "MIT",
1696
+ "optional": true,
1697
+ "dependencies": {
1698
+ "@tootallnate/once": "2",
1699
+ "agent-base": "6",
1700
+ "debug": "4"
1701
+ },
1702
+ "engines": {
1703
+ "node": ">= 6"
1704
+ }
1705
+ },
1706
+ "node_modules/http-proxy-agent/node_modules/agent-base": {
1707
+ "version": "6.0.2",
1708
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
1709
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
1710
+ "license": "MIT",
1711
+ "optional": true,
1712
+ "dependencies": {
1713
+ "debug": "4"
1714
+ },
1715
+ "engines": {
1716
+ "node": ">= 6.0.0"
1717
+ }
1718
+ },
1719
+ "node_modules/https-proxy-agent": {
1720
+ "version": "7.0.6",
1721
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
1722
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
1723
+ "license": "MIT",
1724
+ "dependencies": {
1725
+ "agent-base": "^7.1.2",
1726
+ "debug": "4"
1727
+ },
1728
+ "engines": {
1729
+ "node": ">= 14"
1730
+ }
1731
+ },
1732
  "node_modules/iconv-lite": {
1733
  "version": "0.7.2",
1734
  "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
 
1751
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1752
  "license": "ISC"
1753
  },
1754
+ "node_modules/ipaddr.js": {
1755
+ "version": "1.9.1",
1756
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1757
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
1758
+ "license": "MIT",
1759
+ "engines": {
1760
+ "node": ">= 0.10"
1761
+ }
1762
+ },
1763
+ "node_modules/is-fullwidth-code-point": {
1764
+ "version": "3.0.0",
1765
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1766
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1767
+ "license": "MIT",
1768
+ "optional": true,
1769
+ "engines": {
1770
+ "node": ">=8"
1771
+ }
1772
+ },
1773
+ "node_modules/is-promise": {
1774
+ "version": "4.0.0",
1775
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
1776
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
1777
+ "license": "MIT"
1778
+ },
1779
+ "node_modules/is-stream": {
1780
+ "version": "2.0.1",
1781
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
1782
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
1783
+ "license": "MIT",
1784
+ "optional": true,
1785
+ "engines": {
1786
+ "node": ">=8"
1787
+ },
1788
+ "funding": {
1789
+ "url": "https://github.com/sponsors/sindresorhus"
1790
+ }
1791
+ },
1792
+ "node_modules/jose": {
1793
+ "version": "4.15.9",
1794
+ "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
1795
+ "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
1796
+ "license": "MIT",
1797
+ "funding": {
1798
+ "url": "https://github.com/sponsors/panva"
1799
+ }
1800
+ },
1801
+ "node_modules/json-bigint": {
1802
+ "version": "1.0.0",
1803
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
1804
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
1805
+ "license": "MIT",
1806
+ "dependencies": {
1807
+ "bignumber.js": "^9.0.0"
1808
+ }
1809
+ },
1810
+ "node_modules/jsonwebtoken": {
1811
+ "version": "9.0.3",
1812
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
1813
+ "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
1814
+ "license": "MIT",
1815
+ "dependencies": {
1816
+ "jws": "^4.0.1",
1817
+ "lodash.includes": "^4.3.0",
1818
+ "lodash.isboolean": "^3.0.3",
1819
+ "lodash.isinteger": "^4.0.4",
1820
+ "lodash.isnumber": "^3.0.3",
1821
+ "lodash.isplainobject": "^4.0.6",
1822
+ "lodash.isstring": "^4.0.1",
1823
+ "lodash.once": "^4.0.0",
1824
+ "ms": "^2.1.1",
1825
+ "semver": "^7.5.4"
1826
+ },
1827
+ "engines": {
1828
+ "node": ">=12",
1829
+ "npm": ">=6"
1830
+ }
1831
+ },
1832
+ "node_modules/jwa": {
1833
+ "version": "2.0.1",
1834
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
1835
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
1836
+ "license": "MIT",
1837
+ "dependencies": {
1838
+ "buffer-equal-constant-time": "^1.0.1",
1839
+ "ecdsa-sig-formatter": "1.0.11",
1840
+ "safe-buffer": "^5.0.1"
1841
+ }
1842
+ },
1843
+ "node_modules/jwks-rsa": {
1844
+ "version": "3.2.2",
1845
+ "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.2.2.tgz",
1846
+ "integrity": "sha512-BqTyEDV+lS8F2trk3A+qJnxV5Q9EqKCBJOPti3W97r7qTympCZjb7h2X6f2kc+0K3rsSTY1/6YG2eaXKoj497w==",
1847
  "license": "MIT",
1848
+ "dependencies": {
1849
+ "@types/jsonwebtoken": "^9.0.4",
1850
+ "debug": "^4.3.4",
1851
+ "jose": "^4.15.4",
1852
+ "limiter": "^1.1.5",
1853
+ "lru-memoizer": "^2.2.0"
1854
+ },
1855
  "engines": {
1856
+ "node": ">=14"
1857
  }
1858
  },
1859
+ "node_modules/jws": {
1860
+ "version": "4.0.1",
1861
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
1862
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
1863
+ "license": "MIT",
1864
+ "dependencies": {
1865
+ "jwa": "^2.0.1",
1866
+ "safe-buffer": "^5.0.1"
1867
+ }
1868
  },
1869
  "node_modules/kareem": {
1870
  "version": "3.2.0",
 
1875
  "node": ">=18.0.0"
1876
  }
1877
  },
1878
+ "node_modules/limiter": {
1879
+ "version": "1.1.5",
1880
+ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
1881
+ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
1882
+ },
1883
+ "node_modules/lodash.camelcase": {
1884
+ "version": "4.3.0",
1885
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
1886
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
1887
+ "license": "MIT",
1888
+ "optional": true
1889
+ },
1890
+ "node_modules/lodash.clonedeep": {
1891
+ "version": "4.5.0",
1892
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
1893
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
1894
+ "license": "MIT"
1895
+ },
1896
+ "node_modules/lodash.includes": {
1897
+ "version": "4.3.0",
1898
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
1899
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
1900
+ "license": "MIT"
1901
+ },
1902
+ "node_modules/lodash.isboolean": {
1903
+ "version": "3.0.3",
1904
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
1905
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
1906
+ "license": "MIT"
1907
+ },
1908
+ "node_modules/lodash.isinteger": {
1909
+ "version": "4.0.4",
1910
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
1911
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
1912
+ "license": "MIT"
1913
+ },
1914
+ "node_modules/lodash.isnumber": {
1915
+ "version": "3.0.3",
1916
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
1917
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
1918
+ "license": "MIT"
1919
+ },
1920
+ "node_modules/lodash.isplainobject": {
1921
+ "version": "4.0.6",
1922
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1923
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
1924
+ "license": "MIT"
1925
+ },
1926
+ "node_modules/lodash.isstring": {
1927
+ "version": "4.0.1",
1928
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
1929
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
1930
+ "license": "MIT"
1931
+ },
1932
+ "node_modules/lodash.once": {
1933
+ "version": "4.1.1",
1934
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
1935
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
1936
+ "license": "MIT"
1937
+ },
1938
+ "node_modules/long": {
1939
+ "version": "5.3.2",
1940
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
1941
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
1942
+ "license": "Apache-2.0",
1943
+ "optional": true
1944
+ },
1945
+ "node_modules/lru-cache": {
1946
+ "version": "6.0.0",
1947
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1948
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1949
+ "license": "ISC",
1950
+ "dependencies": {
1951
+ "yallist": "^4.0.0"
1952
+ },
1953
+ "engines": {
1954
+ "node": ">=10"
1955
+ }
1956
+ },
1957
+ "node_modules/lru-memoizer": {
1958
+ "version": "2.3.0",
1959
+ "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz",
1960
+ "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==",
1961
+ "license": "MIT",
1962
+ "dependencies": {
1963
+ "lodash.clonedeep": "^4.5.0",
1964
+ "lru-cache": "6.0.0"
1965
+ }
1966
+ },
1967
  "node_modules/math-intrinsics": {
1968
  "version": "1.1.0",
1969
  "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
 
2000
  "url": "https://github.com/sponsors/sindresorhus"
2001
  }
2002
  },
2003
+ "node_modules/mime": {
2004
+ "version": "3.0.0",
2005
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
2006
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
2007
+ "license": "MIT",
2008
+ "optional": true,
2009
+ "bin": {
2010
+ "mime": "cli.js"
2011
+ },
2012
+ "engines": {
2013
+ "node": ">=10.0.0"
2014
+ }
2015
+ },
2016
  "node_modules/mime-db": {
2017
  "version": "1.54.0",
2018
  "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
 
2222
  "node": ">= 0.6"
2223
  }
2224
  },
2225
+ "node_modules/node-domexception": {
2226
+ "version": "1.0.0",
2227
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
2228
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
2229
+ "deprecated": "Use your platform's native DOMException instead",
2230
+ "funding": [
2231
+ {
2232
+ "type": "github",
2233
+ "url": "https://github.com/sponsors/jimmywarting"
2234
+ },
2235
+ {
2236
+ "type": "github",
2237
+ "url": "https://paypal.me/jimmywarting"
2238
+ }
2239
+ ],
2240
+ "license": "MIT",
2241
+ "engines": {
2242
+ "node": ">=10.5.0"
2243
+ }
2244
+ },
2245
  "node_modules/node-fetch": {
2246
  "version": "2.7.0",
2247
  "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
 
2284
  "webidl-conversions": "^3.0.0"
2285
  }
2286
  },
2287
+ "node_modules/node-forge": {
2288
+ "version": "1.4.0",
2289
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz",
2290
+ "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==",
2291
+ "license": "(BSD-3-Clause OR GPL-2.0)",
2292
+ "engines": {
2293
+ "node": ">= 6.13.0"
2294
+ }
2295
+ },
2296
  "node_modules/object-assign": {
2297
  "version": "4.1.1",
2298
  "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
 
2302
  "node": ">=0.10.0"
2303
  }
2304
  },
2305
+ "node_modules/object-hash": {
2306
+ "version": "3.0.0",
2307
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
2308
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
2309
+ "license": "MIT",
2310
+ "optional": true,
2311
+ "engines": {
2312
+ "node": ">= 6"
2313
+ }
2314
+ },
2315
  "node_modules/object-inspect": {
2316
  "version": "1.13.4",
2317
  "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
 
2345
  "wrappy": "1"
2346
  }
2347
  },
2348
+ "node_modules/p-limit": {
2349
+ "version": "3.1.0",
2350
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2351
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2352
+ "license": "MIT",
2353
+ "optional": true,
2354
+ "dependencies": {
2355
+ "yocto-queue": "^0.1.0"
2356
+ },
2357
+ "engines": {
2358
+ "node": ">=10"
2359
+ },
2360
+ "funding": {
2361
+ "url": "https://github.com/sponsors/sindresorhus"
2362
+ }
2363
+ },
2364
  "node_modules/p-timeout": {
2365
  "version": "4.1.0",
2366
  "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz",
 
2379
  "node": ">= 0.8"
2380
  }
2381
  },
2382
+ "node_modules/path-expression-matcher": {
2383
+ "version": "1.5.0",
2384
+ "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz",
2385
+ "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==",
2386
+ "funding": [
2387
+ {
2388
+ "type": "github",
2389
+ "url": "https://github.com/sponsors/NaturalIntelligence"
2390
+ }
2391
+ ],
2392
+ "license": "MIT",
2393
+ "optional": true,
2394
+ "engines": {
2395
+ "node": ">=14.0.0"
2396
+ }
2397
+ },
2398
  "node_modules/path-to-regexp": {
2399
  "version": "8.4.2",
2400
  "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
 
2405
  "url": "https://opencollective.com/express"
2406
  }
2407
  },
2408
+ "node_modules/proto3-json-serializer": {
2409
+ "version": "2.0.2",
2410
+ "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz",
2411
+ "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==",
2412
+ "license": "Apache-2.0",
2413
+ "optional": true,
2414
+ "dependencies": {
2415
+ "protobufjs": "^7.2.5"
2416
+ },
2417
+ "engines": {
2418
+ "node": ">=14.0.0"
2419
+ }
2420
+ },
2421
+ "node_modules/protobufjs": {
2422
+ "version": "7.5.4",
2423
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz",
2424
+ "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==",
2425
+ "hasInstallScript": true,
2426
+ "license": "BSD-3-Clause",
2427
+ "optional": true,
2428
+ "dependencies": {
2429
+ "@protobufjs/aspromise": "^1.1.2",
2430
+ "@protobufjs/base64": "^1.1.2",
2431
+ "@protobufjs/codegen": "^2.0.4",
2432
+ "@protobufjs/eventemitter": "^1.1.0",
2433
+ "@protobufjs/fetch": "^1.1.0",
2434
+ "@protobufjs/float": "^1.0.2",
2435
+ "@protobufjs/inquire": "^1.1.0",
2436
+ "@protobufjs/path": "^1.1.2",
2437
+ "@protobufjs/pool": "^1.1.0",
2438
+ "@protobufjs/utf8": "^1.1.0",
2439
+ "@types/node": ">=13.7.0",
2440
+ "long": "^5.0.0"
2441
+ },
2442
+ "engines": {
2443
+ "node": ">=12.0.0"
2444
+ }
2445
+ },
2446
  "node_modules/proxy-addr": {
2447
  "version": "2.0.7",
2448
  "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
 
2518
  "node": ">= 6"
2519
  }
2520
  },
2521
+ "node_modules/require-directory": {
2522
+ "version": "2.1.1",
2523
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2524
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
2525
+ "license": "MIT",
2526
+ "optional": true,
2527
+ "engines": {
2528
+ "node": ">=0.10.0"
2529
+ }
2530
+ },
2531
+ "node_modules/retry": {
2532
+ "version": "0.13.1",
2533
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
2534
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
2535
+ "license": "MIT",
2536
+ "optional": true,
2537
+ "engines": {
2538
+ "node": ">= 4"
2539
+ }
2540
+ },
2541
+ "node_modules/retry-request": {
2542
+ "version": "7.0.2",
2543
+ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz",
2544
+ "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==",
2545
+ "license": "MIT",
2546
+ "optional": true,
2547
+ "dependencies": {
2548
+ "@types/request": "^2.48.8",
2549
+ "extend": "^3.0.2",
2550
+ "teeny-request": "^9.0.0"
2551
+ },
2552
+ "engines": {
2553
+ "node": ">=14"
2554
+ }
2555
+ },
2556
  "node_modules/router": {
2557
  "version": "2.2.0",
2558
  "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
 
2613
  "node": ">= 0.10"
2614
  }
2615
  },
2616
+ "node_modules/semver": {
2617
+ "version": "7.7.4",
2618
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
2619
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
2620
+ "license": "ISC",
2621
+ "bin": {
2622
+ "semver": "bin/semver.js"
2623
+ },
2624
+ "engines": {
2625
+ "node": ">=10"
2626
+ }
2627
+ },
2628
  "node_modules/send": {
2629
  "version": "1.2.1",
2630
  "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
 
2772
  "node": ">= 0.8"
2773
  }
2774
  },
2775
+ "node_modules/stream-events": {
2776
+ "version": "1.0.5",
2777
+ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
2778
+ "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
2779
+ "license": "MIT",
2780
+ "optional": true,
2781
+ "dependencies": {
2782
+ "stubs": "^3.0.0"
2783
+ }
2784
+ },
2785
+ "node_modules/stream-shift": {
2786
+ "version": "1.0.3",
2787
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
2788
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
2789
+ "license": "MIT",
2790
+ "optional": true
2791
+ },
2792
  "node_modules/streamsearch": {
2793
  "version": "1.1.0",
2794
  "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
 
2806
  "safe-buffer": "~5.2.0"
2807
  }
2808
  },
2809
+ "node_modules/string-width": {
2810
+ "version": "4.2.3",
2811
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2812
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2813
+ "license": "MIT",
2814
+ "optional": true,
2815
+ "dependencies": {
2816
+ "emoji-regex": "^8.0.0",
2817
+ "is-fullwidth-code-point": "^3.0.0",
2818
+ "strip-ansi": "^6.0.1"
2819
+ },
2820
+ "engines": {
2821
+ "node": ">=8"
2822
+ }
2823
+ },
2824
+ "node_modules/strip-ansi": {
2825
+ "version": "6.0.1",
2826
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2827
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2828
+ "license": "MIT",
2829
+ "optional": true,
2830
+ "dependencies": {
2831
+ "ansi-regex": "^5.0.1"
2832
+ },
2833
+ "engines": {
2834
+ "node": ">=8"
2835
+ }
2836
+ },
2837
+ "node_modules/strnum": {
2838
+ "version": "2.2.3",
2839
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz",
2840
+ "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==",
2841
+ "funding": [
2842
+ {
2843
+ "type": "github",
2844
+ "url": "https://github.com/sponsors/NaturalIntelligence"
2845
+ }
2846
+ ],
2847
+ "license": "MIT",
2848
+ "optional": true
2849
+ },
2850
+ "node_modules/stubs": {
2851
+ "version": "3.0.0",
2852
+ "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
2853
+ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==",
2854
+ "license": "MIT",
2855
+ "optional": true
2856
+ },
2857
+ "node_modules/teeny-request": {
2858
+ "version": "9.0.0",
2859
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz",
2860
+ "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==",
2861
+ "license": "Apache-2.0",
2862
+ "optional": true,
2863
+ "dependencies": {
2864
+ "http-proxy-agent": "^5.0.0",
2865
+ "https-proxy-agent": "^5.0.0",
2866
+ "node-fetch": "^2.6.9",
2867
+ "stream-events": "^1.0.5",
2868
+ "uuid": "^9.0.0"
2869
+ },
2870
+ "engines": {
2871
+ "node": ">=14"
2872
+ }
2873
+ },
2874
+ "node_modules/teeny-request/node_modules/agent-base": {
2875
+ "version": "6.0.2",
2876
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
2877
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
2878
+ "license": "MIT",
2879
+ "optional": true,
2880
+ "dependencies": {
2881
+ "debug": "4"
2882
+ },
2883
+ "engines": {
2884
+ "node": ">= 6.0.0"
2885
+ }
2886
+ },
2887
+ "node_modules/teeny-request/node_modules/https-proxy-agent": {
2888
+ "version": "5.0.1",
2889
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
2890
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
2891
+ "license": "MIT",
2892
+ "optional": true,
2893
+ "dependencies": {
2894
+ "agent-base": "6",
2895
+ "debug": "4"
2896
+ },
2897
+ "engines": {
2898
+ "node": ">= 6"
2899
+ }
2900
+ },
2901
+ "node_modules/teeny-request/node_modules/uuid": {
2902
+ "version": "9.0.1",
2903
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
2904
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
2905
+ "funding": [
2906
+ "https://github.com/sponsors/broofa",
2907
+ "https://github.com/sponsors/ctavan"
2908
+ ],
2909
+ "license": "MIT",
2910
+ "optional": true,
2911
+ "bin": {
2912
+ "uuid": "dist/bin/uuid"
2913
+ }
2914
+ },
2915
  "node_modules/telegraf": {
2916
  "version": "4.16.3",
2917
  "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz",
 
2955
  "node": ">=18"
2956
  }
2957
  },
2958
+ "node_modules/tslib": {
2959
+ "version": "2.8.1",
2960
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
2961
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
2962
+ "license": "0BSD"
2963
+ },
2964
  "node_modules/type-is": {
2965
  "version": "2.0.1",
2966
  "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
 
2981
  "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
2982
  "license": "MIT"
2983
  },
2984
+ "node_modules/undici-types": {
2985
+ "version": "7.19.2",
2986
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
2987
+ "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
2988
+ "license": "MIT"
2989
+ },
2990
  "node_modules/unpipe": {
2991
  "version": "1.0.0",
2992
  "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
 
3002
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
3003
  "license": "MIT"
3004
  },
3005
+ "node_modules/uuid": {
3006
+ "version": "11.1.0",
3007
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
3008
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
3009
+ "funding": [
3010
+ "https://github.com/sponsors/broofa",
3011
+ "https://github.com/sponsors/ctavan"
3012
+ ],
3013
+ "license": "MIT",
3014
+ "bin": {
3015
+ "uuid": "dist/esm/bin/uuid"
3016
+ }
3017
+ },
3018
  "node_modules/vary": {
3019
  "version": "1.1.2",
3020
  "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
 
3024
  "node": ">= 0.8"
3025
  }
3026
  },
3027
+ "node_modules/web-streams-polyfill": {
3028
+ "version": "3.3.3",
3029
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
3030
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
3031
+ "license": "MIT",
3032
+ "engines": {
3033
+ "node": ">= 8"
3034
+ }
3035
+ },
3036
  "node_modules/webidl-conversions": {
3037
  "version": "7.0.0",
3038
  "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
 
3042
  "node": ">=12"
3043
  }
3044
  },
3045
+ "node_modules/websocket-driver": {
3046
+ "version": "0.7.4",
3047
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
3048
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
3049
+ "license": "Apache-2.0",
3050
+ "dependencies": {
3051
+ "http-parser-js": ">=0.5.1",
3052
+ "safe-buffer": ">=5.1.0",
3053
+ "websocket-extensions": ">=0.1.1"
3054
+ },
3055
+ "engines": {
3056
+ "node": ">=0.8.0"
3057
+ }
3058
+ },
3059
+ "node_modules/websocket-extensions": {
3060
+ "version": "0.1.4",
3061
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
3062
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
3063
+ "license": "Apache-2.0",
3064
+ "engines": {
3065
+ "node": ">=0.8.0"
3066
+ }
3067
+ },
3068
  "node_modules/whatwg-url": {
3069
  "version": "14.2.0",
3070
  "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
 
3078
  "node": ">=18"
3079
  }
3080
  },
3081
+ "node_modules/wrap-ansi": {
3082
+ "version": "7.0.0",
3083
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
3084
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
3085
+ "license": "MIT",
3086
+ "optional": true,
3087
+ "dependencies": {
3088
+ "ansi-styles": "^4.0.0",
3089
+ "string-width": "^4.1.0",
3090
+ "strip-ansi": "^6.0.0"
3091
+ },
3092
+ "engines": {
3093
+ "node": ">=10"
3094
+ },
3095
+ "funding": {
3096
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3097
+ }
3098
+ },
3099
  "node_modules/wrappy": {
3100
  "version": "1.0.2",
3101
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3102
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
3103
  "license": "ISC"
3104
+ },
3105
+ "node_modules/y18n": {
3106
+ "version": "5.0.8",
3107
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
3108
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
3109
+ "license": "ISC",
3110
+ "optional": true,
3111
+ "engines": {
3112
+ "node": ">=10"
3113
+ }
3114
+ },
3115
+ "node_modules/yallist": {
3116
+ "version": "4.0.0",
3117
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3118
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
3119
+ "license": "ISC"
3120
+ },
3121
+ "node_modules/yargs": {
3122
+ "version": "17.7.2",
3123
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
3124
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
3125
+ "license": "MIT",
3126
+ "optional": true,
3127
+ "dependencies": {
3128
+ "cliui": "^8.0.1",
3129
+ "escalade": "^3.1.1",
3130
+ "get-caller-file": "^2.0.5",
3131
+ "require-directory": "^2.1.1",
3132
+ "string-width": "^4.2.3",
3133
+ "y18n": "^5.0.5",
3134
+ "yargs-parser": "^21.1.1"
3135
+ },
3136
+ "engines": {
3137
+ "node": ">=12"
3138
+ }
3139
+ },
3140
+ "node_modules/yargs-parser": {
3141
+ "version": "21.1.1",
3142
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
3143
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
3144
+ "license": "ISC",
3145
+ "optional": true,
3146
+ "engines": {
3147
+ "node": ">=12"
3148
+ }
3149
+ },
3150
+ "node_modules/yocto-queue": {
3151
+ "version": "0.1.0",
3152
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
3153
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
3154
+ "license": "MIT",
3155
+ "optional": true,
3156
+ "engines": {
3157
+ "node": ">=10"
3158
+ },
3159
+ "funding": {
3160
+ "url": "https://github.com/sponsors/sindresorhus"
3161
+ }
3162
  }
3163
  }
3164
  }
package.json CHANGED
@@ -15,6 +15,7 @@
15
  "cors": "^2.8.6",
16
  "dotenv": "^17.4.1",
17
  "express": "^5.2.1",
 
18
  "mongoose": "^9.4.1",
19
  "multer": "^2.1.1",
20
  "node-fetch": "^2.7.0",
 
15
  "cors": "^2.8.6",
16
  "dotenv": "^17.4.1",
17
  "express": "^5.2.1",
18
+ "firebase-admin": "^13.8.0",
19
  "mongoose": "^9.4.1",
20
  "multer": "^2.1.1",
21
  "node-fetch": "^2.7.0",